🔵 عنوان مقاله
The Concurrency Conundrum: A Story of Curiosity and Code
🟢 خلاصه مقاله:
**این مقاله داستان برخورد با یک مشکل رایج در همزمانی است: سرویس ظاهراً سالمی که زیر بار گاهی قفل میکرد و درخواستها معطل میماندند. با افزودن لاگهای ساختیافته، ابزارهای رهگیری و یک تست حداقلیِ قابلبازتولید، ریشه مشخص شد: ترتیبگیری نادرست قفلها و بخشهای بحرانی طولانی که به بنبست و گاهی رقابت در دسترسی به متغیرها منجر میشد. راهحل با تعریف نظم ثابت در ترتیب اخذ قفلها، جایگزینی قفل سراسری با قفلهای ریزدانه و read-write، کوچککردن بخشهای بحرانی و پرهیز از I/O زیر قفل، بهکارگیری try-lock با backoff و timeout، و در مسیرهای پرتردد، حرکت به سمت پیاممحوری بهجای وضعیت مشترک اجرا شد. سپس با Thread Sanitizer و ابزارهای تشخیص بنبست در CI، تستهای تنشی و مبتنی بر ویژگی، و سنجههای مربوط به تراکم قفل، سامانه سختجانتر شد. جمعبندی: مدل همزمانی را ساده نگه دارید، دادههای نامتغیر و عملیات idempotent را ترجیح دهید، از سازوکارهای سطحبالا استفاده کنید، و ترتیب قفلها و ناورداییها را مستند و پایشپذیر کنید.
#Concurrency #Locking #Deadlock #RaceConditions #Multithreading #Debugging #SoftwareEngineering #Reliability
🟣لینک مقاله:
https://golangweekly.com/link/176333/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The Concurrency Conundrum: A Story of Curiosity and Code
🟢 خلاصه مقاله:
**این مقاله داستان برخورد با یک مشکل رایج در همزمانی است: سرویس ظاهراً سالمی که زیر بار گاهی قفل میکرد و درخواستها معطل میماندند. با افزودن لاگهای ساختیافته، ابزارهای رهگیری و یک تست حداقلیِ قابلبازتولید، ریشه مشخص شد: ترتیبگیری نادرست قفلها و بخشهای بحرانی طولانی که به بنبست و گاهی رقابت در دسترسی به متغیرها منجر میشد. راهحل با تعریف نظم ثابت در ترتیب اخذ قفلها، جایگزینی قفل سراسری با قفلهای ریزدانه و read-write، کوچککردن بخشهای بحرانی و پرهیز از I/O زیر قفل، بهکارگیری try-lock با backoff و timeout، و در مسیرهای پرتردد، حرکت به سمت پیاممحوری بهجای وضعیت مشترک اجرا شد. سپس با Thread Sanitizer و ابزارهای تشخیص بنبست در CI، تستهای تنشی و مبتنی بر ویژگی، و سنجههای مربوط به تراکم قفل، سامانه سختجانتر شد. جمعبندی: مدل همزمانی را ساده نگه دارید، دادههای نامتغیر و عملیات idempotent را ترجیح دهید، از سازوکارهای سطحبالا استفاده کنید، و ترتیب قفلها و ناورداییها را مستند و پایشپذیر کنید.
#Concurrency #Locking #Deadlock #RaceConditions #Multithreading #Debugging #SoftwareEngineering #Reliability
🟣لینک مقاله:
https://golangweekly.com/link/176333/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Wawandco
The Concurrency Conundrum: A Story of Curiosity and Code | Wawandco
Building a simple reservation system sounds easy—until concurrency steps in. As a product grows, naive checks break down. This post unpacks why atomicity isn’t enough, and how pessimistic vs. optimistic locking prevent overbooking at scale.
👍1
🔵 عنوان مقاله
SFTPGo 2.7: A Full Featured File Transfer Solution
🟢 خلاصه مقاله:
این نسخه از SFTPGo 2.7 یک سرور انتقال فایل مبتنی بر Go است که پروتکلهای SFTP، HTTP/S، FTP/S و WebDAV را در یک راهکار یکپارچه ارائه میدهد. تمرکز آن بر پیکربندی منعطف و کنترل دقیق دسترسی است تا مدیران بتوانند سیاستها، مسیرها و رفتار کاربران را مطابق نیاز تنظیم کنند. نقطهقوت اصلی، تعامل با storageهای ابری است؛ میتوان backendهایی مانند Amazon S3، Google Cloud Storage و Azure Blob را مانند پوشههای محلی در اختیار کلاینتها گذاشت و همان داده را همزمان از چند پروتکل ارائه کرد. امنیت انتقال با TLS و رمزنگاری مدرن تضمین میشود و ثبت رویدادها نیز برای نظارت و انطباق در دسترس است. نسخه 2.7 بر پایداری و بلوغ خط v2 تأکید دارد و گزینهای مناسب برای نوسازی جریانهای انتقال فایل و پلزدن میان کلاینتهای قدیمی و زیرساختهای cloud-first است.
#SFTPGo #SFTP #FTP #WebDAV #GoLang #CloudStorage #FileTransfer #DevOps
🟣لینک مقاله:
https://golangweekly.com/link/176312/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
SFTPGo 2.7: A Full Featured File Transfer Solution
🟢 خلاصه مقاله:
این نسخه از SFTPGo 2.7 یک سرور انتقال فایل مبتنی بر Go است که پروتکلهای SFTP، HTTP/S، FTP/S و WebDAV را در یک راهکار یکپارچه ارائه میدهد. تمرکز آن بر پیکربندی منعطف و کنترل دقیق دسترسی است تا مدیران بتوانند سیاستها، مسیرها و رفتار کاربران را مطابق نیاز تنظیم کنند. نقطهقوت اصلی، تعامل با storageهای ابری است؛ میتوان backendهایی مانند Amazon S3، Google Cloud Storage و Azure Blob را مانند پوشههای محلی در اختیار کلاینتها گذاشت و همان داده را همزمان از چند پروتکل ارائه کرد. امنیت انتقال با TLS و رمزنگاری مدرن تضمین میشود و ثبت رویدادها نیز برای نظارت و انطباق در دسترس است. نسخه 2.7 بر پایداری و بلوغ خط v2 تأکید دارد و گزینهای مناسب برای نوسازی جریانهای انتقال فایل و پلزدن میان کلاینتهای قدیمی و زیرساختهای cloud-first است.
#SFTPGo #SFTP #FTP #WebDAV #GoLang #CloudStorage #FileTransfer #DevOps
🟣لینک مقاله:
https://golangweekly.com/link/176312/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Sftpgo
SFTP & FTP as a Managed Service (SaaS) and On-premise
Fully featured and highly configurable SFTP server with HTTP/S Web UI, FTP/S and WebDAV - As a Managed Service, On-premise, Cloud, Hybrid Cloud - Data at Rest Encryption, S3, Google Cloud, Azure Blob.
❤1
🔵 عنوان مقاله
Fantasy: Build Flexible AI Agents with Go
🟢 خلاصه مقاله:
با تمرکز بر ساخت ایجنتهای هوش مصنوعی انعطافپذیر در Go، ابزار Fantasy از سوی Charm معرفی شده است. این ابزار یکی از اجزای اصلی پشت Crush است، اما میتوان آن را بهصورت مستقل برای ساخت ایجنتهای مجهز به ابزار در Go بهکار گرفت. هدف Fantasy ارائه رویکردی ماژولار و قابل ترکیب است تا توسعهدهندگان بتوانند رفتار ایجنت را سفارشی کنند، ابزارها و سرویسها را متصل کنند و در عین حال در چارچوب کاری Go باقی بمانند.
#Go #Golang #AI #AIAgents #Charm #Crush #DevTools #AgentFramework
🟣لینک مقاله:
https://golangweekly.com/link/176311/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Fantasy: Build Flexible AI Agents with Go
🟢 خلاصه مقاله:
با تمرکز بر ساخت ایجنتهای هوش مصنوعی انعطافپذیر در Go، ابزار Fantasy از سوی Charm معرفی شده است. این ابزار یکی از اجزای اصلی پشت Crush است، اما میتوان آن را بهصورت مستقل برای ساخت ایجنتهای مجهز به ابزار در Go بهکار گرفت. هدف Fantasy ارائه رویکردی ماژولار و قابل ترکیب است تا توسعهدهندگان بتوانند رفتار ایجنت را سفارشی کنند، ابزارها و سرویسها را متصل کنند و در عین حال در چارچوب کاری Go باقی بمانند.
#Go #Golang #AI #AIAgents #Charm #Crush #DevTools #AgentFramework
🟣لینک مقاله:
https://golangweekly.com/link/176311/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - charmbracelet/fantasy: Build AI agents with Go. Multiple providers, multiple models, one API 🧙
Build AI agents with Go. Multiple providers, multiple models, one API 🧙 - charmbracelet/fantasy
👍1
🔵 عنوان مقاله
google/jsonschema-go
🟢 خلاصه مقاله:
این مقاله دو کتابخانه Go برای کار با JSON Schema را مقایسه میکند: google/jsonschema-go و مخزن شخصی Ian Lance Taylor با نام ianlancetaylor/jsonschema. تمرکز اصلی بر کاربردهای عملی مانند اعتبارسنجی در زمان اجرا، همترازی قراردادهای داده میان سرویسها، و در صورت نیاز، تولید کد برای انواع Go است. بهجای معرفی یک برنده قطعی، مجموعهای از معیارهای انتخاب پیشنهاد میشود: پوشش استاندارد (کلیدواژهها، فرمتها، و ارجاعات $ref)، کیفیت گزارش خطا، کارایی در بارهای واقعی، قابلیت سفارشیسازی، و نشانههای پایداری و نگهداشت پروژه. همچنین سازگاری با فرآیندهای CI، نحوه حل $ref در فایلها و URLها، و میزان تطبیق با ابزارهای رایج Go بررسی میشود. جمعبندی مقاله عملی است: هر دو گزینه قابل اتکا هستند و انتخاب نهایی باید بر اساس نیازهای خاص تیم—سادگی رابط، گستره امکانات، یا الزامات یکپارچهسازی—انجام شود.
#Go #JSONSchema #GoLang #OpenSource #Validation #CodeGeneration #GitHub
🟣لینک مقاله:
https://golangweekly.com/link/176346/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
google/jsonschema-go
🟢 خلاصه مقاله:
این مقاله دو کتابخانه Go برای کار با JSON Schema را مقایسه میکند: google/jsonschema-go و مخزن شخصی Ian Lance Taylor با نام ianlancetaylor/jsonschema. تمرکز اصلی بر کاربردهای عملی مانند اعتبارسنجی در زمان اجرا، همترازی قراردادهای داده میان سرویسها، و در صورت نیاز، تولید کد برای انواع Go است. بهجای معرفی یک برنده قطعی، مجموعهای از معیارهای انتخاب پیشنهاد میشود: پوشش استاندارد (کلیدواژهها، فرمتها، و ارجاعات $ref)، کیفیت گزارش خطا، کارایی در بارهای واقعی، قابلیت سفارشیسازی، و نشانههای پایداری و نگهداشت پروژه. همچنین سازگاری با فرآیندهای CI، نحوه حل $ref در فایلها و URLها، و میزان تطبیق با ابزارهای رایج Go بررسی میشود. جمعبندی مقاله عملی است: هر دو گزینه قابل اتکا هستند و انتخاب نهایی باید بر اساس نیازهای خاص تیم—سادگی رابط، گستره امکانات، یا الزامات یکپارچهسازی—انجام شود.
#Go #JSONSchema #GoLang #OpenSource #Validation #CodeGeneration #GitHub
🟣لینک مقاله:
https://golangweekly.com/link/176346/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
pkg.go.dev
jsonschema package - github.com/ianlancetaylor/jsonschema - Go Packages
Package jsonschema implements JSON schemas.
🔵 عنوان مقاله
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go
🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح میدهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول میکشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان میدهد چرا اسکن مبتنیبر net.Dial حتی با همزمانی محدود گرفتار زمانهای انتظار، محدودیت FD و سربار syscall میشود. سپس با گذار از اتصالهای کامل به اسکن SYN، ساخت بستهها، فیلترکردن پاسخها با BPF، و نگهداری وضعیت سبکوزن، سربار کرنل و زمانبندی به شدت کاهش مییابد. بهینهسازیهایی مانند batch کردن ارسال/دریافت، پیشاختصاص بافرها، کاهش تخصیصها با sync.Pool، و حلقههای رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر میرساند. با پروفایلکردن مداوم (pprof) و راستیآزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین میشود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN بهجای connect)، کاهش سربارها، batch کردن، اندازهگیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.
#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/176335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go
🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح میدهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول میکشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان میدهد چرا اسکن مبتنیبر net.Dial حتی با همزمانی محدود گرفتار زمانهای انتظار، محدودیت FD و سربار syscall میشود. سپس با گذار از اتصالهای کامل به اسکن SYN، ساخت بستهها، فیلترکردن پاسخها با BPF، و نگهداری وضعیت سبکوزن، سربار کرنل و زمانبندی به شدت کاهش مییابد. بهینهسازیهایی مانند batch کردن ارسال/دریافت، پیشاختصاص بافرها، کاهش تخصیصها با sync.Pool، و حلقههای رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر میرساند. با پروفایلکردن مداوم (pprof) و راستیآزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین میشود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN بهجای connect)، کاهش سربارها، batch کردن، اندازهگیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.
#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/176335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
docs.serviceradar.cloud
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go | ServiceRadar
How ServiceRadar turned a 19-hour TCP discovery job into a sub-second SYN scan by leaning on raw sockets, BPF, and Go assembly.
🔵 عنوان مقاله
Go's Release Cycle and Process as Go 1.26 Progresses
🟢 خلاصه مقاله:
با نزدیکشدن به انتشار Go 1.26، فرآیند انتشار این زبان وارد مرحله حساس میشود. طبق برنامه، تاریخ “development freeze” برای ۲۶ نوامبر تعیین شده است؛ یعنی از این زمان هیچ قابلیت جدیدی برای Go 1.26 پذیرفته نمیشود و تمرکز پروژه بر رفع باگها، بهبود کارایی، مستندسازی و آزمون است. نسخههای beta و RC برای آزمایش جامعه منتشر میشوند تا مشکلات واقعی سریعتر شناسایی و رفع شوند.
برای توسعهدهندگان، این یعنی تغییراتی که تا موعد یادشده آماده نشوند، به چرخه بعدی (مثلاً Go 1.27) منتقل خواهند شد. پیشنهاد میشود پروژهها و کتابخانهها، ساختها و تستهای خود را با پیشانتشارهای Go 1.26 اجرا کنند و هر گونه مشکل را سریع گزارش دهند تا در نسخه نهایی رفع شود. این انضباط در “فریز” ویژگیها و محدودکردن تغییرات پرریسک، مسیر انتشار پایدار و قابلپیشبینی Go را تضمین میکند.
#Go #Golang #Go126 #ReleaseCycle #DevelopmentFreeze #SoftwareRelease #ProgrammingLanguages #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176301/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go's Release Cycle and Process as Go 1.26 Progresses
🟢 خلاصه مقاله:
با نزدیکشدن به انتشار Go 1.26، فرآیند انتشار این زبان وارد مرحله حساس میشود. طبق برنامه، تاریخ “development freeze” برای ۲۶ نوامبر تعیین شده است؛ یعنی از این زمان هیچ قابلیت جدیدی برای Go 1.26 پذیرفته نمیشود و تمرکز پروژه بر رفع باگها، بهبود کارایی، مستندسازی و آزمون است. نسخههای beta و RC برای آزمایش جامعه منتشر میشوند تا مشکلات واقعی سریعتر شناسایی و رفع شوند.
برای توسعهدهندگان، این یعنی تغییراتی که تا موعد یادشده آماده نشوند، به چرخه بعدی (مثلاً Go 1.27) منتقل خواهند شد. پیشنهاد میشود پروژهها و کتابخانهها، ساختها و تستهای خود را با پیشانتشارهای Go 1.26 اجرا کنند و هر گونه مشکل را سریع گزارش دهند تا در نسخه نهایی رفع شود. این انضباط در “فریز” ویژگیها و محدودکردن تغییرات پرریسک، مسیر انتشار پایدار و قابلپیشبینی Go را تضمین میکند.
#Go #Golang #Go126 #ReleaseCycle #DevelopmentFreeze #SoftwareRelease #ProgrammingLanguages #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176301/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Go Wiki: Go-Release-Cycle - The Go Programming Language
👍1
ایلان ماسک با پیامرسان ایکسچت به جنگ تلگرام و واتساپ میرود
https://www.zoomit.ir/software-application/451079-musk-instant-messaging-app-x-chat/
https://www.zoomit.ir/software-application/451079-musk-instant-messaging-app-x-chat/
زومیت
ایلان ماسک با پیامرسان ایکسچت به جنگ تلگرام و واتساپ میرود - زومیت
ایلان ماسک از X Chat رونمایی کرد؛ پیامرسانی رمزگذاریشده و بدون تبلیغ که با هدف رقابت مستقیم با تلگرام و واتساپ توسعه مییابد.
👍3
🍏 یکی از ویژگی های گولنگ ۱.۲۶
💛 testing
🔰متدهای جدید T.ArtifactDir, B.ArtifactDir و F.ArtifactDir اضافه شدهاند.
🔰این متدها پوشهای برای ذخیرهی خروجیهای تست (artifacts) برمیگردانند.
اگر هنگام اجرای go test از پرچم -artifacts استفاده شود، این پوشه درون مسیر خروجی مشخصشده (یا پوشه فعلی) ایجاد میشود.
در غیر این صورت، در پوشهی موقتی ایجاد و پس از اتمام تست حذف خواهد شد.اولین فراخوانی ArtifactDir هنگامی که -artifacts فعال باشد،
مسیر پوشهی artifact را در لاگ تست ثبت میکند.
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
💛 testing
🔰متدهای جدید T.ArtifactDir, B.ArtifactDir و F.ArtifactDir اضافه شدهاند.
🔰این متدها پوشهای برای ذخیرهی خروجیهای تست (artifacts) برمیگردانند.
اگر هنگام اجرای go test از پرچم -artifacts استفاده شود، این پوشه درون مسیر خروجی مشخصشده (یا پوشه فعلی) ایجاد میشود.
در غیر این صورت، در پوشهی موقتی ایجاد و پس از اتمام تست حذف خواهد شد.اولین فراخوانی ArtifactDir هنگامی که -artifacts فعال باشد،
مسیر پوشهی artifact را در لاگ تست ثبت میکند.
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
👍3
🔵 عنوان مقاله
their favorite Go related blog posts of all time.
🟢 خلاصه مقاله:
این شماره جدید از خبرنامه Golang Weekly فهرستی منتخب از «بهترین پستهای وبلاگی مرتبط با Go» را گرد آورده است؛ مجموعهای منسجم که بهجای فهرست صرفِ لینکها، مسیر مطالعهای ارائه میدهد برای درک اصول ماندگار Go. موضوعات کلیدی مانند همروندی با goroutine و channel، خطاپرداری شفاف، استفاده از interface و ترکیبپذیری، آزموننویسی و ابزارها، همچنین بهینهسازی کارایی، پروفایلینگ و مدیریت حافظه پوشش داده میشوند. هر انتخاب با توضیحی کوتاه درباره ارزش ماندگارش و اینکه به درد چه کسی و چه مسئلهای میخورد همراه است؛ نوآموزان میتوانند آن را نقشه راه یادگیری بدانند و باتجربهها نیز برای بازبینی مبانی و دیدگاههای عمیقتر از آن بهره ببرند. این گردآوری تصویری از مسیر بلوغ جامعه Go نیز ارائه میکند؛ از نوشتههای اولیه که روحیه طراحی زبان را شکل دادند تا جمعبندیهای اخیر که بر تجربههای تولیدی تکیه دارند—مجموعهای برای نشانگذاری، اشتراک با تیم و رجوعهای مکرر.
#Go #Golang #GolangWeekly #Programming #SoftwareEngineering #Concurrency #GoTips #DevCommunity
🟣لینک مقاله:
https://golangweekly.com/link/176329/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
their favorite Go related blog posts of all time.
🟢 خلاصه مقاله:
این شماره جدید از خبرنامه Golang Weekly فهرستی منتخب از «بهترین پستهای وبلاگی مرتبط با Go» را گرد آورده است؛ مجموعهای منسجم که بهجای فهرست صرفِ لینکها، مسیر مطالعهای ارائه میدهد برای درک اصول ماندگار Go. موضوعات کلیدی مانند همروندی با goroutine و channel، خطاپرداری شفاف، استفاده از interface و ترکیبپذیری، آزموننویسی و ابزارها، همچنین بهینهسازی کارایی، پروفایلینگ و مدیریت حافظه پوشش داده میشوند. هر انتخاب با توضیحی کوتاه درباره ارزش ماندگارش و اینکه به درد چه کسی و چه مسئلهای میخورد همراه است؛ نوآموزان میتوانند آن را نقشه راه یادگیری بدانند و باتجربهها نیز برای بازبینی مبانی و دیدگاههای عمیقتر از آن بهره ببرند. این گردآوری تصویری از مسیر بلوغ جامعه Go نیز ارائه میکند؛ از نوشتههای اولیه که روحیه طراحی زبان را شکل دادند تا جمعبندیهای اخیر که بر تجربههای تولیدی تکیه دارند—مجموعهای برای نشانگذاری، اشتراک با تیم و رجوعهای مکرر.
#Go #Golang #GolangWeekly #Programming #SoftwareEngineering #Concurrency #GoTips #DevCommunity
🟣لینک مقاله:
https://golangweekly.com/link/176329/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Reddit
From the golang community on Reddit
Explore this post and more from the golang community