Gopher Academy
3.33K subscribers
923 photos
40 videos
280 files
2.07K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🎙️ عنوان پادکست:
What's coming in Go 1.25? Plus Redowan Delowar on what makes Go different from other languages
خلاصه پادکست:
این قسمت نگاهی به Go 1.25 و انتشار نخستین نسخه候دی آن دارد و توضیح می‌دهد این چرخه چه پیام‌هایی درباره روند تکاملی و سازگاری‌محور Go می‌دهد. سپس به یادداشت التون مینِتو درباره «نظریه‌مندتر بودن Go» می‌پردازد و مزایا و معایب پیش‌فرض‌های قوی‌تر در برابر انعطاف را بررسی می‌کند. در ادامه، با تکیه بر مطلب «HTTP QUERY and Go»، نکات عملی برای پارس و اعتبارسنجی پارامترهای کوئری در هندلرهای HTTP مطرح می‌شود....
🤝5
🔵 عنوان مقاله
Go Experiments with SIMD: Intrinsics Arrive on the dev.simd Branch

🟢 خلاصه مقاله:
شاخه آزمایشی dev.simd در ابزارهای Go پشتیبانی مستقیم از SIMD را از طریق «اینترینسیک‌ها» اضافه می‌کند؛ یعنی توابعی که به‌طور مستقیم به دستورهای برداری پردازنده نگاشت می‌شوند. این کار به توسعه‌دهندگان اجازه می‌دهد بدون نوشتن اسمبلی، کد برداریِ پرکارایی را مستقیماً در Go بنویسند. تمرکز اولیه روی مدل AMD در معماری x86-64 است.

SIMD برای شتاب‌دهی به پردازش‌های موازی روی داده‌های متعدد در یک دستور کلیدی است و در حوزه‌هایی مانند محاسبات عددی، پردازش تصویر و سیگنال، رمزنگاری، فشرده‌سازی و اجرای پرس‌وجوهای پایگاه‌داده سودمند است. پیش‌تر این دسترسی عمدتاً با اسمبلی Go انجام می‌شد که نگه‌داری و قابل‌ حمل بودن را دشوار می‌کرد.

اینترینسیک‌ها ضمن حفظ ایمنی نوع و یکپارچگی با زنجیره ابزار Go، نوشتن و بازبینی کد برداری را ساده‌تر می‌کنند و نیاز به پوشش‌های اسمبلی را کاهش می‌دهند. بااین‌حال این قابلیت هنوز آزمایشی است: رابط‌ها پایدار نیستند، پوشش دستورها کامل نیست و کارایی ممکن است تغییر کند. این ویژگی فعلاً در نسخه‌های پایدار Go موجود نیست و برای آزمایش باید شاخه dev.simd را ساخت و استفاده را با بررسی ویژگی‌ها و مسیرهای جایگزین محافظت کرد.

🟣لینک مقاله:
https://golangweekly.com/link/173331/web


👑 @gopher_academy
2
🔵 عنوان مقاله
Exploring Concurrency Issues with Philosophers and Go

🟢 خلاصه مقاله:
** این مجموعه به دو موضوع عملی می‌پردازد: نخست، با استفاده از مسئله «فیلسوفان غذاخور» نشان می‌دهد چگونه در Go مشکلاتی مانند بن‌بست، گرسنگی و رقابت رخ می‌دهد و با الگوهایی مانند ترتیب‌دهی منابع مشترک، استفاده سنجیده از کانال‌ها و select با timeout، هماهنگی با WaitGroup و لغو با context، و همچنین ابزارهایی مثل race detector و go vet می‌توان آن‌ها را پیشگیری و ردیابی کرد. دوم، توضیح می‌دهد چرا Podman می‌تواند جایگزین بهتری برای Docker باشد: معماری بدون دیمون، اجرای روت‌لس، سازگاری با CLI و تصاویر OCI، و ادغام تمیز با systemd؛ با این حال به تفاوت‌هایی در شبکه، ولوم‌ها و گردش‌کار compose هم اشاره می‌کند که نیازمند آزمون و تنظیمات است. پیام مشترک: هم در هم‌زمانی و هم در انتخاب ابزار، طراحی سنجیده و توجه به امنیت و بهره‌وری، نتیجه بهتری می‌دهد.

🟣لینک مقاله:
https://golangweekly.com/link/174074/web


👑 @gopher_academy
🤝11
Forwarded from Bardia & Erfan
🤍روز برنامه‌نویس خجسته باد💐
3🍾3
🔵 عنوان مقاله
What the Go Proxy Has Been Doing

