Gopher Academy
3.85K subscribers
930 photos
41 videos
280 files
2.15K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
PG Back Web 0.5: A Postgres Backup System with Web Interface

🟢 خلاصه مقاله:
** PG Back Web 0.5 یک ابزار مبتنی بر Go برای مدیریت پشتیبان‌گیری‌های Postgres از طریق یک رابط وب ساده و کاربرپسند است. این برنامه امکان زمان‌بندی پشتیبان‌ها، پایش وضعیت و مشاهده تاریخچه را فراهم می‌کند و با webhooks می‌تواند اعلان‌ها را به سامانه‌های بیرونی ارسال کند. استقرار آن به‌صورت Docker image بسیار ساده است و در نسخه 0.5 پشتیبانی از Postgres 18 نیز اضافه شده تا با آخرین نسخه Postgres سازگار باشد.

#Postgres #Backup #Go #Docker #Database #DevOps #Webhooks #Monitoring

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


👑 @gopher_academy
1
🔵 عنوان مقاله
yzma: Perform Local Inference with VLMs and LLMs

🟢 خلاصه مقاله:
yzma راهی سبک برای اجرای محلی VLMs و LLMs درون برنامه‌های Go است. این ابزار با استفاده از purego و ffi مستقیماً به llama متصل می‌شود و سربار اضافی را کاهش می‌دهد، در نتیجه تأخیر پایین‌تر، کنترل بهتر و اجرای آفلاین فراهم می‌شود. تمرکز yzma بر ادغام ساده در سرویس‌ها و ابزارهای Go است تا بتوان هم پردازش متن و هم سناریوهای تصویر-متن را بدون اتکا به سرویس‌های ابری انجام داد.

#Go #LLM #VLM #LocalInference #FFI #purego #llama #OnDeviceAI

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


👑 @gopher_academy
🔵 عنوان مقاله
qjs: Run JavaScript in Go

🟢 خلاصه مقاله:
qjs یک روش تازه برای اجرای JavaScript داخل اپ‌های Go است که بدون نیاز به Cgo کار می‌کند. به‌جای اتصال به یک کتابخانه بومی، نسخه فورک‌شده‌ای از QuickJS را به WebAssembly کامپایل کرده و آن را زیر Wazero اجرا می‌کند. این رویکرد کل زنجیره را در محیط خالص Go نگه می‌دارد و فرایند بیلد، استاتیک‌سازی و کراس‌کامپایل را ساده‌تر می‌کند. مزیت دیگر، ایزوله‌سازی و سندباکس طبیعی ناشی از WebAssembly است. هرچند احتمالاً نسبت به اتصال بومی اندکی سربار دارد، اما برای سناریوهایی مثل اسکریپت‌نویسی، افزونه‌ها و اجرای امن منطق کاربر، توازن خوبی بین سادگی، پرتابل‌بودن و امنیت ارائه می‌دهد.

#Go #JavaScript #WebAssembly #Wazero #QuickJS #Cgo #GoLang #Embedding

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


👑 @gopher_academy
🔵 عنوان مقاله
Terminating Elegantly: A Guide to Graceful Shutdowns

🟢 خلاصه مقاله:
ترک شایسته در سرویس‌ها یعنی برنامه بتواند با دریافت SIGTERM، بدون از دست دادن داده یا خراب کردن وضعیت، درخواست‌های جاری را تمام کند و منابع را درست آزاد کند. در این ارائه، Alex Pliutau با تمرکز بر Go در Kubernetes، چرخه کامل خاتمه را توضیح می‌دهد: از دریافت سیگنال و قطع‌کردن ترافیک تا ضرب‌الاجل SIGKILL.

نکته‌های کلیدی شامل این‌هاست: استفاده از signal.NotifyContext و context برای لغو هماهنگ، مدیریت goroutineها با sync.WaitGroup، فراخوانی http.Server.Shutdown یا معادل gRPC برای تخلیه امن اتصال‌ها، و توقف گرفتن کار جدید در Workerها درحالی‌که کارهای درحال اجرا به‌صورت زمان‌دار تمام می‌شوند. در Kubernetes باید readiness زودتر غیرفعال شود تا Pod از مسیر ترافیک خارج شود، از preStop برای تأخیر یا Drain سفارشی کمک بگیرید، و terminationGracePeriodSeconds را درست تنظیم کنید. پایش و آزمون نیز ضروری است: لاگ شروع/پایان Shutdown، سنجه‌هایی مثل تعداد درخواست‌های درحال پردازش و زمان خاتمه، و تست SIGTERM تحت بار. رعایت این الگوهای ساده، خاتمه‌ای قابل اعتماد و بدون اختلال در Go روی Kubernetes فراهم می‌کند.

