Go Casts 🚀 – Telegram
Go Casts 🚀
8.39K subscribers
283 photos
20 videos
13 files
502 links
VP of Eng Zarinpal | Ex Snapp! Senior SE
فوق لیسانس هوش مصنوعی از دانشگاه تهران

اشتراک محتوا در مورد مهندسی نرم افزار، هوش مصنوعی، گولنگ
https://gocasts.ir

پروفایل
https://www.linkedin.com/in/gohossein

ارتباط
@lifography

Ai for Software
@aicasts_ir
Download Telegram
یه web server جدید با rust نوشته شده به اسم ferron که مورد توجه قرار گرفته.

بنچمارک های اولیه ش که خوب نشون میده، اما فکر میکنم جای کار زیاد داره که قابلیت های مهم web serverهای دیگه رو هم پشتیبانی کنه. مخصوصا اینکه بتونه به عنوان ingress controller هم اجرا بشه روی kubernetes

https://www.ferronweb.org


@gocasts
👍28
Go Casts 🚀
تخفیف ویژه بهار 🎁 سلام به همه دوستان ان شاءالله سال جدید رو پرقدرت شروع کرده باشید ❤️ دوره +‌ تیمسازی بکند و گولنگ Go Casts تخفیف ویژه بهار ۵۰ درصد + ۱ میلیون و ۱۰۰ هزار تومان تخفیف کد بهار BAHAR خرید از سایت https://gocasts.ir همه چیز در مورد دوره و…
سرویس شما چه لودی رو میتونه تحمل کنه؟

یکی از دوستان در یکی از جلسات تیمسازی GoCasts سوالی پرسید در مورد اینکه یه grpc server آیا لود میلیون درخواست بر ثانیه (یا دقیقه) رو میتونه handle کنه؟
تلاش میکنم جوابی که به ایشون دادم رو به شکل دیگه ای اینجا بیان کنم

احتمالا تا حالا با مقالاتی از این دست روبرو شدید
How to Easily Handle 200k RPS with Golang
https://medium.com/@nikitaburov/how-to-easily-handle-200k-rps-with-golang-8b62967a01dd

پیشنهاد میکنم قبل از اینکه بخواید به این فکر کنید که http frameworkی که انتخاب می کنید آیا توانایی پاسخ به تعداد خیلی درخواست رو داره یا نه، به این فکر کنید که اپلیکیشن شما چه کاری رو داره انجام میده و کاری که انجام میشه با چه نوعی از مقیاس پذیری مواجه میشه. آیا قراره تعداد درخواست ورودی تصاعدی زیاد بشه، یا قراره حجم داده ذخیره شده تصاعدی زیاد بشه و یا مصرف منابع شما خیلی زیاد بشه؟
اصلا endpointی که شما توسعه دادید چه flowی داره و در این flow با چه سرویس های خارجی ای صحبت میکنه؟


از نظر من به شخصه سرویسی که ۵ تا ۱۰ هزار درخواست بر ثانیه رو به درستی در مدت زمان قابل قبول (بسته به نوع درخواست ممکنه ۱۰ میلی ثانیه معقول باشه یا ۱ ثانیه…) پاسخ بده، سرویس مقیاس پذیری هست. چرا؟ چون معمولا در چنین لودی ماژول های دیگه سیستم شما از جمله دیتابیس و سرویس های خارجی دیگه با چالش های جدی مواجه میشن که لازمه اول بهینه سازی های مختلفی رو به کمک الگوهای مختلف بهبود مقیاس پذیری به کار بگیرید.

در واقع چالش های واقعی مقیاس پذیری، خیلی زودتر از چیزی که فکرش رو بکنید سراغ شما و اپلیکیشن شما و سرویس های وابسته ش میاد، لازم نیست یه روزی بیاد که http server شما بتونه ۱ میلیون درخواست رو پاسخ بده که شما بخواید بقیه قسمت های سیستم رو مقیاس پذیر کنید، بلکه روند کاملا معکوس هست، احتمالا در خیلی از شرایط http server شما آخرین ماژولی از سیستم شما میشه که مشکلات مقیاس پذیری سراغش میاد.

