آرشیو

همهٔ مقاله‌ها

همهٔ آموزش‌هایی که منتشر کرده‌ایم، از جدیدترین. بر اساس موضوع یا سطح فیلتر کنید تا دقیقاً همان چیزی را که لازم دارید پیدا کنید.

گیت واقعاً چطور کار می‌کند: blob، tree، کامیت و ref

پوشهٔ .git را باز کنید و گیت را همان‌طور که هست ببینید: یک انبار اشیاء که هر شیء با هشِ محتوایش نام‌گذاری شده، به‌علاوهٔ چند اشاره‌گرِ جابه‌جاشدنی. یک کامیت را با دست بسازید و بالاخره rebase، reset و reflog را بفهمید.

گیتپیشرفته۹ دقیقه مطالعه
یک کامیت که به یک tree اشاره می‌کند، آن tree به blobها و یک زیرپوشه اشاره می‌کند، و برنچ main و HEAD به آن کامیت اشاره می‌کنند

پروسس‌های لینوکس از درون: fork، exec، سیگنال‌ها و زامبی‌ها

وقتی یک دستور را اجرا می‌کنید واقعاً چه اتفاقی می‌افتد: fork و exec، کدهای خروج و wait، اینکه سیگنال‌ها چطور برنامه‌ها را متوقف می‌کنند (و چطور مؤدبانه خاموش شویم)، زامبی‌ها از کجا می‌آیند و چرا PID 1 در کانتینر Ctrl+C شما را نادیده می‌گیرد.

لینوکسپیشرفته۱۱ دقیقه مطالعه
یک درخت پروسس: شل یک فرزند fork می‌کند، فرزند یک برنامهٔ جدید را exec می‌کند، خارج می‌شود و والدش آن را جمع‌آوری می‌کند

نوشتن اسکریپت‌های Bash که خراب نمی‌شوند

بیشتر اسکریپت‌های شل خوب کار می‌کنند تا وقتی که نام یک فایل فاصله داشته باشد یا دستوری وسط کار شکست بخورد. حالت سخت‌گیرانه، کوتیشن‌گذاری، فایل‌های موقت امن و trap برای پاک‌سازی را یاد بگیرید و همه را در یک اسکریپت پشتیبان‌گیری واقعی کنار هم بگذارید.

لینوکسمتوسط۹ دقیقه مطالعه
یک ترمینال که اسکریپت Bashی را اجرا می‌کند که با set -euo pipefail شروع می‌شود

ریبیس تعاملی: کامیت‌هایتان را قبل از اشتراک‌گذاری مرتب کنید

با git rebase -i یک ردِ شلوغ از کامیت‌های نیمه‌کاره را به تاریخچه‌ای تمیز و قابل بازبینی تبدیل کنید. کامیت‌ها را ادغام، بازنویسی، جابه‌جا، تقسیم و حذف کنید و بگذارید کامیت‌های fixup مرتب‌سازی را برایتان انجام دهند.

گیتمتوسط۸ دقیقه مطالعه
پنج کامیت شلوغ که ادغام و مرتب می‌شوند و به دو کامیت تمیز تبدیل می‌شوند

دیسکریپتورها در پایتون: پروتکلی که پشت property و متدهاست

property، متدهای bound، cached_property و __slots__ همه روی یک پروتکل کوچک کار می‌کنند. یاد بگیرید دیسکریپتورها چطور کار می‌کنند، ترتیب دقیق جست‌وجوی attributeها چیست و چطور دیسکریپتور خودتان را بنویسید.

پایتونپیشرفته۸ دقیقه مطالعه
دسترسی به یک attribute، یعنی obj.price، که از متدهای __get__ و __set__ یک دیسکریپتور عبور می‌کند

حلقهٔ رویداد در جاوااسکریپت: تسک‌ها، میکروتسک‌ها و رندر

چرا یک پرامیسِ resolve‌شده همیشه زودتر از setTimeout(fn, 0) اجرا می‌شود؟ دقیقاً ببینید حلقهٔ رویداد تسک‌ها، میکروتسک‌ها و رندر صفحه را چطور زمان‌بندی می‌کند و چطور کارهای طولانی را طوری اجرا کنید که صفحه قفل نشود.

جاوااسکریپتپیشرفته۹ دقیقه مطالعه
حلقهٔ رویداد به شکل یک چرخه: اجرای یک تسک، اجرای همهٔ میکروتسک‌ها و سپس رندر یک فریم

جست‌وجوی دودویی بدون باگ‌های یکی‌کم‌ویکی‌زیاد

جست‌وجوی دودویی را راحت می‌شود توضیح داد و به‌طرز عجیبی راحت می‌شود اشتباه نوشت. یک «ناوردا» یاد بگیرید که آن را هر بار درست از آب درمی‌آورد، اولین و آخرین موقعیت را پیدا کنید و جست‌وجوی دودویی را به‌جای آرایه روی جواب‌ها اجرا کنید.

الگوریتم‌هامتوسط۸ دقیقه مطالعه
یک ردیف مرتب از اعداد که بازهٔ جست‌وجو در هر مرحله نصف می‌شود تا به اولین ۲۳ برسد

توابع پنجره‌ای در SQL: جمع تجمعی، رتبه‌بندی و میانگین متحرک

GROUP BY ردیف‌ها را در هم فشرده می‌کند؛ توابع پنجره‌ای روی چند ردیف محاسبه می‌کنند و همهٔ آن‌ها را نگه می‌دارند. OVER، PARTITION BY، ROW_NUMBER، RANK، LAG و قاب‌های پنجره را با مثال‌های کوچک و قابل اجرا یاد بگیرید.

