Gopher Academy
3.86K subscribers
935 photos
43 videos
280 files
2.28K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
What is sync.Pool and How to Use It Properly

🟢 خلاصه مقاله:
این مطلب دو بخش کلیدی از دنیای Go را پوشش می‌دهد: نخست، sync.Pool به‌عنوان سازوکاری برای استفاده مجدد از اشیای موقت با هدف کاهش allocation و فشار بر GC. استفاده درست از آن یعنی: فقط برای اشیای کوتاه‌عمر و بدون مالکیت منابع خارجی، تعریف New برای ساخت در صورت خالی بودن، مقداردهی/Reset قبل از Put، و عدم اتکا به ماندگاری یا اندازه Pool. نتیجه‌گیری مهم: sync.Pool جایگزین cache پایدار نیست و باید با بنچمارک‌گیری مزیتش را سنجید. دوم، مقاله Jesús Espino در Devtrovert درباره Scanner در کامپایلر Go توضیح می‌دهد که چگونه متن کد را به token تبدیل می‌کند، شناسه‌ها، لیترال‌ها و عملگرها را می‌شناسد، با فاصله‌ها و کامنت‌ها و خطاها برخورد می‌کند و خروجی را به parser می‌سپارد. ترکیب این دو دیدگاه، هم به بهینه‌سازی عملکرد برنامه‌ها کمک می‌کند و هم درک عمیق‌تری از فرایند پردازش کد در Go می‌دهد.

#Go #Golang #syncPool #Compiler #Scanner #Performance #Concurrency #MemoryManagement

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


👑 @gopher_academy
🔵 عنوان مقاله
go-rest-api-example: Template for an Enterprise-Ready REST API Microservice

🟢 خلاصه مقاله:
پروژه go-rest-api-example یک قالب آماده برای ساخت Microserviceهای REST API در سطح Enterprise است. این Boilerplate با هدف راه‌اندازی سریع و استاندارد یک سرویس تولیدی ارائه شده و با نگه‌داری منظم به‌روز می‌شود. نسخه این هفته با Go 1 یکپارچه شده تا با ابزارها و جریان‌های کاری فعلی سازگار باشد و پایه‌ای پایدار برای توسعه فراهم کند.

#Go #Golang #RESTAPI #Microservices #Boilerplate #Backend #API #SoftwareEngineering

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
Trends in the Go Ecosystem in 2025

🟢 خلاصه مقاله:
گزارش تازه JetBrains از اکوسیستم Go در سال ۲۰۲۵ نشان می‌دهد جامعه Gophers همچنان به کتابخانه‌های ساده، پایدار و کم‌وابستگی تکیه دارد. در وب، گرایش به فریم‌ورک‌های سبک و سریع پررنگ است و Gin بیشترین توجه را جلب کرده؛ در کنار گزینه‌هایی مثل Echo، Fiber و Chi. برای دسترسی به داده نیز ابزارهایی مانند GORM و sqlx رایج‌اند و معیارهایی مثل کیفیت مستندات، ثبات و ردپای وابستگی کوچک نقش تعیین‌کننده دارند. در تست، رویکردهای idiomatic مثل go test و table-driven tests همراه با testify و ابزارهای mocking، به‌علاوه ادغام در CI و توجه به پوشش کد، جریان غالب‌اند؛ علاقه به fuzzing و property-based testing نیز رو به رشد است. دستیارهای هوشمند کدنویسی به ابزار روزمره تبدیل شده‌اند: GitHub Copilot و ChatGPT بیشترین اشاره را دارند، JetBrains AI Assistant در IDEها پذیرفته شده و گزینه‌هایی مثل Codeium و Tabnine هم برای ملاحظات حریم خصوصی و مجوزدهی مطرح‌اند. جمع‌بندی گزارش: انتخاب آگاهانه کتابخانه‌های مینیمال (با برتری Gin در سرویس‌های وب)، سرمایه‌گذاری در ارگونومی تست و CI، و تدوین سیاست روشن برای استفاده از AI جهت افزایش بهره‌وری بدون افت کیفیت کد.

#Go #Golang #JetBrains #Gin #Testing #AIAssistants #DeveloperSurvey #2025Trends

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Go's Runtime May Someday Start Explicitly Freeing Some Internal Memory?

