Gopher Academy
3.33K subscribers
921 photos
40 videos
280 files
2.06K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
GitHub's Dependabot now supports

🟢 خلاصه مقاله:
** GitHub قابلیت جدیدی به Dependabot اضافه کرده تا اکنون بتواند Go modules را از private registries نیز به‌صورت خودکار به‌روزرسانی کند. این تغییر برای تیم‌هایی که ترکیبی از پکیج‌های عمومی و داخلی دارند مهم است، چون دیگر مدیریت نسخه‌های داخلی دستی یا با ابزارهای سفارشی انجام نمی‌شود و کل گراف وابستگی‌ها پوشش داده می‌شود. با پیکربندی dependabot.yml و افزودن اطلاعات دسترسی به رجیستری خصوصی، Dependabot می‌تواند برای به‌روزرسانی‌ها Pull Request بسازد و انتشار وصله‌های امنیتی را به کدهای وابسته تسهیل کند. Blake Gentry جزئیات پیکربندی، نمونه‌ها و نکات رفع اشکال را نیز توضیح می‌دهد.

#Dependabot #GitHub #Go #Golang #PrivateRegistry #DependencyManagement #SoftwareSupplyChain #Security

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


👑 @gopher_academy
🔵 عنوان مقاله
graphics.gd: Use Go with the Godot Game Engine

🟢 خلاصه مقاله:
اGodot یک موتور محبوب برای ساخت بازی‌های 2D و 3D است و با وجود شباهت نام، ربطی به Go ندارد. پروژه graphics.gd پلی میان این دو می‌زند: یک لایه runtime و ابزار فراهم می‌کند تا بتوانید منطق بازی و اپ را با Go بنویسید و هم‌زمان از امکانات و گردش‌کار Godot بهره ببرید. این رویکرد، ویژگی‌های کراس‌پلتفرم Godot را حفظ می‌کند و اکنون حتی امکان ساخت اپ‌های iOS با Go را نیز فراهم کرده است. نتیجه، مسیری عملی برای توسعه‌دهندگان Go و کاربران Godot است که می‌خواهند کدنویسی را با Go انجام دهند بی‌آن‌که از مزیت‌های خود Godot چشم‌پوشی کنند.

#Go #Godot #Golang #GameDev #iOS #Bindings #CrossPlatform #OpenSource

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


👑 @gopher_academy
🔥1
🔵 عنوان مقاله
Using Go Channels to Solve Interface Impedance Mismatch

🟢 خلاصه مقاله:
استفاده از Go Channels برای رفع ناسازگاری بین رابط‌ها
این یادداشت نشان می‌دهد که چگونه می‌توان از Go Channels نه برای همزمانی، بلکه به‌عنوان یک لایه تطبیق سبک استفاده کرد. Zach Musgrave توضیح می‌دهد که در مواجهه با “interface impedance mismatch”—جایی که یک API داده را به‌صورت push می‌دهد و دیگری آن را به‌صورت pull مصرف می‌کند، یا یکی جریان‌محور است و دیگری تکرارشونده—یک Channel می‌تواند به‌عنوان بافری خنثی، این دو جهان را بدون تغییرات اساسی در کد به هم متصل کند. در این الگو، تولیدکننده در همان جریان اجرای عادی داده‌ها را داخل Channel می‌گذارد و مصرف‌کننده با الگوی خواندن رایج از روی Channel آن‌ها را برمی‌دارد؛ نیازی به goroutine یا معماری همزمانی پیچیده نیست. مزیت‌ها شامل جداسازی بهتر، ساده‌سازی تبدیل بین رابط‌ها، و تست‌پذیری بالاتر است؛ با این احتیاط‌ها که اندازه بافر معقول انتخاب شود و استفاده غیرهمزمانی از Channel به‌وضوح مستند گردد. پیام اصلی: Channels فقط برای همزمانی نیستند؛ آن‌ها یک واسط ترکیبی مفید برای آشتی دادن APIها—به‌ویژه در تبدیل push/pull و جریان/تکرار—هستند.

