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
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
#golang #go #tip #tips
https://golang50shad.es
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
👍6🔥2❤1🍾1
for loop in golang in idiomatic way
» output: 0 1 4 9 16 25 36 49 64 81
#go_idiom
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
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👍3 1
🟢Unintended variable shadowing (#1)
🔵Avoiding shadowed variables can help prevent mistakes like referencing the wrong variable or confusing readers.
#tip #go
➖➖➖➖➖➖➖
👑 @gopher_academy
🔵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
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
The GitHub Blog
Go private registry support for Dependabot now generally available - GitHub Changelog
Dependabot can now update private Go modules hosted on enterprise registries and behind GOPROXY-compatible private proxies, as well as public modules, within the same workflow. This enables automated version and…
🔵 عنوان مقاله
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
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
GitHub
GitHub - quaadgras/graphics.gd: Go + Godot 4.5
Go + Godot 4.5. Contribute to quaadgras/graphics.gd development by creating an account on GitHub.
🔥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
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
Dolthub
Go channels to solve interface impedance mismatch
Learn how Go channels can solve a particular form of interface mismatch common in application development.
🔵 عنوان مقاله
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
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
Google Docs
GopherCon 2025 Go Contributor Summit Notes
GopherCon 2025 Go Contributor Summit Notes 2025-08-26 https://go.dev/s/gc25-summit Attendees: Madhav Jivrajani, madhav.jiv@gmail.com Jake Bailey (@jakebailey) Carlos Amedee (@cagedmantis) Filippo Valsorda (@FiloSottile) filippo@golang.org Roxy Light (@zombiezen)…
🔵 عنوان مقاله
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
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
Medium
How to implement the Outbox pattern in Go and Postgres
I was at a ContainerDays conference recently and attended a great talk from Nikolay Kuznetsov about the Outbox pattern and resilient system…
❤2