Latest

Tutorial React Dasar Part 2: Menguasai Props & Komponen Reusable

Assalamualaikum Wr. Wb.

Tutorial React Dasar Part 2: Menguasai Props & Komponen Reusable | Bikin Kartu Produk Dinamis Tanpa Duplikasi Kode | Di artikel Part 1 sebelumnya, kita sudah berhasil memasang projek React berbasis Vite dan memahami cara kerja dasar sintaks JSX. Namun, kekuatan sejati React bukan hanya menampilkan teks statis, melainkan kemampuannya memecah tampilan antarmuka web menjadi potongan-potongan kecil komponen yang dapat dipakai berulang kali (*reusable components*). Bayangkan jika Anda ingin menampilkan 20 daftar produk di toko online; kita tidak perlu membuat 20 blok kode HTML manual satu per satu. Cukup buat 1 template komponen lalu oper datanya menggunakan Props. Kali ini admin akan membagikan panduan step-by-step menguasai Props dan mengombinasikannya dengan useState yang dijamin work 100%.

1. Apa Itu Props di React?

Props (singkatan dari Properties) adalah mekanisme untuk mengirimkan data dari komponen induk (*Parent Component*) ke komponen anak (*Child Component*):

  • Sifat Read-Only: Komponen anak hanya menerima data dan tidak boleh mengubah isi props secara langsung (*immutable*).
  • Fleksibel: Props bisa menerima tipe data apa saja: teks (string), angka (number), array, objek, hingga fungsi klik.
  • Aliran Satu Arah (Unidirectional Data Flow): Data selalu mengalir turun dari atas (Parent) ke bawah (Child), menjaga struktur data aplikasi tetap rapi dan mudah di-debug.

Alur pengiriman data via props dari Parent (App.jsx) ke Child Component (ProdukCard.jsx)

2. Membuat Komponen Anak (ProdukCard.jsx)

Buat file baru di dalam folder projek pada lokasi src/components/ProdukCard.jsx:

// File: src/components/ProdukCard.jsx
import { useState } from 'react';

// Menggunakan Destructuring Props: { nama, harga, stokAwal }
function ProdukCard({ nama, harga, stokAwal }) {
  const [stok, setStok] = useState(stokAwal);

  function handleBeli() {
    if (stok > 0) {
      setStok(stok - 1);
    }
  }

  return (
    <div style={{
      border: '1px solid #334155',
      borderRadius: '10px',
      padding: '20px',
      backgroundColor: '#1e293b',
      color: '#f8fafc',
      width: '240px',
      textAlign: 'center'
    }}>
      <h3 style={{ margin: '0 0 10px 0', color: '#38bdf8' }}>{nama}</h3>
      <p style={{ fontSize: '18px', fontWeight: 'bold' }}>
        Rp {harga.toLocaleString('id-ID')}
      </p>

      <div style={{ margin: '12px 0' }}>
        <span style={{
          fontSize: '12px',
          padding: '4px 10px',
          borderRadius: '20px',
          backgroundColor: stok > 0 ? '#065f46' : '#991b1b',
          color: stok > 0 ? '#34d399' : '#fca5a5'
        }}>
          {stok > 0 ? `Sisa Stok: ${stok}` : 'Stok Habis!'}
        </span>
      </div>

      <button 
        onClick={handleBeli}
        disabled={stok === 0}
        style={{
          width: '100%',
          padding: '10px 0',
          backgroundColor: stok > 0 ? '#0284c7' : '#475569',
          color: '#ffffff',
          border: 'none',
          borderRadius: '6px',
          fontWeight: 'bold',
          cursor: stok > 0 ? 'pointer' : 'not-allowed'
        }}
      >
        {stok > 0 ? '+ Beli Sekarang' : 'Sold Out'}
      </button>
    </div>
  );
}

export default ProdukCard;

3. Memanggil Komponen Berulang Kali di App.jsx

Sekarang buka file src/App.jsx dan panggil komponen <ProdukCard /> dengan data yang berbeda-beda:

// File: src/App.jsx
import ProdukCard from './components/ProdukCard';

function App() {
  return (
    <div style={{ padding: '30px', backgroundColor: '#0f172a', minHeight: '100vh', fontFamily: 'Arial, sans-serif' }}>
      <h1 style={{ color: '#f8fafc', textAlign: 'center' }}>Katalog Toko Online</h1>
      
      {/* Grid container pembungkus kartu */}
      <div style={{ display: 'flex', gap: '20px', justifyContent: 'center', flexWrap: 'wrap', marginTop: '30px' }}>
        <ProdukCard nama="Sepatu Lari Sport" harga={350000} stokAwal={5} />
        <ProdukCard nama="Jersey Futsal Pro" harga={175000} stokAwal={3} />
        <ProdukCard nama="Kaos Kaki Grip Anti Slip" harga={45000} stokAwal={10} />
      </div>
    </div>
  );
}

export default App;