🟢 خلاصه مقاله:
از چند هفته پیش، تد متوجه شد پراکسی ماژول‌های Go ترافیک غیرمعمولی به سرورش می‌فرستد و پرسید این پراکسی دقیقا چه می‌کند. او پس از مکاتبه با راس کاکس دریافت که پراکسی برای تضمین بیلدهای بازتولیدپذیر، نسخه‌های ماژول را واکاوی و آرشیو می‌کند و گاهی به‌نظر می‌رسد درخواست‌های تهاجمی دارد. نکته کلیدی رفتار آن با فایل‌های LICENSE است: نبودن یا جای‌گیری غیرمعمول این فایل می‌تواند تشخیص «قابل‌توزیع بودن» را مبهم کند و باعث درخواست‌های تکراری یا تغییر در نحوه کش/ارائه ماژول شود. جمع‌بندی: چیدمان‌های خاص مخزن و مجوزدهی ناقص می‌تواند فعالیت پیش‌بینی‌نشده پراکسی را برانگیزد؛ قراردادن یک LICENSE استاندارد و شفاف کمک می‌کند پراکسی مطابق انتظار عمل کند.

🟣لینک مقاله:
https://golangweekly.com/link/174059/web


👑 @gopher_academy
3🎉11
🔵 عنوان مقاله
GoferBroke: An Anti-Entropy Gossip Protocol for Distributed Systems

🟢 خلاصه مقاله:
** GoferBroke یک پروتکل گاسیپ ضد‌آنتروپی برای سیستم‌های توزیع‌شده است که با رویکردی مینیمال و پرکارایی، امکان تعبیه‌کردن وضعیت غیرمتمرکز و «در نهایت سازگار» را مستقیماً در خود برنامه‌ها فراهم می‌کند. در این روش، گره‌ها به‌صورت دوره‌ای با همتایان خود خلاصه‌ای از وضعیت را ردوبدل می‌کنند، اختلاف‌ها را شناسایی کرده و به‌صورت تدریجی با تبادل به‌روزرسانی‌ها همگام می‌شوند؛ بنابراین بدون هماهنگ‌کننده مرکزی و حتی در حضور قطعی‌ها و پارتیشن‌های شبکه، به همگرایی می‌رسند. تمرکز بر مینیمالیسم و سربار پایین، ادغام به‌صورت کتابخانه‌ای را ممکن می‌کند و اختیار انتخاب لایه انتقال، نمایش داده و راهبرد حل تعارض را به خود برنامه می‌سپارد. این رویکرد برای سناریوهایی مانند کش توزیع‌شده، انتشار پیکربندی و فیچر فلگ، Edge/IoT، حالت‌های مشترک در سرویس‌های خرد و همکاری بلادرنگ که سازگاری نهایی کفایت دارد، مناسب است.

🟣لینک مقاله:
https://golangweekly.com/link/174082/web


👑 @gopher_academy
Forwarded from Bardia & Erfan
درود به همه دوستان

به مناسبت روز برنامه‌نویس 🎉
می‌تونید فقط با ۲۰۰ هزار تومان تبلیغ‌تون رو توی تمام کانال‌های زیر منتشر کنید!

📌 این فرصت ویژه فقط تا پایان همین هفته اعتبار داره.
برای هماهنگی بیشتر به ای دی زیر پیام بدید👾

@mrbardia72


🔽 لیست کانال‌هایی که تبلیغ در اون‌ها قرار می‌گیره:

https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
🔵 عنوان مقاله
Gonzo: A Go-Powered Realtime Log Analysis Terminal UI

🟢 خلاصه مقاله:
یک رابط کاربری ترمینالی برای تحلیل لحظه‌ای لاگ‌ها است که با زبان Go ساخته شده و از k9s الهام گرفته است. Gonzo با نمایش نمودارهای خوانا در ترمینال، الگوها و ناهنجاری‌ها را آشکار می‌کند و با لایه‌ای از تحلیل‌های هوشمند (AI) خلاصه‌ها و نشانه‌های سریع از علت مشکلات ارائه می‌دهد. فیلترهای پیشرفته و جست‌وجوی انعطاف‌پذیر امکان تمرکز بر بخش‌های مهم جریان لاگ را فراهم می‌کنند و ناوبری مبتنی بر کیبورد سرعت کار را بالا می‌برد. این ابزار برای توسعه‌دهندگان، SREها و تیم‌های DevOps طراحی شده تا بدون ترک ترمینال، تحلیل سریع و کارآمدی روی لاگ‌های زنده انجام دهند.

🟣لینک مقاله:
https://golangweekly.com/link/173341/web


