Gopher Academy
💋چی کار میکنه sync.Once تضمین میکنه یک تابع دقیقاً یکبار اجرا بشه حتی اگر چندین goroutine همزمان تلاش کنن اون رو اجرا کنن. متد اصلیش Do(f func()) هست: اولین فراخوانی Do تابع f را اجرا میکنه و فراخوانیهای بعدی هیچ کاری نمیکنن (بلوک نمیشن؛ فقط بازمیگردن).…
بیایید هر دو حالت را ببینیم:
۱️⃣ نمونهٔ Retryدار (برای مواقعی که تابع ممکن است خطا بدهد)
۲️⃣ نمونهٔ واقعیتر (مثلاً بارگذاری فایل کانفیگ فقط یکبار)
---
🧩 مثال ۱:
اما گاهی میخواهیم تابع فقط *در صورت موفقیت* «once» باشد، وگرنه دفعهٔ بعدی دوباره تلاش کند.
برای این کار، باید رفتار خودمان را روی
🟢 نتیجه خروجی:
یعنی تابع تا زمانی که موفق نشده، باز هم قابل اجراست — اما بعد از موفقیت فقط یکبار انجام میشود ✅
🧱 مثال ۲: بارگذاری فایل کانفیگ فقط یکبار (Real-world)
🔹 حتی اگر
🔹 در برنامههای بزرگ (microserviceها، سرورها، یا SDKها) این pattern خیلی رایج است.
۱️⃣ نمونهٔ Retryدار (برای مواقعی که تابع ممکن است خطا بدهد)
۲️⃣ نمونهٔ واقعیتر (مثلاً بارگذاری فایل کانفیگ فقط یکبار)
---
🧩 مثال ۱:
sync.Once با قابلیت Retrysync.Once بهصورت پیشفرض فقط یکبار اجرا میشود — حتی اگر اون اجرا شکست بخوره.اما گاهی میخواهیم تابع فقط *در صورت موفقیت* «once» باشد، وگرنه دفعهٔ بعدی دوباره تلاش کند.
برای این کار، باید رفتار خودمان را روی
Once شبیهسازی کنیم:package main
import (
"errors"
"fmt"
"sync"
)
type OnceRetry struct {
mu sync.Mutex
done bool
}
func (o *OnceRetry) Do(f func() error) error {
o.mu.Lock()
defer o.mu.Unlock()
if o.done {
return nil
}
err := f()
if err != nil {
return err
}
o.done = true
return nil
}
func main() {
var once OnceRetry
counter := 0
task := func() error {
counter++
if counter < 3 {
fmt.Println("❌ Failed attempt", counter)
return errors.New("temporary error")
}
fmt.Println("✅ Success on attempt", counter)
return nil
}
for i := 0; i < 5; i++ {
err := once.Do(task)
if err != nil {
fmt.Println("Error:", err)
}
}
fmt.Println("Final counter =", counter)
}
🟢 نتیجه خروجی:
❌ Failed attempt 1
Error: temporary error
❌ Failed attempt 2
Error: temporary error
✅ Success on attempt 3
Final counter = 3
یعنی تابع تا زمانی که موفق نشده، باز هم قابل اجراست — اما بعد از موفقیت فقط یکبار انجام میشود ✅
🧱 مثال ۲: بارگذاری فایل کانفیگ فقط یکبار (Real-world)
package main
import (
"encoding/json"
"fmt"
"os"
"sync"
)
type Config struct {
Port int `json:"port"`
Mode string `json:"mode"`
}
var (
cfg Config
cfgErr error
cfgOnce sync.Once
)
func LoadConfig() (Config, error) {
cfgOnce.Do(func() {
fmt.Println("📁 Reading config.json only once...")
data, err := os.ReadFile("config.json")
if err != nil {
cfgErr = err
return
}
cfgErr = json.Unmarshal(data, &cfg)
})
return cfg, cfgErr
}
func main() {
for i := 0; i < 3; i++ {
c, err := LoadConfig()
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Loaded config:", c)
}
}
}
🔹 حتی اگر
LoadConfig() چندبار فراخوانی شود، فایل فقط یکبار خوانده میشود.🔹 در برنامههای بزرگ (microserviceها، سرورها، یا SDKها) این pattern خیلی رایج است.
🔵 عنوان مقاله
Chans: Building Blocks for Idiomatic Go Pipelines
🟢 خلاصه مقاله:
** آنتون در مقاله «Chans: Building Blocks for Idiomatic Go Pipelines» بستهی chans را معرفی میکند؛ مجموعهای از عملگرهای عمومی و نوعامن روی channelها در زبان Go—مثل filter، map، partition و takeWhile—برای ساختpipelineهای همزمان بهشکل idiomatic. این بسته با کاهش کد تکراری و افزایش ترکیبپذیری، نوشتن جریانهای پردازش داده را سادهتر، خواناتر و قابل نگهداریتر میکند و برای پردازش جریانها، رویدادها و کارهای IO-محور بسیار کاربردی است.
#Go #Concurrency #Channels #Pipelines #Generics #FunctionalProgramming #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/176627/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Chans: Building Blocks for Idiomatic Go Pipelines
🟢 خلاصه مقاله:
** آنتون در مقاله «Chans: Building Blocks for Idiomatic Go Pipelines» بستهی chans را معرفی میکند؛ مجموعهای از عملگرهای عمومی و نوعامن روی channelها در زبان Go—مثل filter، map، partition و takeWhile—برای ساختpipelineهای همزمان بهشکل idiomatic. این بسته با کاهش کد تکراری و افزایش ترکیبپذیری، نوشتن جریانهای پردازش داده را سادهتر، خواناتر و قابل نگهداریتر میکند و برای پردازش جریانها، رویدادها و کارهای IO-محور بسیار کاربردی است.
#Go #Concurrency #Channels #Pipelines #Generics #FunctionalProgramming #SoftwareEngineering
🟣لینک مقاله:
https://golangweekly.com/link/176627/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Building blocks for idiomatic Go pipelines
Unopinionated and composable channel operations.
👍3
Gopher Academy
🔵 عنوان مقاله Chans: Building Blocks for Idiomatic Go Pipelines 🟢 خلاصه مقاله: ** آنتون در مقاله «Chans: Building Blocks for Idiomatic Go Pipelines» بستهی chans را معرفی میکند؛ مجموعهای از عملگرهای عمومی و نوعامن روی channelها در زبان Go—مثل filter،…
Here's a toy example:
byte count = 22
// Given a channel of documents.
docs := make(chan []string, 10)
docs <- []string{"go", "is", "awesome"}
docs <- []string{"cats", "are", "cute"}
close(docs)
// Extract all words from the documents.
words := make(chan string, 10)
chans.Flatten(ctx, words, docs)
close(words)
// Calculate the total byte count of all words.
step := func(acc int, word string) int { return acc + len(word) }
count := chans.Reduce(ctx, words, 0, step)
fmt.Println("byte count =", count)
byte count = 22
👍2
Gopher Academy
📌 Memory Allocation in Go ❌این پست اپدیت میشود ❌ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
✅ این تصویر نمونهای از مفهوم Summary برای یک bitmap در حافظهی Go رو نشون میده
🧩 این Bitmap Summary در مدیریت صفحات Go
در این شکل، هر بیت از bitmap نشاندهندهی وضعیت یک صفحهی حافظه است:
*
*
برای بهینهسازی جستجوی صفحات آزاد، Go برای هر bitmap سه مقدار خلاصهشده (summary) نگه میداره:
*
*
*
🔹 فلش در تصویر جهت افزایش آدرس حافظه (از پایین به بالا) رو نشون میده.
در نتیجه، ۳ صفحهی آزاد در بخش پایینتر حافظه (low address) و ۷ صفحهی آزاد در بالاترین بخش (high address) قرار دارن.
این ساختار باعث میشه Go خیلی سریعتر بتونه محدودههای بزرگ از صفحات آزاد رو پیدا کنه بدون اینکه کل bitmap رو اسکن کنه — فقط با نگاه کردن به summaryها!
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🧩 این Bitmap Summary در مدیریت صفحات Go
در این شکل، هر بیت از bitmap نشاندهندهی وضعیت یک صفحهی حافظه است:
*
0 → صفحه آزاد (free)*
1 → صفحه در حال استفاده (allocated)برای بهینهسازی جستجوی صفحات آزاد، Go برای هر bitmap سه مقدار خلاصهشده (summary) نگه میداره:
*
start = 3 → یعنی در ابتدای bitmap، ۳ صفحهی متوالی آزاد داریم*
end = 7 → یعنی در انتهای bitmap، ۷ صفحهی متوالی آزاد داریم*
max = 10 → طولانیترین دنبالهی صفحات آزاد در کل bitmap برابر با ۱۰ صفحه است🔹 فلش در تصویر جهت افزایش آدرس حافظه (از پایین به بالا) رو نشون میده.
در نتیجه، ۳ صفحهی آزاد در بخش پایینتر حافظه (low address) و ۷ صفحهی آزاد در بالاترین بخش (high address) قرار دارن.
این ساختار باعث میشه Go خیلی سریعتر بتونه محدودههای بزرگ از صفحات آزاد رو پیدا کنه بدون اینکه کل bitmap رو اسکن کنه — فقط با نگاه کردن به summaryها!
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍1🔥1
🔵 عنوان مقاله
progjpeg: image/jpeg But With Progressive Encoding Support
🟢 خلاصه مقاله:
progjpeg نسخهای از بسته image/jpeg در زبان Go است که امکان Progressive Encoding را به آن اضافه میکند؛ قابلیتی که تصویر را ابتدا بهصورت کمجزئیات نشان میدهد و در چند گذر با دریافت دادههای بیشتر شفافتر میشود. این ویژگی میتواند در شبکههای کند تجربه کاربری را بهبود دهد و توسط بیشتر مرورگرها و دیکدرهای تصویر پشتیبانی میشود. چون درخواست افزودن این قابلیت در مخزن رسمی Go «متوقف/فریز» شده بود، progjpeg این خلأ را برای توسعهدهندگان پر میکند. هرچند کاربرد آن تخصصی است، اما برای سرویسهای وب و سامانههای سنگینِ تصویر میتواند تجربه بارگذاری روانتری فراهم کند، با درنظرگرفتن ملاحظاتی مثل پیچیدگی کدنویسی و تفاوت احتمالی در اندازه فایل.
#Go #Golang #JPEG #ProgressiveJPEG #ImageProcessing #WebPerformance #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176639/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
progjpeg: image/jpeg But With Progressive Encoding Support
🟢 خلاصه مقاله:
progjpeg نسخهای از بسته image/jpeg در زبان Go است که امکان Progressive Encoding را به آن اضافه میکند؛ قابلیتی که تصویر را ابتدا بهصورت کمجزئیات نشان میدهد و در چند گذر با دریافت دادههای بیشتر شفافتر میشود. این ویژگی میتواند در شبکههای کند تجربه کاربری را بهبود دهد و توسط بیشتر مرورگرها و دیکدرهای تصویر پشتیبانی میشود. چون درخواست افزودن این قابلیت در مخزن رسمی Go «متوقف/فریز» شده بود، progjpeg این خلأ را برای توسعهدهندگان پر میکند. هرچند کاربرد آن تخصصی است، اما برای سرویسهای وب و سامانههای سنگینِ تصویر میتواند تجربه بارگذاری روانتری فراهم کند، با درنظرگرفتن ملاحظاتی مثل پیچیدگی کدنویسی و تفاوت احتمالی در اندازه فایل.
#Go #Golang #JPEG #ProgressiveJPEG #ImageProcessing #WebPerformance #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176639/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - dlecorfec/progjpeg: Go JPEG package with progressive encoding
Go JPEG package with progressive encoding. Contribute to dlecorfec/progjpeg development by creating an account on GitHub.
Clients should not be forced to depend on methods they do not use.
— Robert C. Martin (SOLID, interface segregation principle)
👍2
🔵 عنوان مقاله
docxgo: A Library for Manipulating Microsoft Word Documents
🟢 خلاصه مقاله:
docxgo یک کتابخانه برای کار برنامهنویسی با اسناد Microsoft Word با فرمت .docx است که امکان ساخت، خواندن و ویرایش خودکار اسناد را فراهم میکند. نمونهکدهای همراه، مراحل پایه مانند بازکردن سند، پیمایش ساختار، افزودن یا ویرایش پاراگرافها و سبکها و ذخیرهسازی خروجی را نشان میدهند. این پروژه تکاملیافتهی کتابخانه Docx است و با بهبود سازگاری با Microsoft Word، گسترش پوشش قابلیتها (مانند جداول، تصاویر، سرصفحه/پاصفحه و بخشبندی) و بهبود کارایی و مدیریت خطا، تجربه توسعه یکپارچهتری ارائه میدهد. از تولید گزارشها و قراردادهای مبتنی بر قالب تا ادغام در سرویسهای پشتیبان و ابزارهای خط فرمان، docxgo برای خودکارسازی فرآیندهای اسنادی و استانداردسازی قالببندی گزینهای مناسب است.
#docxgo #MicrosoftWord #DOCX #DocumentAutomation #DeveloperTools #WordProcessing #APIs
🟣لینک مقاله:
https://golangweekly.com/link/176636/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
docxgo: A Library for Manipulating Microsoft Word Documents
🟢 خلاصه مقاله:
docxgo یک کتابخانه برای کار برنامهنویسی با اسناد Microsoft Word با فرمت .docx است که امکان ساخت، خواندن و ویرایش خودکار اسناد را فراهم میکند. نمونهکدهای همراه، مراحل پایه مانند بازکردن سند، پیمایش ساختار، افزودن یا ویرایش پاراگرافها و سبکها و ذخیرهسازی خروجی را نشان میدهند. این پروژه تکاملیافتهی کتابخانه Docx است و با بهبود سازگاری با Microsoft Word، گسترش پوشش قابلیتها (مانند جداول، تصاویر، سرصفحه/پاصفحه و بخشبندی) و بهبود کارایی و مدیریت خطا، تجربه توسعه یکپارچهتری ارائه میدهد. از تولید گزارشها و قراردادهای مبتنی بر قالب تا ادغام در سرویسهای پشتیبان و ابزارهای خط فرمان، docxgo برای خودکارسازی فرآیندهای اسنادی و استانداردسازی قالببندی گزینهای مناسب است.
#docxgo #MicrosoftWord #DOCX #DocumentAutomation #DeveloperTools #WordProcessing #APIs
🟣لینک مقاله:
https://golangweekly.com/link/176636/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - mmonterroca/docxgo: Complete rewrite of go-docx: Production-grade Word document creation with domain-driven architecture…
Complete rewrite of go-docx: Production-grade Word document creation with domain-driven architecture, full OOXML compliance, and comprehensive error handling. - mmonterroca/docxgo
👍1
🔵 عنوان مقاله
"I'm Independently Verifying Go's Reproducible Builds"
🟢 خلاصه مقاله:
** از نسخه Go 1.21، ابزارهای اصلی Go بهصورت Reproducible Builds عرضه میشوند؛ یعنی اگر همان سورس را دوباره بسازید، برای هر هدف مشخص، خروجی دقیقا همسانِ بایتبهبایت تولید میشود و به محیط میزبان وابسته نیست. این مقاله گزارشی از یک راستیآزمایی مستقل است: دریافت سورس از ریلیزهای رسمی، ساخت در محیطهای ایزوله روی میزبانهای متفاوت، تولید ابزارها برای تارگتهای یکسان و مقایسه هشها با یکدیگر و با چکسامهای رسمی. نتیجه نشان میدهد که از Go 1.21 به بعد، Go toolchain طبق وعده قابل بازتولید است. این کار، در کنار انتشار رسمی، اعتماد را افزایش میدهد، ریسک دستکاری در زنجیره تامین نرمافزار را کاهش میدهد و به کاربران امکان میدهد خروجیهای منتشرشده را خودشان مستقلانه راستیآزمایی کنند.
#ReproducibleBuilds #Go #Golang #SupplyChainSecurity #DeterministicBuilds #OpenSource #DevSecOps
🟣لینک مقاله:
https://golangweekly.com/link/176621/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
"I'm Independently Verifying Go's Reproducible Builds"
🟢 خلاصه مقاله:
** از نسخه Go 1.21، ابزارهای اصلی Go بهصورت Reproducible Builds عرضه میشوند؛ یعنی اگر همان سورس را دوباره بسازید، برای هر هدف مشخص، خروجی دقیقا همسانِ بایتبهبایت تولید میشود و به محیط میزبان وابسته نیست. این مقاله گزارشی از یک راستیآزمایی مستقل است: دریافت سورس از ریلیزهای رسمی، ساخت در محیطهای ایزوله روی میزبانهای متفاوت، تولید ابزارها برای تارگتهای یکسان و مقایسه هشها با یکدیگر و با چکسامهای رسمی. نتیجه نشان میدهد که از Go 1.21 به بعد، Go toolchain طبق وعده قابل بازتولید است. این کار، در کنار انتشار رسمی، اعتماد را افزایش میدهد، ریسک دستکاری در زنجیره تامین نرمافزار را کاهش میدهد و به کاربران امکان میدهد خروجیهای منتشرشده را خودشان مستقلانه راستیآزمایی کنند.
#ReproducibleBuilds #Go #Golang #SupplyChainSecurity #DeterministicBuilds #OpenSource #DevSecOps
🟣لینک مقاله:
https://golangweekly.com/link/176621/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
www.agwa.name
I'm Independently Verifying Go's Reproducible Builds
Introducing Source Spotter, a Go Checksum Database auditor and Go toolchain reproducer
❤1
The Go Ecosystem in 2025: Key Trends in Frameworks, Tools, and Developer Practices
https://blog.jetbrains.com/go/2025/11/10/go-language-trends-ecosystem-2025/
https://blog.jetbrains.com/go/2025/11/10/go-language-trends-ecosystem-2025/
The JetBrains Blog
The Go Ecosystem in 2025: Key Trends in Frameworks, Tools, and Developer Practices | The GoLand Blog
Explore Go language trends in 2025, from popular frameworks and libraries to IDEs, testing tools, and the growing role of AI in Go development.
Vibe Coding چیست و چگونه از کدنویسی حسی با هوش مصنوعی استفاده کنیم؟
https://digiato.com/artificial-intelligence/what-is-vibe-coding-ai-development-guide
https://digiato.com/artificial-intelligence/what-is-vibe-coding-ai-development-guide
دیجیاتو
Vibe Coding چیست و چگونه از کدنویسی حسی با هوش مصنوعی استفاده کنیم؟
وایب کدینگ از کجا آمده است و چه کاربردهایی دارد؟
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Cost-optimized ml on production: autoscaling GPU nodes on Kubernetes to zero using keda
🟢 خلاصه مقاله:
این آموزش نشان میدهد چگونه با استفاده از Kubernetes و KEDA ظرفیت GPU را بر اساس طول صف پیامها بهصورت خودکار تا صفر کاهش دهیم و هزینه اجرای ML در محیط تولید را کم کنیم. معماری مبتنی بر یک message queue (مثل Kafka، RabbitMQ یا AWS SQS) است و KEDA با ScaledObject تعداد پادهای مصرفکننده GPU را نسبت به backlog تنظیم میکند (minReplicaCount=0). با فعالبودن Cluster Autoscaler و یک GPU node pool با حداقل اندازه صفر، نودهای GPU فقط هنگام نیاز ایجاد و سپس آزاد میشوند. نکات کلیدی شامل تنظیم nodeSelector/tolerations، درخواست nvidia.com/gpu، کنترل pollingInterval/cooldownPeriod، کاهش cold start با pre-pull و پایش با Prometheus/Grafana است. نتیجه: پرداخت هزینه GPU فقط هنگام وجود کار، همراه با حفظ قابلیت اطمینان و کنترل تأخیر.
#Kubernetes #KEDA #GPU #MLOps #Autoscaling #CostOptimization #MessageQueue #ProductionML
🟣لینک مقاله:
https://ku.bz/Zhb9q3BZx
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
Cost-optimized ml on production: autoscaling GPU nodes on Kubernetes to zero using keda
🟢 خلاصه مقاله:
این آموزش نشان میدهد چگونه با استفاده از Kubernetes و KEDA ظرفیت GPU را بر اساس طول صف پیامها بهصورت خودکار تا صفر کاهش دهیم و هزینه اجرای ML در محیط تولید را کم کنیم. معماری مبتنی بر یک message queue (مثل Kafka، RabbitMQ یا AWS SQS) است و KEDA با ScaledObject تعداد پادهای مصرفکننده GPU را نسبت به backlog تنظیم میکند (minReplicaCount=0). با فعالبودن Cluster Autoscaler و یک GPU node pool با حداقل اندازه صفر، نودهای GPU فقط هنگام نیاز ایجاد و سپس آزاد میشوند. نکات کلیدی شامل تنظیم nodeSelector/tolerations، درخواست nvidia.com/gpu، کنترل pollingInterval/cooldownPeriod، کاهش cold start با pre-pull و پایش با Prometheus/Grafana است. نتیجه: پرداخت هزینه GPU فقط هنگام وجود کار، همراه با حفظ قابلیت اطمینان و کنترل تأخیر.
#Kubernetes #KEDA #GPU #MLOps #Autoscaling #CostOptimization #MessageQueue #ProductionML
🟣لینک مقاله:
https://ku.bz/Zhb9q3BZx
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
❤2
Forwarded from AI Labdon
هوش مصنوعی چینی متنباز Kimi K2 Thinking عرضه شد: بهتر از GPT-5 و Claude 4.5 در بنچمارکهای کلیدی
https://toranji.ir/2025/11/06/%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%DA%86%DB%8C%D9%86%DB%8C-%D9%85%D8%AA%D9%86%D8%A8%D8%A7%D8%B2-kimi-k2-thinking-%D8%B9%D8%B1%D8%B6%D9%87-%D8%B4%D8%AF-%D8%A8%D9%87/
➖➖➖➖➖➖➖
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
https://toranji.ir/2025/11/06/%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%DA%86%DB%8C%D9%86%DB%8C-%D9%85%D8%AA%D9%86%D8%A8%D8%A7%D8%B2-kimi-k2-thinking-%D8%B9%D8%B1%D8%B6%D9%87-%D8%B4%D8%AF-%D8%A8%D9%87/
➖➖➖➖➖➖➖
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
ترنجی
هوش مصنوعی چینی متنباز Kimi K2 Thinking عرضه شد: بهتر از GPT-5 و Claude 4.5 در بنچمارکهای کلیدی - ترنجی
در جدیدترین فصل از رقابت هوش مصنوعی، شرکت چینی Moonshot AI از مدل جدید و تماماً متنباز خود با نام Kimi K2 Thinking رونمایی کرد. این مدل نه تنها به عنوان یک رقیب جدی برای مدلهای اختصاصی آمریکایی شناخته میشود، بلکه در بنچمارکهای کلیدی استدلال، کدنویسی و…
👍2❤1🔥1
ایلان ماسک: حمایت مایکروسافت از OpenAI خودتخریبی جنونآمیز است
https://digiato.com/business/elon-musk-microsoft-openai-suicidal-competition
https://digiato.com/business/elon-musk-microsoft-openai-suicidal-competition
دیجیاتو
ایلان ماسک: حمایت مایکروسافت از OpenAI خودتخریبی جنونآمیز است
ایلان ماسک بار دیگر به حمایت مایکروسافت از OpenAI حمله کرد.
❤1
🔵 عنوان مقاله
A look into how JavaScript source maps work
🟢 خلاصه مقاله:
خلاصهای از ساختوکار source map در JavaScript: کدی که در مرورگر اجرا میشود معمولاً پس از transpile، bundle و minify با کد اصلی تفاوت دارد. source map پلی است میان این دو تا بتوانید در DevTools مثل کد اصلی breakpoint بگذارید و خطاها را بخوانید. یک source map فایل JSONی است با فیلدهایی مثل version، file، sources، names، sourcesContent و یک رشته mappings که با Base64 VLQ فشرده شده و با بخشهای دلتایی موقعیتهای کد تولیدشده را به سطر/ستونهای فایلهای اصلی (و در صورت وجود، نامها) نگاشت میکند. ابزارهایی مثل TypeScript و Babel نگاشت را هنگام تبدیل میسازند، Webpack/Rollup/esbuild آنها را ترکیب میکنند و Terser در مرحله minify این زنجیره را حفظ میکند؛ این همان chain شدن source map است. مرورگر از طریق دستور sourceMappingURL (فایل خارجی یا data URI) map را میخواند و با رعایت CORS آن را decode کرده و در DevTools نمایش و دیباگ را بر اساس کد اصلی ممکن میسازد؛ همچنین پلتفرمهایی مثل Sentry با دریافت map میتوانند stack traceهای production را de-minify کنند. در عمل، به خاطر اندازه و حریم خصوصی، بهتر است در production از الگوهایی چون hidden-source-map یا nosources-source-map، میزبانی امن، و فشردهسازی/کش استفاده کنید. محدودیتها شامل دقت ستونی ناقص در برخی تبدیلها، کدهای dynamic/eval، ناسازگاری مسیرها و سوگیریهای نگاشت است. بهترین رویهها: فعالسازی map در تمام مراحل build، اعتبارسنجی در DevTools، اطمینان از CORS مناسب برای ابزار خطا، کنترل نسخه ابزارها و آزمون remap شدن خطاها در CI.
#JavaScript #SourceMaps #WebDev #Debugging #DevTools #Bundlers #Performance
🟣لینک مقاله:
https://golangweekly.com/link/176649/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
A look into how JavaScript source maps work
🟢 خلاصه مقاله:
خلاصهای از ساختوکار source map در JavaScript: کدی که در مرورگر اجرا میشود معمولاً پس از transpile، bundle و minify با کد اصلی تفاوت دارد. source map پلی است میان این دو تا بتوانید در DevTools مثل کد اصلی breakpoint بگذارید و خطاها را بخوانید. یک source map فایل JSONی است با فیلدهایی مثل version، file، sources، names، sourcesContent و یک رشته mappings که با Base64 VLQ فشرده شده و با بخشهای دلتایی موقعیتهای کد تولیدشده را به سطر/ستونهای فایلهای اصلی (و در صورت وجود، نامها) نگاشت میکند. ابزارهایی مثل TypeScript و Babel نگاشت را هنگام تبدیل میسازند، Webpack/Rollup/esbuild آنها را ترکیب میکنند و Terser در مرحله minify این زنجیره را حفظ میکند؛ این همان chain شدن source map است. مرورگر از طریق دستور sourceMappingURL (فایل خارجی یا data URI) map را میخواند و با رعایت CORS آن را decode کرده و در DevTools نمایش و دیباگ را بر اساس کد اصلی ممکن میسازد؛ همچنین پلتفرمهایی مثل Sentry با دریافت map میتوانند stack traceهای production را de-minify کنند. در عمل، به خاطر اندازه و حریم خصوصی، بهتر است در production از الگوهایی چون hidden-source-map یا nosources-source-map، میزبانی امن، و فشردهسازی/کش استفاده کنید. محدودیتها شامل دقت ستونی ناقص در برخی تبدیلها، کدهای dynamic/eval، ناسازگاری مسیرها و سوگیریهای نگاشت است. بهترین رویهها: فعالسازی map در تمام مراحل build، اعتبارسنجی در DevTools، اطمینان از CORS مناسب برای ابزار خطا، کنترل نسخه ابزارها و آزمون remap شدن خطاها در CI.
#JavaScript #SourceMaps #WebDev #Debugging #DevTools #Bundlers #Performance
🟣لینک مقاله:
https://golangweekly.com/link/176649/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Do more with less. | Polar Signals
The Inner Workings of JavaScript Source Maps
A deep dive into how JavaScript source maps work under the hood, with examples showing how all the pieces fit together.
👍1
🔵 عنوان مقاله
Livecore: A Low-Pause Core File Dumper for Linux Processes
🟢 خلاصه مقاله:
این مقاله Livecore را معرفی میکند؛ ابزاری برای گرفتن core file از فرایندهای در حال اجرای Linux با وقفه بسیار کم. این ابزار که در یک جلسه «vibe coding» توسط Brad Fitzpatrick (عضو پیشین تیم Go) ساخته شده، امکان ساخت آنی و کماختلال snapshot از حافظه و وضعیت اجرای فرایند را فراهم میکند تا بدون متوقف کردن سرویس، دادههای لازم برای عیبیابی بهدست آید. بهجای تکیه بر crash یا توقف کامل فرایند، Livecore با بهرهگیری از goref و قابلیتهای Linux تلاش میکند تصویری دقیق و با سربار اندک تهیه کند و برای بررسی با ابزارهای post-mortem به کار رود. نتیجه، ابزاری عملی برای تیمهای توسعه و SRE است که به observability کماختلال—بهویژه در سرویسهای Go روی Linux—نیاز دارند.
#Livecore #Linux #CoreDump #Debugging #Go #Observability #BradFitzpatrick #goref
🟣لینک مقاله:
https://golangweekly.com/link/176630/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Livecore: A Low-Pause Core File Dumper for Linux Processes
🟢 خلاصه مقاله:
این مقاله Livecore را معرفی میکند؛ ابزاری برای گرفتن core file از فرایندهای در حال اجرای Linux با وقفه بسیار کم. این ابزار که در یک جلسه «vibe coding» توسط Brad Fitzpatrick (عضو پیشین تیم Go) ساخته شده، امکان ساخت آنی و کماختلال snapshot از حافظه و وضعیت اجرای فرایند را فراهم میکند تا بدون متوقف کردن سرویس، دادههای لازم برای عیبیابی بهدست آید. بهجای تکیه بر crash یا توقف کامل فرایند، Livecore با بهرهگیری از goref و قابلیتهای Linux تلاش میکند تصویری دقیق و با سربار اندک تهیه کند و برای بررسی با ابزارهای post-mortem به کار رود. نتیجه، ابزاری عملی برای تیمهای توسعه و SRE است که به observability کماختلال—بهویژه در سرویسهای Go روی Linux—نیاز دارند.
#Livecore #Linux #CoreDump #Debugging #Go #Observability #BradFitzpatrick #goref
🟣لینک مقاله:
https://golangweekly.com/link/176630/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - bradfitz/livecore: Linux low-pause core file dumper from an existing running process
Linux low-pause core file dumper from an existing running process - bradfitz/livecore
🔵 عنوان مقاله
Claude Code Can Debug Low-Level Cryptography
🟢 خلاصه مقاله:
** فیلیپو که بهخاطر کارهای مداومش روی رمزنگاری در Go شناخته میشود، بهتازگی پیادهسازیای از الگوریتم امضای پساکوانتومی ML-DSA ساخته است. او هنگام توسعه با باگی روبهرو شد که در سطح پایین رخ میداد و با روشهای معمول بهسادگی آشکار نمیشد.
او از Claude Code کمک گرفت و این ابزار توانست همان «باگ سطح پایینِ نسبتاً پیچیده» را شناسایی کند و علت ریشهای مشکل را روشن سازد. این تجربه نشان میدهد که دستیارهای کدنویسی مبتنی بر هوش مصنوعی میتوانند در پروژههای حساسِ رمزنگاری نیز به کشف سریعتر خطاها کمک کنند—البته همچنان نیاز به آزمونهای قابل بازتولید، اعتبارسنجی سختگیرانه و بازبینی انسانی باقی است.
#Cryptography #PostQuantum #MLDSA #Go #Debugging #AI #CodeAssistants #ClaudeCode
🟣لینک مقاله:
https://golangweekly.com/link/176658/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Claude Code Can Debug Low-Level Cryptography
🟢 خلاصه مقاله:
** فیلیپو که بهخاطر کارهای مداومش روی رمزنگاری در Go شناخته میشود، بهتازگی پیادهسازیای از الگوریتم امضای پساکوانتومی ML-DSA ساخته است. او هنگام توسعه با باگی روبهرو شد که در سطح پایین رخ میداد و با روشهای معمول بهسادگی آشکار نمیشد.
او از Claude Code کمک گرفت و این ابزار توانست همان «باگ سطح پایینِ نسبتاً پیچیده» را شناسایی کند و علت ریشهای مشکل را روشن سازد. این تجربه نشان میدهد که دستیارهای کدنویسی مبتنی بر هوش مصنوعی میتوانند در پروژههای حساسِ رمزنگاری نیز به کشف سریعتر خطاها کمک کنند—البته همچنان نیاز به آزمونهای قابل بازتولید، اعتبارسنجی سختگیرانه و بازبینی انسانی باقی است.
#Cryptography #PostQuantum #MLDSA #Go #Debugging #AI #CodeAssistants #ClaudeCode
🟣لینک مقاله:
https://golangweekly.com/link/176658/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
words.filippo.io
Claude Code Can Debug Low-level Cryptography
Surprisingly (to me) Claude Code debugged my new ML-DSA implementation faster than I would have, finding the non-obvious low-level issue that was making Verify fail.
👍1🔥1