#Go #Kubernetes #GracefulShutdown #CloudNative #Microservices #DevOps #Reliability #ProductionOps

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


👑 @gopher_academy
🔵 عنوان مقاله
Go v1.25.2 and v1.24.8 have been released

🟢 خلاصه مقاله:
به‌روزرسانی‌های Go در نسخه‌های v1.25.2 و v1.24.8 منتشر شده‌اند که مجموعه‌ای از اصلاحات امنیتی را در بسته‌های مختلف ارائه می‌کند. این نسخه‌ها از نوع وصله‌ای و سازگار به عقب هستند و بدون تغییر در رفتار زبان، امنیت و پایداری ابزارها و کتابخانه‌ها را بهبود می‌دهند. توصیه می‌شود هرچه سریع‌تر به آخرین وصله در شاخه فعلی‌تان ارتقا دهید (برای v1.25 به v1.25.2 و برای v1.24 به v1.24.8)، یادداشت‌های انتشار و هر CVE مرتبط را بررسی کنید، باینری‌ها را مجدداً بسازید و ابزارهایی مانند govulncheck را برای شناسایی وابستگی‌های آسیب‌پذیر اجرا کنید.

#Go #Golang #Security #Update #PatchRelease #CVE #DevOps #SoftwareMaintenance

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


👑 @gopher_academy
👍1
🔵 عنوان مقاله
GopherCon Korea 2025

🟢 خلاصه مقاله:
**GopherCon Korea 2025 حدود یک ماه دیگر، در تاریخ ۹ نوامبر برگزار می‌شود. این رویداد جامعه‌محور برای توسعه‌دهندگان Go (Golang) فرصتی مناسب است تا به‌روزترین روندها را دنبال کنند، تجربه‌های عملی را به اشتراک بگذارند و شبکه‌سازی مؤثری داشته باشند. معمولاً نشست‌ها به موضوعاتی مانند مفاهیم زبان و کارایی، الگوهای هم‌زمانی، توسعه cloud-native و microservices، ابزارها و observability و مطالعات موردی در مقیاس تولید می‌پردازد. اگر قصد حضور دارید، اکنون زمان خوبی برای ثبت‌نام و برنامه‌ریزی سفر است و پیگیری کانال‌های رسمی برای جزئیات برنامه و مکان توصیه می‌شود.

#GopherConKorea #GopherCon #Golang #Go #TechConference #Developers #Korea #SoftwareEngineering

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Constraining LLMs with Structured Output in Python and Go

🟢 خلاصه مقاله:
**این مجموعه به روش‌های عملی برای واداشتن LLMها به تولید خروجی ساخت‌یافته می‌پردازد تا ادغام در سیستم‌های تولیدی قابل اعتماد، قابل اعتبارسنجی و قابل آزمون باشد. در Python با تعریف شِماهای سازگار با JSON و اتصال خروجی مدل به انواع مشخص، و در Go با استفاده از structهای نوع‌دار، struct tagها، و خطاهای صریح، خطر خروجی متنی آزاد و شکننده کاهش می‌یابد.

همچنین یک ویدئو از Rost Glukhov ساخت یک عامل کدنویس در Go را از ابتدا نشان می‌دهد؛ از طراحی پرامپت و برنامه‌ریزی تا اجرای ابزار و حلقه بازخورد. در بخش کارهای زمان‌بندی انبوه، مقاله Bill Kennedy توضیح می‌دهد چگونه Timing Wheels بدون پیمایش O(n) می‌توانند میلیون‌ها کلید را منقضی کنند—الگویی مفید برای زمان‌بندی‌کننده‌ها، کش‌ها و محدودکننده‌های نرخ در Go. برای درک عمیق‌تر همروندی، نوشتار Ankur Anand رفتار و انتخاب‌های درست پیرامون primitives بسته sync مانند Mutex، RWMutex، WaitGroup و Cond را تشریح می‌کند. در پایان، مطلبی از Matheus Mina این مجموعه را کامل می‌کند. حاصل کار، جعبه‌ابزاری عملی برای ساخت عامل‌ها و سرویس‌های پربازده در Python و Go است.