👑 @gopher_academy
🔥1
Gopher Academy pinned « درود به همه دوستان به مناسبت روز برنامه‌نویس 🎉 می‌تونید فقط با ۲۰۰ هزار تومان تبلیغ‌تون رو توی تمام کانال‌های زیر منتشر کنید! 📌 این فرصت ویژه فقط تا پایان همین هفته اعتبار داره. برای هماهنگی بیشتر به ای دی زیر پیام بدید👾 @mrbardia72 🔽 لیست کانال‌هایی…»
🔵 عنوان مقاله
Running Go-Written Tools in a Browser

🟢 خلاصه مقاله:
** قابلیت کامپایل کردن Go به WebAssembly اجرای ابزارهای نوشته‌شده با Go را مستقیماً در مرورگر، بدون نصب محلی، ممکن می‌کند. این رویکرد مزایایی مانند توزیع آسان، امنیت سندباکس، تجربه یکسان روی همه سیستم‌عامل‌ها و امکان تعاملات زنده (مثل پیش‌نمایش، آموزش و دمو) دارد. کاربردهای رایج شامل پورت ابزارهای خط فرمان، فرمت‌کننده‌ها و لینترها، ابزارهای تبدیل داده و محیط‌های آموزشی است. با این حال باید به اندازه باینری، زمان بارگذاری، تفاوت APIهای مرورگر، هزینه رفت‌وآمد JS/WASM و محدودیت‌های همزمانی توجه کرد. در مجموع، WebAssembly فرصت‌های جذابی برای ساخت و انتشار ابزارهای کاربردی مبتنی بر وب فراهم می‌کند.

🟣لینک مقاله:
https://golangweekly.com/link/174072/web


👑 @gopher_academy
2
🔵 عنوان مقاله
'GoLand Can Do That?' Ten Secret Superpowers You Might Not Know

🟢 خلاصه مقاله:
** خلاصه فارسی: این مجموعه با عنوان «‏GoLand می‌تواند این کار را بکند؟ ده توانایی مخفی که شاید ندانید» بر ویژگی‌های کمترشناخته‌شده‌ی GoLand تمرکز دارد که بهره‌وری برنامه‌نویسان Go را بالا می‌برد. در ادامه، جان آرندل با استفاده از مسئله‌ی «فیلسوفان غذاخور» چالش‌های هم‌زمانی در Go—مانند بن‌بست، گرسنگی و شرایط رقابتی—را به‌صورت مفهومی و عملی بررسی می‌کند. همچنین آنیس سواعد به‌صورت انتقادی تجربه‌ی مهاجرت از Docker به Podman را مرور می‌کند و مزایا و ملاحظات این تغییر را از منظر کارکرد، سازگاری و جریان کار توضیح می‌دهد. در مجموع، این مطالب—with مشارکت جان آرندل، آنیس سواعد و دومینیک شیمانسکی—می‌کوشند میان مهارت در ابزار IDE، درک عمیق هم‌زمانی، و انتخاب آگاهانه ابزارهای کانتینری پیوند برقرار کنند.

🟣لینک مقاله:
https://golangweekly.com/link/174073/web


👑 @gopher_academy
1
🔵 عنوان مقاله
Implementing Forth in Go and C

🟢 خلاصه مقاله:
این مطلب روند ساخت یک پیاده‌سازی کوچک و کاربردی از زبان فورت را در دو زبان C و Go بررسی می‌کند. فورت به‌دلیل سادگی، ساختار پشته‌ای و اجرای تعاملی، بستری روشن برای فهم نحوه کار مفسرها و ماشین‌های مجازی فراهم می‌کند.

ابتدا مفاهیم بنیادی فورت توضیح می‌شود: واژه‌ها در فرهنگ لغت ذخیره می‌شوند، ورودی با فاصله توکنایز می‌شود، اعداد روی پشته قرار می‌گیرند و واژه‌ها مستقیماً پشته را دست‌کاری می‌کنند. با چند دستور اولیه (حسابی، جابه‌جایی پشته، دسترسی به حافظه و کنترل جریان) می‌توان سامانه‌ای کمینه و قابل گسترش ساخت.

سپس رویکرد C معرفی می‌شود: کنترل دقیق حافظه و سرعت بالا برای حلقهٔ درونی مفسر و نمایش کد رشته‌ای مناسب است، اما مدیریت دستی حافظه و خطرات رفتار نامعین چالش‌زا هستند. در مقابل، نسخهٔ Go بر سادگی و ایمنی تکیه دارد؛ اسلایس‌ها و نگاشت‌ها پیاده‌سازی پشته و فرهنگ لغت را آسان می‌کنند و جمع‌آوری زباله پیچیدگی حافظه را کم می‌کند، هرچند کمی سربار در مسیرهای داغ ایجاد می‌شود.

