Gopher Academy
3.85K subscribers
930 photos
41 videos
280 files
2.14K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
The new() Function Will Take an Expression in Go 1.26

🟢 خلاصه مقاله:
در Go 1.26 یک بهبود کوچک اما کاربردی می‌آید: تابع new() می‌تواند یک عبارت بگیرد، نه فقط یک نوع؛ Chris Siebenmann توضیح می‌دهد که این تغییر برخی الگوهای تخصیص و مقداردهی را ساده‌تر و خواناتر می‌کند. Tim Little با استفاده از raylib-go یک شبیه‌سازی آب بلادرنگ در Go می‌سازد و نشان می‌دهد چگونه می‌توان با ترکیب کارایی Go و سادگی raylib، رندر و فیزیک ساده را پیاده‌سازی کرد. Vladimir Makarov به تخصیص ثبات در کامپایلر Go می‌پردازد و تأثیر آن بر کارایی، استراتژی‌ها و ملاحظات بخش SSA را شرح می‌دهد. در نهایت، Ted Unangst یادآوری می‌کند که «دم» برش‌ها در Go بی‌نهایت رشد نمی‌کند و باید به ظرفیت، بازبرش و رفتار append توجه کرد تا از خطاها و افت کارایی جلوگیری شود.

#Go #Golang #Go126 #Compiler #RegisterAllocation #raylib #GameDev #Slices

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Building a Coding Agent in Go from Scratch

🟢 خلاصه مقاله:
این مجموعه سه مطلب عملی برای توسعه‌دهندگان Go را کنار هم می‌گذارد: ساخت یک coding agent از صفر در Go، استفاده از Timing Wheels برای انقضای کارآمد ۱۰ میلیون کلید بدون اسکن‌های O(n)، و مروری دقیق بر sync شامل Mutex، RWMutex، WaitGroup، Once، Cond و Pool. بخش agent بر معماری ماژولار، هماهنگی goroutine و channel، sandbox امن و حلقه بازخورد برای اجرای کد و بهبود تدریجی تأکید دارد. نوشته Bill Kennedy نشان می‌دهد چگونه با سطل‌بندی زمان‌سنج‌ها و حرکت چرخ، سربار و نوسان تأخیر کاهش می‌یابد و حتی در مقیاس بزرگ پایدار می‌ماند. در نهایت، مرور sync توصیه‌های عملی برای انتخاب درست بین primitives و channel، کاهش contention، و ارزیابی با benchmark، pprof و race detector ارائه می‌کند تا سامانه‌های Go هم هوشمند و هم سریع باشند.

#Go #Golang #Concurrency #TimingWheels #sync #SystemsProgramming #GoInternals #Performance

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


👑 @gopher_academy
3👍1
🔵 عنوان مقاله
How to Reproduce and Fix an I/O Data Race with Go and DTrace

🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبه‌رو می‌شود که فقط در CI رخ می‌دهد: یک data race در سطح I/O فایل‌ها که باعث شکست گهگاه تست‌ها می‌شود. چون این رقابت در مرز فایل‌سیستم رخ می‌دهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمی‌دهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد می‌کند: اجرای تکراری تست‌ها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیب‌های نادری که خطا را می‌سازند آشکار شوند. با استفاده از DTrace و رصد فراخوانی‌های سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار می‌شود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.

راهکار با اتمی‌سازی و هماهنگ‌سازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریال‌سازی دسترسی به مسیرهای مشترک. در تست‌ها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنال‌های قطعی به‌جای تأخیرهای زمانی استفاده می‌شود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابت‌های I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.

#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition

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


👑 @gopher_academy
🔵 عنوان مقاله
How Cloudflare Found a Bug in Go's arm64 Compiler

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

#Cloudflare #Go #arm64 #Compiler #Bug #ProductionScale #Reliability #OpenSource

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


👑 @gopher_academy
1
🔵 عنوان مقاله
PG Back Web 0.5: A Postgres Backup System with Web Interface

🟢 خلاصه مقاله:
** PG Back Web 0.5 یک ابزار مبتنی بر Go برای مدیریت پشتیبان‌گیری‌های Postgres از طریق یک رابط وب ساده و کاربرپسند است. این برنامه امکان زمان‌بندی پشتیبان‌ها، پایش وضعیت و مشاهده تاریخچه را فراهم می‌کند و با webhooks می‌تواند اعلان‌ها را به سامانه‌های بیرونی ارسال کند. استقرار آن به‌صورت Docker image بسیار ساده است و در نسخه 0.5 پشتیبانی از Postgres 18 نیز اضافه شده تا با آخرین نسخه Postgres سازگار باشد.

#Postgres #Backup #Go #Docker #Database #DevOps #Webhooks #Monitoring

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


👑 @gopher_academy
1
🔵 عنوان مقاله
yzma: Perform Local Inference with VLMs and LLMs

🟢 خلاصه مقاله:
yzma راهی سبک برای اجرای محلی VLMs و LLMs درون برنامه‌های Go است. این ابزار با استفاده از purego و ffi مستقیماً به llama متصل می‌شود و سربار اضافی را کاهش می‌دهد، در نتیجه تأخیر پایین‌تر، کنترل بهتر و اجرای آفلاین فراهم می‌شود. تمرکز yzma بر ادغام ساده در سرویس‌ها و ابزارهای Go است تا بتوان هم پردازش متن و هم سناریوهای تصویر-متن را بدون اتکا به سرویس‌های ابری انجام داد.