4. Keuntungan Menggunakan Pola Ini

  • DRY (Don't Repeat Yourself): Jika ingin mengubah tampilan tombol atau warna kartu, Anda cukup mengedit 1 file (ProdukCard.jsx) dan seluruh 20 kartu produk di halaman akan berubah secara otomatis.
  • State Terisolasi: Saat tombol beli pada kartu Sepatu diklik, hanya stok kartu Sepatu yang berkurang; stok kartu Jersey dan Kaos Kaki tetap aman dan tidak ikut terpengaruh.

Itulah tutorial dasar memahami Props dan membuat komponen reusable di React. Saya sendiri selalu membagi tampilan UI menjadi komponen-komponen kecil seperti ini agar struktur kodingan tetap bersih dan rapi saat aplikasi web terus berkembang semakin besar.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat yang sedang memperdalam ilmu framework React.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Screenshot Praktik React Props

Cara Ampuh Mengatasi Layar Blank Hitam Pasca Update Kernel di Linux

Assalamualaikum Wr. Wb.

Cara Ampuh Mengatasi Layar Blank Hitam Pasca Update Kernel di Linux | Solusi Perbaikan Driver NVIDIA via Mode TTY Tanpa Install Ulang | Pernahkah teman-teman mengalami kejadian menyalakan laptop atau PC setelah melakukan update sistem rutin (apt upgrade atau dnf upgrade), tetapi saat komputer booting yang muncul di layar hanyalah kursor berkedip atau layar hitam pekat (*blank screen*) dan tidak mau masuk ke desktop? Masalah ini paling sering menimpa pengguna kartu grafis NVIDIA karena modul driver proprietary (*DKMS*) gagal terkompilasi ulang dengan versi kernel Linux yang baru terpasang. Jangan panik, sistem operasi anda sebenarnya masih hidup dan sehat. Kali ini admin akan membagikan panduan masuk ke terminal darurat TTY dan memasang ulang driver NVIDIA yang dijamin work 100%.

1. Langkah Masuk ke Terminal Darurat (TTY Mode)

Ketika layar desktop tidak muncul, display manager (GDM/LightDM/SDDM) gagal memuat antarmuka grafis. Kita bisa masuk ke antarmuka terminal murni tanpa perlu bantuan flashdisk Live USB:

  • Di layar monitor yang hitam atau berkedip, tekan kombinasi tombol keyboard: Ctrl + Alt + F3 (atau coba F4 / F5 / F6).
  • Layar akan beralih ke mode teks hitam (*TTY Login Prompt*).
  • Ketikkan **Username** akun anda, tekan Enter, lalu masukkan **Password** anda (catatan: karakter password memang tidak akan memunculkan bintang/titik, ketik saja lalu tekan Enter).

Diagnosa error modul GPU via TTY darurat dan alur pembersihan paket driver lama

2. Bersihkan Driver NVIDIA Lama yang Mengalami Corrupt

Langkah pertama yang wajib dilakukan adalah menghapus seluruh paket driver lama yang bentrok dengan modul kernel baru:

# 1. Bersihkan seluruh paket konfigurasi NVIDIA lama (Debian / Ubuntu / Mint):
sudo apt purge *nvidia* -y

# 2. Hapus sisa dependensi yang tidak terpakai:
sudo apt autoremove --purge -y

# 3. (Untuk Pengguna Fedora):
# sudo dnf remove *nvidia*

3. Pasang Ulang Driver Rekomendasi & Rebuild Modul DKMS

Setelah sistem bersih, pasang kembali versi driver resmi yang stabil dan cocok dengan kernel aktif:

# 1. Pindai dan pasang driver versi rekomendasi secara otomatis (Ubuntu / Mint):
sudo ubuntu-drivers install

# 2. (Untuk Pengguna Fedora via RPM Fusion):
# sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda

# 3. Pastikan modul kernel terkompilasi sempurna ke versi kernel saat ini:
sudo dkms autoinstall

# 4. Nyalakan ulang komputer:
sudo reboot

4. Verifikasi Hasil Instalasi Setelah Masuk Desktop

Setelah komputer restart, layar desktop akan kembali menyala normal. Untuk memastikan kartu grafis NVIDIA dan akselerasinya sudah berjalan optimal, buka terminal dan ketik:

nvidia-smi

Jika tabel status GPU (memuat tipe VGA, suhu, driver version, dan pemakaian VRAM) tampil lengkap tanpa error, berarti sistem grafis komputer anda sudah pulih 100%.

Itulah panduan praktis memulihkan driver NVIDIA dan mengatasi layar blank setelah update OS Linux. Saya sendiri sudah berkali-kali menggunakan jalan pintas TTY ini saat mengelola workstation maupun laptop kerja, sehingga kita tidak perlu repot melakukan format ulang hanya karena masalah driver tampilan.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau rekan sesama pengguna Linux yang sedang mengalami layar blank pada laptopnya.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Troubleshooting Driver Linux

Tutorial Dasar Linux Part 9: Diagnosa Jaringan & Remote Server SSH

Assalamualaikum Wr. Wb.

Tutorial Dasar Linux Part 9: Diagnosa Jaringan & Remote Server SSH | Kuasai Port Listening, SCP, dan Sinkronisasi Rsync | Di era komputasi modern dan cloud saat ini, hampir semua server Linux dikelola dari jarak jauh (*remote*) tanpa antarmuka monitor fisik. Mengetahui cara memeriksa alamat IP lokal, memindai port jaringan yang sedang aktif, masuk ke server via terminal terenkripsi SSH, hingga mentransfer file berukuran besar secara instan adalah keterampilan inti yang wajib dimiliki. Melanjutkan seri sebelumnya, kali ini admin akan membagikan panduan diagnosa jaringan dan remote akses server Linux menggunakan perkakas modern seperti ip, ss, ssh, dan rsync yang dijamin work 100%.

1. Memeriksa Alamat IP & Konektivitas Jaringan

Gunakan perintah modern pengganti ifconfig lama:

  • ip a : Menampilkan daftar adaptor jaringan (Ethernet/Wi-Fi) beserta alamat IP lokal Anda.
  • ping -c 4 1.1.1.1 : Menguji kestabilan koneksi internet dan latency respon gateway.
  • curl -I https://google.com : Memeriksa respon header HTTP dari suatu domain web.

Diagnosa port listening menggunakan ss dan transfer data remote server via SSH/Rsync

2. Memindai Port yang Sedang Terbuka (Socket Statistics / ss)

Perintah ss digunakan untuk memeriksa apakah web server atau database Anda sudah mendengarkan (*listening*) di port yang tepat:

# Menampilkan seluruh port TCP/UDP yang sedang listening beserta nama prosesnya:
sudo ss -tulpn

3. Melakukan Remote Akses Aman via SSH

Masuk ke server Linux atau VPS di cloud menggunakan protokol SSH yang terenkripsi:

# 1. Login standar menggunakan IP dan user:
ssh username@103.xx.xx.xx

# 2. Login menggunakan kunci enkripsi SSH Key (Lebih aman):
ssh -i ~/.ssh/id_ed25519 username@103.xx.xx.xx -p 22

4. Transfer File Cepat Menggunakan SCP & Rsync

Untuk mengirim file atau sinkronisasi folder dari laptop ke server tanpa menggunakan FTP lambat:

# A. Mengirim satu file arsip (SCP):
scp backup.tar.gz username@103.xx.xx.xx:/home/username/data/

# B. Sinkronisasi folder build web super cepat (Rsync hanya transfer file yang berubah):
rsync -avzP --delete ./dist/ username@103.xx.xx.xx:/var/www/html/

Itulah rangkuman diagnosa jaringan dan remote akses di Linux. Dengan menguasai ss, ssh, dan rsync, Anda sudah memiliki perlengkapan lengkap untuk mengelola server dan mendeploy aplikasi web dengan percaya diri.

Sekian tutorial Part 9 kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau rekan yang sedang memperdalam ilmu networking di Linux.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Networking & Remote Server Linux

Tutorial React Dasar Part 1: Cara Mudah Memulai Belajar React Menggunakan Vite

Assalamualaikum Wr. Wb.

Tutorial React Dasar Part 1: Cara Mudah Memulai Belajar React Menggunakan Vite | Setup Cepat, Struktur File & Komponen Pertama | Setelah di seri-seri sebelumnya kita sudah menguasai HTML, CSS modern, dan dasar JavaScript, langkah besar berikutnya untuk menjadi web developer profesional adalah mempelajari library frontend terpopuler di dunia, yaitu React. Dulu, memulai belajar React terasa sangat berat dan lambat karena kita harus menggunakan Create React App (CRA) yang memakan waktu instalasi hingga beberapa menit. Di era modern saat ini, standar industri telah beralih menggunakan Vite—build tool yang super ringan, instan dalam hitungan milidetik, dan langsung siap pakai. Kali ini admin akan membagikan panduan step-by-step membangun aplikasi React pertama Anda yang dijamin work 100%.

1. Mengapa Memilih Vite untuk Memulai React?

Vite menggantikan cara lama dengan berbagai keunggulan performa:

  • Instalasi Kilat: Proses pembuatan template projek hanya butuh waktu kurang dari 5 detik.
  • Hot Module Replacement (HMR) Instan: Setiap kali kita mengedit baris kode di editor, tampilan di browser akan terupdate seketika tanpa perlu me-refresh seluruh halaman.
  • Ukuran Bundle Bersih: Tidak menumpuk konfigurasi dependensi lawas yang memberatkan kinerja komputer.

Langkah inisialisasi projek via Vite CLI di terminal dan preview server lokal di port 5173

2. Langkah Instalasi Projek React via Terminal

Pastikan komputer anda sudah terpasang Node.js, lalu buka terminal dan ikuti langkah berikut:

# 1. Buat folder projek baru berbasis Vite:
npm create vite@latest belajar-react -- --template react

# 2. Masuk ke folder projek yang baru dibuat:
cd belajar-react

# 3. Pasang semua paket dependensi yang dibutuhkan:
npm install

# 4. Jalankan local development server:
npm run dev

Buka browser favorit anda dan kunjungi alamat http://localhost:5173/ untuk melihat halaman awal React yang sedang berjalan.

3. Mengenal JSX & Menulis Komponen Pertama

React menggunakan format penulisan bernama JSX (JavaScript XML) yang memungkinkan kita menulis tag mirip HTML langsung di dalam file JavaScript. Buka file src/App.jsx menggunakan text editor (VS Code), lalu ubah isinya dengan komponen sederhana berikut:

// File: src/App.jsx
import { useState } from 'react';

function App() {
  // Membuat state untuk menyimpan angka counter
  const [angka, setAngka] = useState(0);

  return (
    <div style={{ textAlign: 'center', padding: '40px', fontFamily: 'Arial, sans-serif' }}>
      <h1 style={{ color: '#0284c7' }}>Halo, Selamat Datang di React!</h1>
      <p>Komponen ini dibuat menggunakan sintaks JSX yang dinamis.</p>

      <div style={{ margin: '20px 0' }}>
        <h2>Jumlah Klik: {angka}</h2>
        <button 
          onClick={() => setAngka(angka + 1)}
          style={{ padding: '10px 20px', backgroundColor: '#10b981', color: '#fff', border: 'none', borderRadius: '6px', cursor: 'pointer', fontWeight: 'bold' }}
        >
          Tambah Angka (+)
        </button>
      </div>
    </div>
  );
}

export default App;

4. Aturan Penting Saat Menulis Kode JSX

  • Wajib Menggunakan Satu Tag Pembungkus: Komponen React hanya boleh mengembalikan satu elemen induk (gunakan tag pembungkus <div> atau React Fragment <>...</>).
  • Gunakan className, Bukan class: Karena kata class adalah kata kunci cadangan di JavaScript, ganti atribut HTML class menjadi className="...".
  • Menyematkan Variabel dengan Kurung Kurawal: Nilai variabel atau fungsi matematika dapat langsung dipanggil di dalam JSX menggunakan tanda kurung kurawal tunggal {nama_variabel}.

Itulah langkah awal memulai belajar React menggunakan Vite. Saya sendiri selalu menyarankan pemula untuk mengawali dengan Vite karena proses pembelajarannya jauh lebih cepat dan menyenangkan tanpa terganggu oleh loading build yang lambat.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat yang baru ingin mulai belajar framework web modern.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Screenshot Praktik React Vite

Mastering SEO 2026 Part 2: Blueprint Strategi Web Perusahaan vs Toko Online vs Blog

Assalamualaikum Wr. Wb.

Mastering SEO 2026 Part 2: Blueprint Strategi Web Perusahaan vs Toko Online vs Blog | Jangan Salah Terapkan Metode Optimasi! | Kesalahan fatal yang paling sering dilakukan oleh pemilik situs dan praktisi digital marketing pemula adalah memperlakukan semua jenis website dengan strategi SEO yang sama. Mengoptimalkan website *Company Profile* korporat tentu membutuhkan pendekatan yang sangat bertolak belakang dibandingkan mengoptimasi toko online (*E-Commerce*) dengan ribuan katalog produk, ataupun blog media konten yang mengejar volume pembaca. Masing-masing entitas memiliki target konversi, struktur arsitektur URL, penanganan *crawl budget*, serta maksud pencarian (*Search Intent*) yang unik. Melanjutkan seri sebelumnya, di Part 2 ini admin akan membedah komparasi blueprint arsitektur SEO untuk Website Perusahaan, Toko Online, dan Blog Otoritas yang dijamin work 100%.



1. Matriks Komparasi 3 Jenis Website

Sebelum mengeksekusi strategi, pahami perbedaan pilar fokus teknis dari ketiga jenis website berikut:

Parameter 1. Web Perusahaan (B2B/Corporate) 2. Toko Online (E-Commerce) 3. Blog Otoritas / Media
Tujuan Utama Brand Trust & B2B Qualified Leads Transaksi Langsung (Sales Conversion) Traffic Volume & Ad/Affiliate Revenue
Search Intent Utama Commercial & Navigational Transactional (Buyer Keywords) Informational (How-to, Review, Tips)
Tantangan Teknis Jumlah halaman sedikit (Thin content) Faceted Navigation, Duplikasi & Index Bloat Keyword Cannibalization & Update Konten
Schema JSON-LD Wajib Organization, Service, LocalBusiness Product, Offer, AggregateRating Article, BlogPosting, FAQPage
[Arsitektur Strategis Berdasarkan Entitas Web]
• Web Perusahaan → Optimasi Entity Authority, Halaman Layanan Spesifik, Case Study, & Google Business Profile.
• Toko Online → Manajemen Canonical filter navigasi, Integrasi Google Merchant Center, & optimasi Core Web Vitals (LCP gambar).
• Blog / Media → Struktur Topic Cluster (Pillar-Cluster Silo), Internal Link ketat, & pembaruan berkala konten pilar.

Peta arsitektur dan fokus optimasi SEO khusus untuk Website Perusahaan, E-Commerce, dan Blog Media

2. Strategi Khusus Website Perusahaan (B2B / Corporate)

Website perusahaan tidak butuh ribuan pengunjung umum; yang dibutuhkan adalah audiens pengambil keputusan (B2B Leads):

  • Dedikasi 1 Halaman untuk 1 Layanan: Jangan gabungkan semua jasa dalam satu halaman. Buat URL spesifik (contoh: /services/jasa-pembuatan-web-custom dan /services/cloud-migration) agar Google dapat mencocokkan pencarian komersial secara spesifik.
  • Halaman Studi Kasus Portofolio (Proof of Work): Dokumentasikan masalah klien, solusi teknis yang diterapkan, dan metrik hasil nyata. Ini adalah sinyal *Experience* tertinggi di mata penilai kualitas Google.
  • Local SEO & Entitas Google Business Profile: Sinkronkan NAP (Name, Address, Phone Number) yang identik antara website dengan profil peta Google Maps Anda.

3. Strategi Khusus Toko Online (E-Commerce)

Toko online mengelola ratusan hingga puluhan ribu halaman dinamis:

  • Atasi Duplikasi Filter (Faceted Navigation): Filter warna, ukuran, atau harga (contoh: /baju?color=blue&size=XL) harus dipasangi tag <link rel="canonical" href="/baju" /> atau disetel noindex agar tidak memboroskan kuota perayapan (*crawl budget*).
  • Sinkronisasi Google Merchant Center: Pasang schema Product dan hubungkan feed inventaris stok ke Google Merchant Center agar foto produk, harga, dan label stok muncul di tab Google Shopping.
  • Kategori sebagai Halaman Induk Transaksional: Berikan deskripsi informatif setebal 150–250 kata di bagian bawah halaman katalog kategori untuk menyerap kata kunci pencarian umum.

4. Strategi Khusus Blog Otoritas & Media Konten

Kunci sukses blog informasi adalah struktur dan kedalaman topik (*Topical Authority*):

  • Model Topic Cluster (Pillar-Cluster Architecture): Buat 1 artikel pilar induk yang komprehensif (seperti: "Panduan Lengkap Belajar React"), lalu hubungkan dengan 5–7 artikel sub-topik pendukung (Props, useEffect, useReducer) menggunakan tautan internal (*Internal Linking*) dua arah.
  • Silo Structure Internal Links: Jangan menautkan link secara acak; alirkan otoritas artikel dari sub-kategori spesifik kembali ke artikel pilar utama untuk menegaskan relevansi topik di mata bot Google.

Itulah cetak biru strategi SEO komparatif untuk website korporat, toko online, dan blog konten. Dengan memahami karakteristik masing-masing platform, alokasi waktu dan teknik optimasi Anda akan tepat sasaran serta menghasilkan return on investment (ROI) yang optimal.

Sekian penutup serial Mastering SEO Part 1 dan Part 2. Silahkan share artikel ini jika Anda rasa bermanfaat untuk tim marketing, developer, dan rekan bisnis Anda!

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Arsitektur SEO Multi-Platform

Cara Cepat Mengatasi Error "Port Already in Use" (EADDRINUSE) di Linux & Windows

Assalamualaikum Wr. Wb.

Cara Cepat Mengatasi Error "Port Already in Use" (EADDRINUSE) di Linux & Windows | Bebaskan Port Macet Tanpa Perlu Restart Komputer | Sedang asyik ngoding atau baru mau menjalankan server lokal dengan perintah npm run dev atau menyalakan container Docker, tiba-tiba terminal memuntahkan pesan error merah bertuliskan "Error: listen EADDRINUSE: address already in use :::3000"? Masalah Port Conflict ini terjadi ketika port jaringan (seperti port 3000 untuk Next.js, port 80/443 untuk Web Server, port 8080 untuk Web UI, atau port 5432 untuk PostgreSQL) masih tersangkut dan dikunci oleh proses aplikasi lama (*zombie process*) yang tidak tertutup sempurna di latar belakang. Jangan buru-buru merestart laptop anda, kali ini admin akan membagikan trik kilat melacak dan membebaskan port yang tersangkut dalam hitungan detik yang dijamin work 100%.

1. Melacak Nomor PID Pemakai Port (Metode Lsof & Netstat)

Sebelum mematikan proses, kita perlu tahu aplikasi atau file mana yang sedang mengunci nomor port tersebut dengan melihat nomor **PID (Process ID)**-nya:

  • Di Linux / macOS: Buka terminal dan ketikkan perintah sudo lsof -i :3000 (ganti angka 3000 dengan nomor port yang bentrok).
  • Lihat kolom bertuliskan PID (misalnya muncul nomor PID 4821 dengan command node).
  • Di Windows (PowerShell / CMD): Ketikkan perintah netstat -ano | findstr :3000, lalu catat nomor PID di kolom paling kanan.

Diagnosa error EADDRINUSE port 3000 dan alur pembebasan port via kill PID & fuser

2. Cara Mematikan Paksa Proses yang Tersangkut (Kill PID)

Setelah mendapatkan nomor PID-nya, matikan proses tersebut agar port kembali berstatus bebas (*free*):

# 1. Matikan paksa proses di Linux / macOS (misal PID: 4821):
sudo kill -9 4821

# 2. Matikan paksa proses di Windows PowerShell / CMD:
taskkill /PID 4821 /F

3. Jurus Kilat 1 Detik di Linux: Perintah Fuser (Tanpa Perlu Cari PID)

Jika anda tidak mau repot mencari nomor PID satu per satu, Linux memiliki perintah sakti bernama fuser yang bisa langsung mencari sekaligus membunuh proses di port tersebut seketika:

# Format: sudo fuser -k [nomor_port]/tcp
# Contoh membebaskan port 3000 dan port 8080:
sudo fuser -k 3000/tcp
sudo fuser -k 8080/tcp

Opsi -k (kill) akan secara otomatis membersihkan seluruh proses yang mendengarkan (*listening*) di port tersebut. Setelah itu, jalankan kembali npm run dev dan server lokal anda akan langsung menyala normal tanpa error.

Itulah solusi praktis dan cepat mengatasi error Port Already in Use. Trik fuser -k ini adalah salah satu shortcut yang paling sering saya gunakan sehari-hari saat berpindah-pindah projek web development agar tidak membuang waktu.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman-teman developer atau rekan satu tim koding anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Troubleshooting Server Jaringan

Cara Ampuh Mengatasi Error GRUB Rescue Saat Menyalakan Komputer Dual Boot

Assalamualaikum Wr. Wb.

Cara Ampuh Mengatasi Error GRUB Rescue Saat Menyalakan Komputer Dual Boot | Kembalikan Bootloader Windows & Linux Tanpa Install Ulang | Pernahkah teman-teman menyalakan laptop atau PC setelah update Windows besar-besaran atau setelah menghapus partisi harddisk, tiba-tiba layar monitor hanya menampilkan tulisan hitam-putih bertuliskan "error: unknown filesystem. Entering rescue mode... grub rescue>"? Di kondisi ini, keyboard terasa tidak berguna karena komputer menolak masuk ke Windows maupun Linux. Masalah GRUB Rescue terjadi ketika file konfigurasi bootloader Linux hilang atau UUID partisinya bergeser sehingga motherboard bingung mencari file sistem operasi utama. Jangan panik dan jangan buru-buru memformat harddisk anda, kali ini admin akan membagikan panduan langkah demi langkah memulihkan bootloader GRUB yang dijamin work 100%.

1. Langkah Penyelamatan Cepat (Masuk Sementara via Prompt GRUB Rescue)

Ketikkan serangkaian perintah manual berikut langsung pada baris teks grub rescue> di layar laptop anda:

# 1. Cek daftar seluruh partisi harddisk yang terdeteksi
grub rescue> ls
# Output biasanya: (hd0) (hd0,gpt1) (hd0,gpt2) (hd0,gpt3)

# 2. Cari partisi mana yang berisi folder Linux (coba satu per satu)
grub rescue> ls (hd0,gpt1)/
grub rescue> ls (hd0,gpt2)/
# Jika muncul folder seperti /boot, /etc, /home, berarti itu partisi root Linux anda!

# 3. Set prefix dan root ke partisi yang benar (contoh di partisi gpt2):
grub rescue> set prefix=(hd0,gpt2)/boot/grub
grub rescue> set root=(hd0,gpt2)

# 4. Aktifkan modul normal bootloader dan jalankan sistem:
grub rescue> insmod normal
grub rescue> normal

Seketika layar akan kembali menampilkan menu pilihan bootloader Windows dan Linux seperti biasa. Pilih sistem operasi Linux anda untuk masuk ke desktop.


Alur perintah darurat di prompt grub rescue dan perbaikan instalasi bootloader permanen

2. Langkah Perbaikan Permanen (Wajib Dilakukan Setelah Masuk Desktop)

Cara di atas hanya bersifat sementara untuk menyalakan komputer. Agar error GRUB tidak muncul kembali saat komputer dimatikan, buka terminal di desktop Linux anda dan ketikkan perintah pembaruan permanen ini:

# 1. Pasang ulang bootloader GRUB ke drive utama (misal: /dev/sda atau /dev/nvme0n1):
sudo grub-install /dev/nvme0n1

# 2. Pindai ulang seluruh sistem operasi (termasuk deteksi partisi Windows Boot Manager):
sudo update-grub

# 3. Restart komputer untuk memastikan menu bootloader sudah normal 100%:
sudo reboot

3. Solusi Pamungkas Menggunakan Flashdisk Live USB (Metode Chroot)

Jika perintah insmod normal di layar rescue tetap menampilkan error, masukkan Flashdisk installer Linux (Live USB) anda, booting ke mode coba (Live Session), buka terminal, lalu lakukan metode Chroot (mengambil alih sistem harddisk):

# 1. Mount partisi root dan partisi EFI sistem harddisk anda ke folder /mnt:
sudo mount /dev/nvme0n1p2 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi

# 2. Ikat direktori sistem virtual live USB ke harddisk:
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

# 3. Masuk ke lingkungan sistem operasi Linux harddisk anda:
sudo chroot /mnt

# 4. Install ulang GRUB dari dalam sistem:
grub-install /dev/nvme0n1
update-grub
exit

# 5. Unmount dan restart komputer
sudo reboot

Itulah tutorial tuntas mengatasi error GRUB Rescue dan memulihkan menu dual boot Windows & Linux. Saya sendiri sudah berkali-kali mempraktikkan langkah ini setiap kali partisi boot tertimpa update OS lain dan hasilnya selalu pulih normal tanpa ada data yang hilang.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat yang sedang mengalami masalah gagal booting pada komputernya.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Troubleshooting Sistem Operasi

Taktik Futsal Modern: Cara Membongkar Lawan dengan Formasi Kotak 2-2

Assalamualaikum Wr. Wb.

Taktik Futsal Modern: Cara Membongkar Lawan dengan Formasi Kotak 2-2 & Skema Gol Tiang Dua (Second Post) | Strategi Mematikan Menghadapi Man-to-Man Marking | Pernahkah teman-teman bertanding futsal melawan tim yang menempel ketat satu lawan satu (*man-to-man marking*) di seluruh penjuru lapangan sampai kita sulit sekali melakukan operan pendek? Saat formasi 3-1 buntu karena pivot kita dikawal ketat oleh anchor lawan, strategi alternatif paling ampuh adalah mengubah formasi menjadi Kotak 2-2 (Square Formation). Taktik ini mengandalkan kecepatan lari di garis pinggir lapangan dan umpan silang mendatar ke tiang jauh (*second post*). Kali ini saya akan membagikan analisis pola penyerangan 2-2 dan cara mengeksekusi skema gol tiang dua yang dijamin membuat lawan kelabakan.

1. Karakteristik Formasi Kotak 2-2

Formasi 2-2 membagi lapangan menjadi dua lini sejajar: 2 pemain bertahan (D1 & D2) di lini belakang, dan 2 penyerang (F1 & F2) di lini depan yang melebar ke dekat garis samping:

  • Mengosongkan Ruang Tengah: Dengan menempatkan seluruh pemain di sisi pinggir lapangan, area tengah lapangan menjadi kosong melompong. Hal ini memancing pemain bertahan lawan untuk ragu-ragu antara menjaga posisi atau ikut melebar.
  • Menciptakan Situasi 1 vs 1 di Sayap: Memberikan ruang maksimal bagi penyerang sayap untuk melakukan *sprint* cepat tanpa terhalang tumpukan pemain di tengah.

Papan taktik formasi kotak 2-2: Umpan paralel garis samping dan penyelesaian akhir di tiang kedua

2. Rahasia Eksekusi Umpan Paralel (Parallel Pass)

Umpan paralel adalah operan lurus bertenaga yang dilepaskan menyusuri garis luar lapangan (*touchline*):

  • Langkah 1 (Fake Movement): Penyerang Kiri (F1) berpura-pura mundur mendekati bola untuk memancing bek lawan menempel ketat, lalu secara tiba-tiba memutar badan dan sprint kencang ke depan menuju sudut lapangan (*corner zone*).
  • Langkah 2 (Through Pass): Bek Kiri (D1) langsung melepaskan umpan mendatar lurus ke ruang lari F1 sebelum bek lawan sempat memutar badan.

3. Jurus Maut: Skema Second Post (Tiang Dua)

Hampir 70% gol di kompetisi futsal profesional tercipta dari sontekan ringan di area tiang kedua:

# Alur Eksekusi Skema Tiang Dua:
1. Penyerang Kiri (F1) berhasil mengejar bola di sudut lapangan lawan.
2. Kiper lawan otomatis bergeser merapatkan tiang dekat (First Post) untuk menutup sudut tembak langsung.
3. Begitu melihat bola dioper ke F1, Penyerang Kanan (F2) langsung lari kencang dari sisi seberang menuju tiang jauh (Second Post).
4. F1 melepaskan umpan tarik silang keras mendatar melewati depan gawang.
5. F2 tinggal menyontek bola (Tap-in) ke dalam gawang yang sudah kosong melompong!

Kunci sukses tiang dua adalah keberanian pemain seberang untuk percaya dan lari mendahului bola. Jangan menunggu bola ditendang baru mulai berlari, melainkan harus sudah meluncur ke tiang jauh tepat saat rekan tim bersiap melakukan umpan silang.

Itulah analisis taktik formasi 2-2 dan formula gol tiang dua dalam futsal modern. Saya sendiri selalu mengingatkan rekan satu tim bahwa gol-gol tercantik di futsal seringkali berasal dari umpan matang satu sentuhan sederhana yang diselesaikan dengan sontekan dingin di tiang jauh.

Sekian artikel kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman sparing, komunitas futsal, atau rekan satu tim olahraga anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Taktik Futsal Lapangan

Cara Mudah Mengatasi Git Merge Conflict Tanpa Takut Kode Tertimpa

Assalamualaikum Wr. Wb.

Cara Mudah Mengatasi Git Merge Conflict Tanpa Takut Kode Tertimpa | Panduan Aman & Cepat untuk Tim Developer | Siapa di sini yang langsung panik dan keringat dingin saat mengetikkan perintah git pull atau git merge lalu terminal menampilkan tulisan merah berbunyi "Automatic merge failed; fix conflicts and then commit the result"? Masalah Merge Conflict adalah makanan sehari-hari setiap programmer yang bekerja secara tim maupun saat mengelola projek open-source. Konflik ini terjadi bukan karena kodingan kita salah, melainkan karena Git bingung memilih perubahan mana yang harus dipakai ketika dua orang mengedit baris kode yang sama secara bersamaan. Kali ini admin akan membagikan panduan praktis dan aman mengatasi merge conflict yang dijamin work 100%.

1. Jangan Panik: Pahami Arti Simbol Konflik Git

Saat terjadi konflik, Git tidak menghapus file anda; Git hanya menandai baris yang bentrok dengan 3 simbol pembatas unik:

  • <<<<<<< HEAD (Current Change) : Baris kode versi lokal yang ada di laptop/komputer anda sebelum melakukan merge.
  • ======= : Garis pembatas tengah pemisah antara kode anda dan kode rekan tim.
  • >>>>>>> [nama_branch] (Incoming Change) : Baris kode versi baru yang ditarik dari repository remote (GitHub / GitLab).

Antarmuka penyelesaian konflik visual di VS Code dengan opsi Accept Current, Incoming, atau Both Changes

2. Cara Menyelesaikan Konflik Menggunakan VS Code (Paling Cepat)

Jika anda menggunakan editor VS Code, anda tidak perlu menghapus tanda panah secara manual. VS Code menyediakan 4 tombol tombol praktis tepat di atas baris konflik:

  • Accept Current Change: Mempertahankan versi kodingan lokal anda dan membuang versi remote.
  • Accept Incoming Change: Mengambil versi kodingan terbaru dari teman/server dan menimpa versi lokal anda.
  • Accept Both Changes: Menggabungkan kedua baris kode tersebut secara berurutan.
  • Compare Changes: Membuka tampilan split layar kanan-kiri untuk membandingkan perbedaan secara teliti.

3. Alur Perintah Terminal untuk Mengunci Hasil Merge

Setelah anda memilih perubahan yang benar dan menghapus seluruh simbol pembatas <<<<<<< serta =======, selesaikan proses penggabungan dengan alur berikut:

# 1. Cek file mana saja yang masih mengalami status konflik (Unmerged paths)
git status

# 2. Tandai file yang sudah selesai diperbaiki ke staging area
git add index.js

# 3. Buat commit penyelesaian merge
git commit -m "fix: resolve merge conflict on API config"

# 4. Dorong kembali perubahan bersih ke repository GitHub/GitLab
git push origin main

4. Tips Darurat: Membatalkan Merge Jika Salah Langkah

Jika saat menyelesaikan konflik anda merasa susunan kode semakin berantakan dan ingin mengembalikan kondisi repository persis seperti sebelum perintah merge dijalankan, cukup ketikkan satu baris perintah penyelamat ini:

git merge --abort

Perintah --abort akan membatalkan proses penggabungan seketika dan mengembalikan seluruh file anda ke kondisi normal tanpa ada data yang rusak.

Itulah panduan praktis dan aman menangani Git Merge Conflict. Saya sendiri selalu menyarankan untuk rajin melakukan git pull secara berkala setiap pagi sebelum mulai koding agar potensi terjadinya bentrok kode dengan rekan tim bisa ditekan sekecil mungkin.

Sekian artikel kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau rekan satu tim development anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Screenshot Praktik Git VS Code

Rahasia Menulis CV ATS-Friendly yang Tembus Screening HR & Recruiter

Assalamualaikum Wr. Wb.

Rahasia Menulis CV ATS-Friendly yang Tembus Screening HR & Recruiter | Trik Formula Google XYZ Anti Auto-Reject | Pernah mengirim puluhan lamaran kerja di JobStreet, LinkedIn, atau portal karir perusahaan tetapi tidak pernah mendapat panggilan wawancara satu pun? Banyak pelamar mengira CV mereka ditolak karena kualifikasi kurang, padahal kenyataannya CV mereka bahkan belum sempat dibaca oleh manusia. Di perusahaan modern, ribuan berkas yang masuk disaring terlebih dahulu oleh robot perangkat lunak bernama ATS (Applicant Tracking System). Jika format tata letak berantakan atau kata kuncinya tidak terbaca sistem, CV akan otomatis terlempar ke folder reject. Kali ini admin akan membagikan panduan menyusun CV ATS yang rapi dan dijamin work 100%.

1. Aturan Format Tata Letak (Layout) Standar ATS

Robot ATS membaca dokumen dari atas ke bawah dan dari kiri ke kanan. Hindari kesalahan format berikut:

  • Gunakan Layout 1 Kolom (Single Column): Hindari template grafis 2 kolom penuh warna dari Canva yang menumpuk tabel dan ikon grafis karena sering membuat urutan teks terbaca acak-acakan oleh parser ATS.
  • Gunakan Font Standar Sistem: Pilih jenis font yang bersih dan mudah dikenali mesin (Arial, Calibri, Helvetica, atau Roboto) dengan ukuran 10–11pt untuk isi dan 13–15pt untuk heading.
  • Gunakan Judul Bagian Baku: Jangan gunakan istilah puitis seperti "My Journey" atau "Things I Master"; gunakan penamaan standar seperti Work Experience, Education, dan Skills.
  • Simpan dalam Format PDF Text: Pastikan teks di dalam file PDF bisa diblok (*highlight*) dan dicopy secara manual, bukan hasil scan gambar (JPEG).

Simulasi penilaian skor ATS dan perbandingan penulisan pengalaman kerja biasa vs Formula XYZ

2. Trik Menulis Pengalaman Kerja dengan Formula Google XYZ

Kesalahan fatal pada CV adalah hanya menuliskan daftar tugas harian (*job description*) yang pasif. Recruiter ingin melihat dampak nyata dan angka pencapaian. Gunakan formula standar perekrutan Google:

Rumus: "Accomplished [X], as measured by [Y], by doing [Z]"
Artinya: Berhasil mencapai [Hasil X], diukur dengan [Metrik/Angka Y], melalui tindakan [Metode/Aksi Z]
  • Contoh Biasa (Lemah): "Bertanggung jawab mengelola dan maintain website perusahaan."
  • Contoh Formula XYZ (Sangat Kuat): "Meningkatkan kecepatan loading halaman web sebesar 40% (X) diukur dari skor Google Lighthouse (Y) melalui optimasi query database dan implementasi caching web server (Z)."
  • Contoh Bidang Operasional/Admin: "Mempercepat proses administrasi onboarding karyawan baru dari 5 hari menjadi 2 hari (X) yang dinilai dari survei kepuasan 95% (Y) melalui digitalisasi template form otomatis (Z)."

3. Optimasi Kata Kunci (Keywords Matching)

Sistem ATS mencocokkan kata yang ada di CV anda dengan kualifikasi pada lowongan kerja (Job Description):

  • Jika lowongan mensyaratkan "PostgreSQL, Linux Server, Git", pastikan kata-kata tersebut tertulis secara eksplisit di bagian Skills dan diceritakan penerapannya di riwayat pekerjaan.
  • Gunakan kata kerja aksi aktif di awal setiap poin: Developed, Engineered, Led, Negotiated, Optimized, Restructured.

Itulah panduan praktis merombak CV agar ramah sistem ATS dan memikat mata recruiter dalam hitungan detik. Saya sendiri sering melihat kandidat hebat yang gugur hanya karena masalah format dokumen, jadi tidak ada salahnya meluangkan waktu merapikan CV Anda mulai hari ini.

Sekian artikel kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau rekan yang sedang berjuang mencari peluang karir baru.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Standar Screening HR

2 Masalah Wajib Fix Pasca Install Linux: Memperbaiki Suara "Dummy Output" & Jam Selisih 7 Jam Saat Dual Boot

Assalamualaikum Wr. Wb.

2 Masalah Wajib Fix Pasca Install Linux: Memperbaiki Suara "Dummy Output" & Jam Selisih 7 Jam Saat Dual Boot | Panduan Singkat & Permanen | Setelah berhasil menginstall Linux berdampingan dengan Windows (Dual Boot), seringkali ada dua gangguan kecil yang sangat mengganggu kenyamanan: pertama, speaker laptop tidak mengeluarkan suara sama sekali dan di setelan audio tertulis "Dummy Output"; kedua, setiap kali kita beralih dari Linux masuk ke Windows, jam di Windows mendadak mundur 7 jam (menjadi jam 3 pagi padahal di Indonesia sudah jam 10 siang). Masalah ini bukan karena file ISO Linux Anda rusak, melainkan karena perbedaan standar pembacaan chip jam motherboard dan inisialisasi driver sound server. Kali ini admin akan membagikan 2 solusi kilat yang menyelesaikan kedua masalah tersebut dalam 1 menit, dijamin work 100%.

1. Mengatasi Masalah 1: Suara Bisu & "Dummy Output" di Linux

Munculnya tulisan Dummy Output terjadi ketika server suara modern (PipeWire / PulseAudio) gagal mengenali kartu suara internal Intel/Realtek saat booting:

# 1. Restart sound server PipeWire di sisi user:
systemctl --user restart pipewire pipewire-pulse wireplumber

# 2. Jika masih Dummy Output, berikan konfigurasi ALSA Intel:
echo "options snd-hda-intel dmic_detect=0" | sudo tee -a /etc/modprobe.d/alsa-base.conf
echo "blacklist snd_soc_skl" | sudo tee -a /etc/modprobe.d/blacklist.conf

# 3. Update initramfs dan restart komputer:
sudo update-initramfs -u
sudo reboot

Diagnosa sound server PipeWire dan perintah sinkronisasi waktu RTC dual boot

2. Mengatasi Masalah 2: Jam Selisih 7 Jam Saat Pindah ke Windows

Mengapa jam Windows selalu kacau setelah kita membuka Linux?

  • Standar Linux (UTC): Linux menyimpan jam di chip BIOS motherboard (RTC) dalam format waktu dunia (UTC/GMT 00:00), lalu menambahkannya +7 jam di tampilan desktop (WIB).
  • Standar Windows (Local Time): Windows menganggap chip jam di BIOS sebagai waktu lokal (langsung jam 10:00 WIB).
  • Akibatnya, saat Linux selesai dipakai, ia menulis jam UTC (jam 03:00) ke motherboard. Saat Anda reboot masuk ke Windows, Windows langsung membaca jam 03:00 tersebut tanpa menambah selisih waktu!

3. Solusi 1 Baris Perintah di Terminal Linux (Work 100%)

Buka terminal di Linux Anda dan ketikkan satu baris perintah sakti berikut agar Linux menyimpan waktu dalam format Local Time sama persis seperti Windows:

sudo timedatectl set-local-rtc 1 --adjust-system-clock

Cek hasilnya dengan mengetik timedatectl. Sekarang, baik saat Anda booting ke Windows maupun ke Linux, jam di kedua sistem operasi akan selalu sinkron, tepat, dan tidak akan pernah bergeser lagi selamanya.

Itulah 2 perbaikan wajib pasca instalasi Linux dan setup dual boot. Dengan menerapkan konfigurasi ini, pengalaman memakai Linux harian Anda akan menjadi jauh lebih mulus tanpa ada gangguan audio maupun jam yang melenceng.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat sesama pengguna dual boot Windows & Linux.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Konfigurasi Sistem Operasi

Bikin Fitur Dark Mode Otomatis, Efek Pseudo-Elements & Font Responsif Tanpa Media Query

Assalamualaikum Wr. Wb.

Tutorial Web Design Lanjutan Part 9: Bikin Fitur Dark Mode Otomatis, Efek Pseudo-Elements & Font Responsif Tanpa Media Query | Trik CSS Tingkat Mahir | Pernah merasa silau saat membaca artikel web di ruangan gelap? Atau merasa lelah karena harus menulis puluhan baris @media (max-width: ...) hanya untuk mengatur ukuran judul artikel agar tidak terpotong di layar HP? Di tutorial tingkat lanjut kali ini, kita akan mempelajari 3 trik sakti CSS modern: membuat Sistem Dark Mode yang sinkron dengan setelan sistem pengguna, membuat ornamen UI interaktif menggunakan Pseudo-elements (::before & ::after), serta rumus tipografi cair menggunakan fungsi clamp() yang dijamin work 100%.

1. Sistem Dark Mode Otomatis dengan prefers-color-scheme & Data Attribute

Dulu kita butuh script jQuery yang rumit untuk mengubah tema web. Sekarang, browser modern sudah memiliki fitur pendeteksi tema bawaan laptop/smartphone pengunjung:

  • @media (prefers-color-scheme: dark) : Otomatis mengaktifkan warna gelap jika HP pengguna disetel ke Dark Mode.
  • [data-theme="dark"] : Memungkinkan pengunjung mengganti mode gelap/terang secara manual melalui tombol sakelar.

Gambar 1: Perbandingan tema terang default dan mode gelap hemat baterai menggunakan CSS Variables

2. Trik Pseudo-Elements (::before & ::after) untuk Tooltip Murni CSS

Pseudo-elements memungkinkan kita menambahkan elemen dekoratif (seperti segitiga panah, badge, atau tooltip petunjuk) langsung dari stylesheet tanpa mengotori file HTML dengan tag <span> tambahan:

  • content: "" : Syarat mutlak agar elemen semu dapat dirender di layar.
  • position: absolute : Mengunci posisi ornamen tepat di atas atau di samping tombol induk (yang disetel position: relative).

Gambar 2: Kotak petunjuk tooltip interaktif yang muncul otomatis saat kursor diarahkan (hover)

3. Rumus Tipografi Cair (Fluid Typography) dengan clamp()

Daripada menulis breakpoint media query berulang kali, fungsi clamp(MIN, VAL, MAX) mengunci ukuran font agar membesar dan mengecil secara elastis mengikuti lebar layar:

font-size: clamp(1.25rem, 4vw + 0.5rem, 2.75rem);
  • Batas Minimal (1.25rem): Teks tidak akan pernah mengecil melewati 20px saat dibuka di layar HP sekecil apa pun.
  • Skala Fleksibel (4vw + 0.5rem): Ukuran teks menyesuaikan persentase lebar layar secara dinamis dan mulus.
  • Batas Maksimal (2.75rem): Teks tidak akan membesar secara berlebihan saat dibuka di monitor monitor ultra-wide.

Gambar 3: Skalabilitas teks judul otomatis antara tampilan Mobile (375px) dan Desktop (1440px)

4. Full Source Code Praktik (HTML, Modern CSS & Mini Switcher)

Berikut adalah source code lengkap yang bisa langsung anda uji coba di browser favorit anda:

<!DOCTYPE html>
<html lang="id" data-theme="light">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dark Mode & Fluid CSS Mastery</title>
    <style>
        /* 1. Theme Variables: Light Mode (Default) */
        :root {
            --bg-body: #f8fafc;
            --bg-card: #ffffff;
            --text-title: #0f172a;
            --text-body: #475569;
            --accent: #0284c7;
            --border: #e2e8f0;
        }

        /* 2. Theme Variables: Dark Mode Override */
        [data-theme="dark"] {
            --bg-body: #0f172a;
            --bg-card: #1e293b;
            --text-title: #f8fafc;
            --text-body: #94a3b8;
            --accent: #38bdf8;
            --border: #334155;
        }

        body {
            background-color: var(--bg-body);
            color: var(--text-body);
            font-family: 'Segoe UI', system-ui, sans-serif;
            margin: 0;
            padding: 30px 20px;
            transition: background-color 0.3s ease, color 0.3s ease;
        }

        .container {
            max-width: 800px;
            margin: 0 auto;
        }

        /* 3. Fluid Heading dengan clamp() */
        h1.fluid-title {
            font-size: clamp(1.5rem, 3.5vw + 0.5rem, 2.6rem);
            color: var(--text-title);
            line-height: 1.2;
            margin-bottom: 12px;
        }

        .card {
            background-color: var(--bg-card);
            border: 1px solid var(--border);
            padding: 25px;
            border-radius: 12px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
            margin-top: 20px;
        }

        /* 4. Pure CSS Tooltip menggunakan ::before & ::after */
        .tooltip-btn {
            position: relative;
            background: var(--accent);
            color: #ffffff;
            border: none;
            padding: 12px 24px;
            border-radius: 6px;
            font-weight: bold;
            cursor: pointer;
        }

        .tooltip-btn::after {
            content: "Pengaturan tema tersimpan!";
            position: absolute;
            bottom: 125%;
            left: 50%;
            transform: translateX(-50%);
            background: #020617;
            color: #38bdf8;
            padding: 6px 12px;
            border-radius: 4px;
            font-size: 12px;
            white-space: nowrap;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.25s ease, transform 0.25s ease;
        }

        .tooltip-btn:hover::after {
            opacity: 1;
            transform: translateX(-50%) translateY(-4px);
        }

        .toggle-btn {
            background: transparent;
            border: 1px solid var(--accent);
            color: var(--accent);
            padding: 8px 16px;
            border-radius: 20px;
            cursor: pointer;
            font-weight: 600;
        }
    </style>
</head>
<body>

    <div class="container">
        <button class="toggle-btn" onclick="gantiTema()">🌓 Ganti Mode Gelap / Terang</button>
        
        <div class="card">
            <h1 class="fluid-title">Desain Web Dinamis & Ramah Mata</h1>
            <p>Halaman ini menerapkan CSS Variables untuk Dark Mode, tipografi cair clamp(), serta tooltip murni CSS tanpa library eksternal.</p>
            
            <button class="tooltip-btn">Arahkan Kursor ke Sini</button>
        </div>
    </div>

    <script>
        function gantiTema() {
            const html = document.documentElement;
            const temaSekarang = html.getAttribute('data-theme');
            const temaBaru = temaSekarang === 'dark' ? 'light' : 'dark';
            html.setAttribute('data-theme', temaBaru);
        }
    </script>

</body>
</html>

Itulah tutorial tingkat lanjut mengenai implementasi Dark Mode, ornamen tooltip murni CSS dengan pseudo-elements, dan tipografi responsif clamp(). Saya sendiri juga rutin menerapkan formula ini pada projek web agar tampilannya tetap nyaman dibaca di segala kondisi pencahayaan dan ukuran layar.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Screenshot Praktik CSS

Mastering SEO 2026 Part 1: Memahami Algoritma Crawling Baru Google di Era AI

Assalamualaikum Wr. Wb.

Mastering SEO 2026 Part 1: Memahami Algoritma Crawling Baru Google di Era AI | Strategi GEO, AI Overviews, & Kunci Lolos Filter Information Gain | Dunia Search Engine Optimization (SEO) telah mengalami pergeseran paradigma paling masif sejak lahirnya internet. Jika beberapa tahun lalu optimasi web hanya berfokus pada kepadatan kata kunci (*keyword density*), meta tags, dan jumlah backlink massal, kini mesin pencari Google telah berevolusi menjadi mesin penjawab generatif (*Generative Search Engine*) yang ditenagai oleh model bahasa besar (LLM). 

Hadirnya AI Overviews dan integrasi mesin pencari berbasis AI (seperti Perplexity, ChatGPT Search, dan Gemini Search) mengubah perilaku pencarian menjadi Zero-Click Searches, di mana jawaban ringkas langsung disajikan di halaman pertama. Di Part 1 ini, admin akan membedah secara komprehensif cara kerja bot perayap (*crawler*) modern Google, konsep Generative Engine Optimization (GEO), dan formula membangun konten yang menjadi rujukan utama AI dijamin work 100%.



1. Evolusi Bot Perayap: Dari Googlebot Biasa ke AI Training Crawlers

Kini webmaster tidak hanya berhadapan dengan perayap indeks biasa, melainkan kluster bot dengan fungsi spesifik yang membaca struktur semantik website Anda:

  • Googlebot (Standard Indexing): Bertugas memetakan struktur DOM HTML dan merayapi link internal untuk indeks penelusuran reguler.
  • Google-Extended: Perayap khusus yang mengumpulkan data untuk melatih serta menyuplai konteks real-time bagi sistem AI generatif Google (Gemini & AI Overviews).
  • AI Retrieval Agents (PerplexityBot / GPTBot / ClaudeBot): Bot AI eksternal yang mencari referensi dokumen primer untuk dikutip (*cited sources*) saat pengguna mengajukan pertanyaan kompleks.
[Arsitektur Crawling & GEO Matrix]
• Information Gain Score → Google menghukum konten hasil parafrase AI dan memberi ranking tinggi pada data primer unik.
• Entity-Based Indexing → Algoritma menghubungkan konsep topik, entitas penulis, dan kredibilitas brand via Knowledge Graph.
• Modular Answer Blocks → Struktur paragraf padat 40–60 kata, bullet points, dan tabel perbandingan siap kutip.
• Structured Data JSON-LD → Fondasi mutlak agar bot AI memahami konteks halaman tanpa salah tafsir.

Pergeseran algoritma perayapan: Dari pencocokan kata kunci ke pemetaan entitas dan kutipan AI Overviews

2. Kunci Bertahan di Era AI: Skor "Information Gain"

Mengapa banyak artikel panjang yang ditulis menggunakan tools AI generatif mendadak anjlok peringkatnya? Jawabannya adalah sistem Information Gain Score milik Google. Algoritma akan membandingkan artikel Anda dengan 10 artikel teratas yang sudah ada di internet:

  • Jika artikel Anda hanya mengulang atau merangkum poin yang sudah ada, skor *information gain* bernilai nol dan artikel dianggap sebagai sampah digital (*low-value content*).
  • Cara Menaikkan Skor: Cantumkan studi kasus nyata, data statistik internal perusahaan, tangkapan layar praktik mandiri (*original screenshots*), kutipan wawancara ahli, atau perspektif pemecahan masalah yang belum pernah diulas di tempat lain.

3. Mengoptimalkan Konten untuk GEO (Generative Engine Optimization)

Agar artikel Anda terpilih sebagai sumber rujukan kartu ringkasan AI Overviews, terapkan formula penulisan modular berikut:

  • Direct Answer Block: Berikan definisi langsung atau solusi inti dalam 1–2 kalimat (40–60 kata) tepat di bawah sub-heading (H2/H3) sebelum menguraikan detailnya. Bot AI sangat menyukai blok teks ringkas untuk diekstrak.
  • Tabel & Bullet List Terstruktur: Hindari paragraf panjang yang bertele-tele. Rangkum perbandingan harga, spesifikasi teknis, atau instruksi langkah demi langkah ke dalam tabel Markdown atau daftar poin berurutan.
  • Sinyal E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness): Cantumkan biografi penulis lengkap dengan rekam jejak profesionalnya, serta tautkan profil media sosial / GitHub / LinkedIn terverifikasi.