در جمع‌بندی، مقاله نشان می‌دهد C کنترل و کارایی بالقوهٔ بیشتری می‌دهد ولی دقت بالایی می‌طلبد؛ Go توسعهٔ سریع‌تر و ایمنی بهتری فراهم می‌کند و همچنان برای یک مفسر آموزشی کاراست. خواننده با اجزای اصلی (پشته، فرهنگ لغت، تجزیه‌گر و حلقهٔ درونی) آشنا می‌شود و دید عملی برای ادامهٔ آزمایش و گسترش به‌دست می‌آورد.

🟣لینک مقاله:
https://golangweekly.com/link/173340/web


👑 @gopher_academy
Forwarded from Software Engineer Labdon
چطور یه سیستم غیرقابل نگهداری میشه؟
وقتی همه اعضای تیم حرفه ای و متخصص، بیزنس هم عالی ولی توسعه سیستم داره روز به روز سخت تر میشه و برای هر فیچر کوچیک و بزرگ زمان زیادی باید انتظار کشید تا به سیستم اضافه بشه وقتی هم اضافه میشه دیگه صدای تیم پروداکت و بیزنس در اومده!
تو این مطلب یه مقدار عمیقتر رفتم سراغ اینکه در چنین شرایطی، وقتی فشار روی تیم فنی هست یا یک سیستم legacy رو تحویل گرفتیم چه کارهایی (بخوانیم تصمیمات غلط) جلوی توسعه و نگهداری سیستم رو میگیره.
لینک مطلب:
https://mohammadkeshavarz.substack.com/p/anti-patterns-and-solutions
🤝2👍1
🔵 عنوان مقاله
Avoiding Common sync.WaitGroup Mistakes

🟢 خلاصه مقاله:
این مقاله توضیح می‌دهد که با وجود سادگی ظاهری sync.WaitGroup در گو، خطاهای رایجی مانند Add پس از آغاز Wait یا پس از شروع گوروتین‌ها، عدم توازن بین Add و Done، کپی‌کردن یا عبور به‌صورت مقداری، و استفادهٔ دوباره از یک WaitGroup می‌تواند به بن‌بست، شمارندهٔ منفی و نشت گوروتین منجر شود. از نسخهٔ 1.25 گو، ابزار go vet با افزودن بررسی‌های ویژه بسیاری از این الگوهای پرخطر را در زمان ساخت شناسایی می‌کند. با این حال، رعایت اصولی مانند پاس‌دادن اشاره‌گر، فراخوانی Add پیش از ساخت گوروتین‌ها، Done دقیقاً یک‌بار در هر گوروتین، و پرهیز از استفادهٔ مجدد WaitGroup همچنان ضروری است و در صورت نیاز می‌توان از ابزارهای سطح بالاتر مانند errgroup بهره برد.

🟣لینک مقاله:
https://golangweekly.com/link/174070/web


👑 @gopher_academy
🔵 عنوان مقاله
TinyGo 0.39: Now with Go 1.25 Support

🟢 خلاصه مقاله:
TinyGo 0.39 با پشتیبانی از Go 1.25 منتشر شده و هدف آن رساندن دنیای Go به محیط‌های محدود مانند سیستم‌های نهفته، میکروکنترلرها و WebAssembly است. این به‌روزرسانی، سازگاری با آخرین تغییرات زبان و کتابخانه استاندارد Go را فراهم می‌کند و اشتراک‌گذاری و بازاستفاده از کد بین محیط‌های مختلف را آسان‌تر می‌سازد، در حالی که اندازه باینری و سربار اجرا پایین می‌ماند. برای پروژه‌های نهفته و WASM، این نسخه انتقال کد، استفاده از APIهای جدید و ساخت ماژول‌های سبک و قابل حمل را ساده‌تر می‌کند. پیش از ارتقا، بررسی یادداشت‌های انتشار و فهرست اهداف پشتیبانی‌شده توصیه می‌شود.

🟣لینک مقاله:
https://golangweekly.com/link/173092/web


👑 @gopher_academy
1👍1🔥11
🔵 عنوان مقاله
Google Releases Genkit Go 1.0

🟢 خلاصه مقاله:
گوگل نسخهٔ ۱.۰ Genkit Go، فریم‌ورک متن‌باز خود برای توسعهٔ هوش مصنوعی با زبان Go را منتشر کرده است. این نسخه تولیدی و پایدار اعلام شده و همراه با مجموعه‌ای از ابزارهای مکمل ویژهٔ توسعه‌دهندگان Go ارائه می‌شود. Genkit Go برای ساخت برنامه‌های مبتنی بر مدل‌های زبانی بزرگ طراحی شده و به مدل‌های گوگل محدود نیست. همچنین یک آموزش مقدماتی برای شروع کار در دسترس است.

