Gopher Academy
3.34K subscribers
923 photos
40 videos
280 files
2.07K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
🎙️ عنوان پادکست:
Go gets audited, and Ian Lance Taylor talks about 19 years on the Go team
خلاصه پادکست:
**
در این مطلب، از ممیزی امنیتی زیرساخت رمزنگاری Go و گفت‌وگوی مفصل با Ian Lance Taylor درباره ۱۹ سال حضورش در تیم Go خبر داده می‌شود. ممیزی به رهبری Roland Shoemaker و Filippo Valsorda انجام شده و همراه با بررسی‌های عملی درباره FIPS در Episode 89 با Alex Scheel، بر اهمیت سخت‌گیری امنیتی و الزامات انطباق تأکید دارد. در حوزه طراحی زبان، پیشنهاد x/exp/xiter برای افزودن iterator adapters رد شد تا بر اولویت سادگی و پایداری در اکوسیستم Go تأکید شود....
🔥1
🎙️ عنوان پادکست:
👕 Clothe your naked gophers and returns, with this one weird episode THEY don't want you to know about!
خلاصه پادکست:
این هفته در دنیای Go، دو نسخه نگهداری Go 1.25.1 و Go 1.24.7 منتشر شدند که باگ‌ها و بهبودهای پایداری (و احتمالا امنیتی) را در کامپایلر، کتابخانه استاندارد و ابزارها ارائه می‌کنند؛ ارتقا برای محیط‌های تولیدی توصیه می‌شود. ویدیوهای GopherCon Europe: Berlin 2025 هم در دسترس است و موضوعاتی از طراحی زبان تا سیستم‌های توزیع‌شده و بهینه‌سازی عملکرد را پوشش می‌دهد....
2
🔵 عنوان مقاله
Go's Support for Valgrind Instrumentation

🟢 خلاصه مقاله:
این مقاله درباره پشتیبانی آزمایشی Go از Valgrind است؛ چارچوبی که با ابزارهایی مانند Memcheck، Helgrind، DRD، Cachegrind، Callgrind و Massif برای پروفایلینگ و یافتن خطاهای حافظه و هم‌زمانی به‌کار می‌رود. با این پشتیبانی، برنامه‌های Go می‌توانند به شکل عمیق‌تری پایش شوند—به‌ویژه در مرزهای cgo—و علاوه بر ابزارهای داخلی مانند pprof و race detector، گزینه‌های تشخیصی بیشتری در اختیار دارند. بااین‌حال، به دلیل سربار اجرایی بالا و ماهیت آزمایشی، نتایج ممکن است شامل خطا یا مثبت کاذب باشد و بهتر است با بیلدهای دیباگ و بارهای کاری کنترل‌شده استفاده شود. این قابلیت مکمل ابزارهای بومی Go است و جایگزین آن‌ها محسوب نمی‌شود.
#Go #Valgrind #Instrumentation #Profiling #MemoryLeaks #Concurrency #Performance #Debugging

🟣لینک مقاله:
https://golangweekly.com/link/174628/web


👑 @gopher_academy
3
Gopher Academy
📌 Memory Allocation in Go 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go می‌پردازیم. درک درست از ساختار حافظه به شما کمک می‌کند عملکرد برنامه‌هایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction 🔴 https://t.iss.one/gopher_academy/4231…
🔹 Introduction – Memory Allocation in Go


مدیریت حافظه بخش حیاتی هر زبان برنامه‌نویسی است و Go هم از این قاعده مستثنی نیست. سرعت و کارایی برنامه‌های Go به شدت وابسته به نحوه تخصیص و مدیریت حافظه است.

هرچند Go با APIهای ساده‌ای مثل new(T), &T{} و make پیچیدگی‌ها را از دید برنامه‌نویس پنهان می‌کند، اما درک سازوکار پشت پرده به ما کمک می‌کند:

* بفهمیم چگونه runtime بازدهی بالایی دارد،
* نقاط ضعف و گلوگاه‌های احتمالی را شناسایی کنیم.