مثلا در مقاله ای که ارسال کردم، همه چیز رو حذف کرده، صرفا یه مپ درون اپلیکیشن در نظر گرفته و سعی کرده همون رو serve کنه، قطعا موافقم که استفاده از لایه های مختلف کش از جمله کش درون برنامه خیلی به بهبود زمان پاسخگویی کمک میکنه، اما اینطور ساده سازی کردن چالش های مختلف به یک حالت ساده، واقع بینانه نیست.

نکته ای که میخوام بگم اینه که به دنبال اعداد و ارقام فضایی نباشید، و فکر نکنید که باید اون اعداد و ارقام فضایی رخ بده که شما با چالش های مقیاس پذیری روبرو بشید. اینطوری واقع بینانه تر به دنبال راه حل های جدی تری برای مقیاس پذیری سرویس تون خواهید بود تا اینکه بخواید صرفا http server یا ماژول دیگه ای از سرویس تون رو تغییر بدید.

خوشحال میشم بشنوم سرویسی که شما توسعه دادید بیشترین لودی که تحمل کرده چقدره؟



دوره +‌ تیمسازی بکند و گولنگ Go Casts
تخفیف ویژه بهار
۵۰ درصد + ۱ میلیون و ۱۰۰ هزار تومان تخفیف
کد بهار
BAHAR

خرید از سایت
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4


@gocasts
👍204👏2😍1
🎯 سیستم‌های تراکنشی رو چطوری میشه بهتر طراحی کرد؟

مقاله خیلی جذابی در مورد Transactional Systems منتشر شده که خوندنش رو به همه توصیه میکنم. دید مناسبی نسبت به مراحل اجرای تراکنش و تفاوت ترتیب اجراشون میده

🔍 چهار مرحله اصلی تراکنش‌ها:

اجرای تراکنش یا execution: کدی که عملیات خوندن و نوشتن رو انجام می‌ده.

ترتیب‌دهی یا ordering: تعیین زمان یا نسخه برای مشخص کردن ترتیب تراکنش‌ها.

اعتبارسنجی یا validation: بررسی صحت تراکنش بر اساس قوانین همزمانی یا منطق دامنه.

پایداری یا persist: ذخیره‌سازی دائمی نتایج تراکنش، معمولاً روی دیسک.​

این مراحل می‌تونن به‌صورت متوالی یا همزمان انجام بشن و ترتیبشون بسته به طراحی سیستم متفاوته.​

💡 مثال‌ها:

کنترل خوش‌بینانه یا optimistic: اول تراکنش اجرا می‌شه، بعد اعتبارسنجی و در نهایت پایداری.

کنترل بدبینانه یا pessimistic: از همون اول lock میگیره که‌ از conflict جلوگیری بشه.​

در سیستم‌هایی مثل FoundationDB، این مراحل به‌صورت میکروسرویس‌های جداگانه پیاده‌سازی می‌شن که هر کدوم می‌تونن مستقل مقیاس‌پذیر باشن.​

متن مقاله کامل رو اینجا میتونین بخونین
🔗 https://transactional.blog/blog/2025-decomposing-transactional-systems


Ai for Software
@aicasts_ir


@gocasts
15👍9😁2
این مقاله خیلی خلاصه و جمع و جور اجزای داخلی kubernetes رو معرفی کرده و در مورد نقش هر کدوم توضیح داده

ارزش داره در حد ۵ دقیقه وقت بذارید براش
How Kubernetes Works Internally?
A High-Level Overview

https://newsletter.systemdesigncodex.com/p/how-kubernetes-works-internally


@gocasts
👍274
درک رفتار و تفاوت دو شیوه Shared Memory vs. Message Passing میتونه به شما کمک کنه که مکانیزم های concurrency در زبان های مختلف رو بهتر درک کنید و طراحی بهتری در سیستم داشته باشید.

مقاله جالبی در همین مورد منتشر شده که شما رو به خوندنش دعوت میکنم.
Hey process there is a message for you
https://www.poeticoding.com/hey-process-there-is-a-message-for-you/



دوره +‌ تیمسازی بکند و گولنگ Go Casts
تخفیف ویژه بهار
۵۰ درصد + ۱ میلیون و ۱۰۰ هزار تومان تخفیف
کد بهار
BAHAR

خرید از سایت
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4


@gocasts
👍10
یکی از دوستان پلتفرمی رو معرفی کرد که خیلی خوبه برای تقویت مهارت های مهندس نرم افزار

