نوشته‌های ترمینالی
2.76K subscribers
425 photos
12 videos
32 files
2.29K links
Download Telegram
منم یه نکته به این مطلب خیلی خوب اضافه کنم:
این که ما فیچر فلگ داشته باشیم همیشه هم هدفش بار روی سرورها نیست و ممکنه دست پروداکت منیجر ها رو باز بگذاره تا تجربه کاربر نهایی رو تیون کنن. مثلا با کمک A/B تست، انواع ترکیب ها امتحان بشه تا به یه نقطه ایده آل برسیم. حتی ممکنه بسته به رفتار کاربر یا اطلاعات پایه که از کاربر داریم چیزی رو براش حذف یا اضافه کنیم.
👍91
مرورگر های امروزی چطوری کار می‌کنند؟
از ارسال درخواست به شبکه تا پارس و رندر صفحات وب.
https://addyo.substack.com/p/how-modern-browsers-work

و اگه دوست داشتید بیشتر بدانید این سایت فوق‌العاده رو چک کنید:
https://browser.engineering/
9👍1
Forwarded from SoniaCircuit (Sonia Fatholahi)
🔥10
یه اتفاق خیلی عجیبی که برخوردم این بود که یه کد گولنگ کار می‌کرد و کامپایل و اجرا می‌شد تا وقتی که go mod vendor می‌زدم. وقتی که پوشه vendor ساخته می‌شد دیگه کامپایل نمی‌شد و با پاک کردن پوشه vendor دوباره کار می‌کرد! اینجا از اون جا ها بود که آدم می‌گه من دارم اشتباه می‌کنم یا واقعا باگ کامپایلره؟!

خلاصه سرچ کردم و به این ایشو رسیدم و واقعا باگ کامپایلره! داستان از این قراره که موقع دانلود یه پکیج گولنگ کلشو دانلود می‌کنه ولی موقعی که go mod vendor می‌زنید فقط پوشه هایی که حداقل یه فابل .go توش هست رو برمیداره میاره. حالا این کتابخونه مورد نیاز من هم یه سری .c و .h داشت که توی یه پوشه بودن بدون هیچ فایل گو و در نتیجه توی پوشه vendor قرار نمی‌گیره و در نتیجه کامپایل ناموفق صورت می‌گیره.
راه حل چیه؟ راه حل اینه که توسعه‌دهنده کتابخونه این رو بدونه و پوشه‌بندی رو درست کنه.

https://github.com/uber/h3-go/issues/30
👍174🤯3
Enums in Programming Languages and Exhaustiveness

اخیرا این ویدیو رو توی یوتیوب دیدم که نحوه‌ی تعریف Enum توی زبان‌های برنامه‌نویسی مختلف و امکاناتشون رو بررسی و مقایسه می‌کرد.

یکی از نکاتی که توجهم رو جلب کرد این بود که Golang تقریبا امکانات خاصی برای Enum نداره و باید مقادیر enum رو مثل constant تعریف کنی و حتی اگر دوتا اینام مقادیری با اسم یکسان داشته باشن توی یه فایل اسم‌هاشون باهم تداخل میخوره. واقعا ایده‌ای ندارم در این حد ساده بودن خوبه یا نه ولی فکر میکنم اذیت کننده باشه.

یکی از چیزایی که کلا توی Enum ها کاربردیه قابلیت Exhaustiveness هست. یعنی اگر روی یه متغیر از جنس enum سوویچ کیس یا match زدی خود کامپایلر چک کنه که همه‌ی حالت‌ها پوشش داده شده یا نه و مجبورت کنه همه‌ی حالت‌ها رو پوشش بدی یا صریحا ignore اشون کنی. خوبیش اینه که اگر چندماه بعد به این enum یه مقداری اضافه کنی توی زمان compile متوجه میشی که کجاها رو باید بری پیاده‌سازی کنی و چه مسیرهای جدیدی به کدت اضافه میشه. همچنین احتمال خطا و اینکه یه حالتی رو فراموش کنیم هم از بین میره.
راست و نسخه‌های جدید جاوا این قابلیت رو دارن. جاوا توی نسخه‌های جدید امکانات switch و enum رو خیلی بهبود داده و بهتر کرده که قابل تحسینه.

زبان Rust خیلی enum های کاربردی و قدرتمندی داره. این قابلیت‌ها رو توی بقیه زبون‌ها مثل جاوا و سی‌شارپ با ترکیب sealed interface و value class ها میشه درست کرد اما سینتکس Rust واقعا مختصر و مفیده.


#language_design #enum

✴️ @software_inside - مهندسی‌نرم‌افزار
🔥8👏2👌1