#Go #Python #LLM #StructuredOutput #TimingWheels #Concurrency #Golang #Agents

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


👑 @gopher_academy
2
🔵 عنوان مقاله
Lo v1.52.0: A Lodash-Style Library for Go 1.18+

🟢 خلاصه مقاله:
** Lo v1.52.0 یک کتابخانه سبک Lodash برای Go 1.18+ است که مجموعه‌ای از توابع کمکیِ آماده برای کار با slice و map و سایر کالکشن‌ها را فراهم می‌کند. با تکیه بر generics در Go، این ابزار توابعی مانند Map، Filter، Reduce، GroupBy، Chunk، و عملیات مجموعه‌ای مثل Union و Intersect را به‌صورت type-safe و بدون نیاز به reflection ارائه می‌دهد. هدف آن کاهش کد زائد، ساده‌سازی پردازش داده‌ها، و افزایش خوانایی است؛ به‌طوری‌که بتوان به‌جای حلقه‌های تودرتو، زنجیره‌ای از توابع قابل‌خواندن و کارا نوشت. نسخه v1.52.0 این رویکرد را برای کاربران Go 1.18+ تثبیت کرده و تجربه‌ای روان و کارآمد برای تبدیل و مدیریت کالکشن‌ها فراهم می‌کند.

#Go #Golang #Lo #Lodash #Generics #Go18 #Libraries #FunctionalProgramming

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


👑 @gopher_academy
2
🔵 عنوان مقاله
why, as a gopher, he's excited about Gleam

🟢 خلاصه مقاله:
برای یک توسعه‌دهنده Go، جذابیت Gleam در این است که سادگی و شفافیت Go را با یک سیستم نوع‌دهی قوی و ویژگی‌هایی مثل نبود null، الگو‌تطبیق و داده‌های جبری ترکیب می‌کند، و در عین حال روی Erlang VM (BEAM) اجرا می‌شود تا مزیت فرآیندهای سبک، ارسال پیام و درخت‌های نظارت را به‌صورت ذاتی فراهم کند. این ترکیب برای سرویس‌های همزمان، توزیع‌شده و IO-bound که به تحمل‌پذیری خطا و پایداری نیاز دارند بسیار مناسب است. Gleam با اکوسیستم Erlang/Elixir به‌خوبی سازگار است، به Erlang کامپایل می‌شود و حتی خروجی JavaScript هم دارد، بنابراین می‌توان از کتابخانه‌های جاافتاده استفاده کرد بدون چشم‌پوشی از ایمنی نوعی. ابزارهای توسعه بالغ و کاربرپسند هستند، اما اکوسیستم هنوز جوان است و برای کارهای CPU-bound یا باینری‌های تک‌فایلی سریع، Go همچنان برتری دارد. جمع‌بندی: Go را برای محاسبات سنگین و ابزارها نگه دارید و Gleam را برای سرویس‌های مقاوم و همزمان روی BEAM در نظر بگیرید.

#Gleam #Go #ErlangVM #BEAM #Concurrency #FaultTolerance #FunctionalProgramming #Elixir

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


👑 @gopher_academy
1
🔵 عنوان مقاله
that runs on the Erlang VM.

🟢 خلاصه مقاله:
این مقاله در Golang Weekly به معرفی فناوری‌ای می‌پردازد که روی Erlang VM اجرا می‌شود و برای برنامه‌نویسان Go اهمیت دارد. مقاله مزیت‌های کلیدی Erlang VM مانند فرایندهای سبک، پیام‌رسانی و تحمل خطا را توضیح می‌دهد و آن‌ها را با مدل goroutine و channel در Go مقایسه می‌کند. سپس پیامدهای عملی این تفاوت‌ها را بر مقیاس‌پذیری، تاب‌آوری و تأخیر در سیستم‌های توزیع‌شده، همراه با ملاحظات استقرار، هم‌پیوندی و مشاهده‌پذیری، مرور می‌کند. جمع‌بندی مقاله این است که استفاده از فناوری‌های مبتنی بر Erlang VM می‌تواند برای تیم‌های Go که به دسترس‌پذیری بالا نیاز دارند، مکملی ارزشمند باشد؛ انتخاب نهایی به نیازهای مسئله و تجربه تیم وابسته است.