🟢 خلاصه مقاله:
** Chris Siebenmann به ایده‌ای اشاره می‌کند که هنوز توسعه نیافته است: احتمال اینکه Go Runtime در آینده بتواند بخشی از حافظه داخلی خودش را به‌صورت صریح به سیستم‌عامل برگرداند. هدف، کاهش RSS و رفتار بهتر زیر فشار حافظه—به‌ویژه در سرویس‌های طولانی‌مدت و محیط‌های کانتینری—است، اما با ریسک افت کارایی به‌خاطر افزایش syscall‌ها، page faultها و از دست رفتن cacheها. هنوز جزئیات و زمان‌بندی روشن نیست و اگر هم پیش برود، احتمالاً به‌صورت آزمایشی و opt-in ارائه می‌شود. در صورت پیاده‌سازی در نسخه‌های بعدی Go، این تغییر می‌تواند شیوه‌های مرسوم تنظیم حافظه در تولید را تحت تأثیر قرار دهد.

#Go #Golang #Runtime #MemoryManagement #GarbageCollection #Performance #Containers #Cloud

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


👑 @gopher_academy
🔵 عنوان مقاله
Google's Agent Development Kit (ADK) for Go

🟢 خلاصه مقاله:
** گوگل نسخه Go از Agent Development Kit (ADK) را عرضه کرده است؛ کیتی که پیش‌تر برای Python و Java در دسترس بود و برای ساخت و استقرار عامل‌های هوش مصنوعی به‌کار می‌رود. ADK با حذف بخش بزرگی از کدنویسی تکراری در ارکستراسیون و ترکیب گردش‌کار عامل‌ها، توسعه را ساده می‌کند. این چارچوب هم از نظر مدل (model-agnostic) و هم از نظر استقرار (deployment-agnostic) مستقل است، بنابراین می‌توان آن را با LLMهای مختلف و در محیط‌های ابری، داخلی یا لبه اجرا کرد. همچنین با فریم‌ورک‌های دیگر سازگار است و امکان پذیرش تدریجی در کنار پشته‌های موجود را می‌دهد. برای تیم‌های Go، این پشتیبانی یک مسیر سازگار و منعطف برای ساخت عامل‌ها فراهم می‌کند، بدون قفل‌شدن به مدل یا زیرساخت خاص.

#Google #ADK #Go #AI #Agents #Python #Java #DeveloperTools

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


👑 @gopher_academy
🔵 عنوان مقاله
Red, Green, Refactor: Writing Perfect Go, with TDD

🟢 خلاصه مقاله:
** این مطلب سه دیدگاه مکمل برای بهبود کدنویسی در Go ارائه می‌کند: به‌کارگیری چرخه Red–Green–Refactor در TDD برای ساخت پکیج‌های کوچک و APIهای شفاف و ریفکتور امن با تکیه بر تست‌های سریع؛ مرور کاربردی John Arundel از sync.Pool برای کاهش فشار تخصیص در مسیرهای داغ، با تأکید بر اینکه این سازوکار «کش» نیست و اقلام آن ممکن است هر لحظه حذف شوند، و استفاده از آن فقط با اندازه‌گیری و پروفایل توجیه‌پذیر است؛ و توضیح Jesús Espino در Devtrovert درباره Scanner در کامپایلر Go و نحوه تبدیل کد منبع به توکن‌ها، که منشأ برخی خطاها و رفتار ابزارها را روشن می‌کند. جمع‌بندی: با TDD کیفیت و قابلیت نگه‌داری را بالا ببرید، sync.Pool را صرفاً وقتی به کار بگیرید که داده‌ها گلوگاه تخصیص را نشان می‌دهند، و با شناخت روند اسکن، ابزار بهتر و کد خواناتر بسازید.

#Go #Golang #TDD #syncPool #Refactoring #GoCompiler #Performance #Profiling

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
Understanding the Go Compiler: The Scanner

🟢 خلاصه مقاله:
این مقاله، با معرفی نقش Scanner در Go Compiler، توضیح می‌دهد که چگونه متن خام به توکن‌های دقیق و موقعیت‌دار تبدیل می‌شود تا مراحل بعدی مانند parser و type checker بتوانند روی آن کار کنند. تمرکز مقاله بر سادگی قواعد واژگانی Go، نبود preprocessor و سازوکار semicolon insertion است که باعث می‌شود کد خواناتر و ابزارها قابل‌اعتمادتر باشند.

نویسنده انواع توکن‌ها را مرور می‌کند: شناسه‌ها با پشتیبانی Unicode، اعداد صحیح و اعشاری و imaginary با امکان استفاده از underscore، رشته‌های interpreted و raw، و rune literals. همچنین به نحوه‌ی تشخیص و نادیده‌گیری یا نگه‌داری کامنت‌ها بر حسب نیاز ابزار اشاره می‌کند. بخشی هم به گزارش خطا و ادامه‌ی اسکن در مواجهه با ورودی‌های نامعتبر می‌پردازد و اهمیت go/token برای نگه‌داری دقیق موقعیت‌ها را توضیح می‌دهد.

در پایان، با معرفی بسته‌های go/scanner و go/token، مسیر ساخت ابزارهایی مثل linter و formatter نشان داده می‌شود و تفاوت آن‌ها با پیاده‌سازی داخلی کامپایلر بیان می‌گردد. نتیجه اینکه طراحی خطی و ساده‌ی Scanner، سرعت ابزار Go و کیفیت پیام‌های خطا و تحلیل‌های ایستا را ممکن کرده است.

#Go #Golang #GoCompiler #Scanner #Lexer #Parsing #StaticAnalysis #ProgrammingLanguages

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


👑 @gopher_academy
2
یه ابزار مشابه شبیه به Make منتهی جدیدتر و با فرمت Yaml که با زبان Go ساخته شده.

#Makefile #Task #Taskfile #Tools #GNU #GoLang #Go #Build #Workflow #Yaml

https://taskfile.dev
👍21🔥1
🔵 عنوان مقاله
goquery v1.11: jQuery-Like HTML/DOM Manipulation Methods

🟢 خلاصه مقاله:
goquery v1.11 کتابخانه‌ای برای زبان Go است که شیوه‌ای آشنا و شبیه به jQuery برای کار با HTML و CSS در سمت سرور ارائه می‌دهد. با استفاده از انتخاب‌گرهای CSS، پیمایش DOM و زنجیره‌کردن متدها، می‌توانید به‌سادگی عناصر را انتخاب کنید، متن و ویژگی‌ها را بخوانید یا ویرایش کنید و بین والد، فرزند و همسایه‌ها حرکت کنید. این رویکرد برای وب‌اسکرپینگ، استخراج محتوا، بررسی خودکار کیفیت نشانه‌گذاری و تبدیل‌های سمت سرور بسیار کاربردی است. طراحی API تا حد ممکن با الگوی ذهنی jQuery هماهنگ است و یادگیری آن برای توسعه‌دهندگانی که تجربه front-end دارند سریع خواهد بود. فهرست کامل توابع پشتیبانی‌شده و مثال‌ها در مستندات رسمی ارائه شده است.

#goquery #Go #jQuery #HTML #CSS #WebScraping #DOM

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


👑 @gopher_academy
🔵 عنوان مقاله
Scriggo: Template Engine and Go Embeddable Interpreter

🟢 خلاصه مقاله:
Scriggo یک موتور قالب و مفسر قابل‌جاسازی برای Go است که تجربه‌ای مشابه ERB در Ruby/Rails را به اکوسیستم Go می‌آورد. با آن می‌توانید منطق و عبارت‌های Go را مستقیماً داخل قالب‌ها قرار دهید و محتوای پویا بسازید.

ویژگی مهم Scriggo این است که قالب‌ها بدون نیاز به کامپایل مجدد برنامه قابل تغییر و اعمال هستند؛ بنابراین چرخه آزمون و تغییر بسیار سریع می‌شود و می‌توانید منطق ارائه و قوانین رندر را به‌سرعت اصلاح کنید.

این ابزار به‌صورت کتابخانه در برنامه‌های Go ادغام می‌شود و برای ساخت خروجی‌های پویا مانند صفحات CMS، ایمیل‌ها یا تولید محتوای مبتنی بر قالب مناسب است؛ ترکیبی از امکانات Go با تفسیر زمان‌اجرا برای رسیدن سریع‌تر از ایده به خروجی.

#Go #Scriggo #TemplateEngine #Interpreter #ERB #RubyOnRails #Templating

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Building Dolt on Windows: The 'Pacman' Game

🟢 خلاصه مقاله:
این مجموعه به سه موضوع کلیدی برای توسعه‌دهندگان می‌پردازد: ساخت Dolt روی Windows با تمثیل بازی «Pacman» برای شکار وابستگی‌ها و رفع ناسازگاری‌های سیستم‌عاملی؛ بررسی عملی Crush، عامل کدنویسی مبتنی بر TUI از Charm توسط Elian Deogracia-Brito که تجربه‌ی کار یکپارچه در ترمینال را ارزیابی می‌کند؛ و راهنمای Graham Helton برای پروفایلینگ برنامه‌های Go با pprof و k6 روی نمونه‌ای به نام Pears. پیام اصلی: ایجاد ساخت‌های پایدار روی Windows نیازمند مهار تفاوت‌های پلتفرمی است، ابزارهای TUI مانند Crush می‌توانند تمرکز و سرعت جریان کاری ترمینال‌محور را بالا ببرند، و ترکیب pprof با k6 باید به عادت روزمره‌ی تیم برای اندازه‌گیری، تحلیل و بهینه‌سازی عملکرد تبدیل شود.