اینطوریه که بصورت مرحله به مرحله شمارو راهنمایی میکنه که یکی از ابزارهای پرکاربرد رو از صفر توسعه بدید، ابزارهایی مثل ردیس یا git و غیره…

البته خیلی از قسمت هاش پولیه ولی برای ایرانیا ۵۰ درصد تخفیف میده
https://app.codecrafters.io/pay

Become a better software engineer.
Stop following tutorials designed for beginners.
Start working on projects that actually challenge you.
Become a better engineer through deliberate practice.
https://codecrafters.io

@gocasts
24👍9😍1
برای اینکه یه LLM Model کارایی کافی رو داشته باشد، باید بتونه context موضوع در حال تعامل رو بخوبی درک کنه و در توالی تعاملات اون context رو حفظ کنه.
در یکی دو سال اخیر که استفاده از llmها در ساخت اپلیکیشن ها زیاد شده، چون الگوی خاصی وجود نداشت هر سیستمی به شیوه خودش سعی میکرد context رو مدیریت کنه و این قضیه چالش برانگیز بود.

معرفی MCP یا همون Model Context Protocol و A2A یا همون Agent to Agent Protocol برای حل کردن همین چالش هست.


این مقاله خیلی مفصل MCP و A2A رو بررسی کرده و معماری و کاربردهای واقعی شون رو هم بیان کرده، خوندن ش رو خیلی توصیه میکنم

MCP vs A2A: Understanding Context Protocols for AI Systems
https://devrelguide.com/blog/mcp-vs-a2a


@gocasts


Ai for Software
@aicasts_ir
👍245
اخیرا داکر یه قابلیتی رو اضافه کرده به اسم Docker Bake، برای مدیریت buildهای پیچیده مناسبه.

اگه buildهای مختلفی برای استیج های مختلف ci مثل lint و test و غیره هم دارید این ابزار بهتون کمک میکنه به شیوه declerative تر و ساده تری مدیریت کنید بیلدهاتون رو.

پروژه هایی که monorepo هستند ولی بیلدهای متنوع دارن هم میتونن ازش استفاده کنن.
سازگاری خیلی خوبی هم با docker-compose داره.

Docker Bake is Now Generally Available in Docker Desktop 4.38!
https://www.docker.com/blog/ga-launch-docker-bake/


@gocasts
👍31😍3
فوق العاده ست این warp. اینطوریه که یه ایجنت خیلی خوب برای ترمینال میشه. به جای اینکه برای انجام دادن یه پروسه مجبور باشی دونه دونه دستور و خطاهارو تو گوگل دنبال جواب باشی، یه جمله بهش میگی چیکار کن خودش هم پلن میکنه دستورالعمل رو و هم دونه به دونه اجرا میکنه و اگه خطایی هم باشه خودش دنبال راه حل میگرده.
اگه به استفاده کردن ازش عادت کنید فکر نمیکنم دیگه بتونید با ترمینال دیگه ای کار کنید.

ضمنا خودش context کار رو میدونه و وقتی در خط فرمان میخوای دستوری رو اجرا کنی قبل از نوشتن دستور پیشنهاداتش رو بهت میگه.

Warp Terminal
The intelligent terminal.
Become a command line power user on day one. Warp combines AI and your dev team’s knowledge in one fast, intuitive terminal.
https://www.warp.dev

@gocasts
👍35🔥5
این مقاله نکات ساده و مهمی رو برای طراحی distributed systemها میگه
نکاتی که گفته کوتاه و جمع و جوره اما واقعا درسته و کمک میکنه برای طراحی سیستم درست با رعایت کردن یه سری اصول ساده و مهم


One cache cluster to rule them all
مواظب باشید که سرورهای کش سرویس های مختلف یکی نباشن!

Queues are non-negotiable
وجود queue غیرقابل مذاکره ست، برامون زمان میخره که لود رو مدیریت کنیم!

Measuring end-to-end latency
یادمون نره latency پیام های async رو هم تو سیستم مانیتور کنیم، انباشت شدن شون و اختلاف زمان لحظه درخواست با پردازش شون مهمه.

Design for failure
این یکی که دیگه اصل قضیه ست، انواع و اقسام خطاها تو سیستم ممکنه رخ بده و باید براشون آماده باشیم، استفاده از retry pattern و circuit breaker و dead-letter queue الگوهای کمک کننده هستند.