#ErlangVM #Go #GolangWeekly #Concurrency #DistributedSystems #FaultTolerance #Scalability

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


👑 @gopher_academy
1👍1
🔵 عنوان مقاله
How to Get Started with GitHub Copilot CLI

🟢 خلاصه مقاله:
** این مطلب با راهنمایی‌ای عملی از Andrea Griffiths (GitHub) نشان می‌دهد چگونه با GitHub Copilot CLI شروع کنید تا در ترمینال، درخواست‌های زبانی خود را به دستورات شِل تبدیل کنید، خطاها و فلگ‌های ناشناخته را توضیح بگیرید و سریع‌تر اشکال‌زدایی کنید. روند آغاز کار ساده است: نصب و ورود به GitHub CLI، افزودن افزونه Copilot و بررسی فعال بودن دسترسی Copilot روی حساب GitHub؛ سپس با gh copilot help و دستورات تولید/توضیح فرمان‌ها، می‌توانید قبل از اجرا خروجی‌ها را بررسی کنید تا از ایمنی کار مطمئن شوید. این ابزار روی Bash، Zsh و PowerShell کار می‌کند و برای وظایف روزمره مثل جست‌وجو، مدیریت پردازه‌ها و کار با Git چرخه بازخورد را کوتاه می‌کند.

هم‌زمان، نوشته‌ای از Redowan Delowar درباره Organizing Go Tests پیشنهاد می‌شود که ساختاردهی حرفه‌ای تست‌های Go را مرور می‌کند: کنار هم نگه‌داشتن فایل‌های *_test.go با کد، به‌کارگیری تست‌های جدول‌محور و زیربخش‌ها با t.Run، استفاده از پوشه testdata برای داده‌های تست، همراه با بنچمارک‌ها، مثال‌ها، نام‌گذاری شفاف، گزارش پوشش و اتصال go test به CI. مجموع این توصیه‌ها هم بهره‌وری توسعه را بالا می‌برد و هم کیفیت و قابلیت اعتماد تست‌ها را.

#GitHub #Copilot #CLI #Go #Testing #DeveloperTools #Productivity #DevOps

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Sift: A Lightweight Terminal UI for Displaying Go Test Results

🟢 خلاصه مقاله:
Sift یک رابط کاربری ترمینالی سبک برای نمایش نتایج آزمون‌های Go است. با لوله‌کردن خروجی JSON در حالت verbose به این ابزار، نتایج به نمای قابل‌پیمایش با بخش‌های تاشو تبدیل می‌شوند تا ابتدا روی موارد مهم تمرکز کنید و فقط هنگام نیاز جزئیات را باز کنید. این رویکرد شلوغی خروجی را کم می‌کند، خوانایی را بالا می‌برد و فرایند عیب‌یابی را در همان محیط ترمینال سریع‌تر و ساده‌تر می‌سازد.

#Go #Testing #TUI #CLI #JSON #DeveloperTools #Sift

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


👑 @gopher_academy
1
🔵 عنوان مقاله
Excelize 2.10: A Pure Go Way to Work with Excel Spreadsheets

🟢 خلاصه مقاله:
نسخه 2.10 از Excelize یک کتابخانه پخته و فعال در اکوسیستم Go است که امکان خواندن و نوشتن فایل‌های XLAM، XLSM، XLSX، XLTM و XLTX را به‌صورت مستقیم و بدون وابستگی‌های بومی فراهم می‌کند. به‌دلیل Pure Go بودن، استقرار ساده است، باینری‌ها قابل حمل‌اند و روی Linux، macOS و Windows پایدار اجرا می‌شوند؛ از محیط‌های ابری و container تا serverless و ابزارهای CLI. این کتابخانه ایجاد و ویرایش فایل‌ها، کار با شیت‌ها، سلول‌ها، استایل‌ها و فرمول‌ها را پوشش می‌دهد و با پشتیبانی از مواردی مانند Data Validation، Conditional Formatting، نمودارها و Pivot Table برای ساخت گزارش‌های حرفه‌ای مناسب است. در این نسخه تمرکز بر پایداری، کارایی و سازگاری بهتر با ویژگی‌های مدرن Excel ادامه یافته و Excelize همچنان گزینه‌ای قابل اتکا برای اتوماسیون Excel در پروژه‌های Go به‌شمار می‌آید.

