Gopher Academy
3.86K subscribers
929 photos
40 videos
280 files
2.11K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Twenty Talks from GopherCon UK 2025

🟢 خلاصه مقاله:
** پلی‌لیست YouTube با عنوان Twenty Talks from GopherCon UK 2025 مجموعه‌ای از بیست ارائه تازه‌منتشرشده از کنفرانس ماه گذشته Go در لندن را یکجا گرد آورده است. همه‌ی Talks عمیق و فنی‌اند؛ اگر فقط یکی را می‌خواهید ببینید، پیشنهاد می‌شود “What’s Coming in Go 1” از Daniel Marti را از دست ندهید.

#Go #Golang #GopherConUK #YouTube #ConferenceTalks #SoftwareEngineering #BackendDevelopment

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Practical Networking Patterns in Go

🟢 خلاصه مقاله:
** این بخش تازه از Go Optimization Guide مجموعه‌ای از ۱۳ راهنما را ارائه می‌کند که به شکل عملی ساخت اپلیکیشن‌های شبکه‌ای مقیاس‌پذیر با Go را پوشش می‌دهند. محورهای اصلی شامل دستیابی به «همزمانی بسیار بالا»، الگوهای مدیریت اتصال، کنترل فشار، زمان‌بندی و لغو عملیات، همراه با بنچمارک‌گیری واقع‌گرایانه و عیب‌یابی مبتنی بر سنجه‌ها، پروفایلینگ و تِرِیسینگ است. همچنین درباره انتخاب و پیکربندی پروتکل‌های انتقال، مدیریت خطا، اندازه‌گیری بافرها و تنظیمات سطح پایین برای پایداری و عملکرد بهتر توضیح می‌دهد. خروجی نهایی مجموعه‌ای از الگوهای عملی و چک‌لیست‌هاست که به تیم‌ها کمک می‌کند توان عملیاتی را افزایش دهند، تأخیرهای دُم توزیع را کاهش دهند و سرویس‌های Go را در مقیاس به‌صورت پایدار و شفاف اداره کنند.

#Go #Golang #Networking #Concurrency #Benchmarking #Performance #Scalability #Systems

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Go Allocations Explorer Extension for VSCode

🟢 خلاصه مقاله:
این افزونه با نام Go Allocations Explorer Extension برای VS Code به برنامه‌نویسان Go کمک می‌کند تا محل و میزان تخصیص حافظه را بر پایه بنچمارک‌های موجودشان مستقیماً داخل ویرایشگر ببینند. با اجرای go test -bench و استفاده از -benchmem، نتایج تخصیص‌ها جمع‌آوری و به فهرستی قابل پیمایش تبدیل می‌شود تا بتوانید به‌سرعت هات‌اسپات‌ها را یافته و از همان ورودی‌ها به کد مربوطه بپرید. امکان اجرا و تکرار بنچمارک‌ها، مشاهده و مقایسه سریع نتایج، و مرتب‌سازی/فیلتر کردن بر اساس پکیج، تست یا تابع فراهم است. راه‌اندازی ساده است، فقط نیاز به ابزار Go دارد و روی macOS، Linux و Windows کار می‌کند. خروجی‌ها در خود VS Code به شکل قابل فهم ارائه می‌شوند تا کاهش تخصیص‌ها، کم شدن فشار GC و بهبود تأخیر به‌صورت مستمر و در جریان کدنویسی انجام شود.

#Go #VSCode #Golang #Performance #Benchmarking #MemoryAllocations #Profiling #DeveloperTools

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


👑 @gopher_academy
2👍1
می‌خوام یک وب سایت خیلی خوب برای گولنگ بهتون معرفی کنم، https://awesome-go.com/
این وب سایت فوق العادس برای دیدن کد تو هر موضوعی که فکرشو کنید در کانکارنسی، CLI، وب و هرچیز دیگه ای.
کافیه برین داخلش عنوان ابزار، کتابخونه یا حتی نمونه کد مورد نظر خودتون رو پیدا کنید و ریپازیتوری اوپن سورس مرتبطش رو باز کنید و داکیومنشن یا کدش رو بخونید.
واقعا جذابه پیشنهاد میکنم حتما ببینید