در این سری قرار است:

* با اجزای اصلی memory allocator در Go آشنا شویم،
* نحوه مدیریت حافظه برای اشیاء کوچک، متوسط و بزرگ را ببینیم،
* مدیریت stack در کنار heap را بررسی کنیم،
* و در نهایت با مطالعه case studyها**، تأثیر عملی این استراتژی‌ها را در برنامه‌های واقعی درک کنیم.

قبل از ورود به جزئیات، بهتر است مفاهیم پایه‌ای **Virtual Memory
در سیستم‌عامل مرور شود.


👑 @gopher_academy
1
Gopher Academy
📌 Memory Allocation in Go 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go می‌پردازیم. درک درست از ساختار حافظه به شما کمک می‌کند عملکرد برنامه‌هایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction 🔴 https://t.iss.one/gopher_academy/4231…
🔹 Go’s View of Virtual Memory


یک برنامه Go در اصل یک پردازش فضای کاربر (user-space process) است و همان چیدمان استاندارد حافظه مجازی (Stack, Heap, BSS, Data) را دارد.

در Stack، Go از استک خاصی به نام g0 stack استفاده می‌کند که به نخ اصلی runtime (m0) متصل است.

متغیرهای global که مقدار اولیه دارند در بخش Data ذخیره می‌شوند، و متغیرهای global بدون مقدار اولیه در بخش BSS قرار می‌گیرند.

بر خلاف زبان‌های سنتی مثل C که از Heap زیر program break استفاده می‌کنند، Go این Heap سنتی را برای اشیای خود به کار نمی‌برد.

به جای آن، Go برای تخصیص حافظه اشیای heap و استک گوروتین‌ها از memory-mapped segments استفاده می‌کند.

از اینجا به بعد، وقتی از "heap" در Go صحبت می‌کنیم، منظور همان بخش memory-mapped است (و نه heap سنتی زیر program break).

👉 به زبان ساده: Go یک heap اختصاصی روی memory-mapped segments می‌سازد و مدیریت حافظه را خودش انجام می‌دهد، نه اینکه از heap پیش‌فرض سیستم عامل استفاده کند.


👑 @gopher_academy
1🔥1
Gopher Academy
📌 Memory Allocation in Go 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go می‌پردازیم. درک درست از ساختار حافظه به شما کمک می‌کند عملکرد برنامه‌هایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction 🔴 https://t.iss.one/gopher_academy/4231…
برای مدیریت بهینه‌ی حافظه، Go حافظه‌ی تخصیص‌داده‌شده از طریق memory mapping را به واحدهای سلسله‌مراتبی تقسیم می‌کند:

ساختار حافظه:

Arena (۶۴MB)

بزرگ‌ترین واحد تخصیص در Go.

هر Arena فضایی به اندازه‌ی ثابت ۶۴MB دارد.

اGo سعی می‌کند Arenaها رو پشت‌سر هم قرار بده، ولی همیشه تضمین نمی‌شه (به خاطر رفتار mmap).

Page (۸KB)

هر Arena به صفحات (Page) تقسیم می‌شود.
سایز هر Page: ۸KB.
این Pageها با Pageهای سیستم‌عامل (معمولاً ۴KB) متفاوت هستند.
تخصیص اشیاء:
اگر اندازه‌ی شیء کوچک‌تر از ۸KB باشد → چندین شیء در یک Page جا می‌گیرند.

اگر اندازه‌ی شیء دقیقاً ۸KB باشد → کل Page را اشغال می‌کند.
اگر اندازه‌ی شیء بزرگ‌تر از ۸KB باشد → روی چند Page گسترده می‌شود.

اGoroutine Stack
استک هر goroutine در همین Pageها نگهداری می‌شود.
هر استک در ابتدا فقط ۲KB است.
بنابراین یک Page (۸KB) می‌تواند تا ۴ goroutine stack را در خود جا دهد.

