<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vobinax</title>
    <description>The latest articles on DEV Community by Vobinax (@vobinax).</description>
    <link>https://dev.to/vobinax</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4049955%2F2c1063ab-50da-4688-ba66-81717ec83540.png</url>
      <title>DEV Community: Vobinax</title>
      <link>https://dev.to/vobinax</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vobinax"/>
    <language>en</language>
    <item>
      <title>Summer Log #3: A Message, Memories and Building a MikroTik Monitor</title>
      <dc:creator>Vobinax</dc:creator>
      <pubDate>Mon, 27 Jul 2026 18:18:37 +0000</pubDate>
      <link>https://dev.to/vobinax/summer-log-3-a-message-memories-and-building-a-mikrotik-monitor-3d3b</link>
      <guid>https://dev.to/vobinax/summer-log-3-a-message-memories-and-building-a-mikrotik-monitor-3d3b</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Every log has a story&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;خب، روز سوم&lt;/p&gt;

&lt;p&gt;الان که دارم این لاگ رو می‌نویسم، روز تقریبا تموم شده و امروز از اون روزهایی بود که حس خوبی داشت&lt;/p&gt;

&lt;p&gt;اگر بخوام بهش نگاه کنم، می‌تونم بگم یکی از روزهای خوب ۱۴۰۵ بود&lt;/p&gt;

&lt;p&gt;البته امیدوارم بهترینش نباشه&lt;/p&gt;

&lt;p&gt;چون هنوز کلی برنامه داریم، کلی چیز هست که باید ساخته بشه و کلی روز بهتر قراره بیاد&lt;/p&gt;




&lt;h1&gt;
  
  
  یک پیام غیرمنتظره
&lt;/h1&gt;

&lt;p&gt;دیروز ساعت &lt;strong&gt;17:54&lt;/strong&gt; یک پیام دریافت کردم&lt;/p&gt;

&lt;p&gt;راستش آن لحظه خیلی آماده جواب دادن نبودم&lt;/p&gt;

&lt;p&gt;من معمولا پیام کسی را بی‌جواب نمی‌گذارم، حتی اگر ناراحت باشم یا فاصله‌ای ایجاد شده باشد&lt;/p&gt;

&lt;p&gt;اما بعضی وقت‌ها آدم نیاز داره سکوت کنه&lt;/p&gt;

&lt;p&gt;چند دقیقه، چند ساعت یا حتی بیشتر&lt;/p&gt;

&lt;p&gt;نه برای نادیده گرفتن، فقط برای اینکه بتونه با&lt;br&gt;
ذهن آرام‌تر و بی کینه تر جواب بده&lt;/p&gt;

&lt;p&gt;تایم نهار تصمیم گرفتم بخونم و جواب بدم &lt;br&gt;
 هر چی نباشه اون کسی بود که موقع&lt;br&gt;
 اعتراضات حالم رو پرسید&lt;/p&gt;

&lt;p&gt;حتی وقتی راجع به &lt;/p&gt;

&lt;p&gt;اون روز جمعه نکبت بار شنید &lt;br&gt;
با خطرات اون روزا برای عیادت من اومد &lt;br&gt;
ای کاش اون روزا بجای ساچمه تیر میخوردم&lt;br&gt;
ای کاش بعد دیدن اون کشتار &lt;br&gt;
من هم زنده نمی موندم &lt;br&gt;
شاید غریبه باشیم &lt;br&gt;
شاید دلخور باشم &lt;br&gt;
ولی خب هرگز خوبی ادم ها رو فراموش نمیکنم &lt;/p&gt;



&lt;p&gt;پیام طولانی بود&lt;/p&gt;

&lt;p&gt;خیلی طولانی&lt;/p&gt;

&lt;p&gt;و این دقیقا چیزی است که همیشه دوست داشتم&lt;/p&gt;

&lt;p&gt;آدم‌هایی که من را می‌شناسند می‌دانند که خودم هم معمولا جواب‌های کوتاه نمی‌دهم&lt;/p&gt;

&lt;p&gt;به نظرم نوشتن زیاد همیشه به معنی زیاد حرف زدن نیست&lt;/p&gt;

