<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[UlarKadut's Blog]]></title><description><![CDATA[UlarKadut's Blog]]></description><link>https://blog.ularkadut.net</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 12:00:58 GMT</lastBuildDate><atom:link href="https://blog.ularkadut.net/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Konfigurasi Fail2ban]]></title><description><![CDATA[Ada beragam cara untuk memberikan perlindungan terhadap server yang kita gunakan, salah satu yang paling mudah untuk dikonfigurasi adalah Fail2ban. Dengan Fail2ban maka kita dapat melakukan blacklist terhadap ip dari pihak asing yang mencoba melakuka...]]></description><link>https://blog.ularkadut.net/konfigurasi-fail2ban</link><guid isPermaLink="true">https://blog.ularkadut.net/konfigurasi-fail2ban</guid><category><![CDATA[Security]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Fri, 10 Mar 2023 14:59:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/mT7lXZPjk7U/upload/dd907d6cb502265f24f392603a977f28.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ada beragam cara untuk memberikan perlindungan terhadap <em>server</em> yang kita gunakan, salah satu yang paling mudah untuk dikonfigurasi adalah <strong>Fail2ban</strong>. Dengan <strong>Fail2ban</strong> maka kita dapat melakukan <em>blacklist</em> terhadap ip dari pihak asing yang mencoba melakukan penetrasi ke dalam <em>server</em> yang kita miliki.</p>
<p>Berikut adalah beberapa langkah instalasi dan konfigurasi dari <strong>Fail2ban</strong>:</p>
<pre><code class="lang-powershell"># yum install epel-release (Centos, Rocky Linux, Almalinux)
# yum install fail2ban (Centos, Rocky Linux, Almalinux)
==========
# apt install fail2ban (Debian, Ubuntu)
==========
# systemctl enable fail2ban
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
==========
# nano /etc/fail2ban/jail.local (Konfigurasi jail.local)

ignoreip = 127.0.0.1/8 ::1
bantime  = 10d

[sshd] (Tambahkan konfigurasi di bawah ini)
enabled = true
maxretry = 5
action = iptables[name=SSH, port=22, protocol=tcp]

==========
# systemctl restart fail2ban
==========
# fail2ban-client status sshd (Untuk melihat status blacklist)
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Kenapa Streamlit ?]]></title><description><![CDATA[Streamlit adalah tools yang membuat kita membuat aplikasi web yang interaktif dengan analisa data, model machine learning, dan lainnya dengan cepat dan mudah.
Hal baik tentang Streamlit adalah tidak memerlukan pengetahuan dalam hal pengembangan web s...]]></description><link>https://blog.ularkadut.net/kenapa-streamlit</link><guid isPermaLink="true">https://blog.ularkadut.net/kenapa-streamlit</guid><category><![CDATA[Python]]></category><category><![CDATA[streamlit]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sun, 08 Jan 2023 15:22:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/vZJdYl5JVXY/upload/613df9a11d6640a6e7f8c71bda7e4e73.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a target="_blank" href="https://streamlit.io">Streamlit</a> adalah <em>tools</em> yang membuat kita membuat aplikasi web yang interaktif dengan analisa data, model <em>machine learning</em>, dan lainnya dengan cepat dan mudah.</p>
<p>Hal baik tentang <a target="_blank" href="https://streamlit.io">Streamlit</a> adalah tidak memerlukan pengetahuan dalam hal pengembangan web seperti <strong>HTML</strong>, <strong>CSS</strong> maupun <strong>JavaScript</strong>. Jika kamu bisa menggunakan <a target="_blank" href="https://python.org">Python</a>, maka itu sudah cukup untuk bercengkrama dengan <a target="_blank" href="https://streamlit.io">Streamlit</a>.</p>
<p>Berikut, adalah contoh singkat penggunaan <a target="_blank" href="https://streamlit.io">Streamlit</a>:</p>
<pre><code class="lang-python"><span class="hljs-comment"># Import library Streamlit</span>
<span class="hljs-keyword">import</span> streamlit <span class="hljs-keyword">as</span> st

<span class="hljs-comment"># Membuat tulisan "Hello World"</span>
st.write(<span class="hljs-string">'Hello World'</span>)
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Solusi Error Saat Membuat Ruang Kerja Linux di Chrome OS Flex]]></title><description><![CDATA[Senang sekali saat membaca berita bahwa Google meluncurkan Chrome OS Flex, OS berbasis Chrome yang gratis dan bisa digunakan di berbagai macam Laptop dan PC walaupun gak semuanya compatible. Kalo modelnya seperti ini kan, jadi gak perlu Laptop khusus...]]></description><link>https://blog.ularkadut.net/solusi-error-saat-membuat-ruang-kerja-linux-di-chrome-os-flex</link><guid isPermaLink="true">https://blog.ularkadut.net/solusi-error-saat-membuat-ruang-kerja-linux-di-chrome-os-flex</guid><category><![CDATA[Google Chrome]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sun, 20 Feb 2022 08:30:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/UZqq8Oi7PXk/upload/v1645345781731/32wYp2KY6.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Senang sekali saat membaca berita bahwa Google meluncurkan Chrome OS Flex, OS berbasis Chrome yang gratis dan bisa digunakan di berbagai macam Laptop dan PC walaupun gak semuanya <em>compatible</em>. Kalo modelnya seperti ini kan, jadi gak perlu Laptop khusus untuk menjalankan Chrome OS, alhasil, Laptop ataupun PC jadul bisa kita berdayakan lagi dengan menggunakan Chrome OS Flex sebagai OS nya.</p>
<p>Nah, kebetulan saya punya Laptop dengan Spesifikasi Ryzen 7, Ram 8 GB dan SSD 128 GB, usianya sudah 3 tahun, spesifikasi yang lumayan ok, selama ini saya gunakan untuk di oprek2 install berbagai macam distro linux, walaupun udah betah di OpenSUSE Tumbleweed. Namun pesona Chrome OS membuat saya ingin sekali menginstall Chrome OS Flex di Laptop Ryzen 7 ini. Spesifikasi Celeron aja udah kerasa kenceng, apalagi Spesifikasi Ryzen 7.</p>
<p>Alhamdulillah, setelah saya coba, Laptop Ryzen 7 saya sepertinya berjalan lancar tanpa masalah, semuanya berfungsi saat saya menggunakan Chrome OS Flex ini. Hanya satu masalah kecil yang pada akhirnya ditemukan solusinya. Yaitu permasalahan saat ingin membuat ruang kerja Linux untuk menjalankan aplikasi Linux di atas Chrome OS, tiap saya buat pasti berakhir dengan <em>error</em>.</p>
<p>Bagi teman-teman yang mengalami masalah yang sama, silahkan ikuti langkah-langkah berikut, mudah sekali kok, hanya mengubah settingan sedikit kemudian <em>restart</em> dan masalah pun kelar. </p>
<h3 id="heading-jalankan-di-google-chrome">Jalankan di Google Chrome:</h3>
<pre><code><span class="hljs-attribute">chrome</span>:<span class="hljs-comment">//flags</span>
</code></pre><p>Maka akan muncul tampilan berikut:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1645345487705/WdbEBQTRc.png" alt="Screenshot 2022-02-20 15.13.03.png" /></p>
<p>Cari bagian atau settingan <strong>Crostini Use DLC</strong> kemudian pilih <strong>disabled</strong> untuk kasus ini. Hal ini perlu dilakukan agar proses pembuatan Ruang Kerja Linux di Chrome OS berhasil. Kemudian cukup <em>restart</em> Laptop atau PC dan masalah teratasi.</p>
<p>Alhamdulillah, posisi saat ini, Laptop Ryzen 7 saya sudah saya install VSCode, Spyder dan Jupyter Notebook untuk belajar Python. Dan terasa kenceng sekali Laptop saya hehehe</p>
]]></content:encoded></item><item><title><![CDATA[Instalasi PyCharm di openSUSE]]></title><description><![CDATA[Bagi teman-teman yang sedang mempelajari Python, pasti memerlukan IDE yang mudah digunakan. Di terminal sebenarnya bisa aja sih menggunakan nano, tapi pasti lebih asyik jika kita bisa menggunkan IDE yang mudah dan nyaman digunakan untuk belajar Pytho...]]></description><link>https://blog.ularkadut.net/instalasi-pycharm-di-opensuse</link><guid isPermaLink="true">https://blog.ularkadut.net/instalasi-pycharm-di-opensuse</guid><category><![CDATA[Python 3]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sun, 30 Jan 2022 12:42:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/UmaojK7erQo/upload/v1643546549497/z8tvhwl_M.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Bagi teman-teman yang sedang mempelajari <a target="_blank" href="python.org">Python</a>, pasti memerlukan IDE yang mudah digunakan. Di <em>terminal</em> sebenarnya bisa aja sih menggunakan <em>nano</em>, tapi pasti lebih asyik jika kita bisa menggunkan IDE yang mudah dan nyaman digunakan untuk belajar <a target="_blank" href="python.org">Python</a>.</p>
<p>Saya sendiri menggunakan <strong>PyCharm</strong> yang dibuat oleh <a target="_blank" href="jetbrains.com">Jetbrains</a>. Kita bisa menggunakan versi <em>community</em> yang gratis untuk di download dan digunakan. Nah karena saya menggunakan openSUSE sebagai <em>daily driver</em> saya untuk bekerja, maka langkah instalasi yang perlu saya lakukan adalah:</p>
<pre><code>sudo zypper addrepo <span class="hljs-operator">-</span><span class="hljs-operator">-</span>refresh https:<span class="hljs-comment">//download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.2 snappy</span>
</code></pre><p>Ganti seri <a target="_blank" href="opensuse.org">openSUSE</a> anda, kalo saya karena menggunakan <strong>Tumbleweed</strong>, maka konfigurasi di atas menjadi:</p>
<pre><code>sudo zypper addrepo <span class="hljs-operator">-</span><span class="hljs-operator">-</span>refresh https:<span class="hljs-comment">//download.opensuse.org/repositories/system:/snappy/openSUSE_Tumbleweed snappy</span>
</code></pre><p>Kemudian ...</p>
<pre><code>sudo zypper <span class="hljs-operator">-</span><span class="hljs-operator">-</span>gpg<span class="hljs-operator">-</span>auto<span class="hljs-operator">-</span><span class="hljs-keyword">import</span><span class="hljs-operator">-</span><span class="hljs-title">keys</span> <span class="hljs-title">refresh</span>
<span class="hljs-title">sudo</span> <span class="hljs-title">zypper</span> <span class="hljs-title">dup</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-title"><span class="hljs-keyword">from</span></span> <span class="hljs-title">snappy</span>
<span class="hljs-title">sudo</span> <span class="hljs-title">zypper</span> <span class="hljs-title">install</span> <span class="hljs-title">snapd</span>
<span class="hljs-title">sudo</span> <span class="hljs-title">systemctl</span> <span class="hljs-title">enable</span> <span class="hljs-title">snapd</span>
<span class="hljs-title">sudo</span> <span class="hljs-title">systemctl</span> <span class="hljs-title">start</span> <span class="hljs-title">snapd</span>
<span class="hljs-title">sudo</span> <span class="hljs-title">snap</span> <span class="hljs-title">install</span> <span class="hljs-title">pycharm</span><span class="hljs-operator">-</span><span class="hljs-title">community</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-title">classic</span>
</code></pre><p>Selesai deh, dan <strong>PyCharm</strong> pun sudah terinstall di <a target="_blank" href="opensuse.org">openSUSE</a>. <em>Happy Coding ...</em></p>
]]></content:encoded></item><item><title><![CDATA[Update Gagal Karena openSUSE packagekit]]></title><description><![CDATA[Sudah menjadi standar prosedur dari Distro openSUSE adalah menjalankan app packagekit. Sebuah app yang biasanya berjalan di awal untuk melakukan pengecekan update dari openSUSE. app ini berjalan di background, sehingga jika misalnya saya ingin melaku...]]></description><link>https://blog.ularkadut.net/update-gagal-karena-opensuse-packagekit</link><guid isPermaLink="true">https://blog.ularkadut.net/update-gagal-karena-opensuse-packagekit</guid><category><![CDATA[Linux]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sun, 30 Jan 2022 12:15:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/cxoR55-bels/upload/v1643544850504/BiaCdCHkSm.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sudah menjadi standar prosedur dari Distro openSUSE adalah menjalankan <em>app <strong>packagekit</strong></em>. Sebuah <em>app</em> yang biasanya berjalan di awal untuk melakukan pengecekan <em>update</em> dari <a target="_blank" href="opensuse.org">openSUSE</a>. <em>app</em> ini berjalan di <em>background</em>, sehingga jika misalnya saya ingin melakukan instalasi sebuah software maka saya mesti menunggu <em>app packagekit</em> ini selesai menjalankan tugasnya.</p>
<p>Intinya, kalo <em>app packagekit</em> ini masih berjalan, maka kita gak akan bisa melakukan instalasi <em>software</em>. Biasanya muncul pesan <em>error</em> seperti ini :</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1643544482393/xfZKiudg4.png" alt="Screenshot from 2022-01-30 19-02-19.png" /></p>
<p>Cukup mengesalkan, jika memang kita butuh cepat untuk segera melakukan instalasi ataupun updating aplikasi. Nah, di artikel kali ini, saya akan menjelaskan cara untuk menonaktifkannya, yaitu dengan cukup menjalankan perintah berikut ini di <em>terminal</em>.</p>
<pre><code>sudo killall -<span class="hljs-keyword">KILL</span> packagekitd
sudo systemctl <span class="hljs-keyword">stop</span> packagekit
sudo systemctl <span class="hljs-keyword">disable</span> packagekit
</code></pre><p>Nah, sekarang saya bisa langsung melakukan update ataupun instalasi <em>software</em> tanpa perlu menunggu <em>packagekit</em> menjalankan tugasnya.</p>
]]></content:encoded></item><item><title><![CDATA[Python Day 5 - Looping]]></title><description><![CDATA[Di weekend ini, seperti biasa mencoba mengisi waktu luang untuk sesuatu yang bermanfaat dengan mempelajari Bahasa Python. Kali ini saya mempelajari Looping dengan beberapa contoh penggunaannya, yang tentu saja saya saling berkaitan dengan materi yang...]]></description><link>https://blog.ularkadut.net/python-day-5-looping</link><guid isPermaLink="true">https://blog.ularkadut.net/python-day-5-looping</guid><category><![CDATA[Python 3]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sat, 29 Jan 2022 12:24:21 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/oMpknr7yi7g/upload/v1643459054808/SGHGJsoJ4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Di <em>weekend</em> ini, seperti biasa mencoba mengisi waktu luang untuk sesuatu yang bermanfaat dengan mempelajari Bahasa <a target="_blank" href="python.org">Python</a>. Kali ini saya mempelajari <strong>Looping</strong> dengan beberapa contoh penggunaannya, yang tentu saja saya saling berkaitan dengan materi yang saya tulis sebelumnya. Hari ini, cukup membuat kepala saya sedikit berasap untuk mencoba memahami beberapa langkah pemecahan masalah yang saya temukan, mungkin karena kebanyakan makan kali hehehe</p>
<p>Berikut saya tampilkan <em>source code</em> dari apa yang saya pelajari hari ini.</p>
<h4 id="heading-nama-nama-buah">Nama-Nama Buah</h4>
<pre><code>fruits = [<span class="hljs-string">"Apple"</span>, <span class="hljs-string">"Peach"</span>, <span class="hljs-string">"Pear"</span>]