به زبان ساده:
اGo حافظه را اول به Arena (۶۴MB) تقسیم می‌کند، سپس هر Arena را به Page (۸KB) می‌شکند و این Pageها برای اشیاء مختلف یا استک goroutineها استفاده می‌شوند.

👑 @gopher_academy
1👍1🏆1
🔵 عنوان مقاله
GoMLX: An Accelerated Machine Learning Framework for Go

🟢 خلاصه مقاله:
اGoMLX یک مجموعه کتابخانه و ابزار یادگیری ماشین برای زبان Go است که با تمرکز بر اجرای شتاب‌گرفته و تجربه‌ای سازگار با اکوسیستم Go ارائه می‌شود. این پروژه عملاً نقش جایگزینی برای PyTorch یا TensorFlow در دنیای Go را بازی می‌کند و ساخت مدل، آموزش، پردازش داده و استنتاج را با APIهای ساده و ایدئوماتیک Go ممکن می‌سازد. با وجود نام مشابه، هیچ ارتباطی با MLX از Apple ندارد و در حال حاضر فقط روی Linux قابل استفاده است؛ انتخابی که آن را برای محیط‌های سروری و کانتینری رایج مناسب می‌کند.

#GoMLX #Go #MachineLearning #PyTorch #TensorFlow #Linux #MLOps

🟣لینک مقاله:
https://golangweekly.com/link/174649/web


👑 @gopher_academy
21
🔵 عنوان مقاله
TableWriter 1.1: Render Rich Text-Based Tables

🟢 خلاصه مقاله:
جدول‌نویسی TableWriter 1.1 یک کتابخانه چندمنظوره برای رندر کردن جدول‌های متنیِ خوانا در قالب‌های مختلف است. خروجی‌های استاندارد مانند ASCII، Unicode، Markdown و HTML را پوشش می‌دهد و برای ترمینال‌های رنگی نیز مناسب است؛ بنابراین برای ابزارهای خط فرمان، گزارش‌ها و مستندسازی انتخابی کاربردی محسوب می‌شود. تمرکز آن بر انعطاف‌پذیری و خوانایی است تا با تنظیم چینش، فاصله‌ها و مرزبندی، داده‌های متفاوت را به شکلی منظم نمایش دهد. README این پروژه با مثال‌های فراوان، شروع کار را سریع و بی‌دردسر می‌کند.

#TableWriter #ASCII #Unicode #Markdown #HTML #Terminal #CLI #OpenSource

🟣لینک مقاله:
https://golangweekly.com/link/174651/web


👑 @gopher_academy
2
🔵 عنوان مقاله
The Day the Linter Broke My Code

🟢 خلاصه مقاله:
**
روزِ خراب‌کاریِ linter یادآور این واقعیت است که تحلیل ایستا همیشه تمامِ زمینه را نمی‌بیند. یک «اصلاح بی‌ضرر»—مثل حذف یک متغیر به‌ظاهر بلااستفاده—می‌تواند رفتار پنهانی یا الگوهای پویا را از کار بیندازد و کد را بشکند. راه‌حل، کنار گذاشتن linter نیست؛ بلکه تنظیم دقیق قوانین، پرهیز از autofix برای تغییرات معنایی، کاهش شدت برخی قوانین، افزودن مستندات و استثناهای صریح، و تکیه بر تست‌ها و بازبینی انسانی است. از lint باید به‌عنوان راهنما استفاده کرد، نه مرجع نهایی؛ به‌ویژه در کدهایی که با الگوهای پویا، reflection یا codegen کار می‌کنند. با بازخورد به نگه‌داران ابزارها، استفاده از حالت‌های آگاه به نوع (مثل ESLint با TypeScript) و سیاست‌های روشن در CI، می‌توان مزایای lint را گرفت و ریسک «اصلاحات خطرناک» را کم کرد.

#linting #staticanalysis #codequality #developerexperience #CI #autofix #falsepositives #softwareengineering

🟣لینک مقاله:
https://golangweekly.com/link/174418/web


