🔴قابلیت Synthetic time for testing ویژگی های جدید گولنگ نسخه 1.25
⏱️ چی هست این Synthetic Time؟
قطعهای از کد که زمان واقعی (real-time) استفاده میکنه—مثلاً `time.Sleep(60*time.Second)`—در تست، باعث میشه نتایج:
* کند (شصت ثانیهای وسط تست منتظر شیم؟!)
* غیرقابل اعتماد (وابسته به scheduler واقعی و بار سیستم)
این ویژگی
---
🔧 نحوه استفاده با مثال
مثال تابع با تأخیر و timeout:
تست timeout بدون معطلی:
در این تست:
* تابع درون
*این clock از جنس مصنوعیه؛ بدون انتظار، بعد از بلاک شدن goroutine روی select، زمان مصنوعی ۶۰ ثانیه جلو میره و timeout فعال میشه—امتحان با سرعت و قابل اعتماد
---
⚙️ قابلیت
این متد اجازه میده تا:
1. کدی با goroutine اجرا بشه،
2. منتظر بشیم همه goroutineها بلاک بشن،
3. سپس دقیقاً بررسی انجام بشه،
4. و ادامهٔ تست.
مثل این مثال:
این تضمین میکنه که قبل از ادامه تست، همه goroutineها به نقطهٔ بلاک رسیده باشن
---
✅ جمعبندی & پیشنهاد
*این Go 1.25 با
* فقط کافیه تابع تست رو داخل
*این
* ویژگی در نسخه RC هست و باید ویژگی
➖➖➖➖➖➖➖➖
👑 @gopher_academy
⏱️ چی هست این Synthetic Time؟
قطعهای از کد که زمان واقعی (real-time) استفاده میکنه—مثلاً `time.Sleep(60*time.Second)`—در تست، باعث میشه نتایج:
* کند (شصت ثانیهای وسط تست منتظر شیم؟!)
* غیرقابل اعتماد (وابسته به scheduler واقعی و بار سیستم)
این ویژگی
testing/synctest
این مشکل رو با فراهم کردن یک "زمان مصنوعی" حل میکنه—زمان فقط وقتی جلو میره که goroutineها بلاک بشن، و همه چی بلافاصله و به صورت دترمینیستیک اجرا میشه ---
🔧 نحوه استفاده با مثال
مثال تابع با تأخیر و timeout:
func Read(in chan int) (int, error) {
select {
case v := <-in:
return v, nil
case <-time.After(60 * time.Second):
return 0, fmt.Errorf("timeout")
}
}
تست timeout بدون معطلی:
import "testing/synctest"
func TestReadTimeout(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
ch := make(chan int)
_, err := Read(ch)
if err == nil {
t.Fatal("expected timeout, got nil")
}
})
}
در این تست:
* تابع درون
synctest.Test
اجرا میشه.*این clock از جنس مصنوعیه؛ بدون انتظار، بعد از بلاک شدن goroutine روی select، زمان مصنوعی ۶۰ ثانیه جلو میره و timeout فعال میشه—امتحان با سرعت و قابل اعتماد
---
⚙️ قابلیت
synctest.Wait()
این متد اجازه میده تا:
1. کدی با goroutine اجرا بشه،
2. منتظر بشیم همه goroutineها بلاک بشن،
3. سپس دقیقاً بررسی انجام بشه،
4. و ادامهٔ تست.
مثل این مثال:
func TestWait(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
done := make(chan struct{})
go func() {
time.Sleep(time.Second)
close(done)
}()
synctest.Wait()
<-done
})
}
این تضمین میکنه که قبل از ادامه تست، همه goroutineها به نقطهٔ بلاک رسیده باشن
---
✅ جمعبندی & پیشنهاد
*این Go 1.25 با
testing/synctest
تست زمانمحور و همزمان را سریع، مطمئن و ساده میکند.* فقط کافیه تابع تست رو داخل
synctest.Test
(یا Run
) بنویسید.*این
Wait()
هم برای سناریوهای چندgoroutine مفیده.* ویژگی در نسخه RC هست و باید ویژگی
GOEXPERIMENT=synctest
رو هنگام اجرای go test
فعال کنید➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤3👍3🔥1🍾1
🔵 عنوان مقاله
Charm Fang: A CLI Starter Kit for Cobra Apps
🟢 خلاصه مقاله:
انتشار جدید Charm همیشه مورد توجه توسعه دهندگان قرار میگیرد، زیرا آنها کتابخانههای فوقالعاده و خوب طراحی شدهای ایجاد میکنند. فنگ، که یک لایه افزوده به فریمورک کبرا است، امکانات جدیدی مانند خروجیها و پیامهای خطای بهبود یافته، صفحات راهنما، پشتیبانی از تکمیل خودکار دستورات، و دیگر بهبودیهای کاربری برای برنامههای کاربری خط فرمان (CLI) اضافه میکند. از آنجایی که فنگ جدید است، فعلاً مستندات آن محدود است، اما کد نمونهای که ارائه شده راهنمایی مفیدی برای استفاده بهینه از این امکانات جدید فراهم میکند.
🟣لینک مقاله:
https://golangweekly.com/link/170940/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Charm Fang: A CLI Starter Kit for Cobra Apps
🟢 خلاصه مقاله:
انتشار جدید Charm همیشه مورد توجه توسعه دهندگان قرار میگیرد، زیرا آنها کتابخانههای فوقالعاده و خوب طراحی شدهای ایجاد میکنند. فنگ، که یک لایه افزوده به فریمورک کبرا است، امکانات جدیدی مانند خروجیها و پیامهای خطای بهبود یافته، صفحات راهنما، پشتیبانی از تکمیل خودکار دستورات، و دیگر بهبودیهای کاربری برای برنامههای کاربری خط فرمان (CLI) اضافه میکند. از آنجایی که فنگ جدید است، فعلاً مستندات آن محدود است، اما کد نمونهای که ارائه شده راهنمایی مفیدی برای استفاده بهینه از این امکانات جدید فراهم میکند.
🟣لینک مقاله:
https://golangweekly.com/link/170940/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - charmbracelet/fang: The CLI starter kit
The CLI starter kit. Contribute to charmbracelet/fang development by creating an account on GitHub.
👍2
🔵 عنوان مقاله
Eliminating Dead Code in Go Projects
🟢 خلاصه مقاله:
در سال 2023، تیم توسعهدهنده زبان برنامهنویسی Go ابزاری بنام "deadcode tool" را منتشر کرد که به شناسایی کدهای غیرقابل دسترس یا مرده در پروژههای نرمافزاری کمک میکند. این ابزار با اسکن کدهای Go، قسمتهایی که هرگز اجرا نمیشوند را شناسایی کرده و به توسعهدهندگان در حذف آنها کمک میکند. استفاده از این ابزار موجب بهبود عملکرد و خوانایی برنامهها شده و بازخورد مثبتی از جامعه توسعهدهندگان دریافت کرده است. این ابزار همچنین در بهینهسازی سیستمهای قدیمی و در زمان بازنویسیهای اساسی بسیار مفید است.
🟣لینک مقاله:
https://golangweekly.com/link/170933/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Eliminating Dead Code in Go Projects
🟢 خلاصه مقاله:
در سال 2023، تیم توسعهدهنده زبان برنامهنویسی Go ابزاری بنام "deadcode tool" را منتشر کرد که به شناسایی کدهای غیرقابل دسترس یا مرده در پروژههای نرمافزاری کمک میکند. این ابزار با اسکن کدهای Go، قسمتهایی که هرگز اجرا نمیشوند را شناسایی کرده و به توسعهدهندگان در حذف آنها کمک میکند. استفاده از این ابزار موجب بهبود عملکرد و خوانایی برنامهها شده و بازخورد مثبتی از جامعه توسعهدهندگان دریافت کرده است. این ابزار همچنین در بهینهسازی سیستمهای قدیمی و در زمان بازنویسیهای اساسی بسیار مفید است.
🟣لینک مقاله:
https://golangweekly.com/link/170933/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
mfbmina.dev
Eliminating dead code in Go projects
As the software we work on grows, the code tends to undergo various changes and refactorings. During this process, we might simply forget pieces of code that were once used but no longer make sense in …
❤3
Gopher Academy
🔴قابلیت Synthetic time for testing ویژگی های جدید گولنگ نسخه 1.25 ⏱️ چی هست این Synthetic Time؟ قطعهای از کد که زمان واقعی (real-time) استفاده میکنه—مثلاً `time.Sleep(60*time.Second)`—در تست، باعث میشه نتایج: * کند (شصت ثانیهای وسط تست منتظر شیم؟!)…
🔴قابلیت json/v2 ویژگی های جدید گولنگ نسخه 1.25
در Go 1.25، بستهٔ `json/v2` (همراه با
یک نسخهٔ اساسی و پیشرفتهتر نسبت به
🔑 مزایای کلیدی
1. انعطافپذیری در Marshal/Unmarshal
* دیگر محدود به یک رفتار یکنواخت نیستید؛ با
2. افزایش قابلتوجه در سرعت
* بهویژه در عملیات خواندن (unmarshal)، تا ۱۰ برابر سریعتر از نسخهٔ فعلی گزارش شده است .
3. این API جدید برای تولید و مصرف جریانهای داده
* امکان مستقیم خواندن از
4. ویژگیهای جدید همچون برچسبهای سفارشی و رفتار پیشفرض بهبود یافته
* امکانات گستردهای برای تنظیم سفارشی JSON وجود دارد (برچسبها، inlining، skip کردن فیلدها و غیره) .
✨ یک مثال مفهومی
فرض کنید میخواهید برای بولینها (
در این مثال:
*
*
* و رشتهٔ
📌 وضعیت کنونی و توصیهها
*این Experimental: این ویژگی آزمایشی است و باید با
* نسخه فعلی
* توصیه شده: پروژههایی که وابسته به عملکرد JSON هستند، با فعالسازی این flag تست شوند تا مشکلات ناسازگاری احتمالی شناسایی شود .
---
✅ جمعبندی
*این
* با قابلیتهایی مانند سفارشیسازی عمیق Marshal/Unmarshal و I/O مستقیم همراه است.
* هنوز آزمایشیست؛ اگر پروژهای دارید که نیاز به performance یا JSON پیچیدهتری دارد، توصیه میشود با
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در Go 1.25، بستهٔ `json/v2` (همراه با
jsontext
) معرفی شده استیک نسخهٔ اساسی و پیشرفتهتر نسبت به
encoding/json
قبلی که با فعالسازی آزمایشی از طریق متغیر محیطی GOEXPERIMENT=jsonv2
کار میکند 🔑 مزایای کلیدی
json/v2
1. انعطافپذیری در Marshal/Unmarshal
* دیگر محدود به یک رفتار یکنواخت نیستید؛ با
MarshalToFunc
و UnmarshalFromFunc
میتوانید رفتار سفارشی خود را برای هر نوع داده بنویسید 2. افزایش قابلتوجه در سرعت
* بهویژه در عملیات خواندن (unmarshal)، تا ۱۰ برابر سریعتر از نسخهٔ فعلی گزارش شده است .
3. این API جدید برای تولید و مصرف جریانهای داده
* امکان مستقیم خواندن از
io.Reader
و نوشتن به io.Writer
فراهم شده (MarshalWrite
, UnmarshalRead
) بدون نیاز به شیء Encoder/Decoder جداگانه.4. ویژگیهای جدید همچون برچسبهای سفارشی و رفتار پیشفرض بهبود یافته
* امکانات گستردهای برای تنظیم سفارشی JSON وجود دارد (برچسبها، inlining، skip کردن فیلدها و غیره) .
✨ یک مثال مفهومی
فرض کنید میخواهید برای بولینها (
bool
) بهجای true
/false
از کاراکترهای ویژه مثل ✓
و ✗
استفاده کنید.import (
"fmt"
"encoding/json/v2"
"encoding/json/v2/jsontext"
)
// Marshal custom برای bool:
boolMarshaler := json.MarshalToFunc(
func(enc *jsontext.Encoder, val bool) error {
if val {
return enc.WriteToken(jsontext.String("✓"))
}
return enc.WriteToken(jsontext.String("✗"))
},
)
// Marshal برای stringهای شبیه bool:
strMarshaler := json.MarshalToFunc(
func(enc *jsontext.Encoder, val string) error {
if val == "on" || val == "true" {
return enc.WriteToken(jsontext.String("✓"))
}
if val == "off" || val == "false" {
return enc.WriteToken(jsontext.String("✗"))
}
return json.SkipFunc
},
)
marshalers := json.JoinMarshalers(boolMarshaler, strMarshaler)
vals := []any{true, "off", "hello"}
data, err := json.Marshal(vals, json.WithMarshalers(marshalers))
fmt.Println(string(data), err)
// خروجی: ["✓","✗","hello"]
در این مثال:
*
true
به ✓
*
"off"
به ✗
* و رشتهٔ
"hello"
به حالت پیشفرض تبدیل میشود 📌 وضعیت کنونی و توصیهها
*این Experimental: این ویژگی آزمایشی است و باید با
GOEXPERIMENT=jsonv2
فعال شود* نسخه فعلی
encoding/json
وقتی flag فعال باشد از json/v2
استفاده میکند و عملکرد قدیمی حفظ شده تا سازگاری کامل برقرار شود ([github.com][5]).* توصیه شده: پروژههایی که وابسته به عملکرد JSON هستند، با فعالسازی این flag تست شوند تا مشکلات ناسازگاری احتمالی شناسایی شود .
---
✅ جمعبندی
*این
json/v2
در Go 1.25 یک نسخهی کاملاً بازطراحیشده است: سریعتر، انعطافپذیرتر و پیشرفتهتر.* با قابلیتهایی مانند سفارشیسازی عمیق Marshal/Unmarshal و I/O مستقیم همراه است.
* هنوز آزمایشیست؛ اگر پروژهای دارید که نیاز به performance یا JSON پیچیدهتری دارد، توصیه میشود با
GOEXPERIMENT=jsonv2
امتحانش کنید.➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔥7👍3❤1
🔵 عنوان مقاله
BillionMail 3.0: Open Source Email Marketing Platform
🟢 خلاصه مقاله:
مقاله به بررسی یک سرویس سرور ایمیل و ارسال نامهخبری/ایمیل میپردازد که با زبان برنامهنویسی Go کار میکند. این نرمافزار تحت لیسانس AGPL منتشر شده است. کد منبع این پروژه نیز در GitHub قابل دسترسی است، که این امکان را برای توسعهدهندگان فراهم میکند تا در پروژه مشارکت یا آن را تغییر دهند. استفاده از زبان Go این اطمینان را به کاربران میدهد که نرمافزار با کارایی بالا و عملکرد قابل اعتمادی ارائه دهد.
🟣لینک مقاله:
https://golangweekly.com/link/170948/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
BillionMail 3.0: Open Source Email Marketing Platform
🟢 خلاصه مقاله:
مقاله به بررسی یک سرویس سرور ایمیل و ارسال نامهخبری/ایمیل میپردازد که با زبان برنامهنویسی Go کار میکند. این نرمافزار تحت لیسانس AGPL منتشر شده است. کد منبع این پروژه نیز در GitHub قابل دسترسی است، که این امکان را برای توسعهدهندگان فراهم میکند تا در پروژه مشارکت یا آن را تغییر دهند. استفاده از زبان Go این اطمینان را به کاربران میدهد که نرمافزار با کارایی بالا و عملکرد قابل اعتمادی ارائه دهد.
🟣لینک مقاله:
https://golangweekly.com/link/170948/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Billionmail
a Free MailServer, NewsLetter and Marketing tools
Set up your own open-source mail server with BillionMail for free and start using a powerful SMTP mail server for your emails.
❤2
🔵 عنوان مقاله
Unregistry: Push Docker Images Directly to Remote Servers
🟢 خلاصه مقاله:
این مقاله به بررسی یک رجیستری تصویر کانتینر سبک وزن میپردازد که قادر است تصاویر را مستقیماً از ذخیرهسازی دیمون Docker خود ذخیره و ارائه دهد. استفاده از ذخیرهسازی دیمون Docker برای ریجستری، سرعت و کاهش تاخیر را به همراه دارد، زیرا نیازی به انتقال تصاویر از طریق شبکه نیست. حتی یکی از خالقان Docker نیز این طرح را تحسین کرده و آن را جالب توصیف کرده است. این مدل میتواند به ویژه در محیطهایی که سرعت و راحتی توسعهدهندگان اولویت دارد، مفید باشد.
🟣لینک مقاله:
https://golangweekly.com/link/170944/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Unregistry: Push Docker Images Directly to Remote Servers
🟢 خلاصه مقاله:
این مقاله به بررسی یک رجیستری تصویر کانتینر سبک وزن میپردازد که قادر است تصاویر را مستقیماً از ذخیرهسازی دیمون Docker خود ذخیره و ارائه دهد. استفاده از ذخیرهسازی دیمون Docker برای ریجستری، سرعت و کاهش تاخیر را به همراه دارد، زیرا نیازی به انتقال تصاویر از طریق شبکه نیست. حتی یکی از خالقان Docker نیز این طرح را تحسین کرده و آن را جالب توصیف کرده است. این مدل میتواند به ویژه در محیطهایی که سرعت و راحتی توسعهدهندگان اولویت دارد، مفید باشد.
🟣لینک مقاله:
https://golangweekly.com/link/170944/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - psviderski/unregistry: Push docker images directly to remote servers without an external registry
Push docker images directly to remote servers without an external registry - psviderski/unregistry
❤1👍1
🔵 عنوان مقاله
makefile-graph: Turn a Makefile into a Graph
🟢 خلاصه مقاله:
این مقاله درباره ابزاری بحث میکند که هم به عنوان کتابخانه و هم ابزار CLI قابل استفاده است و برای تحلیل Makefileها طراحی شده است. این ابزار، وابستگیهای میان مختلف هدفهای تعیین شده در Makefileها را میخواند و آنها را به شکل گراف درآورده تا توسط ابزار گرافیکی Graphviz dot نمایش داده شود. ویژگی دوگانه بودن این ابزار به همراه قابلیت نمایش تصویری، تحلیل و بهینهسازی فرایندهای ساخت نرمافزار را برای توسعهدهندگان آسانتر میکند.
🟣لینک مقاله:
https://golangweekly.com/link/170946/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
makefile-graph: Turn a Makefile into a Graph
🟢 خلاصه مقاله:
این مقاله درباره ابزاری بحث میکند که هم به عنوان کتابخانه و هم ابزار CLI قابل استفاده است و برای تحلیل Makefileها طراحی شده است. این ابزار، وابستگیهای میان مختلف هدفهای تعیین شده در Makefileها را میخواند و آنها را به شکل گراف درآورده تا توسط ابزار گرافیکی Graphviz dot نمایش داده شود. ویژگی دوگانه بودن این ابزار به همراه قابلیت نمایش تصویری، تحلیل و بهینهسازی فرایندهای ساخت نرمافزار را برای توسعهدهندگان آسانتر میکند.
🟣لینک مقاله:
https://golangweekly.com/link/170946/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - dnaeon/makefile-graph: Turn your Makefile into a graph
Turn your Makefile into a graph. Contribute to dnaeon/makefile-graph development by creating an account on GitHub.
❤1👍1
خیلی جالبه، سازنده flask (از فریمورک های معروف پایتون) خودش پیشنهاد میکنه پروژه های جدید بکندی رو با گولنگ بنویسید!
https://lucumr.pocoo.org/2025/6/12/agentic-coding/
I've evaluated agent performance across different languages my workload, and if you can choose your language, I strongly recommend Go for new backend projects
https://lucumr.pocoo.org/2025/6/12/agentic-coding/
I've evaluated agent performance across different languages my workload, and if you can choose your language, I strongly recommend Go for new backend projects
👍9❤5🍾2
🔵 عنوان مقاله
JSON Evolution in Go: From V1 to V2
🟢 خلاصه مقاله:
با ارائه بسته JSON v2 در نسخه 1.25 زبان برنامه نویسی Go که قرار است در ماه آگوست منتشر شود، ویژگیهای جدید و بهبودهای قابل توجهی معرفی شدهاند. این بهروزرسانی شامل افزودن برچسبهای زمینهی جدید، تغییرات در تنظیمات پیشفرض مارشالکردن، استفاده از رابطهای برنامهنویسی API های جریانی، و دیگر امکانات است که برای تسهیل کار با دادههای JSON در Go طراحی شدهاند. یکی از مهمترین پیشرفتها، بهبود قابل توجه در فرآیند آنمارشالکردن است که تا ده برابر سریعتر از نسخهای قبلی گزارش شده است، که این باعث افزایش کارایی و کاهش مصرف منابع در برنامههای کاربردی میشود.
🟣لینک مقاله:
https://golangweekly.com/link/170927/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
JSON Evolution in Go: From V1 to V2
🟢 خلاصه مقاله:
با ارائه بسته JSON v2 در نسخه 1.25 زبان برنامه نویسی Go که قرار است در ماه آگوست منتشر شود، ویژگیهای جدید و بهبودهای قابل توجهی معرفی شدهاند. این بهروزرسانی شامل افزودن برچسبهای زمینهی جدید، تغییرات در تنظیمات پیشفرض مارشالکردن، استفاده از رابطهای برنامهنویسی API های جریانی، و دیگر امکانات است که برای تسهیل کار با دادههای JSON در Go طراحی شدهاند. یکی از مهمترین پیشرفتها، بهبود قابل توجه در فرآیند آنمارشالکردن است که تا ده برابر سریعتر از نسخهای قبلی گزارش شده است، که این باعث افزایش کارایی و کاهش مصرف منابع در برنامههای کاربردی میشود.
🟣لینک مقاله:
https://golangweekly.com/link/170927/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
JSON evolution in Go: from v1 to v2
Reviewing the key changes in json/v2.
👍2❤1
🔵 عنوان مقاله
Cloud66's Go Stack in 2025
🟢 خلاصه مقاله:
مقاله به بررسی انتخابهای تیم برنامهنویسی Go در مورد بستههای مختلفی که فرایند توسعه آنها را بهینه کرده است میپردازد. این بخشها شامل مدیریت تنظیمات، چهارچوب CLI، چارچوب HTTP، ORM و تزریق وابستگی و مدیریت چرخه حیات میباشد. هدف از انتخاب این ابزارها، افزایش کارایی و نگهداری آسانتر سرویسهای وب، مدیریت موثر تر تنظیمات و محیطهای برنامه، و همچنین بهبود قابلیت توسعه و نگهداری پایگاههای داده و کدبیس است.
🟣لینک مقاله:
https://golangweekly.com/link/170929/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Cloud66's Go Stack in 2025
🟢 خلاصه مقاله:
مقاله به بررسی انتخابهای تیم برنامهنویسی Go در مورد بستههای مختلفی که فرایند توسعه آنها را بهینه کرده است میپردازد. این بخشها شامل مدیریت تنظیمات، چهارچوب CLI، چارچوب HTTP، ORM و تزریق وابستگی و مدیریت چرخه حیات میباشد. هدف از انتخاب این ابزارها، افزایش کارایی و نگهداری آسانتر سرویسهای وب، مدیریت موثر تر تنظیمات و محیطهای برنامه، و همچنین بهبود قابلیت توسعه و نگهداری پایگاههای داده و کدبیس است.
🟣لینک مقاله:
https://golangweekly.com/link/170929/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Cloud 66
Our Golang Stack in 2025
Build, deploy and manage your applications on any cloud or your own servers.
❤1
🔵 عنوان مقاله
'Go Should Be More Opinionated'
🟢 خلاصه مقاله:
یک توسعهدهنده پیشنهاد داده است که زبان برنامهنویسی Go باید در مورد چیدمان برنامهها نظریات مشخصتری داشته باشد. این بیانیه بیانگر نظر عمومی توسعهدهندگانی است که خواهان راهنماییها و استانداردسازیهای بیشتر در معماری برنامهها هستند تا تنظیم پروژهها را بهبود ببخشد و نگهداری کد را آسانتر کند. مطالب مربوط به معماری و چیدمان برنامهها همواره در خبرنامههای موضوعی محبوبیت داشته و باعث شده است که جامعه توسعهدهندگان در مورد بهترین شیوههای ممکن و جهتگیریهای آتی برنامهنویسی گفتگو و تبادل نظر کنند.
🟣لینک مقاله:
https://golangweekly.com/link/170932/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
'Go Should Be More Opinionated'
🟢 خلاصه مقاله:
یک توسعهدهنده پیشنهاد داده است که زبان برنامهنویسی Go باید در مورد چیدمان برنامهها نظریات مشخصتری داشته باشد. این بیانیه بیانگر نظر عمومی توسعهدهندگانی است که خواهان راهنماییها و استانداردسازیهای بیشتر در معماری برنامهها هستند تا تنظیم پروژهها را بهبود ببخشد و نگهداری کد را آسانتر کند. مطالب مربوط به معماری و چیدمان برنامهها همواره در خبرنامههای موضوعی محبوبیت داشته و باعث شده است که جامعه توسعهدهندگان در مورد بهترین شیوههای ممکن و جهتگیریهای آتی برنامهنویسی گفتگو و تبادل نظر کنند.
🟣لینک مقاله:
https://golangweekly.com/link/170932/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
eltonminetto.dev
Go should be more opinionated
One of the perks of being a Google Developer Expert is the incredible opportunities it provides.
❤3
🔵 عنوان مقاله
♟️ Running a Million-Board Chess MMO in a Single Process
🟢 خلاصه مقاله:
این مقاله به توضیح دقیقی پرداخته است در رابطه با نحوه ساخت یک بازی شطرنج چندنفره بزرگ توسط یک توسعهدهنده بازی، که با استفاده از زبان برنامهنویسی Go در پشتصحنه، بدون هیچ مشکلی در عملکرد، انجام شده است. توسعهدهنده این فرایند را از طریق ویدیویی در یوتیوب به اشتراک گذاشته که هم آموزشی است و هم نمایشی از کاربرد Go در توسعه بازیهای زمان-واقعی پیچیده. عبارت "Go Blue" به استفاده و حمایت از زبان Go در جامعه فناوری یا بازیسازی اشاره دارد.
🟣لینک مقاله:
https://golangweekly.com/link/171243/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
♟️ Running a Million-Board Chess MMO in a Single Process
🟢 خلاصه مقاله:
این مقاله به توضیح دقیقی پرداخته است در رابطه با نحوه ساخت یک بازی شطرنج چندنفره بزرگ توسط یک توسعهدهنده بازی، که با استفاده از زبان برنامهنویسی Go در پشتصحنه، بدون هیچ مشکلی در عملکرد، انجام شده است. توسعهدهنده این فرایند را از طریق ویدیویی در یوتیوب به اشتراک گذاشته که هم آموزشی است و هم نمایشی از کاربرد Go در توسعه بازیهای زمان-واقعی پیچیده. عبارت "Go Blue" به استفاده و حمایت از زبان Go در جامعه فناوری یا بازیسازی اشاره دارد.
🟣لینک مقاله:
https://golangweekly.com/link/171243/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
eieio.games
Running a million-board chess MMO in a single process · eieio.games
How one million chessboards works
❤3🔥2
🔴قابلیت Container-aware GOMAXPROCS ویژگی های جدید گولنگ نسخه 1.25
در Go 1.25، رفتار پیشفرض
* اگر quota عددی کسری ainer/cgroup است:
🧠 چه تغییری ایجاد شده؟
1. پیشفرض هوشمندانه در محیطهای container
قبل از Go 1.25، اگر داخل یک کانتینر با CPU quota=1 اجرا میکردید،
حالا این مقدار با توجه به quota واقعی کانتینر تنظیم میشود:
* اگر quota برابر 1 باشد،باشد (مثلاً 2.3)، با گرد کردن به بالا مقدار 3 میگیرد
* حداقل مقدار، حتی برای quota=1 هم 2 خواهد بود، مگر اینکه affinity یا CPU فیزیکی کمتر باشد
2. بروزرسانی پویا در حین اجرای برنامه
اگر پس از شروع برنامه quota تغییر کند (مثلاً از Kubernetes)، runtime بهصورت دورهای (معمولاً هر ثانیه) مقدار
3. امکان غیرفعالسازی
* اگر مقدار
* همچنین میتوانید با تنظیم
- 📚 مثال واقعی
فرض کنید در Kubernetes اجرای زیر را داریم:
درون برنامه:
خروجی قبل از Go 1.25:
در Go 1.25:
اگر quota = 2.3 باشد، مقدار:
و اگر quota = 1، ولی نود بزرگتر باشد، مقدار:
حالا اگر حجم CPU محدودیت افزایش یابد، مثلاً از 1 به 2، مقدار نیز بدون نیاز به ریاستارت برنامه بروزرسانی میشود
برای بازگرداندن به حالت پیشفرض پس از تنظیم دستی، میتوانید بنویسید:
✅ چرا این مهم است؟
1. هماهنگی با منابع کانتینری – دیگر نیازی به تعیین دستی یا بسته شدن برنامه ندارید.
2. کاهش throttling – با منطبق شدن با quota، احتمال deschedule شدن threadها و تأخیر کاهش پیدا میکند .
3. کارایی بهتر GC و scheduler – هرچه
4. مناسب برای Kubernetes و سرورلس – نیازی نیست ابزار اضافی مثل
✳️ جمعبندی
در Go 1.25 بهصورت هوشمندانه
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در Go 1.25، رفتار پیشفرض
GOMAXPROCS
(تعداد هستههای مجازی که به اجرای goroutineها اختصاص داده میشود) اکنون آگاه به محدودیتهای cont GOMAXPROCS
هم شده 1* اگر quota عددی کسری ainer/cgroup است:
🧠 چه تغییری ایجاد شده؟
1. پیشفرض هوشمندانه در محیطهای container
قبل از Go 1.25، اگر داخل یک کانتینر با CPU quota=1 اجرا میکردید،
GOMAXPROCS
برابر با تعداد کل CPU های میزبان (مثلاً 8 یا 32) بود.حالا این مقدار با توجه به quota واقعی کانتینر تنظیم میشود:
* اگر quota برابر 1 باشد،باشد (مثلاً 2.3)، با گرد کردن به بالا مقدار 3 میگیرد
* حداقل مقدار، حتی برای quota=1 هم 2 خواهد بود، مگر اینکه affinity یا CPU فیزیکی کمتر باشد
2. بروزرسانی پویا در حین اجرای برنامه
اگر پس از شروع برنامه quota تغییر کند (مثلاً از Kubernetes)، runtime بهصورت دورهای (معمولاً هر ثانیه) مقدار
GOMAXPROCS
را بهروز میکند .3. امکان غیرفعالسازی
* اگر مقدار
GOMAXPROCS
دستی تنظیم شده یا در env مشخص شده باشد، این رفتار جدید غیرفعال میشود .* همچنین میتوانید با تنظیم
Gontainermaxprocs=0
یا updatemaxprocs=0
رفتار را خاموش یا بروزرسانی پویا را متوقف کنید ([tip.golang.org][1]).- 📚 مثال واقعی
فرض کنید در Kubernetes اجرای زیر را داریم:
kubectl run go-app --image=golang:1.25rc1 \
--limits="cpu=1"
درون برنامه:
fmt.Println("GOMAXPROCS:", runtime.GOMAXPROCS(0))
خروجی قبل از Go 1.25:
GOMAXPROCS: 8 // مثلاً روی یک نود ۸ هستهای
در Go 1.25:
GOMAXPROCS: 1
اگر quota = 2.3 باشد، مقدار:
GOMAXPROCS: 3
و اگر quota = 1، ولی نود بزرگتر باشد، مقدار:
GOMAXPROCS: 2
حالا اگر حجم CPU محدودیت افزایش یابد، مثلاً از 1 به 2، مقدار نیز بدون نیاز به ریاستارت برنامه بروزرسانی میشود
برای بازگرداندن به حالت پیشفرض پس از تنظیم دستی، میتوانید بنویسید:
runtime.SetDefaultGOMAXPROCS()
✅ چرا این مهم است؟
1. هماهنگی با منابع کانتینری – دیگر نیازی به تعیین دستی یا بسته شدن برنامه ندارید.
2. کاهش throttling – با منطبق شدن با quota، احتمال deschedule شدن threadها و تأخیر کاهش پیدا میکند .
3. کارایی بهتر GC و scheduler – هرچه
GOMAXPROCS
کمتر به real CPU نزدیکتر باشد، مصرف حافظه و context switch کاهش مییابد 4. مناسب برای Kubernetes و سرورلس – نیازی نیست ابزار اضافی مثل
automaxprocs
استفاده شود؛ همین رفتار در runtime تعبیهشده کافی است .✳️ جمعبندی
در Go 1.25 بهصورت هوشمندانه
GOMAXPROCS
را بر اساس محدودیت واقعی CPU در کانتینر تنظیم و بروزرسانی میکند. این ویژگی باعث اجرای بهینهتر برنامهها در Kubernetes و محیطهای مشابه میشود و نیاز به تنظیمات اضافی را حذف میکند. اگر در پروژه شما محدودیت CPU تعریف نکردهاید یا به رفتار پیشین نیاز دارید، میتوانید با GODEBUG
یا runtime.SetDefaultGOMAXPROCS()
کنترل کنید.➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤2👍1🎉1
🔵 عنوان مقاله
The Evolution of Caching Libraries in Go
🟢 خلاصه مقاله:
توسعهدهنده کتابخانه کش Otter، به بررسی تاریخچه کتابخانههای کش در زبان برنامهنویسی Go پرداخته است. او مشکلاتی که توسعهدهندگان در گذشته با آن روبرو بودهاند و دلایل به وجود آمدن Otter را شرح داده است. کتابخانههای کش قبلی با مشکلاتی مانند استفاده ناکارآمد از حافظه و سختی در گسترش بر روی چندین دستگاه مواجه بودند. Otter به عنوان راهحلی برای این مشکلات طراحی شده، با ویژگیهایی نظیر الگوریتمهای بهتر برای حذف دادهها و مدیریت حافظه پیشرفته، تا عملکرد بهتری در محیطهای توزیعشده ارائه دهد.
🟣لینک مقاله:
https://golangweekly.com/link/171241/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The Evolution of Caching Libraries in Go
🟢 خلاصه مقاله:
توسعهدهنده کتابخانه کش Otter، به بررسی تاریخچه کتابخانههای کش در زبان برنامهنویسی Go پرداخته است. او مشکلاتی که توسعهدهندگان در گذشته با آن روبرو بودهاند و دلایل به وجود آمدن Otter را شرح داده است. کتابخانههای کش قبلی با مشکلاتی مانند استفاده ناکارآمد از حافظه و سختی در گسترش بر روی چندین دستگاه مواجه بودند. Otter به عنوان راهحلی برای این مشکلات طراحی شده، با ویژگیهایی نظیر الگوریتمهای بهتر برای حذف دادهها و مدیریت حافظه پیشرفته، تا عملکرد بهتری در محیطهای توزیعشده ارائه دهد.
🟣لینک مقاله:
https://golangweekly.com/link/171241/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
maypok86.github.io
The Evolution of Caching Libraries in Go - Otter
❤3
🔵 عنوان مقاله
An Interactive Tour of Go 1.25
🟢 خلاصه مقاله:
نسخه نهایی Go 1.25 قرار است در ماه آگوست منتشر شود، و فرآیند توسعه آن طبق برنامه پیش میرود. نخستین نسخه آزمایشی، RC1، منتشر شده و نسخه دوم، RC2، انتظار میرود هفته آینده عرضه شود. یادداشتهای پیشنویس انتشار داده شده و شامل اطلاعات مفیدی درباره ویژگیها و بهبودهای جدید است. علاوه بر این، آنتون، شخصیت شناختهشده در جامعه Go، تورهای تعاملی خود را ارائه میدهد که در آنها میتوان به ویرایش و اجرای نمونههای کد مستقیماً از طریق مرورگر پرداخت.
🟣لینک مقاله:
https://golangweekly.com/link/171237/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
An Interactive Tour of Go 1.25
🟢 خلاصه مقاله:
نسخه نهایی Go 1.25 قرار است در ماه آگوست منتشر شود، و فرآیند توسعه آن طبق برنامه پیش میرود. نخستین نسخه آزمایشی، RC1، منتشر شده و نسخه دوم، RC2، انتظار میرود هفته آینده عرضه شود. یادداشتهای پیشنویس انتشار داده شده و شامل اطلاعات مفیدی درباره ویژگیها و بهبودهای جدید است. علاوه بر این، آنتون، شخصیت شناختهشده در جامعه Go، تورهای تعاملی خود را ارائه میدهد که در آنها میتوان به ویرایش و اجرای نمونههای کد مستقیماً از طریق مرورگر پرداخت.
🟣لینک مقاله:
https://golangweekly.com/link/171237/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Go 1.25 interactive tour
Fake clock, new GC, flight recorder and more.
❤1👍1
🔴قابلیت New GC ویژگی های جدید گولنگ نسخه 1.25
در Go 1.25، یک جمعآورندهٔ زباله (GC) جدید به نام "Green Tea" معرفی شده که طراحی آن انقلابیست، مخصوص برنامههایی با تولید انبوه اشیاء کوچک و اجرا در سیستمهای چندهستهای مدرن:
🍵 چرا "Green Tea"؟
*درواقع GC فعلی Go مبتنی بر الگوریتم "tri-color parallel marking" است که اشیاء را جداگانه اسکن میکند؛ این باعث میشود حافظه بهشکل تصادفی خوانده شود و کش پر کاربرد (L1/L2) زیاد miss شود
* این Green Tea بهجای اسکن هر شیء، اسکن بلوکهای حافظه بزرگتر (span) را انجام میدهد تا locality حافظه حفظ شود، contention بین threadها کاهش یابد، و دسترسیها به حافظه سریعتر شود .
⚙️ نحوه عملکرد:
1. در spans (بلاک ۸ کیلوبایتی حافظه با اشیاء هماندازه)، دو نشانگر gray و black برای مدیریت حالت marking استفاده میشود. spans به صف عملگرها اضافه و بعد پردازش میشوند .
2. این ساختار باعث کاهش شدید فعالیت حافظه و افزایش همزمانی در محیطهای خیلی هستهای میشود .
📊 عملکرد و نتایج:
* در بنچمارکهای GC‑محور، کاهش ۱۰–۵۰٪ در مصرف CPU مربوط به GC مشاهده شده؛ مخصوصاً روی ماشینهای چندهستهای
* باعث کاهش بیش از ۵۰٪ در cache missها (L1/L2) شده
* البته در برخی بنچمارکها (مثلاً کامپایلر Go) ممکن است کمی افت عملکرد (\~۰.۵٪) دیده شود که در حال بررسی است
🧪 نحوه استفاده و فعالسازی:
* ویژگی Experimental است و میتوانید آن را بهصورت آزمایشی با:
فعال کنید .
* هدف این است که بتوان آن را در Go 1.25 بهعنوان یک گزینه فعالشدنی استفاده کرد، و ارزیابی واقعی روی پروژهها صورت گیرد
✍️ مثال فرضی استفاده:
فرض کنید برنامهای سرویسمحور دارید که بهطرز چشمگیری اشیاء کوچک ایجاد میکند (مثلاً در لایهی JSON/API). با فعال کردن Green Tea:
درواقعه * GC حافظه را بلوکی اسکن میکند، نه شیء به شیء.
* بار CPU مربوط به GC کاهش مییابد و کارایی کلی اپلیکیشن بهتر میشود.
بهعنوان مثال ساده:
وقتی quotaی garbage ایجاد میشود، جدیدترین GC بهجای اسکن ۱۰۰۰ شیء، spans را اسکن میکند و locality را حفظ میکند، بهینهتر عمل مینماید.
✅ جمعبندی:
* این Green Tea GC الگوریتمی توپولوژی-آگاه است که با توجه به ساختار حافظه سیستم، عملکرد marking را بهینه میکند.
* برای برنامههایی که اشیاء کوچک زیادی ایجاد میکنند و به performance حساس هستند، میتواند ۱۰–۵۰٪ کاهش در overhead GC فراهم کند.
* هنوز آزمایشیست؛ برای فعالسازی از
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در Go 1.25، یک جمعآورندهٔ زباله (GC) جدید به نام "Green Tea" معرفی شده که طراحی آن انقلابیست، مخصوص برنامههایی با تولید انبوه اشیاء کوچک و اجرا در سیستمهای چندهستهای مدرن:
🍵 چرا "Green Tea"؟
*درواقع GC فعلی Go مبتنی بر الگوریتم "tri-color parallel marking" است که اشیاء را جداگانه اسکن میکند؛ این باعث میشود حافظه بهشکل تصادفی خوانده شود و کش پر کاربرد (L1/L2) زیاد miss شود
* این Green Tea بهجای اسکن هر شیء، اسکن بلوکهای حافظه بزرگتر (span) را انجام میدهد تا locality حافظه حفظ شود، contention بین threadها کاهش یابد، و دسترسیها به حافظه سریعتر شود .
⚙️ نحوه عملکرد:
1. در spans (بلاک ۸ کیلوبایتی حافظه با اشیاء هماندازه)، دو نشانگر gray و black برای مدیریت حالت marking استفاده میشود. spans به صف عملگرها اضافه و بعد پردازش میشوند .
2. این ساختار باعث کاهش شدید فعالیت حافظه و افزایش همزمانی در محیطهای خیلی هستهای میشود .
📊 عملکرد و نتایج:
* در بنچمارکهای GC‑محور، کاهش ۱۰–۵۰٪ در مصرف CPU مربوط به GC مشاهده شده؛ مخصوصاً روی ماشینهای چندهستهای
* باعث کاهش بیش از ۵۰٪ در cache missها (L1/L2) شده
* البته در برخی بنچمارکها (مثلاً کامپایلر Go) ممکن است کمی افت عملکرد (\~۰.۵٪) دیده شود که در حال بررسی است
🧪 نحوه استفاده و فعالسازی:
* ویژگی Experimental است و میتوانید آن را بهصورت آزمایشی با:
GOEXPERIMENT=greenteagc go test ./...
فعال کنید .
* هدف این است که بتوان آن را در Go 1.25 بهعنوان یک گزینه فعالشدنی استفاده کرد، و ارزیابی واقعی روی پروژهها صورت گیرد
✍️ مثال فرضی استفاده:
فرض کنید برنامهای سرویسمحور دارید که بهطرز چشمگیری اشیاء کوچک ایجاد میکند (مثلاً در لایهی JSON/API). با فعال کردن Green Tea:
درواقعه * GC حافظه را بلوکی اسکن میکند، نه شیء به شیء.
* بار CPU مربوط به GC کاهش مییابد و کارایی کلی اپلیکیشن بهتر میشود.
بهعنوان مثال ساده:
func handler(w http.ResponseWriter, r *http.Request) {
// بارگذاری و پردازش داده های کوچک متعدد
blobs := make([]*MyStruct, 1000)
for i := range blobs {
blobs[i] = &MyStruct{/*...*/}
}
// استفاده از blobs
}
وقتی quotaی garbage ایجاد میشود، جدیدترین GC بهجای اسکن ۱۰۰۰ شیء، spans را اسکن میکند و locality را حفظ میکند، بهینهتر عمل مینماید.
✅ جمعبندی:
* این Green Tea GC الگوریتمی توپولوژی-آگاه است که با توجه به ساختار حافظه سیستم، عملکرد marking را بهینه میکند.
* برای برنامههایی که اشیاء کوچک زیادی ایجاد میکنند و به performance حساس هستند، میتواند ۱۰–۵۰٪ کاهش در overhead GC فراهم کند.
* هنوز آزمایشیست؛ برای فعالسازی از
GOEXPERIMENT=greenteagc
استفاده کنید و توصیه میشود تستهای منتها اجرا دقیق انجام دهید.➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍3❤1
Forwarded from DevOps Labdon
🔵 عنوان مقاله
How Google Cloud is securing open-source credentials at scale (3 minute read)
🟢 خلاصه مقاله:
Google Cloud ابزار اسکنی را توسعه داده است که به صورت خودکار اطلاعات کاربری فاششده را در آثار متنباز، از جمله بستهها و تصاویر داکر، شناسایی میکند. این امر به حفاظت از سوء استفاده و بهبود امنیت در زنجیره تامین نرمافزار کمک میکند. این سیستم امکان رفع سریع موارد فاششده دادههای کاربری را فراهم میآورد. به زودی، این ابزار توسعه یافته و شامل اعتبارات طرفهای ثالث و پوشش گستردهتری از پلتفرمهای متنباز خواهد شد. این پیشرفتها عناصر کلیدی هستند که به بهبود قابل توجهی در امنیت توزیع نرمافزار کمک میکنند و به مدیریت بهتر ریسکهای امنیتی مرتبط با نشت اطلاعات محرمانه و احراز هویت میپردازند.
🟣لینک مقاله:
https://cloud.google.com/blog/products/identity-security/securing-open-source-credentials-at-scale/?utm_source=tldrdevops
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
How Google Cloud is securing open-source credentials at scale (3 minute read)
🟢 خلاصه مقاله:
Google Cloud ابزار اسکنی را توسعه داده است که به صورت خودکار اطلاعات کاربری فاششده را در آثار متنباز، از جمله بستهها و تصاویر داکر، شناسایی میکند. این امر به حفاظت از سوء استفاده و بهبود امنیت در زنجیره تامین نرمافزار کمک میکند. این سیستم امکان رفع سریع موارد فاششده دادههای کاربری را فراهم میآورد. به زودی، این ابزار توسعه یافته و شامل اعتبارات طرفهای ثالث و پوشش گستردهتری از پلتفرمهای متنباز خواهد شد. این پیشرفتها عناصر کلیدی هستند که به بهبود قابل توجهی در امنیت توزیع نرمافزار کمک میکنند و به مدیریت بهتر ریسکهای امنیتی مرتبط با نشت اطلاعات محرمانه و احراز هویت میپردازند.
🟣لینک مقاله:
https://cloud.google.com/blog/products/identity-security/securing-open-source-credentials-at-scale/?utm_source=tldrdevops
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
Google Cloud Blog
Securing open-source credentials at scale | Google Cloud Blog
We’ve developed a powerful tool to scan open-source package and image files by default for leaked Google Cloud credentials. Here’s how to use it.
🔵 عنوان مقاله
Cross-Compiling 10,000+ Go CLI Packages Statically
🟢 خلاصه مقاله:
مقاله به بررسی رویکرد جدید و غیرمعمول در ساخت ابزارهای خط فرمان Go به عنوان باینریهای استاتیک با استفاده از زنجیره ابزار Zig میپردازد. این روش با هدف سادهسازی استفاده از این ابزارها برای کاربرانی که زنجیره ابزار Go را نصب نکردهاند، انتخاب شدهاست. استفاده از باینریهای استاتیک باعث حذف نیاز به مدیریت وابستگیها و پیکربندیهای مرتبط با محیط Go میشود، و در نتیجه تجربه کاربری آسانتری را فراهم میآورد. این رویکرد نه تنها روند استقرار نرمافزار را سادهتر میکند بلکه دسترسی گستردهتری به ابزارهای CLI Go را برای تعداد بیشتری از کاربران فراهم میآورد.
🟣لینک مقاله:
https://golangweekly.com/link/171250/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Cross-Compiling 10,000+ Go CLI Packages Statically
🟢 خلاصه مقاله:
مقاله به بررسی رویکرد جدید و غیرمعمول در ساخت ابزارهای خط فرمان Go به عنوان باینریهای استاتیک با استفاده از زنجیره ابزار Zig میپردازد. این روش با هدف سادهسازی استفاده از این ابزارها برای کاربرانی که زنجیره ابزار Go را نصب نکردهاند، انتخاب شدهاست. استفاده از باینریهای استاتیک باعث حذف نیاز به مدیریت وابستگیها و پیکربندیهای مرتبط با محیط Go میشود، و در نتیجه تجربه کاربری آسانتری را فراهم میآورد. این رویکرد نه تنها روند استقرار نرمافزار را سادهتر میکند بلکه دسترسی گستردهتری به ابزارهای CLI Go را برای تعداد بیشتری از کاربران فراهم میآورد.
🟣لینک مقاله:
https://golangweekly.com/link/171250/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Package Forge
Cross-Compiling 10,000+ Go CLI Packages Statically
The Largest Collection of Pre-Compiled Go Static Binaries
❤2🔥1
Forwarded from AI Labdon
✍️Alireza KiakojouriAlireza Kiakojouri
بنیانگذار تلگرام: ChatGPT فکر نمیکند، فقط حرف میزند!/ پروژهی مخفی برادران دورف چیست؟
پاول دورف به نشریه فرانسوی «لو پوئن» گفت: «مدلهای هوش مصنوعی مثل ChatGPT فکر نمیکنند. فقط مقدار زیادی متن خواندهاند و پاسخی میدهند که به نظر درست میآید. اما واقعاً نمیفهمند و ما انسانها چون زبان پیچیده را نشانه هوش میدانیم، فریب میخوریم. مدلهای زبانی فقط حرف میزنند. اما این به معنای فهمیدن یا فکر کردن نیست.»
پاول میگوید برادرش (نیکلای دورف) اکنون روی ساخت مدلی کار میکند که واقعاً بتواند منطق را درک کند، تصمیم بگیرد و دنیای واقعی را بفهمد. او مدعی است این پروژه چیزی فراتر از مدلهای زبانی فعلی است.
در حالی که غولهایی مانند OpenAI، گوگل، متا و حتی چین و روسیه در حال رقابت برای ساخت نسل بعدی هوش مصنوعی (AGI) هستند، پروژه نیکلای دورف میتواند معادلات را تغییر دهد.
اگر پروژه نیکلای موفق شود، ما شاهد تولد هوش مصنوعیای خواهیم بود که فقط «هوشمندانه صحبت نمیکند»، بلکه واقعاً میفهمد، فکر میکند و تصمیم میگیرد.
بنیانگذار تلگرام: ChatGPT فکر نمیکند، فقط حرف میزند!/ پروژهی مخفی برادران دورف چیست؟
پاول دورف به نشریه فرانسوی «لو پوئن» گفت: «مدلهای هوش مصنوعی مثل ChatGPT فکر نمیکنند. فقط مقدار زیادی متن خواندهاند و پاسخی میدهند که به نظر درست میآید. اما واقعاً نمیفهمند و ما انسانها چون زبان پیچیده را نشانه هوش میدانیم، فریب میخوریم. مدلهای زبانی فقط حرف میزنند. اما این به معنای فهمیدن یا فکر کردن نیست.»
پاول میگوید برادرش (نیکلای دورف) اکنون روی ساخت مدلی کار میکند که واقعاً بتواند منطق را درک کند، تصمیم بگیرد و دنیای واقعی را بفهمد. او مدعی است این پروژه چیزی فراتر از مدلهای زبانی فعلی است.
در حالی که غولهایی مانند OpenAI، گوگل، متا و حتی چین و روسیه در حال رقابت برای ساخت نسل بعدی هوش مصنوعی (AGI) هستند، پروژه نیکلای دورف میتواند معادلات را تغییر دهد.
اگر پروژه نیکلای موفق شود، ما شاهد تولد هوش مصنوعیای خواهیم بود که فقط «هوشمندانه صحبت نمیکند»، بلکه واقعاً میفهمد، فکر میکند و تصمیم میگیرد.
❤2🔥2🕊2