<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Aliif</title>
    <description>The latest articles on Forem by Aliif (@aliif).</description>
    <link>https://forem.com/aliif</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F730803%2Fa1763f44-e5b2-41a0-840e-d2053ad00782.png</url>
      <title>Forem: Aliif</title>
      <link>https://forem.com/aliif</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aliif"/>
    <language>en</language>
    <item>
      <title>Aplikasi Alerting &amp; Monitoring untuk Virtual Machine</title>
      <dc:creator>Aliif</dc:creator>
      <pubDate>Wed, 15 Feb 2023 03:18:14 +0000</pubDate>
      <link>https://forem.com/aliif/aplikasi-alerting-monitoring-untuk-monitoring-virtual-machine-hae</link>
      <guid>https://forem.com/aliif/aplikasi-alerting-monitoring-untuk-monitoring-virtual-machine-hae</guid>
      <description>&lt;p&gt;Sebagai mahasiswa software engineering saya kadang harus mendeploy aplikasi yang sudah dibuat ke server agar aplikasi yang sudah kita buat dapat digunakan oleh banyak orang.&lt;/p&gt;

&lt;p&gt;Semakin banyak aplikasi yang kita buat maka akan semakin banyak server yang kita miliki,apalagi satu aplikasi bila semakin besar dan penggunanya semakin banyak maka akan melakukan horizontal scaling dan akhirnya memiliki beberapa server yang saling terhubung.&lt;/p&gt;

&lt;p&gt;Server terkadang bisa saja mati ataupun error sehingga aplikasi tidak bisa diakses, lemot, ataupun fungsinya tidak sesuai karena itu para user dan client bisa kesal saat menggunakan aplikasinya.&lt;/p&gt;

&lt;p&gt;Tentunya kita developer tak mau membuat experience yang buruk kepada para user yang menggunakan aplikasi yang kita buat karena itu kita perlu yang namanya monitoring performance aplikasi kita untuk memastikan selalu bekerja dengan baik, jangan sampai kita baru sadar ketika ada protes atau keluhan dari user.&lt;/p&gt;

&lt;p&gt;Sebenarnya sudah banyak aplikasi opesource ataupun berbayar untuk melakukan monitoring &amp;amp; alerting seperti promotheus, datadog, newrelic, pagerduty, dll.&lt;/p&gt;

&lt;p&gt;Namun kali ini saya ngide untuk membuat nya sendiri dengan bentuk yang lebih sederhana dan standalone dalam satu server.&lt;/p&gt;

&lt;p&gt;Jadi idenya adalah akan ada dua aplikasi yaitu client yang akan dipasang di server tiap app kita yang sedang berjalan fungsinya adalah untuk melakukan capturing performance server dengan durasi yang sudah ditentukan dan aplikasi yang kedua yaitu host yang akan dipasang di server khusus untuk monitoring terhadap semua server yang terpasang aplikasi client didalamnya.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cara Kerja Sistem
&lt;/h2&gt;

&lt;p&gt;Pertama aplikasi client akan mengcapture performance server dari mulai cpu usage, gpu usage, ram, memory, disk IO, internet speed, dll. ketika data sudah dicapture maka data akan dimasukkan dalam format json pada in memory daatabase seperti redis lalu aplikasi server akan melakukan hit via koneksi http rest API untuk lalu aplikasi client akan meresponse nya dengan mengirimkan data tersebut lalu aplikasi server akan menyimpan data tersebut ke dalam database entah itu postgresql,dll. setelah itu data akan bisa ditampilkan dengan bagus dengan GUI. bila aplikasi client terjadi connection timeout ketika ditembak oleh server maka aplikasi server akan melakukan trigger untuk menelepon developer karena ini masalah yang sangat serius yaitu salah satu server aplikasi kita tidak dapat diakses.&lt;/p&gt;

&lt;p&gt;Untuk melakukan panggilan telepon itu mudah saja kita cukup menggunakan third party api seperti twilio maka kita dapat melakukannya dengan mudah.&lt;/p&gt;

&lt;p&gt;Tentunya tidak hanya sekedar alerting terhadap server yang tidak dapat diakses saja namun kita juga dapat mengcustomize aplikasi yang kita buat dengan menambahkan kemampuan untuk melakukan alerting via wa message ataupun email ketika penggunakan resource yang terlalu tinggi.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kesimpulan
&lt;/h2&gt;

&lt;p&gt;Monitoring server sangat berguna untuk mengantisipasi dengan lebih cepat terkait kinerja aplikasi yang sudah kita buat.&lt;/p&gt;

