🔵 عنوان مقاله
Using Docker to Deal with cgo Build Complexity
🟢 خلاصه مقاله:
در توسعه نرمافزار، ساخت باینریهای قابل اجرا برای سیستمهای مختلف معمولاً با چالشهایی همراه است، به ویژه زمانی که پروژه شما وابسته به کتابخانهها یا کدهایی باشد که از cgo بهره میبرند. ابزارهای استاندارد زبان Go این امکان را فراهم میکنند تا به راحتی برای سیستمهای متفاوت ساخت انجام دهید، اما در صورت وجود وابستگیهایی که نیازمند کدهای C هستند، فرآیند پیچیدهتر میشود و مشکلاتی در حین ساخت و پشتیبانی به وجود میآید.
تیم Dolt برای حل این مسئله از Docker استفاده میکند. با بهرهگیری از کانتینرهای Docker، آنها قادر هستند محیطی کنترلشده و هماهنگ فراهم کنند که تمام نیازهای مربوط به ساخت پروژه را برآورده میکند. این رویه نه تنها فرآیند ساخت را سادهتر میکند، بلکه خطاهای مرتبط با محیطهای توسعه متفاوت را کاهش میدهد و امکان توسعه و استقرار نرمافزار در سیستمهای متفاوت را تسهیل مینماید.
استفاده از Docker در این حوزه، ابزار قوی و موثری است که توسعهدهندگان را از دستکاریهای پیچیده و مشکلات ناسازگاری محیطهای ساخت نجات میدهد و فرآیند تولید نسخههای مختلف را بسیار کارآمدتر میسازد. به این ترتیب، تیم Dolt توانسته است روند توسعه و عرضه محصولات مبتنی بر Go را سادهتر و قابل اطمینانتر کند.
#Docker #Cgo #توسعه_نرمافزار #ساخت_پورتابل
🟣لینک مقاله:
https://golangweekly.com/link/177538/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Using Docker to Deal with cgo Build Complexity
🟢 خلاصه مقاله:
در توسعه نرمافزار، ساخت باینریهای قابل اجرا برای سیستمهای مختلف معمولاً با چالشهایی همراه است، به ویژه زمانی که پروژه شما وابسته به کتابخانهها یا کدهایی باشد که از cgo بهره میبرند. ابزارهای استاندارد زبان Go این امکان را فراهم میکنند تا به راحتی برای سیستمهای متفاوت ساخت انجام دهید، اما در صورت وجود وابستگیهایی که نیازمند کدهای C هستند، فرآیند پیچیدهتر میشود و مشکلاتی در حین ساخت و پشتیبانی به وجود میآید.
تیم Dolt برای حل این مسئله از Docker استفاده میکند. با بهرهگیری از کانتینرهای Docker، آنها قادر هستند محیطی کنترلشده و هماهنگ فراهم کنند که تمام نیازهای مربوط به ساخت پروژه را برآورده میکند. این رویه نه تنها فرآیند ساخت را سادهتر میکند، بلکه خطاهای مرتبط با محیطهای توسعه متفاوت را کاهش میدهد و امکان توسعه و استقرار نرمافزار در سیستمهای متفاوت را تسهیل مینماید.
استفاده از Docker در این حوزه، ابزار قوی و موثری است که توسعهدهندگان را از دستکاریهای پیچیده و مشکلات ناسازگاری محیطهای ساخت نجات میدهد و فرآیند تولید نسخههای مختلف را بسیار کارآمدتر میسازد. به این ترتیب، تیم Dolt توانسته است روند توسعه و عرضه محصولات مبتنی بر Go را سادهتر و قابل اطمینانتر کند.
#Docker #Cgo #توسعه_نرمافزار #ساخت_پورتابل
🟣لینک مقاله:
https://golangweekly.com/link/177538/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
Using Docker to deal with cgo build complexity
Blog for DoltHub, a website hosting databases made with Dolt, an open-source version-controlled SQL database with Git-like semantics.
🔵 عنوان مقاله
Tinyauth: An Easy Way to Secure Apps with a Login Screen
🟢 خلاصه مقاله:
تی نیاوت (Tinyauth) روشی ساده و کارآمد برای تأمین امنیت برنامههای کاربردی است که از صفحه ورود استفاده میکند. این ابزار بر پایه زبان برنامهنویسی Go توسعه یافته است و به شما امکان میدهد به راحتی و بدون نیاز به تغییر در کد برنامه، احراز هویتهای OAuth و LDAP را در لایه میانی قرار دهید. بنابراین، این روش میتواند در جلوی برنامههای وب قرار گرفته و امنیت آنها را افزایش دهد، حتی اگر این برنامهها به زبان Go نوشته نشده باشند.
این راهحل بر مبنای یک باینری واحد و سبک طراحی شده است که قابلیت انعطاف بالایی دارد. با استفاده از Tinyauth، میتوانید به راحتی و با کمترین تلاش، احراز هویت چندگانهای در برنامههای خود پیادهسازی کنید. ویدئویی نیز موجود است که نشان میدهد چگونه این ابزار را در مقابل هر برنامهای که با Docker راهاندازی شده است، میتوان استفاده کرد و امنیت آن را تضمین کرد.
به طور خلاصه، Tinyauth یک راه حل سریع و مؤثر است که امکانات امنسازی برنامههای وب شما را با افزودن صفحه ورود، بینیاز از تغییرات پیچیده فراهم میکند.
#امنیت_وب #احراز_هویت #OAuth #LDAP
🟣لینک مقاله:
https://golangweekly.com/link/177547/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Tinyauth: An Easy Way to Secure Apps with a Login Screen
🟢 خلاصه مقاله:
تی نیاوت (Tinyauth) روشی ساده و کارآمد برای تأمین امنیت برنامههای کاربردی است که از صفحه ورود استفاده میکند. این ابزار بر پایه زبان برنامهنویسی Go توسعه یافته است و به شما امکان میدهد به راحتی و بدون نیاز به تغییر در کد برنامه، احراز هویتهای OAuth و LDAP را در لایه میانی قرار دهید. بنابراین، این روش میتواند در جلوی برنامههای وب قرار گرفته و امنیت آنها را افزایش دهد، حتی اگر این برنامهها به زبان Go نوشته نشده باشند.
این راهحل بر مبنای یک باینری واحد و سبک طراحی شده است که قابلیت انعطاف بالایی دارد. با استفاده از Tinyauth، میتوانید به راحتی و با کمترین تلاش، احراز هویت چندگانهای در برنامههای خود پیادهسازی کنید. ویدئویی نیز موجود است که نشان میدهد چگونه این ابزار را در مقابل هر برنامهای که با Docker راهاندازی شده است، میتوان استفاده کرد و امنیت آن را تضمین کرد.
به طور خلاصه، Tinyauth یک راه حل سریع و مؤثر است که امکانات امنسازی برنامههای وب شما را با افزودن صفحه ورود، بینیاز از تغییرات پیچیده فراهم میکند.
#امنیت_وب #احراز_هویت #OAuth #LDAP
🟣لینک مقاله:
https://golangweekly.com/link/177547/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤1
Forwarded from Software Engineer Labdon
تایم اوت بالا در سرویسها: مشکل از کیه؟ API Manager یا Backend؟ ️
یکی از رایجترین سؤالها در تیمهای یکپارچهسازی اینه که:
«وقتی زمان پاسخدهی یک سرویس زیاده، من که API Manager یا ESB هستم Timeout رو روی چند ثانیه تنظیم کنم؟»
ظاهرش سادهست؛ ولی پشتش یک نکته مهم وجود داره:
تایم اوت رو ESB یا API Manager تعیین نمیکنه؛ معماری سیستم تعیین میکنه.
خیلی وقتها Timeout بالا فقط مشکل "طولانی بودن پردازش" نیست، بلکه نشونه یک مشکل بزرگتره.
چرا نباید Timeout رو زیاد کنیم؟
اگر Backend کند باشه، طولانیکردن Timeout فقط مشکل رو پنهان میکنه.
مثلاً Lag در گیتوی باعث میشه کانکشنها قفل بشن و Load کل سیستم بالا بره.
صف درخواستها روی گیتوی ساخته میشه و کل سیستم ناپایدار میشه.
چه کارهایی باید انجام بشه؟
1- ریشه مشکل کندی سرویس رو پیدا کن
کوئریهای سنگین دیتابیس
تعداد I/O زیاد
سرویسهای زنجیرهای کند
یا Memory leak
یا Thread pool ناکافی
تا وقتی اینها درست نشه، هیچ تایم اوتی مساعد نخواهد بود.
2- تایماوت (Timeout) باید متناسب با نوع سرویس باشه
سرویسهای synchronous مثل اطلاعات مشتری: ۳–۱۰ ثانیه
سرویسهای پردازش سنگین: اصلاً synchronous نباید باشن
3- کارهای سنگین رو asynchronous کن
برای عملیات طولانی از:
Kafka
Redis queue
Celery
SQS
Internal event bus
استفاده کن و نتیجه رو بعداً تحویل بده.
4- بخش API Manager محل پردازش نیست
بخش ESB/WSO2/APIM فقط باید:
درخواست رو مدیریت کنه
امنیت رو برقرار کنه
نرخ و دسترسی رو کنترل کنه
نه اینکه ۳۰ ثانیه منتظر بمونه یک Backend تموم بشه!
5- تایماوتهای چندگانه تنظیم کن
Gateway timeout
Backend timeout
Load balancer timeout
Client timeout
اینها باید یکپارچه و هماهنگ باشن.
نتیجه
اگر یک سرویس کند است، بهترین راهحل "زیاد کردن Timeout" نیست.
راهحل طراحی درست و انتقال پردازشهای سنگین به async است.
تایماوت باید حداقلی، منطقی و قابل پیشبینی باشد، نه پنهانکننده مشکل.
<Mobin Mokhtarzadeh/>
-----------
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
یکی از رایجترین سؤالها در تیمهای یکپارچهسازی اینه که:
«وقتی زمان پاسخدهی یک سرویس زیاده، من که API Manager یا ESB هستم Timeout رو روی چند ثانیه تنظیم کنم؟»
ظاهرش سادهست؛ ولی پشتش یک نکته مهم وجود داره:
تایم اوت رو ESB یا API Manager تعیین نمیکنه؛ معماری سیستم تعیین میکنه.
خیلی وقتها Timeout بالا فقط مشکل "طولانی بودن پردازش" نیست، بلکه نشونه یک مشکل بزرگتره.
چرا نباید Timeout رو زیاد کنیم؟
اگر Backend کند باشه، طولانیکردن Timeout فقط مشکل رو پنهان میکنه.
مثلاً Lag در گیتوی باعث میشه کانکشنها قفل بشن و Load کل سیستم بالا بره.
صف درخواستها روی گیتوی ساخته میشه و کل سیستم ناپایدار میشه.
چه کارهایی باید انجام بشه؟
1- ریشه مشکل کندی سرویس رو پیدا کن
کوئریهای سنگین دیتابیس
تعداد I/O زیاد
سرویسهای زنجیرهای کند
یا Memory leak
یا Thread pool ناکافی
تا وقتی اینها درست نشه، هیچ تایم اوتی مساعد نخواهد بود.
2- تایماوت (Timeout) باید متناسب با نوع سرویس باشه
سرویسهای synchronous مثل اطلاعات مشتری: ۳–۱۰ ثانیه
سرویسهای پردازش سنگین: اصلاً synchronous نباید باشن
3- کارهای سنگین رو asynchronous کن
برای عملیات طولانی از:
Kafka
Redis queue
Celery
SQS
Internal event bus
استفاده کن و نتیجه رو بعداً تحویل بده.
4- بخش API Manager محل پردازش نیست
بخش ESB/WSO2/APIM فقط باید:
درخواست رو مدیریت کنه
امنیت رو برقرار کنه
نرخ و دسترسی رو کنترل کنه
نه اینکه ۳۰ ثانیه منتظر بمونه یک Backend تموم بشه!
5- تایماوتهای چندگانه تنظیم کن
Gateway timeout
Backend timeout
Load balancer timeout
Client timeout
اینها باید یکپارچه و هماهنگ باشن.
نتیجه
اگر یک سرویس کند است، بهترین راهحل "زیاد کردن Timeout" نیست.
راهحل طراحی درست و انتقال پردازشهای سنگین به async است.
تایماوت باید حداقلی، منطقی و قابل پیشبینی باشد، نه پنهانکننده مشکل.
<Mobin Mokhtarzadeh/>
-----------
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
Telegram
Labdon
Bardia invites you to add the folder “Labdon”, which includes 8 chats.
❤2👍1
🔵 عنوان مقاله
The Go team's latest meeting notes
🟢 خلاصه مقاله:
آخرین جلسه تیم گوی درباره برنامهریزیهای آینده این پروژه برگزار شد. در این جلسه، اعضا در مورد اهداف و مسیر توسعه آینده صحبت کردند و بر نیازهای مهم تمرکز کردند تا پروژه در مسیر پیشرفت پایدار باقی بماند. بهخصوص، برنامههایی برای بهبود قابلیتهای فنی و ارتقای کارایی را مطرح کردند که نقش مهمی در توسعه این تکنولوژی خواهند داشت.
در بخش دیگری از جلسه، اعضا بر اهمیت برنامهریزی برای سال ۲۰۲۶ تأکید کردند. آنها قصد دارند بر بهبود مقیاسپذیری سیستم تمرکز کرده و راهکارهایی برای افزایش سرعت و کارایی اجرایی ارائه دهند. در کنار این، توسعه ویژگیهایی مانند پشتیبانی رایگان و عملیات SIMD برای بهبود عملکرد و بهرهوری سیستم در دستور کار قرار گرفته است. این موارد نشاندهنده تعهد تیم به نوآوری و ارتقاء مستمر است تا پروژه بتواند پاسخگوی نیازهای آینده باشد.
تمرکز بر توسعه ابزارهای قدرتمند و پشتیبانی گستردهتر، هدف نهایی تیم است تا پروژه بتواند در محیطهای مختلف بهتر عمل کند و رضایت کاربران نهایی را افزایش دهد. تیم با برنامهریزی دقیق و هدفگذاری واضح، امیدوار است در آینده نزدیک این اهداف را محقق سازد و جایگاه این پروژه را در جامعه توسعهدهندگان بالا ببرد.
#برنامه_ریزی_۲۰۲۶ #پشتیبانی_رایگان #مقیاسپذیری #پشتیبانی_SIMD
🟣لینک مقاله:
https://golangweekly.com/link/177535/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The Go team's latest meeting notes
🟢 خلاصه مقاله:
آخرین جلسه تیم گوی درباره برنامهریزیهای آینده این پروژه برگزار شد. در این جلسه، اعضا در مورد اهداف و مسیر توسعه آینده صحبت کردند و بر نیازهای مهم تمرکز کردند تا پروژه در مسیر پیشرفت پایدار باقی بماند. بهخصوص، برنامههایی برای بهبود قابلیتهای فنی و ارتقای کارایی را مطرح کردند که نقش مهمی در توسعه این تکنولوژی خواهند داشت.
در بخش دیگری از جلسه، اعضا بر اهمیت برنامهریزی برای سال ۲۰۲۶ تأکید کردند. آنها قصد دارند بر بهبود مقیاسپذیری سیستم تمرکز کرده و راهکارهایی برای افزایش سرعت و کارایی اجرایی ارائه دهند. در کنار این، توسعه ویژگیهایی مانند پشتیبانی رایگان و عملیات SIMD برای بهبود عملکرد و بهرهوری سیستم در دستور کار قرار گرفته است. این موارد نشاندهنده تعهد تیم به نوآوری و ارتقاء مستمر است تا پروژه بتواند پاسخگوی نیازهای آینده باشد.
تمرکز بر توسعه ابزارهای قدرتمند و پشتیبانی گستردهتر، هدف نهایی تیم است تا پروژه بتواند در محیطهای مختلف بهتر عمل کند و رضایت کاربران نهایی را افزایش دهد. تیم با برنامهریزی دقیق و هدفگذاری واضح، امیدوار است در آینده نزدیک این اهداف را محقق سازد و جایگاه این پروژه را در جامعه توسعهدهندگان بالا ببرد.
#برنامه_ریزی_۲۰۲۶ #پشتیبانی_رایگان #مقیاسپذیری #پشتیبانی_SIMD
🟣لینک مقاله:
https://golangweekly.com/link/177535/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
Go compiler and runtime meeting notes · Issue #43930 · golang/go
Google's Go compiler and runtime team meets periodically (roughly weekly) to discuss ongoing development of the compiler and runtime. While not open to the public, there's been desire by th...
❤2👍2
Forwarded from Gopher Job
ایلان ماسک: دیگر هیچ رشته ای مانند کامپیوتر آینده ساز و پایدار نخواهد بود!
🔵 عنوان مقاله
v0.45.0 of golang.org/x/crypto
🟢 خلاصه مقاله:
نسخه ۰.۴۵.۰ بسته golang.org/x/crypto منتشر شده است که به منظور برطرفسازی دو مسئله امنیتی در بخشهای crypto/ssh و crypto/ssh/agent طراحی شده است. این بروزرسانی با هدف افزایش ایمنی و جلوگیری از بهرهبرداریهای مخرب از آسیبپذیریهای شناخته شده، منتشر شده است. کاربران و توسعهدهندگانی که از این بسته استفاده میکنند، توصیه میشود نسخه جدید را به زودی بهکار بگیرند تا سیستمهایشان در مقابل خطرات احتمالی محافظت شود.
#امنیت #گولنگ #کدباز #بروزرسانی
🟣لینک مقاله:
https://golangweekly.com/link/177530/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
v0.45.0 of golang.org/x/crypto
🟢 خلاصه مقاله:
نسخه ۰.۴۵.۰ بسته golang.org/x/crypto منتشر شده است که به منظور برطرفسازی دو مسئله امنیتی در بخشهای crypto/ssh و crypto/ssh/agent طراحی شده است. این بروزرسانی با هدف افزایش ایمنی و جلوگیری از بهرهبرداریهای مخرب از آسیبپذیریهای شناخته شده، منتشر شده است. کاربران و توسعهدهندگانی که از این بسته استفاده میکنند، توصیه میشود نسخه جدید را به زودی بهکار بگیرند تا سیستمهایشان در مقابل خطرات احتمالی محافظت شود.
#امنیت #گولنگ #کدباز #بروزرسانی
🟣لینک مقاله:
https://golangweekly.com/link/177530/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤1
🔵 عنوان مقاله
A Million Ways to Die From a Data Race in Go
🟢 خلاصه مقاله:
در دنیای برنامهنویسی، خطاهای ناشی از رقابت دادهها (data race) یکی از مشکلات رایج و پرچالش به حساب میآیند که میتوانند سبب مرگ برنامه شوند. در مقالهای با عنوان «یک میلیون راه برای مردن در اثر رقابت داده در زبان گو» به راحتی میتوان به تاثیرات منفی این خطاها پی برد. این مشکلات معمولا در برنامههایی رخ میدهند که چندین نخ (thread) همزمان دسترسی همزمان به دادههای مشترک دارند، بدون اینکه مکانیزمهای حفاظتی کافی برای جلوگیری از تداخلها اعمال شده باشد. نتیجه این خطاها غالباً unpredictable است و ممکن است باعث کرش سیستم، از دست دادن دادهها یا رفتارهای عجیب و غریب شود.
در ادامه، نویسنده به اهمیت شناخت و مدیریت بهتر رقابت دادهها اشاره میکند، و نشان میدهد که چگونه برنامهنویسان میتوانند با استفاده از ابزارها و روشهای مختلف مانند ابزارهای تست و نظارت بر همزمانی، این مشکلات را کاهش دهند. جلوگیری از این خطاها نیازمند تمرین و آشنایی دقیق با مفاهیم همزمانی و استفاده مناسب از سینکها و کانالهای زبان Go است. بهکارگیری استراتژیهای صحیح میتواند از مردنهای ناخواسته و ناامیدکننده در پروژههای نرمافزاری جلوگیری کند.
در بخش دیگری از مطالب، نویسنده به تجربیات شخصی خود در ساخت یک مولد سایت استاتیک در زبان Go اشاره میکند. او توضیح میدهد که چرا تصمیم گرفته است خودش این ابزار را بسازد، و مزایای استفاده از توسعهدهنده شخصی در مقابل ابزارهای آماده را بررسی میکند. این کار باعث شد تا کنترل کامل روی فرآیند تولید محتوا داشته باشد و قابلیتهای سفارشیسازی بیشتری ارائه دهد، که در نهایت منجر به پروژهای کارآمدتر و مطابق نیازهای خاص او شد.
همچنین، در مقاله دیگری، درباره رویکردهای پیادهسازی Shutdown تدریجی و امن در برنامههای نوشتهشده در زبان Go بحث میشود. کار با عملیات خاموشی نرم و کنترل شده برای جلوگیری از از دسترفتن دادهها یا بروز خطاهای احتمالی، موضوع مهمی است که در توسعه برنامههای بزرگ و حساس باید رعایت شود. نویسندگان نشان میدهند چگونه میتوان با استفاده از کانالها و سینکها، خروج ایمن و مطمئنی را تضمین کرد که نه تنها از خرابی سیستم جلوگیری میکند بلکه تجربه کاربری بهتری را نیز فراهم میآورد.
در مجموع، این مطالب نشان میدهند که فهم عمیق از مفاهیم همزمانی و مدیریت موارد پیشرفته، کلید ساخت برنامههای مقاوم و قابل اعتماد در زبان Go است، چه در زمینه توسعه ابزارهای جدید، چه در تضمین امنیت و پایداری سیستمهای حیاتی.
#برنامهنویسی #گولنگ #مدیریت_همزمانی #کدنویسی
🟣لینک مقاله:
https://golangweekly.com/link/177540/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
A Million Ways to Die From a Data Race in Go
🟢 خلاصه مقاله:
در دنیای برنامهنویسی، خطاهای ناشی از رقابت دادهها (data race) یکی از مشکلات رایج و پرچالش به حساب میآیند که میتوانند سبب مرگ برنامه شوند. در مقالهای با عنوان «یک میلیون راه برای مردن در اثر رقابت داده در زبان گو» به راحتی میتوان به تاثیرات منفی این خطاها پی برد. این مشکلات معمولا در برنامههایی رخ میدهند که چندین نخ (thread) همزمان دسترسی همزمان به دادههای مشترک دارند، بدون اینکه مکانیزمهای حفاظتی کافی برای جلوگیری از تداخلها اعمال شده باشد. نتیجه این خطاها غالباً unpredictable است و ممکن است باعث کرش سیستم، از دست دادن دادهها یا رفتارهای عجیب و غریب شود.
در ادامه، نویسنده به اهمیت شناخت و مدیریت بهتر رقابت دادهها اشاره میکند، و نشان میدهد که چگونه برنامهنویسان میتوانند با استفاده از ابزارها و روشهای مختلف مانند ابزارهای تست و نظارت بر همزمانی، این مشکلات را کاهش دهند. جلوگیری از این خطاها نیازمند تمرین و آشنایی دقیق با مفاهیم همزمانی و استفاده مناسب از سینکها و کانالهای زبان Go است. بهکارگیری استراتژیهای صحیح میتواند از مردنهای ناخواسته و ناامیدکننده در پروژههای نرمافزاری جلوگیری کند.
در بخش دیگری از مطالب، نویسنده به تجربیات شخصی خود در ساخت یک مولد سایت استاتیک در زبان Go اشاره میکند. او توضیح میدهد که چرا تصمیم گرفته است خودش این ابزار را بسازد، و مزایای استفاده از توسعهدهنده شخصی در مقابل ابزارهای آماده را بررسی میکند. این کار باعث شد تا کنترل کامل روی فرآیند تولید محتوا داشته باشد و قابلیتهای سفارشیسازی بیشتری ارائه دهد، که در نهایت منجر به پروژهای کارآمدتر و مطابق نیازهای خاص او شد.
همچنین، در مقاله دیگری، درباره رویکردهای پیادهسازی Shutdown تدریجی و امن در برنامههای نوشتهشده در زبان Go بحث میشود. کار با عملیات خاموشی نرم و کنترل شده برای جلوگیری از از دسترفتن دادهها یا بروز خطاهای احتمالی، موضوع مهمی است که در توسعه برنامههای بزرگ و حساس باید رعایت شود. نویسندگان نشان میدهند چگونه میتوان با استفاده از کانالها و سینکها، خروج ایمن و مطمئنی را تضمین کرد که نه تنها از خرابی سیستم جلوگیری میکند بلکه تجربه کاربری بهتری را نیز فراهم میآورد.
در مجموع، این مطالب نشان میدهند که فهم عمیق از مفاهیم همزمانی و مدیریت موارد پیشرفته، کلید ساخت برنامههای مقاوم و قابل اعتماد در زبان Go است، چه در زمینه توسعه ابزارهای جدید، چه در تضمین امنیت و پایداری سیستمهای حیاتی.
#برنامهنویسی #گولنگ #مدیریت_همزمانی #کدنویسی
🟣لینک مقاله:
https://golangweekly.com/link/177540/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔵 عنوان مقاله
learn more about Go's release cycle here.
🟢 خلاصه مقاله:
بیشتر در مورد چرخه عرضه Go و زمانبندی بروزرسانیهای این زبان برنامهنویسی بیاموزید. در خبرنامه هفتگی Golang Weekly، جدیدترین مقالات و بهروزرسانیها درباره روند توسعه و انتشار نسخههای Go منتشر میشود. داشتن آگاهی از این فرایندها کمک میکند توسعهدهندگان بهتر برنامهریزی کرده و از امکانات جدید بهرهمند شوند.
#زبان_برنامه_نویسی #Golang #بروزرسانی #توسعه_نرمافزار
🟣لینک مقاله:
https://golangweekly.com/link/177534/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
learn more about Go's release cycle here.
🟢 خلاصه مقاله:
بیشتر در مورد چرخه عرضه Go و زمانبندی بروزرسانیهای این زبان برنامهنویسی بیاموزید. در خبرنامه هفتگی Golang Weekly، جدیدترین مقالات و بهروزرسانیها درباره روند توسعه و انتشار نسخههای Go منتشر میشود. داشتن آگاهی از این فرایندها کمک میکند توسعهدهندگان بهتر برنامهریزی کرده و از امکانات جدید بهرهمند شوند.
#زبان_برنامه_نویسی #Golang #بروزرسانی #توسعه_نرمافزار
🟣لینک مقاله:
https://golangweekly.com/link/177534/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Go Wiki: Go-Release-Cycle - The Go Programming Language
❤1
🔵 عنوان مقاله
Goyek 3.0: A Go Library for Task Automation
🟢 خلاصه مقاله:
کتابخانه گویک ۳.۰: یک کتابخانه قدرتمند برای خودکارسازی وظایف در گولنگ
کتابخانه گویک ۳.۰ یک ابزار ساده و در عین حال چندپلتفرم است که برای خودکارسازی وظایف طراحی شده است. این کتابخانه، مشابه ابزارهایی مانند make، امکان تعریف وظایف را در قالبی مشابه زبان قالبسازی Cobra فراهم میکند. در این سیستم، وظایف به گونهای تعریف میشوند که فضای تعبیر و اجرای آنها بسیار واضح و قابل فهم است، و اقدامات انجامشده حس یک تست واحد را دارد. نسخه سوم این ابزار، برخی تغییرات قابل توجهی داشته که باید در هنگام بروزرسانی مورد توجه قرار گیرد.
این کتابخانه با فراهم کردن یک رابط ساده و کارآمد، فرآیندهای تکراری را سرعت بخشیده و به توسعهدهندگان کمک میکند که وظایف پیچیدهتر را به صورت سازمانیافتهتر مدیریت کنند. با امکانات ویژهای که در نسخه جدید ارائه شده، بهرهوری و قابلیت اطمینان در خودکارسازی وظایف به طرز محسوسی بهبود یافته است. این ابزار یک گزینه عالی برای تیمهایی است که در جستجوی راهحلی سبک و انعطافپذیر برای خودکارسازی فرآیندهای توسعه و عملیاتهای روزمره هستند.
#خودکارسازی #گولنگ #برنامهنویسی #توسعه
🟣لینک مقاله:
https://golangweekly.com/link/177543/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Goyek 3.0: A Go Library for Task Automation
🟢 خلاصه مقاله:
کتابخانه گویک ۳.۰: یک کتابخانه قدرتمند برای خودکارسازی وظایف در گولنگ
کتابخانه گویک ۳.۰ یک ابزار ساده و در عین حال چندپلتفرم است که برای خودکارسازی وظایف طراحی شده است. این کتابخانه، مشابه ابزارهایی مانند make، امکان تعریف وظایف را در قالبی مشابه زبان قالبسازی Cobra فراهم میکند. در این سیستم، وظایف به گونهای تعریف میشوند که فضای تعبیر و اجرای آنها بسیار واضح و قابل فهم است، و اقدامات انجامشده حس یک تست واحد را دارد. نسخه سوم این ابزار، برخی تغییرات قابل توجهی داشته که باید در هنگام بروزرسانی مورد توجه قرار گیرد.
این کتابخانه با فراهم کردن یک رابط ساده و کارآمد، فرآیندهای تکراری را سرعت بخشیده و به توسعهدهندگان کمک میکند که وظایف پیچیدهتر را به صورت سازمانیافتهتر مدیریت کنند. با امکانات ویژهای که در نسخه جدید ارائه شده، بهرهوری و قابلیت اطمینان در خودکارسازی وظایف به طرز محسوسی بهبود یافته است. این ابزار یک گزینه عالی برای تیمهایی است که در جستجوی راهحلی سبک و انعطافپذیر برای خودکارسازی فرآیندهای توسعه و عملیاتهای روزمره هستند.
#خودکارسازی #گولنگ #برنامهنویسی #توسعه
🟣لینک مقاله:
https://golangweekly.com/link/177543/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - goyek/goyek: Task automation Go library
Task automation Go library. Contribute to goyek/goyek development by creating an account on GitHub.
🔵 عنوان مقاله
Advancing Go Garbage Collection with Green Tea
🟢 خلاصه مقاله:
در این مقاله، مایکل، عضو تیم توسعه زبان برنامهنویسی Go، بهطور جامع و قابل درک نحوه عملکرد سیستم جمعآوری زباله در زبان Go را توضیح میدهد. جمعآوری زباله یا گاربیج کالکشن، فرآیندی است که به خودکارسازی مدیریت حافظه کمک میکند و از نشت حافظه جلوگیری مینماید. بهخصوص در برنامههای بزرگ و پیچیده، کارآمد بودن این سیستم اهمیت زیادی دارد تا برنامهها سریع و بدون مشکل اجرا شوند.
مایکل در توضیحات خود به معرفی رویکرد جدیدی میپردازد که بهنام "چای سبز" (Green Tea) شناخته میشود. این تکنیک با هدف بهبود کارایی و کاهش وقفههای ناشی از جمعآوری زباله در نسخه جدید Go 1.26 طراحی شده است. این روش تلاش میکند فرآیند جمعآوری زباله را به شکلی مؤثرتر و کمتر متمرکز بر توقف برنامه انجام دهد، اما در عین حال عملکرد کلی را حفظ کند یا حتی بهبود بخشد. در نتیجه، توسعهدهندگان میتوانند برنامههایی سازگارتر، سریعتر و کارآمدتر بنویسند.
با معرفی مفهوم "چای سبز"، تیم توسعه Go قصد دارد تا راهحلی نوآورانه و پایدار برای مدیریت حافظه ارائه دهد که تفاوت قابل توجهی نسبت به راهکارهای قبلی دارد. آنها معتقدند این رویکرد، نه تنها باعث بهبود کارایی میشود، بلکه توسعه برنامههای پیچیده را آسانتر و موثرتر میسازد و در نهایت، تجربه توسعهدهندگان را بهبود میبخشد. این پیشرفت نویدبخش آیندهای روشن برای زبان Go است که بر پایه تکنولوژیهای نو و بهبود مستمر ساخته شده است.
#آموزش_برنامهنویسی #زبان_برنامهنویسی_گو #جمعآوری_زباله #توسعه_نرمافزار
🟣لینک مقاله:
https://golangweekly.com/link/177528/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Advancing Go Garbage Collection with Green Tea
🟢 خلاصه مقاله:
در این مقاله، مایکل، عضو تیم توسعه زبان برنامهنویسی Go، بهطور جامع و قابل درک نحوه عملکرد سیستم جمعآوری زباله در زبان Go را توضیح میدهد. جمعآوری زباله یا گاربیج کالکشن، فرآیندی است که به خودکارسازی مدیریت حافظه کمک میکند و از نشت حافظه جلوگیری مینماید. بهخصوص در برنامههای بزرگ و پیچیده، کارآمد بودن این سیستم اهمیت زیادی دارد تا برنامهها سریع و بدون مشکل اجرا شوند.
مایکل در توضیحات خود به معرفی رویکرد جدیدی میپردازد که بهنام "چای سبز" (Green Tea) شناخته میشود. این تکنیک با هدف بهبود کارایی و کاهش وقفههای ناشی از جمعآوری زباله در نسخه جدید Go 1.26 طراحی شده است. این روش تلاش میکند فرآیند جمعآوری زباله را به شکلی مؤثرتر و کمتر متمرکز بر توقف برنامه انجام دهد، اما در عین حال عملکرد کلی را حفظ کند یا حتی بهبود بخشد. در نتیجه، توسعهدهندگان میتوانند برنامههایی سازگارتر، سریعتر و کارآمدتر بنویسند.
با معرفی مفهوم "چای سبز"، تیم توسعه Go قصد دارد تا راهحلی نوآورانه و پایدار برای مدیریت حافظه ارائه دهد که تفاوت قابل توجهی نسبت به راهکارهای قبلی دارد. آنها معتقدند این رویکرد، نه تنها باعث بهبود کارایی میشود، بلکه توسعه برنامههای پیچیده را آسانتر و موثرتر میسازد و در نهایت، تجربه توسعهدهندگان را بهبود میبخشد. این پیشرفت نویدبخش آیندهای روشن برای زبان Go است که بر پایه تکنولوژیهای نو و بهبود مستمر ساخته شده است.
#آموزش_برنامهنویسی #زبان_برنامهنویسی_گو #جمعآوری_زباله #توسعه_نرمافزار
🟣لینک مقاله:
https://golangweekly.com/link/177528/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
GopherCon 2025 - Advancing Go Garbage Collection with Green Tea - Michael Knyszek
Memory latency and bandwidth are becoming increasingly constrained, and these trends are at odds with most of today's garbage collection algorithms, including Go's. In this talk, Michael will dive deep into Green Tea, a new parallel mark algorithm to accelerate…
🔵 عنوان مقاله
reporting secrets in unlisted GitHub Gist posts too
🟢 خلاصه مقاله:
در دنیای توسعه نرمافزار، به اشتراکگذاری کدها و نکات فنی یکی از روشهای محبوب است. اما مسائلی که باید درباره آنها آگاه بود، تنها به پروژههای عمومی محدود نمیشود. اخیراً، توجهها به این موضوع جلب شده است که حتی یادداشتهای خصوصی در GitHub Gist، که معمولاً برای نگهداری کدهای موقت و خصوصی استفاده میشوند، میتوانند حاوی اسرار حساس باشند. این یادداشتها در ظاهر خصوصی تلقی میشوند، اما در مواردی، اشتباهات در تنظیمات حریم خصوصی یا خطاهای دیگر میتواند منجر به درز اطلاعات مهم شود.
مقاله اخیر در خبرنامه Golang Weekly به این مسئله اشاره میکند که چرا باید با دقت بیشتری به یادداشتهای Gist غیر قابل لیست کردن توجه کنیم. افراد ممکن است تصور کنند که این یادداشتها تنها برای خودشان باقی میمانند، اما اگر تنظیمات اشتباه باشد یا لینکهای مستقیم به آنها در اختیار دیگران قرار گیرد، اطلاعات حساس، مثل کلیدهای API یا کدهای رمزگذاری، ممکن است فاش شود. بنابراین، کنترل و نظارت بر این نوع مطالب اهمیت ویژهای دارد تا از افشای ناخواسته اسرار کسبوکار و امنیتی جلوگیری شود.
در نتیجه، کاربران و توسعهدهندگان باید همواره هوشیار باشند و تنظیمات حریم خصوصی و دسترسی به یادداشتهای Gist خود را به دقت بررسی کنند. این اقدامات ساده اما مهم، میتواند از بروز مشکلات جدی جلوگیری کرده و امنیت پروژههای نرمافزاری را تضمین کند. با رعایت نکات ذکر شده، میتوان به صورت مؤثر از افشای اسرار خودداری کرد و امنیت اطلاعات را حفظ نمود.
#امنیت_نرمافزار #GitHubGist #حریم_خصوصی #کدهای_مخفی
🟣لینک مقاله:
https://golangweekly.com/link/177559/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
reporting secrets in unlisted GitHub Gist posts too
🟢 خلاصه مقاله:
در دنیای توسعه نرمافزار، به اشتراکگذاری کدها و نکات فنی یکی از روشهای محبوب است. اما مسائلی که باید درباره آنها آگاه بود، تنها به پروژههای عمومی محدود نمیشود. اخیراً، توجهها به این موضوع جلب شده است که حتی یادداشتهای خصوصی در GitHub Gist، که معمولاً برای نگهداری کدهای موقت و خصوصی استفاده میشوند، میتوانند حاوی اسرار حساس باشند. این یادداشتها در ظاهر خصوصی تلقی میشوند، اما در مواردی، اشتباهات در تنظیمات حریم خصوصی یا خطاهای دیگر میتواند منجر به درز اطلاعات مهم شود.
مقاله اخیر در خبرنامه Golang Weekly به این مسئله اشاره میکند که چرا باید با دقت بیشتری به یادداشتهای Gist غیر قابل لیست کردن توجه کنیم. افراد ممکن است تصور کنند که این یادداشتها تنها برای خودشان باقی میمانند، اما اگر تنظیمات اشتباه باشد یا لینکهای مستقیم به آنها در اختیار دیگران قرار گیرد، اطلاعات حساس، مثل کلیدهای API یا کدهای رمزگذاری، ممکن است فاش شود. بنابراین، کنترل و نظارت بر این نوع مطالب اهمیت ویژهای دارد تا از افشای ناخواسته اسرار کسبوکار و امنیتی جلوگیری شود.
در نتیجه، کاربران و توسعهدهندگان باید همواره هوشیار باشند و تنظیمات حریم خصوصی و دسترسی به یادداشتهای Gist خود را به دقت بررسی کنند. این اقدامات ساده اما مهم، میتواند از بروز مشکلات جدی جلوگیری کرده و امنیت پروژههای نرمافزاری را تضمین کند. با رعایت نکات ذکر شده، میتوان به صورت مؤثر از افشای اسرار خودداری کرد و امنیت اطلاعات را حفظ نمود.
#امنیت_نرمافزار #GitHubGist #حریم_خصوصی #کدهای_مخفی
🟣لینک مقاله:
https://golangweekly.com/link/177559/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The GitHub Blog
Secrets in unlisted GitHub gists are reported to secret scanning partners - GitHub Changelog
Starting today, GitHub will report any publicly leaked secrets found in unlisted GitHub gists to the respective secret scanning partner. GitHub gists can be listed (denoted with a public label)…
🔵 عنوان مقاله
Why I Built My Own Static Site Generator in Go
🟢 خلاصه مقاله:
در دنیای توسعه وب، ابزارهای متنوعی برای ساخت سایتهای استاتیک وجود دارند. اما من تصمیم گرفتم یک مولد سایت استاتیک اختصاصی را با استفاده از زبان برنامهنویسی Go بسازم. هدف من از این کار، داشتن کنترل کامل بر فرآیند تولید محتوا و بهبود کارایی و امنیت سایت بود. ساختن چنین ابزاری به من اجازه داد که نیازهای خاص پروژهام را بهتر برآورده کنم و از محدودیتهای ابزارهای موجود عبور کنم.
در فرآیند طراحی و توسعه این مولد، تمرکز اصلی من بر سادگی، سرعت و کارایی بود. با بهرهگیری از امکانات قوی و سبک بودن زبان Go، توانستم یک ابزار سریع و قابل اعتماد خلق کنم که قادر است به سرعت صفحات استاتیک را تولید کند و فرآیند تولید را بهبود بخشد. این پروژه نشان داد که حتی ابزارهای ساده میتوانند نقش مهمی در بهبود گردش کار توسعه دهنده ایفا کنند و باعث افزایش بهرهوری شوند.
در نهایت، ساخت این مولد سایت استاتیک در Go نه تنها تجربه من را در برنامهنویسی تقویت کرد، بلکه توانستم ابزاری را توسعه دهم که مطابق با نیازهای شخصی و حرفهای من است. این پروژه نمونهای از اهمیت نوآوری و خلاقیت در مسیر توسعه وب است که میتواند به سایر توسعهدهندگان نیز انگیزه دهد تا ابزارهای سفارشی خود را ایجاد کنند و فرآیندهای کاری خود را بهبود بخشند.
#توسعه_وب #برنامه_نویسی_گوا #مولد_سایت #ابزارهای_مخنصی
🟣لینک مقاله:
https://golangweekly.com/link/177541/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Why I Built My Own Static Site Generator in Go
🟢 خلاصه مقاله:
در دنیای توسعه وب، ابزارهای متنوعی برای ساخت سایتهای استاتیک وجود دارند. اما من تصمیم گرفتم یک مولد سایت استاتیک اختصاصی را با استفاده از زبان برنامهنویسی Go بسازم. هدف من از این کار، داشتن کنترل کامل بر فرآیند تولید محتوا و بهبود کارایی و امنیت سایت بود. ساختن چنین ابزاری به من اجازه داد که نیازهای خاص پروژهام را بهتر برآورده کنم و از محدودیتهای ابزارهای موجود عبور کنم.
در فرآیند طراحی و توسعه این مولد، تمرکز اصلی من بر سادگی، سرعت و کارایی بود. با بهرهگیری از امکانات قوی و سبک بودن زبان Go، توانستم یک ابزار سریع و قابل اعتماد خلق کنم که قادر است به سرعت صفحات استاتیک را تولید کند و فرآیند تولید را بهبود بخشد. این پروژه نشان داد که حتی ابزارهای ساده میتوانند نقش مهمی در بهبود گردش کار توسعه دهنده ایفا کنند و باعث افزایش بهرهوری شوند.
در نهایت، ساخت این مولد سایت استاتیک در Go نه تنها تجربه من را در برنامهنویسی تقویت کرد، بلکه توانستم ابزاری را توسعه دهم که مطابق با نیازهای شخصی و حرفهای من است. این پروژه نمونهای از اهمیت نوآوری و خلاقیت در مسیر توسعه وب است که میتواند به سایر توسعهدهندگان نیز انگیزه دهد تا ابزارهای سفارشی خود را ایجاد کنند و فرآیندهای کاری خود را بهبود بخشند.
#توسعه_وب #برنامه_نویسی_گوا #مولد_سایت #ابزارهای_مخنصی
🟣لینک مقاله:
https://golangweekly.com/link/177541/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Duy NG
Why I built my own static site generator
From Jekyll to Zola to building Gozzi learning by building instead of just using.
🔵 عنوان مقاله
Graceful Shutdown in Go
🟢 خلاصه مقاله:
در برنامهنویسی به زبان Go، مدیریت صحیح پایان کار برنامه اهمیت زیادی دارد. یکی از روشهای موثر برای اطمینان از بسته شدن سالم برنامه، استفاده از مفهوم “Graceful Shutdown” است. این روش کمک میکند تا مواردی مانند بستن فایلها، خاتمه دادن به درخواستهای فعال و آزادسازی منابع به شکل منظم و امن انجام شود، و از بروز خطا یا از دست رفتن دادهها جلوگیری گردد.
در مقاله اخیر خبرنامه Golang Weekly، نحوه پیادهسازی shutdown مؤثر و امن در برنامههای Go مورد بررسی قرار گرفته است. این فرآیند معمولاً با کنترل سیگنالهای سیستم، مانند SIGINT یا SIGTERM، آغاز میشود. برنامه با دریافت این سیگنال، روند پایانکار را آغاز میکند و ابتدا کلیه درخواستهای در حال پردازش را تمام میکند، سپس منابع را آزاد میسازد و در نهایت خارج میشود. این رویکرد به توسعهدهندگان کمک میکند تا برنامههایی پایدارتر و قابل اطمینانتر بنویسند که بتوانند بدون مشکل در فرآیندهای 종료، کار خود را به پایان برسانند.
در این مقاله، ابزارها و روشهای مختلفی برای پیادهسازی این مرحله نهایی در برنامههای Go معرفی شده است، از جمله استفاده از کانالها، WaitGroups و context برای هماهنگسازی پایان عملیات. رعایت این نکات کلیدی، خصوصاً در سرویسهای وب و برنامههای سروری، میتواند به بهبود کارایی و کاهش خطاهای پسزمینه کمک کند. در نتیجه، هر برنامهنویس Go باید به اهمیت “Graceful Shutdown” واقف باشد و از بهترین روشها برای پیادهسازی آن بهره گیرد.
#برنامهنویسی_گو #Shutdown_سلامت #کدنویسی_پایدار #نکات_مهم
🟣لینک مقاله:
https://golangweekly.com/link/177539/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Graceful Shutdown in Go
🟢 خلاصه مقاله:
در برنامهنویسی به زبان Go، مدیریت صحیح پایان کار برنامه اهمیت زیادی دارد. یکی از روشهای موثر برای اطمینان از بسته شدن سالم برنامه، استفاده از مفهوم “Graceful Shutdown” است. این روش کمک میکند تا مواردی مانند بستن فایلها، خاتمه دادن به درخواستهای فعال و آزادسازی منابع به شکل منظم و امن انجام شود، و از بروز خطا یا از دست رفتن دادهها جلوگیری گردد.
در مقاله اخیر خبرنامه Golang Weekly، نحوه پیادهسازی shutdown مؤثر و امن در برنامههای Go مورد بررسی قرار گرفته است. این فرآیند معمولاً با کنترل سیگنالهای سیستم، مانند SIGINT یا SIGTERM، آغاز میشود. برنامه با دریافت این سیگنال، روند پایانکار را آغاز میکند و ابتدا کلیه درخواستهای در حال پردازش را تمام میکند، سپس منابع را آزاد میسازد و در نهایت خارج میشود. این رویکرد به توسعهدهندگان کمک میکند تا برنامههایی پایدارتر و قابل اطمینانتر بنویسند که بتوانند بدون مشکل در فرآیندهای 종료، کار خود را به پایان برسانند.
در این مقاله، ابزارها و روشهای مختلفی برای پیادهسازی این مرحله نهایی در برنامههای Go معرفی شده است، از جمله استفاده از کانالها، WaitGroups و context برای هماهنگسازی پایان عملیات. رعایت این نکات کلیدی، خصوصاً در سرویسهای وب و برنامههای سروری، میتواند به بهبود کارایی و کاهش خطاهای پسزمینه کمک کند. در نتیجه، هر برنامهنویس Go باید به اهمیت “Graceful Shutdown” واقف باشد و از بهترین روشها برای پیادهسازی آن بهره گیرد.
#برنامهنویسی_گو #Shutdown_سلامت #کدنویسی_پایدار #نکات_مهم
🟣لینک مقاله:
https://golangweekly.com/link/177539/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
pawelgrzybek.com
Graceful shutdown in Go | pawelgrzybek.com
The process of a graceful shutdown in the Go application can be overwhelming. Here is the flow that I recently implemented in my application and that works flawlessly.
❤1👍1🍾1
Forwarded from Gopher Job
ایلان ماسک: دیگر هیچ رشته ای مانند کامپیوتر آینده ساز و پایدار نخواهد بود!
👾15❤2
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.
❤7🍾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...
🏆2
🔵 عنوان مقاله
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