<Abolfazl Alizadeh/>
33
🔵 عنوان مقاله
3 Critical TTL Patterns for In-Memory Caching

🟢 خلاصه مقاله:
این مقاله سه الگوی کلیدی TTL برای کش درون‌حافظه‌ای را توضیح می‌دهد و نشان می‌دهد چگونه انتخاب درست میان تازگی داده، کارایی و پایداری را ممکن می‌کند. الگوی اول، TTL ثابت است: هر مقدار پس از مدت مشخص منقضی می‌شود؛ ساده و قابل‌پیش‌بینی است، اما نزدیک انقضا می‌تواند داده قدیمی ارائه کند و پس از انقضا به «thundering herd» منجر شود مگر اینکه با jitter و هم‌گرایی درخواست‌ها مدیریت شود. الگوی دوم، TTL لغزشی است: هر دسترسی عمر آیتم را تمدید می‌کند، برای کلیدهای پرترافیک عالی است اما بدون «حداکثر عمر» ممکن است بعضی مقادیر عملاً هرگز تازه‌سازی نشوند. الگوی سوم، stale-while-revalidate (و refresh-ahead) است: مقدار کمی کهنه فوراً سرو می‌شود و تازه‌سازی در پس‌زمینه انجام می‌گیرد؛ با single-flight از هجوم درخواست‌های همسان جلوگیری می‌کند و در صورت خطا می‌توان با stale-if-error موقتاً از آخرین مقدار سالم استفاده کرد. در عمل ترکیب این الگوها—به‌همراه TTLهای متفاوت برای هر کلید، jitter، backoff و رصد دقیق نرخ hit/miss—به تعادل بهینه می‌انجامد. نویسنده برای نمایش پیاده‌سازی‌های عملی از کتابخانه Hot در اکوسیستم Go بهره می‌گیرد تا استفاده از این الگوها ساده و کارا شود.

#Caching #TTL #InMemoryCache #Go #Golang #StaleWhileRevalidate #Performance #CacheStampede

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Slice Tails Don't Grow Forever

🟢 خلاصه مقاله:
** این مطلب از Golang Weekly توضیح می‌دهد که در Go، وقتی از یک slice یک “tail” مثل s[i:] می‌سازیم، رشد آن به capacity وابسته است و پایدار و بی‌نهایت نیست. تا وقتی capacity اجازه دهد، append روی همان آرایه‌ی پشتی انجام می‌شود؛ اما به‌محض عبور از capacity، runtime آرایه‌ی جدیدی می‌سازد و داده‌ها را کپی می‌کند، در نتیجه اشتراک حافظه با sliceهای قبلی از بین می‌رود. این رفتار هم می‌تواند باعث شگفتی در منطق اشتراک‌گذاری داده‌ها شود و هم روی کارایی و مصرف حافظه اثر بگذارد (مثلاً نگه‌داشتن یک زیر-slice کوچک می‌تواند یک آرایه‌ی بزرگ را در حافظه زنده نگه دارد). نتیجهٔ عملی: روی رشد بی‌نهایت tail حساب نکنید، خروجی append را یک slice بالقوه با آرایه‌ی پشتی جدید در نظر بگیرید، برای آزادسازی حافظه از copy استفاده کنید، در صورت نیاز capacity مناسب را از قبل با make در نظر بگیرید و حتماً با benchmark تصمیم بگیرید.

#Go #Golang #Slices #Append #MemoryManagement #Performance #GolangWeekly

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


👑 @gopher_academy
🤝1
🔵 عنوان مقاله
'We Tried Go's Experimental Green Tea Garbage Collector and It Didn't Help Performance'