Design for idempotency
اگه میخوای fault-tolerant باشی لازمه که حتما در ادامه ش idempotent هم باشی چون duplicate callها تقریبا اجتناب ناپذیر هستند در شرایط خطا


Lessons from building and maintaining distributed systems at scale
https://www.16elt.com/2025/04/19/lessons-from-distributed-systems/


@gocasts
👍31
اگه برای سرویس یا محصول تون به دنبال یه سرویس search engine هستید که کاربر بتونه باهاش product search کنه یا autocomplete و in-app search داشته باشه به جای راه اندازی دردسردار elasticsearch میتونید از meilisearch استفاده کنید.
الاستیک خیلی قابلیت ها داره که متفاوته با ابزاری که معرفی کردم، ولی برای مواردی که عرض کردم میتونه راه اندازی الاستیک و نگهداری ش بیش از حد سنگین باشه.

ابزار meilisearch با rust نوشته شده و زمان پاسخگویی ش خیلی پایینه (زیر ۵۰ میلی ثانیه) و تقریبا real-time آپدیت میکنه (۱ ثانیه تاخیر حدودا)

البته اعدادی که گفتم بسته به نحوه استفاده و داده شما و کانفیگ سرور میتونه متفاوت باشه

همچنین meilisearch قابلیت های فیلتر کردن ساده رو صرفا پشتیبانی میکنه اما facet search داره که فکر میکنم برای کاربردهای مذکور کافی باشه


بنظرم اگه لازم دارید چنین چیزی رو به امتحان کردنش میارزه.

Meilisearch
A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.
https://github.com/meilisearch/meilisearch


@gocasts
21👍13
سلام دوستان
تعدیل شدن تعدادی از دوستان و همکاران عزیزم در اسنپ بسیار ناراحت کننده ست و بنده در حد توانم تلاش می کنم که زودتر و بهتر بتونن شغل مد نظرشون رو پیدا کنن، به همین جهت اگه در موقعیت مهندس نرم افزار، بکند و گولنگ در سطوح میدلول و سنیور به نیرو احتیاج داشتید. حتما اطلاع بدید به من که بهتون معرفی کنم.

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


@gocasts
60👍15👏4😁4
از مهمترین بهبودهای گولنگ در نسخه ۱.۲۴ پشتیبانی بهتر از WebAssembly هست که هم برای وب اپلیکیشن هایی که محاسبات سنگین یا لاجیک خیلی مشترک با بکند دارن میتونه کاربردی باشه و هم برای Edge Computing مناسبه.

تو این ویدیو توضیحات رو میتونید بخونید.
https://www.youtube.com/watch?v=kj80m-umOxs
به همچنین در این مقاله
https://go.dev/blog/wasmexport

@gocasts
🔥17👍63
ویرایشگر Void یه جایگزین متن باز برای Cursor هست که Y-Combinator ازش حمایت میکنه.
بر پایه VSCode هست و با هر LLMی هم کار میکنه. خیلی جذابه.
https://voideditor.com


@gocasts
👍218🔥2
یک و نیم میلیون تومان + ۵۰ درصد تخفیف تابستانه

اسکرین شات دو فیدبک از دوستان شرکت کننده در دوره رو مشاهده می کنید.


دوره +‌ تیمسازی بکند و گولنگ Go Casts
تخفیف ویژه تابستان
۵۰ درصد + ۱ میلیون و ۵۰۰ هزار تومان تخفیف
کد تابستان
SUMMER

خرید از سایت
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4


@gocasts
👍94🔥3
یه سری از مهندس ها هستن که از همون لحظه اول که باهاشون هم کلام میشی متوجه میشی که با کوله باری از تجربه و دانش مواجهی و اگه فرصت طلب باشی تا بتونی سعی میکنی از دریای دانش شون ذره ای بهره مند بشی.
بهراد جان از نظر من قطعا جز همین دسته از مهندسین هست، که نه تنها دانش عمیق و تجربه جدی و کافی داره، بلکه فن بیان خیلی خوبی هم داره که کار رو برای انتقال تجربه خیلی راحت تر میکنه.

این پست نه تبلیغه، نه مشارکت در فروش و نه هیچ چیز دیگه ای، صرفا حس میکنم آدمای درست باید شناخته بشن که افراد بیشتری از دانش و تجربه شون بهره مند بشن.

