Gopher Academy
3.83K subscribers
935 photos
42 videos
280 files
2.23K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
some odd discrepancies when profiling their Go code on macOS.

🟢 خلاصه مقاله:
این مطلب در Golang Weekly به این می‌پردازد که چرا هنگام پروفایل کردن برنامه‌های Go روی macOS گاهی نتایج ناسازگار و غافلگیرکننده دیده می‌شود؛ پروفایل‌ها بین اجراها تغییر می‌کنند و معمولاً با اعداد به‌دست‌آمده روی Linux یا در CI هم‌خوان نیستند. ریشه مسئله بیشتر به تفاوت ابزارها، رفتار سیستم‌عامل و ویژگی‌های بار کاری برمی‌گردد: نمونه‌برداری pprof ممکن است نقاط داغ کوتاه‌عمر را نبیند، مدیریت توان و زمان‌بندی macOS بر نرخ نمونه‌گیری و زمان اجرای رشته‌ها اثر می‌گذارد، و حضور cgo یا کتابخانه‌های بومی می‌تواند ردگیری پشته و نمادگذاری را دشوار کند. توصیه‌ها شامل ترکیب pprof با Instruments، اجرای طولانی‌تر برای پایداری نمونه‌گیری، کنترل نویز محیطی (مثل ثابت نگه‌داشتن GOMAXPROCS و اجرای سیستم در شرایط کم‌بار)، تکرار چندباره اندازه‌گیری و نهایتاً مقایسه با مقادیری است که روی Linux (در صورت استقرار نهایی) به‌دست می‌آیند. جمع‌بندی این است که پروفایل‌های macOS را راهنمایی جهت‌دار بدانید و تصمیم‌های نهایی کارایی را بر اساس پلتفرم مقصد اتخاذ کنید.

#Go #Golang #macOS #Profiling #Performance #pprof #Instruments #AppleSilicon

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


👑 @gopher_academy
🔵 عنوان مقاله
Go v1.25.4 and 1.24.10

🟢 خلاصه مقاله:
نسخه‌های Go v1.25.4 و 1.24.10 منتشر شد؛ این‌ها به‌روزرسانی‌های نقطه‌ای با تمرکز بر رفع باگ‌ها و بهبود پایداری هستند و قابلیت جدید یا تغییر ناسازگار اضافه نمی‌کنند. ارتقا در همان شاخه نسخه باید کم‌خطر و ساده باشد. پیشنهاد می‌شود پس از مرور release notes و آزمایش در CI، در شاخه فعلی خود به آخرین Patch ارتقا دهید. بسته‌های آماده برای Linux، macOS و Windows از صفحه رسمی دانلود یا مدیر بسته‌ها در دسترس است.

#Go #Golang #Release #PatchRelease #BugFixes #Stability #SoftwareUpdate

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


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