#Dolt #Windows #Pacman #Crush #Charm #TUI #Go #pprof #k6 #Profiling

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


👑 @gopher_academy
🔵 عنوان مقاله
Boxes and Glue v0.1.10

🟢 خلاصه مقاله:
کتابخانه Boxes and Glue v0.1.10 برای تولید PDF در محیط Go طراحی شده و با تکیه بر الگوریتم‌های TeX و مدل box-and-glue، چیدمان دقیق متن، شکستن خط و فاصله‌گذاری قابل پیش‌بینی را فراهم می‌کند. این ابزار امکان ترکیب صفحه و تولید PDF را به‌صورت برنامه‌نویسی‌شده داخل اکوسیستم Go می‌دهد و برای ساخت گزارش‌ها، فاکتورها و مستندات فنی با خروجی پایدار و قابل بازتولید مناسب است. نسخه v0.1.10 نشان می‌دهد پروژه در حال رشد است، اما همین حالا نیز برای تولید خروجی با کیفیت بالا قابل استفاده بوده و با هدف آوردن اصول محکم حروف‌چینی TeX به جریان کاری سبک و کارای Go توسعه می‌یابد.

#Go #PDF #TeX #Typesetting #GoLang #DocumentRendering #LayoutEngine #DevTools

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


👑 @gopher_academy
4
🔵 عنوان مقاله
Wave Terminal: 'AI-Native' Open Source Go-Powered Terminal App

🟢 خلاصه مقاله:
ا**Wave Terminal یک ترمینال Open Source با رویکرد AI-Native است که روی MacOS، Linux و Windows اجرا می‌شود. این ابزار با ارائه قابلیت‌هایی مانند پیش‌نمایش فایل، ویرایش درجا، مرور پوشه‌ها و کار با فایل‌ها و ماشین‌های راه‌دور، تجربه‌ی خط فرمان را یکپارچه‌تر می‌کند. هسته‌ی هوشمند آن برای پیشنهاد دستورها، توضیح خطاها و ساده‌سازی گردش‌کار طراحی شده است. نوشته‌شدن با Go نیز مزیتی برای کارایی، قابل‌حمل‌بودن و توسعه‌پذیری به‌شمار می‌آید.

#AI #OpenSource #Go #Terminal #CLI #DeveloperTools #CrossPlatform #DevOps

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


👑 @gopher_academy
1👍1
🔵 عنوان مقاله
Go Turns Sixteen Years Old

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

هم‌زمان، تمرکز پررنگی روی بهبود DX دیده می‌شود: ابزارها و جریان‌های کاری روان‌تر شده‌اند و تجربه توسعه روزمره سریع‌تر و ثمربخش‌تر پیش می‌رود. علاوه بر این، تغییرات مرتبط با MCP نیز در راه‌اند که امکان یکپارچه‌سازی بهتر ابزارها و فرآیندها را مطابق نیازهای تیم‌های مدرن فراهم می‌کنند.

برآیند این روندها آینده‌ای امیدوارکننده برای Gophers رقم می‌زند: تجربه‌ای صیقل‌خورده‌تر و یکپارچه‌تر که سرعت عمل را بالا می‌برد، بدون آن‌که دقت، کارایی یا سادگی قربانی شود.

#Go #Golang #OpenSource #DeveloperExperience #DX #MCP #Gophers

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


👑 @gopher_academy
4
🔵 عنوان مقاله
Getting Started with Fuzzing in Go

🟢 خلاصه مقاله:
این راهنمای رسمی از Go Docs یک شروع عملی و به‌روز برای افزودن fuzzing به جریان تست‌های Go است. آموزش نشان می‌دهد چگونه یک تابع FuzzXxx با testing.F بنویسید، ورودی‌های اولیه را با f.Add اضافه کنید، و با go test -fuzz اجرا بگیرید (در صورت نیاز با -fuzztime). هنگام کشف خطا یا panic، ورودیِ کوچک‌سازی‌شده به‌طور خودکار در testdata/fuzz ذخیره می‌شود تا بتوانید آن را به‌صورت قطعی بازتولید، عیب‌یابی و به‌عنوان تست رگرسیون نگه‌داری کنید. همچنین بهترین‌روش‌ها مانند تعیین حدود منابع، اجتناب از نادترمینیزم، تعریف خاصیت/قاعده مورد انتظار، هدف‌گیری کدهای parser/decoder و ادغام در CI را پوشش می‌دهد. نتیجه اینکه افزودن fuzzing با ابزارهای داخلی Go ساده است و این راهنما مراحل، دستورات و نمونه‌کد لازم را در اختیارتان می‌گذارد.

