🔵 عنوان مقاله
Failsafe: Fault Tolerance, Resilience Patterns & Policies
🟢 خلاصه مقاله:
Failsafe یک کتابخانه برای ساخت اپلیکیشنهای fault-tolerant است که به شما امکان میدهد کدهای حساس را با مجموعهای از سیاستهای تابآور مانند Retry، CircuitBreaker، RateLimiter، Timeout و Fallback بپوشانید. این سیاستها قابل ترکیباند و بدون تغییر منطق کسبوکار، حفاظتهای چندلایه ایجاد میکنند.
در نسخههای اخیر، دو قابلیت کلیدی اضافه شده است: نخست، usage tracking برای اعمال عدالت و جلوگیری از اثر “noisy neighbor” از طریق پایش مصرف و اجرای محدودیتها یا سهمیهها. دوم، execution budgets برای تعیین سقف کلی هزینه اعمال تابآوری—مثل مجموع retries یا hedges—در سطح یک فراخوانی، جریان کاری یا کل سیستم. این بودجهها مانع از افراط در بازیابی میشوند و تعادلی بین نرخ موفقیت، تأخیر، هزینه و SLOها برقرار میکنند.
خروجی این رویکرد، عملکرد قابلپیشبینیتر، تنزل کنترلشده در شرایط خطا و اعمال سیاستهای عملیاتی سازگار در برابر رخدادها و اوج ترافیک است.
#FaultTolerance #Resilience #Failsafe #Retry #CircuitBreaker #RateLimiter #Timeout #Fallback
🟣لینک مقاله:
https://golangweekly.com/link/175069/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Failsafe: Fault Tolerance, Resilience Patterns & Policies
🟢 خلاصه مقاله:
Failsafe یک کتابخانه برای ساخت اپلیکیشنهای fault-tolerant است که به شما امکان میدهد کدهای حساس را با مجموعهای از سیاستهای تابآور مانند Retry، CircuitBreaker، RateLimiter، Timeout و Fallback بپوشانید. این سیاستها قابل ترکیباند و بدون تغییر منطق کسبوکار، حفاظتهای چندلایه ایجاد میکنند.
در نسخههای اخیر، دو قابلیت کلیدی اضافه شده است: نخست، usage tracking برای اعمال عدالت و جلوگیری از اثر “noisy neighbor” از طریق پایش مصرف و اجرای محدودیتها یا سهمیهها. دوم، execution budgets برای تعیین سقف کلی هزینه اعمال تابآوری—مثل مجموع retries یا hedges—در سطح یک فراخوانی، جریان کاری یا کل سیستم. این بودجهها مانع از افراط در بازیابی میشوند و تعادلی بین نرخ موفقیت، تأخیر، هزینه و SLOها برقرار میکنند.
خروجی این رویکرد، عملکرد قابلپیشبینیتر، تنزل کنترلشده در شرایط خطا و اعمال سیاستهای عملیاتی سازگار در برابر رخدادها و اوج ترافیک است.
#FaultTolerance #Resilience #Failsafe #Retry #CircuitBreaker #RateLimiter #Timeout #Fallback
🟣لینک مقاله:
https://golangweekly.com/link/175069/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Failsafe-go
Fault tolerance and resilience patterns for Go
Failsafe-go website
❤1
Forwarded from Bardia & Erfan
پاول دورُف: حاضرَم بمیرم، ولی آزادی و امنیت کاربران رو نفروشم!
در گفتوگوی عمیق با «لِکس فریدمن»، بنیانگذار تلگرام از فلسفهٔ زندگی، حریم خصوصی، بیتکوین و مقاومتش در برابر فشار دولتها گفت.
> 🗣
🔒
او تأکید کرد تلگرام هیچوقت “در پشتی” برای دولتها باز نکرده و در برابر فشار روسیه و ایران برای دسترسی به اطلاعات یا سانسور مقاومت کرده است.
>
📱 ۷ اصل فکری و مدیریتی پاول دورُف (بر اساس مصاحبه):
1️⃣ آزادی و اخلاق بالاتر از هر سود مالی — او میگوید حاضر است تمام داراییاش را از دست بدهد تا آزادی بیان و امنیت کاربران حفظ شود.
2️⃣ مینیمالیسم و انضباط شخصی — سبک زندگیاش ساده، بدون الکل، قهوه یا حواسپرتی است؛ تمرکز کامل روی مأموریت و نظم ذهنی.
3️⃣ تیم کوچک، تأثیر بزرگ — معتقد است تیمهای بزرگ بهرهوری را میکُشند؛ موفقیت تلگرام حاصل اعتماد به چند نابغهٔ منضبط است.
4️⃣ مقاومت در برابر سانسور و در پشتی — هیچ دولت یا شرکتی حق کنترل یا شنود تلگرام را ندارد. رمزنگاری و طراحی MTProto را «دیوار آزادی دیجیتال» مینامد.
5️⃣ پول و قدرت ابزارند، نه هدف — او از مدلهای انحصاری و کمیسیونهای اپل و گوگل انتقاد میکند و تأکید دارد که ثروت نباید آزادی را محدود کند.
6️⃣ باور به فناوری آزاد مثل بیتکوین — بیتکوین را «نمادِ کاهش نیاز به اعتماد به واسطهها و آزادی مالی» میداند؛ از پروژه TON بهعنوان زیربنای اقتصاد آزاد تلگرام یاد میکند.
7️⃣ نگاه فلسفی به زندگی و مرگ — از کافکا، شوپنهاور و «جاودانگی کوانتومی» میگوید؛ باور دارد انسان باید بدون ترس از مرگ، بر پایهٔ ارزشهای خودش زندگی کند.
در گفتوگوی عمیق با «لِکس فریدمن»، بنیانگذار تلگرام از فلسفهٔ زندگی، حریم خصوصی، بیتکوین و مقاومتش در برابر فشار دولتها گفت.
> 🗣
«من ترجیح میدم بمیرم و تمام داراییم رو از دست بدهم تا اینکه اطلاعات کاربران رو به هر دولتی تحویل بدم.
آزادی و امنیت دادهها، خط قرمز من و تلگرامه.»
🔒
او تأکید کرد تلگرام هیچوقت “در پشتی” برای دولتها باز نکرده و در برابر فشار روسیه و ایران برای دسترسی به اطلاعات یا سانسور مقاومت کرده است.
>
«در روسیه و ایران بارها تلاش شد ما رو مجبور به همکاری کنن. ولی ما مقاومت کردیم چون اگر یکبار کوتاه بیای، دیگه آزادی واقعی وجود نداره.»
📱 ۷ اصل فکری و مدیریتی پاول دورُف (بر اساس مصاحبه):
1️⃣ آزادی و اخلاق بالاتر از هر سود مالی — او میگوید حاضر است تمام داراییاش را از دست بدهد تا آزادی بیان و امنیت کاربران حفظ شود.
2️⃣ مینیمالیسم و انضباط شخصی — سبک زندگیاش ساده، بدون الکل، قهوه یا حواسپرتی است؛ تمرکز کامل روی مأموریت و نظم ذهنی.
3️⃣ تیم کوچک، تأثیر بزرگ — معتقد است تیمهای بزرگ بهرهوری را میکُشند؛ موفقیت تلگرام حاصل اعتماد به چند نابغهٔ منضبط است.
4️⃣ مقاومت در برابر سانسور و در پشتی — هیچ دولت یا شرکتی حق کنترل یا شنود تلگرام را ندارد. رمزنگاری و طراحی MTProto را «دیوار آزادی دیجیتال» مینامد.
5️⃣ پول و قدرت ابزارند، نه هدف — او از مدلهای انحصاری و کمیسیونهای اپل و گوگل انتقاد میکند و تأکید دارد که ثروت نباید آزادی را محدود کند.
6️⃣ باور به فناوری آزاد مثل بیتکوین — بیتکوین را «نمادِ کاهش نیاز به اعتماد به واسطهها و آزادی مالی» میداند؛ از پروژه TON بهعنوان زیربنای اقتصاد آزاد تلگرام یاد میکند.
7️⃣ نگاه فلسفی به زندگی و مرگ — از کافکا، شوپنهاور و «جاودانگی کوانتومی» میگوید؛ باور دارد انسان باید بدون ترس از مرگ، بر پایهٔ ارزشهای خودش زندگی کند.
❤6 4👍2🐳2🍾1💋1
🔵 عنوان مقاله
3 Critical TTL Patterns for In-Memory Caching
🟢 خلاصه مقاله:
این مقاله سه الگوی کلیدی TTL برای کش درونحافظهای را توضیح میدهد و نشان میدهد چگونه انتخاب درست میان تازگی داده، کارایی و پایداری را ممکن میکند. الگوی اول، TTL ثابت است: هر مقدار پس از مدت مشخص منقضی میشود؛ ساده و قابلپیشبینی است، اما نزدیک انقضا میتواند داده قدیمی ارائه کند و پس از انقضا به «thundering herd» منجر شود مگر اینکه با jitter و همگرایی درخواستها مدیریت شود. الگوی دوم، TTL لغزشی است: هر دسترسی عمر آیتم را تمدید میکند، برای کلیدهای پرترافیک عالی است اما بدون «حداکثر عمر» ممکن است بعضی مقادیر عملاً هرگز تازهسازی نشوند. الگوی سوم، stale-while-revalidate (و refresh-ahead) است: مقدار کمی کهنه فوراً سرو میشود و تازهسازی در پسزمینه انجام میگیرد؛ با single-flight از هجوم درخواستهای همسان جلوگیری میکند و در صورت خطا میتوان با stale-if-error موقتاً از آخرین مقدار سالم استفاده کرد. در عمل ترکیب این الگوها—بههمراه TTLهای متفاوت برای هر کلید، jitter، backoff و رصد دقیق نرخ hit/miss—به تعادل بهینه میانجامد. نویسنده برای نمایش پیادهسازیهای عملی از کتابخانه Hot در اکوسیستم Go بهره میگیرد تا استفاده از این الگوها ساده و کارا شود.
#Caching #TTL #InMemoryCache #Go #Golang #StaleWhileRevalidate #Performance #CacheStampede
🟣لینک مقاله:
https://golangweekly.com/link/175058/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 Critical TTL Patterns for In-Memory Caching
🟢 خلاصه مقاله:
این مقاله سه الگوی کلیدی TTL برای کش درونحافظهای را توضیح میدهد و نشان میدهد چگونه انتخاب درست میان تازگی داده، کارایی و پایداری را ممکن میکند. الگوی اول، TTL ثابت است: هر مقدار پس از مدت مشخص منقضی میشود؛ ساده و قابلپیشبینی است، اما نزدیک انقضا میتواند داده قدیمی ارائه کند و پس از انقضا به «thundering herd» منجر شود مگر اینکه با jitter و همگرایی درخواستها مدیریت شود. الگوی دوم، TTL لغزشی است: هر دسترسی عمر آیتم را تمدید میکند، برای کلیدهای پرترافیک عالی است اما بدون «حداکثر عمر» ممکن است بعضی مقادیر عملاً هرگز تازهسازی نشوند. الگوی سوم، stale-while-revalidate (و refresh-ahead) است: مقدار کمی کهنه فوراً سرو میشود و تازهسازی در پسزمینه انجام میگیرد؛ با single-flight از هجوم درخواستهای همسان جلوگیری میکند و در صورت خطا میتوان با stale-if-error موقتاً از آخرین مقدار سالم استفاده کرد. در عمل ترکیب این الگوها—بههمراه TTLهای متفاوت برای هر کلید، jitter، backoff و رصد دقیق نرخ hit/miss—به تعادل بهینه میانجامد. نویسنده برای نمایش پیادهسازیهای عملی از کتابخانه Hot در اکوسیستم Go بهره میگیرد تا استفاده از این الگوها ساده و کارا شود.
#Caching #TTL #InMemoryCache #Go #Golang #StaleWhileRevalidate #Performance #CacheStampede
🟣لینک مقاله:
https://golangweekly.com/link/175058/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Substack
3 Critical TTL Patterns for In-Memory Caching
Most caching libraries get TTL expiration wrong. They focus on per-key complexity while missing the patterns that actually prevent production outages.
👍1
🔵 عنوان مقاله
celebrates its tenth anniversary with a look
🟢 خلاصه مقاله:
این مقاله دهمین سالگرد یک ابزار زیرساختی متنباز مبتنی بر Go را جشن میگیرد و نشان میدهد چگونه از یک ابزار کوچک به مولفهای بالغ و شناختهشده در تیمهای DevOps و SRE تبدیل شده است؛ با بهبودهای کارایی و پایداری، معماری افزونهپذیر، API/CLI پایدار و تمرکز جدی بر امنیت و زنجیره تأمین. اکوسیستم آن با جامعهای پویا، مستندات بهتر، نسخهبندی معنادار، سازگاری عقبرو و یکپارچگی گسترده با فضای ابری، CI/CD و ابزارهای مشاهدهپذیری رشد کرده است. در ادامه، نقشهراه بر بهبود تجربه کاربری، غنیتر شدن API/SDK، تقویت policy-as-code، مدیریت بهتر وضعیت و دریفت، و اتوماسیون ایمنتر در مقیاس تأکید میکند.
#Go #Infrastructure #DevOps #OpenSource #Cloud #Automation #Security #Observability
🟣لینک مقاله:
https://golangweekly.com/link/175053/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
celebrates its tenth anniversary with a look
🟢 خلاصه مقاله:
این مقاله دهمین سالگرد یک ابزار زیرساختی متنباز مبتنی بر Go را جشن میگیرد و نشان میدهد چگونه از یک ابزار کوچک به مولفهای بالغ و شناختهشده در تیمهای DevOps و SRE تبدیل شده است؛ با بهبودهای کارایی و پایداری، معماری افزونهپذیر، API/CLI پایدار و تمرکز جدی بر امنیت و زنجیره تأمین. اکوسیستم آن با جامعهای پویا، مستندات بهتر، نسخهبندی معنادار، سازگاری عقبرو و یکپارچگی گسترده با فضای ابری، CI/CD و ابزارهای مشاهدهپذیری رشد کرده است. در ادامه، نقشهراه بر بهبود تجربه کاربری، غنیتر شدن API/SDK، تقویت policy-as-code، مدیریت بهتر وضعیت و دریفت، و اتوماسیون ایمنتر در مقیاس تأکید میکند.
#Go #Infrastructure #DevOps #OpenSource #Cloud #Automation #Security #Observability
🟣لینک مقاله:
https://golangweekly.com/link/175053/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Traefik Labs
Traefik's 10-Year Anniversary: A Community's Journey
10 years ago, I made a small reverse proxy project public. Fast forward to today and Traefik has 3.4B downloads and 56k GitHub stars. See how it unfolded.
🔵 عنوان مقاله
Slice Tails Don't Grow Forever
🟢 خلاصه مقاله:
** این مطلب از Golang Weekly توضیح میدهد که در Go، وقتی از یک slice یک “tail” مثل s[i:] میسازیم، رشد آن به capacity وابسته است و پایدار و بینهایت نیست. تا وقتی capacity اجازه دهد، append روی همان آرایهی پشتی انجام میشود؛ اما بهمحض عبور از capacity، runtime آرایهی جدیدی میسازد و دادهها را کپی میکند، در نتیجه اشتراک حافظه با sliceهای قبلی از بین میرود. این رفتار هم میتواند باعث شگفتی در منطق اشتراکگذاری دادهها شود و هم روی کارایی و مصرف حافظه اثر بگذارد (مثلاً نگهداشتن یک زیر-slice کوچک میتواند یک آرایهی بزرگ را در حافظه زنده نگه دارد). نتیجهٔ عملی: روی رشد بینهایت tail حساب نکنید، خروجی append را یک slice بالقوه با آرایهی پشتی جدید در نظر بگیرید، برای آزادسازی حافظه از copy استفاده کنید، در صورت نیاز capacity مناسب را از قبل با make در نظر بگیرید و حتماً با benchmark تصمیم بگیرید.
#Go #Golang #Slices #Append #MemoryManagement #Performance #GolangWeekly
🟣لینک مقاله:
https://golangweekly.com/link/175065/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Slice Tails Don't Grow Forever
🟢 خلاصه مقاله:
** این مطلب از Golang Weekly توضیح میدهد که در Go، وقتی از یک slice یک “tail” مثل s[i:] میسازیم، رشد آن به capacity وابسته است و پایدار و بینهایت نیست. تا وقتی capacity اجازه دهد، append روی همان آرایهی پشتی انجام میشود؛ اما بهمحض عبور از capacity، runtime آرایهی جدیدی میسازد و دادهها را کپی میکند، در نتیجه اشتراک حافظه با sliceهای قبلی از بین میرود. این رفتار هم میتواند باعث شگفتی در منطق اشتراکگذاری دادهها شود و هم روی کارایی و مصرف حافظه اثر بگذارد (مثلاً نگهداشتن یک زیر-slice کوچک میتواند یک آرایهی بزرگ را در حافظه زنده نگه دارد). نتیجهٔ عملی: روی رشد بینهایت tail حساب نکنید، خروجی append را یک slice بالقوه با آرایهی پشتی جدید در نظر بگیرید، برای آزادسازی حافظه از copy استفاده کنید، در صورت نیاز capacity مناسب را از قبل با make در نظر بگیرید و حتماً با benchmark تصمیم بگیرید.
#Go #Golang #Slices #Append #MemoryManagement #Performance #GolangWeekly
🟣لینک مقاله:
https://golangweekly.com/link/175065/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🤝1
🔵 عنوان مقاله
Do 2.0: Type-Safe Dependency Injection Toolkit
🟢 خلاصه مقاله:
Do 2.0 یک ابزار مدرن برای پیادهسازی الگوی Dependency Injection است که با تکیه بر generics بهجای reflection، یک API کاملاً type-safe ارائه میدهد. این تغییر، خطاها را از زمان اجرا به زمان کامپایل منتقل میکند، عملکرد و زمان راهاندازی را بهبود میدهد و با امکانات IDE مثل تکمیل خودکار و بازآرایی کد سازگارتر است. در Do 2.0 اتصال وابستگیها صریح و قابلردگیری است، بنابراین نگهداشت، آزمونپذیری و اطمینان از درستی گراف وابستگیها سادهتر میشود. برای کاربران فعلی Do، راهنمای ارتقا از نسخه v1 فراهم است و تغییرات کلیدی و نمونهها را برای مهاجرت آسان توضیح میدهد.
#DependencyInjection #TypeSafe #Generics #NoReflection #APIDesign #SoftwareArchitecture #Maintainability #Performance
🟣لینک مقاله:
https://golangweekly.com/link/175066/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Do 2.0: Type-Safe Dependency Injection Toolkit
🟢 خلاصه مقاله:
Do 2.0 یک ابزار مدرن برای پیادهسازی الگوی Dependency Injection است که با تکیه بر generics بهجای reflection، یک API کاملاً type-safe ارائه میدهد. این تغییر، خطاها را از زمان اجرا به زمان کامپایل منتقل میکند، عملکرد و زمان راهاندازی را بهبود میدهد و با امکانات IDE مثل تکمیل خودکار و بازآرایی کد سازگارتر است. در Do 2.0 اتصال وابستگیها صریح و قابلردگیری است، بنابراین نگهداشت، آزمونپذیری و اطمینان از درستی گراف وابستگیها سادهتر میشود. برای کاربران فعلی Do، راهنمای ارتقا از نسخه v1 فراهم است و تغییرات کلیدی و نمونهها را برای مهاجرت آسان توضیح میدهد.
#DependencyInjection #TypeSafe #Generics #NoReflection #APIDesign #SoftwareArchitecture #Maintainability #Performance
🟣لینک مقاله:
https://golangweekly.com/link/175066/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
do.samber.dev
⚙️ do: Type-safe dependency injection for Go | do
A dependency injection toolkit based on Go 1.18+ Generics.
👍1🔥1
Forwarded from Bardia & Erfan
♨️ راز خواب 12 ساعته پاول دورف؛ جایی که ایدههای تلگرام شکل میگیرن!
▪️پاول دورف، مدیرعامل تلگرام، گفته روزی بین ۱۱ تا ۱۲ ساعت میخوابه ، و جالبه که اینو نه تنبلی، بلکه منبع اصلی ایدههای درخشانش میدونه!
▪️دورف صبحها حتی سراغ گوشی هم نمیره، چون معتقده موبایلها جلوی تفکر مستقل رو میگیرن.
خودش میگه:
♨️ راز خواب 12 ساعته پاول دورف؛ جایی که ایدههای تلگرام شکل میگیرن!
▪️پاول دورف، مدیرعامل تلگرام، گفته روزی بین ۱۱ تا ۱۲ ساعت میخوابه ، و جالبه که اینو نه تنبلی، بلکه منبع اصلی ایدههای درخشانش میدونه!
▪️دورف صبحها حتی سراغ گوشی هم نمیره، چون معتقده موبایلها جلوی تفکر مستقل رو میگیرن.
خودش میگه:
«میخوام خودم تصمیم بگیرم چی تو زندگیم مهمه، نه اینکه شرکتها یا الگوریتمها برام تعیین کنن.»
👍3
🔵 عنوان مقاله
'We Tried Go's Experimental Green Tea Garbage Collector and It Didn't Help Performance'
🟢 خلاصه مقاله:
** تیم Dolt در Go 1.25 جمعآورنده زباله آزمایشی Green Tea را فعال و ارزیابی کرد، اما در سناریوی خاص خود بهبود محسوسی در کارایی مشاهده نکرد. با این حال، از آنجا که رفتار GC به نوع بار کاری وابسته است و Green Tea همچنان آزمایشی و اختیاری است، توصیه میشود هر تیم آن را در محیط و بنچمارکهای خود امتحان کرده و بر اساس شاخصهای واقعی تصمیم بگیرد.
#Go #Golang #GarbageCollector #GreenTea #Performance #Benchmarking #Dolt #Go1_25
🟣لینک مقاله:
https://golangweekly.com/link/175055/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
'We Tried Go's Experimental Green Tea Garbage Collector and It Didn't Help Performance'
🟢 خلاصه مقاله:
** تیم Dolt در Go 1.25 جمعآورنده زباله آزمایشی Green Tea را فعال و ارزیابی کرد، اما در سناریوی خاص خود بهبود محسوسی در کارایی مشاهده نکرد. با این حال، از آنجا که رفتار GC به نوع بار کاری وابسته است و Green Tea همچنان آزمایشی و اختیاری است، توصیه میشود هر تیم آن را در محیط و بنچمارکهای خود امتحان کرده و بر اساس شاخصهای واقعی تصمیم بگیرد.
#Go #Golang #GarbageCollector #GreenTea #Performance #Benchmarking #Dolt #Go1_25
🟣لینک مقاله:
https://golangweekly.com/link/175055/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
We tried Go's experimental Green Tea garbage collector and it didn't help performance
Go 1.25 includes support for an experimental new garbage collector called Green Tea. We tried it out with Dolt's main performance benchmarks and summarize what difference it made (not much).
❤1
Forwarded from Linux Labdon
چند وقته درگیر این سایتم. تقریبا از صفر تا صد توسعه یه سیستم عامل و کرنل رو پروژه محور توضیح داده.
برا درک یه سری مفاهیم پیشنهاد میشه
https://wiki.osdev.org
<Behi/>
برا درک یه سری مفاهیم پیشنهاد میشه
https://wiki.osdev.org
<Behi/>
🐳1
🔵 عنوان مقاله
Starving, Sleeping, and Yielding: Understanding Go's Scheduler
🟢 خلاصه مقاله:
** این مقاله توضیح میدهد که چرا درک رفتار همزمان در Go به شناخت زمانبند آن بستگی دارد. زمانبند با مدل G‑M‑P، goroutineها را روی نخهای سیستمعامل اجرا میکند، آنها را هنگام بلاکشدن پارک میکند و با netpoller برای I/O هماهنگ میشود. سه وضعیت کلیدی بررسی میشود: Starvation وقتی رخ میدهد که goroutineهای آماده اجرا بهدلیل لوپهای سنگین CPU، الگوهای ناعادلانه در select، یا قفلها و syscall/cgo طولانی به CPU دسترسی پیدا نمیکنند؛ Sleeping با time.Sleep برای توقف کنترلشده مفید است اما میتواند تأخیر بسازد؛ و Yielding با runtime.Gosched امکان میدهد در حلقههای CPU‑محور به دیگر goroutineها نوبت بدهیم. از Go 1.14 به بعد، preemption غیرهمکارانه کمک کرده، اما حلقههای بدون نقطه توقف هنوز مشکلسازند. راهکارها شامل شکستن کارهای سنگین به بخشهای کوچک، پرهیز از busy‑wait، استفاده از context و timeout، طراحی منصفانه channel/select، کوچک نگهداشتن بخشهای بحرانی و تنظیم GOMAXPROCS است. برای عیبیابی نیز از go tool trace، runtime/trace، pprof و GODEBUG=schedtrace استفاده کنید و فقط در صورت نیاز، sleep یا yield موضعی و مستند به کار ببرید.
#Go #Golang #Concurrency #Scheduler #Goroutines #Performance #Parallelism #Systems
🟣لینک مقاله:
https://golangweekly.com/link/175057/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Starving, Sleeping, and Yielding: Understanding Go's Scheduler
🟢 خلاصه مقاله:
** این مقاله توضیح میدهد که چرا درک رفتار همزمان در Go به شناخت زمانبند آن بستگی دارد. زمانبند با مدل G‑M‑P، goroutineها را روی نخهای سیستمعامل اجرا میکند، آنها را هنگام بلاکشدن پارک میکند و با netpoller برای I/O هماهنگ میشود. سه وضعیت کلیدی بررسی میشود: Starvation وقتی رخ میدهد که goroutineهای آماده اجرا بهدلیل لوپهای سنگین CPU، الگوهای ناعادلانه در select، یا قفلها و syscall/cgo طولانی به CPU دسترسی پیدا نمیکنند؛ Sleeping با time.Sleep برای توقف کنترلشده مفید است اما میتواند تأخیر بسازد؛ و Yielding با runtime.Gosched امکان میدهد در حلقههای CPU‑محور به دیگر goroutineها نوبت بدهیم. از Go 1.14 به بعد، preemption غیرهمکارانه کمک کرده، اما حلقههای بدون نقطه توقف هنوز مشکلسازند. راهکارها شامل شکستن کارهای سنگین به بخشهای کوچک، پرهیز از busy‑wait، استفاده از context و timeout، طراحی منصفانه channel/select، کوچک نگهداشتن بخشهای بحرانی و تنظیم GOMAXPROCS است. برای عیبیابی نیز از go tool trace، runtime/trace، pprof و GODEBUG=schedtrace استفاده کنید و فقط در صورت نیاز، sleep یا yield موضعی و مستند به کار ببرید.
#Go #Golang #Concurrency #Scheduler #Goroutines #Performance #Parallelism #Systems
🟣لینک مقاله:
https://golangweekly.com/link/175057/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Bitfield Consulting
Starving, sleeping, and yielding: understanding Go's scheduler — Bitfield Consulting
Writing concurrent programs is easy, but understanding why they don’t work is much harder. In our continuing tutorial, we’ll learn about when and why goroutines starve, sleep, or yield.
❤1
🔵 عنوان مقاله
Build a Water Simulation in Go with raylib-go
🟢 خلاصه مقاله:
**این مقاله گامبهگام نشان میدهد چگونه با Go و raylib-go یک شبیهسازی بلادرنگ آب بسازیم؛ از انتخاب مدل فیزیکی تا پیادهسازی حلقه رندر. نویسنده بین رویکردهای ذرهای و مدلهای height-field/shallow-water مقایسه میکند و برای تعادل سرعت و واقعگرایی، height-field دوبعدی را برمی
🟣لینک مقاله:
https://golangweekly.com/link/175063/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Build a Water Simulation in Go with raylib-go
🟢 خلاصه مقاله:
**این مقاله گامبهگام نشان میدهد چگونه با Go و raylib-go یک شبیهسازی بلادرنگ آب بسازیم؛ از انتخاب مدل فیزیکی تا پیادهسازی حلقه رندر. نویسنده بین رویکردهای ذرهای و مدلهای height-field/shallow-water مقایسه میکند و برای تعادل سرعت و واقعگرایی، height-field دوبعدی را برمی
🟣لینک مقاله:
https://golangweekly.com/link/175063/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Medium
Build a Water Simulation in Go with Raylib-go
In this blog post, we will use raylib-go to create a lightweight water simulation for 2D games.
❤2👍1
🔵 عنوان مقاله
Accepted! Go Proposals Distilled
🟢 خلاصه مقاله:
این مجموعه با عنوان Accepted! Go Proposals Distilled خلاصهای روان از پیشنهادهای پذیرفتهشده زبان Go ارائه میکند تا بدون خواندن کل پروپوزالها، سریع از تغییرات نسخههای آینده باخبر شوید. هر پست دلیل پذیرش، تغییرات و کاربرد عملی آن را خلاصه میکند. تاکنون Anton موضوع maphash را پوشش داده و ادامهٔ سری نیز همزمان با پیشروی پیشنهادهای پذیرفتهشده منتشر خواهد شد.
#Go #Golang #GoProposals #GoUpdates #ProgrammingLanguages #DeveloperNews #Maphash
🟣لینک مقاله:
https://golangweekly.com/link/175050/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Accepted! Go Proposals Distilled
🟢 خلاصه مقاله:
این مجموعه با عنوان Accepted! Go Proposals Distilled خلاصهای روان از پیشنهادهای پذیرفتهشده زبان Go ارائه میکند تا بدون خواندن کل پروپوزالها، سریع از تغییرات نسخههای آینده باخبر شوید. هر پست دلیل پذیرش، تغییرات و کاربرد عملی آن را خلاصه میکند. تاکنون Anton موضوع maphash را پوشش داده و ادامهٔ سری نیز همزمان با پیشروی پیشنهادهای پذیرفتهشده منتشر خواهد شد.
#Go #Golang #GoProposals #GoUpdates #ProgrammingLanguages #DeveloperNews #Maphash
🟣لینک مقاله:
https://golangweekly.com/link/175050/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
antonz.org
Accepted! Go proposals distilled
Stay updated on changes coming in future Go releases.
👍1🎉1 1
🔵 عنوان مقاله
take control with Tuple
🟢 خلاصه مقاله:
این مطلب از Golang Weekly نشان میدهد چگونه بهکارگیری سنجیده Tuple میتواند به توسعهدهندگان Go کمک کند روی جریان داده، مدیریت خطا و همزمانی کنترل بیشتری داشته باشند. در این رویکرد، Tuple راهی فشرده برای بستن چند مقدار مرتبط در یک واحد نوعدار است که با تکیه بر جنریکها، ضمن کاهش کد تکراری، نیت کد و امضای توابع را شفافتر میکند. کاربردهای کلیدی شامل مدلسازی بار دادهی کانالها، جمعآوری خروجیها در الگوهای فناوت/فناین و عبور جفتهایی مانند (value, error) در پایپلاینهاست؛ با این تأکید که هرجا یک مفهوم دامنهای نامدار لازم است، یک struct کوچک همچنان گزینهی بهتر است. جمعبندی: Tuple گلولهی نقرهای نیست، اما اگر هدفمند استفاده شود، بدون لطمه به خوانایی یا ایمنی نوعی، کنترل و شفافیت بیشتری به کدهای Go میدهد و میتوان آن را بهصورت تدریجی در مرز پکیجها و پایپلاینها به کار گرفت.
#Golang #Go #Tuple #GolangWeekly #Generics #Concurrency #TypeSafety #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175071/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
take control with Tuple
🟢 خلاصه مقاله:
این مطلب از Golang Weekly نشان میدهد چگونه بهکارگیری سنجیده Tuple میتواند به توسعهدهندگان Go کمک کند روی جریان داده، مدیریت خطا و همزمانی کنترل بیشتری داشته باشند. در این رویکرد، Tuple راهی فشرده برای بستن چند مقدار مرتبط در یک واحد نوعدار است که با تکیه بر جنریکها، ضمن کاهش کد تکراری، نیت کد و امضای توابع را شفافتر میکند. کاربردهای کلیدی شامل مدلسازی بار دادهی کانالها، جمعآوری خروجیها در الگوهای فناوت/فناین و عبور جفتهایی مانند (value, error) در پایپلاینهاست؛ با این تأکید که هرجا یک مفهوم دامنهای نامدار لازم است، یک struct کوچک همچنان گزینهی بهتر است. جمعبندی: Tuple گلولهی نقرهای نیست، اما اگر هدفمند استفاده شود، بدون لطمه به خوانایی یا ایمنی نوعی، کنترل و شفافیت بیشتری به کدهای Go میدهد و میتوان آن را بهصورت تدریجی در مرز پکیجها و پایپلاینها به کار گرفت.
#Golang #Go #Tuple #GolangWeekly #Generics #Concurrency #TypeSafety #SoftwareDesign
🟣لینک مقاله:
https://golangweekly.com/link/175071/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Tuple
Generic Tools Suck
The best pair programming app for macOS and Windows developers.