Gopher Academy
3.33K subscribers
923 photos
40 videos
280 files
2.07K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
📚 فصل اول کتاب زبان برنامه نویسی گو فارسی تمام شد

مفتخریم فصل اول کتاب را تمام کردیم و در کنار این فصل ما یکسری امکانات دیگری به کتاب اضافه کردیم تا در هر شرایطی به کتاب دسترسی داشته باشید.

🚀 ویژگی های جدید :
- اپلیکیشن آفلاین و آنلاین برای انواع پلت فرم های دسکتاپ و موبایل
- ایمیج داکر برای اندازی کانتینر کتاب برای دسترسی آفلاین
- سرورهای مختلف برای دسترسی کتاب
- تکمیل فصل اول

توجه : فصل دوم هم اکنون شروع شده و هنوزم دیر نشده برای اینکه به جمع مشارکت کنندگان بپیوندید.

- https://book.gofarsi.ir
- https://book.ir1.gofarsi.ir
- https://ipfs-book.gofarsi.ir
- https://book.m1.gofarsi.ir
- https://book.m2.gofarsi.ir

مخزن کتاب : https://github.com/GoFarsi/book
لینک مشارکت : https://github.com/GoFarsi/book/blob/main/COUNTRIBUTING.md

#go #golang


🔰 @gopher_academy
🕊11👍3🍾31
Free class remote about writing smart contracts in golang by William Kennedy.

Limited time for register

🔗 https://www.ardanlabs.com/live-training-events/smart-contracts-with-go-feb-13-2023.html

#go #blockchain


🔰 @gopher_academy
👀4👍3🤩1🍌1
Go Programming Language For Dummies - DevTwitter.pdf
12.5 MB
#Go

Go Programming Language For Dummies

- By Wei-Meng Lee
- 339 Pages


🕊 @gopher_academy
👍3🕊1
Go With The Domain - DevTwitter.pdf
21.1 MB
#Go

Go With The Domain
Building Modern Business Software in Go

- By Robert Laszczak and Milosz Smolka
- 221 Pages


🕊 @gopher_academy
🍾4🔥2💊1
۵۰ نکته برای کسانی که قصد یادگیری زبان برنامه‌نویسی Go را دارند.

#golang #go #tip #tips

https://golang50shad.es


🕊 @gopher_academy | @GolangEngineers
👍6🔥21🍾1
for loop in golang in idiomatic way

func main() {
i := 0
for ok := true; ok; ok = (i != 10) {
fmt.Print(i*i, " ")
i++
}
}

» output: 0 1 4 9 16 25 36 49 64 81
#go_idiom

🕊 @gopher_academy | @GolangEngineers
👍3
package main

import "fmt"

func main() {
var values = []string{"1", "2", "3", "4", "5"}
for _, value := range values[1:] {
fmt.Println(value)
}
}

ایجاد و استفاده از حلقه for range در زبان گولنگ و همچنین محدود کردن slice مورد نظر آن به کمک اندیس ها

#go_idiom

🕊 @gopher_academy | @GolangEngineers
🍾5👍31
🟢Unintended variable shadowing (#1)

🔵Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.

#tip #go

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