Forwarded from Gopher Job
ایلان ماسک: دیگر هیچ رشته ای مانند کامپیوتر آینده ساز و پایدار نخواهد بود!
👾15❤1
Forwarded from DevOps Labdon
🔵 عنوان مقاله
Kagenti: Cloud-native AI
🟢 خلاصه مقاله:
کاینجنتی یک پلتفرم میانافزاری (میانپایه) مبتنی بر ابر است که برای استقرار و مدیریت عوامل هوشمند چندچارچوبی هوش مصنوعی طراحی شده است. این پلتفرم به صورت بومی در محیط ابری ساخته شده و امکان راهاندازی و سازماندهی این عوامل را بر روی سیستمهای کلاود مبتنی بر کوبرنتیس فراهم میکند. کاینجنتی از رابطهای برنامهنویسی استاندارد REST استفاده میکند و با پشتیبانی از شناسههای دینامیک Managed by SPIRE و پروتکلهای A2A و MCP، امنیت و سازگاری بالا را فراهم میآورد.
این سیستم به توسعهدهندگان اجازه میدهد تا به راحتی عوامل هوشمند مختلف را در یک بستر واحد مدیریت و نظارت کنند. استفاده از استانداردهای باز و پروتکلهای پیشرفته، قابلیت مقیاسپذیری و انعطافپذیری را برای پروژههای هوش مصنوعی در محیطهای ابری فراهم نموده است. کاینجنتی با تمرکز بر بومیسازی در فضای ابر، راهکاری قدرتمند برای استقرار و مدیریت هوش مصنوعی در مقیاس بزرگ ارائه میدهد.
#هوش_مصنوعی #کلاود #کوبنتیس #پلتفرمهای_باز
🟣لینک مقاله:
https://ku.bz/PtCLJSqjZ
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
Kagenti: Cloud-native AI
🟢 خلاصه مقاله:
کاینجنتی یک پلتفرم میانافزاری (میانپایه) مبتنی بر ابر است که برای استقرار و مدیریت عوامل هوشمند چندچارچوبی هوش مصنوعی طراحی شده است. این پلتفرم به صورت بومی در محیط ابری ساخته شده و امکان راهاندازی و سازماندهی این عوامل را بر روی سیستمهای کلاود مبتنی بر کوبرنتیس فراهم میکند. کاینجنتی از رابطهای برنامهنویسی استاندارد REST استفاده میکند و با پشتیبانی از شناسههای دینامیک Managed by SPIRE و پروتکلهای A2A و MCP، امنیت و سازگاری بالا را فراهم میآورد.
این سیستم به توسعهدهندگان اجازه میدهد تا به راحتی عوامل هوشمند مختلف را در یک بستر واحد مدیریت و نظارت کنند. استفاده از استانداردهای باز و پروتکلهای پیشرفته، قابلیت مقیاسپذیری و انعطافپذیری را برای پروژههای هوش مصنوعی در محیطهای ابری فراهم نموده است. کاینجنتی با تمرکز بر بومیسازی در فضای ابر، راهکاری قدرتمند برای استقرار و مدیریت هوش مصنوعی در مقیاس بزرگ ارائه میدهد.
#هوش_مصنوعی #کلاود #کوبنتیس #پلتفرمهای_باز
🟣لینک مقاله:
https://ku.bz/PtCLJSqjZ
➖➖➖➖➖➖➖➖
👑 @DevOps_Labdon
GitHub
GitHub - kagenti/kagenti: Kagenti Installer and User Graphical Interface
Kagenti Installer and User Graphical Interface. Contribute to kagenti/kagenti development by creating an account on GitHub.
❤1
Forwarded from Software Engineer Labdon
پردازش ۴۰ میلیارد رکورد در روز — معماری یک سیستم مقیاسپذیر!
خیلیها فکر میکنن پردازش دهها میلیارد رکورد در روز فقط از پس غولهای جهانی مثل Meta یا Netflix برمیاد — اما من یک معماری عملیاتی ساختم که روزانه بالغ بر ۴۰ میلیارد رکورد (معادل تقریبا ۵۰۰ هزار رکورد بر ثانیه) رو از Kafka مصرف و بهصورت بهینه در ClickHouse ذخیره میکنه.
چالش اصلی
بار نامتعادل روی کلاستر توزیعشده شلوغ با ۲۰ نود و ۵۲ پارتیشن و عدم تفکیک داده
نیاز به پردازش کمتأخیر
حفظ Consistency در حجم عظیم داده
راهحل معماری
مصرفکنندههای موازی با Unbounded Channel
پردازش کاملاً Stateless برای scale عمودی و افقی
دستهبندی و فشردهسازی در Batchهای ۱,۰۰۰,۰۰۰ رکوردی (قابل کانفیگ)
نوشتن مستقیم در ClickHouse با Insertهای ستونمحور
و Commit offset تنها بعد از نوشتن موفق
جدا کردن مسیر ingest از persist برای افزایش throughput
<Amirhossein Maleki/>
خیلیها فکر میکنن پردازش دهها میلیارد رکورد در روز فقط از پس غولهای جهانی مثل Meta یا Netflix برمیاد — اما من یک معماری عملیاتی ساختم که روزانه بالغ بر ۴۰ میلیارد رکورد (معادل تقریبا ۵۰۰ هزار رکورد بر ثانیه) رو از Kafka مصرف و بهصورت بهینه در ClickHouse ذخیره میکنه.
چالش اصلی
بار نامتعادل روی کلاستر توزیعشده شلوغ با ۲۰ نود و ۵۲ پارتیشن و عدم تفکیک داده
نیاز به پردازش کمتأخیر
حفظ Consistency در حجم عظیم داده
راهحل معماری
مصرفکنندههای موازی با Unbounded Channel
پردازش کاملاً Stateless برای scale عمودی و افقی
دستهبندی و فشردهسازی در Batchهای ۱,۰۰۰,۰۰۰ رکوردی (قابل کانفیگ)
نوشتن مستقیم در ClickHouse با Insertهای ستونمحور
و Commit offset تنها بعد از نوشتن موفق
جدا کردن مسیر ingest از persist برای افزایش throughput
<Amirhossein Maleki/>
در دنیای برنامهنویسی (مخصوصاً Go و سیستمهای performance-critical)، اصطلاحات زیادی شبیه CPU-bound hot path داریم که برای تحلیل performance استفاده میشن.
اینجا براتون کاملترین لیست اصطلاحات مهم رو گذاشتم – بسیار بدردتون میخوره 👇
🧠 1) CPU-bound
کدی که محدودیتش CPU هست، نه I/O.
🧠 2) I/O-bound
کدی که محدودیتش عملیات ورودی/خروجی هست:
شبکه
دیسک
دیتابیس
فایلسیستم
مثال:
resp, _ := http.Get(url) // IO-bound
🧠 3) Memory-bound
وقتی سرعت برنامه توسط سرعت دسترسی به حافظه محدود میشود:
اcache miss زیاد
اdata layout بد
اallocation زیاد
مثلاً:
bigArray := make([]int, 10_000_000)
🧠 4) Hot Path / Hot Loop
مسیر پرتکرار اجرای برنامه
بهینهسازی این بخش بیشترین اثر را دارد.
🧠 5) Cold Path
مسیر کماستفاده، چندان بحرانی نیست.
🧠 6) Critical Path
مسیر اصلی که کل latency سیستم به آن وابسته است.
🧠 7) Fast Path / Slow Path
پترن بسیار معروف در performance:
اFast path → مسیر سریع، معمولاً برای شرایط رایج
اSlow path → مسیر fallback برای شرایط غیرمعمول
مثال Go runtime:
if smallAllocation {
fastPath()
} else {
slowPath() // calls GC-heavy functions
}
🧠 8) Cold Cache / Hot Cache
وقتی داده در CPU cache باشد (hot) یا نباشد (cold).
🧠 9) Cache Miss / Cache Hit
اCache hit → داده در L1/L2 است → بسیار سریع
اCache miss → باید از RAM بخواند → خیلی کند
🧠 10) Branch Mis-Prediction
وقتی CPU حدس اشتباهی درباره if/else بزند → باعث لَگ و flush pipeline میشود.
🧠 11) Lock Contention
وقتی چند goroutine برای دسترسی به یک lock دعوا دارند.
🧠 12) False Sharing
وقتی چند goroutine روی فیلدهایی که روی یک cache line قرار گرفتهاند مینویسند → باعث کاهش شدید performance میشود.
🧠 13) Data Locality
یعنی دادههای مربوط به هم کنار هم در حافظه قرار گرفته باشند.
🧠 14) Zero-copy
یعنی انتقال داده بدون duplicate در حافظه — بسیار مهم در شبکه.
🧠 15) Throughput vs Latency
اLatency: زمان انجام یک عملیات
اThroughput: تعداد عملیات در واحد زمان
دو مفهوم کلیدی در performance.
🧠 16) Backpressure
وقتی مصرفکننده نمیتواند سرعت تولیدکننده را تحمل کند → سیستم فشار میدهد که سرعت کم شود.
🧠 17) Bottleneck
گلوگاه سرعت سیستم؛ جایی که سیستم را کند میکند.
🧠 18) Profiling
🧠 19) Micro-optimizations
بهینهسازیهای کوچک مثل:
اinline کردن
حذف allocation
کم کردن branch اضافی
🧠 20) Dead Time / Idle Time
وقتی CPU یا goroutine منتظر I/O است → idle است.
🧠 21) Parallelism vs Concurrency
تفاوت بسیار مهم:
اconcurrency برنامهات میتواند چند کار را مدیریت کند
اparallelism یعنی چند کار همزمان روی چند core اجرا میشود
🧠 22) Work Stealing
استراتژی scheduler مثل Go برای توزیع goroutineها بین CPU cores.
🧠 23) GC Pressure
وقتی کد باعث heap allocation زیاد شود → GC زیاد فعال میشود → performance میخورد زمین.
🧠 24) Hot Allocation
وقتی یک تخصیص حافظه در مسیر پرتکرار برنامه انجام میشود → شدیداً performance را نابود میکند.
🧠 25) Cold Start
وقتی برنامه یا فانکشن بعد از مدت طولانی دوباره اجرا میشود و warm نیست — معمولاً کندتر.
👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
اینجا براتون کاملترین لیست اصطلاحات مهم رو گذاشتم – بسیار بدردتون میخوره 👇
🧠 1) CPU-bound
کدی که محدودیتش CPU هست، نه I/O.
🧠 2) I/O-bound
کدی که محدودیتش عملیات ورودی/خروجی هست:
شبکه
دیسک
دیتابیس
فایلسیستم
مثال:
resp, _ := http.Get(url) // IO-bound
🧠 3) Memory-bound
وقتی سرعت برنامه توسط سرعت دسترسی به حافظه محدود میشود:
اcache miss زیاد
اdata layout بد
اallocation زیاد
مثلاً:
bigArray := make([]int, 10_000_000)
🧠 4) Hot Path / Hot Loop
مسیر پرتکرار اجرای برنامه
بهینهسازی این بخش بیشترین اثر را دارد.
🧠 5) Cold Path
مسیر کماستفاده، چندان بحرانی نیست.
🧠 6) Critical Path
مسیر اصلی که کل latency سیستم به آن وابسته است.
🧠 7) Fast Path / Slow Path
پترن بسیار معروف در performance:
اFast path → مسیر سریع، معمولاً برای شرایط رایج
اSlow path → مسیر fallback برای شرایط غیرمعمول
مثال Go runtime:
if smallAllocation {
fastPath()
} else {
slowPath() // calls GC-heavy functions
}
🧠 8) Cold Cache / Hot Cache
وقتی داده در CPU cache باشد (hot) یا نباشد (cold).
🧠 9) Cache Miss / Cache Hit
اCache hit → داده در L1/L2 است → بسیار سریع
اCache miss → باید از RAM بخواند → خیلی کند
🧠 10) Branch Mis-Prediction
وقتی CPU حدس اشتباهی درباره if/else بزند → باعث لَگ و flush pipeline میشود.
🧠 11) Lock Contention
وقتی چند goroutine برای دسترسی به یک lock دعوا دارند.
🧠 12) False Sharing
وقتی چند goroutine روی فیلدهایی که روی یک cache line قرار گرفتهاند مینویسند → باعث کاهش شدید performance میشود.
🧠 13) Data Locality
یعنی دادههای مربوط به هم کنار هم در حافظه قرار گرفته باشند.
🧠 14) Zero-copy
یعنی انتقال داده بدون duplicate در حافظه — بسیار مهم در شبکه.
🧠 15) Throughput vs Latency
اLatency: زمان انجام یک عملیات
اThroughput: تعداد عملیات در واحد زمان
دو مفهوم کلیدی در performance.
🧠 16) Backpressure
وقتی مصرفکننده نمیتواند سرعت تولیدکننده را تحمل کند → سیستم فشار میدهد که سرعت کم شود.
🧠 17) Bottleneck
گلوگاه سرعت سیستم؛ جایی که سیستم را کند میکند.
🧠 18) Profiling
🧠 19) Micro-optimizations
بهینهسازیهای کوچک مثل:
اinline کردن
حذف allocation
کم کردن branch اضافی
🧠 20) Dead Time / Idle Time
وقتی CPU یا goroutine منتظر I/O است → idle است.
🧠 21) Parallelism vs Concurrency
تفاوت بسیار مهم:
اconcurrency برنامهات میتواند چند کار را مدیریت کند
اparallelism یعنی چند کار همزمان روی چند core اجرا میشود
🧠 22) Work Stealing
استراتژی scheduler مثل Go برای توزیع goroutineها بین CPU cores.
🧠 23) GC Pressure
وقتی کد باعث heap allocation زیاد شود → GC زیاد فعال میشود → performance میخورد زمین.
🧠 24) Hot Allocation
وقتی یک تخصیص حافظه در مسیر پرتکرار برنامه انجام میشود → شدیداً performance را نابود میکند.
🧠 25) Cold Start
وقتی برنامه یا فانکشن بعد از مدت طولانی دوباره اجرا میشود و warm نیست — معمولاً کندتر.
👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
Telegram
Labdon
Bardia invites you to add the folder “Labdon”, which includes 8 chats.
❤5🍾1
🎙️ عنوان پادکست:
🍪 No more all-you-can-eat Cookies
خلاصه پادکست:
Security releases🍪 Go 1.25.2 and 1.24.8 with 10 security fixes🌐 golang.org/x/net v0.45.0 with 2 security fixesMeetups @ Conferences🇺🇸 San Fransisco, CA, USA — Oct 23 @ Forge🇮🇱 Tel Aviv, Israel — Dec 10 @ Cato Networks🇺🇸 GoWest @ Lehi, Utah USA — Oct 24🧦 New swag in the Cup o' Go store!Proposals👷🏿♀️ Accepted: go fix to apply fixes from modernizers and gofix analyzersOn hold: Add experimental HTTP/3 support👖 gofumpt: Should clothing naked returns b...
🍪 No more all-you-can-eat Cookies
خلاصه پادکست:
Security releases🍪 Go 1.25.2 and 1.24.8 with 10 security fixes🌐 golang.org/x/net v0.45.0 with 2 security fixesMeetups @ Conferences🇺🇸 San Fransisco, CA, USA — Oct 23 @ Forge🇮🇱 Tel Aviv, Israel — Dec 10 @ Cato Networks🇺🇸 GoWest @ Lehi, Utah USA — Oct 24🧦 New swag in the Cup o' Go store!Proposals👷🏿♀️ Accepted: go fix to apply fixes from modernizers and gofix analyzersOn hold: Add experimental HTTP/3 support👖 gofumpt: Should clothing naked returns b...
🏆1
🔵 عنوان مقاله
Modernizing Reddit's Backend Infrastructure (with Go)
🟢 خلاصه مقاله:
در سال ۲۰۲۴، ردیت تصمیم گرفت زیرساختهای سمت سرور خود را مدرنسازی کند و روند تغییر از سیستمهای مبتنی بر پایتون به زبان برنامهنویسی Go را آغاز کرد. در ابتدا، تمام سیستمهای ردیت بر پایه چندین سرویس پایتونی ساده و کارآمد ساخته شده بودند که وظایف مختلفی را بر عهده داشتند. اما با رشد سریع و پیچیدهتر شدن نیازهای پلتفرم، تیم توسعه نیاز داشت تا راهحلی قدرتمندتر و بهینهتر بیابد تا بتواند عملکرد و مقیاسپذیری سرویسها را بهبود بخشد.
به همین منظور، ردیت بخش عمدهای از سیستمهای خود، از جمله سیستم نظرات که پرکاربردترین و بزرگترین قسمت این پلتفرم است، را به نقطهای جدید منتقل کرد. انتقال سیستم نظرات به زبان Go نه تنها سرعت پردازش درخواستها را افزایش داد بلکه قابلیت اطمینان و مقیاسپذیری آن را هم چندین برابر کرد. این تغییر بزرگ نیازمند برنامهریزی دقیق، آزمایشهای متعدد و انتقال مرحله به مرحله بود تا کاربران کمترین تأثیر را تجربه کنند.
در طی این فرآیند، تیم توسعه ردیت آنچه یاد گرفت را مستندسازی کرد. مهمترین درسها شامل اهمیت نمونهسازی و آزمایشهای کامل قبل از انتقال کامل، اجرای فازهای آزمایشی برای کاهش خطاهای احتمالی، و ضرورت آموزش تیمها برای تسلط بر زبان Go بود. نتیجه نهایی، بهبود چشمگیر در سرعت پاسخدهی و کارایی سیستمهای ردیت بوده است و نشان میدهد که چگونه تغییر به زبان برنامهنویسی مدرن میتواند به بهبود زیرساختهای بزرگ کمک کند.
#توسعه_وب #مدرنسازی_زیرساخت #گودرتیکرد #پایگاهداده
🟣لینک مقاله:
https://golangweekly.com/link/177906/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Modernizing Reddit's Backend Infrastructure (with Go)
🟢 خلاصه مقاله:
در سال ۲۰۲۴، ردیت تصمیم گرفت زیرساختهای سمت سرور خود را مدرنسازی کند و روند تغییر از سیستمهای مبتنی بر پایتون به زبان برنامهنویسی Go را آغاز کرد. در ابتدا، تمام سیستمهای ردیت بر پایه چندین سرویس پایتونی ساده و کارآمد ساخته شده بودند که وظایف مختلفی را بر عهده داشتند. اما با رشد سریع و پیچیدهتر شدن نیازهای پلتفرم، تیم توسعه نیاز داشت تا راهحلی قدرتمندتر و بهینهتر بیابد تا بتواند عملکرد و مقیاسپذیری سرویسها را بهبود بخشد.
به همین منظور، ردیت بخش عمدهای از سیستمهای خود، از جمله سیستم نظرات که پرکاربردترین و بزرگترین قسمت این پلتفرم است، را به نقطهای جدید منتقل کرد. انتقال سیستم نظرات به زبان Go نه تنها سرعت پردازش درخواستها را افزایش داد بلکه قابلیت اطمینان و مقیاسپذیری آن را هم چندین برابر کرد. این تغییر بزرگ نیازمند برنامهریزی دقیق، آزمایشهای متعدد و انتقال مرحله به مرحله بود تا کاربران کمترین تأثیر را تجربه کنند.
در طی این فرآیند، تیم توسعه ردیت آنچه یاد گرفت را مستندسازی کرد. مهمترین درسها شامل اهمیت نمونهسازی و آزمایشهای کامل قبل از انتقال کامل، اجرای فازهای آزمایشی برای کاهش خطاهای احتمالی، و ضرورت آموزش تیمها برای تسلط بر زبان Go بود. نتیجه نهایی، بهبود چشمگیر در سرعت پاسخدهی و کارایی سیستمهای ردیت بوده است و نشان میدهد که چگونه تغییر به زبان برنامهنویسی مدرن میتواند به بهبود زیرساختهای بزرگ کمک کند.
#توسعه_وب #مدرنسازی_زیرساخت #گودرتیکرد #پایگاهداده
🟣لینک مقاله:
https://golangweekly.com/link/177906/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Reddit
From the RedditEng community on Reddit
Explore this post and more from the RedditEng community
🍾2
متد `time.NewTicker` برای اجرای عملیاتی تکراری در فواصل زمانی مشخص به کار میرود.
📌 تعریف:
*ا
* ا
🧠 کاربرد اصلی:
اجرای یک عملیات به صورت پریودیک (دورهای)
مثلاً برای:
چک کردن وضعیت سرویسها
خواندن داده از صف یا کانال
اجرای یک تسک background در فواصل زمانی مشخص
✅ مثال ساده:
⏱️ خروجی:
⚠️ نکات مهم:
* حتماً بعد از پایان استفاده
*ا
📌 تعریف:
ticker := time.NewTicker(duration)
*ا
duration → فاصله زمانی بین اجرای هر بار (مثلاً: 1*time.Second)* ا
ticker.C → یک کانال (channel) است که هر بار بعد از گذشت مدت زمان مشخص، یک مقدار time.Time در آن ارسال میشود.🧠 کاربرد اصلی:
اجرای یک عملیات به صورت پریودیک (دورهای)
مثلاً برای:
چک کردن وضعیت سرویسها
خواندن داده از صف یا کانال
اجرای یک تسک background در فواصل زمانی مشخص
✅ مثال ساده:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
for i := 0; i < 5; i++ {
t := <-ticker.C
fmt.Println("Tick at", t)
}
}
⏱️ خروجی:
Tick at 2025-12-06 10:57:34.182664644 +0330 +0330 m=+2.000047534
Tick at 2025-12-06 10:57:36.182664842 +0330 +0330 m=+4.000047715
Tick at 2025-12-06 10:57:38.182665098 +0330 +0330 m=+6.000047982
Tick at 2025-12-06 10:57:40.182664344 +0330 +0330 m=+8.000047217
Tick at 2025-12-06 10:57:42.182664808 +0330 +0330 m=+10.000047690
⚠️ نکات مهم:
* حتماً بعد از پایان استفاده
ticker.Stop() فراخوانی بشه تا نشتی منابع (goroutine leak) نداشته باشیم.*ا
NewTicker در کنار select هم بسیار کاربرد داره.🏆2🐳1
🔵 عنوان مقاله
Avoiding Splintered Failure Modes in Go
🟢 خلاصه مقاله:
در برنامهنویسی با زبان گو، یکی از چالشهای مهم جلوگیری از بروز خطاهای جدی در ساختارهای نرمافزاری است. یکی از مشکلات رایج در توسعه برنامهها، شکستهای شکسته یا جدا شده (Splintered Failure Modes) هستند که ممکن است منجر به شکستهای سخت و دشوار در عیبیابی شوند. بنابراین، پیشگیری از این نوع شکستها اهمیت زیادی دارد تا برنامههای پایدار و قابل اعتماد ساخته شوند.
برای جلوگیری از این مشکلات، تمرکز بر مدیریت دقیق دامنه شناسهها و متغیرها در هنگام توسعه برنامه بسیار حیاتی است. کاهش حوزه دسترسی شناسهها نه تنها کنترل بهتری بر جریان دادهها ایجاد میکند، بلکه خطاهای مرتبط با اشتباهات در سطوح مختلف برنامه را کاهش میدهد. در این راستا، رعایت اصول ساختاردهی مناسب و محدود کردن دامنههای شناسهها، نقش مهمی در بهبود روشهای نگهداری و توسعه نرمافزار ایفا میکند.
در نهایت، پیروی از این رویکردها و تمرینات به توسعهدهندگان کمک میکند تا نرمافزارهای قدرتمند و مقاوم در برابر شکستهای پیچیده بسازند و از بروز مشکلات سخت و غیرقابل کنترل جلوگیری کنند. این استراتژیها پایهای برای تولید سیستمهای پایدار و مؤثر در دنیای پیچیده فناوری مدرن است.
#برنامهنویسی #گو #پایداری_نرمافزار #توسعه_مقاوم
🟣لینک مقاله:
https://golangweekly.com/link/177911/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Avoiding Splintered Failure Modes in Go
🟢 خلاصه مقاله:
در برنامهنویسی با زبان گو، یکی از چالشهای مهم جلوگیری از بروز خطاهای جدی در ساختارهای نرمافزاری است. یکی از مشکلات رایج در توسعه برنامهها، شکستهای شکسته یا جدا شده (Splintered Failure Modes) هستند که ممکن است منجر به شکستهای سخت و دشوار در عیبیابی شوند. بنابراین، پیشگیری از این نوع شکستها اهمیت زیادی دارد تا برنامههای پایدار و قابل اعتماد ساخته شوند.
برای جلوگیری از این مشکلات، تمرکز بر مدیریت دقیق دامنه شناسهها و متغیرها در هنگام توسعه برنامه بسیار حیاتی است. کاهش حوزه دسترسی شناسهها نه تنها کنترل بهتری بر جریان دادهها ایجاد میکند، بلکه خطاهای مرتبط با اشتباهات در سطوح مختلف برنامه را کاهش میدهد. در این راستا، رعایت اصول ساختاردهی مناسب و محدود کردن دامنههای شناسهها، نقش مهمی در بهبود روشهای نگهداری و توسعه نرمافزار ایفا میکند.
در نهایت، پیروی از این رویکردها و تمرینات به توسعهدهندگان کمک میکند تا نرمافزارهای قدرتمند و مقاوم در برابر شکستهای پیچیده بسازند و از بروز مشکلات سخت و غیرقابل کنترل جلوگیری کنند. این استراتژیها پایهای برای تولید سیستمهای پایدار و مؤثر در دنیای پیچیده فناوری مدرن است.
#برنامهنویسی #گو #پایداری_نرمافزار #توسعه_مقاوم
🟣لینک مقاله:
https://golangweekly.com/link/177911/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Redowan's Reflections
Splintered failure modes in Go
A man with a watch knows what time it is. A man with two watches is never sure.
— Segal’s Law
Take this example:
func validate(input string) (bool, error) {
// Validation check 1
if input == "" {
return false, nil
}
// Validation…
— Segal’s Law
Take this example:
func validate(input string) (bool, error) {
// Validation check 1
if input == "" {
return false, nil
}
// Validation…
❤1👍1
📌 ارور copylocks
🧩 ارور رایج Go:
اگه توی ساختارهات از
🔍 مشکل از کجاست؟
فرض کن تعریف پروژه به این شکله:
و تو این کار رو انجام میدی:
اینجا Go میگه:
> داری یک Mutex رو کپی میکنی!
>و Mutex نباید کپی بشه، چون ممکنه لاک شده باشه و نسخهٔ کپیشده وضعیت اشتباه داشته باشه.
این باعث deadlock میشه.
✅ بهترین راهحل
بهجای کپیکردن struct، فقط اشارهگر رو منتقل کن:
🔹 با این کار Mutex کپی نمیشه
🔹 فقط آدرس struct منتقل میشه
🔹 رفتار کاملاً امن و درست میمونه
🎯 نکته طلایی
هر وقت struct شامل Mutex بود:
❌ کپی struct ممنوع
✔️ استفاده از pointer توصیهشده
🧩 ارور رایج Go:
assignment copies lock value to ... (copylocks)اگه توی ساختارهات از
sync.Mutex یا sync.RWMutex استفاده میکنی و ناگهان این خطا رو دیدی، یعنی داری یک struct که داخلش lock داره رو *کپی* میکنی — و این توی Go ممنوعه! 🚫🔍 مشکل از کجاست؟
فرض کن تعریف پروژه به این شکله:
type Project struct {
ID string
mu sync.RWMutex
}و تو این کار رو انجام میدی:
project = *projectFromCache
اینجا Go میگه:
> داری یک Mutex رو کپی میکنی!
>و Mutex نباید کپی بشه، چون ممکنه لاک شده باشه و نسخهٔ کپیشده وضعیت اشتباه داشته باشه.
این باعث deadlock میشه.
✅ بهترین راهحل
بهجای کپیکردن struct، فقط اشارهگر رو منتقل کن:
project = projectFromCache
🔹 با این کار Mutex کپی نمیشه
🔹 فقط آدرس struct منتقل میشه
🔹 رفتار کاملاً امن و درست میمونه
🎯 نکته طلایی
هر وقت struct شامل Mutex بود:
❌ کپی struct ممنوع
✔️ استفاده از pointer توصیهشده
👍3🍾1
Forwarded from AI Labdon
🔥 گوگل ، مسیر شغلی آیندت رو مشخص میکنه | معرفی ابزار career Dreamer
▪️گوگل یه ابزار جدید داده بیرون به اسم Career Dreamer (فعلاً فقط با IP آمریکا) ، این سرویس با کمک هوش مصنوعی، علایق و مهارتهاتو آنالیز میکنه و دقیقاً میگه کدوم مسیر شغلی بهت میخوره.
1⃣ تحلیل شخصی هوشمند
• اطلاعات تجربیات و تواناییهاتو میگیره و مسیرهای شغلی مناسب پیشنهاد میکنه.
2⃣ آموزش رایگان
• به دورههای رایگان Grow with Google وصل میشه تا مهارتهای لازم همون شغل رو یاد بگیری.
3⃣ ساخت رزومه با Gemini
• به Gemini وصل میشه و خودش برات رزومه، کاور لتر و متنهای حرفهای استخدامی میسازه.
🔗 لینک دسترسی : career Dreamer
(فعلاً فقط با IP آمریکا کار میکنه)
👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
▪️گوگل یه ابزار جدید داده بیرون به اسم Career Dreamer (فعلاً فقط با IP آمریکا) ، این سرویس با کمک هوش مصنوعی، علایق و مهارتهاتو آنالیز میکنه و دقیقاً میگه کدوم مسیر شغلی بهت میخوره.
1⃣ تحلیل شخصی هوشمند
• اطلاعات تجربیات و تواناییهاتو میگیره و مسیرهای شغلی مناسب پیشنهاد میکنه.
2⃣ آموزش رایگان
• به دورههای رایگان Grow with Google وصل میشه تا مهارتهای لازم همون شغل رو یاد بگیری.
3⃣ ساخت رزومه با Gemini
• به Gemini وصل میشه و خودش برات رزومه، کاور لتر و متنهای حرفهای استخدامی میسازه.
🔗 لینک دسترسی : career Dreamer
(فعلاً فقط با IP آمریکا کار میکنه)
👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
🔵 عنوان مقاله
The Type-Safe Error Checking Proposal
🟢 خلاصه مقاله:
پیشنهاد بررسی خطاهای نوعساز در زبان برنامهنویسی گو
آنتون در ادامه تحلیل نظرات و پیشنهادهای پذیرفته شده برای زبان گو است که در نسخههای آینده این زبان اجرایی میشوند. این بار به موضوع خطاها پرداخته است؛ موضوعی حیاتی در توسعه نرمافزارهای قابل اعتماد و مقاوم. هدف این پیشنهاد، بهبود نحوه مدیریت و بررسی خطاهای نوعساز در زبان است تا خطاها در زمان کامپایل تشخیص داده شوند و فرآیند توسعه مطمئنتر و امنتر گردد.
با این پیشنهاد، نویسندگان و برنامهنویسان میتوانند نوعهای خاص و مشخصی برای خطاهایشان تعریف کنند و سیستم به صورت نوعساز این خطاها را بررسی و کنترل کند. این روند، خطاهای احتمالی را قبل از اجرای برنامه شناسایی میکند، که منجر به کاهش خطاهای زمان اجرا و بهبود امنیت و اطمینانپذیری برنامهها میشود. در نتیجه، توسعهدهندگان میتوانند با اطمینان بیشتری کد نوشته و عیبیابی را سریعتر انجام دهند.
#برنامه_نویسی #گو #خطا #نسخه_جدید
🟣لینک مقاله:
https://golangweekly.com/link/177901/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The Type-Safe Error Checking Proposal
🟢 خلاصه مقاله:
پیشنهاد بررسی خطاهای نوعساز در زبان برنامهنویسی گو
آنتون در ادامه تحلیل نظرات و پیشنهادهای پذیرفته شده برای زبان گو است که در نسخههای آینده این زبان اجرایی میشوند. این بار به موضوع خطاها پرداخته است؛ موضوعی حیاتی در توسعه نرمافزارهای قابل اعتماد و مقاوم. هدف این پیشنهاد، بهبود نحوه مدیریت و بررسی خطاهای نوعساز در زبان است تا خطاها در زمان کامپایل تشخیص داده شوند و فرآیند توسعه مطمئنتر و امنتر گردد.
با این پیشنهاد، نویسندگان و برنامهنویسان میتوانند نوعهای خاص و مشخصی برای خطاهایشان تعریف کنند و سیستم به صورت نوعساز این خطاها را بررسی و کنترل کند. این روند، خطاهای احتمالی را قبل از اجرای برنامه شناسایی میکند، که منجر به کاهش خطاهای زمان اجرا و بهبود امنیت و اطمینانپذیری برنامهها میشود. در نتیجه، توسعهدهندگان میتوانند با اطمینان بیشتری کد نوشته و عیبیابی را سریعتر انجام دهند.
#برنامه_نویسی #گو #خطا #نسخه_جدید
🟣لینک مقاله:
https://golangweekly.com/link/177901/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Go proposal: Type-safe error checking
errors.AsType is a modern alternative to errors.As.
👍1
🔵 عنوان مقاله
Go 1.25.5 and 1.24.11 have both been released
🟢 خلاصه مقاله:
نسخههای Go 1.25.5 و 1.24.11 همزمان منتشر شدند که هر دو شامل بهروزرسانیهای جزئی به همراه دو اصلاح مربوط به امنیت در بخش crypto/x509 هستند. این بروزرسانیها با هدف ارتقاء امنیت و پایداری زبان برنامهنویسی Go ارائه شده است و توسعهدهندگان را تشویق میکند تا این نسخهها را نصب و از مزایای آن بهرهمند شوند. اطلاعرسانی در مورد این نسخهها نشان میدهد که تیم توسعهدهنده همواره در حال پیگیری و رفع آسیبپذیریهای امنیتی است تا کاربران در محیطهای مختلف، نرمافزار مطمئنی داشته باشند.
#برنامهنویسی #امنیت #گو #آپدیت
🟣لینک مقاله:
https://golangweekly.com/link/177903/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go 1.25.5 and 1.24.11 have both been released
🟢 خلاصه مقاله:
نسخههای Go 1.25.5 و 1.24.11 همزمان منتشر شدند که هر دو شامل بهروزرسانیهای جزئی به همراه دو اصلاح مربوط به امنیت در بخش crypto/x509 هستند. این بروزرسانیها با هدف ارتقاء امنیت و پایداری زبان برنامهنویسی Go ارائه شده است و توسعهدهندگان را تشویق میکند تا این نسخهها را نصب و از مزایای آن بهرهمند شوند. اطلاعرسانی در مورد این نسخهها نشان میدهد که تیم توسعهدهنده همواره در حال پیگیری و رفع آسیبپذیریهای امنیتی است تا کاربران در محیطهای مختلف، نرمافزار مطمئنی داشته باشند.
#برنامهنویسی #امنیت #گو #آپدیت
🟣لینک مقاله:
https://golangweekly.com/link/177903/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy