Gopher Academy
3.84K subscribers
931 photos
42 videos
280 files
2.17K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
The Concurrency Conundrum: A Story of Curiosity and Code

🟢 خلاصه مقاله:
**این مقاله داستان برخورد با یک مشکل رایج در همزمانی است: سرویس ظاهراً سالمی که زیر بار گاهی قفل می‌کرد و درخواست‌ها معطل می‌ماندند. با افزودن لاگ‌های ساخت‌یافته، ابزارهای رهگیری و یک تست حداقلیِ قابل‌بازتولید، ریشه مشخص شد: ترتیب‌گیری نادرست قفل‌ها و بخش‌های بحرانی طولانی که به بن‌بست و گاهی رقابت در دسترسی به متغیرها منجر می‌شد. راه‌حل با تعریف نظم ثابت در ترتیب اخذ قفل‌ها، جایگزینی قفل سراسری با قفل‌های ریزدانه و read-write، کوچک‌کردن بخش‌های بحرانی و پرهیز از I/O زیر قفل، به‌کارگیری try-lock با backoff و timeout، و در مسیرهای پرتردد، حرکت به سمت پیام‌محوری به‌جای وضعیت مشترک اجرا شد. سپس با Thread Sanitizer و ابزارهای تشخیص بن‌بست در CI، تست‌های تنشی و مبتنی بر ویژگی، و سنجه‌های مربوط به تراکم قفل، سامانه سخت‌جان‌تر شد. جمع‌بندی: مدل همزمانی را ساده نگه دارید، داده‌های نامتغیر و عملیات idempotent را ترجیح دهید، از سازوکارهای سطح‌بالا استفاده کنید، و ترتیب قفل‌ها و ناوردایی‌ها را مستند و پایش‌پذیر کنید.

#Concurrency #Locking #Deadlock #RaceConditions #Multithreading #Debugging #SoftwareEngineering #Reliability

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
SFTPGo 2.7: A Full Featured File Transfer Solution

🟢 خلاصه مقاله:
این نسخه از SFTPGo 2.7 یک سرور انتقال فایل مبتنی بر Go است که پروتکل‌های SFTP، HTTP/S، FTP/S و WebDAV را در یک راهکار یکپارچه ارائه می‌دهد. تمرکز آن بر پیکربندی منعطف و کنترل دقیق دسترسی است تا مدیران بتوانند سیاست‌ها، مسیرها و رفتار کاربران را مطابق نیاز تنظیم کنند. نقطه‌قوت اصلی، تعامل با storageهای ابری است؛ می‌توان backendهایی مانند Amazon S3، Google Cloud Storage و Azure Blob را مانند پوشه‌های محلی در اختیار کلاینت‌ها گذاشت و همان داده را هم‌زمان از چند پروتکل ارائه کرد. امنیت انتقال با TLS و رمزنگاری مدرن تضمین می‌شود و ثبت رویدادها نیز برای نظارت و انطباق در دسترس است. نسخه 2.7 بر پایداری و بلوغ خط v2 تأکید دارد و گزینه‌ای مناسب برای نوسازی جریان‌های انتقال فایل و پل‌زدن میان کلاینت‌های قدیمی و زیرساخت‌های cloud-first است.

#SFTPGo #SFTP #FTP #WebDAV #GoLang #CloudStorage #FileTransfer #DevOps

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Fantasy: Build Flexible AI Agents with Go

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

#Go #Golang #AI #AIAgents #Charm #Crush #DevTools #AgentFramework

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
google/jsonschema-go

🟢 خلاصه مقاله:
این مقاله دو کتابخانه Go برای کار با JSON Schema را مقایسه می‌کند: google/jsonschema-go و مخزن شخصی Ian Lance Taylor با نام ianlancetaylor/jsonschema. تمرکز اصلی بر کاربردهای عملی مانند اعتبارسنجی در زمان اجرا، هم‌ترازی قراردادهای داده میان سرویس‌ها، و در صورت نیاز، تولید کد برای انواع Go است. به‌جای معرفی یک برنده قطعی، مجموعه‌ای از معیارهای انتخاب پیشنهاد می‌شود: پوشش استاندارد (کلیدواژه‌ها، فرمت‌ها، و ارجاعات $ref)، کیفیت گزارش خطا، کارایی در بارهای واقعی، قابلیت سفارشی‌سازی، و نشانه‌های پایداری و نگهداشت پروژه. همچنین سازگاری با فرآیندهای CI، نحوه حل $ref در فایل‌ها و URLها، و میزان تطبیق با ابزارهای رایج Go بررسی می‌شود. جمع‌بندی مقاله عملی است: هر دو گزینه قابل اتکا هستند و انتخاب نهایی باید بر اساس نیازهای خاص تیم—سادگی رابط، گستره امکانات، یا الزامات یکپارچه‌سازی—انجام شود.

#Go #JSONSchema #GoLang #OpenSource #Validation #CodeGeneration #GitHub

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


👑 @gopher_academy
🔵 عنوان مقاله
From 19 Hours to Under a Second: Building a Blazing-Fast TCP Scanner in Go