#Excelize #Go #Golang #Excel #Spreadsheets #OpenSource #DataEngineering #Automation

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


👑 @gopher_academy
2🔥1
🔵 عنوان مقاله
A Modern Approach to Preventing CSRF/CORF in Go

🟢 خلاصه مقاله:
این مقاله یک رویکرد مدرن برای مقابله با حملات CSRF/CORF در Go معرفی می‌کند. به‌جای تکیه بر tokens، در Go 1.25 یک middleware به نام http.CrossOriginProtection ارائه شده که با استفاده از سیگنال‌های امنیتی مرورگر (مانند Fetch Metadata و سیاست‌های SameSite) میان درخواست‌های امن هم‌مبداء و درخواست‌های مشکوک بین‌مبداء تفکیک ایجاد می‌کند. این میان‌افزار به‌طور پیش‌فرض درخواست‌های امن را می‌پذیرد و درخواست‌های تغییر‌دهنده حالت از مبداءهای نامطمئن را مسدود می‌کند، درحالی‌که برای مسیرهای ضروری (مثل OAuth callback یا webhook) قابلیت allowlist دارد و با CORS نیز سازگار است. نتیجه، کاهش پیچیدگی پیاده‌سازی CSRF، تکیه بر قابلیت‌های جدید مرورگرها، و استقرار مرحله‌ای (از حالت گزارش تا اعمال) است؛ ضمن اینکه جایگزین احراز هویت و کنترل دسترسی نیست، بلکه مکمل آن‌هاست.

#Go #CSRF #WebSecurity #FetchMetadata #SameSite #Middleware #GoLang #Security

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


👑 @gopher_academy
4
🔵 عنوان مقاله
CPU Cache-Friendly Data Structures in Go: 10x Speed with Same Algorithm

🟢 خلاصه مقاله:
** این مقاله نشان می‌دهد که در Go می‌توان بدون تغییر الگوریتم و فقط با بهینه‌سازی نحوهٔ دسترسی به حافظه، به بهبودهایی تا ۱۰ برابر رسید. ایدهٔ اصلی این است که با بهره‌گیری از محلیّت در CPU و نگه داشتن داده‌های «داغ» در حافظهٔ پیوسته، تعداد cache miss به شدت کم می‌شود. راهکارهای کلیدی شامل استفاده از sliceهای پیوسته به‌جای ساختارهای پر از pointer، فشرده‌سازی و چیدمان درست فیلدهای struct، انتخاب آگاهانه بین AoS و SoA، کاهش تخصیص‌ها و استفاده از sync.Pool برای بازاستفادهٔ حافظه، و اجتناب از false sharing در برنامه‌های همزمان است. اندازه‌گیری با ابزارهای benchmark و pprof کمک می‌کند ببینیم گلوگاه واقعاً از کجاست. نتیجهٔ عملی طبق تجربهٔ Serge Skoredin: با حفظ همان منطق، تنها با طراحی cache‑friendly در Go می‌توان جهش‌های بزرگ کارایی به‌دست آورد.

#Go #Golang #CPUCache #Performance #DataStructures #SystemsProgramming #Optimization #LowLatency

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


👑 @gopher_academy
1🔥1
🔵 عنوان مقاله
15 Go Subtleties You May Not Already Know

🟢 خلاصه مقاله:
این مقاله یک مرور جمع‌وجور و کاربردی از ۱۵ ظرافت کمترشناخته‌شده در Go است؛ نکاتی که معمولاً در بازبینی کد و اشکال‌زدایی مهم می‌شوند. از تفاوت nil در اینترفیس‌ها تا تفاوت گیرنده‌های اشاره‌ای و مقداری، رفتار slice و map، ترتیب پیمایش map و زمان‌بندی و هزینه defer، همگی با مثال‌های کوتاه بیان شده‌اند. بخش‌هایی درباره همزمانی و الگوهای هماهنگی (جلوگیری از نشت goroutine و استفاده درست از context) و نیز ظرایف کار با زمان—از تفاوت زمان یکنواخت و دیواری تا کار با تایمرها، tickerها و بسته time—هم پوشش داده می‌شود. نتیجه: مطلبی سریع و قابل مرور که حتی اگر فقط چند نکته‌اش برایتان تازه باشد، ارزش خواندن دارد؛ و اگر همه را می‌دانید، حس خوبی از تأیید دانسته‌هایتان می‌گیرید.

