<?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: zidanpahrudin_</title>
    <description>The latest articles on DEV Community by zidanpahrudin_ (@zidanpahrudin).</description>
    <link>https://dev.to/zidanpahrudin</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%2F532046%2Fd1fe2b05-bf45-4569-a2d9-5a2163f1e3df.jpg</url>
      <title>DEV Community: zidanpahrudin_</title>
      <link>https://dev.to/zidanpahrudin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zidanpahrudin"/>
    <language>en</language>
    <item>
      <title>Building Core Loops in UI/UX: Turning Actions into Habits</title>
      <dc:creator>zidanpahrudin_</dc:creator>
      <pubDate>Tue, 12 Aug 2025 08:41:45 +0000</pubDate>
      <link>https://dev.to/zidanpahrudin/building-core-loops-in-uiux-turning-actions-into-habits-320f</link>
      <guid>https://dev.to/zidanpahrudin/building-core-loops-in-uiux-turning-actions-into-habits-320f</guid>
      <description>&lt;p&gt;A &lt;strong&gt;core loop&lt;/strong&gt; is a repeated pattern in a system that keeps users coming back — not because they are forced to, but because they &lt;em&gt;want&lt;/em&gt; to.&lt;br&gt;
This concept is popular in game design but is also highly relevant for web and mobile applications.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🔄 The Structure of a Core Loop&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Trigger&lt;/strong&gt; – Something that prompts the user to act (notification, need, curiosity).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action&lt;/strong&gt; – A specific action taken by the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reward&lt;/strong&gt; – An immediate and satisfying outcome.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investment/Progress&lt;/strong&gt; – Value that grows over time with continued use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat Trigger&lt;/strong&gt; – A follow-up prompt that encourages repeating the cycle.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;💡 Why It Matters&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A well-designed core loop builds &lt;strong&gt;habits&lt;/strong&gt;.&lt;br&gt;
The more often users interact, the more value they accumulate in the system, increasing the &lt;em&gt;switching cost&lt;/em&gt; and making it harder for them to leave.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;📍 Case Study: Web CRM Application&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trigger:&lt;/strong&gt; A notification says, &lt;em&gt;“You have 5 leads waiting for follow-up today.”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action:&lt;/strong&gt; The user contacts the leads through the CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reward:&lt;/strong&gt; The lead’s status changes to “Qualified,” and the chance of closing the deal increases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investment:&lt;/strong&gt; The CRM stores interaction history and communication logs, making sales analytics more accurate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeat Trigger:&lt;/strong&gt; A weekly pipeline progress report encourages the user to return for more follow-ups.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;🎯 Tips for Building Effective Core Loops&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Variety &amp;amp; escalation:&lt;/strong&gt; Identical loops can get boring — increase challenge or reward over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nested loops:&lt;/strong&gt; Combine small loops (instant rewards) with larger loops (long-term progress).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loss aversion:&lt;/strong&gt; Make users feel they are losing something if they stop engaging.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💬 &lt;em&gt;Think beyond single clicks — design for long-term engagement.&lt;/em&gt;&lt;br&gt;
A core loop is not just about interaction — it’s about &lt;strong&gt;building a relationship between the user and the product&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>uiux</category>
      <category>productdesign</category>
      <category>gamification</category>
      <category>webdev</category>
    </item>
    <item>
      <title>ProjekHarusJadi — Hari 2: Merakit UI Kit di Figma</title>
      <dc:creator>zidanpahrudin_</dc:creator>
      <pubDate>Mon, 11 Aug 2025 11:01:11 +0000</pubDate>
      <link>https://dev.to/zidanpahrudin/projekharusjadi-hari-2-merakit-ui-kit-di-figma-4d58</link>
      <guid>https://dev.to/zidanpahrudin/projekharusjadi-hari-2-merakit-ui-kit-di-figma-4d58</guid>
      <description>&lt;p&gt;Hari ini adalah &lt;strong&gt;HARI KEDUAA DARI SEKIAN HARI YANG TERLEWAT HAHAHAA&lt;/strong&gt; perjalanan membuat CRM untuk target &lt;strong&gt;startup&lt;/strong&gt; dan &lt;strong&gt;UMKM&lt;/strong&gt;, yang akan hadir dalam bentuk &lt;strong&gt;responsive web&lt;/strong&gt; (desktop &amp;amp; mobile). Setelah kemarin fokus inisiasi dan moodboard, hari ini aku masuk ke tahap &lt;strong&gt;UI Kit&lt;/strong&gt; — pondasi visual yang akan dipakai di seluruh desain.&lt;/p&gt;