بهراد جان قراره بزودی با همکاری دانشگاه شریف دو دوره آموزشی جدید برگزار کنه که لینک دوره هارو اینجا قرار میدم، حتما بررسی کنید و اگه شرایط ش رو دارید استفاده کنید.
مخلص همگی ❤️
یا علی

لینک پروفایل لینکدین بهراد جان
https://www.linkedin.com/in/behradz

دوره سیستم دیزاین، طراحی سیستم های مقیاس پذیر
https://shop.alumsharif.org/insurance/product/c-ds/

دوره هنر کدنویسی، پیاده سازی با ذهنیت یک معمار
https://shop.alumsharif.org/insurance/product/c-sdwa/


@gocasts
22👍10🔥6
لذت بردم از خوندن این مقاله
امروز مقاله‌ای خوندم به اسم «My AI Skeptic Friends Are All Nuts» نوشته‌ی Thomas Ptacek که خودش خیلی برنامه نویس با سابق ای هست، سعی کرده نگاهی صریح و جسورانه داشته باشه به این‌که چرا نادیده گرفتن ابزارهای AI در توسعه نرم‌افزار اشتباهه.

نکته‌ش چیه؟ AI قرار نیست خلاقیت رو حذف کنه، ولی واقعاً داره نحوه کدنویسی ما رو متحول می‌کنه. از درک ساختار کد تا اجرای تست‌ها — مدل‌های زبانی بزرگ فراتر از یک دستیار عادی هستن، بلکه شیوه کار کردن و کدنویسی رو متحول میکنن.

این مقاله نمی‌گه که هوش مصنوعی قراره برنامه‌نویس‌ها رو جایگزین کنه. بلکه پیام اصلیش خیلی ‌واقع‌بینانه‌تره:
برنامه‌نویس‌ها باید هوش مصنوعی رو بپذیرن — نه از ترسِ حذف شدن، بلکه چون می‌تونه اون‌ها رو چند برابر مؤثرتر کنه.


نویسنده مقاله منتقد کسانیه که بدون شناخت درست، ابزارهای AI رو دست‌کم می‌گیرن.
هوش مصنوعی قرار نیست تفکر خلاق، طراحی معماری، یا حل مسئله‌های عمیق رو جایگزین کنه. و نکته مهم اینه که این موارد همچنان قلب مهندسی نرم‌افزارن.
نکته مهم دیگه اینه که AI می‌تونه کارهای تکراری، روتین و وقت‌گیر رو مثل جست‌وجوی داکیومنت‌ها، درک کدهای بزرگ، یا نوشتن تست‌های ساده رو انجام بده.
برنامه‌نویسی که از AI به درستی استفاده کنه، ابزار قدرتمندی در دستشه. کسی که نادیده‌ش بگیره، ممکنه عقب بیفته — نه به این دلیل که حذف می‌شه، بلکه چون از بقیه عقب می‌مونه.


نکته آخر اینکه بحث «AI برای جایگزین برنامه‌نویس» نیست. بحث «برنامه‌نویسی به کمک AI در برابر برنامه‌نویسی بدون AI» هست.

قرار نیست AI جای برنامه نویس رو بگیره. اما برنامه‌نویسی که از AI استفاده می‌کنه، شاید جای کسی که از AI به درستی استفاده نمیکنه رو بگیره.


این لینک مقاله اصلی
https://fly.io/blog/youre-all-nuts



@gocasts

Ai for Software
@aicasts_ir
19👍9🔥3
از Ubuntu نسخه ۲۵.۱۰ ابزار sudo-rs به جای sudo قدیمی استفاده خواهد شد. این نسخه جدید با rust نوشته شده، علت این اتفاق memory safe بودن rust ذکر شده، چون ابزار sudo خیلی حیاتی هست و از نظر امنیتی توجیه پذیر هست که با زبانی مثل rust نوشته بشه.

دستور sudo تغییر نمیکنه ولی عملا sudo-rs اجرا میشه در ۲۵.۱۰.

اگه همه چیز خوب پیش بره احتمالا ابزارهای سیستمی بیشتری با زبان rust بازنویسی خواهند شد که فراگیر شدن این زبان رو افزایش میده.

Ubuntu 25.10 Switches to Rust-based Sudo
https://www.omgubuntu.co.uk/2025/05/ubuntu-25-10-rust-sudo-rs-change


@gocasts
👍349👏2