#Go #Fuzzing #GoDocs #SoftwareTesting #Security #GoTesting #PropertyBasedTesting #CI

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


👑 @gopher_academy
1👍1🔥1
🔵 عنوان مقاله
Guts: Convert Go Types to TypeScript

🟢 خلاصه مقاله:
**Guts یک کتابخانه تولید کد است که انواع تعریف‌شده در Go را به تعاریف TypeScript تبدیل می‌کند تا بین frontend و backend در یک اپلیکیشن full‑stack سازگاری نوعی ایجاد شود. به‌عنوان یک ابزار کتابخانه‌ای به‌راحتی در مراحل build یا CI/CD ادغام می‌شود و با همگام‌سازی خودکار تعاریف، نیاز به نگهداری دستی انواع تکراری را از بین می‌برد. تمرکز Guts بر همسان‌سازی انواع است و نه تعریف کامل قراردادهای API؛ بنابراین وقتی فقط به اشتراک‌گذاری انواع نیاز دارید و ابزاری به گستردگی TypeSpec یا OpenAPI لازم نیست، گزینه‌ای ساده و مؤثر محسوب می‌شود.

#Go #TypeScript #CodeGeneration #FullStack #TypeSafety #OpenAPI #TypeSpec

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Testing Out Crush, Charm's TUI-Based Coding Agent

🟢 خلاصه مقاله:
این مطلب با آزمودن Crush از Charm نشان می‌دهد یک دستیار کدنویسی مبتنی بر TUI چگونه می‌تواند کارهای روزمره توسعه را مستقیماً در ترمینال تسهیل کند؛ از پیمایش مخزن و تولید قطعه‌کد تا اجرای فرمان‌ها و نوشتن تست، با تمرکز بر جریان کاری سریع و کلیدمحور. در کنار مزایایی مانند کاهش جابه‌جایی بین ابزارها و هماهنگی با سبک یونیکسی، به محدودیت‌های رایجِ عامل‌ها نیز اشاره می‌شود: وابستگی به کیفیت مدل، نیاز به راهنمایی دقیق در پروژه‌های بزرگ/نامعمول و اینکه برخی وظایف هنوز از IDE سود می‌برند. همچنین به نوشته‌ای از Graham Helton درباره پروفایل‌کردن برنامه‌های Go با pprof و k6 ارجاع داده می‌شود که چرخه‌ای سنجش‌محور (تولید بار با k6، تحلیل گلوگاه‌ها با pprof، و تکرار) را توصیه می‌کند؛ چرخه‌ای که با ابزارهای ترمینالی و عاملی مثل Crush روان‌تر پیش می‌رود.

#Crush #Charm #TUI #CodingAgent #Go #pprof #k6 #DeveloperTools

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Profiling Go Programs with pprof and k6

🟢 خلاصه مقاله:
**این مقاله از Golang Weekly یک روند عملی برای بهینه‌سازی عملکرد سرویس‌های Go ارائه می‌کند: با k6 بار واقعی و سناریوهای قابل‌اسکریپت ایجاد می‌شود و هم‌زمان با pprof پروفایل‌های CPU، heap، goroutine، mutex و block گرفته می‌شود تا گلوگاه‌ها دقیق شناسایی شوند. مراحل پیشنهادی شامل فعال‌سازی امن pprof، اجرای سناریوی k6 تا رسیدن به بار هدف، برداشت پروفایل‌ها در حالت پایدار، تحلیل با go tool pprof (top، گراف، UI)، و سپس اعمال بهینه‌سازی‌ها مثل کاهش تخصیص‌ها، کاهش کپی و reflection، کاهش رقابت روی قفل‌ها و رفع نشتی goroutine است. با اجرای دوباره همان سناریو و مقایسه پروفایل‌ها، اثربخشی تغییرات سنجیده می‌شود. نتیجه: k6 علائم را نشان می‌دهد و pprof علت را؛ این ترکیب فرآیند بهبود عملکرد را تکرارپذیر و مبتنی بر داده می‌کند.

#Go #Golang #pprof #k6 #Performance #LoadTesting #Profiling #Observability

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


👑 @gopher_academy
3