<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
<title>Kalasan Tech. Lab.</title>
<link>https://kalasantechlab.com/</link>
<description>Kumpulan hasil eksperimen di  laboratorium.</description>
<language>en</language>
<item>
<title>10 Prisip Kodingan yang Baik</title>
<content:encoded><![CDATA[<p>Saat membuat software ada kalanya kita membuatnya dalam kerja tim atau ada supervisor yang mengawasi kualitas kode yang kita tulis, oleh karena itu seenggaknya kita membuat prinsip pengodean yang baik.</p>
<p>Prinsip pengodean yang baik membuat kode sumber software kita mudah dipahami oleh orang lain. Dengan ini software kita menjadi mudah dimaintain oleh kita sendiri maupun orang lain. Berikut 10 prinsip pengodean yang baik:</p>
<p><strong>1. Ikuti Spesifikasi Kode</strong><br />
Software kita terbuat dari banyak kumpulan aliran teks kode sumber yang diproses kompiler maupun interpreter menjadi bahasa mesin. Karena banyak teks alangkah baiknya kita mengikuti aturan standar industri seperti python &quot;PEP 8&quot;, atau dengan menyepakati sendiri pada internal tim atau perusahaan agar kode konsisten atau mudah dipahami.</p>
<p><strong>2. Dokumentasi</strong><br />
Kadang saat menulis software kita memakai trik atau cara-cara tertentu yang terlihat pintar atau membingungkan, inilah gunanya dokumentasi, kita memperjelas dengan kalimat-kalimat yang bagus untuk manusia dibaca. Contohnya saat kita membuat fungsi REGEX. Standarnya dokumentasi adalah berisi mengapa (&quot;Why&quot;) fungsi atau bagian ini ada.</p>
<p><strong>3. Kesehatan</strong><br />
Kode yang kita tulis diharapkan dapat menangani bermacam-macam input, bisasakan mengunakan try-catch dan tampilkan exception yang muncul untuk mudah dipahami.</p>
<p><strong>4. Ikuti prinsip SOLID</strong><br />
“Single Responsibility”, “Open/Closed”, “Liskov Substitution”, “Interface Segregation”, and “Dependency Inversion” - kelima prinsip ini (disingkat SOLID) adalah landasan penulisan kode yang dapat diskalakan dan mudah dipelihara.</p>
<p><strong>5. Mudahkan diTes</strong><br />
Kemampuan software untuk dites sangat penting. Kode yang baik seharusnya mudah dites. Kode dipisah-pisah agar tidak rumit, sekarang ini sudah banyak alat tes otomatis yang bisa digunakan.</p>
<p><strong>6. Abstraksi</strong><br />
Abstraksi mengharuskan kita untuk mengekstrak logika inti dan menyembunyikan kompleksitasnya, sehingga membuat kode lebih fleksibel dan generik. Kode yang baik harus memiliki tingkat abstraksi yang moderat, tidak terlalu rumit maupun mengabaikan kemampuan pengembangan dan pemeliharaan jangka panjang.</p>
<p><strong>7. Gunakan Design Patterns, tetapi Jangan Over Design</strong><br />
Design pattern adalah pola desain yang sudah banyak ditemui pada berbagai software karena bisa saja fungsi yang kita buat memecahkan masalah yang sama pada software lain. Namun, setiap pola memiliki skenario penerapannya masing-masing. Penggunaan pola desain yang berlebihan atau salah dapat membuat kode Anda lebih kompleks dan sulit dipahami.</p>
<p><strong>8. Kurangi ketergantungan Global</strong><br />
Sekarang ini banyak pustaka-pustaka disediakan oleh paket menajemen seperti npm, pip, dll. Kita bisa saja tergiur untuk menggunakannya berlebihan dan menyebarkan ketergantungan global yang berlebihan.</p>
<p><strong>9. Refactoring berkesinambungan</strong><br />
Kode yang baik mudah dipelihara dan diperluas. Refactoring berkelanjutan mengurangi hutang teknis dengan mengidentifikasi dan memperbaiki masalah sedini mungkin.</p>
<p><strong>10. Keamanan adalah Prioritas</strong><br />
Hacker itu ada, jadi berhati-hati lah. Ikuti saran standar keamanan.</p>
<p><img src="https://res.cloudinary.com/djuyt5yew/image/upload/v1781146254/0051-10-good-coding-principles_ra46ia.png" loading="lazy" alt="[image]"  /></p>
]]></content:encoded>
<link>https://kalasantechlab.com/index.php?id=6</link>
<guid>https://kalasantechlab.com/index.php?id=6</guid>
<pubDate>Thu, 11 Jun 2026 02:54:14 +0000</pubDate>
<wfw:commentRss>https://kalasantechlab.com/index.php?mode=rss&amp;replies=6</wfw:commentRss><dc:creator>kucingucul</dc:creator>
</item>
<item>
<title>Seputar REST API</title>
<content:encoded><![CDATA[<p><strong>1. REST API</strong><br />
<img src="https://res.cloudinary.com/djuyt5yew/image/upload/v1781051370/02_API_protocols-1024x390_xzlrd7.jpg" loading="lazy" alt="[image]"  /><br />
REST memiliki enam pondasi yang membentuknya, yaitu:<br />
<img src="https://res.cloudinary.com/djuyt5yew/image/upload/v1781051558/What-is-REST_uloill.png" loading="lazy" alt="[image]"  /><br />
1.1. Antarmuka Seragam<br />
Dengan menerapkan prinsip generalitas pada antarmuka komponen, kita dapat menyederhanakan arsitektur sistem secara keseluruhan dan meningkatkan keterbacaan interaksi. Berbagai batasan arsitektural membantu dalam mewujudkan antarmuka yang seragam serta mengarahkan perilaku komponen.</p>
<p>Empat batasan berikut dapat mewujudkan antarmuka REST yang seragam:</p>
<p> - Identifikasi sumber daya – Antarmuka harus mengidentifikasi secara unik setiap sumber daya yang terlibat dalam interaksi antara klien dan server.<br />
 - Manipulasi sumber daya melalui representasi – Sumber daya harus memiliki representasi yang seragam dalam respons server. Pengguna API harus menggunakan representasi ini untuk memodifikasi status sumber daya di server.<br />
 - Pesan yang mendeskripsikan dirinya sendiri – Setiap representasi sumber daya harus membawa informasi yang cukup untuk mendeskripsikan cara memproses pesan. Pesan tersebut juga harus memberikan informasi mengenai tindakan tambahan yang dapat dilakukan klien pada sumber daya tersebut.<br />
 - Hypermedia sebagai mesin status aplikasi – Klien hanya perlu memiliki URI awal aplikasi. Aplikasi klien harus secara dinamis mengendalikan semua sumber daya dan interaksi lainnya dengan menggunakan hyperlink.<br />
Dengan kata lain, REST mendefinisikan antarmuka yang konsisten dan seragam untuk interaksi antara klien dan server. Misalnya, API REST berbasis HTTP menggunakan metode HTTP standar (GET, POST, PUT, DELETE, dll.) dan URI (Uniform Resource Identifiers) untuk mengidentifikasi sumber daya.</p>
<p>1.2. Klien-Server<br />
Pola desain klien-server menerapkan pemisahan tanggung jawab, yang membantu komponen klien dan server berkembang secara independen.<br />
Dengan memisahkan urusan antarmuka pengguna (klien) dari urusan penyimpanan data (server), kita meningkatkan portabilitas antarmuka pengguna di berbagai platform dan meningkatkan skalabilitas dengan menyederhanakan komponen server.<br />
Saat klien dan server berkembang, kita harus memastikan bahwa antarmuka/kontrak antara klien dan server tidak terputus.</p>
<p>1.3. Stateless<br />
Konsep stateless mengharuskan setiap permintaan dari klien ke server harus mengandung semua informasi yang diperlukan untuk memahami dan menyelesaikan permintaan tersebut.<br />
Server tidak boleh memanfaatkan informasi konteks yang disimpan sebelumnya di server.<br />
Oleh karena itu, aplikasi klien harus sepenuhnya menjaga status sesi.</p>
<p>1.4. Dapat Dicache<br />
Keterbatasan cacheable mensyaratkan bahwa respons harus secara implisit atau eksplisit menandai dirinya sendiri sebagai dapat dicache atau tidak dapat dicache.<br />
Jika respons dapat dicache, aplikasi klien berhak menggunakan kembali data respons tersebut untuk permintaan yang setara pada periode yang ditentukan.</p>
<p>1.5. Sistem Berlapis<br />
Gaya sistem berlapis memungkinkan arsitektur terbentuk dari lapisan-lapisan hierarkis dengan membatasi perilaku komponen. Dalam sistem berlapis, setiap komponen tidak dapat melihat melampaui lapisan langsung yang sedang berinteraksi dengannya.<br />
Contoh sederhana dari sistem berlapis adalah pola MVC. Pola MVC memungkinkan pemisahan tanggung jawab yang jelas, sehingga memudahkan pengembangan, pemeliharaan, dan penskalaan aplikasi.</p>
<p>1.6. Kode Sesuai Permintaan (Opsional)<br />
REST juga memungkinkan fungsionalitas klien diperluas dengan mengunduh dan menjalankan kode dalam bentuk applet atau skrip.<br />
Kode yang diunduh menyederhanakan klien dengan mengurangi jumlah fitur yang harus diimplementasikan sebelumnya. Server dapat menyediakan sebagian fitur yang dikirimkan ke klien dalam bentuk kode, dan klien hanya perlu menjalankan kode tersebut.</p>
<p>keuntungan REST:</p>
<ul>
<li> Kesederhanaan dan standarisasi: Dengan memanfaatkan metode HTTP standar, REST memudahkan pengadopsian bagi para pengembang yang sudah terbiasa dengan HTTP. Kesederhanaan ini mempercepat proses pembelajaran dan integrasi.<br />
</li><li> Skalabilitas: Sifat stateless REST memastikan bahwa server tidak perlu menyimpan data sesi di antara permintaan. Hal ini memudahkan penskalaan horizontal dengan menambahkan instance tanpa perlu berbagi status server.<br />
</li><li> Modularitas: Layanan RESTful dapat dikembangkan sebagai komponen modular. Fungsionalitas yang terlokalisasi ini memungkinkan pembaruan independen dan meningkatkan kemudahan pemeliharaan.<br />
</li><li> Tidak bergantung pada platform: Dukungan HTTP yang tidak bergantung pada platform memungkinkan penggunaan oleh berbagai klien. Interoperabilitas yang dihasilkan mendorong integrasi API di seluruh sistem.<br />
</li><li> Perangkat yang matang dan dukungan komunitas: Umur REST yang panjang telah menyebabkan penyebaran luas alat, pustaka, praktik terbaik, panduan pemecahan masalah, dan sumber daya komunitas.</li></ul>]]></content:encoded>
<link>https://kalasantechlab.com/index.php?id=5</link>
<guid>https://kalasantechlab.com/index.php?id=5</guid>
<pubDate>Wed, 10 Jun 2026 00:42:01 +0000</pubDate>
<wfw:commentRss>https://kalasantechlab.com/index.php?mode=rss&amp;replies=5</wfw:commentRss><dc:creator>kucingucul</dc:creator>
</item>
<item>
<title>Bagaimana Proses Boot Sebuah Distro Linux OS?</title>
<content:encoded><![CDATA[<p>Linux Distro adalah sebuah sistem operasi gadget yang menyematkan kernel Linux sebagai kernelnya. Sudah ada banyak distro linux tersedia di internet mulai dari yang gratis maupun berbayar.</p>
<p>Jika kamu menggunakan OS berbasis Linux kernel dan ingin mengetahui bagaimana proses booting sebuah Linux Distro, simak artikel ini!.</p>
<p><img src="https://res.cloudinary.com/djuyt5yew/image/upload/v1780886762/0213-linux-boot-process-explained_ap13ok.webp" loading="lazy" alt="[image]"  /></p>
<p><strong>Langkah 1:</strong><br />
Kita mulai dari saat gadget mati dan kita menekan tombol on/off power maka disini gadget kita mengeksekusi basic input output system atau disingkat BIOS atau yang lebih modern ialah UEFI (Unified Extensible Firmware Interface) dari memori tidak stabil atau CMOS (Complimentari Metal-Oxide Semiconductor). Proses ini disebut POST (Power On Self Test).</p>
<p><strong>Langkah 2:</strong><br />
BIOS/UEFI mendeteksi perangkat keras yang terpasang di gadget seperti prosesor, RAM, HardDisk, dll. Jika ada masalah, biasanya terdengar bunyi beep-beep.</p>
<p><strong>Langkah 3:</strong><br />
BIOS/UEFI memilih hardware penyimpanan dimana OS tersimpan, biasanya SSD, Harddisk, atau CD-ROM.</p>
<p><strong>Langkah 4:</strong><br />
Setelah hardware penyimpanan OS terpilih maka biasanya di Linux yang pertama kali tereksekusi adalah pemuat-boot (bootloader) yaitu GRUB atau Limine untuk yang lebih modern.</p>
<p><strong>Langkah 5:</strong><br />
Pilih kernel Linux mana yang mau di-booting di pemuat-boot ini.</p>
<p><strong>Langkah 6:</strong><br />
Setelah dipanggil kernelnya, sekarang kita beralih ke yang namanya user space. Kernel memanggil systemd sebagai proses user-space pertama pada umumnya distro Linux, karena ada beberapa distro yang tidak memakai systemd. Systemd ini menangani proses dan layanan (services) dan menyelidiki lagi semua perangkat keras, penyelidikan ini lebih mendalam daripada saat POST di BIOS. Kemudian Systemd juga mengikat filesystems OS. Lalu Systemd menjalankan lingkungan desktop yang telah tersetel, seperti GNOME, KDE, dll. Terakhir Systemd mengaktifkan unit target default secara default saat sistem melakukan booting. Unit analisis lainnya juga dijalankan. Sibuk banget ya Systemd :v.</p>
<p><strong>Langkah 7:</strong><br />
Systemd menjalankan startup script jika ada.</p>
<p><strong>Langkah 8:</strong><br />
Voila!, Jendela Login muncul.</p>
]]></content:encoded>
<link>https://kalasantechlab.com/index.php?id=4</link>
<guid>https://kalasantechlab.com/index.php?id=4</guid>
<pubDate>Mon, 08 Jun 2026 02:48:34 +0000</pubDate>
<wfw:commentRss>https://kalasantechlab.com/index.php?mode=rss&amp;replies=4</wfw:commentRss><dc:creator>kucingucul</dc:creator>
</item>
<item>
<title>Bagaimana Transaksi dengan kode QR bekerja?</title>
<content:encoded><![CDATA[<p>Sekarang ini pembayaran untuk beli merch, kaos band, jajanan, dll bisa dilakukan lewat hp. Salah satu caranya adalah bisa dengan fasilitas kode QR. Di Indonesia sendiri, pembayaran dengan kode QR adalah sebuah kebanggaan, disebut-sebut sebagai inovasi anak bangsa, yaitu QRIS.</p>
<p>Mari kita selami alur transaksi sistematis tersebut. Mari kita ulik cara pembayaran lewat aplikasi bank atau dompet digital seperti Gopay, OVO, atau Dana. Saya ambil contoh yang terkenal di Indonesia saja.</p>
<p>Agar dapat memahami proses transaksinya, kita perlu memisahkannya ke dalam dua proses:</p>
<ul>
<li> Penjual mencetak kode QR<br />
</li><li> Pembeli memindai kode QR untuk membayar</li></ul><p>Berikut langkah-langkah penjual mencetak kode QR:</p>
<ul>
<li> Penjual mendaftar sebagai mitra penjual di layanan Penyedia Jasa Pembayaran: bank atau dompet digital untuk kode QR statis, sedangkan untuk kode QR dinamis penjual men-checkout total belanjaan lalu kode QR akan ditampilkan.<br />
</li><li> Pemindai kode QR mengirimkan URL ke Penyedia Jasa Pembayaran.<br />
</li><li> Data disimpan di database Penyedia Jasa Pembayaran</li></ul><p>Oleh karena itu, dibutuhkanlah gerbang (gateway) untuk menyeleksi siapa Penyedia Jasa Pembayaran penerbit kode QR yang bersangkutan.</p>
<p>Konsumen membuka aplikasi dompet digital mereka untuk memindai kode QR. Setelah memastikan jumlahnya benar, klien mengklik tombol &quot;bayar&quot;. Aplikasi dompet digital memberi tahu Penedia Jasa Pembayaran bahwa konsumen telah membayar kode QR tersebut. Gerbang pembayaran Penyedia Jasa Pembayaran menandai kode QR ini sebagai telah dibayar dan mengirimkan pesan sukses ke aplikasi dompet digital konsumen. Gerbang pembayaran Penyedia Jasa Pembayran memberi tahu pedagang bahwa konsumen telah membayar kode QR tersebut.</p>
<p><img src="https://res.cloudinary.com/djuyt5yew/image/upload/v1780711464/image1_xgap5v.png" loading="lazy" alt="[image]"  /></p>
]]></content:encoded>
<link>https://kalasantechlab.com/index.php?id=3</link>
<guid>https://kalasantechlab.com/index.php?id=3</guid>
<pubDate>Sat, 06 Jun 2026 02:06:14 +0000</pubDate>
<wfw:commentRss>https://kalasantechlab.com/index.php?mode=rss&amp;replies=3</wfw:commentRss><dc:creator>kucingucul</dc:creator>
</item>
<item>
<title>Studi Kasus - Tumpukkan Teknologi di Netflix</title>
<content:encoded><![CDATA[<p>Dalam sebuah produk digital umumnya layanannya dibangun diatas tumpukkan pustaka-pustaka, framework-framework atau perangkat lunak-perangkat lunak yang berbeda, disinkronisasikan melalui protokol-protokol komunikasi yang bermacam-macam pula. Tak terkecuali sang raksasa film, Netflix. Berikut studi kasus tumpukkan teknologi di Netflix yang kami himpun dari mengamati blog milik Netflix yang berisi tentang teknis-teknis dibelakang layanan Netflix.</p>
<p><img src="https://res.cloudinary.com/djuyt5yew/image/upload/v1780638589/netflixtechstack_bxoijk.svg" loading="lazy" class="left" alt="[image]"  /></p>
<ul>
<li> Mobile dan Web<br />
<br />
  Layanan streaming Netflix tersedia di mobile maupun web dengan pesentase penggunaan di laptop (~ 15%), ponsel (~ 10%), dan tablet (~ 5%) menurut pop survey. Pelayanan disini ditumpu oleh Swift dasn Kotlin, dua nama besar dalam pembuatan aplikasi Mobile. Sedangkan web Netflix ditangani oleh React, framework yang awalnya dibuat oleh Facebook.<br />
<br />
</li><li> Komunikasi Frontend ke Backend<br />
<br />
  Dalam penanganan layanan Netflix dipisah menjadi  dua sisi, sisi Frontend dan sisi Backend,  sehingga butuh protokol komunikasi data diantara keduanya, dipilihlah GraphQL.<br />
<br />
</li><li> Backend<br />
<br />
  Sisi Backend Netflix bergantung pada beberapa teknologi seperti ZUUL, Eureka, dan Spring Boot Framework.<br />
<br />
</li><li> Database<br />
<br />
  Dengan basis pengguna yang besar tak ayal Netflix membutuhkan teknologi database yang kuat. Mereka menggunakan EV cache, Cassandra dan CockroachDB.<br />
<br />
</li><li> Messaging/streaming<br />
<br />
  Netflix memiliki fitur perpesanan dan streaming yang ditangani oleh Apache Kafka dan Fink.<br />
<br />
</li><li> Penyimpanan Video<br />
<br />
  Dengan 8000 judul film dan acara TV yang ada di Netflix mereka pasti membutuhkan tempat penyimpanan video yang besar dan andal, mereka menggunakan S3 dan Open Connect.<br />
<br />
</li><li> Pemrosesan Data<br />
<br />
  Flink dan Spark hadir sebagai yang terpilih oleh Netflix untuk pemrosesan Data yang kemudian dikonversikan ke visual oleh Tableau. Ada Redshift yang digunakan sebagai gudang data terstruktur.<br />
<br />
</li><li> DevOps<br />
<br />
  Dalam prakteknya, layanan produk digitial pasti ada crash maupun pembaruan rutin softwarenya, maka dari itu mereka menggunakan layanan DevOps JIRA, Confluence, PagerDuty, Jenkins, Gradle, Chaos Monkey, Spinnaker dan Altas.<br />
</li></ul><p>Tumpukkan teknologi diatas memang terlihat rumit dan kompleks karena Netflix sendiri membuka layanannya di hampir seluruh negara dengan target pasar yang banyak.</p>
]]></content:encoded>
<link>https://kalasantechlab.com/index.php?id=2</link>
<guid>https://kalasantechlab.com/index.php?id=2</guid>
<pubDate>Fri, 05 Jun 2026 05:50:33 +0000</pubDate>
<wfw:commentRss>https://kalasantechlab.com/index.php?mode=rss&amp;replies=2</wfw:commentRss><dc:creator>kucingucul</dc:creator>
</item>
</channel>
</rss>