&lt;p&gt;گاهی یعنی برای توضیح دادن، برای فهمیده شدن و برای احترام گذاشتن وقت گذاشتی&lt;/p&gt;

&lt;p&gt;و این پیام هم همین حس را داشت&lt;/p&gt;

&lt;p&gt;نه فقط دفاع از خودت&lt;br&gt;
 بلکه تلاش برای فهمیدن و توضیح دادن&lt;/p&gt;


&lt;h1&gt;
  
  
  مرور خاطرات
&lt;/h1&gt;

&lt;p&gt;بعد از خواندن پیام، چند سال گذشته دوباره مرور شد&lt;/p&gt;

&lt;p&gt;بعضی آدم‌ها و بعضی روزها، حتی بعد از گذشت زمان، یک گوشه از ذهن باقی می‌مونن&lt;/p&gt;

&lt;p&gt;سال‌هایی که گذشت&lt;br&gt;
از &lt;strong&gt;۱۳۹۹&lt;/strong&gt; تا &lt;strong&gt;۱۴۰۲&lt;/strong&gt;&lt;br&gt;
سال‌هایی پر از تغییر، تجربه و اتفاق‌های مختلف&lt;br&gt;
پونه &lt;br&gt;
فرزانگان &lt;br&gt;
اختیاریه&lt;/p&gt;

&lt;p&gt;خب خیلی گذشته &lt;br&gt;
احساس پیری میکنم &lt;/p&gt;

&lt;p&gt;سال &lt;strong&gt;۱۴۰۳&lt;/strong&gt; ارتباط کمتر شد و هر کسی مسیر خودش رو دنبال کرد&lt;br&gt;
تو کنکورت &lt;br&gt;
و من هم &lt;br&gt;
درگیر درد و دل با این باینری ها بودم &lt;/p&gt;

&lt;p&gt;اردیبهشت ۴۰۴ &lt;br&gt;
 اتفاق‌هایی افتاد که شاید بهتر باشه فقط به عنوان تجربه به اون نگاه کنیم&lt;br&gt;
نه چیزی که هر روز دوباره مرور شه&lt;/p&gt;

&lt;p&gt;گاهی گذشته رو نمیشه تغییر داد&lt;br&gt;
و خب هممون اشتباه میکنیم &lt;/p&gt;



&lt;p&gt;بعد دوباره رسیدیم به یک نقطه جدید&lt;br&gt;
از ۴فروردین تا ۲۰ اردیبهشت&lt;br&gt;
امسال &lt;br&gt;
خب بازم شاید همون طوری که امروز گفتی  هردو یه چیزی رو اشتباه فهمیدیم &lt;br&gt;
این بار با شناخت بیشتر&lt;br&gt;
با تجربه بیشتر&lt;/p&gt;

&lt;p&gt;بعضی مسیرها دوباره تکرار نمی‌شوند حداقل دوباره امیدوارم نشه&lt;/p&gt;

&lt;p&gt;اما می‌تونه شکل بهتری پیدا کنن&lt;/p&gt;
&lt;h2&gt;
  
  
  ممنونم سودا
&lt;/h2&gt;
&lt;h1&gt;
  
  
  Today's Work
&lt;/h1&gt;

&lt;p&gt;بعد از این بخش&lt;br&gt;
 بیشتر زمان کار روی یک پروژه سپری شد&lt;/p&gt;

&lt;p&gt;ساخت یک &lt;br&gt;
Microservice&lt;br&gt;
برای مانیتورینگ پکیج های&lt;br&gt;
MikroTik&lt;/p&gt;

&lt;p&gt;مدلی که تو دیتا سنتر داشتیم این بود 😼&lt;/p&gt;
&lt;h2&gt;
  
  
  MikroTik RB4011iGS+RM
&lt;/h2&gt;

&lt;p&gt;یک روتر قدرتمند برای شبکه‌های متوسط&lt;br&gt;
 که &lt;br&gt;
RouterOS API&lt;br&gt;
هم داره&lt;/p&gt;

&lt;p&gt;ایده سرویس ساده بود&lt;br&gt;
یک &lt;br&gt;
Agent&lt;br&gt;
کوچیک نوشته‌شده با&lt;br&gt;
 Go&lt;br&gt;
 که به &lt;br&gt;