<span class="hljs-keyword">for</span> fruit <span class="hljs-keyword">in</span> fruits:
    print(fruit)
    print(fruit + <span class="hljs-string">" Pie"</span>)
</code></pre><h4 id="heading-menghitung-jumlah-1-sampai-dengan-100">Menghitung Jumlah 1 sampai dengan 100</h4>
<pre><code><span class="hljs-comment"># for Loop with Range</span>
<span class="hljs-attribute">total</span> = <span class="hljs-number">0</span>
<span class="hljs-attribute">for</span> number in range(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>):
    <span class="hljs-attribute">total</span> += number

<span class="hljs-attribute">print</span>(total)

<span class="hljs-comment"># for Loop with Range sum even number</span>
<span class="hljs-attribute">total_even</span> = <span class="hljs-number">0</span>
<span class="hljs-attribute">for</span> number_even in range(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>):
    <span class="hljs-attribute">if</span> number_even % <span class="hljs-number">2</span> == <span class="hljs-number">0</span>:
        <span class="hljs-attribute">total_even</span> += number_even

<span class="hljs-comment"># for Loop with Range odd even number</span>
<span class="hljs-attribute">total_odd</span> = <span class="hljs-number">0</span>
<span class="hljs-attribute">for</span> number_odd in range(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>):
    <span class="hljs-attribute">if</span> number_odd % <span class="hljs-number">2</span> != <span class="hljs-number">0</span>:
        <span class="hljs-attribute">total_odd</span> += number_odd

<span class="hljs-attribute">total_gabung</span> = total_even + total_odd
<span class="hljs-attribute">print</span>(f<span class="hljs-string">"{total_even} + {total_odd} = {total_gabung}"</span>)
</code></pre><h4 id="heading-menghitung-tinggi-rata-rata">Menghitung Tinggi Rata-Rata</h4>
<pre><code><span class="hljs-comment"># 🚨 Don't change the code below 👇</span>
<span class="hljs-attribute">student_heights</span> = input(<span class="hljs-string">"Input a list of student heights "</span>).split()
<span class="hljs-attribute">for</span> n in range(<span class="hljs-number">0</span>, len(student_heights)):
    <span class="hljs-attribute">student_heights</span>[n] = int(student_heights[n])
<span class="hljs-comment"># 🚨 Don't change the code above 👆</span>

<span class="hljs-comment">#Write your code below this row 👇</span>
<span class="hljs-attribute">total_height</span> = <span class="hljs-number">0</span>
<span class="hljs-attribute">for</span> height in student_heights:
    <span class="hljs-attribute">total_height</span> = total_height + height

<span class="hljs-attribute">number_student</span> = <span class="hljs-number">0</span>
<span class="hljs-attribute">for</span> student in student_heights:
    <span class="hljs-attribute">number_student</span> += <span class="hljs-number">1</span>

<span class="hljs-attribute">avg</span> = round(total_height / number_student, <span class="hljs-number">0</span>)
<span class="hljs-attribute">print</span>(f<span class="hljs-string">"Tinggi Rata-Rata = {avg}"</span>)
</code></pre><h4 id="heading-fizzbuzz-game">FizzBuzz Game</h4>
<pre><code><span class="hljs-keyword">for</span> angka in range(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>):
    <span class="hljs-keyword">if</span> angka <span class="hljs-operator">%</span> <span class="hljs-number">3</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span> and angka <span class="hljs-operator">%</span> <span class="hljs-number">5</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
        print(<span class="hljs-string">"FizzBuzz"</span>)
    elif angka <span class="hljs-operator">%</span> <span class="hljs-number">3</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
        print(<span class="hljs-string">"Fizz"</span>)
    elif angka <span class="hljs-operator">%</span> <span class="hljs-number">5</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
        print(<span class="hljs-string">"Buzz"</span>)
    <span class="hljs-keyword">else</span>:
        print(angka)