4. Validasi Data Semantik via Schema Markup (JSON-LD)

Bantu perayap AI memahami hierarki konten Anda secara presisi dengan menyematkan kode Microdata berstandar Schema.org pada header halaman web:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "headline": "Panduan Lengkap Algoritma Crawling Era AI",
  "author": {
    "@type": "Person",
    "name": "Aulia Satrio",
    "jobTitle": "Technical Specialist",
    "sameAs": "https://github.com/coderaulia"
  },
  "publisher": {
    "@type": "Organization",
    "name": "PPI-Tuts",
    "url": "https://ppi-tuts.blogspot.com"
  },
  "description": "Analisis mendalam mengenai Generative Engine Optimization dan evolusi perayapan bot AI."
}
</script>

Itulah fondasi mutlak memahami evolusi mesin perayap di era AI. Dengan mengutamakan pengalaman nyata (*Experience*), menyediakan data baru bernilai tinggi, dan menstrukturkan konten secara modular, website Anda akan tetap mendominasi halaman pencarian modern.

Sekian tutorial Part 1 kali ini, silahkan share artikel ini jika Anda rasa bermanfaat untuk rekan praktisi web, digital marketer, atau pegiat SEO.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Algoritma Perayapan Mesin Pencari

Tutorial AI Praktis Part 4: Cara Menghubungkan AI Lokal Ollama ke Aplikasi Web (Next.js / Node.js) via REST API

