🔵 عنوان مقاله
Crush: Charm's Go-Powered AI Coding Agent
🟢 خلاصه مقاله:
Crush یک عامل کدنویسی مبتنی بر هوش مصنوعی از شرکت Charm و ساختهشده با Go است که پس از چند ماه توسعه از یک مخزن اولیه به ابزاری پخته و قابل استفاده تبدیل شده. مهمترین مزیت Crush انعطافپذیری آن است: با هر LLM API سازگار با OpenAI کار میکند، بنابراین میتوانید بسته به نیاز عملکرد، هزینه یا حریم دادهها از ارائهدهندگان مختلف یا endpointهای خودمیزبان استفاده کنید. Crush رقیبی برای ابزارهایی مانند Claude Code و Codex محسوب میشود و با تکیه بر سادگی، سرعت و همخوانی با جریان کاری توسعهدهندگان—بهویژه در اکوسیستم Go و فضای CLI—تجربهای آشنا و قابل ترکیب ارائه میدهد. اگر به دنبال دستیار کدنویسی بدون قفلشدن به یک فروشنده واحد هستید، Crush گزینهای جدی برای بررسی است.
#AI #Go #DevTools #LLM #OpenAI #Charm #CodingAssistant #BubbleTea
🟣لینک مقاله:
https://golangweekly.com/link/176304/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Crush: Charm's Go-Powered AI Coding Agent
🟢 خلاصه مقاله:
Crush یک عامل کدنویسی مبتنی بر هوش مصنوعی از شرکت Charm و ساختهشده با Go است که پس از چند ماه توسعه از یک مخزن اولیه به ابزاری پخته و قابل استفاده تبدیل شده. مهمترین مزیت Crush انعطافپذیری آن است: با هر LLM API سازگار با OpenAI کار میکند، بنابراین میتوانید بسته به نیاز عملکرد، هزینه یا حریم دادهها از ارائهدهندگان مختلف یا endpointهای خودمیزبان استفاده کنید. Crush رقیبی برای ابزارهایی مانند Claude Code و Codex محسوب میشود و با تکیه بر سادگی، سرعت و همخوانی با جریان کاری توسعهدهندگان—بهویژه در اکوسیستم Go و فضای CLI—تجربهای آشنا و قابل ترکیب ارائه میدهد. اگر به دنبال دستیار کدنویسی بدون قفلشدن به یک فروشنده واحد هستید، Crush گزینهای جدی برای بررسی است.
#AI #Go #DevTools #LLM #OpenAI #Charm #CodingAssistant #BubbleTea
🟣لینک مقاله:
https://golangweekly.com/link/176304/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - charmbracelet/crush: The glamourous AI coding agent for your favourite terminal 💘
The glamourous AI coding agent for your favourite terminal 💘 - charmbracelet/crush
❤1👍1
🔵 عنوان مقاله
on using JSON schemas in Go
🟢 خلاصه مقاله:
** این مقاله به مزایای استفاده از JSON Schema برای تعریف، اعتبارسنجی و مستندسازی دادههای JSON در Go میپردازد و نشان میدهد چطور میتوان این رویکرد را در یک جریان کاری «schema-first» بهصورت عملی پیاده کرد. محور بحث، نگاشت دقیق قابلیتهای JSON Schema به انواع ایستا در Go است؛ از چالشهایی مانند فیلدهای اختیاری، additionalProperties، enumها، nullability و ترکیبگرهایی مثل oneOf/anyOf/allOf تا تصمیمهای طراحی میان رویکردهای مبتنی بر reflection در زمان اجرا و code generation در زمان ساخت. مقاله سپس به کار انجامشده در Google، بهویژه در مخزن google/jsonschema-go، اشاره میکند که هدفش ارائه نگاشت پایدار schema↔type، اعتبارسنجی سریع و گزارش خطای قابل اتکا است. در ادامه، مخزن ianlancetaylor/jsonschema نیز معرفی میشود و نقاط همگرایی و تفاوتهای رویکردی آن بیان میگردد. در پایان، مسیرهای آینده مانند همگرایی بهتر با OpenAPI، تقویت codegen برای ویژگیهای پیشرفته، راهبردهای تکامل schema و یکپارچگی عمیقتر با ابزارها مطرح میشود تا توسعه مبتنی بر Schema در Go هم قابل اتکا و هم خوشتجربه باشد.
#Go #JSONSchema #Google #golang #APIs #Validation #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176345/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
on using JSON schemas in Go
🟢 خلاصه مقاله:
** این مقاله به مزایای استفاده از JSON Schema برای تعریف، اعتبارسنجی و مستندسازی دادههای JSON در Go میپردازد و نشان میدهد چطور میتوان این رویکرد را در یک جریان کاری «schema-first» بهصورت عملی پیاده کرد. محور بحث، نگاشت دقیق قابلیتهای JSON Schema به انواع ایستا در Go است؛ از چالشهایی مانند فیلدهای اختیاری، additionalProperties، enumها، nullability و ترکیبگرهایی مثل oneOf/anyOf/allOf تا تصمیمهای طراحی میان رویکردهای مبتنی بر reflection در زمان اجرا و code generation در زمان ساخت. مقاله سپس به کار انجامشده در Google، بهویژه در مخزن google/jsonschema-go، اشاره میکند که هدفش ارائه نگاشت پایدار schema↔type، اعتبارسنجی سریع و گزارش خطای قابل اتکا است. در ادامه، مخزن ianlancetaylor/jsonschema نیز معرفی میشود و نقاط همگرایی و تفاوتهای رویکردی آن بیان میگردد. در پایان، مسیرهای آینده مانند همگرایی بهتر با OpenAPI، تقویت codegen برای ویژگیهای پیشرفته، راهبردهای تکامل schema و یکپارچگی عمیقتر با ابزارها مطرح میشود تا توسعه مبتنی بر Schema در Go هم قابل اتکا و هم خوشتجربه باشد.
#Go #JSONSchema #Google #golang #APIs #Validation #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176345/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍1
🔵 عنوان مقاله
Go's Green Tea Garbage Collector
🟢 خلاصه مقاله:
** در Go 1.25 یک garbage collector آزمایشی به نام Green Tea معرفی شده که با هدف کاهش تأخیر و نوسان، بهبود کارایی و مصرف حافظه، و مقیاسپذیری بهتر ارائه میشود. این قابلیت فعلاً بهصورت opt-in و از طریق فلگهای مستند در release notes فعال میشود و پیشفرض نیست. نتایج اولیه بسته به بار کاری میتواند متفاوت باشد؛ در صورت پسرفت میتوان به GC فعلی بازگشت. تیم Go با تکیه بر بازخورد و سنجش میدانی، در نسخههای بعدی آن را بهبود میدهد و در صورت موفقیت، میتواند بر راهبرد آینده GC در Go اثر بگذارد.
#Go #Golang #GreenTea #GarbageCollection #Go125 #MemoryManagement #Performance #Runtime
🟣لینک مقاله:
https://golangweekly.com/link/176318/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go's Green Tea Garbage Collector
🟢 خلاصه مقاله:
** در Go 1.25 یک garbage collector آزمایشی به نام Green Tea معرفی شده که با هدف کاهش تأخیر و نوسان، بهبود کارایی و مصرف حافظه، و مقیاسپذیری بهتر ارائه میشود. این قابلیت فعلاً بهصورت opt-in و از طریق فلگهای مستند در release notes فعال میشود و پیشفرض نیست. نتایج اولیه بسته به بار کاری میتواند متفاوت باشد؛ در صورت پسرفت میتوان به GC فعلی بازگشت. تیم Go با تکیه بر بازخورد و سنجش میدانی، در نسخههای بعدی آن را بهبود میدهد و در صورت موفقیت، میتواند بر راهبرد آینده GC در Go اثر بگذارد.
#Go #Golang #GreenTea #GarbageCollection #Go125 #MemoryManagement #Performance #Runtime
🟣لینک مقاله:
https://golangweekly.com/link/176318/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
The Green Tea Garbage Collector - The Go Programming Language
Go 1.25 includes a new experimental garbage collector, Green Tea.
تو نسخه ۱.۲۵ گولنگ یه garbage collector تازه به اسم Green Tea اضافه کردن که سرعتش خیلی بهتره. فعلاً آزمایشیه ولی از ۱.۲۶ به بعد قراره پیشفرض بشه.
اگه گو کار میکنید یا نه، پیشنهاد میکنیم این پست رو بخونید. خیلی خوب توضیح میده GC چطور کار میکنه و چطوری باید به پرفورمنس یه برنامه نگاه کنیم؛
از instruction های CPU تا دسترسی به مموری و بقیه داستانها.
لینکش اینه:
https://go.dev/blog/greenteagc
<Ali />
➖➖➖➖➖➖➖➖
👑 @gopher_academy
اگه گو کار میکنید یا نه، پیشنهاد میکنیم این پست رو بخونید. خیلی خوب توضیح میده GC چطور کار میکنه و چطوری باید به پرفورمنس یه برنامه نگاه کنیم؛
از instruction های CPU تا دسترسی به مموری و بقیه داستانها.
لینکش اینه:
https://go.dev/blog/greenteagc
<Ali />
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤5🔥2 2
🔵 عنوان مقاله
Fyne: A GUI App Framework for Desktop, Mobile and Web
🟢 خلاصه مقاله:
**Fyne یک فریمورک GUI برای Desktop، Mobile و Web است که با Go کار میکند و امکان ساخت اپهای بومی چندسکویی را بدون بستهبندی یک موتور کامل مرورگر فراهم میکند. این روش به باینریهای کوچکتر، مصرف حافظه کمتر و تجربهی بصری منسجمتر منجر میشود. نسخههای اخیر بهبودهای مهمی در i18n، قابلیتهای canvas برای ترسیم و گزینههای styling ارائه کردهاند تا هم بومیسازی سادهتر شود و هم ظاهر و تمها بهتر با استانداردهای هر پلتفرم و نیازهای برند هماهنگ شوند.
#Fyne #Go #GUI #CrossPlatform #MobileDevelopment #DesktopApps #i18n #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176309/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Fyne: A GUI App Framework for Desktop, Mobile and Web
🟢 خلاصه مقاله:
**Fyne یک فریمورک GUI برای Desktop، Mobile و Web است که با Go کار میکند و امکان ساخت اپهای بومی چندسکویی را بدون بستهبندی یک موتور کامل مرورگر فراهم میکند. این روش به باینریهای کوچکتر، مصرف حافظه کمتر و تجربهی بصری منسجمتر منجر میشود. نسخههای اخیر بهبودهای مهمی در i18n، قابلیتهای canvas برای ترسیم و گزینههای styling ارائه کردهاند تا هم بومیسازی سادهتر شود و هم ظاهر و تمها بهتر با استانداردهای هر پلتفرم و نیازهای برند هماهنگ شوند.
#Fyne #Go #GUI #CrossPlatform #MobileDevelopment #DesktopApps #i18n #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176309/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍2🔥1
چرا Go تا این حد سریع است ؟ پشت پردهی کامپایل و Runtime
وقتی برای اولین بار دیدم برنامهی Go چقدر سریع اجرا میشه، کنجکاو شدم بدونم پشت داستان چیه
با توجه به مطالعه دایکیومنت های رسمی خود گو سعی کردم تمامی مباحثی که درک کردم به رو به ساده ترین شیوه ممکن براتون بنویسم و رفرنس ها رو هم در حد ممکن لابه لای بخش ها گذاشتم
لینک مقاله
<Erfan Yousefi/>
وقتی برای اولین بار دیدم برنامهی Go چقدر سریع اجرا میشه، کنجکاو شدم بدونم پشت داستان چیه
با توجه به مطالعه دایکیومنت های رسمی خود گو سعی کردم تمامی مباحثی که درک کردم به رو به ساده ترین شیوه ممکن براتون بنویسم و رفرنس ها رو هم در حد ممکن لابه لای بخش ها گذاشتم
لینک مقاله
<Erfan Yousefi/>
Linkedin
چرا Go تا این حد سریع است؟ پشت پردهی کامپایل و Runtime
(Why Go Is So Fast — The Compiler and Runtime Architecture) 🚀 مقدمه وقتی برنامهای با Go مینویسی و اجراش میکنی، اولین چیزی که چشمگیر میشه سرعت باورنکردنیه — نه فقط در زمان اجرا، بلکه حتی در مرحلهی build و compile. برخلاف زبانهایی مثل Python یا Node.
👍3 3🔥1
Forwarded from Software Engineer Labdon
تفاوت Access Token و Refresh Token به زبان ساده
در سیستمهای احراز هویت مدرن مثل Keycloak یا IdentityServer،
دوبار اسم «توکن» رو میشنویم:
ولی واقعاً فرقشون چیه؟
Access Token
توکن کوتاهمدتیه (مثلاً ۵ تا ۱۵ دقیقه) که بعد از لاگین کاربر صادر میشه.
هر بار که کاربر به API درخواست میفرسته، این توکن همراه درخواست میره تا سرور بفهمه کاربر کیه.
Refresh Token
طول عمر بیشتری داره (مثلاً ۳۰ دقیقه یا حتی چند ساعت).
اگر Access Token منقضی بشه، سیستم با استفاده از Refresh Token یه Access Token جدید میگیره
— بدون اینکه کاربر مجبور باشه دوباره لاگین کنه.
به زبان ساده Access Token مثل بلیط ورود به یک سالن هست ️
اما Refresh Token مثل کارت عضویت اون سالنه
باهاش میتونی هر بار بلیط جدید بگیری بدون ایستادن تو صف لاگین.
مزیت این روش:
امنیت بیشتر (Access Token کوتاهمدت و ایمنتره)
تجربه کاربری بهتر (کاربر کمتر لاگاوت میشه)
کنترل بهتر سمت سرور روی اعتبار توکنها
در پروژهی اخیرم با Keycloak این مکانیزم رو پیادهسازی کردم.
کاربر بعد از ثبتنام، هم در Keycloak و هم در SQL Server ذخیره میشه تا
میان سیستم احراز هویت و اپلیکیشن اصلی یکپارچگی کامل برقرار باشه.
هر وقت در مورد Authentication کار میکنی،
یادت باشه که هدف فقط «ورود کاربر» نیست —
بلکه «مدیریت ایمن و هوشمند عمر نشست (Session Lifecycle)» هست.
در دنیای Api ها ما موظفیم با توکن ها کار کنیم
در ریزور پیج ها یک ورودی هیدن داشتیم که مدیریت توسط آن توسط خود asp بود
اما در api ها مدیریت توکن ها با ماست
بهترین گزینه هم استفاده از IDP (Identity Provider) هاست چون هم فرانت و هم بک را برای ما پوشش میدهد.
<Hossein Molaei/>
در سیستمهای احراز هویت مدرن مثل Keycloak یا IdentityServer،
دوبار اسم «توکن» رو میشنویم:
ولی واقعاً فرقشون چیه؟
Access Token
توکن کوتاهمدتیه (مثلاً ۵ تا ۱۵ دقیقه) که بعد از لاگین کاربر صادر میشه.
هر بار که کاربر به API درخواست میفرسته، این توکن همراه درخواست میره تا سرور بفهمه کاربر کیه.
Refresh Token
طول عمر بیشتری داره (مثلاً ۳۰ دقیقه یا حتی چند ساعت).
اگر Access Token منقضی بشه، سیستم با استفاده از Refresh Token یه Access Token جدید میگیره
— بدون اینکه کاربر مجبور باشه دوباره لاگین کنه.
به زبان ساده Access Token مثل بلیط ورود به یک سالن هست ️
اما Refresh Token مثل کارت عضویت اون سالنه
باهاش میتونی هر بار بلیط جدید بگیری بدون ایستادن تو صف لاگین.
مزیت این روش:
امنیت بیشتر (Access Token کوتاهمدت و ایمنتره)
تجربه کاربری بهتر (کاربر کمتر لاگاوت میشه)
کنترل بهتر سمت سرور روی اعتبار توکنها
در پروژهی اخیرم با Keycloak این مکانیزم رو پیادهسازی کردم.
کاربر بعد از ثبتنام، هم در Keycloak و هم در SQL Server ذخیره میشه تا
میان سیستم احراز هویت و اپلیکیشن اصلی یکپارچگی کامل برقرار باشه.
هر وقت در مورد Authentication کار میکنی،
یادت باشه که هدف فقط «ورود کاربر» نیست —
بلکه «مدیریت ایمن و هوشمند عمر نشست (Session Lifecycle)» هست.
در دنیای Api ها ما موظفیم با توکن ها کار کنیم
در ریزور پیج ها یک ورودی هیدن داشتیم که مدیریت توسط آن توسط خود asp بود
اما در api ها مدیریت توکن ها با ماست
بهترین گزینه هم استفاده از IDP (Identity Provider) هاست چون هم فرانت و هم بک را برای ما پوشش میدهد.
<Hossein Molaei/>
👍3❤1
در چهارمین رویداد تکوتاک – سلسله رویدادهای تخصصی در حوزه توسعه نرمافزار همکاران سیستم – که به صورت #رایگان و #آنلاین برگزار میشه، سراغ مبحث Concurrency در Go خواهیم رفت:
✅ CSP & GMP Concept
✅ Unbounded Concurrency
✅ Race Condition & Shared State
✅ Goroutine Leaks
✅ Context & Cancellation & Shutdown
✅ Scheduler and Runtime Behavior
👨🏻💻 ارائهدهنده: هادی جعفری | برنامهنویس ارشد همکاران سیستم
📅 پنجشنبه ۲۲ آبانماه | ساعت ۱۰ تا ۱۲
📌 شرکت در رویداد فقط در صورت ثبتنام امکانپذیره.
🌐 اطلاعات بیشتر و لینک ثبتنام:
https://B2n.ir/bw9161
.
Linkedin | Instagram
✅ CSP & GMP Concept
✅ Unbounded Concurrency
✅ Race Condition & Shared State
✅ Goroutine Leaks
✅ Context & Cancellation & Shutdown
✅ Scheduler and Runtime Behavior
👨🏻💻 ارائهدهنده: هادی جعفری | برنامهنویس ارشد همکاران سیستم
📅 پنجشنبه ۲۲ آبانماه | ساعت ۱۰ تا ۱۲
📌 شرکت در رویداد فقط در صورت ثبتنام امکانپذیره.
🌐 اطلاعات بیشتر و لینک ثبتنام:
https://B2n.ir/bw9161
.
Linkedin | Instagram
❤3👍1
🎙️ عنوان پادکست:
An episode as short as the name of a unix command
خلاصه پادکست:
این اپیزود کوتاه بهروزترین خبرها را پوشش میدهد: انتشار نسخههای Go 1.25.3 و 1.24.9، و مرور بلاگ Thea Heinen دربارهی کشف یک باگ در کامپایلر arm64 زبان Go. همچنین دربارهی پیشرفت پشتیبانی zsh و بهبودهای مرتبط با sh صحبت میشود، و خبر یک Go meetup و ضبط زنده اپیزود در San Francisco اعلام میگردد. در بخش Lightning، به qjs (یک JavaScript runtime مدرن و امن بدون CGO برای برنامههای Go) و Kaizen (تماشای انیمه از ترمینال) میپردازیم. در پایان از مخاطبان برای حمایت از پادکست در Patreon دعوت میشود.
#Go #Golang #arm64 #Unix #zsh #JavaScript #qjs #Podcast
An episode as short as the name of a unix command
خلاصه پادکست:
این اپیزود کوتاه بهروزترین خبرها را پوشش میدهد: انتشار نسخههای Go 1.25.3 و 1.24.9، و مرور بلاگ Thea Heinen دربارهی کشف یک باگ در کامپایلر arm64 زبان Go. همچنین دربارهی پیشرفت پشتیبانی zsh و بهبودهای مرتبط با sh صحبت میشود، و خبر یک Go meetup و ضبط زنده اپیزود در San Francisco اعلام میگردد. در بخش Lightning، به qjs (یک JavaScript runtime مدرن و امن بدون CGO برای برنامههای Go) و Kaizen (تماشای انیمه از ترمینال) میپردازیم. در پایان از مخاطبان برای حمایت از پادکست در Patreon دعوت میشود.
#Go #Golang #arm64 #Unix #zsh #JavaScript #qjs #Podcast
👍1🔥1
🔵 عنوان مقاله
How We Saved 70% CPU and 60% Memory in Refinery’s Go Code
🟢 خلاصه مقاله:
**تیم Refinery روی یک سرویس مهم مبتنی بر Go با مصرف بالای CPU و Memory کار میکرد و با پروفایلینگ دقیق (pprof، tracing و بنچمارکهای انتهابهانتها) گلوگاههای واقعی را پیدا کرد. بیشترین صرفهجویی با حذف کارهای غیرضروری بهدست آمد: حذف پردازشها و serialization تکراری، دوری از reflection در مسیرهای داغ، جایگزینی JSON در hot path با دسترسی مستقیم/کدگذاری ساده، پیشاختصاص slices/maps و بازاستفاده از بافرها برای کاهش allocation و فشار GC. در همروندی، بهجای goroutineهای بدونمهار، از worker poolهای محدود و backpressure استفاده شد، کارها batch و دادهها تا حد امکان stream شدند تا قفلزنی و جابهجایی زمینه کاهش یابد. همچنین چند حلقه O(n^2) با ایندکسگذاری مبتنی بر map/set جایگزین شد، نتایج گران با cache کردن تکرار نشد و الگوهای I/O با خواندن/نوشتن تجمیعی بهینه شدند. در نهایت با تکیه بر allocationهای روی stack، استفاده از sync.Pool و روشهای zero-copy، نیاز به GC پایین آمد. نتیجه: حدود 70% کاهش مصرف CPU و 60% کاهش Memory همراه با بهبود تاخیرهای p95/p99. درس کلیدی: بهینهسازی اغلب یعنی کمتر کار کردن—اندازهگیری کن، کار زائد را حذف کن و سادهسازی را تکرار کن.
#Go #Golang #Performance #Profiling #CPU #Memory #Optimization #pprof
🟣لینک مقاله:
https://golangweekly.com/link/176624/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How We Saved 70% CPU and 60% Memory in Refinery’s Go Code
🟢 خلاصه مقاله:
**تیم Refinery روی یک سرویس مهم مبتنی بر Go با مصرف بالای CPU و Memory کار میکرد و با پروفایلینگ دقیق (pprof، tracing و بنچمارکهای انتهابهانتها) گلوگاههای واقعی را پیدا کرد. بیشترین صرفهجویی با حذف کارهای غیرضروری بهدست آمد: حذف پردازشها و serialization تکراری، دوری از reflection در مسیرهای داغ، جایگزینی JSON در hot path با دسترسی مستقیم/کدگذاری ساده، پیشاختصاص slices/maps و بازاستفاده از بافرها برای کاهش allocation و فشار GC. در همروندی، بهجای goroutineهای بدونمهار، از worker poolهای محدود و backpressure استفاده شد، کارها batch و دادهها تا حد امکان stream شدند تا قفلزنی و جابهجایی زمینه کاهش یابد. همچنین چند حلقه O(n^2) با ایندکسگذاری مبتنی بر map/set جایگزین شد، نتایج گران با cache کردن تکرار نشد و الگوهای I/O با خواندن/نوشتن تجمیعی بهینه شدند. در نهایت با تکیه بر allocationهای روی stack، استفاده از sync.Pool و روشهای zero-copy، نیاز به GC پایین آمد. نتیجه: حدود 70% کاهش مصرف CPU و 60% کاهش Memory همراه با بهبود تاخیرهای p95/p99. درس کلیدی: بهینهسازی اغلب یعنی کمتر کار کردن—اندازهگیری کن، کار زائد را حذف کن و سادهسازی را تکرار کن.
#Go #Golang #Performance #Profiling #CPU #Memory #Optimization #pprof
🟣لینک مقاله:
https://golangweekly.com/link/176624/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Honeycomb
How We Saved 70% of CPU and 60% of Memory in Refinery’s Go Code, No Rust Required.
We've just released Refinery 3. 0 , a performance-focused update which significantly improves Refinery's CPU and memory efficiency.
👍2❤1
🔵 عنوان مقاله
Concord: A Resilient Chord Implementation in Go
🟢 خلاصه مقاله:
اConcord یک پیادهسازی مقاوم از پروتکل Chord در زبان Go است که برای پایداری در برابر churn و خرابیهای جزئی طراحی شده. Chord یک DHT همتابههمتاست که با استفاده از consistent hashing یک حلقه منطقی میسازد؛ هر گره بخشی از فضای کلید را نگه میدارد و با تکیه بر successor، predecessor و finger table، کلیدها را در زمان تقریبی O(log N) مسیردهی میکند.
تمرکز اصلی Concord بر مدیریت عضوگیری و بازیابی سریع است: پایش و stabilization دورهای برای بهروزرسانی اشارهگرها، استفاده از successor list برای تحمل خرابی، و تعمیر پسزمینه fingerها برای کاهش انحراف مسیریابی. جهت دوام داده، کلیدها روی چند successor تکرار میشوند و همگرایی نسخهها با سیاستهای ساده نسخهبندی یا last-writer-wins انجام میگیرد. تشخیص خرابی با زمانبندیها و heartbeatهای اکتشافی تنظیم میشود تا بین حساسیت و خطای مثبت کاذب تعادل برقرار شود.
مدل همزمانی Go پایهی طراحی Concord است: goroutineها و channelها کارهای پروتکلی مانند stabilization، replication و رسیدگی به درخواستها را جدا میکنند تا کندی یا خرابی یک همتا کل سیستم را متوقف نکند. ارتباطات RPC مرز روشنی بین گرهها ایجاد میکند و الگوهای backoff و circuit breaker از آبشاریشدن timeoutها جلوگیری میکنند. Concord همچنین به نیازهای عملیاتی مانند bootstrap گرههای جدید، خروج ایمن، و توزیع مجدد کماختلال کلیدها میپردازد.
نتایج آزمایشهای churn، تزریق خطا و بنچمارکها نشان میدهد که lookupها نزدیک به O(log N) باقی میمانند و در زمان خرابیهای گذرا نرخ موفقیت بالایی دارند؛ در حالیکه کارایی پایدار همتراز Chord استاندارد و از نظر تابآوری بهتر است. حاصل کار، یک DHT عملی مبتنی بر Go برای کاربردهایی مانند فراداده توزیعشده، service discovery و content indexing است.
#DistributedSystems #Chord #DHT #Go #P2P #FaultTolerance #ConsistentHashing #Scalability
🟣لینک مقاله:
https://golangweekly.com/link/176641/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Concord: A Resilient Chord Implementation in Go
🟢 خلاصه مقاله:
اConcord یک پیادهسازی مقاوم از پروتکل Chord در زبان Go است که برای پایداری در برابر churn و خرابیهای جزئی طراحی شده. Chord یک DHT همتابههمتاست که با استفاده از consistent hashing یک حلقه منطقی میسازد؛ هر گره بخشی از فضای کلید را نگه میدارد و با تکیه بر successor، predecessor و finger table، کلیدها را در زمان تقریبی O(log N) مسیردهی میکند.
تمرکز اصلی Concord بر مدیریت عضوگیری و بازیابی سریع است: پایش و stabilization دورهای برای بهروزرسانی اشارهگرها، استفاده از successor list برای تحمل خرابی، و تعمیر پسزمینه fingerها برای کاهش انحراف مسیریابی. جهت دوام داده، کلیدها روی چند successor تکرار میشوند و همگرایی نسخهها با سیاستهای ساده نسخهبندی یا last-writer-wins انجام میگیرد. تشخیص خرابی با زمانبندیها و heartbeatهای اکتشافی تنظیم میشود تا بین حساسیت و خطای مثبت کاذب تعادل برقرار شود.
مدل همزمانی Go پایهی طراحی Concord است: goroutineها و channelها کارهای پروتکلی مانند stabilization، replication و رسیدگی به درخواستها را جدا میکنند تا کندی یا خرابی یک همتا کل سیستم را متوقف نکند. ارتباطات RPC مرز روشنی بین گرهها ایجاد میکند و الگوهای backoff و circuit breaker از آبشاریشدن timeoutها جلوگیری میکنند. Concord همچنین به نیازهای عملیاتی مانند bootstrap گرههای جدید، خروج ایمن، و توزیع مجدد کماختلال کلیدها میپردازد.
نتایج آزمایشهای churn، تزریق خطا و بنچمارکها نشان میدهد که lookupها نزدیک به O(log N) باقی میمانند و در زمان خرابیهای گذرا نرخ موفقیت بالایی دارند؛ در حالیکه کارایی پایدار همتراز Chord استاندارد و از نظر تابآوری بهتر است. حاصل کار، یک DHT عملی مبتنی بر Go برای کاربردهایی مانند فراداده توزیعشده، service discovery و content indexing است.
#DistributedSystems #Chord #DHT #Go #P2P #FaultTolerance #ConsistentHashing #Scalability
🟣لینک مقاله:
https://golangweekly.com/link/176641/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - ollelogdahl/concord: A resilient Chord implementation in Go
A resilient Chord implementation in Go. Contribute to ollelogdahl/concord development by creating an account on GitHub.
🔵 عنوان مقاله
Dependency Management in Database Design
🟢 خلاصه مقاله:
** مدیریت وابستگیها در پروژههای بزرگ Go، بهخصوص در موتورهای پایگاهداده، چالشزا است. مطالعه موردی Dolt (با ۷۶۲ هزار خط کد Go) نشان میدهد که لایهبندی دقیق، مرزبندی شفاف، و تکیه بر interfaceها بهجای پیادهسازیهای مستقیم، جلوی چرخههای import و کوپلینگ پنهان را میگیرد. استفاده از Go modules، نسخهبندی معنایی، internal packages و اجراهای خودکار در CI برای شناسایی چرخهها و importهای ممنوع، سلامت نمودار وابستگی را حفظ میکند. راهبرد تست مبتنی بر mock/fake و تستهای یکپارچه، هر لایه را مستقل قابل آزمون میکند و رگرسیون را کاهش میدهد. نتیجه این است که زیرسامانههایی مانند ذخیرهسازی، پرسوجو و تکرار در Dolt میتوانند مستقل و با سرعت تکامل پیدا کنند، بدون آنکه تغییرات به کل کدبیس سرایت کند.
#Go #Golang #DependencyManagement #ModularArchitecture #DatabaseSystems #Dolt #SoftwareArchitecture #Scalability
🟣لینک مقاله:
https://golangweekly.com/link/176659/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dependency Management in Database Design
🟢 خلاصه مقاله:
** مدیریت وابستگیها در پروژههای بزرگ Go، بهخصوص در موتورهای پایگاهداده، چالشزا است. مطالعه موردی Dolt (با ۷۶۲ هزار خط کد Go) نشان میدهد که لایهبندی دقیق، مرزبندی شفاف، و تکیه بر interfaceها بهجای پیادهسازیهای مستقیم، جلوی چرخههای import و کوپلینگ پنهان را میگیرد. استفاده از Go modules، نسخهبندی معنایی، internal packages و اجراهای خودکار در CI برای شناسایی چرخهها و importهای ممنوع، سلامت نمودار وابستگی را حفظ میکند. راهبرد تست مبتنی بر mock/fake و تستهای یکپارچه، هر لایه را مستقل قابل آزمون میکند و رگرسیون را کاهش میدهد. نتیجه این است که زیرسامانههایی مانند ذخیرهسازی، پرسوجو و تکرار در Dolt میتوانند مستقل و با سرعت تکامل پیدا کنند، بدون آنکه تغییرات به کل کدبیس سرایت کند.
#Go #Golang #DependencyManagement #ModularArchitecture #DatabaseSystems #Dolt #SoftwareArchitecture #Scalability
🟣لینک مقاله:
https://golangweekly.com/link/176659/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
Dependency Management in Database Design
Modularization is critical for large codebases. If it feels like it's creating barriers, it's actually telling you something important about your code.
Forwarded from Software Engineer Labdon
Scaling API Independence: Mocking, Contract Testing & Observability in Large Microservices Environments
https://www.infoq.com/presentations/microservices-mocking-observability/
https://www.infoq.com/presentations/microservices-mocking-observability/
InfoQ
Scaling API Independence: Mocking, Contract Testing & Observability in Large Microservices Environments
Tom Akehurst explains strategies for overcoming microservice pain points like environment dependency and slow development. He advocates using realistic API simulation at scale, supported by contract testing , API observability, and GenAI integration. Learn…
google/adk-go: An open-source, code-first Go toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control.
https://github.com/google/adk-go
https://github.com/google/adk-go
GitHub
GitHub - google/adk-go: An open-source, code-first Go toolkit for building, evaluating, and deploying sophisticated AI agents with…
An open-source, code-first Go toolkit for building, evaluating, and deploying sophisticated AI agents with flexibility and control. - google/adk-go
❤2
🔵 عنوان مقاله
go-sqlite3: Go Bindings to SQLite Using Wazero
🟢 خلاصه مقاله:
این کتابخانه با نام go-sqlite3 امکان استفاده از SQLite در Go را بدون cgo فراهم میکند. هسته SQLite بهصورت WebAssembly اجرا و درون runtimeِ wazero بارگذاری میشود، در حالیکه رابطی سازگار با database/sql ارائه میدهد. نتیجه این است که بیشتر کدهای موجود مبتنی بر database/sql با کمترین تغییر کار میکنند و در عوض، مزایایی مثل باینریهای کاملاً استاتیک، کراسکامپایل آسان، وابستگیهای کمتر به سیستمعامل و استقرار سادهتر (بهویژه در کانتینر و Serverless) به دست میآید. اجرای SQLite داخل WebAssembly علاوهبر یک محیط ایزوله و قابل پیشبینی، ممکن است محدودیتهایی هم داشته باشد؛ از جمله عدم پشتیبانی برخی افزونههای بومی و کارایی پایینتر نسبت به نسخههای cgo. با این حال برای بسیاری از کاربردها مانند ابزارهای خط فرمان، سرویسهای سبک، تستها و محیطهای ابری، این مبادله بهخاطر قابلحمل بودن و سادگی عملیاتی ارزشمند است.
#Go #SQLite #WebAssembly #wazero #database_sql #cgo #GoBindings #Serverless
🟣لینک مقاله:
https://golangweekly.com/link/176633/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go-sqlite3: Go Bindings to SQLite Using Wazero
🟢 خلاصه مقاله:
این کتابخانه با نام go-sqlite3 امکان استفاده از SQLite در Go را بدون cgo فراهم میکند. هسته SQLite بهصورت WebAssembly اجرا و درون runtimeِ wazero بارگذاری میشود، در حالیکه رابطی سازگار با database/sql ارائه میدهد. نتیجه این است که بیشتر کدهای موجود مبتنی بر database/sql با کمترین تغییر کار میکنند و در عوض، مزایایی مثل باینریهای کاملاً استاتیک، کراسکامپایل آسان، وابستگیهای کمتر به سیستمعامل و استقرار سادهتر (بهویژه در کانتینر و Serverless) به دست میآید. اجرای SQLite داخل WebAssembly علاوهبر یک محیط ایزوله و قابل پیشبینی، ممکن است محدودیتهایی هم داشته باشد؛ از جمله عدم پشتیبانی برخی افزونههای بومی و کارایی پایینتر نسبت به نسخههای cgo. با این حال برای بسیاری از کاربردها مانند ابزارهای خط فرمان، سرویسهای سبک، تستها و محیطهای ابری، این مبادله بهخاطر قابلحمل بودن و سادگی عملیاتی ارزشمند است.
#Go #SQLite #WebAssembly #wazero #database_sql #cgo #GoBindings #Serverless
🟣لینک مقاله:
https://golangweekly.com/link/176633/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - ncruces/go-sqlite3: Go bindings to SQLite using wazero
Go bindings to SQLite using wazero. Contribute to ncruces/go-sqlite3 development by creating an account on GitHub.
❤1👍1
🔵 عنوان مقاله
switch Statements in Go
🟢 خلاصه مقاله:
این مطلب از Golang Weekly بهصورت عملی سراغ عبارتهای switch در Go میرود و نشان میدهد چگونه میتوان بهجای زنجیرههای if/else طولانی، کدی خواناتر نوشت. ابتدا نحو و قواعد ارزیابی switch، استفاده از چند مقدار در یک case، نقش default، و این نکته که در Go سقوط خودکار بین caseها وجود ندارد و فقط با fallthrough فعال میشود، توضیح داده میشود. سپس فرم بدون تگِ switch { ... } برای نگارش نگهبانهای منطقیِ مرتب معرفی میشود.
بخش بعدی به type switch اختصاص دارد: وقتی با interface سروکار دارید، switch روی v.(type) اجازه میدهد بر اساس نوع واقعی تصمیم بگیرید، از nil بهدرستی عبور کنید و محدوده متغیرها در سربرگ switch و داخل caseها را مدیریت کنید. مقاله الگوهای کاربردی مثل مسیردهی بر اساس روش HTTP، دستهبندی خطاها برحسب نوع، شاخهبندی زمانمحور و استفاده از ثابتها را مرور میکند و در کنار آن به نکات سبک و کارایی اشاره دارد. جمعبندی این است که با رعایت چند قاعده ساده و پرهیز از دامهای متداول، switch در Go ابزاری شفاف، قابل نگهداری و گاه سریعتر از شرطهای زنجیرهای خواهد بود.
#Go #Golang #GolangWeekly #switch #TypeSwitch #GoTips #Programming #Backend
🟣لینک مقاله:
https://golangweekly.com/link/176626/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
switch Statements in Go
🟢 خلاصه مقاله:
این مطلب از Golang Weekly بهصورت عملی سراغ عبارتهای switch در Go میرود و نشان میدهد چگونه میتوان بهجای زنجیرههای if/else طولانی، کدی خواناتر نوشت. ابتدا نحو و قواعد ارزیابی switch، استفاده از چند مقدار در یک case، نقش default، و این نکته که در Go سقوط خودکار بین caseها وجود ندارد و فقط با fallthrough فعال میشود، توضیح داده میشود. سپس فرم بدون تگِ switch { ... } برای نگارش نگهبانهای منطقیِ مرتب معرفی میشود.
بخش بعدی به type switch اختصاص دارد: وقتی با interface سروکار دارید، switch روی v.(type) اجازه میدهد بر اساس نوع واقعی تصمیم بگیرید، از nil بهدرستی عبور کنید و محدوده متغیرها در سربرگ switch و داخل caseها را مدیریت کنید. مقاله الگوهای کاربردی مثل مسیردهی بر اساس روش HTTP، دستهبندی خطاها برحسب نوع، شاخهبندی زمانمحور و استفاده از ثابتها را مرور میکند و در کنار آن به نکات سبک و کارایی اشاره دارد. جمعبندی این است که با رعایت چند قاعده ساده و پرهیز از دامهای متداول، switch در Go ابزاری شفاف، قابل نگهداری و گاه سریعتر از شرطهای زنجیرهای خواهد بود.
#Go #Golang #GolangWeekly #switch #TypeSwitch #GoTips #Programming #Backend
🟣لینک مقاله:
https://golangweekly.com/link/176626/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
Switch Statements in Go
Switch statements in Go have unique features that make it easy to write complex flow controls. Read this blog to see what makes them so special.
❤1
🔵 عنوان مقاله
The first release candidate of Bubble Tea 2.0
🟢 خلاصه مقاله:
اولین release candidate برای Bubble Tea 2.0 منتشر شده و نشان میدهد این فریمورک محبوب TUI به انتشار نهایی نزدیک است. مهمترین تغییر، جابهجایی import URL است؛ بنابراین لازم است مسیرهای import در پروژهها بهروزرسانی و تست شوند. علاوه بر این، تغییرات و بهبودهایی که پیشتر در یادداشتهای beta آمده بود در این نسخه جمعبندی شدهاند. پیشنهاد میشود برای جلو افتادن از انتشار نهایی، همین حالا RC را امتحان کنید، وابستگیها را بهروز کنید، تستها را اجرا کنید و بازخورد بدهید.
#BubbleTea #TUI #ReleaseCandidate #ImportURL #Beta #DeveloperTools #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176661/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The first release candidate of Bubble Tea 2.0
🟢 خلاصه مقاله:
اولین release candidate برای Bubble Tea 2.0 منتشر شده و نشان میدهد این فریمورک محبوب TUI به انتشار نهایی نزدیک است. مهمترین تغییر، جابهجایی import URL است؛ بنابراین لازم است مسیرهای import در پروژهها بهروزرسانی و تست شوند. علاوه بر این، تغییرات و بهبودهایی که پیشتر در یادداشتهای beta آمده بود در این نسخه جمعبندی شدهاند. پیشنهاد میشود برای جلو افتادن از انتشار نهایی، همین حالا RC را امتحان کنید، وابستگیها را بهروز کنید، تستها را اجرا کنید و بازخورد بدهید.
#BubbleTea #TUI #ReleaseCandidate #ImportURL #Beta #DeveloperTools #OpenSource
🟣لینک مقاله:
https://golangweekly.com/link/176661/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
Release v2.0.0-rc.1 · charmbracelet/bubbletea
This release includes a big change in the module name, and several message type changes. These types changed from type aliases to structs to improve extensibility and allow for future enhancements ...