<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SYN Packet</title><link>https://pourganji.ir/fa/</link><description>Recent content on SYN Packet</description><generator>Hugo -- 0.155.3</generator><language>fa-IR</language><lastBuildDate>Thu, 26 Feb 2026 19:22:04 +0330</lastBuildDate><atom:link href="https://pourganji.ir/fa/index.xml" rel="self" type="application/rss+xml"/><item><title>داکر از صفر: پروسه</title><link>https://pourganji.ir/fa/blog/docker-from-scrach-process-isolation/</link><pubDate>Thu, 26 Feb 2026 19:22:04 +0330</pubDate><guid>https://pourganji.ir/fa/blog/docker-from-scrach-process-isolation/</guid><description>&lt;h1 id="ماجرا-چیه"&gt;ماجرا چیه؟&lt;/h1&gt;
&lt;p&gt;دارم یچی یاد می‌گیرم که نیاز دارم مدام لینوکس رو خراب کنم که بتونم بفهمم توی اون چیز چه خبره. برای داشتن لینوکس از &lt;a href="https://mac.getutm.app/"&gt;UTM&lt;/a&gt; استفاده کردم که بتونم یه نسخه از اوبونتو رو روی مک داشته باشم. راه دیگه‌اش استفاده از داکر بود ولی برای اینکه هر بار بتونم فرش ماجرا رو از سر بگیرم مجبورم که کانتینر رو پاک کنم و دوباره بسازمش که خب برای هر تغییر کوچیک یذره وقت‌گیره. این شد که یه تلاش قدیمی یادم اومد که می‌خواستم بفهمم چطور داکر کار می‌کنه و تصمیم گرفتم یه ابزار بنویسم برای این منظور. شبیه داکره ولی قراره برای این کرم ریختن راحت‌تر باشه و هر دستوری رو بهش می‌دیم ران کنه روی کرنل و تلاش کنه چیزی رو خراب نکنه.&lt;/p&gt;</description></item><item><title>گیت چطور فایل‌ها رو ذخیره می‌کنه؟</title><link>https://pourganji.ir/fa/blog/how-git-store-files/</link><pubDate>Sat, 10 Mar 2018 19:03:34 +0330</pubDate><guid>https://pourganji.ir/fa/blog/how-git-store-files/</guid><description>&lt;h2 id="جواب-خیلی-کوتاه"&gt;جواب خیلی کوتاه&lt;/h2&gt;
&lt;p&gt;گیت فایل‌ها رو بر اساس محتواشون ذخیره میکنه.&lt;/p&gt;
&lt;h2 id="جواب-کوتاه-نسبتا-بلند"&gt;جواب کوتاه نسبتاً بلند&lt;/h2&gt;
&lt;p&gt;اول کار که شما دستور &lt;code&gt;git init&lt;/code&gt; رو اجرا می‌کنید، گیت داخل پوشه‌ی جاری یه فولدر &lt;code&gt;.git&lt;/code&gt; می‌سازه که محتویاتش اینه:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;meysampg@freedom git&lt;span style="color:#f92672"&gt;]&lt;/span&gt;$ git init
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Initialized empty Git repository in /srv/http/test/git/.git/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;meysampg@freedom git&lt;span style="color:#f92672"&gt;]&lt;/span&gt;$ ls -lah .git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;total 40K
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;7&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 ..
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 branches
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-rw-r--r-- &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; meysampg users &lt;span style="color:#ae81ff"&gt;92&lt;/span&gt; Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-rw-r--r-- &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; meysampg users &lt;span style="color:#ae81ff"&gt;73&lt;/span&gt; Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 description
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-rw-r--r-- &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; meysampg users &lt;span style="color:#ae81ff"&gt;23&lt;/span&gt; Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 HEAD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 hooks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 info
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 objects
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;drwxr-xr-x &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; meysampg users 4.0K Mar &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt; 11:07 refs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;چیزی که جواب سوال بالاست در پوشه‌ی &lt;code&gt;objects&lt;/code&gt; نهفته‌ست.&lt;/p&gt;</description></item><item><title>آدرس‌پذیری در گو</title><link>https://pourganji.ir/fa/blog/addressable-operand-in-golang/</link><pubDate>Sun, 10 Sep 2017 15:39:11 +0330</pubDate><guid>https://pourganji.ir/fa/blog/addressable-operand-in-golang/</guid><description>&lt;p&gt;دیو چنی توییت کرده که کد زیر چی چاپ میکنه؟&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;package&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;f&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;u&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;uint&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;u&lt;/span&gt;&lt;span style="color:#f92672"&gt;++&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;func&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#f92672"&gt;:=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;f&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;uint&lt;/span&gt;)(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;fmt&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;Println&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;بالطبع احتمالا همه انتظار داریم حاصل ۱ باشه، ولی این کد اصلا کامپایل نمیشه :)).
دلیل خیلی ساده‌ست: «در گو شما فقط میتونی آدرس چیزایی رو استفاده کنی که آدرس‌پذیر باشن.».
به بیان دیگه در گو فقط برای متغیرها، پوینترها، اسلایس‌ها، عناصر یک ساختار -=struct- و آرایه‌ها میشه آدرس رو داشت و پر واضح و مبرهن‌ه که در کد فوق، پارامتر ورودی f هیچ‌کدوم از اونها نیست.
در این مورد &lt;a href="https://golang.org/ref/spec#Address_operators"&gt;اینجا&lt;/a&gt; رو ببینید.&lt;/p&gt;</description></item><item><title>درباره‌ی من 👨‍💻</title><link>https://pourganji.ir/fa/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pourganji.ir/fa/about/</guid><description>درباره</description></item></channel></rss>