🟣لینک مقاله:
https://golangweekly.com/link/174076/web


👑 @gopher_academy
1🤝1
🔵 عنوان مقاله
Observability in Go: What Real Engineers Are Saying in 2025

🟢 خلاصه مقاله:
این مقاله با مرور دیدگاه‌های عملی مهندسان در سال ۲۰۲۵ و آنچه در Golang Weekly برجسته شده، نشان می‌دهد رویکرد غالب در مشاهده‌پذیری Go بر سه ستون لاگ، متریک و تریس است و پروفایلینگ پیوسته به‌طور فزاینده‌ای به آن اضافه می‌شود. OpenTelemetry زبان مشترک تیم‌ها برای ابزاردهی و مسیر داده است و با الگوی context در Go برای هم‌بستگی تریس‌ها به‌خوبی همراه می‌شود؛ در کنار آن، ابزارهای بومی مانند pprof و runtime/trace برای دید عمیق سطح پایین به‌کار می‌روند.

چالش‌های واقعی بیشتر عملی‌اند: کنترل هزینه و کاردینالیتی، انتخاب نمونه‌برداری که سیگنال را حفظ کند، و تعیین نگهداشت داده متناسب با چرخه رخدادها. تیم‌ها بر لاگ ساخت‌یافته، هم‌بستگی سازگار میان تریس و متریک، و تعداد کمی SLO و سیگنال کلیدی باکیفیت تأکید دارند و برای بارهای ناهمگام و صف‌ها توجه ویژه به انتشار context می‌گذارند. همچنین تجربه توسعه‌دهنده (قابلیت بازتولید محلی، آزمون‌های CI برای رگرسیون تلِمتری و آزمایش بار پیش‌تولید) اهمیت بالایی دارد.

از نظر کارایی، با پیکربندی محتاطانه و نمونه‌برداری، سربار SDKها و صادرکننده‌ها قابل مدیریت است، اما باید در هر بارکاری سنجیده شود. متریک‌های زمان‌اجرای Go و پروفایل‌ها برای رصد فشار GC، تخصیص‌ها و قفل‌ها حیاتی‌اند و برخی تیم‌ها برای کاهش نقاط کور از eBPF و پروفایلینگ پیوسته بهره می‌برند.

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

🟣لینک مقاله:
https://golangweekly.com/link/173651/web


👑 @gopher_academy
🔵 عنوان مقاله
go-getter 1.8: Download Things from Various Sources with a URL

🟢 خلاصه مقاله:
go-getter 1.8 ابزاری است که با یک رشته شبیه URL، فایل‌ها را از منابع گوناگون دانلود می‌کند. فراتر از یک کلاینت ساده HTTP عمل می‌کند: می‌تواند URLهای GitHub را به‌صورت مخزن git دریافت کند، با مسیرهای محلی، S3، مخازن Mercurial و Bitbucket نیز کار می‌کند و همچنان از HTTP پشتیبانی می‌کند. مزیت اصلی آن یک رابط یکنواخت برای همه این پشتوانه‌هاست که اسکریپت‌ها و جریان‌های خودکار (CI/CD و ساخت) را ساده‌تر و قابل‌اعتمادتر می‌سازد.

🟣لینک مقاله:
https://golangweekly.com/link/174081/web


👑 @gopher_academy
3👍1
🔵 عنوان مقاله
Kratos 2.9: A Go Framework for Cloud-Based Microservices

🟢 خلاصه مقاله:
** کراتوس ۲.۹ یک فریم‌ورک مبتنی بر زبان Go برای ساخت و اجرای میکروسرویس‌های ابری است که بر «حاکمیت میکروسرویس‌ها» تمرکز دارد. این چارچوب ارتباطات بین سرویس‌ها را حول HTTP و gRPC سامان می‌دهد تا قراردادهای شفاف و الگوهای یکپارچه ایجاد شود. هدف اصلی آن استانداردسازی پیکربندی، تعریف و مصرف APIها و شیوه‌های مشاهده‌پذیری و مدیریت در محیط‌های ابری است تا تیم‌ها بتوانند سامانه‌های مقیاس‌پذیر و قابل‌اتکا را با تجربه توسعه یکدست‌تر بسازند.

🟣لینک مقاله:
https://golangweekly.com/link/174083/web


👑 @gopher_academy