👑 @gopher_academy
👍1
Forwarded from Bardia & Erfan
اگه با دلار ۱۰۰۰ تومنی زندگیتو جمع کردی
با دلار ۱۰۰ تومنی نصیحت نکن.
6🕊1
🔵 عنوان مقاله
Valgo 0.7: An Expressive Validator Library

🟢 خلاصه مقاله:
اValgo 0.7 یک کتابخانه اعتبارسنجی است که با تکیه بر generics، API ایمن از نظر نوع و قابل‌گسترش ارائه می‌دهد. به‌جای استفاده از struct tags، قواعد به‌صورت توابع نوشته می‌شوند؛ رویکردی که خوانایی، تست‌پذیری و ترکیب‌پذیری را افزایش می‌دهد و وابستگی به رشته‌ها و reflection را کاهش می‌دهد. نتیجه، اعتبارسنجی شفاف‌تر و قابل‌نگهداری‌تری است که از بررسی‌های ساده تا منطق‌های پیچیده و دامنه‌محور را پوشش می‌دهد و به‌سادگی با لایه‌های مختلف کد ادغام می‌شود.

#Validation #Generics #TypeSafety #Extensibility #CleanCode #DeveloperExperience #SoftwareEngineering

🟣لینک مقاله:
https://golangweekly.com/link/174655/web


👑 @gopher_academy
👍1🔥1
🔵 عنوان مقاله
the top 'programming languages' in 2025

🟢 خلاصه مقاله:
فهرست برترین زبان‌های برنامه‌نویسی در 2025 نشان می‌دهد کجا واقعاً نرم‌افزار ساخته و نگه‌داری می‌شود؛ معیارهایی مثل میزان استفاده، تقاضای شغلی، بلوغ اکوسیستم، عملکرد و ابزارها در نظر گرفته شده است. زبان‌های جاافتاده مثل Python، JavaScript/TypeScript، Java و C# همچنان ستون‌های اصلی‌اند؛ C/C++ برای کارهای کم‌تأخیر و سیستم‌ها و SQL برای داده ضروری‌اند، و رشد Rust بر اهمیت ایمنی و کارایی تاکید دارد؛ Kotlin و Swift نیز در موبایل قدرتمند مانده‌اند. در این میان، Go در رتبه ۱۰ قرار گرفته چون سادگی، کامپایل سریع، هم‌روندی با goroutine و channel و باینری‌های مستقل را با پذیرش گسترده در فضای cloud‑native ترکیب می‌کند؛ پروژه‌هایی مثل Docker و Kubernetes نقش آن را در زیرساخت نشان می‌دهند. جمع‌بندی: 2025 ترکیبی از ثبات و نوآوری است و انتخاب زبان باید بر اساس مسئله، مهارت تیم و نگه‌داشت بلندمدت باشد—اغلب در چارچوبی چندزبانه و عمل‌گرایانه.

#ProgrammingLanguages #GoLang #Trends2025 #SoftwareEngineering #CloudNative #Developers #Rust #Python

🟣لینک مقاله:
https://golangweekly.com/link/174641/web


👑 @gopher_academy
💋یادی کنیم از دوتا پست قدیمی این جنل که برای خیلی ها مفید بود

✍️برای برقراری ارتباط بین دو سرویس با استفاده از gRPC
https://t.iss.one/gopher_academy/3051

✍️برای ارتباط بین دو سرویس با استفاده از Kafka

https://t.iss.one/gopher_academy/3052


👑 @gopher_academy
👨‍💻11
Forwarded from VIP
🚀 به دنیای توسعه و تکنولوژی خوش اومدی!

اگر به موضوعات زیر علاقه‌مندی:

🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصت‌های شغلی ریموت (خارجی و داخلی)

ما برات یه مجموعه کانال‌های تخصصی ساختیم تا همیشه به‌روز، حرفه‌ای و الهام‌بخش بمونی!
📚 یادگیری، فرصت، شبکه‌سازی و پیشرفت، همش اینجاست...

📌 از این لینک همه چنل‌هامونو یه‌جا ببین و جوین شو:

👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0