&lt;p&gt;Kenapa UI Kit penting?&lt;br&gt;
Karena UI Kit itu semacam &lt;em&gt;“peralatan dapur”&lt;/em&gt; kita. Sebelum masak, kita siapin bumbu dasar dulu. Kalau sudah siap, nanti semua masakan (baca: halaman web) akan punya rasa yang konsisten.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎯 Fokus Belajar Hari Ini
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Typography&lt;/strong&gt; — memilih font utama dan pendukung&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Color Styles&lt;/strong&gt; — menentukan palet warna utama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buttons&lt;/strong&gt; — membuat gaya tombol yang konsisten&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Form Inputs&lt;/strong&gt; — menyiapkan gaya input form&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto Layout &amp;amp; Component&lt;/strong&gt; di Figma — supaya desain fleksibel dan mudah diatur&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1️⃣ Typography — Maksimal Tiga Font Saja
&lt;/h2&gt;

&lt;p&gt;Aku memutuskan untuk memakai &lt;strong&gt;dua font utama&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Noto Sans Javanese&lt;/strong&gt; → &lt;em&gt;primary font&lt;/em&gt;, tegas tapi ramah, cocok untuk heading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work Sans&lt;/strong&gt; → &lt;em&gt;secondary font&lt;/em&gt;, simpel dan nyaman dibaca untuk body text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kenapa cuma dua?&lt;br&gt;
Menurut prinsip desain, terlalu banyak font akan membuat pengguna &lt;strong&gt;bingung&lt;/strong&gt; dan menciptakan kesan desain &lt;strong&gt;tidak konsisten&lt;/strong&gt;. Banyak panduan profesional menyarankan &lt;strong&gt;maksimal tiga font&lt;/strong&gt; dalam satu desain—termasuk font di logo—untuk menjaga keterbacaan dan keselarasan visual (&lt;a href="https://uxplanet.org/principles-of-typography-in-ui-design-bc28f1f9666d" rel="noopener noreferrer"&gt;UX Planet&lt;/a&gt;, &lt;a href="https://ux.stackexchange.com/questions/1753/number-of-fonts-per-design" rel="noopener noreferrer"&gt;UX StackExchange&lt;/a&gt;).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🎓 &lt;em&gt;Tips&lt;/em&gt;: Kalau ingin variasi, gunakan &lt;strong&gt;berat font (font-weight)&lt;/strong&gt; yang berbeda, bukan ganti font-nya.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2️⃣ Color Styles — Satu Rasa, Bukan Satu Warna
&lt;/h2&gt;

