Tech Stuff – Telegram
دیروز بعد ۲ ماه، آموزشی سربازیم توی نیروی دریایی ارتش تموم شد. توی این ۲ ماه مثل قبل نتونستم فعالیت کنم و یسری از کارهام عقب افتادن یا با تاخیر تونستم انجامشون بدم.
توی مدتی که پادگان بودم، به امریه دانش‌بنیان و پروژه جایگزین خدمتم فکر می‌کردم که هر کدوم به یه دلیلی رد شدن. به وقت و انرژی که صرفشون کردم و تهش هم به نتیجه نرسیدن. با این حال از هر کدوم‌شون چیزایی یاد گرفتم، تجربه شدن و قطعا بی‌فایده نبودن و نکات مثبت خودشون رو داشتن.
ماه اول آموزشی رو توی سلف پادگان بودم. با اینکه سختی‌ها و فشار کاری خودش رو داشت، برام تجربه جدیدی بود: شستن روزانه چندصد تا یغلوی، تمیز کردن میزها، جارو و طی زدن سلف، تحویل غذا از آشپزخونه، گرفتن نون از خبازخونه، کف‌پارتی و ... .
توی آموزشی با آدم‌های خفنی آشنا شدم؛ هر کسی بیرون پادگان توی حوزه خودش کار می‌کرد و برای خودش کسی بود. چیزی که شاید وقتی لباس سربازی می‌پوشیم کمتر بهش توجه میشه اینه که هر کدوم از این سربازها بیرون از پادگان شخصیت و هویت خودشون رو دارن.
توی زمان بیکاریم توی پادگان تونستم وقت بیشتری رو به مطالعه اختصاص بدم و کتاب Leaders Eat Last و همینطور نصف کتاب A Philosophy of Software Design رو بخونم (که کم‌کم پستشون رو میذارم).
از این به بعد اگه شرایط درست پیش بره، سعی می‌کنم مثل قبل خدمت فعالیتم رو ادامه بدم و مرتب پست بذارم.

#سربازی
54👏8👍1🔥1
تایپ Function در TypeScript

توی تایپ‌اسکریپت یه تایپ گلوبال به اسم Function داریم. این تایپ همه ویژگی‌های عمومی توابع جاوااسکریپت مثل bind و call رو پوشش میده؛ اما مشکلش اینه که وقتی ازش استفاده می‌کنیم، هر نوع تابعی رو قبول می‌کنه و موقع صدا زدن هم خروجی (return type) رو any در نظر می‌گیره. این باعث می‌شه چک‌های تایپ‌اسکریپت عملا بی‌اثر بشن.

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

@techstuff100
13👍3
پیچیدگی (complexity) در سیستم‌های نرم‌افزاری

تو طراحی نرم‌افزار، یکی از مهم‌ترین کارها اینه که بفهمیم چی سیستم رو پیچیده می‌کنه و چطور میشه جلوی این پیچیدگی رو گرفت. کتاب A Philosophy of Software Design تعریف خیلی کاربردی‌ای از complexity میده و نشونه‌ها و علت‌هاش رو بررسی کرده.

#A_Philosophy_of_Software_Design

@techstuff100
10👏3👍2
کدی که کار می‌کنه کافی نیست!

خیلی وقت‌ها توی پروژه‌ها فقط دنبال این هستیم که یه فیچر کار کنه و سریع تحویل بدیم. این روند اولش خوب پیش میره، ولی کم‌کم باعث پیچیدگی و کند شدن کار میشه... .

#A_Philosophy_of_Software_Design

@techstuff100
8👍4👏1
معماری Master–Slave در دیتابیس‌ها

ا Replication یعنی اینکه یه کپی از دیتابیس رو روی چندتا نود (replica) داشته باشیم. اما وقتی یه چیزی روی دیتابیس نوشته میشه، چطور همه replicaها همون دیتا رو داشته باشن؟ راه‌حل رایج، مدل Master–Slave هست. توی این مدل، Master مسئول نوشتن دیتا هست و بعد تغییرات رو برای Slaveها می‌فرسته تا همه هماهنگ بمونن.

نوشتن فقط روی Master انجام میشه، خوندن می‌تونه از Slaveها هم باشه. اما انتقال دیتا از Master به Slave می‌تونه شکل‌های مختلفی داشته باشه: توی حالت async، نود Master به محض نوشتن، response رو به کلاینت میده و Slaveها بعدا آپدیت میشن. توی حالت sync، نود Master صبر می‌کنه تا همه Slaveها آپدیت بشن و بعد response بده. حالت semi-sync هم یه چیزی بین این دوتاست. هرکدومش یه تعادل بین سرعت، سازگاری و ریسک از دست رفتن دیتا ایجاد می‌کنن.

مقاله:
https://www.enjoyalgorithms.com/blog/master-slave-replication-databases

@techstuff100
👍91
دانلود زودتر منابع مهم با rel=preload

توی این پست درباره‌ی "rel="preload صحبت کردم. باهاش می‌تونیم دانلود منابع مهم مثل CSS و JavaScript رو زودتر از روند عادی مرورگر شروع کنیم، بدون این‌که روی اعمال شدن یا اجرای اون‌ها تاثیر بذاریم. همین‌طور توضیح دادم as چه نقشی داره و چرا مشخص کردن درستش برای عملکرد و cache مرورگر مهمه.

@techstuff100
7👍5