SQLمتوسط۹ دقیقه مطالعه
جدولی از ردیف‌های فروش که به دو پارتیشن تقسیم شده و در هر کدام یک جمع تجمعی از بالا به پایین محاسبه می‌شود

ایندکس‌ها و پلن کوئری در SQL: سریع کردن کوئری‌های کُند

یاد بگیرید ایندکس‌های B-tree واقعاً چطور کار می‌کنند، پلن کوئری را با EXPLAIN بخوانید، ترتیب درست ستون‌ها را در ایندکس‌های ترکیبی انتخاب کنید و اشتباه‌هایی را بشناسید که بی‌صدا یک ایندکس را از کار می‌اندازند.

SQLپیشرفته۱۱ دقیقه مطالعه
یک ایندکس B-tree که جست‌وجو را از یک میلیون ردیف به یک صفحهٔ برگ محدود می‌کند

الگوریتم دایکسترا: کوتاه‌ترین مسیرها با صف اولویت

الگوریتم کوتاه‌ترین مسیرِ دایکسترا را در پایتون با heapq پیاده کنید، قدم‌به‌قدم دنبالش کنید، بفهمید چرا درست است و دقیقاً یاد بگیرید کِی خراب می‌شود: یال‌های منفی، تساوی در هیپ و گراف‌های چگال.

الگوریتم‌هاپیشرفته۹ دقیقه مطالعه
یک گراف وزن‌دار با شش گره که درخت کوتاه‌ترین مسیر از A در آن برجسته شده و کنار هر گره فاصله‌اش نوشته شده

آبشار و Specificity در CSS: چرا استایل‌هایتان اعمال نمی‌شوند

وقتی دو قاعدهٔ CSS با هم مخالف‌اند، مرورگر برای انتخاب برنده از مجموعه‌ای از قواعدِ دقیق پیروی می‌کند. یاد بگیرید آبشار چطور تصمیم می‌گیرد، specificity را با دست حساب کنید و دیگر سراغ !important نروید.

CSSمتوسط۷ دقیقه مطالعه
پنج قاعدهٔ CSS که برای یک دکمه با هم رقابت می‌کنند و معیارهای مرورگر تعیین می‌کنند کدام برنده است

Stacking Context در CSS: چرا z-index: 9999 کار نمی‌کند

ویژگی z-index یک رتبه‌بندیِ سراسری نیست. فقط عنصرهای داخل یک stacking context را با هم مقایسه می‌کند، و ده‌ها ویژگی بی‌صدا context تازه می‌سازند. ترتیب رسم را یاد بگیرید، contextی را که عنصرتان در آن گیر افتاده پیدا کنید و باگ‌های هم‌پوشانی را برای همیشه حل کنید.

CSSپیشرفته۸ دقیقه مطالعه
لایه‌های یک صفحهٔ وب به‌شکل سه‌بعدی: یک مودال با z-index 9999 که داخل لایه‌ای زیرِ هدر سایت گیر افتاده

درک async/await در جاوااسکریپت

راهنمایی کاربردی دربارهٔ پرامیس‌ها و async/await: چطور کار می‌کنند، خطاها را چطور مدیریت کنیم و کارها را چطور موازی اجرا کنیم تا برنامه کند نشود.

جاوااسکریپتمتوسط۵ دقیقه مطالعه
خط زمانی که اجرای پشت‌سرهمِ سه درخواست را با اجرای موازیِ همان درخواست‌ها مقایسه می‌کند

نماد Big-O با کد واقعی

پیچیدگی زمانی را بدون ترس از ریاضیات بفهمید. توابع واقعی پایتون را تحلیل می‌کنیم و می‌بینیم چرا کدِ O(n²) در مقیاس بزرگ از پا درمی‌آید.

الگوریتم‌هامبتدی۵ دقیقه مطالعه
نمودار منحنی‌های رشد برای O(1)، O(log n)، O(n)، O(n log n) و O(n²)

Flexbox یا Grid در CSS: کدام را کِی استفاده کنیم

Flexbox و Grid هر دو عناصر را چیدمان می‌کنند، اما متفاوت فکر می‌کنند. قانون یک‌بعدی در برابر دوبعدی را یاد بگیرید و با هر کدام چیدمان‌های واقعی بسازید.

CSSمبتدی۵ دقیقه مطالعه
جعبه‌های Flexbox در یک سطر، کنار گریدی از جعبه‌ها که در سطرها و ستون‌ها گسترده شده‌اند

JOINها در SQL با مثال‌های ساده

JOINهای INNER، LEFT، RIGHT و FULL با دو جدول کوچک. دقیقاً ببینید هر نوع JOIN کدام ردیف‌ها را برمی‌گرداند و چرا.

SQLمبتدی۵ دقیقه مطالعه
نمودار ون از جدول مشتریان و جدول سفارش‌ها که در محل تطابق ردیف‌ها هم‌پوشانی دارند

دکوریتورها در پایتون، قدم‌به‌قدم

دکوریتورها جادویی به نظر می‌رسند، اما فقط توابعی هستند که توابع دیگر را می‌پوشانند. دکوریتورهای زمان‌سنجی و تلاش مجدد را از صفر بسازید.

پایتونمتوسط۵ دقیقه مطالعه
تابعی که داخل دو لایهٔ دکوریتور، یعنی retry و timed، پوشانده شده است