&lt;p&gt;Selain monitoring server lebih baik lagi kita juga melakukan monitoring aplikasi secara langsung misal saja dengan memonitor api response dan latency request response Rest AP, dll.&lt;/p&gt;

&lt;p&gt;Dengan monitoring yang bagus maka akan membuat aplikasi lebih menyenangkan untuk digunakan oleh para pengguna.&lt;/p&gt;

</description>
      <category>magangsrdkomatik2023</category>
      <category>monitoring</category>
      <category>alerting</category>
      <category>vm</category>
    </item>
    <item>
      <title>I made a program that can manipulate GitHub activity</title>
      <dc:creator>Aliif</dc:creator>
      <pubDate>Sat, 11 Dec 2021 02:30:50 +0000</pubDate>
      <link>https://forem.com/aliif/how-to-manipulate-github-activity-51n7</link>
      <guid>https://forem.com/aliif/how-to-manipulate-github-activity-51n7</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;disclaimer: I made this project with the aim of having fun and to learn to automate things using the Python language&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have you ever seen the activity timeline on someone's GitHub profile is very green and looks very active and consistent?&lt;/p&gt;

&lt;p&gt;Do you want to make your GitHub profile very consistent even though it has been less green in the past?&lt;/p&gt;

&lt;p&gt;From this :&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1639130723281%2Fy4FMp_0BW7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1639130723281%2Fy4FMp_0BW7.png" alt="unactive-commit.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To this :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1639130675466%2FiQUQN_wHZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1639130675466%2FiQUQN_wHZ.png" alt="active-commit.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;take it easy, I have a solution, you can use a program that I made using Python 3 language, by using this script you can modify the timeline of your activities in the past until now to be very green and consistent.&lt;/p&gt;

&lt;p&gt;repository link : &lt;a href="https://github.com/aliifam/github-activity-generator" rel="noopener noreferrer"&gt;GitHub Activity Generator&lt;/a&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  How to use?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Make sure in your Machine already installed Python 3.6 + and Git.&lt;/li&gt;
&lt;li&gt;Make sure Git in in your Machine already configured with Github.&lt;/li&gt;
&lt;li&gt;create an empty Github Repository can public or private, but I prefer you to make it private. &lt;strong&gt;do not initialize it&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Download the &lt;a href="https://github.com/aliifam/github-activity-generator/archive/main.zip" rel="noopener noreferrer"&gt;main.py script&lt;/a&gt; and open the file in your text editor.&lt;/li&gt;
&lt;li&gt;delete the file &lt;strong&gt;commit.txt&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;customize the script in main.py for configuration as you want in here:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;total_day&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;366&lt;/span&gt; &lt;span class="c1"&gt;#total days back
&lt;/span&gt;&lt;span class="n"&gt;commit_frequency&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="c1"&gt;#commit time per day
&lt;/span&gt;&lt;span class="n"&gt;repo_link&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://github.com/aliifam/github-activity-generator.git&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;after the script is already, you just run the script and see the magic.&lt;/li&gt;
&lt;li&gt;the script will make a new commit.txt file and make very many commit as you want after the process finished the script will push the repository to GitHub.&lt;/li&gt;
&lt;li&gt;after all the process is successful, please press the star for this repository😊.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  How the Program Works?
&lt;/h2&gt;

&lt;p&gt;This simple program basically uses a nested while loop, the first loop to move from day to day and the loop inside to do several commits in one day, then in the commit date manipulation this program uses the python datetime module and to switch days using the timedelta function with the parameter number of days which keeps decreasing with every iteration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;tl&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;ct&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;commit_frequency&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;ct&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;commit.txt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a+&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;l_date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;timedelta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="n"&gt;pointer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;formatdate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l_date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%Y-%m-%d&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;commit ke &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ctr&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;formatdate&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;git add .&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;git commit --date=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;formatdate&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; 12:15:10&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt; -m &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;commit ke &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ctr&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;commit ke &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ctr&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;formatdate&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;ct&lt;/span&gt;&lt;span class="o"&gt;-=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;ctr&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;pointer&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;tl&lt;/span&gt;&lt;span class="o"&gt;-=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;very simple right?&lt;/p&gt;

&lt;p&gt;you can see the complete script in  &lt;a href="https://github.com/aliifam/github-activity-generator/blob/main/main.py" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;thank you for reading my sari article, if there are suggestions, criticisms or questions I am very open to it, please use the comments column&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