#Go #LLM #VLM #LocalInference #FFI #purego #llama #OnDeviceAI

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


👑 @gopher_academy
🔵 عنوان مقاله
qjs: Run JavaScript in Go

🟢 خلاصه مقاله:
qjs یک روش تازه برای اجرای JavaScript داخل اپ‌های Go است که بدون نیاز به Cgo کار می‌کند. به‌جای اتصال به یک کتابخانه بومی، نسخه فورک‌شده‌ای از QuickJS را به WebAssembly کامپایل کرده و آن را زیر Wazero اجرا می‌کند. این رویکرد کل زنجیره را در محیط خالص Go نگه می‌دارد و فرایند بیلد، استاتیک‌سازی و کراس‌کامپایل را ساده‌تر می‌کند. مزیت دیگر، ایزوله‌سازی و سندباکس طبیعی ناشی از WebAssembly است. هرچند احتمالاً نسبت به اتصال بومی اندکی سربار دارد، اما برای سناریوهایی مثل اسکریپت‌نویسی، افزونه‌ها و اجرای امن منطق کاربر، توازن خوبی بین سادگی، پرتابل‌بودن و امنیت ارائه می‌دهد.

#Go #JavaScript #WebAssembly #Wazero #QuickJS #Cgo #GoLang #Embedding

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


👑 @gopher_academy
🔵 عنوان مقاله
Terminating Elegantly: A Guide to Graceful Shutdowns

🟢 خلاصه مقاله:
ترک شایسته در سرویس‌ها یعنی برنامه بتواند با دریافت SIGTERM، بدون از دست دادن داده یا خراب کردن وضعیت، درخواست‌های جاری را تمام کند و منابع را درست آزاد کند. در این ارائه، Alex Pliutau با تمرکز بر Go در Kubernetes، چرخه کامل خاتمه را توضیح می‌دهد: از دریافت سیگنال و قطع‌کردن ترافیک تا ضرب‌الاجل SIGKILL.

نکته‌های کلیدی شامل این‌هاست: استفاده از signal.NotifyContext و context برای لغو هماهنگ، مدیریت goroutineها با sync.WaitGroup، فراخوانی http.Server.Shutdown یا معادل gRPC برای تخلیه امن اتصال‌ها، و توقف گرفتن کار جدید در Workerها درحالی‌که کارهای درحال اجرا به‌صورت زمان‌دار تمام می‌شوند. در Kubernetes باید readiness زودتر غیرفعال شود تا Pod از مسیر ترافیک خارج شود، از preStop برای تأخیر یا Drain سفارشی کمک بگیرید، و terminationGracePeriodSeconds را درست تنظیم کنید. پایش و آزمون نیز ضروری است: لاگ شروع/پایان Shutdown، سنجه‌هایی مثل تعداد درخواست‌های درحال پردازش و زمان خاتمه، و تست SIGTERM تحت بار. رعایت این الگوهای ساده، خاتمه‌ای قابل اعتماد و بدون اختلال در Go روی Kubernetes فراهم می‌کند.

#Go #Kubernetes #GracefulShutdown #CloudNative #Microservices #DevOps #Reliability #ProductionOps

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


👑 @gopher_academy
🔵 عنوان مقاله
Go v1.25.2 and v1.24.8 have been released

🟢 خلاصه مقاله:
به‌روزرسانی‌های Go در نسخه‌های v1.25.2 و v1.24.8 منتشر شده‌اند که مجموعه‌ای از اصلاحات امنیتی را در بسته‌های مختلف ارائه می‌کند. این نسخه‌ها از نوع وصله‌ای و سازگار به عقب هستند و بدون تغییر در رفتار زبان، امنیت و پایداری ابزارها و کتابخانه‌ها را بهبود می‌دهند. توصیه می‌شود هرچه سریع‌تر به آخرین وصله در شاخه فعلی‌تان ارتقا دهید (برای v1.25 به v1.25.2 و برای v1.24 به v1.24.8)، یادداشت‌های انتشار و هر CVE مرتبط را بررسی کنید، باینری‌ها را مجدداً بسازید و ابزارهایی مانند govulncheck را برای شناسایی وابستگی‌های آسیب‌پذیر اجرا کنید.

#Go #Golang #Security #Update #PatchRelease #CVE #DevOps #SoftwareMaintenance

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
GopherCon Korea 2025

🟢 خلاصه مقاله:
**GopherCon Korea 2025 حدود یک ماه دیگر، در تاریخ ۹ نوامبر برگزار می‌شود. این رویداد جامعه‌محور برای توسعه‌دهندگان Go (Golang) فرصتی مناسب است تا به‌روزترین روندها را دنبال کنند، تجربه‌های عملی را به اشتراک بگذارند و شبکه‌سازی مؤثری داشته باشند. معمولاً نشست‌ها به موضوعاتی مانند مفاهیم زبان و کارایی، الگوهای هم‌زمانی، توسعه cloud-native و microservices، ابزارها و observability و مطالعات موردی در مقیاس تولید می‌پردازد. اگر قصد حضور دارید، اکنون زمان خوبی برای ثبت‌نام و برنامه‌ریزی سفر است و پیگیری کانال‌های رسمی برای جزئیات برنامه و مکان توصیه می‌شود.

#GopherConKorea #GopherCon #Golang #Go #TechConference #Developers #Korea #SoftwareEngineering

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


👑 @gopher_academy
1