🟢 خلاصه مقاله:
** تیم Dolt در Go 1.25 جمع‌آورنده زباله آزمایشی Green Tea را فعال و ارزیابی کرد، اما در سناریوی خاص خود بهبود محسوسی در کارایی مشاهده نکرد. با این حال، از آنجا که رفتار GC به نوع بار کاری وابسته است و Green Tea همچنان آزمایشی و اختیاری است، توصیه می‌شود هر تیم آن را در محیط و بنچمارک‌های خود امتحان کرده و بر اساس شاخص‌های واقعی تصمیم بگیرد.

#Go #Golang #GarbageCollector #GreenTea #Performance #Benchmarking #Dolt #Go1_25

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Starving, Sleeping, and Yielding: Understanding Go's Scheduler

🟢 خلاصه مقاله:
** این مقاله توضیح می‌دهد که چرا درک رفتار همزمان در Go به شناخت زمان‌بند آن بستگی دارد. زمان‌بند با مدل G‑M‑P، goroutineها را روی نخ‌های سیستم‌عامل اجرا می‌کند، آن‌ها را هنگام بلاک‌شدن پارک می‌کند و با netpoller برای I/O هماهنگ می‌شود. سه وضعیت کلیدی بررسی می‌شود: Starvation وقتی رخ می‌دهد که goroutineهای آماده اجرا به‌دلیل لوپ‌های سنگین CPU، الگوهای ناعادلانه در select، یا قفل‌ها و syscall/cgo طولانی به CPU دسترسی پیدا نمی‌کنند؛ Sleeping با time.Sleep برای توقف کنترل‌شده مفید است اما می‌تواند تأخیر بسازد؛ و Yielding با runtime.Gosched امکان می‌دهد در حلقه‌های CPU‑محور به دیگر goroutineها نوبت بدهیم. از Go 1.14 به بعد، preemption غیرهمکارانه کمک کرده، اما حلقه‌های بدون نقطه توقف هنوز مشکل‌سازند. راهکارها شامل شکستن کارهای سنگین به بخش‌های کوچک، پرهیز از busy‑wait، استفاده از context و timeout، طراحی منصفانه channel/select، کوچک نگه‌داشتن بخش‌های بحرانی و تنظیم GOMAXPROCS است. برای عیب‌یابی نیز از go tool trace، runtime/trace، pprof و GODEBUG=schedtrace استفاده کنید و فقط در صورت نیاز، sleep یا yield موضعی و مستند به کار ببرید.

#Go #Golang #Concurrency #Scheduler #Goroutines #Performance #Parallelism #Systems

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Accepted! Go Proposals Distilled

🟢 خلاصه مقاله:
این مجموعه با عنوان Accepted! Go Proposals Distilled خلاصه‌ای روان از پیشنهادهای پذیرفته‌شده زبان Go ارائه می‌کند تا بدون خواندن کل پروپوزال‌ها، سریع از تغییرات نسخه‌های آینده باخبر شوید. هر پست دلیل پذیرش، تغییرات و کاربرد عملی آن را خلاصه می‌کند. تاکنون Anton موضوع maphash را پوشش داده و ادامهٔ سری نیز هم‌زمان با پیشروی پیشنهادهای پذیرفته‌شده منتشر خواهد شد.

#Go #Golang #GoProposals #GoUpdates #ProgrammingLanguages #DeveloperNews #Maphash

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


👑 @gopher_academy
👍1🎉11
🔵 عنوان مقاله
take control with Tuple

