Gopher Academy
3.84K subscribers
933 photos
42 videos
280 files
2.22K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
Dependency Management in Database Design

🟢 خلاصه مقاله:
** مدیریت وابستگی‌ها در پروژه‌های بزرگ Go، به‌خصوص در موتورهای پایگاه‌داده، چالش‌زا است. مطالعه موردی Dolt (با ۷۶۲ هزار خط کد Go) نشان می‌دهد که لایه‌بندی دقیق، مرزبندی شفاف، و تکیه بر interfaceها به‌جای پیاده‌سازی‌های مستقیم، جلوی چرخه‌های import و کوپلینگ پنهان را می‌گیرد. استفاده از Go modules، نسخه‌بندی معنایی، internal packages و اجراهای خودکار در CI برای شناسایی چرخه‌ها و importهای ممنوع، سلامت نمودار وابستگی را حفظ می‌کند. راهبرد تست مبتنی بر mock/fake و تست‌های یکپارچه، هر لایه را مستقل قابل آزمون می‌کند و رگرسیون را کاهش می‌دهد. نتیجه این است که زیرسامانه‌هایی مانند ذخیره‌سازی، پرس‌وجو و تکرار در Dolt می‌توانند مستقل و با سرعت تکامل پیدا کنند، بدون آن‌که تغییرات به کل کدبیس سرایت کند.

#Go #Golang #DependencyManagement #ModularArchitecture #DatabaseSystems #Dolt #SoftwareArchitecture #Scalability

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


👑 @gopher_academy
🔵 عنوان مقاله
switch Statements in Go

🟢 خلاصه مقاله:
این مطلب از Golang Weekly به‌صورت عملی سراغ عبارت‌های switch در Go می‌رود و نشان می‌دهد چگونه می‌توان به‌جای زنجیره‌های if/else طولانی، کدی خواناتر نوشت. ابتدا نحو و قواعد ارزیابی switch، استفاده از چند مقدار در یک case، نقش default، و این نکته که در Go سقوط خودکار بین caseها وجود ندارد و فقط با fallthrough فعال می‌شود، توضیح داده می‌شود. سپس فرم بدون تگِ switch { ... } برای نگارش نگهبان‌های منطقیِ مرتب معرفی می‌شود.

بخش بعدی به type switch اختصاص دارد: وقتی با interface سروکار دارید، switch روی v.(type) اجازه می‌دهد بر اساس نوع واقعی تصمیم بگیرید، از nil به‌درستی عبور کنید و محدوده متغیرها در سربرگ switch و داخل caseها را مدیریت کنید. مقاله الگوهای کاربردی مثل مسیردهی بر اساس روش HTTP، دسته‌بندی خطاها برحسب نوع، شاخه‌بندی زمان‌محور و استفاده از ثابت‌ها را مرور می‌کند و در کنار آن به نکات سبک و کارایی اشاره دارد. جمع‌بندی این است که با رعایت چند قاعده ساده و پرهیز از دام‌های متداول، switch در Go ابزاری شفاف، قابل نگهداری و گاه سریع‌تر از شرط‌های زنجیره‌ای خواهد بود.

#Go #Golang #GolangWeekly #switch #TypeSwitch #GoTips #Programming #Backend

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Revisiting Interface Segregation in Go

🟢 خلاصه مقاله:
این مطلب «Interface Segregation Principle (ISP)» را از منظر Go مرور می‌کند: مشتری نباید به متدهایی وابسته شود که از آن‌ها استفاده نمی‌کند. در Go، راهکارهای رایج شامل ساختن رابط‌های کوچک و رفتاری، تعریف رابط‌ها در محل استفاده، «پذیرفتن interface و برگرداندن نوع‌های concrete»، و الهام گرفتن از نمونه‌های استاندارد مثل io.Reader و io.Writer است.

مشکل وقتی پیش می‌آید که یک پکیج، رابط‌های چاق و همه‌چیزدار صادر می‌کند؛ این کار تغییرات را سخت و پیاده‌سازی‌ها را پر از متدهای بی‌مصرف می‌کند. بهتر است رابط‌های کوچک را ترکیب یا embed کنیم، فقط وقتی واقعاً لازم است سراغ رابط‌های بزرگ برویم، و از میان‌افزارها/adapterها برای سازگاری در مسیر ریفکتور کمک بگیریم.

راهبرد عملی: ابتدا پیاده‌سازی‌های concrete بسازید، بعد بر اساس نیاز واقعی رابط استخراج کنید؛ مجموعه‌متدها را کوچک نگه دارید، برای تست از فیک/ماک بهره ببرید، و APIها را تدریجی تکامل دهید. با وجود generics هم باید از تعمیم بی‌جا پرهیز کرد و رابط‌های runtime را بر رفتار متمرکز نگه داشت. نتیجه پایبندی به ISP در Go، کدی ساده‌تر برای تست، نگهداشت و توسعه است؛ نکاتی که در تازه‌ترین مطلب معرفی‌شده توسط Golang Weekly نیز برجسته شده‌اند.