🟢 خلاصه مقاله:
با یک روایت عملی، مقاله توضیح می‌دهد چگونه یک اسکنر ساده TCP که ۱۹ ساعت طول می‌کشید، با بازطراحی در Go به ابزاری «زیر یک ثانیه» تبدیل شد. ابتدا نشان می‌دهد چرا اسکن مبتنی‌بر net.Dial حتی با همزمانی محدود گرفتار زمان‌های انتظار، محدودیت FD و سربار syscall می‌شود. سپس با گذار از اتصال‌های کامل به اسکن SYN، ساخت بسته‌ها، فیلترکردن پاسخ‌ها با BPF، و نگه‌داری وضعیت سبک‌وزن، سربار کرنل و زمان‌بندی به شدت کاهش می‌یابد. بهینه‌سازی‌هایی مانند batch کردن ارسال/دریافت، پیش‌اختصاص بافرها، کاهش تخصیص‌ها با sync.Pool، و حلقه‌های رویدادی کارا (epoll/kqueue) همراه با تنظیمات سیستم (ulimit، بافرهای سوکتی و sysctl) throughput را به حداکثر می‌رساند. با پروفایل‌کردن مداوم (pprof) و راستی‌آزمایی با ابزاری مانند Nmap، هم دقت و هم کارایی تضمین می‌شود. خروجی نهایی: الگوی عملی برای ساخت ابزارهای پرسرعت شبکه در Go—ترکیبی از انتخاب مدل درست (SYN به‌جای connect)، کاهش سربارها، batch کردن، اندازه‌گیری پیوسته، و پایبندی به اصول ایمنی و اخلاق اسکن. این مطلب در Golang Weekly برجسته شده است.

#Go #Golang #TCP #PortScanning #Networking #Performance #Concurrency #SystemsProgramming

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


👑 @gopher_academy
🔵 عنوان مقاله
Go's Release Cycle and Process as Go 1.26 Progresses

🟢 خلاصه مقاله:
با نزدیک‌شدن به انتشار Go 1.26، فرآیند انتشار این زبان وارد مرحله حساس می‌شود. طبق برنامه، تاریخ “development freeze” برای ۲۶ نوامبر تعیین شده است؛ یعنی از این زمان هیچ قابلیت جدیدی برای Go 1.26 پذیرفته نمی‌شود و تمرکز پروژه بر رفع باگ‌ها، بهبود کارایی، مستندسازی و آزمون است. نسخه‌های beta و RC برای آزمایش جامعه منتشر می‌شوند تا مشکلات واقعی سریع‌تر شناسایی و رفع شوند.

برای توسعه‌دهندگان، این یعنی تغییراتی که تا موعد یادشده آماده نشوند، به چرخه بعدی (مثلاً Go 1.27) منتقل خواهند شد. پیشنهاد می‌شود پروژه‌ها و کتابخانه‌ها، ساخت‌ها و تست‌های خود را با پیش‌انتشارهای Go 1.26 اجرا کنند و هر گونه مشکل را سریع گزارش دهند تا در نسخه نهایی رفع شود. این انضباط در “فریز” ویژگی‌ها و محدودکردن تغییرات پرریسک، مسیر انتشار پایدار و قابل‌پیش‌بینی Go را تضمین می‌کند.

#Go #Golang #Go126 #ReleaseCycle #DevelopmentFreeze #SoftwareRelease #ProgrammingLanguages #OpenSource

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


👑 @gopher_academy
👍1
🍏 یکی از ویژگی های گولنگ ۱.۲۶

💛 testing

🔰متدهای جدید T.ArtifactDir, B.ArtifactDir و F.ArtifactDir اضافه شده‌اند.

🔰این متدها پوشه‌ای برای ذخیره‌ی خروجی‌های تست (artifacts) برمی‌گردانند.

اگر هنگام اجرای go test از پرچم -artifacts استفاده شود، این پوشه درون مسیر خروجی مشخص‌شده (یا پوشه فعلی) ایجاد می‌شود.

در غیر این صورت، در پوشه‌ی موقتی ایجاد و پس از اتمام تست حذف خواهد شد.اولین فراخوانی ArtifactDir هنگامی که -artifacts فعال باشد،

مسیر پوشه‌ی artifact را در لاگ تست ثبت می‌کند.

https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
👍3
🔵 عنوان مقاله
their favorite Go related blog posts of all time.

🟢 خلاصه مقاله:
این شماره جدید از خبرنامه Golang Weekly فهرستی منتخب از «بهترین پست‌های وبلاگی مرتبط با Go» را گرد آورده است؛ مجموعه‌ای منسجم که به‌جای فهرست صرفِ لینک‌ها، مسیر مطالعه‌ای ارائه می‌دهد برای درک اصول ماندگار Go. موضوعات کلیدی مانند همروندی با goroutine و channel، خطاپرداری شفاف، استفاده از interface و ترکیب‌پذیری، آزمون‌نویسی و ابزارها، همچنین بهینه‌سازی کارایی، پروفایلینگ و مدیریت حافظه پوشش داده می‌شوند. هر انتخاب با توضیحی کوتاه درباره ارزش ماندگارش و اینکه به درد چه کسی و چه مسئله‌ای می‌خورد همراه است؛ نوآموزان می‌توانند آن را نقشه راه یادگیری بدانند و باتجربه‌ها نیز برای بازبینی مبانی و دیدگاه‌های عمیق‌تر از آن بهره ببرند. این گردآوری تصویری از مسیر بلوغ جامعه Go نیز ارائه می‌کند؛ از نوشته‌های اولیه که روحیه طراحی زبان را شکل دادند تا جمع‌بندی‌های اخیر که بر تجربه‌های تولیدی تکیه دارند—مجموعه‌ای برای نشان‌گذاری، اشتراک با تیم و رجوع‌های مکرر.

#Go #Golang #GolangWeekly #Programming #SoftwareEngineering #Concurrency #GoTips #DevCommunity

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


👑 @gopher_academy