MikroTik&lt;br&gt;
 متصل شه، اطلاعات پکیج های نصب‌شده رو بررسی کنه و وضعیت رو برای یک سرور مرکزی ارسال میکنه &lt;br&gt;
Sd03::12&lt;/p&gt;


&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         +----------------+
         |    MikroTik    |
         |    RB4011      |
         |  RouterOS API  |
         +--------+-------+
                  |
                  |
            Go Microservice
            Package Monitor
                  |
  +---------------+----------------+
  |                                |
  | Package Scanner                |
  | Health Reporter                |
  | Central Server REST API        |
  +--------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;Data Model&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;type&lt;/span&gt; &lt;span class="n"&gt;RouterPackage&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Name&lt;/span&gt;      &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="s"&gt;`json:"name"`&lt;/span&gt;
    &lt;span class="n"&gt;Version&lt;/span&gt;   &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="s"&gt;`json:"version"`&lt;/span&gt;
    &lt;span class="n"&gt;Disabled&lt;/span&gt;  &lt;span class="kt"&gt;bool&lt;/span&gt;   &lt;span class="s"&gt;`json:"disabled"`&lt;/span&gt;
    &lt;span class="n"&gt;RouterID&lt;/span&gt;  &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="s"&gt;`json:"router_id"`&lt;/span&gt;
    &lt;span class="n"&gt;Timestamp&lt;/span&gt; &lt;span class="kt"&gt;int64&lt;/span&gt;  &lt;span class="s"&gt;`json:"timestamp"`&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;اسم&lt;br&gt;
Package&lt;/p&gt;

&lt;p&gt;نسخه&lt;/p&gt;

&lt;p&gt;وضعیت فعال بودن&lt;/p&gt;

&lt;p&gt;شناسه روتر&lt;/p&gt;

&lt;p&gt;زمان ثبت اطلاعات&lt;/p&gt;



&lt;p&gt;Package Scanner&lt;/p&gt;

&lt;p&gt;Agent&lt;br&gt;
 از طریق &lt;br&gt;
RouterOS API &lt;/p&gt;

&lt;p&gt;اطلاعات پکیج ها رو دریافت میکنه&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;GetPackages&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;([]&lt;/span&gt;&lt;span class="n"&gt;RouterPackage&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/system/package/print"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;packages&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="n"&gt;RouterPackage&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="k"&gt;range&lt;/span&gt; &lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Re&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;packages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;packages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RouterPackage&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="n"&gt;Version&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;packages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Reporting&lt;/p&gt;

&lt;p&gt;بعد از جمع‌آوری اطلاعات&lt;br&gt;
Agent&lt;br&gt;
داده‌ها رو به سرور مرکزی ارسال می‌کنه&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;Report&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="n"&gt;RouterPackage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

    &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Marshal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="s"&gt;"https://monitor.example.com/api/mikrotik/packages"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s"&gt;"application/json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;bytes&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;defer&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Example Payload&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"router_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"branch-tehran-01"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"device"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RB4011"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"packages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"routeros"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7.16.1"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wireless"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7.16.1"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;پایان روز&lt;/p&gt;

&lt;p&gt;امروز شاید از بیرون روز خیلی شلوغی نبود&lt;br&gt;
ولی روز به شدت خوبی بود&lt;/p&gt;

&lt;p&gt;یک پیام&lt;br&gt;
چند خاطره&lt;br&gt;
یک شروع دوبار&lt;br&gt;
و چند ساعت کد&lt;/p&gt;

&lt;p&gt;گاهی مسیر، آدم‌هایی که تو اون هستند و چیزهایی که ساخته می‌شن، خودشون کافی ان&lt;/p&gt;

&lt;p&gt;روز سوم تموم شد &lt;br&gt;
روز چهارم دیگه کاری نیست مرخصی گرفتم &lt;br&gt;
یکمی هم حال خوب &lt;br&gt;
🛤&lt;/p&gt;

</description>
      <category>go</category>
      <category>summer</category>
    </item>
  </channel>
</rss>
