<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sulton</title>
    <description>The latest articles on DEV Community by Sulton (@musulton).</description>
    <link>https://dev.to/musulton</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F343167%2F6ed5508c-b14b-4e52-bd9c-4368e1961089.jpg</url>
      <title>DEV Community: Sulton</title>
      <link>https://dev.to/musulton</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/musulton"/>
    <language>en</language>
    <item>
      <title>CSS @Keyframes</title>
      <dc:creator>Sulton</dc:creator>
      <pubDate>Thu, 12 Jan 2023 08:41:23 +0000</pubDate>
      <link>https://dev.to/musulton/css-keyframes-3adb</link>
      <guid>https://dev.to/musulton/css-keyframes-3adb</guid>
      <description>&lt;h2&gt;
  
  
  Tahukah Kamu?
&lt;/h2&gt;

&lt;p&gt;Dengan menggunakan CSS kita dapat membuat animasi untuk aplikasi website, animasi merupakan konsep untuk merubah style elemen secara bertahap ke set style yang lain.&lt;/p&gt;

&lt;p&gt;Di CSS ada rule yang dapat digunakan untuk membuat animasi, yaitu @keyframes. Dengan @keyframes kamu dapat menentukan kapan terjadinya perubahan style.&lt;/p&gt;

&lt;p&gt;Mari kita coba membuat animasi perubahan warna background menggunakan @keyframes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
    background-color: yellowgreen;
    animation: henshin 5s infinite;
}

