توی Airbnb چطور key value store خودشون رو بازنویسی کردن تا با نیازهای جدیدشون همخوانی داشته باشه؟
https://medium.com/airbnb-engineering/building-a-next-generation-key-value-store-at-airbnb-0de8465ba354
https://medium.com/airbnb-engineering/building-a-next-generation-key-value-store-at-airbnb-0de8465ba354
Medium
Building a Next-Generation Key-Value Store at Airbnb
How we completely rearchitected Mussel, our storage engine for derived data, and lessons learned from the migration from Mussel V1 to V2.
👨💻7🍓2❤1
چطوری restful API خوب طراحی کنیم؟
https://youtu.be/_gQaygjm_hg?si=E8S6XOwA4K8hsq-e
https://youtu.be/_gQaygjm_hg?si=E8S6XOwA4K8hsq-e
YouTube
Good APIs Vs Bad APIs: 7 Tips for API Design
Get a Free System Design PDF with 158 pages by subscribing to our weekly newsletter: https://bit.ly/bytebytegoytTopic
This video is based on engineering blog post: https://blog.hotstar.com/capturing-a-...
Animation tools: Adobe Illustrator and After Effects.…
This video is based on engineering blog post: https://blog.hotstar.com/capturing-a-...
Animation tools: Adobe Illustrator and After Effects.…
1🍓12❤2
این دوره یه آموزش فارسی و مرحلهبهمرحله دربارهی برنامهنویسی غیرهمزمان (asyncio) در پایتونه.
توش یاد میگیری async و await دقیقاً چطور کار میکنن، event loop چیه، چطور چند کار رو همزمان اجرا کنی، با تسکها و صفهای async کار کنی، خطاها و زمانبندی رو مدیریت کنی و الگوهای همزمانی پیشرفته مثل fan-in / fan-out رو بسازی.
هدف دوره اینه که async رو واقعاً بفهمی و بتونی توی پروژههای واقعی ازش استفاده کنی.
https://github.com/irvaniamirali/asyncio-course-fa
#ارسالی
توش یاد میگیری async و await دقیقاً چطور کار میکنن، event loop چیه، چطور چند کار رو همزمان اجرا کنی، با تسکها و صفهای async کار کنی، خطاها و زمانبندی رو مدیریت کنی و الگوهای همزمانی پیشرفته مثل fan-in / fan-out رو بسازی.
هدف دوره اینه که async رو واقعاً بفهمی و بتونی توی پروژههای واقعی ازش استفاده کنی.
https://github.com/irvaniamirali/asyncio-course-fa
#ارسالی
GitHub
GitHub - irvaniamirali/asyncio-course-fa: یادگیری برنامهنویسی غیرهمزمان پایتون به فارسی — یک دورهٔ عملی و متنی با تمرکز روی مثالهای…
یادگیری برنامهنویسی غیرهمزمان پایتون به فارسی — یک دورهٔ عملی و متنی با تمرکز روی مثالهای واقعی - irvaniamirali/asyncio-course-fa
🔥13👍3❤1🍓1
خیلیهامون با هدرهای مختلف HTTP آشنا هستیم ولی یکسری هدرها برای افزایش امنیت وبسایتمونه. با کمک اینها در واقع به مرورگر میگیم چه اجازههایی در مورد سایت ما داره.
چیزی که اکثرا باهاش مواجه شدیم HSTSئه که میگه سایت ما فقط با HTTPS اجازه داره باز بشه. اما این لیست به همینجا ختم نمیشه و چیزایی در رابطه با Iframe شدن سایت، content type ها و غیره هم وجود داره که میتونید اینجا کامل بخونید:
https://wackowiki.org/doc/Dev/Guidelines/SecurityHeaders
همچنین این وبسایت سایتتون رو اسکن میکنه و میگه از کدوم هدر ها پشتیبانی میکنه یا نمیکنه:
https://securityheaders.com/
چیزی که اکثرا باهاش مواجه شدیم HSTSئه که میگه سایت ما فقط با HTTPS اجازه داره باز بشه. اما این لیست به همینجا ختم نمیشه و چیزایی در رابطه با Iframe شدن سایت، content type ها و غیره هم وجود داره که میتونید اینجا کامل بخونید:
https://wackowiki.org/doc/Dev/Guidelines/SecurityHeaders
همچنین این وبسایت سایتتون رو اسکن میکنه و میگه از کدوم هدر ها پشتیبانی میکنه یا نمیکنه:
https://securityheaders.com/
Securityheaders
Analyse your HTTP response headers
Quickly and easily assess the security of your HTTP response headers
❤9👍2
احتمالا ماجرای incident بزرگ aws رو شنیدید. دیتا سنتر us-east-1 به مشکل خورده بود و بخش زیادی از اینترنت از جمله خود امازون، زوم، اسلک و ... به درستی کار نمیکردن، اونم برای ساعت ها!
خود تیم فنی aws داک رسمی از post mortem تهیه کردن که اینجا میتونید بخونید:
https://aws.amazon.com/message/101925/
نسخه ساده تر و خلاصه هم میتونید اینجا بخونید:
https://newsletter.pragmaticengineer.com/p/what-caused-the-large-aws-outage?publication_id=458709&post_id=176935464
خود تیم فنی aws داک رسمی از post mortem تهیه کردن که اینجا میتونید بخونید:
https://aws.amazon.com/message/101925/
نسخه ساده تر و خلاصه هم میتونید اینجا بخونید:
https://newsletter.pragmaticengineer.com/p/what-caused-the-large-aws-outage?publication_id=458709&post_id=176935464
Pragmaticengineer
What caused the large AWS outage?
On Monday, a major AWS outage hit thousands of sites & apps, and even a Premier League soccer game. An overview of what caused this high-profile, global outage
❤12
چطور تکنولوژی دیتابیس رو عوض کنیم
و قبلش چه کارهایی بکنیم که از تصمیممون مطمئن بشیم؟
https://youtu.be/kkeFE6iRfMM?si=98aqM-mSDzDm_OMd
و قبلش چه کارهایی بکنیم که از تصمیممون مطمئن بشیم؟
https://youtu.be/kkeFE6iRfMM?si=98aqM-mSDzDm_OMd
YouTube
How To Choose The Right Database?
Weekly system design newsletter: https://bit.ly/3tfAlYD
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd
Volume 2: https://amzn.to/3HqGozy
Other things we made:
Digital version of System Design Interview books:…
Checkout our bestselling System Design Interview books:
Volume 1: https://amzn.to/3Ou7gkd
Volume 2: https://amzn.to/3HqGozy
Other things we made:
Digital version of System Design Interview books:…
👍6
Forwarded from Linux Experts (𝖕𝖝𝖊)
⚡️ aria2 ابزار سبک ولی قدرتمند برای دانلود
aria2 یه ابزار خط فرمانه که برای دانلود از پروتکلهای مختلف مثل HTTP،FTP،BitTorrent و Metalink طراحی شده.
مزیتش اینه که میتونه فایل رو به چند بخش تقسیم کنه و هر بخش رو همزمان از چند اتصال مختلف بگیره؛ همین باعث میشه دانلودها سریعتر و پایدارتر انجام بشن.
یک نمونۀ ساده:
اگه بخواید از تمام ظرفیت اینترنت استفاده کنید، میتونید تعداد اتصالها و بخشها رو زیاد کنید و در عین حال تلاش نامحدود برای ادامۀ دانلود در صورت قطع ارتباط فعال کنید:
برای وقتی که چند تا لینک دارید، کافیه همه رو خط به خط تو فایلی مثل
aria2 پشت صحنۀ خیلی از ابزارهای دانلودمثل uGet، Motrix، Persepolis (در نسخههای قدیمی)، و حتی بعضی مدیرهای دانلود گرافیکی سبک برای سرور یا NAS استفاده شده.
تو دنیای لینوکس هم معمولاً داخل اسکریپتهای خودکار یا نصب بستهها ازش استفاده میشه چون دقیق، قابلاسکریپتنویسی و کممصرفه.
🔘 @linux_exp | #linux #commandline #tools
aria2 یه ابزار خط فرمانه که برای دانلود از پروتکلهای مختلف مثل HTTP،FTP،BitTorrent و Metalink طراحی شده.
مزیتش اینه که میتونه فایل رو به چند بخش تقسیم کنه و هر بخش رو همزمان از چند اتصال مختلف بگیره؛ همین باعث میشه دانلودها سریعتر و پایدارتر انجام بشن.
یک نمونۀ ساده:
aria2c https://example.com/file.iso
اگه بخواید از تمام ظرفیت اینترنت استفاده کنید، میتونید تعداد اتصالها و بخشها رو زیاد کنید و در عین حال تلاش نامحدود برای ادامۀ دانلود در صورت قطع ارتباط فعال کنید:
aria2c \
--max-connection-per-server=16 \
--split=16 \
--max-tries=0 \
https://example.com/file.iso
🔹 --max-connection-per-server تعداد اتصالهای همزمان به سرور
🔹 --split تعداد بخشهایی که فایل به اون تقسیم میشه
🔹 --max-tries=0 یعنی در صورت خطا تا بینهایت بار تلاش مجدد انجام بشه
برای وقتی که چند تا لینک دارید، کافیه همه رو خط به خط تو فایلی مثل
links.txt بنویسید و اجرا کنید:aria2c --input-file=links.txt
aria2 پشت صحنۀ خیلی از ابزارهای دانلودمثل uGet، Motrix، Persepolis (در نسخههای قدیمی)، و حتی بعضی مدیرهای دانلود گرافیکی سبک برای سرور یا NAS استفاده شده.
تو دنیای لینوکس هم معمولاً داخل اسکریپتهای خودکار یا نصب بستهها ازش استفاده میشه چون دقیق، قابلاسکریپتنویسی و کممصرفه.
وقتی با aria2 دانلود میکنید، کنار هر فایل در حال دانلود یه فایل موقت با پسوند .aria2 ساخته میشه. این فایل شامل اطلاعات پیشرفت دانلود، بخشهای دریافتشده و وضعیت اتصالاته.
اگه دانلود به هر دلیلی قطع بشه (مثلاً اینترنت قطع شه یا سیستم ریستارت شه)، تا زمانی که فایل .aria2 حذف نشده باشه، میتونید همون دستور قبلی رو دوباره اجرا کنید تا دانلود از همونجا ادامه پیدا کنه.
🔘 @linux_exp | #linux #commandline #tools
❤🔥3👍2
شاید دیده باشید تو شبکه محلی وقتی DHCP درست کار نمیکنه، خود سیستم یه آیپی رندومی میگیره. این آیپی در بازه ۱۶۹.۲۵۴.۰.۰٫۱۶ قرار میگیره اما داستان پشتش چیه؟
داستان از این قراره که اساین کردن IP به کامپیوتر های شبکه راه های مختلفی داره از جمله static و DHCP ولی اگه سیستم با هیچ کدوم از اینا نتونه آیپی بگیره باید چیکار کنه؟ وصل نشه؟
به عنوان آخرین گزینه و فالبک، سیستم میان در یک بازه از پیش تعیین شده یه ایپی رندوم انتخاب میکنه که صرفا بتونه وصل بشه. به امید این که کامپیوتر دیگری اون رو انتخاب نکرده باشه، اما به همینجا بسنده نمیشه و یه درخواست arp به اون ایپی میفرسته تا ببینه کس دیگری اون ایپی رو داره یا نه و اگر کسی دیگری داشت باز آدرس رندوم جدید میسازه!
با این روش کامپیوترها بدون DHCP آیپی میگیرن و میتونن با هم صحبت کنن ولی مشکلی که هست اینه که default gateway رو کسی بهشون نگفته در نتیجه درخواست هاشون به بیرون route نمیشه (به بیانی اینترنت ندارن)
پس از این به بعد اگه دیدید اینترنت ندارید و آیپی سیستمتون با ۱۶۹.۲۵۴ شروع میشه بدونید مشکل DHCPئه.
اسم این روش APIPA یا automatic private IP addressingئه
https://www.cbtnuggets.com/blog/technology/networking/what-is-automatic-private-ip-addressing-apipa
داستان از این قراره که اساین کردن IP به کامپیوتر های شبکه راه های مختلفی داره از جمله static و DHCP ولی اگه سیستم با هیچ کدوم از اینا نتونه آیپی بگیره باید چیکار کنه؟ وصل نشه؟
به عنوان آخرین گزینه و فالبک، سیستم میان در یک بازه از پیش تعیین شده یه ایپی رندوم انتخاب میکنه که صرفا بتونه وصل بشه. به امید این که کامپیوتر دیگری اون رو انتخاب نکرده باشه، اما به همینجا بسنده نمیشه و یه درخواست arp به اون ایپی میفرسته تا ببینه کس دیگری اون ایپی رو داره یا نه و اگر کسی دیگری داشت باز آدرس رندوم جدید میسازه!
با این روش کامپیوترها بدون DHCP آیپی میگیرن و میتونن با هم صحبت کنن ولی مشکلی که هست اینه که default gateway رو کسی بهشون نگفته در نتیجه درخواست هاشون به بیرون route نمیشه (به بیانی اینترنت ندارن)
پس از این به بعد اگه دیدید اینترنت ندارید و آیپی سیستمتون با ۱۶۹.۲۵۴ شروع میشه بدونید مشکل DHCPئه.
اسم این روش APIPA یا automatic private IP addressingئه
https://www.cbtnuggets.com/blog/technology/networking/what-is-automatic-private-ip-addressing-apipa
CBT Nuggets
What is Automatic Private IP Addressing (APIPA)?
Automatic Private IP Addressing, referred to as APIPA, acts as a failover for DHCP when communication between a device and the DHCP server is not possible.
1👍24❤6
در مورد ساختمان داده LSM Tree یا همون log structured merge tree
این ساختمان داده بیشتر برای دیتابیس های NoSQL استفاده میشه و برای نوشتن زیاد بهینهست.
هم به خوبی از مموری استفاده میکنه تا نوشتن رو هندل کنه و هم به کمک bloom filter جایی که دیتا توی دیسک هست رو پیدا میکنه و سراغش میره برای بازیابی.
https://medium.com/@dwivedi.ankit21/lsm-trees-the-go-to-data-structure-for-databases-search-engines-and-more-c3a48fa469d2
اگه براتون جالب بود و بیشتر حوصله داشتید، این مطلب نحوه ساخت یک دیتابیس رو قدم به قدم شرح میده تا به همین LSM tree میرسه.
https://www.nan.fyi/database
این ساختمان داده بیشتر برای دیتابیس های NoSQL استفاده میشه و برای نوشتن زیاد بهینهست.
هم به خوبی از مموری استفاده میکنه تا نوشتن رو هندل کنه و هم به کمک bloom filter جایی که دیتا توی دیسک هست رو پیدا میکنه و سراغش میره برای بازیابی.
https://medium.com/@dwivedi.ankit21/lsm-trees-the-go-to-data-structure-for-databases-search-engines-and-more-c3a48fa469d2
اگه براتون جالب بود و بیشتر حوصله داشتید، این مطلب نحوه ساخت یک دیتابیس رو قدم به قدم شرح میده تا به همین LSM tree میرسه.
https://www.nan.fyi/database
Medium
LSM Trees: the Go-To Data Structure for Databases, Search Engines, and More
I dive into the fascinating world of LSM Trees and how they revolutionize the way large amounts of data are stored and retrieved.
👍8❤4🔥1
من دو سه سال پیش یه shell خیلی مینیمال نوشته بودم به اسم KittySH.
اگر به این این که اسمش چرا اینه کار نداشته باشیم، به نظر میتونه برای system programming توی گو یه ایدههای خوبی بهتون بده.
فیچرها: اجرای کامند و cd و clear و prompt رو خودش پشتیبانی میکنه و با کمک کتابخونه، auto complete هم داره.
https://github.com/rsharifnasab/KittySH/tree/master
اگر به این این که اسمش چرا اینه کار نداشته باشیم، به نظر میتونه برای system programming توی گو یه ایدههای خوبی بهتون بده.
فیچرها: اجرای کامند و cd و clear و prompt رو خودش پشتیبانی میکنه و با کمک کتابخونه، auto complete هم داره.
https://github.com/rsharifnasab/KittySH/tree/master
GitHub
GitHub - rsharifnasab/KittySH: kitty terminal is awesome, why not develop a shell with its name?!
kitty terminal is awesome, why not develop a shell with its name?! - rsharifnasab/KittySH
1❤11🔥7
در گولنگ نسخه ۱.۲۵، یه Garbage collector جدید به نام green tea اضافه شده که سعی میکنه سریعتر باشه. فعلا به شکل experimentalئه ولی توی ۱.۲۶ قراره که به شکل پیشفرض استفاده بشه.
چه گو دولوپر هستید چه نه، خوندن این بلاگ پست رو بهتون توصیه میکنم چون هم در مورد نحوه کار Garbage collector بهتون ایدههای خوبی میده (به شکل کامل و نه خیلی ساده سازی شده) و هم این که چطوری به افزایش پرفورمنس یه برنامه میشه نگاه کرد رو میبینید. در مورد instructionهای پردازنده، دسترسی به مموری و ...
https://go.dev/blog/greenteagc
چه گو دولوپر هستید چه نه، خوندن این بلاگ پست رو بهتون توصیه میکنم چون هم در مورد نحوه کار Garbage collector بهتون ایدههای خوبی میده (به شکل کامل و نه خیلی ساده سازی شده) و هم این که چطوری به افزایش پرفورمنس یه برنامه میشه نگاه کرد رو میبینید. در مورد instructionهای پردازنده، دسترسی به مموری و ...
https://go.dev/blog/greenteagc
go.dev
The Green Tea Garbage Collector - The Go Programming Language
Go 1.25 includes a new experimental garbage collector, Green Tea.
❤19👍3
امروز بر خلاف روال معمول کار جدی، تصمیم گرفتم تکنولوژیهای جدید رو هم امتحان کنم و قرعه به نام SQLc افتاد. یه ابزار تولید کد بر اساس ساختار دیتابیس و کوئری ها، کد گولنگ تولید میکنه.
نتیجه این که گول تبلیغات رو نخورید. این فقط توی دو تا مثال خودش خوب عمل میکرد، برای نیازمندی های من که اونقدر هم پیچیده نبود خیلی اذیت کرد.
هدفم اینجا نقد و بررسی منصفانهاش نیست و شاید شما باهاش خوشحال باشید ولی من علیرغم این که ایدهش رو دوست داشتم در عمل خوشحال نشدم باهاش.
نتیجه این که گول تبلیغات رو نخورید. این فقط توی دو تا مثال خودش خوب عمل میکرد، برای نیازمندی های من که اونقدر هم پیچیده نبود خیلی اذیت کرد.
هدفم اینجا نقد و بررسی منصفانهاش نیست و شاید شما باهاش خوشحال باشید ولی من علیرغم این که ایدهش رو دوست داشتم در عمل خوشحال نشدم باهاش.
👍23❤3🔥1😁1
گاهی یک خطا در سیستم باعث بروز خطا در باقی سیستم میشه و فاجعه. به این پدیده میگن cascading failure و اینجا به زیبایی توضیح داده شده.
https://youtu.be/oVGOUh6-m4E?si=Bs_NaEPVksbb9joL
https://youtu.be/oVGOUh6-m4E?si=Bs_NaEPVksbb9joL
YouTube
Cascading Failure | System Design
This video explains about a domino effect of failures called as cascading failures. We will understand the conditions how it happens and some precautions to avoid it.
---------------------------------------------------------------------------------------…
---------------------------------------------------------------------------------------…
🔥9👍2👨💻2
چرا پیدا کردن بهترین استعدادها، توی لینکدین و گیتهاب سخته؟ چون خیلی ها که کارشون خوبه، تمرکزشون روی خود کاره و پروفایل جذابی تو این پلتفرم ها ندارن!
https://surfingcomplexity.blog/2025/10/08/the-illegible-nature-of-software-development-talent/
در ادامه خودم اضافه کنم که: خوبه که از زاویه دیگه هم نگاه کنیم. اگه چنین آدمی هستید که استعداد خوبی دارید ولی فعالیت آنلاینی ندارید، شاید بهتر باشه واقعیتی که تو مقاله هست رو بپذیرید و خودتون رو تطبیق بدید.
https://surfingcomplexity.blog/2025/10/08/the-illegible-nature-of-software-development-talent/
در ادامه خودم اضافه کنم که: خوبه که از زاویه دیگه هم نگاه کنیم. اگه چنین آدمی هستید که استعداد خوبی دارید ولی فعالیت آنلاینی ندارید، شاید بهتر باشه واقعیتی که تو مقاله هست رو بپذیرید و خودتون رو تطبیق بدید.
Surfing Complexity
The illegible nature of software development talent
Here’s another blog post on gathering some common threads from reading recent posts. Today’s topic is about the unassuming nature of talented software engineers. The first thread was a …
👍22❤4😁2
استفاده از ai تو مصاحبه، آره یا نه؟ از زبون مصاحبه کننده.
https://leaddev.com/ai/why-expect-candidates-ai-hiring-process
نظر شخصی من اینه که در کل مهم نیست از چی استفاده میکنید، چه کپی پیست، چه لایبرری، چه GenAI، نهایتا مهمه که بتونید مسئولیتش رو بپذیرید و بدونید چه trade offهایی توش برقراره. به طور خلاصه وقتی پرسیدن چرا اینطوری، بتونید شفاف پاسخ بدید و نگید AI نوشته.
https://leaddev.com/ai/why-expect-candidates-ai-hiring-process
نظر شخصی من اینه که در کل مهم نیست از چی استفاده میکنید، چه کپی پیست، چه لایبرری، چه GenAI، نهایتا مهمه که بتونید مسئولیتش رو بپذیرید و بدونید چه trade offهایی توش برقراره. به طور خلاصه وقتی پرسیدن چرا اینطوری، بتونید شفاف پاسخ بدید و نگید AI نوشته.
LeadDev
Why I expect candidates to use AI in the hiring process
If you're joining a team where AI use is commonplace, expect the interview process to test those skills.
👌12❤5👍3
Forwarded from Agora (Alireza)
بعضیها مشکل کد نوشتن با AI را اینطور میبینند که دیگه هیچچیز دقیق، عمیق و درست نیست. من واقعاً مشکل رو اینجا نمیبینم؛ در واقع، این رو مشکل جدیدی نمیبینم.
دوستان مهندس ما تا به حال هم در تولید کدِ بینقص خیلی موفق عمل نکردند. در واقع، اگر در تولید قطعهکدهایی موفق بودند، اون کدها هم عموماً امکان غلط نوشتنشون ممکن نیست یا خیلی کمه؛ یا دهها سال در پلتفرمهای مختلف اجرا و تست شدهاند یا اساساً صحت الگوریتمِی که پیاده کردن اثبات شدهست. اما از اون طرف، (همین دوستان) در معماری همیشه پر از خطا بودند و معماریهاشون در یک فرایند تدریجی بهبود پیدا کرده. خطایی که نه لزوماً برخاسته از یک مهندسی غلط، که برخاسته از نیاز بیزینسه. تغییراتی که هیچوقت پیشبینی نشدند، از ناکجا وسط معماری شما سر در میارند و شما را مجبور به تغییرات پرریسک و پرهزینه میکنند. شاهد این مدعا هم باگ فیکس های ابدی تمام پروژههای بزرگ و کوچیکه.
از نظر من، مشکلی که الان شیوع پیدا کرده، تولید کدهاییه که مسئولش از مکانیسمش سر در نمیاره. کدی که «عظیمه، مثل فیل. پر سر و صداست. هیاهوه. دیوانه است. پر هرجومرجه اما مدفوعه». یک فایل ۵۰۰ خطی که یک فیچرو پیاده کرده —که اتفاقاً درست هم کار میکنه— ولی کمتر کسی توان و حوصلهٔ این رو داره بشینه و کار شخص دیگهای رو بخونه تا عمیقاً بفهمه؛ بهخصوص که نرخ تولید PRهایی با تعداد تغییرات بالا به لطف AIها، در حال بیشتر و بیشتر شدنه. مشکلی که قبلا هم در سطح خرد با ظهور امثال استکاوورفلو بیشتر جون گرفت و الان رشد کرده و دست و پا در آورده.
دوستان مهندس ما تا به حال هم در تولید کدِ بینقص خیلی موفق عمل نکردند. در واقع، اگر در تولید قطعهکدهایی موفق بودند، اون کدها هم عموماً امکان غلط نوشتنشون ممکن نیست یا خیلی کمه؛ یا دهها سال در پلتفرمهای مختلف اجرا و تست شدهاند یا اساساً صحت الگوریتمِی که پیاده کردن اثبات شدهست. اما از اون طرف، (همین دوستان) در معماری همیشه پر از خطا بودند و معماریهاشون در یک فرایند تدریجی بهبود پیدا کرده. خطایی که نه لزوماً برخاسته از یک مهندسی غلط، که برخاسته از نیاز بیزینسه. تغییراتی که هیچوقت پیشبینی نشدند، از ناکجا وسط معماری شما سر در میارند و شما را مجبور به تغییرات پرریسک و پرهزینه میکنند. شاهد این مدعا هم باگ فیکس های ابدی تمام پروژههای بزرگ و کوچیکه.
از نظر من، مشکلی که الان شیوع پیدا کرده، تولید کدهاییه که مسئولش از مکانیسمش سر در نمیاره. کدی که «عظیمه، مثل فیل. پر سر و صداست. هیاهوه. دیوانه است. پر هرجومرجه اما مدفوعه». یک فایل ۵۰۰ خطی که یک فیچرو پیاده کرده —که اتفاقاً درست هم کار میکنه— ولی کمتر کسی توان و حوصلهٔ این رو داره بشینه و کار شخص دیگهای رو بخونه تا عمیقاً بفهمه؛ بهخصوص که نرخ تولید PRهایی با تعداد تغییرات بالا به لطف AIها، در حال بیشتر و بیشتر شدنه. مشکلی که قبلا هم در سطح خرد با ظهور امثال استکاوورفلو بیشتر جون گرفت و الان رشد کرده و دست و پا در آورده.
❤17👍10👎1
چرا با وجود AI هنوز هم کیفیت کدی که نوشته میشه مهمه.
فرض کنید انکال هستید یا فرض کنید کد کاملا درست احتیاج دارید.
https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html
فرض کنید انکال هستید یا فرض کنید کد کاملا درست احتیاج دارید.
https://martinfowler.com/articles/exploring-gen-ai/i-still-care-about-the-code.html
martinfowler.com
I still care about the code
Notes from my Thoughtworks colleagues on AI-assisted software delivery
👍16👌1
Forwarded from امین رشیدبیگی | مهندسی نرمافزار
امکان سرویسدهی در سطوح مختلف به کمک Feature Flagها
هر محصول در کنار خدمترسانی اصلیش، کلی قابلیت و فیچر جانبی داره که باعث میشن تجربهٔ کاربر بهتر بشه و یا درآمدش بالاتر بره.
مثلاً توی یه فروشگاه مثل دیجیکالا، علاوه بر مسیر اصلی تجربهٔ کاربر، یعنی جستجو، مشاهدهٔ محصول، اضافه کردن به سبد خرید، پرداخت و ثبت سفارش، دهها قابلیت دیگه هم وجود داره:
لایو اینفلونسرها، سیستم recommendation، تبلیغات فروشندهها، ثبتنام و احراز هویت کاربرهای جدید، و موارد مشابه.
همهٔ اینها برای کسبوکار مهمن، اما وقتی شرایط نرمال نباشه و فشار زیادی روی سرورها بیاد، اهمیتشون با هم برابر نیست.
مثلاً سیستم recommendation به اندازهٔ فرآیند ثبت سفارش حیاتی نیست.
بنابراین باید مکانیزمی داشته باشیم که بتونیم در مواقع ضروری بعضی قابلیتها رو موقتاً غیرفعال کنیم.
یکی از راهحلها استفاده از Feature Flagهاست؛ ابزاری که در زمان کوتاه و با تغییراتی اندک، امکان حذف بخشهایی از محصول رو از مسیر درخواست کاربر فراهم میکنه.
@aminrbg
هر محصول در کنار خدمترسانی اصلیش، کلی قابلیت و فیچر جانبی داره که باعث میشن تجربهٔ کاربر بهتر بشه و یا درآمدش بالاتر بره.
مثلاً توی یه فروشگاه مثل دیجیکالا، علاوه بر مسیر اصلی تجربهٔ کاربر، یعنی جستجو، مشاهدهٔ محصول، اضافه کردن به سبد خرید، پرداخت و ثبت سفارش، دهها قابلیت دیگه هم وجود داره:
لایو اینفلونسرها، سیستم recommendation، تبلیغات فروشندهها، ثبتنام و احراز هویت کاربرهای جدید، و موارد مشابه.
همهٔ اینها برای کسبوکار مهمن، اما وقتی شرایط نرمال نباشه و فشار زیادی روی سرورها بیاد، اهمیتشون با هم برابر نیست.
مثلاً سیستم recommendation به اندازهٔ فرآیند ثبت سفارش حیاتی نیست.
بنابراین باید مکانیزمی داشته باشیم که بتونیم در مواقع ضروری بعضی قابلیتها رو موقتاً غیرفعال کنیم.
یکی از راهحلها استفاده از Feature Flagهاست؛ ابزاری که در زمان کوتاه و با تغییراتی اندک، امکان حذف بخشهایی از محصول رو از مسیر درخواست کاربر فراهم میکنه.
@aminrbg
👍6❤1