Assalamualaikum Wr. Wb.

Tutorial AI Praktis Part 4: Cara Menghubungkan AI Lokal Ollama ke Aplikasi Web (Next.js / Node.js) via REST API | Bikin Fitur Pintar Sendiri | Ingin membangun aplikasi web portal yang punya fitur chatbot interaktif, perangkum artikel otomatis, atau generator formulir tanpa harus bayar biaya API token ke OpenAI/Claude? Kabar baiknya, saat Ollama berjalan di background komputer, ia otomatis menyediakan REST API lokal di port 11434 yang siap di-consume oleh aplikasi web kita. Kali ini admin akan membagikan panduan integrasi API Ollama ke Next.js yang dijamin work 100%.

1. Mengenal Endpoint REST API Ollama

Ollama menyediakan endpoint HTTP standar yang menerima format payload JSON:

  • POST http://localhost:11434/api/generate : Menghasilkan output teks tunggal dari sebuah prompt.
  • POST http://localhost:11434/api/chat : Mendukung pesan percakapan multi-turn dengan riwayat konteks (role: user, assistant, system).
  • GET http://localhost:11434/api/tags : Mengambil daftar semua model AI yang sedang terpasang di komputer server.

Arsitektur pemanggilan API Route Next.js yang terhubung langsung ke Ollama port 11434

