Gopher Academy
3.34K subscribers
921 photos
40 videos
280 files
2.06K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
D2: A Declarative Diagramming Tool in Go

🟢 خلاصه مقاله:
D2 یک ابزار نمودارسازی اعلان‌محور و متن‌محور است که با زبان Go ساخته شده و از نظر رویکرد شبیه Mermaid عمل می‌کند؛ یعنی به‌جای رسم دستی، با نوشتن متن، نمودار تولید می‌کنید. به‌روزرسانی اخیر خروجی ASCII را اضافه کرده تا بتوان همان نمودارها را به‌صورت متن ساده در ترمینال، READMEها، ایمیل‌ها و محیط‌های محدود به متن استفاده کرد. این قابلیت، کاربردپذیری و دسترس‌پذیری D2 را در جریان‌های کاری مختلف افزایش می‌دهد.

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Ergo 3.1: An Actor-Based Framework for Go

🟢 خلاصه مقاله:
Ergo 3.1 یک فریم‌ورک بازیگرمحور برای زبان Go است که الگوها و مفاهیم آزموده‌شدهٔ دنیای Erlang/OTP—مانند بازیگرهای ایزوله با ارتباط پیام‌محور و الگوهای نظارت و بازیابی—را به Go می‌آورد. این رویکرد با جداسازی خطاها، مدیریت ساخت‌یافتهٔ هم‌زمانی و پشتیبانی از سناریوهای توزیع‌شده، ساخت سرویس‌های مقیاس‌پذیر و مقاوم را ساده‌تر می‌کند. نسخهٔ 3.1 در مسیر پایداری، کارایی و سادگی API در سری v3 پیش رفته و ابزارهای آشنا و کارآمدی برای طراحی سیستم‌های مقاوم در اکوسیستم Go فراهم می‌کند.

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


👑 @gopher_academy
3
🔵 عنوان مقاله
Let's Look at Go's New Experimental API for JSON

🟢 خلاصه مقاله:
**این مطلب نگاهی عملی به یک API آزمایشی و جدید برای JSON در Go 1.25 دارد؛ تلاشی که به‌دلیل کاستی‌های بسته قدیمی json شکل گرفته است. مقاله توضیح می‌دهد این نسخه «v2» چه مشکلاتی از طراحی قبلی را هدف گرفته، تجربه برنامه‌نویس را چگونه شفاف‌تر و قابل پیش‌بینی‌تر می‌کند، و در کارهای روزمره مثل encode/decode، پیکربندی رفتار، مدیریت خطا و رسیدگی به مواردی مانند اعداد، null، فیلدهای ساختار و جریان‌ها چه تفاوت‌هایی دارد. همچنین تأکید می‌کند که این API هنوز آزمایشی است، برای ارزیابی و دریافت بازخورد عرضه شده، ممکن است تغییر کند، و توصیه‌هایی برای نحوه امتحان‌کردن آن در Go 1.25 و ملاحظات مهاجرت ارائه می‌کند.

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


👑 @gopher_academy
2
🔵 عنوان مقاله
The 9 Go Test Assertions I Use (and Why)

🟢 خلاصه مقاله:
**
الکس در ادامه‌ی بحث پرهیز از پکیج‌های آماده‌ی assertion در تست‌های Go، توضیح می‌دهد عملاً از چه چیزی استفاده می‌کند: مجموعه‌ای کم‌تعداد از ۹ تابع assertion دست‌ساز. او می‌گوید کتابخانه‌های بزرگ هرچند کدنویسی را کوتاه می‌کنند، اما اغلب منجر به ابهام، جریان کنترل پنهان و پیام‌های خطای نامفهوم می‌شوند. در مقابل، چند کمک‌تابع ساده که به t.Helper() متکی‌اند، بدون وابستگی خارجی و با پیام‌های خطای دقیق، هم خوانایی را بالا می‌برند و هم از تکرار جلوگیری می‌کنند.

این ۹ تابع رایج‌ترین نیازها را پوشش می‌دهند: برابری/نابرابری، nil و non-nil، شرایط بولی، شامل‌بودن در رشته‌ها یا مجموعه‌ها، و انتظارهای مرتبط با خطا. اصل مهم این است که این توابع نازک و شفاف باشند، منطق تست را پنهان نکنند و خطا را با مقادیر واقعی/مورد انتظار گزارش کنند.

او به دام‌های رایج نیز اشاره می‌کند: تفاوت nil در اینترفیس‌ها، محدودیت‌های مقایسه‌ی عمیق، و ترجیح سنجش رفتار قابل مشاهده به‌جای برابری کامل ساختارها. نتیجه‌گیری او درباره‌ی «آیا assertion ضدالگو است؟» مشروط است: اگر کلی‌گرا و جادویی شوند، بله؛ اما اگر کم‌حجم، صریح و متناسب با حوزه‌ی تست بمانند، ابزاری مفید هستند. قاعده نهایی: جایی که تکرار دارید از کمک‌تابع استفاده کنید، و هر جا یک بررسی اختصاصی پیام را شفاف‌تر می‌کند، همان را درجا بنویسید.

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


👑 @gopher_academy
2👍1
🎙️ عنوان پادکست:
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 مطرح می‌شود....
🤝4
🔵 عنوان مقاله
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
1
🔵 عنوان مقاله
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