<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog on Software Engineer and Product Manager</title>
    <link>https://indraoctama.com/blog/</link>
    <description>Recent content in Blog on Software Engineer and Product Manager</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Tue, 10 Jun 2025 15:43:44 +0700</lastBuildDate>
    <atom:link href="https://indraoctama.com/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Too Many Connection PHP ke Database Postgres</title>
      <link>https://indraoctama.com/too-many-connection-php-ke-database-postgres-20250610/</link>
      <pubDate>Tue, 10 Jun 2025 15:43:44 +0700</pubDate>
      <guid>https://indraoctama.com/too-many-connection-php-ke-database-postgres-20250610/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/indraoct/go-ocr/refs/heads/master/example/too-many-conn_small.png&#34; alt=&#34;Too Many Connection&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Skrip PHP, khususnya dengan Apache atau PHP-FPM, &lt;strong&gt;memulai proses baru per permintaan&lt;/strong&gt;, yang biasanya membuka koneksi DB baru.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Jika lalu lintas transaksi data melebihi kapasitas server database maka akan terjadi error &amp;ldquo;Too many connection&amp;rdquo; dan website biasannya akan&#xA;nge-hang.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Ilustrasi-nya sebagai berikut:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/indraoct/go-ocr/refs/heads/master/example/too-many.png&#34; alt=&#34;Too Many&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;apa-itu-pgbouncer&#34;&gt;Apa itu PgBouncer?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;PgBouncer&lt;/strong&gt; adalah alat connection pooler ringan untuk PostgreSQL yang sangat efektif dan sering digunakan, terutama dalam aplikasi PHP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JKT48 Dalam Go Concurrency</title>
      <link>https://indraoctama.com/jkt48-dalam-go-concurrency-20240720/</link>
      <pubDate>Sat, 20 Jul 2024 21:55:30 +0700</pubDate>
      <guid>https://indraoctama.com/jkt48-dalam-go-concurrency-20240720/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/indraoct/go-concurrency/main/files/magic_hour/magic_hour_0087.png&#34; alt=&#34;JKT48 Dalam Go Concurrency&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;prolog&#34;&gt;Prolog&lt;/h1&gt;&#xA;&lt;p&gt;Salah satu kekuatan dalam bahasa &lt;strong&gt;Go&lt;/strong&gt; adalah kehandalan dan kemudahan-nya dalam menangani banyak aktivitas dalam sekali jalannya suatu fungsi.&#xA;Lalu saya bertanya-tanya kapan sih saatnya menggunakan fasilitas &lt;em&gt;go-concurrency&lt;/em&gt; itu dalam kehidupan sehari-hari &lt;em&gt;ceilah :D&lt;/em&gt;.&#xA;Soalnya ya tutorial-tutorial yang saya baca selama ini pembahasannya terlalu berat, sebagai contoh ada yang bikin contoh data-data besar yang&#xA;rasa-rasanya terlalu formal untuk dibaca dengan rasa kantuk &lt;em&gt;hehe :D&lt;/em&gt;. Nah dari situlah tercetus ide gimana kalo bikin kasus yang ringan-ringan ajah.&#xA;Ya contohnya download foto member &lt;strong&gt;JKT-48&lt;/strong&gt; yang pastinya akan menarik hehe.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang Dependency Injection Untuk Pemula Part 1</title>
      <link>https://indraoctama.com/golang-dependency-injection-untuk-pemula-part-1-20240217/</link>
      <pubDate>Sat, 17 Feb 2024 16:00:12 +0700</pubDate>
      <guid>https://indraoctama.com/golang-dependency-injection-untuk-pemula-part-1-20240217/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://stackify.com/wp-content/uploads/2018/06/Design-Patterns-Explained-%E2%80%93-Dependency-Injection-with-Code-Examples-881x440-1.png&#34; alt=&#34;Golang Dependency Injection&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;pengantar&#34;&gt;Pengantar&lt;/h1&gt;&#xA;&lt;p&gt;Pengalaman saya sebagai software developer khususnya &lt;strong&gt;backend&lt;/strong&gt;, saya pernah di fase tidak memikirkan &lt;em&gt;code structure&lt;/em&gt; (&lt;em&gt;ambyarrr ndess&lt;/em&gt;).&#xA;Hal ini tentunya menyebabkan beberapa kekurangan paling tidak 2 point ini:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Code Readibillity&lt;/strong&gt;&lt;/em&gt; -&amp;gt; kesusahan untuk membaca flow bisnis dalam code&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/em&gt; -&amp;gt; potensi &lt;em&gt;&lt;strong&gt;memory leak&lt;/strong&gt;&lt;/em&gt; ketika initiate suatu koneksi ke tcp/ip berkali-kali.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Jika hal ini dibiarkan maka niscaya terciptalah sebuah coding serba ada nan &lt;em&gt;ndangkik-ndangkik&lt;/em&gt; dengan nama cukup familiar : &lt;strong&gt;sphageti code&lt;/strong&gt;.&#xA;Sedangkan harapannya adalah kebalikan dari kekurangan tersebut, tentunya ingin mudah dibaca, dan performance bagus.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang Docker Image Resize</title>
      <link>https://indraoctama.com/golang-docker-image-resize-20190727/</link>
      <pubDate>Sat, 27 Jul 2019 17:51:33 +0700</pubDate>
      <guid>https://indraoctama.com/golang-docker-image-resize-20190727/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://lh3.googleusercontent.com/X87duYDhvYYxPB4my89QdLDlhtDTHd6AGtk8NyaUgg1T-LP03ApAdNYlDelkz0vrxgu3elX39hBBinnv1s0DQjBh9yyK_isNreQ1qfrDPGdCdRMTrQhvAt9u73XinzP4dUFn9-6Wzpv4Wq1ot3GEA4HVCk73hOMhYSw4O7qkQX7Xv9gbYhY9cfqHgTWG4CsaSJ6BBfpFRFjsrGNAoLK2-vH2tzyWWByRDAGMsVukVGPD09Ypgu2-y7oIwCRphHbVKmZLmqfY23_NWTAiHzklRj67vYnzsPqrXUggqHaUbiPSvmDNpY-oI5zsQPlKJDeBR8o9Dj0H1xogcYd40ZEfPlkT-ifx1NiZmAVg3k8ghwvmpkCLIvgpowT2cyIiFFdCOmLOnKp5hobUxcwUIvXTZGF1ti2DUZQEFaOYc2CLTpfYrRvGOyG9Gl7nEoTAefprLY55TiYHimzE2qZ2gddI-vCNqaTIkS7FReS9lY84pJXwytZQjkLroHuswyAuudR8y-s7Lu6v6wLbBUiuRnEbaUqG2SRAGQHnNgcMjm19SZ18czqQ3d-mO01IVsYVXMns07Vzt-4PfuTVNl0CsrSblBKxAI4G6hhK_4BxAB11QcztGufP6MnkFA4o07e_fqeaJAD440mercSMdH0PYCt8Ae2G_wzeNMs=w1100-h619-no&#34; alt=&#34;Golang Docker Image Resize&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Golang dan docker adalah paduan yang ciamik ketika kita membuat aplikasi microservice yang berjalan di server / cloud.&#xA;Mengingat kembali artikel ini &lt;a href=&#34;https://indraoctama.com/docker-for-dummy-with-golang-mysql-20181213/&#34;&gt;Docker For Dummy&lt;/a&gt;.&#xA;Lalu muncul pertanyaan, mengapa file aplikasi yang hanya 8-an MB dikonversi ke docker menjadi 900-an MB?&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dockerinaja         latest              78de7207aa5a        3 minutes ago       952MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;golang              1.11.1              45e48f60e268        2 minutes ago       777MB&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pr</description>
    </item>
    <item>
      <title>Docker for Dummy With Golang &amp; MySQL</title>
      <link>https://indraoctama.com/docker-for-dummy-with-golang-mysql-20181213/</link>
      <pubDate>Thu, 13 Dec 2018 13:38:33 +0700</pubDate>
      <guid>https://indraoctama.com/docker-for-dummy-with-golang-mysql-20181213/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://lh3.googleusercontent.com/fvAGQxdVsOlGVvXkWyjgjQAwrOaoT1zrct_4FCj-9GD2QStUH3RVGWNGVh6EMIdcWZPHvsEluLTHlltDcVRdkh1eXNEJjZ3bq6YEuEc2McOrONkNsMpfAjB3VKTkZMiWsamFMKCXmjpPzeyUnX5vHkjiS5HwpZXjZZXMLMc-GsdXZjfABZbuXp_ZKO35GHZsadONLzFbBzgy3uMxS_P_reKFj-rqUvTf-_mrnwCklAz7a-kjDa7NskNceBd0AtliEZzZtNdEKIQFU_HT5jpGLRir8jQl6gclcyLG-dtGihyQbhzeIg7OmY8xyrO2LqnuRlozZbmT4fEPRL1uqTTV9G0ecO65NlGeL0LydjA-nzgmLJozXg12RwldyYfQjlIloMhgHR6mjZm2bGtHDipHqPbstTva24RBkURIIutoeUmYXCByO0wXMID4ja-QP1EVgVczjYTw5kKYmHb70kTQyw-gUV6pECjvYGWl0oFtUshkO2_mmLtYhfUj_-bLyR63OutRAhHUoP9HPc3diWCn9S0W13OjZsTydwGWHj20Tyev3W5xZkGYPBZAF8I-u3uyKZpK7Oq-hvJj4rUMe5p4lCjnoaMmHd-TaTV_QaVBLfcrOpFA9by-9eOwCf4w75mdVNHt2fDe0j-jE0z-UjMeCmwo=w533-h193-no?w=200&#34; alt=&#34;Docker_For_Dummy&#34;&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;say-hi&#34;&gt;Say Hi&amp;hellip;&lt;/h1&gt;&#xA;&lt;p&gt;Halo teman-teman, lama belom nulis karena sedang ada beberapa kesibukan dan harus belajar yang bener sebelum nulis hehe.&#xA;Pada kesempatan ini, saya akan membagikan pengalaman saya mengenai bagaiamana mengoperasikan docker secara sederhana melalui contoh aplikasi&#xA;Golang. Tentunya artikel ini bukan artikel yang ditujukan kepada &lt;em&gt;mastah-mastah&lt;/em&gt; yang sudah malang melintang di dunia &lt;strong&gt;&lt;em&gt;devops&lt;/em&gt;&lt;/strong&gt;. Saya menulis artikel ini&#xA;dalam perspektif supaya saya yang seorang &lt;strong&gt;&lt;em&gt;developer&lt;/em&gt;&lt;/strong&gt; sedikit tahu apa yang dilakukan teman-teman devops supaya ketika bekerjasama nantinya&#xA;akan mendapatkan hasil yang efektif.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang for Beginner Part 2.0: Unit Testing</title>
      <link>https://indraoctama.com/golang-for-beginner-part-2.0-unit-testing-20180630/</link>
      <pubDate>Sat, 30 Jun 2018 17:34:41 +0700</pubDate>
      <guid>https://indraoctama.com/golang-for-beginner-part-2.0-unit-testing-20180630/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://lh3.googleusercontent.com/sk3N8UdXdZJuOeVII_OBd3vUhJg0bjWoncxu5sCuhoAO2aL114sxqjfVIJJfo82RD0kn7K76LBbT_UkyTFyte3t3C-sjR-JAjJ1HQc5Rfy56B2olHUf7KEC7OF-iPsV5ysTObyzxWg=w200&#34; alt=&#34;Unit_Testing&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tidak mudah untuk membuat sebuah sistem software yang handal dan mempertahankannya dalam waktu yang lama. Salah satu cara&#xA;untuk mengetahui bahwa &lt;em&gt;code&lt;/em&gt; yang sudah kita buat apakah sesuai dengan ekspektasi flow bisnis dan &lt;em&gt;performance&lt;/em&gt; adalah melakukan&#xA;&lt;strong&gt;Unit Testing&lt;/strong&gt;. Unit testing adalah salah satu jenis proses otomatisasi test aplikasi software dengan scope yang paling kecil&#xA;yang bisa di test. Disebut unit karena secara individual dan mandiri (tidak tergantung dengan flow proses yang lain) dapat&#xA;di test sehingga dapat memastikan apakah outputnya sudah sesuai dengan ekspektasi kita.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang for Beginner Part 1.2: Print Data as JSON API</title>
      <link>https://indraoctama.com/golang-for-beginner-part-1.2-print-data-as-json-api-20180609/</link>
      <pubDate>Sat, 09 Jun 2018 23:43:00 +0700</pubDate>
      <guid>https://indraoctama.com/golang-for-beginner-part-1.2-print-data-as-json-api-20180609/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://d2yal1mtmg1ts6.cloudfront.net/Rjj4ZjN3MZMBhh6bQFDeNg-_SgSPHq2-IVHaY_uEvOHKmOhRNmphIQTdgmf0aNdgZV_4=w100&#34; alt=&#34;Rest_API&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Hari ini kita akan belajar mengenai print data DB MySQL ke dalam bentuk web JSON API. Anda bisa fork full codenya disini :&#xA;&lt;a href=&#34;https://github.com/indraoct/go-for-beginner/blob/master/part1/WebAPI.v1.0.go&#34;&gt;Full Code&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mengingat kembali postingan sebelumnya mengenai print data row dari mysql yakni &lt;a href=&#34;https://indraoctama.com/golang-for-beginner-part-1-print-data-from-db-mysql-20180607/&#34;&gt;Print Data From DB MySQL&lt;/a&gt;.&#xA;Kita akan sedikit memodifikasi fungsi-fungsi sebelumnya yakni dengan menambahkan komponen-komponen&#xA;seperti :&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Gorilla Mux &amp;ndash;&amp;gt; library 3rd party digunakan untuk routing web&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;json/encoding&amp;rdquo; &amp;ndash;&amp;gt; library go untuk mengakomodasi fungsi-fungsi membaca dan menulis data ke dalam bentuk JSON&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;net/http&amp;rdquo; &amp;ndash;&amp;gt; library go untuk keperluan fungsi http seperti GET, POST, PUT, dsb.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Bisa anda lihat pada baris kode berikut :&#xA;&lt;script src=&#34;https://gist.github.com/indraoct/b76f24e3291173151d847823cf0bd6b9.js&#34;&gt;&lt;/script&gt;&#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang for Beginner Part 1: Print Data From DB MySQL</title>
      <link>https://indraoctama.com/golang-for-beginner-part-1-print-data-from-db-mysql-20180607/</link>
      <pubDate>Thu, 07 Jun 2018 21:13:35 +0700</pubDate>
      <guid>https://indraoctama.com/golang-for-beginner-part-1-print-data-from-db-mysql-20180607/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://indraoctama.com/img/golang_part_1/golang_logo.png&#34; alt=&#34;Golang_logo&#34;&gt;&#xA;Hari ini kita akan belajar bagaimana menulis data row yang ada di database mysql dengan cara koding dengan bahasa Go.&#xA;Pertama-tama silahkan unduh dump mysql disini :&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/indraoct/go-for-beginner/blob/master/goforbeginner.sql&#34;&gt;goforbeginner.sql&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Buatlah database bernama &lt;strong&gt;&amp;ldquo;goforbeginner&amp;rdquo;&lt;/strong&gt;, lalu import file goforbeginner.sql tersebut ke db &lt;strong&gt;&amp;ldquo;goforbeginner&amp;rdquo;&lt;/strong&gt; tersebut. Jika sudah&#xA;maka strukturnya akan seperti ini :&#xA;&lt;img src=&#34;https://indraoctama.com/img/golang_part_1/db_structure.png&#34; alt=&#34;db_structure&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Kita akan fokuskan kepada table &lt;strong&gt;products&lt;/strong&gt; dengan data yang sudah tersedia sebagai berikut :&#xA;&lt;img src=&#34;https://indraoctama.com/img/golang_part_1/table_products.png&#34; alt=&#34;table_products&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>My First Post</title>
      <link>https://indraoctama.com/my-first-post-20180605/</link>
      <pubDate>Tue, 05 Jun 2018 16:56:56 +0700</pubDate>
      <guid>https://indraoctama.com/my-first-post-20180605/</guid>
      <description>&lt;p&gt;Hai ini tulisan pertamaku di firebase&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