2. Contoh Implementasi API Route di Next.js (App Router)

Buat file endpoint di projek Next.js anda pada path app/api/ai-chat/route.js:

// File: app/api/ai-chat/route.js
export async function POST(req) {
  try {
    const { prompt } = await req.json();

    // Request ke background engine Ollama
    const response = await fetch("http://127.0.0.1:11434/api/generate", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        model: "llama3",
        prompt: prompt,
        stream: false // Nonaktifkan stream untuk respon instan satu paket
      }),
    });

    if (!response.ok) {
      throw new Error("Gagal terhubung ke Ollama API.");
    }

    const data = await response.json();

    return Response.json({
      status: "success",
      model: data.model,
      hasil: data.response
    });

  } catch (error) {
    return Response.json({ status: "error", message: error.message }, { status: 500 });
  }
}

3. Memanggil API dari Sisi Frontend

Di komponen UI web (misal: formulir bantuan), kita tinggal memanggilnya dengan fungsi fetch() standar:

async function kirimPrompt(teksUser) {
  const res = await fetch("/api/ai-chat", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ prompt: teksUser })
  });
  
  const result = await res.json();
  console.log("Balasan AI:", result.hasil);
}

Itulah cara mudah menghubungkan AI lokal ke aplikasi web modern. Dengan setup ini, Anda bisa menyematkan fitur kecerdasan buatan canggih di aplikasi tanpa perlu pusing memikirkan tagihan kartu kredit bulanan.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Screenshot Praktik