#Go #Golang #Channels #APIDesign #InterfaceImpedanceMismatch #SoftwareEngineering #DesignPatterns #GoTips

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


👑 @gopher_academy
🔵 عنوان مقاله
GopherCon 2025 Go Contributor Summit Notes

🟢 خلاصه مقاله:
در GopherCon 2025 جمع زیادی از مشارکت‌کنندگان Go گرد هم آمدند و درباره مدیریت وابستگی‌ها، روند بررسی و پذیرش پیشنهادهای زبانی، کارایی و الگوهای بهینه در cgo، امنیت و پیاده‌سازی WebAuthn، وضعیت فازینگ و پوشش تست، و هدف‌گیری WebAssembly (و حتی به‌صورت گذرا JVM) گفتگو کردند. محورهای اصلی شامل بهبود reproducible builds و امنیت در اکوسیستم ماژول‌ها، شفاف‌تر و کارآمدتر شدن فرآیند پروپوزال‌ها با درس‌آموخته‌های generics و حفظ سازگاری عقب‌رو، کاهش سربار مرز Go/C در cgo، بلوغ فازینگ و پوشش در CI، و چالش‌های Wasm/WASI مانند اندازه باینری، زمان راه‌اندازی و async بود. هرچند یادداشت‌ها خام‌اند، اما جهت‌گیری‌ها، اولویت‌ها و سوالات باز را روشن می‌کنند و انتظار می‌رود با مسائل پیگیری، اسناد طراحی و دعوت به بازخورد از سوی جامعه ادامه یابد.

#Go #GopherCon #cgo #WebAuthn #WebAssembly #Fuzzing #DependencyManagement #OpenSource

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


👑 @gopher_academy
🔵 عنوان مقاله
How to Implement the Outbox Pattern in Go and Postgres

🟢 خلاصه مقاله:
** این مقاله توضیح می‌دهد چگونه با الگوی Outbox در کنار Go و Postgres، مشکل دو‌نوشتن را حل کنیم و ارسال رویدادها را قابل‌اعتماد کنیم. ایده اصلی این است که در یک تراکنش واحد، هم تغییرات دامنه و هم رکورد مربوط به رویداد در جدول outbox ذخیره شود تا یا هر دو باهم انجام شوند یا هیچ‌کدام. سپس یک پردازشگر پس‌زمینه رکوردهای معوق را با SELECT … FOR UPDATE SKIP LOCKED برداشته، آن‌ها را به سامانه‌ای مثل Kafka یا RabbitMQ یا یک وب‌هوک ارسال می‌کند و وضعیت‌شان را به processed تغییر می‌دهد.

نکات کلیدی پیاده‌سازی شامل: طراحی جدول outbox با فیلدهایی مانند type، payload (معمولاً JSON)، status، retry_count و زمان‌ها؛ پوشش هر دو عملیات (نوشتن دامنه و درج outbox) در یک تراکنش؛ پیاده‌سازی worker در Go برای برداشت دسته‌ای، ارسال، ثبت موفقیت/خطا و بازآزمایی با backoff؛ تکیه بر تحویل حداقل-یک‌بار همراه با مصرف‌کننده‌های idempotent برای مدیریت تکرار؛ و پایش شاخص‌هایی مثل تأخیر برداشت و نرخ شکست. برای بهینگی عملیاتی، پاکسازی دوره‌ای رکوردهای پردازش‌شده، ایندکس‌گذاری مناسب، رسیدگی به پیام‌های مشکل‌دار (dead-letter) و حفظ ترتیب رویدادها در سطح aggregate ضروری است. ترکیب polling با LISTEN/NOTIFY در Postgres می‌تواند زمان واکنش را بهتر کند. نتیجه، راهکاری ساده و مقیاس‌پذیر است که بدون تراکنش‌های توزیع‌شده، قابلیت اتکا را در معماری رویدادمحور فراهم می‌کند.