&lt;p&gt;Untuk palet warna, aku ingin &lt;strong&gt;harmonis dan “satu rasa”&lt;/strong&gt;, supaya antarmuka nyaman dilihat dan tidak melelahkan mata.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary&lt;/strong&gt;: Biru (#1B4CD3) → warna utama, untuk aksi penting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secondary&lt;/strong&gt;: Hijau (#7ECB93) → penunjang, memberi aksen segar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Danger&lt;/strong&gt;: Merah (#EA3838) → khusus peringatan atau aksi destruktif&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neutral&lt;/strong&gt;: Putih (#F4F6FA) &amp;amp; Hitam (#22262B) → dasar dan teks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Menurut teori &lt;strong&gt;Color Harmony&lt;/strong&gt;, warna yang selaras membuat desain tampak seimbang dan profesional (&lt;a href="https://www.interaction-design.org/literature/topics/color-harmony" rel="noopener noreferrer"&gt;Interaction Design Foundation&lt;/a&gt;, &lt;a href="https://careerfoundry.com/en/blog/ui-design/introduction-to-color-theory-and-color-palettes/" rel="noopener noreferrer"&gt;CareerFoundry&lt;/a&gt;).&lt;br&gt;
Desainer juga sering membatasi palet menjadi &lt;strong&gt;±5 warna utama&lt;/strong&gt; agar mudah dikelola dan tetap rapi (&lt;a href="https://graphicdesign.stackexchange.com/questions/20435/working-with-color-palettes" rel="noopener noreferrer"&gt;GraphicDesign.SE&lt;/a&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ Buttons &amp;amp; Form Inputs — Komponen Seragam
&lt;/h2&gt;

&lt;p&gt;Di UI Kit ini, aku membuat:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tombol Primary&lt;/strong&gt; (aksi utama), Secondary, dan Danger&lt;/li&gt;
&lt;li&gt;Variasi tombol dengan warna netral (putih, hitam)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Form Inputs&lt;/strong&gt; untuk normal state, focus state, dan error state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kenapa dibuat dari awal?&lt;br&gt;
Supaya nanti &lt;strong&gt;setiap tombol &amp;amp; input&lt;/strong&gt; di seluruh halaman terlihat seragam, tanpa harus mendesain ulang dari nol.&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ Auto Layout &amp;amp; Component di Figma
&lt;/h2&gt;

&lt;p&gt;Hari ini aku juga belajar (dan langsung praktik) fitur &lt;strong&gt;Auto Layout&lt;/strong&gt; di Figma.&lt;br&gt;
Manfaatnya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Elemen otomatis menyesuaikan ukuran ketika teks berubah&lt;/li&gt;
&lt;li&gt;Spacing antar elemen konsisten tanpa hitung manual&lt;/li&gt;
&lt;li&gt;Perubahan di satu &lt;strong&gt;component&lt;/strong&gt; akan otomatis update di semua instance&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;🎓 &lt;em&gt;Tips&lt;/em&gt;: Biasakan membuat semua tombol, card, dan form sebagai &lt;strong&gt;component&lt;/strong&gt; sejak awal. Ini akan menghemat waktu luar biasa saat revisi.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📸 Screenshot UI Kit Hari Ini
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3l7cn11gruk6y7evgv6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb3l7cn11gruk6y7evgv6.png" alt=" " width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  📝 Insight Hari Ini
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Font maksimal tiga jenis&lt;/strong&gt; → lebih dari itu, visual jadi tidak fokus&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Palet warna terbatas&lt;/strong&gt; → lebih terkontrol, harmonis, dan nyaman dilihat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Komponen seragam&lt;/strong&gt; → membuat pengalaman pengguna lebih konsisten&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto Layout &amp;amp; Component&lt;/strong&gt; → kunci desain yang scalable di Figma&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>design</category>
    </item>
    <item>
      <title>📂 Understanding `.htaccess` — The Gatekeeper of Your Apache Website</title>
      <dc:creator>zidanpahrudin_</dc:creator>
      <pubDate>Mon, 11 Aug 2025 10:27:51 +0000</pubDate>
      <link>https://dev.to/zidanpahrudin/understanding-htaccess-the-gatekeeper-of-your-apache-website-1acj</link>
      <guid>https://dev.to/zidanpahrudin/understanding-htaccess-the-gatekeeper-of-your-apache-website-1acj</guid>
      <description>&lt;p&gt;&lt;code&gt;.htaccess&lt;/code&gt; may be small in size, but it plays a huge role.&lt;br&gt;&lt;br&gt;
For an &lt;strong&gt;Apache&lt;/strong&gt; web server, this file is the &lt;strong&gt;control gate&lt;/strong&gt; — deciding who can enter, what can be accessed, and how your site responds to requests.&lt;/p&gt;

&lt;p&gt;Think of &lt;code&gt;.htaccess&lt;/code&gt; as the &lt;strong&gt;bouncer at an exclusive club&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They can &lt;strong&gt;reject unwanted guests&lt;/strong&gt; (block IPs).&lt;/li&gt;
&lt;li&gt;They can &lt;strong&gt;control the queue&lt;/strong&gt; (redirect &amp;amp; rewrite URLs).&lt;/li&gt;
&lt;li&gt;They can &lt;strong&gt;ban cameras&lt;/strong&gt; (block access to sensitive files).&lt;/li&gt;
&lt;li&gt;They can even &lt;strong&gt;set the room’s vibe&lt;/strong&gt; (disable caching).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ignore it, and your club’s doors stay wide open for anyone — including those with bad intentions.&lt;br&gt;&lt;br&gt;
That’s why &lt;code&gt;.htaccess&lt;/code&gt; should be every developer’s best friend.&lt;/p&gt;


&lt;h2&gt;
  
  
  📌 Global vs Local &lt;code&gt;.htaccess&lt;/code&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global&lt;/strong&gt; → Applies to the entire server, usually set in Apache’s main configuration file (&lt;code&gt;httpd.conf&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local&lt;/strong&gt; → Applies only to the directory where the &lt;code&gt;.htaccess&lt;/code&gt; file is placed.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Local &lt;code&gt;.htaccess&lt;/code&gt; is perfect if you don’t have root access to the server but still want to control your site’s behavior.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  1️⃣ Prevent Browser Caching
&lt;/h2&gt;

&lt;p&gt;Ever updated an HTML/CSS/JS file, but the browser still shows the old version?&lt;br&gt;&lt;br&gt;
The fix: force the browser &lt;strong&gt;not to store cache&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;IfModule&lt;/span&gt;&lt;span class="sr"&gt; mod_headers.c&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="nc"&gt;Header&lt;/span&gt; &lt;span class="ss"&gt;set&lt;/span&gt; Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
  &lt;span class="nc"&gt;Header&lt;/span&gt; &lt;span class="ss"&gt;set&lt;/span&gt; Pragma "no-cache"
  &lt;span class="nc"&gt;Header&lt;/span&gt; &lt;span class="ss"&gt;set&lt;/span&gt; Expires 0
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;IfModule&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Caching is great for performance, but terrible when debugging or updating visuals.&lt;/li&gt;
&lt;li&gt;This ensures every refresh loads the latest version.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Quick breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cache-Control&lt;/strong&gt; → Stops caching completely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pragma&lt;/strong&gt; → Old-school support for legacy browsers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expires&lt;/strong&gt; → Marks files as instantly expired.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2️⃣ Redirect Pages (URL Redirection)
&lt;/h2&gt;

&lt;p&gt;Redirecting old URLs to new ones is crucial for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoiding broken links.&lt;/li&gt;
&lt;li&gt;Preserving SEO when moving pages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: Redirect &lt;code&gt;/about.html&lt;/code&gt; to your homepage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;Redirect&lt;/span&gt; 301 /learn_htaccess/about.html http://localhost/learn_htaccess/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SEO Tip:&lt;/strong&gt; Use &lt;code&gt;301&lt;/code&gt; for permanent redirects, &lt;code&gt;302&lt;/code&gt; for temporary ones.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  3️⃣ URL Rewriting (Clean URLs)
&lt;/h2&gt;

&lt;p&gt;Make URLs clean and easy to remember.&lt;br&gt;&lt;br&gt;
Example: &lt;code&gt;index.php?id=12&lt;/code&gt; → &lt;code&gt;/12&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;
&lt;span class="nc"&gt;RewriteRule&lt;/span&gt; ^([0-9]+)$ index.php?id=$1 [L]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this is cool:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More user-friendly.&lt;/li&gt;
&lt;li&gt;SEO-friendly (Google loves clean URLs).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4️⃣ Remove &lt;code&gt;.html&lt;/code&gt; or &lt;code&gt;.php&lt;/code&gt; Extensions
&lt;/h2&gt;

&lt;p&gt;Keep URLs clean: &lt;code&gt;/index.html&lt;/code&gt; becomes simply &lt;code&gt;/index&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;
&lt;span class="nc"&gt;RewriteCond&lt;/span&gt; %{REQUEST_FILENAME} !-d
&lt;span class="nc"&gt;RewriteCond&lt;/span&gt; %{REQUEST_FILENAME}\.html -f
&lt;span class="nc"&gt;RewriteRule&lt;/span&gt; ^([^\.]+)$ $1.html [L]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Can also be adapted for &lt;code&gt;.php&lt;/code&gt; or &lt;code&gt;.asp&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  5️⃣ Custom Error Pages
&lt;/h2&gt;

&lt;p&gt;Make errors more user-friendly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;404&lt;/strong&gt; → Page not found&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;403&lt;/strong&gt; → Access forbidden&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;500&lt;/strong&gt; → Internal server error
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;
&lt;span class="nc"&gt;ErrorDocument&lt;/span&gt; 404 /learn_htaccess/notfound.html
&lt;span class="nc"&gt;ErrorDocument&lt;/span&gt; 403 /learn_htaccess/forbidden.html
&lt;span class="nc"&gt;ErrorDocument&lt;/span&gt; 500 /learn_htaccess/error500.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Bonus:&lt;/strong&gt; Create error pages that are informative and even interactive.&lt;/p&gt;




&lt;h2&gt;
  
  
  6️⃣ Block Access to Sensitive Files
&lt;/h2&gt;

&lt;p&gt;Don’t let anyone peek into crucial files like &lt;code&gt;.env&lt;/code&gt; or &lt;code&gt;config.php&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;FilesMatch&lt;/span&gt;&lt;span class="sr"&gt; "^(config\.php|\.env)$"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="nc"&gt;Order&lt;/span&gt; allow,deny
    &lt;span class="nc"&gt;Deny&lt;/span&gt; &lt;span class="ss"&gt;from&lt;/span&gt; &lt;span class="ss"&gt;all&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;FilesMatch&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  7️⃣ Force HTTPS (Redirect HTTP → HTTPS)
&lt;/h2&gt;

&lt;p&gt;Security is non-negotiable. Force all traffic over HTTPS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;
&lt;span class="nc"&gt;RewriteCond&lt;/span&gt; %{HTTPS} &lt;span class="ss"&gt;off&lt;/span&gt;
&lt;span class="nc"&gt;RewriteRule&lt;/span&gt; ^(.*)$ https://%{HTTP_HOST}/learn_htaccess/$1 [L,R=301]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Make sure SSL is installed before enabling this, or your site will go down.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  8️⃣ Block Specific IP Addresses
&lt;/h2&gt;

&lt;p&gt;Kick out unwanted guests based on IP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;Order&lt;/span&gt; Deny,Allow
&lt;span class="nc"&gt;Deny&lt;/span&gt; &lt;span class="ss"&gt;from&lt;/span&gt; 123.45.67.89
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;You can also block entire countries using IP ranges.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  9️⃣ Disable Directory Listing
&lt;/h2&gt;

&lt;p&gt;Prevent visitors from viewing folder contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;Options&lt;/span&gt; -Indexes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  📚 References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://httpd.apache.org/docs/current/howto/htaccess.html" rel="noopener noreferrer"&gt;Apache .htaccess Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/phanan/htaccess" rel="noopener noreferrer"&gt;Awesome .htaccess by Phanan&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;💡 &lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;.htaccess&lt;/code&gt; is more than just a tiny config file — it’s your Apache site’s &lt;strong&gt;security gate&lt;/strong&gt; and &lt;strong&gt;traffic manager&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Use it wisely: the wrong rules can take your site down, but the right ones can make it &lt;strong&gt;safer, faster, and more professional&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>apache</category>
      <category>htaccess</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>## 🧩 #ProjekHarusJadi — Hari 1: Inisiasi &amp; Struktur Desain di Figma</title>
      <dc:creator>zidanpahrudin_</dc:creator>
      <pubDate>Tue, 22 Jul 2025 13:01:15 +0000</pubDate>
      <link>https://dev.to/zidanpahrudin/-projekharusjadi-hari-1-inisiasi-struktur-desain-di-figma-e2h</link>
      <guid>https://dev.to/zidanpahrudin/-projekharusjadi-hari-1-inisiasi-struktur-desain-di-figma-e2h</guid>
      <description>&lt;p&gt;Halo semuanya!&lt;br&gt;
Hari ini gue mulai perjalanan bikin proyek UI/UX pribadi yang udah lama banget tertunda — dan gue kasih nama series ini: &lt;strong&gt;#ProjekHarusJadi&lt;/strong&gt; 💪&lt;/p&gt;

&lt;p&gt;Kenapa?&lt;br&gt;
Karena banyak dari kita (termasuk gue) sering nunda-nunda ide, padahal ide itu gak bakal jadi apa-apa kalau gak dikerjain.&lt;br&gt;
Jadi kali ini, &lt;strong&gt;harus jadi titik awalnya.&lt;/strong&gt; 🎯&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 Apa Proyeknya?
&lt;/h3&gt;

&lt;p&gt;Gue lagi bikin desain &lt;strong&gt;CRM Web App&lt;/strong&gt; yang nantinya ditargetkan buat:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Startup kecil&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;UMKM&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Freelancer / perorangan&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Desainnya akan &lt;strong&gt;responsive&lt;/strong&gt; (bisa dipakai di desktop &amp;amp; mobile) dan fokus pada kebutuhan dasar CRM: kelola pelanggan, leads, aktivitas, dan user.&lt;/p&gt;




&lt;h3&gt;
  
  
  🧭 Apa yang Gue Lakuin Hari Ini?
&lt;/h3&gt;

&lt;p&gt;Hari ini fokus gue adalah &lt;strong&gt;inisiasi proyek &amp;amp; struktur desain di Figma&lt;/strong&gt;.&lt;br&gt;
Gue gak langsung desain halaman, tapi belajar dulu gimana nyusun fondasi desain biar terarah dan konsisten.&lt;br&gt;
Berikut beberapa hal penting yang gue pelajari dan kerjain:&lt;/p&gt;




&lt;h2&gt;
  
  
  📐 Struktur Halaman Figma
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 🎨 &lt;strong&gt;Moodboard&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Moodboard adalah tempat referensi visual.&lt;br&gt;
Isinya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Palet warna yang bakal dipakai&lt;/li&gt;
&lt;li&gt;Font yang cocok dengan tone desain&lt;/li&gt;
&lt;li&gt;Screenshot inspirasi dari desain lain&lt;/li&gt;
&lt;li&gt;Style icon, ilustrasi, dan tone visual keseluruhan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Intinya: &lt;strong&gt;moodboard nunjukkin kira-kira "rasa" dari desain kita nanti.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. 🧱 &lt;strong&gt;UI Kit&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ini adalah "kumpulan komponen dasar" dari desain yang bakal dipakai di semua halaman.&lt;/p&gt;

&lt;p&gt;Isinya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Typography styles (heading, body, caption, dsb)&lt;/li&gt;
&lt;li&gt;Warna (primary, background, text, dsb)&lt;/li&gt;
&lt;li&gt;Komponen UI: button, input, card, navbar, dsb&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tujuannya? Biar desain &lt;strong&gt;konsisten dan efisien&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. 🧾 &lt;strong&gt;Wireframe&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Wireframe dibagi 2 jenis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low Fidelity&lt;/strong&gt;: Sketsa kasar layout, pakai warna abu-abu, tanpa style.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Fidelity&lt;/strong&gt;: Sketsa yang udah dikasih warna, font, dan style visual.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wireframe penting untuk fokus ke struktur konten sebelum mikirin estetika.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. 📱 &lt;strong&gt;Final Screen&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Ini versi &lt;strong&gt;desain full&lt;/strong&gt; yang siap ditunjukkan ke stakeholder atau developer.&lt;br&gt;
Udah pakai semua elemen dari UI Kit + layout final.&lt;/p&gt;

&lt;p&gt;Biasanya gue pisahkan untuk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web screen&lt;/li&gt;
&lt;li&gt;Mobile screen&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. 🎯 &lt;strong&gt;Prototype&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Tahap ini bikin desain kita bisa diklik dan diuji alurnya.&lt;br&gt;
Fitur utamanya:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simulasi interaksi antar halaman (klik, transisi)&lt;/li&gt;
&lt;li&gt;Cek user flow &amp;amp; experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ✍️ Catatan Akhir Hari Ini
&lt;/h3&gt;

&lt;p&gt;Hari ini walaupun belum mulai desain UI-nya, &lt;strong&gt;gue belajar banyak soal struktur dan pondasi&lt;/strong&gt; desain di Figma.&lt;br&gt;
Dengan pondasi yang kuat, desain ke depannya bakal jauh lebih rapi dan scalable. Gak asal "bagus", tapi &lt;strong&gt;fungsional dan konsisten.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;Kalau kamu juga lagi nunda-nunda bikin portofolio atau side project,&lt;br&gt;
&lt;strong&gt;yuk bareng-bareng mulai dari sekarang!&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Projek gak harus sempurna di awal, tapi harus mulai dulu.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sampai jumpa di log berikutnya!&lt;/p&gt;




</description>
      <category>fig</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Everything what I love about NodeJS ecosystem.</title>
      <dc:creator>zidanpahrudin_</dc:creator>
      <pubDate>Thu, 11 Jan 2024 01:23:05 +0000</pubDate>
      <link>https://dev.to/zidanpahrudin/everything-what-i-love-about-nodejs-ecosystem-50c8</link>
      <guid>https://dev.to/zidanpahrudin/everything-what-i-love-about-nodejs-ecosystem-50c8</guid>
      <description>&lt;p&gt;It's been three years since I've been working with Node.js for backend development. Over this time, I've developed a bit of a love-hate relationship with it.&lt;/p&gt;

&lt;p&gt;Here list my oppinion about NodeJS : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A to Z package&lt;br&gt;
With its massive community support, you can get everything you want through NPM, which stands for Node Package Manager or other package managers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simplicity&lt;br&gt;
We adore JavaScript for its straightforward syntax. Node.js acts as a bridge between the JavaScript language and C++, facilitating communication. Thus, all Node.js syntax is essentially JavaScript.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;"The greatest ideas are the simplest." – William Golding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Write once, build anything&lt;br&gt;
Absolutely, Node.js is versatile—it allows you to construct anything: frontend, backend, IoT, AI, and more. Nonetheless, every programming language has its strengths and weaknesses, and Node.js is no exception. While it's highly capable, it might not be the perfect solution for every task. So, it's wise to choose thoughtfully when employing it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fast development&lt;br&gt;
Yes, Node.js indeed speeds up development thanks to its efficient runtime environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Huge demand in the job market&lt;br&gt;
In my country, Node.js holds substantial demand in the job market. If you're contemplating learning programming, consider the job market demands in your area.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The list I've compiled is based on my experiences. You might agree or disagree with my opinions. Thank you for your attention!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feslqcx7yc11fypr44dv7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feslqcx7yc11fypr44dv7.gif" alt="thankyou all" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