@keyframes henshin {
    0% { background-color: blueviolet; }
    50% { background-color: yellowgreen; }
    100% { background-color: blueviolet; }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Penjelasan
&lt;/h2&gt;

&lt;p&gt;Kita membuat sebuah @keyframes dengan nama henshin, @keyframes tersebut dijalankan terus menerus setiap 5 detik, dan pada waktu tertentu dalam 5 detik tersebut akan terjadi perubahan style, dimana pada detik ke 0 (5*0%) background akan berwarna blueviolet -&amp;gt; detik ke 2,5(5*50%) akan berwarna yellowgreen -&amp;gt; dan detik ke 5(5*100%) akan berwarna blueviolet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hasilnya
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zM8Abp9S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgukk7m55v6lej8oal12.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zM8Abp9S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgukk7m55v6lej8oal12.gif" alt="Image description" width="314" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Mengenal NPM</title>
      <dc:creator>Sulton</dc:creator>
      <pubDate>Sun, 04 Jul 2021 06:34:20 +0000</pubDate>
      <link>https://dev.to/musulton/mengenal-npm-3c1m</link>
      <guid>https://dev.to/musulton/mengenal-npm-3c1m</guid>
      <description>&lt;p&gt;Menjadi seorang developer tidaklah mudah, apalagi koding dari nol, karena ada banyak pekerjaan yang harus anda lakukan, mulai dari membuat beragam komponen untuk halaman website, membuat fungsi utilitas untuk mengatur logika kode, dan masih ada banyak yang akan perlu anda persiapkan. Namun, bagi programmer &lt;em&gt;Javascript&lt;/em&gt;, ada &lt;em&gt;tool&lt;/em&gt; untuk mempermudah &lt;em&gt;development&lt;/em&gt;, yaitu NPM &lt;em&gt;(Node Package Manager)&lt;/em&gt; yang dapat membantu proses koding dan membantu pengembangan aplikasi sehingga tidak perlu membuat kode dari nol.&lt;/p&gt;

&lt;p&gt;Di artikel ini, akan dibahas mengenai apa itu NPM, cara kerjanya, cara penggunaannya, instalasinya, serta baris perintahnya.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apa itu NPM?
&lt;/h2&gt;

&lt;p&gt;NPM &lt;em&gt;(Node Package Manager)&lt;/em&gt; merupakan alat untuk mengelola paket modul pada aplikasi. NPM mempunyai peran besar untuk mengatur modul/perpustakaan pada proyek aplikasi.&lt;/p&gt;

&lt;p&gt;Dengan adanya NPM sang developer dapat menggunakan beberapa paket modul siap pakai yang dibuat oleh developer lain, sehingga akan dapat menghemat waktu &lt;em&gt;development&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Sama seperti &lt;strong&gt;Package Manager&lt;/strong&gt; lain, NPM terdiri dari 2 bagian, yaitu &lt;em&gt;repository source code&lt;/em&gt; dan &lt;em&gt;program client&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Repository source code.
&lt;/h4&gt;

&lt;p&gt;Merupakan repo berbasis &lt;em&gt;version control&lt;/em&gt; yang disimpan di server &lt;em&gt;repository online&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Program client.
&lt;/h4&gt;

&lt;p&gt;Merupakan &lt;em&gt;command-line-tool&lt;/em&gt; yang bertugas untuk melakukan komunikasi dengan &lt;em&gt;repository&lt;/em&gt;, dan digunakan untuk meng-&lt;em&gt;install&lt;/em&gt; modul tersebut beserta &lt;em&gt;dependency&lt;/em&gt;-nya.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cara Menggunakan
&lt;/h2&gt;

&lt;p&gt;Untuk menggunakannya developer perlu menentukan modul yang dibutuhkan, lalu buka terminal dan jalankan perintah &lt;em&gt;install&lt;/em&gt; , maka paket modul tersebut akan terinstal di proyek kita.&lt;/p&gt;

&lt;p&gt;Misal, saya ingin menginstal paket utilitas untuk mengatur logika kode. Pertama, saya ingin &lt;strong&gt;lodash&lt;/strong&gt; sebagai modul yang dibutuhkan. Kedua, ketik &lt;code&gt;npm install lodash&lt;/code&gt; di terminal, lalu jalankan dan tunggu sampai selesai. Maka, &lt;strong&gt;lodash&lt;/strong&gt; akan terinstal di proyek aplikasi saya dan siap digunakan.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cara Kerja
&lt;/h2&gt;

&lt;p&gt;Ketika anda membuat proyek baru, anda akan diminta untuk mengisi beberapa data untuk proyek anda. Berikut adalah data yang perlu diisi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nama proyek -&amp;gt; nama proyek, misal &lt;code&gt;react-navigation&lt;/code&gt; (harus unik ketika ingin dipublikasikan).&lt;/li&gt;
&lt;li&gt;Versi -&amp;gt; versi proyek.&lt;/li&gt;
&lt;li&gt;Deskripsi -&amp;gt; deskripsi mengenai proyek, untuk membantu developer lain mengetahui perihal proyek anda.&lt;/li&gt;
&lt;li&gt;Repositori git -&amp;gt; tentukan dimana kode anda tinggal , berguna ketika orang lain ingin ikut berkontribusi pada proyek anda.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Keyword&lt;/em&gt; -&amp;gt; kata kunci untuk membantu developer lain menemukan proyek anda.&lt;/li&gt;
&lt;li&gt;Lisensi -&amp;gt; lisensi proyek anda, sehingga orang tahu bagaimana izin untuk menggunakan proyek anda.&lt;/li&gt;
&lt;li&gt;Dependensi -&amp;gt; modul yang digunakan agar proyek berjalan.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;devDependency&lt;/em&gt; -&amp;gt; modul yang digunakan selama development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data tersebut perlu diisi untuk pembuatan dan publikasi, dan juga agar NPM dapat mengidentifikasi paket anda.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalasi
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Instal Node.js
&lt;/h3&gt;

&lt;p&gt;Langkah ini diperlukan untuk dapat menggunakan NPM, anda dapat mengunduh &lt;a href="https://nodejs.org/en/"&gt;installer Node.js&lt;/a&gt; dari situsnya.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J2KJvz9_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uzcbk8y0aiazb635jhit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J2KJvz9_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uzcbk8y0aiazb635jhit.png" alt="Node.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setelah selesai diunduh, jalankan &lt;em&gt;installer&lt;/em&gt;-nya dan selesaikan langkah yang diberikan untuk instalasinya.&lt;/p&gt;

&lt;p&gt;Anda juga dapat menggunakan terminal untuk melakukan instalasi dengan menjalankan perintah &lt;code&gt;brew install node&lt;/code&gt;untuk di &lt;em&gt;macos&lt;/em&gt;, sedangkan untuk linux &lt;code&gt;sudo apt install  nodejs&lt;/code&gt; dan &lt;code&gt;sudo apt install npm&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Cek Instalasi Node.js dan NPM
&lt;/h3&gt;

&lt;p&gt;Untuk memastikan Node.js dan NPM sudah terinstal di komputer, anda dapat memeriksanya dengan menjalankan perintah berikut untuk mengetahui versinya melalui terminal:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node -v &amp;amp;&amp;amp; npm -v&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Apabila instalasi berhasil, terminal akan menunjukan versi Node.js dan NPM yang ter-&lt;em&gt;install&lt;/em&gt; di komputer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Baris Perintah (CLI)
&lt;/h2&gt;

&lt;p&gt;Karena NPM berbasis &lt;em&gt;command-line-tools&lt;/em&gt; maka anda perlu mengetahui beberapa perintah untuk menggunakan NPM. Ada banyak perintah yang tersedia, anda dapat melihat lebih lengkap di &lt;a href="https://docs.npmjs.com/cli/v6/commands"&gt;situsnya&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;npm cache clean -&amp;gt; hapus data dari folder cache.&lt;/li&gt;
&lt;li&gt;npm init -&amp;gt; membuat paket baru.&lt;/li&gt;
&lt;li&gt;npm install  -&amp;gt; menginstal paket baru.&lt;/li&gt;
&lt;li&gt;npm uninstall  -&amp;gt; menghapus paket.&lt;/li&gt;
&lt;li&gt;npm update  -&amp;gt; memperbarui paket.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Demikian penjelasan singkat untuk mengenal NPM. Semoga bermanfaat.&lt;/p&gt;

&lt;p&gt;Referensi:&lt;br&gt;
&lt;a href="https://www.niagahoster.co.id/blog/npm/"&gt;https://www.niagahoster.co.id/blog/npm/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.codepolitan.com/mengenal-package-manager-dalam-pemrograman"&gt;https://www.codepolitan.com/mengenal-package-manager-dalam-pemrograman&lt;/a&gt;&lt;/p&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Node.js membuat Javascript luar biasa</title>
      <dc:creator>Sulton</dc:creator>
      <pubDate>Sun, 02 Aug 2020 02:07:23 +0000</pubDate>
      <link>https://dev.to/musulton/inilah-singkatnya-bagaimana-javascript-menjadi-seperti-sekarang-1e9d</link>
      <guid>https://dev.to/musulton/inilah-singkatnya-bagaimana-javascript-menjadi-seperti-sekarang-1e9d</guid>
      <description>&lt;p&gt;Komputer tidak memahami bahasa selain 0 dan 1 (&lt;em&gt;binary digit&lt;/em&gt;), lalu bagaimana bisa komputer memahami bahasa pemrograman seperti &lt;em&gt;Javascript&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Bahasa pemrograman mempunyai &lt;em&gt;engine&lt;/em&gt; agar komputer dapat mengerti kodenya, setiap barisan kode tersebut akan diterjemahkan oleh &lt;em&gt;engine&lt;/em&gt; itu sebelum diterima oleh komputer, misalnya &lt;em&gt;Java&lt;/em&gt; yang mempunyai JVM (&lt;em&gt;Java Virtual Machine&lt;/em&gt;), &lt;em&gt;Javascript&lt;/em&gt; juga mempunyai &lt;em&gt;engine&lt;/em&gt; untuk menerjemahkan kodenya agar dapat dibaca oleh komputer. &lt;em&gt;Engine Javascript&lt;/em&gt; tertanam pada &lt;em&gt;browser&lt;/em&gt; sehingga dibutuhkan &lt;em&gt;browser&lt;/em&gt; agar komputer dapat menjalankan kode &lt;em&gt;Javascript&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Ada banyak &lt;em&gt;browser&lt;/em&gt; saat ini seperti &lt;em&gt;Firefox, Opera, Safari, Chrome&lt;/em&gt;, dll. Dan masing-masing dari mereka mempunyai &lt;em&gt;engine&lt;/em&gt; tersendiri untuk menerjemahkan kode &lt;em&gt;Javascript&lt;/em&gt;. Saat ini ada 8 &lt;em&gt;engine Javascript&lt;/em&gt;, misalnya &lt;em&gt;Firefox&lt;/em&gt; dengan &lt;em&gt;SpiderMonkey&lt;/em&gt;, &lt;em&gt;Safari&lt;/em&gt; dengan &lt;em&gt;JavaScriptCore&lt;/em&gt;, dan &lt;em&gt;Chrome&lt;/em&gt; dengan &lt;em&gt;V8&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Perkembangan &lt;em&gt;Javascript&lt;/em&gt; dimulai saat adanya &lt;em&gt;engine&lt;/em&gt; dari &lt;em&gt;Google&lt;/em&gt; yang bernama &lt;em&gt;V8&lt;/em&gt;, tujuan &lt;em&gt;Google&lt;/em&gt; menciptakan &lt;em&gt;engine&lt;/em&gt; ini yaitu untuk memaksimalkan layanan &lt;em&gt;Google Map&lt;/em&gt; yang membutuhkan kecepatan tinggi saat me-&lt;em&gt;load&lt;/em&gt; semua &lt;em&gt;resource&lt;/em&gt;-nya karena &lt;em&gt;engine&lt;/em&gt; yang ada tidak dapat memaksimalkan semua fitur layanan ini.&lt;/p&gt;

&lt;p&gt;Saat ini, &lt;em&gt;engine V8&lt;/em&gt; adalah &lt;em&gt;engine&lt;/em&gt; yang tercepat yang mempunyai performansi yang bagus. Karena alasan itu, Ryan Dahl yang sedang mencari teknologi untuk meningkatkan performa website memutuskan untuk menggunakan &lt;em&gt;engine Javascript V8&lt;/em&gt; yang akan dipakai pada Node.js.&lt;/p&gt;

&lt;p&gt;Karena itu, Node.js membuat &lt;em&gt;Javascript&lt;/em&gt; yang tadinya hanya untuk interaksi web dan hanya berjalan di sisi &lt;em&gt;client&lt;/em&gt; sekarang berubah dan berevolusi menjadi bahasa &lt;em&gt;universal&lt;/em&gt; yang hampir dapat berjalan di &lt;em&gt;client&lt;/em&gt; maupun &lt;em&gt;server&lt;/em&gt;, dan hampir di semua &lt;em&gt;platform&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Node.js membuat &lt;em&gt;engine Javascript&lt;/em&gt; ada diluar &lt;em&gt;browser&lt;/em&gt; sehingga dapat mengeksekusi &lt;em&gt;Javascript&lt;/em&gt; diluar &lt;em&gt;browser&lt;/em&gt;. Karena itulah mengapa &lt;em&gt;Javascript&lt;/em&gt; dapat berjalan di sisi &lt;em&gt;server&lt;/em&gt; dan membuat program &lt;em&gt;Javascript&lt;/em&gt; dapat dieksekusi dimanapun.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>v8</category>
    </item>
    <item>
      <title>Menghindari import bersarang</title>
      <dc:creator>Sulton</dc:creator>
      <pubDate>Thu, 30 Jul 2020 04:42:00 +0000</pubDate>
      <link>https://dev.to/musulton/menghindari-import-bersarang-dengan-index-js-dan-absolute-imports-1i04</link>
      <guid>https://dev.to/musulton/menghindari-import-bersarang-dengan-index-js-dan-absolute-imports-1i04</guid>
      <description>&lt;p&gt;Mengimpor file akan menjadi sangat menyakitkan ketika basis kode Anda tumbuh dan menghasilkan file bersarang.&lt;br&gt;
Perhatikan struktur direktori berikut:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/
   components/
     Alert.js
     Button.js
   screens/
     Home.js
     About.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dengan struktur direktori tersebut, katakanlah Anda ingin mengimpor komponen Button atau Alert, misal: &lt;code&gt;import Button from ../../components/Button&lt;/code&gt;, ketika lokasi file berubah kita perlu memperbarui pathnya, kalau tidak tentu pasti akan menghasilkan error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Menggunakan absolute import
&lt;/h2&gt;

&lt;p&gt;Ada solusi untuk mengatasi ini, yaitu dengan menggunakan absolute import. Selain dapat menghindari error saat lokasi file berubah, penggunaan absolute import juga akan membuat kode menjadi lebih bersih dan tidak rumit.&lt;/p&gt;

&lt;p&gt;Pertama, dengan mengkonfigurasi file jsconfig.json di root proyek&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "compilerOptions": {
      "baseUrl": "app",
   },
   "include" : [ "app" ] 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Disini Anda perlu mengatur baseUrl ke direktori root yang diperlukan sebagai basis impor sehingga Anda dapat mengimpor komponen dengan jalur absolut. Sekarang, ketika ingin mengimpor komponen cukup dengan cara: &lt;code&gt;import Button from components/Button&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Kedua, menambah file package.json ke direktori komponen&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app/
   components/
     Alert.js
     Button.js
     packages.json
   screens/
     Home.js
     About.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anda dapat memanfaatkan package.json dengan menambah property name yang nantinya ini akan digunakan sebagai home directory saat import komponen&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "name": "components"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sekarang, ketika ingin mengimpor komponen cukup dengan cara: &lt;code&gt;import Button from components/Button&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kesimpulan
&lt;/h2&gt;

&lt;p&gt;Dengan memanfaatkan absolute import selain dapat menghindari error saat lokasi file berubah, juga akan membuat kode menjadi lebih bersih. Karena ketika lokasi file berubah Anda tidak perlu memperbarui pathnya, dan saat anda melakukan import file anda tidak perlu mengetahui hirarki file berbeda jika Anda menggunakan relative path.&lt;/p&gt;

&lt;p&gt;Reference: &lt;a href="https://create-react-app.dev/docs/importing-a-component#absolute-imports"&gt;https://create-react-app.dev/docs/importing-a-component#absolute-imports&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