</code></pre><h4 id="heading-password-generator">Password Generator</h4>
<pre><code>#Password Generator Project
<span class="hljs-keyword">import</span> random
letters = [<span class="hljs-string">'a'</span>, <span class="hljs-string">'b'</span>, <span class="hljs-string">'c'</span>, <span class="hljs-string">'d'</span>, <span class="hljs-string">'e'</span>, <span class="hljs-string">'f'</span>, <span class="hljs-string">'g'</span>, <span class="hljs-string">'h'</span>, <span class="hljs-string">'i'</span>, <span class="hljs-string">'j'</span>, <span class="hljs-string">'k'</span>, <span class="hljs-string">'l'</span>, <span class="hljs-string">'m'</span>, <span class="hljs-string">'n'</span>, <span class="hljs-string">'o'</span>, <span class="hljs-string">'p'</span>, <span class="hljs-string">'q'</span>, <span class="hljs-string">'r'</span>, <span class="hljs-string">'s'</span>, <span class="hljs-string">'t'</span>, <span class="hljs-string">'u'</span>, <span class="hljs-string">'v'</span>, <span class="hljs-string">'w'</span>, <span class="hljs-string">'x'</span>, <span class="hljs-string">'y'</span>, <span class="hljs-string">'z'</span>, <span class="hljs-string">'A'</span>, <span class="hljs-string">'B'</span>, <span class="hljs-string">'C'</span>, <span class="hljs-string">'D'</span>, <span class="hljs-string">'E'</span>, <span class="hljs-string">'F'</span>, <span class="hljs-string">'G'</span>, <span class="hljs-string">'H'</span>, <span class="hljs-string">'I'</span>, <span class="hljs-string">'J'</span>, <span class="hljs-string">'K'</span>, <span class="hljs-string">'L'</span>, <span class="hljs-string">'M'</span>, <span class="hljs-string">'N'</span>, <span class="hljs-string">'O'</span>, <span class="hljs-string">'P'</span>, <span class="hljs-string">'Q'</span>, <span class="hljs-string">'R'</span>, <span class="hljs-string">'S'</span>, <span class="hljs-string">'T'</span>, <span class="hljs-string">'U'</span>, <span class="hljs-string">'V'</span>, <span class="hljs-string">'W'</span>, <span class="hljs-string">'X'</span>, <span class="hljs-string">'Y'</span>, <span class="hljs-string">'Z'</span>]
numbers = [<span class="hljs-string">'0'</span>, <span class="hljs-string">'1'</span>, <span class="hljs-string">'2'</span>, <span class="hljs-string">'3'</span>, <span class="hljs-string">'4'</span>, <span class="hljs-string">'5'</span>, <span class="hljs-string">'6'</span>, <span class="hljs-string">'7'</span>, <span class="hljs-string">'8'</span>, <span class="hljs-string">'9'</span>]
symbols = [<span class="hljs-string">'!'</span>, <span class="hljs-string">'#'</span>, <span class="hljs-string">'$'</span>, <span class="hljs-string">'%'</span>, <span class="hljs-string">'&amp;'</span>, <span class="hljs-string">'('</span>, <span class="hljs-string">')'</span>, <span class="hljs-string">'*'</span>, <span class="hljs-string">'+'</span>]

<span class="hljs-built_in">print</span>(<span class="hljs-string">"Selamat datang di PyPassword Generator!"</span>)
nr_letters = <span class="hljs-keyword">int</span>(input(<span class="hljs-string">"Berapa jumlah huruf yang kamu inginkan?\n"</span>))
nr_symbols = <span class="hljs-keyword">int</span>(input(f<span class="hljs-string">"Berapa jumlah simbol yang kamu inginkan?\n"</span>))
nr_numbers = <span class="hljs-keyword">int</span>(input(f<span class="hljs-string">"Berapa jumlah angka yang kamu inginkan?\n"</span>))

password_list = []
<span class="hljs-keyword">for</span> char_list in <span class="hljs-keyword">range</span>(<span class="hljs-number">1</span>, nr_letters + <span class="hljs-number">1</span>):
    password_list += random.choice(letters)

<span class="hljs-keyword">for</span> char_list in <span class="hljs-keyword">range</span>(<span class="hljs-number">1</span>, nr_numbers + <span class="hljs-number">1</span>):
    password_list += random.choice(numbers)

<span class="hljs-keyword">for</span> char_list in <span class="hljs-keyword">range</span>(<span class="hljs-number">1</span>, nr_symbols + <span class="hljs-number">1</span>):
    password_list += random.choice(symbols)

<span class="hljs-built_in">print</span>(password_list)
random.shuffle(password_list)
<span class="hljs-built_in">print</span>(password_list)
password = <span class="hljs-string">""</span>
<span class="hljs-keyword">for</span> char in password_list:
    password += char
<span class="hljs-built_in">print</span>(f<span class="hljs-string">"Password acak anda adalah: {password}"</span>)
</code></pre><p>Yang membuat saya sedikit pusing, adalah saat mencoba memecahkan permasalahan di dalam latihan <strong>Password Generator</strong> hehehe. Tetap semangat dan jangan mudah menyerah, karena <strong>Bisa itu karena biasa</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Python Day 4 - Bermain Dengan List, Nested List, Split dan Random]]></title><description><![CDATA[Di hari ke empat ini, saya mempelajari beberapa fungsi yang sangat menarik, yaitu: list, split dan random. Dari 2 fungsi ini, saya bisa membuat 2 buah game sederhana yang cukup menarik dan menantang. Langsung saja ya, saya sampaikan di sini Source Co...]]></description><link>https://blog.ularkadut.net/python-day-4-bermain-dengan-list-nested-list-split-dan-random</link><guid isPermaLink="true">https://blog.ularkadut.net/python-day-4-bermain-dengan-list-nested-list-split-dan-random</guid><category><![CDATA[Python 3]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Fri, 28 Jan 2022 14:47:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/zGuBURGGmdY/upload/v1643381207651/xDAWzcSmv.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Di hari ke empat ini, saya mempelajari beberapa fungsi yang sangat menarik, yaitu: <code>list</code>, <code>split</code> dan <code>random</code>. Dari 2 fungsi ini, saya bisa membuat 2 buah game sederhana yang cukup menarik dan menantang. Langsung saja ya, saya sampaikan di sini <em>Source Code</em> nya.</p>
<p>Yang paling menarik dan menantang yaitu Permainan Batu, Kertas dan Gunting, anak saya sampai ikutan main, mudah-mudahan aja juga tertarik ikut belajar kaya bapaknya hehehe.</p>
<h4 id="heading-game-siapa-yang-bayar">Game Siapa yang Bayar</h4>
<pre><code><span class="hljs-keyword">import</span> <span class="hljs-title">random</span>
# <span class="hljs-title">Split</span> <span class="hljs-title"><span class="hljs-keyword">string</span></span> <span class="hljs-title">method</span>
<span class="hljs-title">names_string</span> <span class="hljs-operator">=</span> <span class="hljs-title">input</span>(<span class="hljs-string">"Give me everybody's names, separated by a comma. "</span>)
<span class="hljs-title">names</span> <span class="hljs-operator">=</span> <span class="hljs-title">names_string</span>.<span class="hljs-title">split</span>(<span class="hljs-string">", "</span>)

<span class="hljs-title">y</span> <span class="hljs-operator">=</span> <span class="hljs-title">len</span>(<span class="hljs-title">names</span>)
<span class="hljs-title">x</span> <span class="hljs-operator">=</span> <span class="hljs-title">y</span> <span class="hljs-operator">-</span> 1
<span class="hljs-title">urut_rand</span> <span class="hljs-operator">=</span> <span class="hljs-title">random</span>.<span class="hljs-title">randint</span>(0, <span class="hljs-title">x</span>)

<span class="hljs-title">names_acak</span> <span class="hljs-operator">=</span> <span class="hljs-title">names</span>[<span class="hljs-title">urut_rand</span>]
<span class="hljs-title">print</span>(<span class="hljs-title">f</span><span class="hljs-string">"{names_acak}, is going to buy the meal today!"</span>)
</code></pre><h4 id="heading-game-menemukan-harta-karun-mirip-catur">Game Menemukan Harta Karun / Mirip Catur</h4>
<pre><code>row1 <span class="hljs-operator">=</span> [<span class="hljs-string">"⬜️"</span>,<span class="hljs-string">"⬜️"</span>,<span class="hljs-string">"⬜️"</span>]
row2 <span class="hljs-operator">=</span> [<span class="hljs-string">"⬜️"</span>,<span class="hljs-string">"⬜️"</span>,<span class="hljs-string">"⬜️"</span>]
row3 <span class="hljs-operator">=</span> [<span class="hljs-string">"⬜️"</span>,<span class="hljs-string">"⬜️"</span>,<span class="hljs-string">"⬜️"</span>]

map <span class="hljs-operator">=</span> [row1, row2, row3]
print(f<span class="hljs-string">"{row1}\n{row2}\n{row3}"</span>)

position <span class="hljs-operator">=</span> input(<span class="hljs-string">"Where do you want to put the treasure? "</span>)

kolom <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(position[<span class="hljs-number">0</span>])
baris <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(position[<span class="hljs-number">1</span>])

map[baris <span class="hljs-operator">-</span> <span class="hljs-number">1</span>][kolom <span class="hljs-operator">-</span> <span class="hljs-number">1</span>] <span class="hljs-operator">=</span> <span class="hljs-string">"X"</span>

print(f<span class="hljs-string">"{row1}\n{row2}\n{row3}"</span>)
</code></pre><h4 id="heading-game-batu-kertas-dan-gunting">Game Batu, Kertas dan Gunting</h4>
<pre><code><span class="hljs-keyword">import</span> random

batu = <span class="hljs-string">'''
    _______
---'   ____)
      (_____)
      (_____)
      (____)
---.__(___)
'''</span>

kertas = <span class="hljs-string">'''
    _______
---'   ____)____
          ______)
          _______)
         _______)
---.__________)
'''</span>