#OutboxPattern #Go #Postgres #Microservices #EventDriven #TransactionalOutbox #Messaging #Reliability

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


👑 @gopher_academy
2
🔵 عنوان مقاله
It's Survey Time! The 2025 Go Developer Survey is Live

🟢 خلاصه مقاله:
** نظرسنجی 2025 Go Developer Survey آغاز شده و Go team طبق روال دوره‌ای برای تعیین اولویت‌های بعدی از جامعه بازخورد می‌گیرد. این نظرسنجی به تصمیم‌ها درباره زبان، ابزارها، مستندات و اکوسیستم کمک می‌کند. مهلت شرکت کوتاه است و تا September 30 ادامه دارد—اگر با Go کار می‌کنید یا به آن علاقه‌مندید، همین حالا مشارکت کنید و خبرش را به دیگران هم برسانید.

#Go #Golang #DeveloperSurvey #GoCommunity #2025 #Programming #OpenSource #DevTools

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


👑 @gopher_academy
4
🔵 عنوان مقاله
Memory Allocation in Go

🟢 خلاصه مقاله:
مدیریت و تخصیص کارای حافظه، پایه‌ی عملکرد و پایداری برنامه‌های Go است. این مقاله با مجموعه‌ای از نمودارهای روشن، پشت‌پرده‌ی تخصیص حافظه در Go را شرح می‌دهد: از نحوه‌ی درخواست حافظه از سیستم‌عامل و سازمان‌دهی آن در runtime تا تعامل آن با garbage collector و تأثیر الگوهای تخصیص بر فشار GC، تأخیر و کارایی. هدف مقاله ایجاد یک مدل ذهنی عملی است تا—even با تکیه بر پیش‌فرض‌های منطقی Go—بتوانید بهتر پروفایل‌ها را بخوانید، درباره‌ی تأخیر نتیجه‌گیری کنید و از تله‌های رایج عملکردی دور بمانید.

#Go #Golang #MemoryManagement #GarbageCollection #Performance #GoRuntime #SystemsProgramming

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


👑 @gopher_academy
🔥3
🔵 عنوان مقاله
Google Gen AI Go SDK v1.25.0

🟢 خلاصه مقاله: ا
اSDK جدید Google Gen AI Go SDK v1.25.0 یک کتابخانه آماده‌ٔ تولید است که ادغام مدل‌های مولد Google مثل Gemini را از طریق Gemini API و Vertex AI در برنامه‌های نوشته‌شده با Go آسان می‌کند. این SDK احراز هویت با API key یا Google Cloud credentials، انتخاب مدل، مدیریت prompt و پاسخ، استریم خروجی، تنظیمات ایمنی و دستورالعمل‌های سیستمی را ساده می‌سازد و با الگوهای رایج Go مثل context.Context سازگار است. برای ساخت دستیارهای گفتگو، تولید محتوا و کد، خلاصه‌سازی و پرسش‌وپاسخ روی اسناد کاربرد دارد. نسخه v1.25.0 بهبودهای پایداری و کارایی و تجربهٔ توسعه‌دهنده را ارائه می‌دهد و با نسخه‌های جدید Gemini و کاتالوگ Vertex AI همسو شده است؛ برای جزئیات، مراجعه به release notes توصیه می‌شود.

#Go #Golang #GenerativeAI #Google #Gemini #VertexAI #SDK #AIIntegration

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


👑 @gopher_academy
2🔥1
🔵 عنوان مقاله
Observe Live SQL Queries in Go with DTrace

