Tech Stuff – Telegram
تایپ 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
6👍5