Rahasia Membongkar Pertahanan Lawan dengan Pola Third-Man Run dalam Sepak Bola Modern

Assalamualaikum Wr. Wb.

Rahasia Membongkar Pertahanan Lawan dengan Pola Third-Man Run dalam Sepak Bola Modern | Trik Kombinasi Mematikan Lini Serang | Siapa yang sering geregetan saat menonton tim kesayangan menguasai bola hingga 70%, tetapi serangannya selalu mentok di depan kotak penalti lawan yang menumpuk pemain (parkir bus)? Di era sepak bola modern, mengandalkan aksi individu melewati 2-3 bek lawan sudah sangat sulit karena organisasi pertahanan semakin rapat. Kunci utama tim-tim top Eropa untuk membongkar blok rendah (low block) adalah menggunakan prinsip Third-Man Run (Pergerakan Pemain Ketiga). Kali ini saya akan membagikan analisis taktik dan cara melatih pola serangan segitiga ini agar alur serangan tim menjadi lebih tajam.

1. Apa Itu Konsep Third-Man Run?

Konsep dasarnya sangat sederhana tetapi hampir mustahil dihentikan oleh bek lawan jika dieksekusi dengan timing yang pas:

  • Pemain Pertama (Player A - Pemberi Umpan): Memegang bola dan menarik perhatian gelandang bertahan lawan.
  • Pemain Kedua (Player B - Pemantul / Tembok): Menjemput bola dengan posisi membelakangi gawang lawan untuk memancing bek tengah keluar dari posisinya.
  • Pemain Ketiga (Player C - Pelari Bebas): Berlari menusuk ke ruang kosong dari titik buta (blindside) bek lawan untuk menerima bola pantulan dari Pemain B atau umpan terobosan lanjutan.