#Go #Golang #InterfaceSegregation #ISP #GoInterfaces #SoftwareDesign #Refactoring #GolangWeekly

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


👑 @gopher_academy
👍2
🔵 عنوان مقاله
progjpeg: image/jpeg But With Progressive Encoding Support

🟢 خلاصه مقاله:
progjpeg نسخه‌ای از بسته image/jpeg در زبان Go است که امکان Progressive Encoding را به آن اضافه می‌کند؛ قابلیتی که تصویر را ابتدا به‌صورت کم‌جزئیات نشان می‌دهد و در چند گذر با دریافت داده‌های بیشتر شفاف‌تر می‌شود. این ویژگی می‌تواند در شبکه‌های کند تجربه کاربری را بهبود دهد و توسط بیشتر مرورگرها و دیکدرهای تصویر پشتیبانی می‌شود. چون درخواست افزودن این قابلیت در مخزن رسمی Go «متوقف/فریز» شده بود، progjpeg این خلأ را برای توسعه‌دهندگان پر می‌کند. هرچند کاربرد آن تخصصی است، اما برای سرویس‌های وب و سامانه‌های سنگینِ تصویر می‌تواند تجربه بارگذاری روان‌تری فراهم کند، با درنظرگرفتن ملاحظاتی مثل پیچیدگی کدنویسی و تفاوت احتمالی در اندازه فایل.

#Go #Golang #JPEG #ProgressiveJPEG #ImageProcessing #WebPerformance #OpenSource

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


👑 @gopher_academy
🔵 عنوان مقاله
"I'm Independently Verifying Go's Reproducible Builds"

🟢 خلاصه مقاله:
** از نسخه Go 1.21، ابزارهای اصلی Go به‌صورت Reproducible Builds عرضه می‌شوند؛ یعنی اگر همان سورس را دوباره بسازید، برای هر هدف مشخص، خروجی دقیقا همسانِ بایت‌به‌بایت تولید می‌شود و به محیط میزبان وابسته نیست. این مقاله گزارشی از یک راستی‌آزمایی مستقل است: دریافت سورس از ریلیزهای رسمی، ساخت در محیط‌های ایزوله روی میزبان‌های متفاوت، تولید ابزارها برای تارگت‌های یکسان و مقایسه هش‌ها با یکدیگر و با چک‌سام‌های رسمی. نتیجه نشان می‌دهد که از Go 1.21 به بعد، Go toolchain طبق وعده قابل بازتولید است. این کار، در کنار انتشار رسمی، اعتماد را افزایش می‌دهد، ریسک دست‌کاری در زنجیره تامین نرم‌افزار را کاهش می‌دهد و به کاربران امکان می‌دهد خروجی‌های منتشرشده را خودشان مستقلانه راستی‌آزمایی کنند.

#ReproducibleBuilds #Go #Golang #SupplyChainSecurity #DeterministicBuilds #OpenSource #DevSecOps

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


👑 @gopher_academy
1
🔵 عنوان مقاله
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
🔵 عنوان مقاله
list of the top ten web application security threats in 2025.

🟢 خلاصه مقاله:
امنیت وب در ۲۰۲۵ با ترکیبی از تهدیدهای قدیمی و سطح حمله‌های جدید تعریف می‌شود: شکست در کنترل دسترسی، تزریق در SQL/NoSQL/GraphQL، ضعف‌های احراز هویت و نشست‌ها، SSRF و پیکربندی‌های نادرست همچنان پرتکرارند، در حالی که حملات زنجیره‌تأمین (بسته‌های مخرب، Dependency Confusion، نفوذ به CI/CD) و سوءاستفاده‌های خودکار و مبتنی بر AI رو به افزایش‌اند. در معماری‌های API-first و میکروسرویس، خطاهایی مثل Broken Object-Level Authorization، Mass Assignment، و Shadow APIها ریسک را بالا می‌برند و در فضای ابری، SSRF می‌تواند به افشای گذرواژه‌های ابری و تصاحب حساب منجر شود. برای تیم‌های Go، هرچند زبان از کلاس بزرگی از باگ‌های حافظه‌ای جلوگیری می‌کند، اما خطاهای منطقی، شرایط مسابقه و تنظیمات ناایمن باقی می‌مانند؛ بنابراین استفاده از احراز هویت قوی (مثل WebAuthn و توکن‌های کوتاه‌عمر)، اصل حداقل دسترسی، چرخش اسرار، تست و اسکن مداوم (fuzzing در Go 1.18+، linters، govulncheck)، مدیریت امن وابستگی‌ها و SBOM، و سخت‌سازی CI/CD با امضا و سیاست‌گذاری پیشنهاد می‌شود. این فهرست از سوی Golang Weekly به‌عنوان یک چک‌لیست عملی برای اولویت‌بندی دفاع‌ها و گفت‌وگو درباره ریسک در تیم‌های توسعه معرفی شده است.

#WebSecurity #AppSec #Golang #APIsecurity #SupplyChainSecurity #DevSecOps #SSRF #OWASP

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


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