Gopher Academy
3.87K subscribers
927 photos
40 videos
280 files
2.1K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔵 عنوان مقاله
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
1
Forwarded from Bardia & Erfan
پاول دورُف: حاضرَم بمیرم، ولی آزادی و امنیت کاربران رو نفروشم!

در گفت‌وگوی عمیق با «لِکس فریدمن»، بنیان‌گذار تلگرام از فلسفهٔ زندگی، حریم خصوصی، بیت‌کوین و مقاومتش در برابر فشار دولت‌ها گفت.
> 🗣
«من ترجیح می‌دم بمیرم و تمام داراییم رو از دست بدهم تا اینکه اطلاعات کاربران رو به هر دولتی تحویل بدم.
آزادی و امنیت داده‌ها، خط قرمز من و تلگرامه.»

🔒

او تأکید کرد تلگرام هیچ‌وقت “در پشتی” برای دولت‌ها باز نکرده و در برابر فشار روسیه و ایران برای دسترسی به اطلاعات یا سانسور مقاومت کرده است.
>
«در روسیه و ایران بارها تلاش شد ما رو مجبور به همکاری کنن. ولی ما مقاومت کردیم چون اگر یک‌بار کوتاه بیای، دیگه آزادی واقعی وجود نداره.»



📱 ۷ اصل فکری و مدیریتی پاول دورُف (بر اساس مصاحبه):

1️⃣ آزادی و اخلاق بالاتر از هر سود مالی — او می‌گوید حاضر است تمام دارایی‌اش را از دست بدهد تا آزادی بیان و امنیت کاربران حفظ شود.

2️⃣ مینیمالیسم و انضباط شخصی — سبک زندگی‌اش ساده، بدون الکل، قهوه یا حواس‌پرتی است؛ تمرکز کامل روی مأموریت و نظم ذهنی.

3️⃣ تیم کوچک، تأثیر بزرگ — معتقد است تیم‌های بزرگ بهره‌وری را می‌کُشند؛ موفقیت تلگرام حاصل اعتماد به چند نابغهٔ منضبط است.

4️⃣ مقاومت در برابر سانسور و در پشتی — هیچ دولت یا شرکتی حق کنترل یا شنود تلگرام را ندارد. رمزنگاری و طراحی MTProto را «دیوار آزادی دیجیتال» می‌نامد.

5️⃣ پول و قدرت ابزارند، نه هدف — او از مدل‌های انحصاری و کمیسیون‌های اپل و گوگل انتقاد می‌کند و تأکید دارد که ثروت نباید آزادی را محدود کند.

6️⃣ باور به فناوری آزاد مثل بیت‌کوین — بیت‌کوین را «نمادِ کاهش نیاز به اعتماد به واسطه‌ها و آزادی مالی» می‌داند؛ از پروژه TON به‌عنوان زیربنای اقتصاد آزاد تلگرام یاد می‌کند.

7️⃣ نگاه فلسفی به زندگی و مرگ — از کافکا، شوپنهاور و «جاودانگی کوانتومی» می‌گوید؛ باور دارد انسان باید بدون ترس از مرگ، بر پایهٔ ارزش‌های خودش زندگی کند.
64👍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
👍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
🔵 عنوان مقاله
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
👍1🔥1
Forwarded from Bardia & Erfan

♨️ راز خواب 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
1
Forwarded from Linux Labdon
چند وقته درگیر این سایتم. تقریبا از صفر تا صد توسعه یه سیستم عامل و کرنل رو پروژه محور توضیح داده.
برا درک یه سری مفاهیم پیشنهاد میشه

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
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
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
👍1🎉11
🔵 عنوان مقاله
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