Papan taktik alur umpan vertikal ke target man (B) dan tusukan tanpa bola pemain ketiga (C)

2. 4 Kunci Eksekusi yang Wajib Dimiliki Pemain

Agar pola serangan ini menghasilkan peluang emas di depan gawang:

  • 1. Timing Lari yang Presisi: Pemain C tidak boleh berlari terlalu cepat (karena akan terkena jebakan offside) dan tidak boleh terlambat (ruang kosong akan keburu ditutup lawan).
  • 2. Umpan Satu Sentuhan (One-Touch Lay Off): Pemain B yang berperan sebagai tembok wajib memantulkan bola dengan satu sentuhan ringan ke ruang kosong, bukan mengontrol bola terlalu lama.
  • 3. Visi Bermain & Komunikasi: Pemain A harus mampu melihat celah vertikal sebelum lawan sempat melakukan pressing ketat.
  • 4. Stamina & Daya Ledak Fisik: Pola ini menuntut lari cepat berulang kali (repeated high-intensity sprint), sehingga kebugaran fisik dan VO2Max para pemain sayap/gelandang serang harus prima.

3. Cara Melatih Pola Kombinasi Ini di Lapangan (Drill Sesi Latihan)

Bagi teman-teman yang aktif bermain futsal atau sepak bola lapangan besar, bentuk latihan segitiga berulang (passing triangle drill) ini bisa dicoba saat sesi pemanasan:

# Tahapan Pola Latihan (3 vs 0 / 3 vs 1):
1. Player A mengirim umpan keras mendatar ke Player B (jarak 10-15 meter).
2. Player B memantulkan bola satu sentuhan miring ke arah ruang kosong.
3. Player C yang datang dari belakang langsung menyambar bola dengan sepakan first-time ke arah gawang.
4. Rotasi posisi: A berpindah ke posisi B, B ke posisi C, dan C kembali ke antrean A.
5. Ulangi dengan tempo cepat 10-12 repetisi.

Itulah ulasan taktik mengenai pergerakan pemain ketiga (Third-Man Run) dalam sepak bola. Saya sendiri sering memperhatikan pola ini saat menganalisis pertandingan, dan ketika diterapkan di lapangan dengan ritme satu-dua sentuhan yang rapi, pertahanan serapat apa pun pasti akan terbuka celahnya.

Sekian artikel kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman bermain bola atau rekan satu tim olahraga anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Taktik Sepak Bola

Cara Cepat Mengatasi Wi-Fi Tidak Terdeteksi ("No Wi-Fi Adapter Found") di Linux

Assalamualaikum Wr. Wb.

Cara Cepat Mengatasi Wi-Fi Tidak Terdeteksi ("No Wi-Fi Adapter Found") di Linux | Solusi Driver Broadcom & Realtek Langsung Konek | Baru saja selesai melakukan instalasi Linux (Ubuntu, Linux Mint, Debian, atau Fedora) di laptop, tetapi saat masuk ke desktop menu Wi-Fi sama sekali tidak muncul dan di pojok kanan bawah tertulis "No Wi-Fi Adapter Found"? Masalah hilangnya koneksi nirkabel ini adalah problem paling umum yang dialami pemula. Hal ini terjadi karena sebagian besar laptop menggunakan kartu wireless proprietary (terutama chipset Broadcom BCM43xx atau Realtek RTL88xx) yang paket driver berlisensinya tidak disertakan secara default di dalam file ISO Linux resmi demi alasan lisensi open-source murni. Jangan buru-buru mengira kartu Wi-Fi laptop anda rusak, kali ini admin akan membagikan panduan mengaktifkan driver Wi-Fi yang dijamin work 100%.

1. Langkah 1: Cek Status Blokir Perangkat Radio (rfkill)

Terkadang tombol fisik airplane mode atau sistem manajemen daya memblokir kartu wireless secara software:

# 1. Cek status pemblokiran nirkabel:
rfkill list all

# 2. Jika muncul tulisan "Soft blocked: yes", buka blokir dengan:
sudo rfkill unblock all

Identifikasi nomor seri chipset Wi-Fi lewat PCI bus dan instalasi modul kernel driver

2. Langkah 2: Identifikasi Tipe Chipset Wi-Fi Anda

Buka terminal dan ketikkan perintah pelacak hardware berikut:

lspci -nnk | grep -i net -A3

Perhatikan baris Network controller: biasanya akan tertulis tipe seperti Broadcom Inc. and subsidiaries BCM43142 atau Realtek Semiconductor RTL8821CE.

3. Langkah 3: Pasang Driver Resmi via USB Tethering HP

Karena Wi-Fi laptop belum menyala, hubungkan smartphone Anda ke laptop menggunakan kabel data USB, lalu aktifkan fitur USB Tethering di pengaturan HP agar laptop mendapat koneksi internet sementara. Setelah terhubung internet, jalankan perintah instalasi driver sesuai chipset Anda:

# A. Khusus Chipset Broadcom (BCM43xx):
sudo apt update
sudo apt install bcmwl-kernel-source dkms -y
sudo modprobe wl

# B. Khusus Chipset Realtek (RTL8821CE / RTL8812BU):
sudo apt update
sudo apt install rtl8821ce-dkms -y
# Atau pasang via Additional Drivers (Driver Manager) di menu Start

Seketika ikon sinyal Wi-Fi akan muncul di taskbar panel laptop Anda dan siap digunakan untuk mencari jaringan hotspot di sekitar Anda.

Itulah solusi praktis mengatasi Wi-Fi yang tidak terdeteksi saat awal install Linux. Trik USB Tethering HP ini adalah penyelamat wajib yang selalu saya gunakan setiap kali melakukan setup instalasi Linux baru pada laptop-laptop lawas.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat yang baru beralih ke sistem operasi Linux.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Analisis Driver Hardware Linux

Tutorial AI Praktis Part 3: Trik Membuat Custom Model AI & Persona Khusus Menggunakan Modelfile di Ollam

Assalamualaikum Wr. Wb.

Tutorial AI Praktis Part 3: Trik Membuat Custom Model AI & Persona Khusus Menggunakan Modelfile di Ollama | Hasil Jawaban Lebih Presisi & Anti Bertele-tele | Sering merasa kesal karena AI default terlalu banyak basa-basi, memberi penjelasan yang terlalu panjang padahal kita cuma butuh potongan kodenya saja? Di Ollama, kita bisa menyetel ulang kepribadian, temperatur kreativitas, hingga instruksi sistem (*System Prompt*) secara permanen ke dalam sebuah file bernama Modelfile. Kali ini admin akan membagikan panduan meracik model AI kustom yang dijamin work 100%.

1. Mengenal Anatomi Modelfile

Sama seperti Dockerfile, Modelfile berisi serangkaian instruksi dasar untuk membungkus model dasar (*base model*):

  • FROM : Menentukan model pondasi yang digunakan (misal: llama3, mistral, atau deepseek-coder).
  • PARAMETER temperature : Mengatur tingkat kebebasan/kreativitas (nilai rendah seperti 0.1 – 0.3 membuat jawaban sangat konsisten, faktual, dan cocok untuk coding).
  • PARAMETER stop : Menentukan batas token kapan AI harus otomatis berhenti mengetik.
  • SYSTEM : Instruksi peran utama (*Persona*) yang tidak akan pernah dilupakan oleh AI sepanjang sesi percakapan.

2. Membuat File Konfigurasi Modelfile

Buat file baru bernama Modelfile (tanpa ekstensi) di folder kerja anda:

# 1. Tentukan base model
FROM llama3

# 2. Set parameter agar jawaban presisi dan hemat token
PARAMETER temperature 0.2
PARAMETER top_p 0.9

# 3. Definisikan persona asisten coding profesional
SYSTEM """
Anda adalah Senior Fullstack Software Engineer.
Aturan respon:
1. Berikan solusi kode yang bersih, efisien, dan modern.
2. Jangan menulis pengantar basa-basi seperti "Tentu, ini kodenya".
3. Berikan komentar ringkas langsung di dalam blok kode.
4. Gunakan bahasa Indonesia yang santai tapi profesional.
"""

Pembuatan model baru bernama dev-assistant dari Modelfile kustom di Ollama

3. Build dan Jalankan Model Kustom Anda

Buka terminal di direktori tempat file tersebut berada, lalu ketikkan perintah pembuatan model:

# 1. Compile model baru dari Modelfile:
ollama create dev-assistant -f ./Modelfile

# 2. Cek apakah model kustom sudah terdaftar:
ollama list

# 3. Jalankan asisten pribadi baru anda:
ollama run dev-assistant

Itulah tutorial praktis membuat custom model AI dengan Modelfile. Dengan menyetel instruksi sistem sejak awal, kita tidak perlu repot mengetikkan instruksi panjang berulang-ulang di setiap awal obrolan.

Sekian tutorial kali ini, silahkan share artikel ini jika anda rasa bermanfaat untuk teman atau sahabat anda.

Semoga Bermanfaat ^_^

Terima Kasih.

Wassalamualaikum Wr. Wb.

Sumber gambar: Koleksi Pribadi / Screenshot Terminal Praktik