#Go #Golang #time #Concurrency #ProgrammingTips #SoftwareEngineering #GoTips

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


👑 @gopher_academy
🔵 عنوان مقاله
Go 1.25.3 and 1.24.9 have been released

🟢 خلاصه مقاله:
نسخه‌های Go 1.25.3 و 1.24.9 منتشر شدند. این به‌روزرسانی‌های جزئی، مشکل ایجاد‌شده توسط یک وصله امنیتی قبلی را که هنگام parse کردن X بیش از حد سخت‌گیرانه عمل می‌کرد، برطرف می‌کنند. ویژگی جدیدی اضافه نشده و تغییرات محدود به منطق parse مرتبط با X است. به کاربران شاخه‌های 1.25 و 1.24 توصیه می‌شود برای حفظ سازگاری و امنیت، به این نسخه‌ها ارتقا دهند و پس از ارتقا، تست‌ها را اجرا کنند.

#Go #Golang #Security #Release #Patch #Bugfix #Parsing #Update

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


👑 @gopher_academy
🔵 عنوان مقاله
Goiaba: An Experimental Go Parser and Compiler in Rust

🟢 خلاصه مقاله:
** Goiaba یک پروژه آزمایشی و در حال توسعه است که با Rust نوشته می‌شود تا کد Go را پردازش کرده و خروجی WebAssembly تولید کند؛ هدف اصلی آن یادگیری مباحث ساخت parser و compiler است، نه عرضه یک ابزار آماده تولید. تمرکز پروژه بر شفافیت و درک‌پذیری است، بنابراین پوشش کامل ویژگی‌های Go و کارایی بالا در اولویت نیست و ممکن است بسیاری از بخش‌ها ناقص یا آزمایشی باشند. معماری ماژولار آن برای آزمایش و گسترش آسان طراحی شده و هدف‌گیری WebAssembly امکان اجرا در مرورگرها و زمان‌اجرای سبک را فراهم می‌کند. این پروژه می‌تواند مرجعی آموزشی برای علاقه‌مندان به compiler، parser و ابزارهای WebAssembly باشد و در آینده احتمالاً پوشش زبانی بهتر، تست و مستندسازی بیشتر و بهینه‌سازی‌های پایه را دنبال می‌کند.

#Goiaba #Go #Rust #WebAssembly #Compiler #Parser #ProgrammingLanguages #LearningProject

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


👑 @gopher_academy
2
🔵 عنوان مقاله
AWS Lambda for Go 1.50

🟢 خلاصه مقاله:
این مقاله اعلام می‌کند که AWS Lambda از Go 1.50 پشتیبانی می‌کند و مجموعه‌ای از نمونه‌ها و ابزارها برای ساخت سرویس‌های Serverless ارائه می‌دهد. محورها شامل استفاده از کتابخانه aws-lambda-go، ادغام با رویدادهای Amazon API Gateway، Amazon S3، Amazon DynamoDB و AWS Step Functions، و مشاهده‌پذیری از طریق Amazon CloudWatch و AWS Lambda Powertools for Go است. برای استقرار و اتوماسیون، از AWS SAM، AWS CDK و Serverless Framework استفاده می‌شود؛ تست محلی با AWS SAM CLI و شبیه‌ساز رابط زمان‌اجرا ممکن است، و استقرار هم به‌صورت zip و هم Container Image پشتیبانی می‌شود. نکات عملی شامل ساخت باینری‌های کوچک برای linux/amd64 یا linux/arm64، بهره‌گیری از Lambda Layers، بهینه‌سازی سرداستارت با مقداردهی اولیه سراسری و Provisioned Concurrency، تنظیم بهینه حافظه/CPU، انتخاب arm64 برای کارایی-به‌ازای-هزینه، و مدیریت امن رازها با AWS Secrets Manager یا AWS Systems Manager Parameter Store است؛ همچنین برای مهاجرت از نسخه‌های قبلی Go بر بررسی وابستگی‌ها و تنظیم پرچم‌های ساخت تأکید می‌شود.