🟢 خلاصه مقاله:
این مطلب از Golang Weekly نشان می‌دهد چطور با استفاده از DTrace بدون تغییر کد و توقف سرویس، کوئری‌های SQL را در برنامه‌های Go به‌صورت زنده مشاهده کنیم. نویسنده با معرفی کوتاهی از DTrace به‌عنوان یک ابزار ردیابی پویا و کم‌سربار، قدم‌به‌قدم نحوه راه‌اندازی روی سیستم‌عامل‌های پشتیبانی‌شده، اتصال به پردازه در حال اجرا و نوشتن اسکریپت‌های ساده برای دیدن متن کوئری، زمان اجرا و الگوهای فراوانی را توضیح می‌دهد؛ همراه با فیلترگذاری برای محدود کردن خروجی به سرویس/کاربر/درایور موردنظر و نکاتی برای حفظ سربار کم.

کاربرد این روش، عیب‌یابی سریع مسائلی مثل کوئری‌های کند، الگوهای N+1، شاخص‌های مفقود و ORM پرحرف در شرایط واقعی تولید است. این رویکرد مکمل لاگ‌ها و APM است و امکان تشخیص فوری و تأیید سریع اصلاحات را می‌دهد. در بخش ملاحظات، به تفاوت پشتیبانی پلتفرم‌ها (مثل FreeBSD و برخی نسخه‌های macOS؛ و پیشنهاد eBPF روی Linux)، نیاز به دسترسی‌های بالا، حساسیت داده‌های متنی کوئری و ضرورت سنجش سربار در محیط staging اشاره می‌شود.

#Go #DTrace #SQL #Observability #Performance #GolangWeekly #eBPF #Database

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


👑 @gopher_academy
🔥2
🔵 عنوان مقاله
Building a Simple Stack-Based Virtual Machine in Go

🟢 خلاصه مقاله:
** این مقاله از Phakorn Kiong با یک نمونه عملی نشان می‌دهد چگونه در Go یک VM ساده مبتنی بر Stack بسازیم. هسته سیستم شامل bytecode، یک instruction pointer، یک stack برای داده‌ها و چند opcode پایه مثل PUSH، POP، ADD، SUB، MUL، DIV، PRINT و HALT است. اجرای برنامه به‌صورت حلقه fetch–decode–execute انجام می‌شود؛ هر opcode خوانده می‌شود، عمل مربوط روی stack اجرا می‌گردد و IP جلو می‌رود. قالب bytecode ساده است و مقادیر یا به‌صورت فوری یا از یک constant pool خوانده می‌شوند. برای پایداری، کنترل خطاهایی مثل stack underflow/overflow و division by zero در نظر گرفته شده است. نمونه‌هایی مثل محاسبه و چاپ 2*(3+4) برای تست آورده می‌شود و می‌توان یک assembler کوچک برای تولید bytecode اضافه کرد. مسیرهای توسعه شامل کنترل جریان (JMP/JZ)، مقایسه‌ها (EQ/LT/GT)، متغیرها با LOAD/STORE، و توابع با CALL/RET است؛ همچنین ابزارهایی مانند tracer، disassembler، REPL و تست‌ها پیشنهاد می‌شوند. هدف مقاله آموزشی است و “Here’s the code” کد کامل و خوانا را برای شروع و گسترش فراهم می‌کند.

#Go #Golang #VirtualMachine #StackVM #Bytecode #Interpreter #Compiler #SystemsProgramming

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


👑 @gopher_academy
1
🔵 عنوان مقاله
explains more, including why this matters.

🟢 خلاصه مقاله:
آخرین شماره Golang Weekly مقاله‌ای دارد که یک موضوع به‌روز در اکوسیستم Go را با زمینه‌سازی روشن و کاربردی شرح می‌دهد: چرا اکنون مهم است، چه مزایا و ملاحظاتی دارد و چه بده‌بستان‌هایی پیشِ‌روست. با توضیح‌های فشرده و مثال‌های قابل اتکا، الگوهای مناسب تولید، خطاهای رایج و مسیرهای مهاجرت برای سرویس‌ها و کتابخانه‌ها را نشان می‌دهد. همچنین به پیامدهای معمول چنین تغییراتی بر modules، مدیریت وابستگی، CI، راهبرد تست، بنچ‌مارک و پروفایلینگ می‌پردازد و راهکارهایی برای کاهش ریسک و سازگاری پیشنهاد می‌کند. در پایان، اثر آن بر جامعه و تیم‌ها را جمع‌بندی کرده و منابع تکمیلی برای مطالعه بیش‌تر معرفی می‌کند؛ نکاتی عملی، چه برای بک‌اند‌های پُرترافیک و چه برای CLIهای کوچک.