gunting = <span class="hljs-string">'''
    _______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''</span>

me = int(input(<span class="hljs-string">"Ketik 0 untuk Batu, 1 untuk Kertas atau 2 untuk Gunting -&gt; "</span>))

<span class="hljs-keyword">if</span> me &lt; <span class="hljs-number">0</span> <span class="hljs-keyword">or</span> me &gt; <span class="hljs-number">2</span>:
  print(<span class="hljs-string">"Kamu Salah Pilih!"</span>)
  print(<span class="hljs-string">"Komputer gak jadi Pilih!"</span>)
<span class="hljs-keyword">else</span>:
  <span class="hljs-keyword">if</span> me == <span class="hljs-number">0</span>:
    print(batu)
  <span class="hljs-keyword">elif</span> me == <span class="hljs-number">1</span>:
    print(kertas)
  <span class="hljs-keyword">else</span>:
    print(gunting)

  pc = random.randint(<span class="hljs-number">0</span>, <span class="hljs-number">2</span>)
  print(<span class="hljs-string">"Pilihan Komputer:\n"</span>)

  <span class="hljs-keyword">if</span> pc == <span class="hljs-number">0</span>:
    print(batu)
  <span class="hljs-keyword">elif</span> pc == <span class="hljs-number">1</span>:
    print(kertas)
  <span class="hljs-keyword">else</span>:
    print(gunting)

  <span class="hljs-keyword">if</span> me == <span class="hljs-number">0</span> <span class="hljs-keyword">and</span> pc == <span class="hljs-number">2</span>:
    print(<span class="hljs-string">"Kamu Menang"</span>)
  <span class="hljs-keyword">elif</span> me == <span class="hljs-number">2</span> <span class="hljs-keyword">and</span> pc == <span class="hljs-number">0</span>:
    print(<span class="hljs-string">"Kamu Kalah"</span>)
  <span class="hljs-keyword">elif</span> me == pc:
    print(<span class="hljs-string">"Kamu Seri"</span>)
  <span class="hljs-keyword">elif</span> me &gt; pc:
    print(<span class="hljs-string">"Kamu Menang"</span>)
  <span class="hljs-keyword">else</span>:
    print(<span class="hljs-string">"Kamu Kalah"</span>)
</code></pre>]]></content:encoded></item><item><title><![CDATA[Python Day 3 - Bermain Dengan Logika (if, elif dan else)]]></title><description><![CDATA[Tema yang saya pelajari di hari ketiga ini adalah Bermain dengan logika (if, elif dan else). Tema yang cukup menarik dan penuh tantangan, apalagi sudah hampir 1 dekade saya gak pernah nyentuh lagi yang namanya programming, sehingga cukup menghangatka...]]></description><link>https://blog.ularkadut.net/python-day-3-bermain-dengan-logika-if-elif-dan-else</link><guid isPermaLink="true">https://blog.ularkadut.net/python-day-3-bermain-dengan-logika-if-elif-dan-else</guid><category><![CDATA[Python 3]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Thu, 27 Jan 2022 00:41:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/O2MdroNurVw/upload/v1643244079455/1lwRPCPli.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tema yang saya pelajari di hari ketiga ini adalah <strong>Bermain dengan logika (if, elif dan else)</strong>. Tema yang cukup menarik dan penuh tantangan, apalagi sudah hampir 1 dekade saya gak pernah nyentuh lagi yang namanya <em>programming</em>, sehingga cukup menghangatkan kembali otak saya yang sudah lama dingin hehehe</p>
<p>Ada beberapa program yang saya buat tadi malam, antara lain :</p>
<h4 id="heading-genap-atau-ganjil-operator-modulo">Genap atau Ganjil (Operator Modulo %)</h4>
<pre><code>number <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(input(<span class="hljs-string">"Which number do you want to check? "</span>))
hitung <span class="hljs-operator">=</span> number <span class="hljs-operator">%</span> <span class="hljs-number">2</span>

<span class="hljs-keyword">if</span> hitung <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
  print(<span class="hljs-string">"This is an even number."</span>)
<span class="hljs-keyword">else</span>:
  print(<span class="hljs-string">"This is and odd number."</span>)
</code></pre><h4 id="heading-bmi-body-mass-index-nyindir-yang-lagi-gagal-diet">BMI - Body Mass Index (Nyindir yang lagi Gagal Diet)</h4>
<pre><code>height = float(input(<span class="hljs-string">"enter your height in m: "</span>))
weight = float(input(<span class="hljs-string">"enter your weight in kg: "</span>))

bmi = weight / height ** <span class="hljs-number">2</span>
bmi_bulat = round(bmi)

<span class="hljs-keyword">if</span> bmi &lt; <span class="hljs-number">18.5</span>:
  print(<span class="hljs-string">f"<span class="hljs-subst">{weight}</span> / (<span class="hljs-subst">{height}</span> x <span class="hljs-subst">{height}</span>) = <span class="hljs-subst">{bmi}</span>"</span>)
  print(<span class="hljs-string">f"Your BMI is <span class="hljs-subst">{bmi_bulat}</span>. You are underweight."</span>)
<span class="hljs-keyword">elif</span> bmi &lt; <span class="hljs-number">25</span>:
  print(<span class="hljs-string">f"<span class="hljs-subst">{weight}</span> / (<span class="hljs-subst">{height}</span> x <span class="hljs-subst">{height}</span>) = <span class="hljs-subst">{bmi}</span>"</span>)
  print(<span class="hljs-string">f"Your BMI is <span class="hljs-subst">{bmi_bulat}</span>. You are normal weight."</span>)
<span class="hljs-keyword">elif</span> bmi &lt; <span class="hljs-number">30</span>:
  print(<span class="hljs-string">f"<span class="hljs-subst">{weight}</span> / (<span class="hljs-subst">{height}</span> x <span class="hljs-subst">{height}</span>) = <span class="hljs-subst">{bmi}</span>"</span>)
  print(<span class="hljs-string">f"Your BMI is <span class="hljs-subst">{bmi_bulat}</span>. You are slightly overweight."</span>)
<span class="hljs-keyword">elif</span> bmi &lt; <span class="hljs-number">35</span>:
  print(<span class="hljs-string">f"<span class="hljs-subst">{weight}</span> / (<span class="hljs-subst">{height}</span> x <span class="hljs-subst">{height}</span>) = <span class="hljs-subst">{bmi}</span>"</span>)
  print(<span class="hljs-string">f"Your BMI is <span class="hljs-subst">{bmi_bulat}</span>. You are obese."</span>)
<span class="hljs-keyword">else</span>:
  print(<span class="hljs-string">f"<span class="hljs-subst">{weight}</span> / (<span class="hljs-subst">{height}</span> x <span class="hljs-subst">{height}</span>) = <span class="hljs-subst">{bmi}</span>"</span>)
  print(<span class="hljs-string">f"Your BMI is <span class="hljs-subst">{bmi_bulat}</span>. You are clinically obese."</span>)
</code></pre><h4 id="heading-tahun-kabisat-leap-year">Tahun Kabisat (Leap Year)</h4>
<pre><code>year <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(input(<span class="hljs-string">"Which year do you want to check? "</span>))

<span class="hljs-keyword">if</span> year <span class="hljs-operator">%</span> <span class="hljs-number">4</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
  <span class="hljs-keyword">if</span> year <span class="hljs-operator">%</span> <span class="hljs-number">100</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
    <span class="hljs-keyword">if</span> year <span class="hljs-operator">%</span> <span class="hljs-number">400</span> <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>:
      print(<span class="hljs-string">"Leap Year."</span>)
    <span class="hljs-keyword">else</span>:
      print(<span class="hljs-string">"Not Leap Year."</span>)
  <span class="hljs-keyword">else</span>:
    print(<span class="hljs-string">"Leap Year."</span>)
<span class="hljs-keyword">else</span>:
  print(<span class="hljs-string">"Not Leap Year."</span>)
</code></pre><h4 id="heading-jualan-pizza">Jualan Pizza</h4>
<pre><code>print(<span class="hljs-string">"Welcome to Python Pizza Deliveries!"</span>)

size <span class="hljs-operator">=</span> input(<span class="hljs-string">"What size pizza do you want? S, M, or L -&gt; "</span>)
add_pepperoni <span class="hljs-operator">=</span> input(<span class="hljs-string">"Do you want pepperoni? Y or N -&gt; "</span>)
extra_cheese <span class="hljs-operator">=</span> input(<span class="hljs-string">"Do you want extra cheese? Y or N -&gt; "</span>)

bill <span class="hljs-operator">=</span> <span class="hljs-number">0</span>

<span class="hljs-keyword">if</span> size <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-string">"S"</span>:
  bill <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">15</span>
  print(f<span class="hljs-string">"\nYou Choose Small Pizza: ${bill}"</span>)
elif size <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-string">"M"</span>:
  bill <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">20</span>
  print(f<span class="hljs-string">"\nYou Choose Medium Pizza: ${bill}"</span>)
<span class="hljs-keyword">else</span>:
  bill <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">25</span>
  print(f<span class="hljs-string">"\nYou Choose Large Pizza: ${bill}"</span>)

<span class="hljs-keyword">if</span> add_pepperoni <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-string">"Y"</span>:
  <span class="hljs-keyword">if</span> size <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-string">"S"</span>:
    bill <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">2</span>
  <span class="hljs-keyword">else</span>:
    bill <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">3</span>

<span class="hljs-keyword">if</span> extra_cheese <span class="hljs-operator">=</span><span class="hljs-operator">=</span> <span class="hljs-string">"Y"</span>:
  bill <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">1</span>

print(f<span class="hljs-string">"Your final bill is: ${bill}"</span>)
</code></pre><h4 id="heading-kalkulator-cinta-sejati-true-love-calculator">Kalkulator Cinta Sejati (True Love Calculator)</h4>
<pre><code>print(<span class="hljs-string">"Welcome to the Love Calculator!"</span>)
name1 <span class="hljs-operator">=</span> input(<span class="hljs-string">"What is your name? \n"</span>)
name2 <span class="hljs-operator">=</span> input(<span class="hljs-string">"What is their name? \n"</span>)

name_gabung <span class="hljs-operator">=</span> name1 <span class="hljs-operator">+</span> <span class="hljs-string">" "</span> <span class="hljs-operator">+</span> name2
name_lo <span class="hljs-operator">=</span> name_gabung.lower()

t <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'t'</span>)
r <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'r'</span>)
u <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'u'</span>)
e <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'e'</span>)
<span class="hljs-literal">true</span> <span class="hljs-operator">=</span> str(t <span class="hljs-operator">+</span> r <span class="hljs-operator">+</span> u <span class="hljs-operator">+</span> e)

l <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'l'</span>)
o <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'o'</span>)
v <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'v'</span>)
e <span class="hljs-operator">=</span> name_lo.count(<span class="hljs-string">'e'</span>)
love <span class="hljs-operator">=</span> str(l <span class="hljs-operator">+</span> o <span class="hljs-operator">+</span> v <span class="hljs-operator">+</span> e)

true_love <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(<span class="hljs-literal">true</span> <span class="hljs-operator">+</span> love)

<span class="hljs-keyword">if</span> true_love <span class="hljs-operator">&lt;</span> <span class="hljs-number">10</span> or true_love <span class="hljs-operator">&gt;</span> <span class="hljs-number">90</span>:
  print(f<span class="hljs-string">"Your score is {true_love}, you go together like coke and mentos."</span>)
elif true_love <span class="hljs-operator">&gt;</span><span class="hljs-operator">=</span> <span class="hljs-number">40</span> and true_love <span class="hljs-operator">&lt;</span><span class="hljs-operator">=</span> <span class="hljs-number">50</span>:
  print(f<span class="hljs-string">"Your score is {true_love}, you are alright together."</span>)
<span class="hljs-keyword">else</span>:
  print(f<span class="hljs-string">"Your score is {true_love}."</span>)
</code></pre><p>Asik sekali, saking semangatnya dan semalam akhirnya tidur di kisaran jam 00.00 lagi, mudah-mudahan selalu diberikan kesehatan dan kemudahan dalam setiap aktivitas... Amiiin.</p>
]]></content:encoded></item><item><title><![CDATA[Mengamankan Akses ke OpenSSH Server]]></title><description><![CDATA[Ada beberapa langkah mudah dan minimal yang biasanya saya lakukan dalam mengamankan akses ke OpenSSH Server, yaitu dengan melakukan konfigurasi file /etc/ssh/sshd_config. Antara lain:
Mengubah Port
port 2278
Menonaktifkan Akses Langsung ke Akun Root
...]]></description><link>https://blog.ularkadut.net/mengamankan-akses-ke-openssh-server</link><guid isPermaLink="true">https://blog.ularkadut.net/mengamankan-akses-ke-openssh-server</guid><category><![CDATA[ssh]]></category><category><![CDATA[Security]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Wed, 26 Jan 2022 06:34:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/lmFJOx7hPc4/upload/v1643178855569/-kQb7-3Dy.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ada beberapa langkah mudah dan minimal yang biasanya saya lakukan dalam mengamankan akses ke OpenSSH Server, yaitu dengan melakukan konfigurasi file <code>/etc/ssh/sshd_config</code>. Antara lain:</p>
<h4 id="heading-mengubah-port">Mengubah Port</h4>
<pre><code><span class="hljs-attribute">port</span> <span class="hljs-number">2278</span>
</code></pre><h4 id="heading-menonaktifkan-akses-langsung-ke-akun-root">Menonaktifkan Akses Langsung ke Akun Root</h4>
<pre><code><span class="hljs-attribute">PermitRootLogin</span> <span class="hljs-literal">no</span>
</code></pre><h4 id="heading-membatasi-user-yang-bisa-melakukan-akses-ke-openssh-server">Membatasi User yang Bisa Melakukan Akses ke OpenSSH Server</h4>
<pre><code><span class="hljs-attribute">AllowUsers</span> stud u<span class="hljs-number">1</span> u<span class="hljs-number">2</span> john
</code></pre><h4 id="heading-beberapa-konfigurasi-lainnya">Beberapa Konfigurasi Lainnya</h4>
<pre><code><span class="hljs-attribute">ClientAliveInterval</span> <span class="hljs-number">300</span>
<span class="hljs-attribute">ClientAliveCountMax</span> <span class="hljs-number">0</span>
<span class="hljs-attribute">MaxAuthTries</span> <span class="hljs-number">2</span>
<span class="hljs-attribute">MaxStartUps</span> <span class="hljs-number">3</span>
<span class="hljs-attribute">LoginGraceTime</span> <span class="hljs-number">20</span>
</code></pre>]]></content:encoded></item><item><title><![CDATA[Python Day 2 - Tipe Data dan Manipulasi String]]></title><description><![CDATA[Malam ini adalah hari kedua saya mencoba serius belajar programming lagi. Biar kekinian yang saya pelajari adalah Bahasa Python. Nah, di hari kedua ini saya mempelajari berbagai macam jenis Tipe Data dan bagaimana cara Manipulasi String. Ternyata tid...]]></description><link>https://blog.ularkadut.net/python-day-2-tipe-data-dan-manipulasi-string</link><guid isPermaLink="true">https://blog.ularkadut.net/python-day-2-tipe-data-dan-manipulasi-string</guid><category><![CDATA[Python 3]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Tue, 25 Jan 2022 15:59:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/ieic5Tq8YMk/upload/v1643126340752/woEr4OHO1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Malam ini adalah hari kedua saya mencoba serius belajar <em>programming</em> lagi. Biar kekinian yang saya pelajari adalah <strong>Bahasa Python</strong>. Nah, di hari kedua ini saya mempelajari berbagai macam jenis <strong>Tipe Data</strong> dan bagaimana cara <strong>Manipulasi String</strong>. Ternyata tidak sulit dan sangat menyenangkan.</p>
<h3 id="heading-manipulasi-string">Manipulasi String</h3>
<p><em>Source Code</em> di bawah ini adalah contoh bahwa kita bisa memanipulasi string untuk kemudian kita olah lagi seperti dengan melakukan perhitungan dari 2 angka yang diinput.  </p>
<p><strong>Contoh 1 - Menjumlahkan 2 Digit Angka:</strong></p>
<pre><code><span class="hljs-attribute">two_digit_number</span> = input(<span class="hljs-string">"Type a two digit number: "</span>)
<span class="hljs-comment">####################################</span>
<span class="hljs-attribute">digit1</span> = two_digit_number[<span class="hljs-number">0</span>]
<span class="hljs-attribute">digit2</span> = two_digit_number[<span class="hljs-number">1</span>]

<span class="hljs-attribute">hitung</span> = int(digit<span class="hljs-number">1</span>) + int(digit<span class="hljs-number">2</span>)
<span class="hljs-attribute">hitung_str</span> = str(hitung)
<span class="hljs-attribute">print</span>(digit<span class="hljs-number">1</span> + <span class="hljs-string">" + "</span> + digit<span class="hljs-number">2</span> + <span class="hljs-string">" = "</span> + hitung_str)
</code></pre><p><strong>Contoh 2 - Menghitung BMI :</strong></p>
<pre><code>height = input(<span class="hljs-string">"enter your height in m: "</span>)
weight = input(<span class="hljs-string">"enter your weight in kg: "</span>)
<span class="hljs-comment">##################################</span>
height_float = float(height)
weight_float = float(weight)

bmi = round((weight_float / height_float ** 2),2)
print(f<span class="hljs-string">"Your BMI is {bmi}"</span>)
</code></pre><p><strong>Contoh 3 - Menghitung Sisa Umur (Umur Harapan = 90 Tahun)</strong></p>
<pre><code>age = input(<span class="hljs-string">"What is your current age? "</span>)
<span class="hljs-comment">#################################</span>
age_int = int(age)
years_remaining = 90

age_day = (years_remaining - age_int) * 365
age_weeks = (years_remaining - age_int) * 52
age_month = (years_remaining - age_int) * 12

print(f<span class="hljs-string">"You have {age_day} days, {age_weeks} weeks, and {age_month} months left"</span>)
</code></pre><p><strong>Contoh 4 - Tip Calculator dengan Format Angka Desimal</strong></p>
<pre><code>print(<span class="hljs-string">"Welcome to the tip calculator"</span>)
bill <span class="hljs-operator">=</span> float(input(<span class="hljs-string">"What was the total bill? $"</span>))
tip <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(input(<span class="hljs-string">"What percentage tip would you like to give? 10, 12, or 15? "</span>)) 
people <span class="hljs-operator">=</span> <span class="hljs-keyword">int</span>(input(<span class="hljs-string">"How many people to split the bill? "</span>))

bill_tip <span class="hljs-operator">=</span> bill <span class="hljs-operator">*</span> (<span class="hljs-number">1</span> <span class="hljs-operator">+</span> tip<span class="hljs-operator">/</span><span class="hljs-number">100</span>)

bagi_bayar <span class="hljs-operator">=</span> round(bill_tip <span class="hljs-operator">/</span> people, <span class="hljs-number">2</span>)
final_bayar <span class="hljs-operator">=</span> <span class="hljs-string">"{:.2f}"</span>.format(bagi_bayar)

print(f<span class="hljs-string">"1. Each person should pay: ${bagi_bayar}"</span>)
print(f<span class="hljs-string">"2. Each person should pay: ${final_bayar}"</span>)
</code></pre><p>Alhamdulillah, saatnya tidur 23:00 WIB :)</p>
]]></content:encoded></item><item><title><![CDATA[Python Day 1 - Pengenalan Bahasa Python]]></title><description><![CDATA[Tuh kan bener, belom juga lama saya install Golang di Laptop dengan niatan untuk dipelajari, eh sekarang udah pindah kelain hati. Saya sekarang serius mau belajar bahasa Python, tutorial sudah saya bookmark dan kemarin sudah mulai secara perlahan pen...]]></description><link>https://blog.ularkadut.net/python-day-1-pengenalan-bahasa-python</link><guid isPermaLink="true">https://blog.ularkadut.net/python-day-1-pengenalan-bahasa-python</guid><category><![CDATA[Python 3]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Tue, 25 Jan 2022 11:29:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/D9Zow2REm8U/upload/v1643110036039/wy_l2Hjmm.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tuh kan bener, belom juga lama saya <em>install</em> <a target="_blank" href="go.dev">Golang</a> di Laptop dengan niatan untuk dipelajari, eh sekarang udah pindah kelain hati. Saya sekarang serius mau belajar bahasa <a target="_blank" href="python.org">Python</a>, tutorial sudah saya <em>bookmark</em> dan kemarin sudah mulai secara perlahan pengenalan dengan <em>grammar</em> dari <a target="_blank" href="python.org">Python</a>.</p>
<p>Hal awal yang saya pelajari adalah menjalankan perintah <code>print</code>, <code>input</code> dan bermain-main dengan yang namanya <code>variable</code>.</p>
<pre><code class="lang-python">print(<span class="hljs-string">"Day 1 - String Manipulation"</span>)
print(<span class="hljs-string">'String Concatenation is done with the "+" sign.'</span>)
print(<span class="hljs-string">'e.g. print("Hello " + "world")'</span>)
print(<span class="hljs-string">"New lines can be created with a backslash and n."</span>)
</code></pre>
<p>Biar lebih interaktif, tambahin perintah <code>input</code>, sehingga ada pertanyaan, dan jawaban dari pertanyaan disimpan dalam <code>variable</code> untuk kemudian dicetak dengan perintah <code>print</code>.</p>
<pre><code class="lang-python"><span class="hljs-comment">#1. Create a greeting for your program. </span>
print(<span class="hljs-string">"Welcome to the Band Name Generator."</span>) 
<span class="hljs-comment">#2. Ask the user for the city that they grew up in. </span>
kota = input(<span class="hljs-string">"Which city did you grew up in?\n"</span>) 
<span class="hljs-comment">#3. Ask the user for the name of a pet. </span>
petname = input(<span class="hljs-string">"What is the name of a pet?\n"</span>) 
<span class="hljs-comment">#4. Combine the name of their city and pet and show them their band name.</span>
print(<span class="hljs-string">"Your band name could be "</span> + kota + <span class="hljs-string">" "</span> + petname)
</code></pre>
<p>Masih sangat sederhana, tapi ini aja udah permulaan yang baik, jadi teringat hampir 20 tahun yang lalu saya mulai belajar tag <strong>HTML</strong>, kemudian lanjut ke <a target="_blank" href="php.net">PHP</a> <em>Programming</em> dan <a target="_blank" href="mysql.com">MySQL</a> <em>Database</em>. Memang harus dimulai dan terus dimulai.</p>
<p>Saat ini konsep saya terhadap pemrograman seperti halnya menulis cerita, dan mudah-mudahan menjadi sesuatu yang menyenangkan. Kalo sudah menyenangkan pasti segala sesuatunya menjadi mudah dan penuh semangat.</p>
]]></content:encoded></item><item><title><![CDATA[Install Golang di openSUSE]]></title><description><![CDATA[Niat hati mao belajar bahasa Golang, kursus udah dibeli, bahkan sampai dari dua tempat kursus yang berbeda, cuma sampai saat ini belom juga ditonton dan dipelajari hehehe. Nah biar gak ada alasan lagi, saya install saja  Golang di Laptop saya yang be...]]></description><link>https://blog.ularkadut.net/install-golang-di-opensuse</link><guid isPermaLink="true">https://blog.ularkadut.net/install-golang-di-opensuse</guid><category><![CDATA[Go Language]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sat, 15 Jan 2022 10:57:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/vpOeXr5wmR4/upload/v1642244190185/p5R5IuGsf.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Niat hati mao belajar bahasa Golang, kursus udah dibeli, bahkan sampai dari dua tempat kursus yang berbeda, cuma sampai saat ini belom juga ditonton dan dipelajari hehehe. Nah biar gak ada alasan lagi, saya <em>install</em> saja  <a target="_blank" href="https://go.dev">Golang</a> di Laptop saya yang ber OS  <a target="_blank" href="https://opensuse.org">openSUSE</a>. </p>
<p><strong>Leap 15.3</strong></p>
<pre><code>$ sudo zypper addrepo <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/download.opensuse.org/repositories</span><span class="hljs-regexp">/devel:languages:go/open</span>SUSE_Leap_15.<span class="hljs-number">3</span>/<span class="hljs-symbol">devel:</span><span class="hljs-symbol">languages:</span>go.repo
$ sudo zypper refresh
</code></pre><p><strong>Tumbleweed</strong></p>
<pre><code>$ sudo zypper addrepo https://download.opensuse.org/repositories/openSUSE:Factory/standard/openSUSE:Factory.repo
$ sudo zypper <span class="hljs-keyword">refresh</span>
</code></pre><p>Sekarang kita bisa melihat apa saja yang ada di  <a target="_blank" href="https://go.dev">Golang</a>  yang bisa kita install.</p>
<pre><code>$ sudo zypper search golang
Loading repository data...
Reading installed packages...

S <span class="hljs-operator">|</span> Name                                             <span class="hljs-operator">|</span> Summary                                                         <span class="hljs-operator">|</span> Type
<span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span>
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>QubitProducts<span class="hljs-operator">-</span>exporter_exporter    <span class="hljs-operator">|</span> Reverse proxy designed <span class="hljs-keyword">for</span> Prometheus exporters                 <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>boynux<span class="hljs-operator">-</span>squid_exporter              <span class="hljs-operator">|</span> Squid Prometheus Exporter                                       <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>cpuguy83<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>md2man                 <span class="hljs-operator">|</span> Convert markdown into man pages                                 <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>czerwonk<span class="hljs-operator">-</span>ping_exporter             <span class="hljs-operator">|</span> Prometheus exporter <span class="hljs-keyword">for</span> ICMP echo requests                      <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>jteeuwen<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>bindata                <span class="hljs-operator">|</span> A small utility which generates Go code <span class="hljs-keyword">from</span> any file           <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>dde<span class="hljs-operator">-</span>api                <span class="hljs-operator">|</span> DDE API golang codes                                            <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>deepin<span class="hljs-operator">-</span>daemon          <span class="hljs-operator">|</span> Deepin daemon golang codes                                      <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>deepin<span class="hljs-operator">-</span>desktop<span class="hljs-operator">-</span>schemas <span class="hljs-operator">|</span> Deepin <span class="hljs-keyword">override</span> tool codes                                      <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>deepin<span class="hljs-operator">-</span>pw<span class="hljs-operator">-</span>check        <span class="hljs-operator">|</span> Deepin<span class="hljs-operator">-</span>pw<span class="hljs-operator">-</span>check source                                          <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>dbus<span class="hljs-operator">-</span>factory        <span class="hljs-operator">|</span> Golang DBus factory                                             <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>gir<span class="hljs-operator">-</span>generator       <span class="hljs-operator">|</span> Additional mobile libraries                                     <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>lib                 <span class="hljs-operator">|</span> Go bindings <span class="hljs-keyword">for</span> Deepin Desktop Environment development          <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>x11<span class="hljs-operator">-</span>client          <span class="hljs-operator">|</span> Additional golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>go<span class="hljs-operator">-</span>x11<span class="hljs-operator">-</span>client libraries    <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>linuxdeepin<span class="hljs-operator">-</span>startdde               <span class="hljs-operator">|</span> Startdde golang codes                                           <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>lusitaniae<span class="hljs-operator">-</span>apache_exporter         <span class="hljs-operator">|</span> Apache Exporter <span class="hljs-keyword">for</span> Prometheus                                  <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>prometheus<span class="hljs-operator">-</span>alertmanager            <span class="hljs-operator">|</span> Prometheus Alertmanager                                         <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>prometheus<span class="hljs-operator">-</span>node_exporter           <span class="hljs-operator">|</span> Prometheus exporter <span class="hljs-keyword">for</span> machine metrics                         <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>prometheus<span class="hljs-operator">-</span>prometheus              <span class="hljs-operator">|</span> The Prometheus monitoring system and time series database       <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>prometheus<span class="hljs-operator">-</span>promu                   <span class="hljs-operator">|</span> Prometheus Utility Tool                                         <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>shadowsocks<span class="hljs-operator">-</span>v2ray<span class="hljs-operator">-</span>plugin           <span class="hljs-operator">|</span> Additional mobile libraries                                     <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>v2fly<span class="hljs-operator">-</span>v2ray<span class="hljs-operator">-</span>core                   <span class="hljs-operator">|</span> Additional mobile libraries                                     <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>github<span class="hljs-operator">-</span>vpenso<span class="hljs-operator">-</span>prometheus_slurm_exporter   <span class="hljs-operator">|</span> Prometheus exporter <span class="hljs-keyword">for</span> Slurm metrics                           <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>gopkgin<span class="hljs-operator">-</span>check                             <span class="hljs-operator">|</span> Rich testing framework <span class="hljs-keyword">for</span> the Go language                      <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>org<span class="hljs-operator">-</span>x<span class="hljs-operator">-</span>sys                                 <span class="hljs-operator">|</span> Go packages <span class="hljs-keyword">for</span> low<span class="hljs-operator">-</span>level interaction with the operating system <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> golang<span class="hljs-operator">-</span>packaging                                 <span class="hljs-operator">|</span> A toolchain to help packaging golang                            <span class="hljs-operator">|</span> package
  <span class="hljs-operator">|</span> python3<span class="hljs-operator">-</span>avocado<span class="hljs-operator">-</span>plugins<span class="hljs-operator">-</span>golang                   <span class="hljs-operator">|</span> Avocado Plugin <span class="hljs-keyword">for</span> Execution of golang tests                    <span class="hljs-operator">|</span> package
</code></pre><p>Setelah itu tinggal jalankan perintah berikut ini untuk instalasi  <a target="_blank" href="https://go.dev">Golang</a>.</p>
<pre><code>$ sudo zypper <span class="hljs-keyword">install</span> <span class="hljs-keyword">go</span>
</code></pre><p>Setelah proses instalasi selesai, untuk memverifikasi apa yang sudah kita install, bisa dilakukan dengan cara berikut.</p>
<pre><code>$ go <span class="hljs-keyword">version</span>
go <span class="hljs-keyword">version</span> go1<span class="hljs-number">.17</span><span class="hljs-number">.6</span> linux/amd64
</code></pre><p>Done, sekarang tinggal belajarnya, mudah-mudahan tetap semangat, jangan cuman install doank abis itu ditinggal hehehe </p>
]]></content:encoded></item><item><title><![CDATA[Bye Bye Windows]]></title><description><![CDATA[Sudah sejak lama saya menggunakan 2 sistem operasi yang berbeda, mmm mungkin sudah 2 dekade. Dimulai saat usia 20 tahunan saat idealisme masih membara, sudah menggunakan Redhat, Mandrake, yang berdampingan dengan Windows bajakan hehehe
Saat sudah mul...]]></description><link>https://blog.ularkadut.net/bye-bye-windows</link><guid isPermaLink="true">https://blog.ularkadut.net/bye-bye-windows</guid><category><![CDATA[Linux]]></category><category><![CDATA[Windows]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Mon, 03 Jan 2022 22:48:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/xbEVM6oJ1Fs/upload/v1641249811990/uYB3m8Aho.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Sudah sejak lama saya menggunakan 2 sistem operasi yang berbeda, mmm mungkin sudah 2 dekade. Dimulai saat usia 20 tahunan saat idealisme masih membara, sudah menggunakan Redhat, Mandrake, yang berdampingan dengan Windows bajakan hehehe</p>
<p>Saat sudah mulai kerja sebagai abdi negara, saya mulai memisahkan dan melihat kemajuan teknologi di 1 dekade terakhir sangat pesat dan membuatnya menjadi murah, OS Linux saya gunakan di VPS buat oprek-oprek dan Windows Original saya gunakan di PC.</p>
<p>Dan kini, udah saya mulai sejak akhir 2021 sih, saya ucapkan <strong>Bye Bye Windows</strong> karena dengan teknologi Cloud saat ini dan OS Linux yang semakin matang dan nyaman, saya merasa semua kebutuhan saya untuk bekerja bisa diselesaikan di OS Linux. Bahkan saat ini, saking nyamannya, berbeda distro Linux pun bukan masalah. </p>
<p>Di Server saya menggunakan AlmaLinux, Ubuntu, Debian. Di Laptop dan PC saya menggunakan Chrome OS, dan OpenSUSE, Alhamdulillah semuanya sangat nyaman dan aman untuk digunakan. Menurut saya, seharusnya semua PC di Pemerintahan Republik Indonesia, agar diinstall OS Linux saja. Pastinya sangat menghemat uang negara hehehe</p>
]]></content:encoded></item><item><title><![CDATA[Error: Failed to add a new Printer]]></title><description><![CDATA[Di awal tahun 2022 ini, saya ingin suasana baru di PC AIO kantor yang sebelumnya menggunakan  Pop OS  berbasis  Ubuntu  menjadi menggunakan  Manjaro Gnome  berbasis  ArchLinux .
Proses instalasi seperti biasa tidak sulit, zaman sekarang para pengemba...]]></description><link>https://blog.ularkadut.net/error-failed-to-add-a-new-printer</link><guid isPermaLink="true">https://blog.ularkadut.net/error-failed-to-add-a-new-printer</guid><category><![CDATA[Cloud]]></category><category><![CDATA[linux-basics]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Mon, 03 Jan 2022 08:53:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/oPyAcpkQch0/upload/v1641200030455/ZB_skq1Ez.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Di awal tahun 2022 ini, saya ingin suasana baru di <strong>PC AIO</strong> kantor yang sebelumnya menggunakan  <a target="_blank" href="https://pop.system76.com/">Pop OS</a>  berbasis  <a target="_blank" href="https://ubuntu.com">Ubuntu</a>  menjadi menggunakan  <a target="_blank" href="https://manjaro.org">Manjaro Gnome</a>  berbasis  <a target="_blank" href="https://archlinux.org">ArchLinux</a> .</p>
<p>Proses instalasi seperti biasa tidak sulit, zaman sekarang para pengembang distro berbasis <strong>Linux</strong> telah membuat <strong>Linux</strong> menjadi sangat mudah sehingga proses instalasi yang sulit di zaman saya (20 tahun) yang lalu menjadi sangat mudah semudah meng klik <em>mouse</em> hehehe</p>
<p>Biasanya di tahap awal, saya instalasi terlebih dahulu aplikasi-aplikasi yang biasa saya gunakan. Karena saat ini saya bekerja kebanyakan di <strong>Cloud</strong>, maka saya menginstall aplikasi  <a target="_blank" href="https://chrome.com">Chrome</a> , sebagai <em>browser</em> utama saya, hal ini saya lakukan karena untuk melakukan pekerjaan kantor seperti membuat surat, membuat presentasi dan menganalisa data saya lakukan di <strong>Cloud</strong> nya  <a target="_blank" href="https://google.com">Google</a>. Tidak lupa saya juga menginstall aplikasi  <a target="_blank" href="https://zoom.us">Zoom</a>  untuk mengikuti webinar atau undangan rapat secara daring yang sejak zaman <strong>Covid 19</strong> menjadi trend.</p>
<p>Dan terakhir, saya mencoba untuk meng-<em>add</em> <strong>Printer Epson L3110</strong> saya. Alhamdulillah ada sedikit masalah dengan pesan <em>error</em> sebagai berikut:</p>
<pre><code>Error: Failed <span class="hljs-keyword">to</span> <span class="hljs-keyword">add</span> a <span class="hljs-built_in">new</span> Printer
</code></pre><p>Saya coba ulang lagi, tetap keluar masalah yang sama. Alhamdulillah, setelah cari-cari solusi di  <a target="_blank" href="https://google.com">Google</a> , akhirnya ketemu juga jalan keluar pemecahan masalahnya, yaitu dengan menginstalasi paket aplikasi berikut:</p>
<pre><code>system<span class="hljs-operator">-</span>config<span class="hljs-operator">-</span>printer
</code></pre><p>Setelah proses instalasi paket <code>system-config-printer</code> selesai, maka proses meng-<em>add</em> Printer berjalan dengan aman dan damai. </p>
<p>Alhamdulillah :)</p>
]]></content:encoded></item><item><title><![CDATA[Menambah Storage ke Dalam Virtual Machine]]></title><description><![CDATA[Saat ini kita berada di era Cloud. Segala sesuatunya berbasis Cloud. Untuk urusan Storage di Virtual Machine, biasanya provider menyediakan fitur Cloud Storage sebagai fitur tambahan yang bisa kita manfaatkan. Untuk menambahkannya ke dalam Virtual Ma...]]></description><link>https://blog.ularkadut.net/menambah-storage-ke-dalam-virtual-machine</link><guid isPermaLink="true">https://blog.ularkadut.net/menambah-storage-ke-dalam-virtual-machine</guid><category><![CDATA[storage]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Cloud]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Mon, 27 Dec 2021 07:58:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/iar-afB0QQw/upload/v1640592018606/OJKojlzki.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Saat ini kita berada di era <em>Cloud</em>. Segala sesuatunya berbasis <em>Cloud</em>. Untuk urusan <em>Storage</em> di <em>Virtual Machine</em>, biasanya provider menyediakan fitur <em>Cloud Storage</em> sebagai fitur tambahan yang bisa kita manfaatkan. Untuk menambahkannya ke dalam <em>Virtual Machine</em> pun cukup mudah. Harganya pun cukup murah, bahkan ada satu provider yang biasa saya pakai menjual <em>Cloud Storage</em> dengan kapasitas 250 GB dengan harga $1.25 / bulan.</p>
<p>Langkah selanjutnya yang diperlukan adalah dengan meng<em>attach</em> <em>Cloud Storage</em> ke <em>Virtual Machine</em> yang saya miliki, selanjutnya saya tinggal mengkonfirmasi jika <em>Cloud Storage</em> tersebut sudah ter<em>attach</em> di <em>Virtual Machine</em> yang saya miliki dengan cara:</p>
<pre><code>$ sudo fdisk <span class="hljs-operator">-</span>l
Disk <span class="hljs-operator">/</span>dev<span class="hljs-operator">/</span>vda: <span class="hljs-number">20</span> GiB, <span class="hljs-number">21474836480</span> <span class="hljs-keyword">bytes</span>, <span class="hljs-number">41943040</span> sectors
Units: sectors of <span class="hljs-number">1</span> <span class="hljs-operator">*</span> <span class="hljs-number">512</span> <span class="hljs-operator">=</span> <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span>
Sector size (logical<span class="hljs-operator">/</span>physical): <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span> <span class="hljs-operator">/</span> <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span>
I<span class="hljs-operator">/</span>O size (minimum<span class="hljs-operator">/</span>optimal): <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span> <span class="hljs-operator">/</span> <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span>
Disklabel <span class="hljs-keyword">type</span>: dos
Disk identifier: <span class="hljs-number">0xd37b65d0</span>

Device     Boot Start      End  Sectors Size Id Type
<span class="hljs-operator">/</span>dev<span class="hljs-operator">/</span>vda1  <span class="hljs-operator">*</span>     <span class="hljs-number">2048</span> <span class="hljs-number">41940735</span> <span class="hljs-number">41938688</span>  20G <span class="hljs-number">83</span> Linux

Disk <span class="hljs-operator">/</span>dev<span class="hljs-operator">/</span>sda: <span class="hljs-number">256</span> GiB, <span class="hljs-number">274877906944</span> <span class="hljs-keyword">bytes</span>, <span class="hljs-number">536870912</span> sectors
Disk model: SLAB            
Units: sectors of <span class="hljs-number">1</span> <span class="hljs-operator">*</span> <span class="hljs-number">512</span> <span class="hljs-operator">=</span> <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span>
Sector size (logical<span class="hljs-operator">/</span>physical): <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span> <span class="hljs-operator">/</span> <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span>
I<span class="hljs-operator">/</span>O size (minimum<span class="hljs-operator">/</span>optimal): <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span> <span class="hljs-operator">/</span> <span class="hljs-number">512</span> <span class="hljs-keyword">bytes</span>
</code></pre><p>Terlihat bahwa ada <em>Cloud Storage</em> sebesar <strong>256 GiB</strong> di <code>/dev/sda</code>, yang menandakan bahwa <em>Cloud Storage</em> tersebut sudah ter<em>attach</em> di <em>Virtual Machine</em> kita.</p>
<p>Untuk membuat <em>mountpoint</em>, sebelumnya saya harus membuat <em>filesystem</em> dari <em>Cloud Storage</em> tersebut, dengan cara:</p>
<pre><code>$ mkfs.ext4 <span class="hljs-operator">/</span>dev<span class="hljs-operator">/</span>sda
$ mkdir <span class="hljs-operator">/</span>mnt<span class="hljs-operator">/</span>myvolume
$ mount <span class="hljs-operator">/</span>dev<span class="hljs-operator">/</span>sda <span class="hljs-operator">/</span>mnt<span class="hljs-operator">/</span>myvolume
</code></pre><p>Agar konfigurasi <em>moountpoint</em> tidak hilang, saya cukup menjalankan perintah berikutL</p>
<pre><code>$ echo <span class="hljs-string">'/dev/sda /mnt/myvolume ext4 defaults 0 2'</span> <span class="hljs-operator">&gt;</span><span class="hljs-operator">&gt;</span> <span class="hljs-operator">/</span>etc<span class="hljs-operator">/</span>fstab
</code></pre><p><em>Done ...</em></p>
]]></content:encoded></item><item><title><![CDATA[Cara Menambahkan User ke Dalam Group Sudoers di Ubuntu / Debian]]></title><description><![CDATA[sudo adalah perintah yang mengizinkan users yang kita percayai untuk dapat menjalankan perintah sebagai root.
Di artikel kali ini kita akan mencoba dua cara memberikan hak sudo kepada user tertentu. Cara pertama adalah dengan menambahkan user ke dala...]]></description><link>https://blog.ularkadut.net/cara-menambahkan-user-ke-dalam-group-sudoers-di-ubuntu-debian</link><guid isPermaLink="true">https://blog.ularkadut.net/cara-menambahkan-user-ke-dalam-group-sudoers-di-ubuntu-debian</guid><category><![CDATA[admin]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Sat, 25 Dec 2021 08:04:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/4Mw7nkQDByk/upload/v1640419441875/jD1RMbA7E.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>sudo</strong> adalah perintah yang mengizinkan <em>users</em> yang kita percayai untuk dapat menjalankan perintah sebagai <strong>root</strong>.</p>
<p>Di artikel kali ini kita akan mencoba dua cara memberikan hak <strong>sudo</strong> kepada <em>user</em> tertentu. Cara pertama adalah dengan menambahkan <em>user</em> ke dalam <em>sudo group</em>. Secara <em>default</em>, di distribusi berbasis <strong>Debian</strong>, anggota dari group <strong>sudo</strong> memiliki hak akses <strong>sudo</strong>. Cara kedua yaitu dengan menambahkan <em>user</em> ke dalam <strong>file sudoers</strong>. File ini berisi informasi yang mengatur <em>users</em> dan <em>groups</em> yang mendapat hak akses <strong>sudo</strong>.</p>
<h3 id="heading-menambahkan-user-ke-dalam-sudo-group">Menambahkan <em>User</em> ke Dalam <em>Sudo Group</em></h3>
<p>Di <strong>Ubuntu</strong> atau <strong>Debian</strong>, cara mudah untuk memberikan hak akses <strong>sudo</strong> kepada <em>user</em> yaitu dengan menambahkan <em>user</em> tersebut ke dalam <strong>sudo</strong> group. Anggota dari group <strong>sudo</strong> dapat menjalankan perintah sebagai <strong>root</strong> dengan menambahkan perintah <strong>sudo</strong>. <em>Password</em> yang digunakan saat menjalankan perintah <strong>sudo</strong> sebelum perintah utama pun sama dengan <em>password</em> user dimaksud.</p>
<p>Kita asumsikan <em>user</em> yang akan kita masukkan ke dalam group <strong>sudo</strong> sudah ada. Langkah selanjutnya, kamu cukup menjalankan perintah sebagai berikut:</p>
<p><code>$ usermod -aG sudo username</code></p>
<p>Untuk meyakinkan bahwa <em>user</em> tersebut sudah mendapat hak akses <strong>sudo</strong>, kamu tinggal menjalankan perintah <code>whoami</code>:</p>
<p><code>$ sudo whoami</code></p>
<p>Kamu akan diminta untuk memasukkan <em>password</em>, jika <em>user</em> yang menjalankan perintah di atas memiliki hak akses <strong>sudo</strong>, maka perintah di atas akan menampilkan pesan <strong>root</strong>:</p>
<pre><code><span class="hljs-attribute">Output</span>
root
</code></pre><p>Jika kamu mendapatkan pesan <em>error</em>, maka berarti <em>user</em> yang kamu gunakan tidak memiliki hak akses <strong>sudo</strong>.</p>
<h3 id="heading-menambahkan-user-ke-dalam-sudoers-file">Menambahkan User ke Dalam Sudoers File</h3>
<p><em>Users</em> dan <em>Groups</em> yang memiliki hak akses <strong>sudo</strong> di definisikan di dalam file <code>/etc/sudoers</code>. Menambahkan <em>user</em> tertentu ke dalam file tersebut akan memberikan kamu hak akses untuk menjalankan perintah tertentu sesuai dengan aturan yang telah ditetapkan.</p>
<p>Kamu dapat mengkonfigurasi hak akses <em>user</em> untuk mendapatkan hak <strong>sudo</strong> dengan cara mengkonfigurasikan file di dalam direktori <code>/etc/sudoers.d</code>.</p>
<p>Selalu gunakan perintah <code>visudo</code> untuk mengedit file <code>/etc/sudoers</code>. Perintah ini akan mengecek file tersebut terlebih dahulu jika ada <em>syntax errors</em> sebelum kamu menyimpannya. Jika ada <em>errors</em>, maka konfigurasi baru tidak akan disimpan. </p>
<p>Biasanya, <code>visudo</code> menggunakan editor <strong>vim</strong> untuk membuka <code>/etc/sudoers</code>. Jika kamu tidak punya pengalaman menggunakan <strong>vim</strong> dan kamu ingin mengedit file tersebut menggunakan <strong>nano</strong>, kamu dapat menggantinya dengan cara:</p>
<p><code>$ EDITOR=nano visudo</code></p>
<p>Ok, selanjutnya kamu dapat memberikan hak akses <strong>sudo</strong> kepada <em>user</em> tertentu tanpa perlu memasukkan password. Cukup buka file <code>/etc/sudoers</code>:</p>
<p><code>$ visudo</code></p>
<p>Turun ke baris paling bawah dan masukkan baris berikut:</p>
<p><code>username ALL=(ALL) NOPASSWD:ALL</code></p>
<p>Kemudian simpan perubahan yang telah kami lakukan dan keluar dari editor <strong>nano</strong>. Jangan lupa untuk mengganti <em>username</em> dengan <em>user</em> yang kamu inginkan.</p>
<h3 id="heading-kesimpulan">Kesimpulan</h3>
<p>Memberikan hak akses <strong>sudo</strong> ke <em>user</em> tertentu di <strong>Ubuntu</strong> atau <strong>Debian</strong> bukan pekerjaan sulit, yang perlu dilakukan adalah dengan menambahkan <em>user</em> tertentu ke dalam group <strong>sudo</strong>. </p>
]]></content:encoded></item><item><title><![CDATA[Hashnode - Blognya para developer]]></title><description><![CDATA[Yah, walaupun saat ini saya gak termasuk Developer lagi, boleh kan ya saya membuat Blog di Hashnode hehehe. Yang saya suka dari Hashnode adalah bisa Custom Domain, jadi saya bisa menggunakan Domain saya di blog ini.
Ok deh, sementara segini dulu ya t...]]></description><link>https://blog.ularkadut.net/hashnode-blognya-para-developer</link><guid isPermaLink="true">https://blog.ularkadut.net/hashnode-blognya-para-developer</guid><category><![CDATA[blog]]></category><dc:creator><![CDATA[Kurnia Ramadhan]]></dc:creator><pubDate>Thu, 23 Dec 2021 12:35:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/l3N9Q27zULw/upload/v1640271083042/Z0GxkGxra.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Yah, walaupun saat ini saya gak termasuk Developer lagi, boleh kan ya saya membuat Blog di <strong>Hashnode</strong> hehehe. Yang saya suka dari <strong>Hashnode</strong> adalah bisa <em>Custom Domain</em>, jadi saya bisa menggunakan Domain saya di blog ini.</p>
<p>Ok deh, sementara segini dulu ya tulisannya, ke depannya mudah2an tetap semangat untuk terus menulis dan menulis.</p>
]]></content:encoded></item></channel></rss>