#AWS #AWSLambda #Go #Serverless #Cloud #DevOps #InfrastructureAsCode #Observability

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


👑 @gopher_academy
1🔥1
🔵 عنوان مقاله
How Slow is Channel-Based Iteration?

🟢 خلاصه مقاله:
این مقاله پرسش «تکرار مبتنی بر channel در Go چقدر کند است؟» را با یک مثال عملی بررسی می‌کند. تیم Dolt سه الگو را مقایسه کرده است: دو رویکرد مبتنی بر channel و یک روش iterator کشیدنی با iter.Pull. نتیجه کلی این است که هرچند channel‌ها برای هم‌زمانی، مدیریت فشار برگشتی و جداسازی تولیدکننده/مصرف‌کننده عالی‌اند، اما در حلقه‌های محاسباتیِ حساس به کارایی، سربار همگام‌سازی، زمان‌بندی goroutine و تخصیص‌ها محسوس می‌شود. در مقابل، iter.Pull (و حلقه‌های ساده روی داده‌های خطی) معمولاً سبک‌تر و بهینه‌ترند. توصیه نهایی: وقتی به هم‌زمانی واقعی نیاز دارید از channel استفاده کنید؛ برای مسیرهای داغ که فقط پیمایش می‌خواهند، سراغ iterator کشیدنی یا حلقه‌های ساده بروید.

#Go #Golang #Channels #Iteration #Performance #Benchmarking #Concurrency #Dolt

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


👑 @gopher_academy
👍1🔥1
🔵 عنوان مقاله
Writing Better Go: Lessons from 10 Code Reviews

🟢 خلاصه مقاله:
** این اسلایدها با عنوان Writing Better Go: Lessons from 10 Code Reviews حاصل ارائه‌ای از Konrad Reiche در GoLab 2025 است و مجموعه‌ای از الگوهای تکرارشونده در بازبینی‌های واقعی کد را به راهنمایی‌های عملی تبدیل می‌کند. محور اصلی، نوشتن کد ساده و خوانا با Go است: طراحی API‌های کوچک و منسجم، نام‌گذاری دقیق، تعریف interface در محل مصرف، استفاده سنجیده از composition، صفر-مقدارهای مفید، عبور منظم context و پرهیز از وضعیت‌های سراسری.

بخش مهمی از درس‌ها به خطاها و ثبت رویداد می‌پردازد: خطاها را به‌عنوان مقدار مدیریت کنید، با %w زمینه اضافه کنید، از panic فقط برای شکست‌های غیرقابل‌بازیابی در آغاز اجرا بهره ببرید، منابع را با defer جمع کنید، و در کتابخانه‌ها به‌جای لاگ‌کردن، خطا برگردانید تا برنامه اصلی مسئول لاگ باشد.

در همروندی، تأکید بر سادگی و ایمنی است: چرخه عمر goroutine‌ها را صریح کنید، آن‌ها را به context گره بزنید، با select روی context.Done() از نشت جلوگیری کنید، و بسته به مسئله از channel یا ابزارهای sync به‌درستی استفاده کنید. بافرگذاری آگاهانه، مستندسازی قراردادها، و اعمال timeout و backpressure در پایپلاین‌ها ضروری است.

برای کیفیت و کارایی، تست‌های جدول‌محور، پوشش مرزی، fuzzing، اجرای race detector، بنچمارک با testing.B و پروفایل با pprof توصیه می‌شود؛ از بهینه‌سازی زودهنگام بپرهیزید و تغییرات را بر اساس اندازه‌گیری انجام دهید.

در نهایت، فرهنگ بازبینی و ابزارهای خودکار نقش کلیدی دارند: یکدستی با gofmt/goimports، بررسی‌های خودکار با go vet و staticcheck در CI، درخواست‌های کوچک با پیام‌های شفاف و تمرکز بازبینی بر درستی، طراحی و نگهداشت‌پذیری. این چک‌لیست عملی می‌تواند فوراً در تیم‌ها و کدبیس‌های Go به کار گرفته شود.

#Go #Golang #CodeReview #GoLab2025 #SoftwareEngineering #BestPractices #Concurrency #ErrorHandling

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


👑 @gopher_academy
👍1