#Go #Golang #GolangWeekly #SoftwareEngineering #Backend #DevOps #Performance #Concurrency

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


👑 @gopher_academy
👍1🔥1
🔵 عنوان مقاله
Why I Ditched Docker for Podman (And You Should Too)

🟢 خلاصه مقاله:
مهاجرت از Docker به Podman برای من بیشتر یک انتخاب عملی بود تا بحث سلیقه؛ به‌ویژه در جریان‌های کاری مرتبط با Go که در Golang Weekly هم زیاد دیده می‌شود. دلیل اصلی، معماری ساده‌تر و امن‌تر Podman است: بدون daemon و با اجرای rootless به‌صورت پیش‌فرض، پس سطح حمله و دردسرهای دسترسی کاهش می‌یابد و سرویس پرامتیازِ دائمی لازم نیست. مهاجرت هم کم‌اصطکاک است؛ چون Podman با CLI و فرمت OCI سازگار است و دستورات رایج مثل podman build/run عملاً جایگزین مستقیم می‌شوند. برای Compose، ابزار Podman Compose و برای رابط گرافیکی، Podman Desktop وجود دارد؛ روی macOS و Windows هم podman machine تجربه‌ای سبک و قابل‌اتکا می‌دهد. ادغام بومی با systemd، مدیریت لاگ‌ها و قابلیت‌هایی مثل pods و podman generate kube، راه را برای استفاده در CI/CD و حتی انتقال به Kubernetes هموار می‌کند. در پروژه‌های Go، ساخت چندمرحله‌ای، ایمیج‌های کم‌حجم، و mountهای rootless بدون مشکل دسترسی، چرخه توسعه و تست را سریع و قابل‌اعتماد می‌کند. هرچند تفاوت‌هایی مثل مسیر socket و جزئیات volumes نسبت به Docker وجود دارد، اما راهکارهای روشن و مستندی برایشان هست. نتیجه: اگر Docker جواب‌گو است، خوب؛ اما Podman در اکثر سناریوهای روزمره توسعه و CI تجربه‌ای امن‌تر، ساده‌تر و سازگار ارائه می‌دهد.

#Podman #Docker #Containers #DevOps #Go #GolangWeekly #Kubernetes #Security

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


👑 @gopher_academy
3
🔵 عنوان مقاله
How Fast is Go? Simulating Millions of Particles on a Smart TV

🟢 خلاصه مقاله:
این مقاله با اجرای یک شبیه‌سازی بزرگ روی یک Smart TV نشان می‌دهد Go در عمل چقدر سریع است. نتیجه اصلی: شبیه‌سازی ۲.۵ میلیون ذره با نرخ ۶۰ فریم‌برثانیه و هم‌زمان ارسال داده با ۳۰ فریم‌برثانیه به بیش از ۳۰۰ کلاینت (و احتمالاً تا حدود هزار) ممکن شده است. ترکیب کار محاسباتی سنگین و ارسال شبکه هم‌زمان، توان Go در مدیریت بارهای بلادرنگ و استفاده مؤثر از همزمانی را نشان می‌دهد. با بهینه‌سازی تخصیص حافظه و استفاده از الگوهای همزمانی Go، تأثیر GC کم و تأخیر قابل‌پیش‌بینی باقی مانده و سیستم روی دستگاهی محدود مثل Smart TV نیز پایدار عمل می‌کند.

#Go #Golang #Performance #Concurrency #RealTime #SmartTV #Simulation #Scalability

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


👑 @gopher_academy
🍾22