🟢 خلاصه مقاله:
این مطلب از Golang Weekly نشان می‌دهد چگونه به‌کارگیری سنجیده Tuple می‌تواند به توسعه‌دهندگان Go کمک کند روی جریان داده، مدیریت خطا و هم‌زمانی کنترل بیشتری داشته باشند. در این رویکرد، Tuple راهی فشرده برای بستن چند مقدار مرتبط در یک واحد نوع‌دار است که با تکیه بر جنریک‌ها، ضمن کاهش کد تکراری، نیت کد و امضای توابع را شفاف‌تر می‌کند. کاربردهای کلیدی شامل مدل‌سازی بار داده‌ی کانال‌ها، جمع‌آوری خروجی‌ها در الگوهای فن‌اوت/فن‌این و عبور جفت‌هایی مانند (value, error) در پایپلاین‌هاست؛ با این تأکید که هرجا یک مفهوم دامنه‌ای نام‌دار لازم است، یک struct کوچک همچنان گزینه‌ی بهتر است. جمع‌بندی: Tuple گلوله‌ی نقره‌ای نیست، اما اگر هدفمند استفاده شود، بدون لطمه به خوانایی یا ایمنی نوعی، کنترل و شفافیت بیشتری به کدهای Go می‌دهد و می‌توان آن را به‌صورت تدریجی در مرز پکیج‌ها و پایپلاین‌ها به کار گرفت.

#Golang #Go #Tuple #GolangWeekly #Generics #Concurrency #TypeSafety #SoftwareDesign

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
Register Allocation in the Go Compiler

🟢 خلاصه مقاله:
** این یادداشت دو موضوع فنی اما اثرگذار بر کارایی در Go را کنار هم می‌گذارد: نحوه تخصیص ثبات در کامپایلر و این واقعیت که «دمِ Sliceها برای همیشه رشد نمی‌کند». بخش نخست با الهام از تجربه‌های Vladimir Makarov در دنیای تخصیص ثبات توضیح می‌دهد که پشت‌صحنه‌ی SSA در کامپایلر Go چگونه محدوده‌های حیات متغیرها را روی تعداد کمی ثبات سخت‌افزاری نگاشت می‌کند، φها را حل و حرکت‌ها را ادغام می‌کند و در صورت نیاز سرریز به پشته انجام می‌دهد. چالش اصلی، حفظ کیفیت کد (کاهش حرکت‌ها و سرریزها) در کنار سرعت بالای کامپایل است؛ و ایده‌هایی مانند ترکیب رویکردهای linear-scan و coloring، مدیریت دقیق ثبات‌های caller/callee-saved، سرریز در مسیرهای کم‌احتمال و rematerialization انتخابی به ایجاد این توازن کمک می‌کنند.

بخش دوم، با تکیه بر نوشته‌ی Ted Unangst، یادآور می‌شود که Slice در Go تنها وصله‌ای روی یک آرایه مشترک است: append می‌تواند باعث تخصیص دوباره و کپی شود، رشد ظرفیت با بزرگ‌تر شدن Slice کند می‌شود، و با sub-slice ممکن است حافظه‌ی «سرِ» حذف‌شده همچنان نگه داشته شود. «دمِ» Slice بدون ظرفیت کافی گسترش نمی‌یابد و برای رها شدن حافظه‌ی قدیمی باید گاهی به یک آرایه‌ی تازه کپی کنید. راهکارها شامل استفاده از make با ظرفیت مناسب، پرهیز از نگه‌داشتن referenceهای ناخواسته به آرایه‌ی بزرگ و کپی آگاهانه برای آزادسازی حافظه است.

جمع‌بندی: همان‌طور که انتخاب‌های تخصیص ثبات روی تعداد دستورها و سرریز اثر می‌گذارد، الگوهای کار با Slice نیز روی مصرف حافظه و فشار GC اثر دارند. درک این جزئیات به کدی چابک‌تر، تأخیر پایدارتر و رفتار قابل پیش‌بینی‌تر در سرویس‌های Go منجر می‌شود.

#Go #Golang #Compiler #RegisterAllocation #Performance #MemoryManagement #Slices #SystemsProgramming

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


👑 @gopher_academy
1🎉1🍾1
🔵 عنوان مقاله
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