Gopher Academy @gopher_academy Channel on Telegram

Gopher Academy

@gopher_academy


🕸 Gopher Academy

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

لینک چنل های ما:
https://linktr.ee/Labdon

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

ادمین:
@mrbardia72

ادمین تبلیغات:
@labdon_ads

Gopher Academy (Persian)

آیا شما علاقه‌مند به زبان برنامه‌نویسی گولانگ (Golang) هستید؟ آیا می‌خواهید توانایی‌های خود را در این زبان بهبود ببخشید و به یک استاد در این حوزه تبدیل شوید؟ اگر پاسخ شما بله است، پس کانال تلگرامی Gopher Academy مکانی مناسب برای شماست. این کانال حاوی مصاحبه‌ها، سوالات و پاسخ‌های مرتبط با گو فراهم می‌کند تا شما بتوانید مهارت‌های خود را در این زبان بهبود دهید و بتوانید بهترین نسخه خود را ارائه دهید. همچنین با مراجعه به لینک‌های موجود در کانال، می‌توانید از منابعی برای افزایش دانش خود بهره ببرید. برای حمایت مالی از این کانال می‌توانید از لینک مربوطه استفاده کنید. ادمین این کانال آموزشی @mrbardia72 می‌باشد و ادمین تبلیغات آن @labdon_ads است. پس از عضویت در این کانال، شما قطعا تبدیل به یک استاد در زبان برنامه‌نویسی گولانگ خواهید شد.

Gopher Academy

19 Feb, 16:33


💎 همکاران سیستم شما را به رویدادی ویژه دعوت می‌کند:

🌟 نسل جدید معماری ابری در نرم‌افزارهای مقیاس‌بزرگ 🌟

📅 پنجشنبه، ۹ اسفند | ساعت ۱۴ تا ۱۹
📍 دانشگاه تهران، تالار علامه امینی دانشگاه تهران

💯 محورهای کلیدی رویداد:
🔵 چالش‌های طراحی ERP به صورت Cloud Native
🔵 معماری یک ERP بر بستر Cloud
🔵 آشنایی با Multi Tenancy و مدیریت Tenantهای مشتریان
🔵 چالش‌های تست‌نویسی برای برنامه‌های داده‌محور
🔵 طراحی معماری Frontend برنامه‌های ERP

🔔 از تمامی توسعه‌دهندگان علاقمند به تکنولوژی‌های دنیای ابری دعوت می‌کنیم تا در این رویداد همراه ما باشند.

❗️ برای حضور در رویداد، ثبت‌نام الزامی است.

🌐 کسب اطلاعات بیشتر و ثبت‌نام ➡️


🌐 Linkedin |🌐 Instagram

Gopher Academy

18 Feb, 08:48


اگر میخواید در مورد swiss map ها اطلاعات بیشتر داشته باشید این رفرنس ها به شما کمک می کندد

https://www.dolthub.com/blog/2023-03-28-swiss-map/
https://www.youtube.com/watch?v=JZE3_0qvrMg
https://abseil.io/about/design/swisstables
https://www.youtube.com/watch?v=ncHmEUmJZf4
http://graphics.stanford.edu/~seander/bithacks.html##ValueInWord
https://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/
https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/



https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

17 Feb, 05:42


🎯 چندتا پست در مورد ویژگی های جدید گولنگ 1.24 اینجاست می تونید بخونید👇


🔵 https://t.me/gopher_academy/3557

🔵 https://t.me/gopher_academy/3556

🔵 https://t.me/gopher_academy/3555

🔵 https://t.me/gopher_academy/3554

🔵 https://t.me/gopher_academy/3553

🔵 https://t.me/gopher_academy/3581

🔵 https://t.me/gopher_academy/3582


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

16 Feb, 15:38


👇توصیه‌های کلی و کوتاه و مختصر برای زبان برنامه‌نویسی Go که یادگیری خالی از لطف نیست

https://go-proverbs.github.io


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

16 Feb, 11:30


🔵 عنوان مقاله
sturdyc: Caching Library with Advanced Concurrency Features

🟢 خلاصه مقاله:
مقاله "A sturdy gopher shielding data sources from rapidly incoming requests" به بررسی یک راهکار مؤثر برای جلوگیری از بارگذاری بیش از حد و حملات اصطلاحاً cache stampede در سیستم‌های با حجم ترافیک بالا می‌پردازد. رویکرد مورد بحث در این مقاله، استفاده از خواندن‌های غیربلاک‌کننده و نوشتن‌های شارد شده است که کمینه کردن تداخل قفل‌ها را هدف قرار داده و در نتیجه، افزایش کارایی و پایداری سیستم هنگام مواجهه با درخواست‌های متعدد و سریع را به دنبال دارد. با استفاده از این روش، سیستم‌ها می‌توانند داده‌ها را مدیریت و در برابر بارهای ناگهانی وزیاد محافظت نمایند. این روش برای زیرساخت‌هایی که نیازمند حجم بالایی از تراکنش‌های داده هستند، ایده‌آل است.

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


👑 @gopher_academy

Gopher Academy

15 Feb, 16:34


Linux boot process explained

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

15 Feb, 05:30


🔵 عنوان مقاله
Go Slice Gotchas

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی ساختار داده‌ای به نام "اسلایس" می‌پردازد، نشان می‌دهد که این ساختار مشابه سایر ساختارهای ظرفیت‌گسترش‌پذیر دینامیک دارای پیچیدگی‌ها و نکات خاص خود است. نویسنده در این متن تلاش کرده است تا لیستی از اشتباهات رایجی که خود بارها مرتکب شده را برشمارد تا خوانندگان بتوانند از آن‌ها پرهیز کنند. این اشتباهات شامل نادیده‌گرفتن قواعد خاص مدیریت حافظه، نحوه افزایش ظرفیت اسلایس‌ها، و تأثیر عملیات مختلف بر روی امنیت و کارایی برنامه است. هدف از این مقاله علاوه بر ارائه راهنمایی‌های فنی، افزایش آگاهی و پرورش مهارت‌های برنامه‌نویسان در کار با اسلایس‌ها و جلوگیری از تکرار اشتباهات متداول است.

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


👑 @gopher_academy

Gopher Academy

14 Feb, 11:30


🔵 عنوان مقاله
Reduce Your Apache Kafka Costs + Ops Burden With WarpStream

🟢 خلاصه مقاله:
مقاله مورد بحث به معرفی WarpStream می‌پردازد، یک تکنولوژی که هزینه‌های استفاده از Kafka را با کاهش نیاز به دیسک‌ها و هزینه‌های شبکه بین‌منطقه‌ای بیش از 80 درصد کاهش می‌دهد. این تکنولوژی قابل اجرا در ابر خصوصی است و داده‌ها در بستر ذخیره‌سازی اشیاء مشتری ذخیره می‌شوند، بنابراین داده‌های خام هرگز محیط شما را ترک نمی‌کنند. WarpStream همچنین قابلیت اتوماتیک نگهداری و اسکیل‌گیری خودکار را بدون نیاز به اپراتور یا تنظیمات اضافی دارا می‌باشد، نقطه قوتی که مدیریت داده‌ها و برنامه‌ها را به شدت ساده و کم هزینه می‌کند. این نوآوری‌ها در مهندسی و معماری ابری می‌تواند به طور قابل توجهی بر بهره‌وری و صرفه‌جویی در هزینه‌های مرتبط با پردازش داده تأثیر بگذارد.

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


👑 @gopher_academy

Gopher Academy

13 Feb, 11:30


🔵 عنوان مقاله
go-taskflow: A Taskflow-Like DAG Task Execution Framework

🟢 خلاصه مقاله:
مقاله‌ای که مد نظر است به بررسی و توصیف یک چارچوبی عمومی برای زبان برنامه‌نویسی Go پرداخته است که برای مدیریت وابستگی در کارهای همزمان ساخته شده است. این چارچوب به شکلی طراحی شده که قادر است فعالیت‌های موازی را بر اساس وظایف مشخص شامل تعاملات پیچیده وابستگی انجام دهد. هدف اصلی از توسعه این چارچوب، بهبود بهره‌وری در برنامه‌هایی است که نیاز به اجرای همزمان چندین عملیات دارند، بطوری که هر وظیفه می‌تواند به شکل مستقل و با در نظر گرفتن وابستگی‌های معین با دیگر وظایف، پیش برود. با استفاده از این چارچوب، توسعه‌دهندگان می‌توانند کارایی‌های برنامه‌های خود را بهبود بخشیده و اتکا به مدیریت دستی وابستگی‌ها را کاهش دهند. این چارچوب همچنین پیاده‌سازی‌های معمولاً پیچیده در مدیریت همزمانی را بهبود می‌بخشد و بستری انعطاف‌پذیر برای توسعه نرم‌افزار فراهم می‌آورد.

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


👑 @gopher_academy

Gopher Academy

12 Feb, 18:57



🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon

🟢 حوزه های تحت پوشش
(Bitcoin,

Ethereum,

Altcoins,

Blockchain,

Policy & Regulations,

NFTs,

DeFi)


🔵 مهندسی نرم افزار
🔴 @software_labdon

🟢 حوزه های تحت پوشش
(Engineering,

Architecture,

Design,

Testing,

Security ,

QA)


🔵 لینوکس- از توزیع‌ها تا ترفندهای امنیتی

🔴 @linux_labdon

🟢 حوزه های تحت پوشش
(Linux Distributions,

Open Source Software,

Security Tips ,

New Releases & Features)


🔵 دوآپـس - ابزارها و روندهای جدید

🔴 @devops_labdon

🟢 حوزه های تحت پوشش
(CI/CD Pipelines,

Cloud Infrastructure,

Containerization & Orchestration,

Monitoring & Performance,

Infrastructure as Code,

Security in DevOps)

Gopher Academy

12 Feb, 15:32


در زبان Go، انواع داده‌ها را می‌توان به دو دسته تقسیم کرد:

### 1. انواعی که در یک بلوک حافظه ذخیره می‌شوند (Solo Direct Value Part)
این دسته شامل boolean، عددی، اشاره‌گر، struct، array و unsafe pointer است. مقدار این انواع به‌صورت مستقیم در حافظه ذخیره می‌شود، به این معنی که مقدار آن‌ها در همان متغیر قرار دارد و به بخش دیگری از حافظه ارجاع نمی‌دهد.

### 2. انواعی که در چندین بلوک حافظه ذخیره می‌شوند (Direct Part → Underlying Part)
این دسته شامل slice، map، channel، function، interface و string است. مقدار واقعی این داده‌ها در یک بخش دیگر از حافظه ذخیره می‌شود و متغیر تنها یک ارجاع (reference) به آن مقدار دارد.

به‌عنوان‌مثال، یک slice شامل سه بخش است:
- pointer (به آرایه‌ای که داده‌ها را ذخیره می‌کند)
- length (تعداد عناصر)
- capacity (ظرفیت آرایه)

هنگامی که شما یک slice را به متغیر دیگری اختصاص می‌دهید، تنها ارجاع کپی می‌شود، نه داده‌های داخل آن. این رفتار در مورد map`، `channel`، `string و سایر انواع این دسته نیز صدق می‌کند.

مزیت این ساختار این است که می‌تواند از مدیریت حافظه بهینه‌تر پشتیبانی کند، اما در عوض نیازمند کنترل دقیق‌تر هنگام اشتراک‌گذاری داده‌ها میان بخش‌های مختلف برنامه است.

👑 @gopher_academy

Gopher Academy

12 Feb, 15:01


describe two categories of Go types:👆🏾

👑 @gopher_academy

Gopher Academy

12 Feb, 11:30


🔵 عنوان مقاله
Feluda: A Tool to Analyze the Licences of Dependencies

🟢 خلاصه مقاله:
این مقاله به معرفی پروژه‌ای می‌پردازد که با استفاده از زبان برنامه‌نویسی Rust انجام شده است، اما برای پردازش وابستگی‌های پروژه‌های Go، Rust یا Node.js قابل استفاده است. این ابزار قادر به ارائه گزارشی در مورد محدودیت‌های احتمالی مربوط به مجوزهای نرم‌افزاری یا نمایش یک رابط کاربری مبتنی بر متن موسوم به "TUI" است. گزارش یا رابط TUI به کاربران امکان می‌دهد تا درک بهتری از جنبه‌های حقوقی و مجوزهای مرتبط با کتابخانه‌ها و ماژول‌های مورد استفاده در پروژه‌های نرم‌افزاری خود به دست آورند. استفاده از این ابزار می‌تواند به توسعه‌دهندگان کمک کند تا از پیچیدگی‌های قانونی اجتناب کنند و تصمیم‌گیری‌های آگاهانه‌تری در مورد انتخاب مجوزها و کتابخانه‌ها داشته باشند.

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


👑 @gopher_academy

Gopher Academy

12 Feb, 05:30


🔵 عنوان مقاله
How to Release to Homebrew with GoReleaser, GitHub Actions and Semantic Release

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی فرآیند خودکارسازی انتشار پروژه‌های Go که از طریق Homebrew در دسترس هستند (مانند ابزارهای خط فرمان یا TUI) می‌پردازد، با تمرکز بر سیستم عامل macOS. روند خودکارسازی شامل چند مرحله‌ی اصلی است که با هدف افزایش کارایی و دقت در انتشار نسخه‌های جدید انجام می‌پذیرد. ابتدا، توسعه‌دهندگان باید فرآیند ساخت را برای تولید نسخه‌های قابل اجرا (binaries) تنظیم کنند. سپس، انتقال این نسخه‌ها به یک مخزن یا آرشیو باید خودکار سازی شود. مرحله‌ی بعد، نوشتن یک فرمول Homebrew برای پروژه است که شامل تعریف منابع، وابستگی‌ها و دستورالعمل‌های نصب می‌شود. در نهایت، توسعه‌دهندگان باید اطمینان حاصل کنند که فرآیند به‌روزرسانی فرمول Homebrew به طور خودکار در هر بار انتشار نسخه‌های جدید صورت پذیرد. این خودکارسازی به اطمینان از در دسترس بودن آخرین نسخه‌های پروژه برای کاربران macOS و کاهش خطاهای بشری کمک می‌کند.

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


👑 @gopher_academy

Gopher Academy

11 Feb, 11:32


دوره آموزش برنامه‌نویسی گولنگ، از مقدماتی تا پیشرفته به‌صورت جلسات Live Coding و پروژه یک وبسایت مشابه اینستاگرام

🔹 در این دوره از صفر تا صد گولنگ رو یاد میگیریم

🔸 یک پروژه کامل با معماری clean arch مثل اینستاگرام با قابلیت‌های: پست، استوری، لایک، کامنت، پروفایل و... رو پیاده‌سازی می‌کنیم

🔹 در مسیر پروژه از تکنولوژی‌های مختلفی مثل: لود تست با k6، پرومتئوس و گرافانا، آبجکت استوریج MinIO استفاده می‌کنیم تا چالش‌های سیستم‌های پیچیده را درک‌
و پیاده‌سازی کنیم

🔸 یاد میگیریم مایکروسرویس‌ها چی هستن و چه زمانی باید ازشون استفاده کنیم و درنهایت میریم سراغ protobuff ،Grpc و RabbitMQ

حتما به کلادی‌گو یه سر بزن و سرفصل و جزییات بخش‌های دوره رو یه نگاهی بنداز:

https://cloudygo.ir/register

📣 اگر میخوای توو این مسیر همراهمون باشی تا ۲۵ بهمن فرصت داری تا از طریق لینک بالا با تخفیف ۲۱ درصدی ثبت‌نام کنی!

Gopher Academy

11 Feb, 05:30


🔵 عنوان مقاله
etree 1.5: A Library to Parse and Generate XML Easily

🟢 خلاصه مقاله:
این مقاله به بررسی روشی ساده و مستقیم برای کار با XML در زبان برنامه‌نویسی Go پرداخته است که از ElementTree پایتون الهام گرفته شده است. در این رویکرد، اسناد XML به صورت درخت‌هایی نمایش داده می‌شوند که امکان پیمایش آسان آن‌ها را فراهم می‌کند. کاربران می‌توانند اسناد XML را ایجاد، وارد، تغییر دهند و ذخیره کنند. همچنین، پرس و جو در این اسناد می‌تواند با استفاده از روشی شبیه به XPath انجام شود. این مقاله به توضیح و بررسی این امکانات می‌پردازد و نحوه استفاده از آن‌ها در زبان Go را به طور دقیق شرح می‌دهد. این رویکرد به برنامه‌نویسان اجازه می‌دهد تا با استفاده از ابزارهای Python و الهام از آن، به راحتی با XML در Go کار کنند.

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


👑 @gopher_academy

Gopher Academy

10 Feb, 12:40


0.0000011 دلار

این قیمتی که مشاهده میکنید قیمت یک رمزارز توی بازار کریپتو نیست این قیمت ریال به دلار هستش.

واقعا نمیدونم چی بگم...



👑 @gopher_academy

Gopher Academy

10 Feb, 11:30


🔵 عنوان مقاله
Upcoming Workshop on Building Backend Web Apps in Go

🟢 خلاصه مقاله:
این کارگاه آموزشی دو روزه، که به صورت آنلاین یا حضوری برگزار می‌شود، به شرکت‌کنندگان فرصتی برای توسعه مهارت‌های خود در زبان برنامه‌نویسی Go می‌دهد. تمرکز این کارگاه بر استفاده از Go برای ساخت برنامه‌های پشت‌صحنه وب است. در طول دوره، شرکت‌کنندگان با ساختارهای داده، رابط‌ها و نحوه نوشتن تست‌های واحد در Go آشنا خواهند شد. این کارگاه فرصتی عالی برای یادگیری و بهبود توانایی‌های برنامه‌نویسی با استفاده از این زبان نوظهور و محبوب است، مناسب برای توسعه‌دهندگانی که علاقمند به تقویت دانش فنی خود در زمینه ساخت نرم‌افزارهای پشت‌صحنه هستند.

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


👑 @gopher_academy

Gopher Academy

10 Feb, 05:30


🔵 عنوان مقاله
Product Management Is Broken. Engineers Can Fix It

🟢 خلاصه مقاله:
این مقاله به بررسی تغییراتی می‌پردازد که شرکت PostHog در نحوه همکاری مدیران پروژه (PMs) و مهندسان اعمال کرده است تا بهینه‌سازی فرایندهای کاری خود را برای دستیابی به سرعت و استقلال عمل پیش ببرد. PostHog تصمیم گرفته است فرایندهای سنتی بین PM و مهندسان را کنار بگذارد و به جای آن، مدلی را پیاده‌سازی کند که در آن هر دو گروه بیشترین میزان مسئولیت و اختیار را داشته باشند. این شرکت با دادن استقلال بیشتر به افراد و تیم‌ها، توانسته است که رویکردی مبتنی بر سرعت و کارآمدی در پیش بگیرد. به این ترتیب، PM‌ها و مهندسان با همکاری نزدیک‌تر و داشتن دید واضح‌تر از اهداف و چشم‌اندازهای کلی پروژه‌ها، می‌توانند در کوتاه‌ترین زمان ممکن به نتایج بهتر دست یابند. تغییر در نحوه همکاری و تقسیم کار، به هر فرد امکان می‌دهد که با تکیه بر تخصص خود، به افزایش کارایی و تاثیرگذاری بیشتر در پروژه‌ها کمک کند.

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


👑 @gopher_academy

Gopher Academy

09 Feb, 12:31


دلار چی میگه!!!! 📈 😐😡

Gopher Academy

09 Feb, 11:30


🔵 عنوان مقاله
How a Malicious Package Exploited Module Proxy Caching for Persistence

🟢 خلاصه مقاله:
محققان حمله‌ای پیچیده در زنجیره تأمین را کشف کرده‌اند که از روش‌های "typosquatting" (تقلید از نام دامنه‌ها با تغییرات اندک املاکی) و "caching" ماژول‌های برنامه‌نویسی Go جهت ماندن نامحسوس در طول چندین سال استفاده می‌کند. درک این مکانیزم بسیار مهم است، زیرا ممکن است هر فردی با آن مواجه شود. در این روش، مهاجمان با ایجاد بسته‌های نرم‌افزاری دارای نام‌های بسیار نزدیک به نام‌های اصلی و معتبر، توسعه‌دهندگان نرم‌افزار را فریب می‌دهند. هنگامی که توسعه‌دهنده‌ای از این بسته‌های جعلی استفاده می‌کند، کد مخرب به صورت خودکار در نرم‌افزار او اجرا می‌شود. این تکنیک از قابلیت‌های کش ماژول پروکسی زبان برنامه‌نویسی Go بهره می‌برد تا فعالیت‌های مخرب خود را پنهان کند و تشخیص آن‌ها را دشوار سازد.

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


👑 @gopher_academy

Gopher Academy

09 Feb, 05:37


درود دوستان عزیز، اگر انتقاد یا پیشنهادی دارید که می‌تواند به بهبود چنل ها کمک کند، خوشحال می‌شوم از نظرات شما استفاده کنم. می‌توانید از طریق آی‌دی زیر با من در ارتباط باشید:

@mrbardia72


منتظر نظرات سازنده‌تان هستم! 😊

Gopher Academy

09 Feb, 05:30


🔵 عنوان مقاله
Proposal: math/rand/v2 Worked, Let's Do sync/v2!

🟢 خلاصه مقاله:
در تلاش گو برای برقراری تعادل بین نوآوری و ثبات، ایجاد نسخه‌های 'v2' از بسته‌های استاندارد به عنوان راه‌حل ارائه شده است. مقاله تمرکز خود را بر نسخه‌های جدید بسته‌ها مانند math/rand گذاشته است که توسط ایان به عنوان موفقیت آمیز شناخته شده‌ر و پیشنهاد می‌دهد که ابزارهای همگام‌سازی نیز به روزرسانی‌های مشابهی را تجربه کنند. این مقاله از یک ماه بحث و گفتگو سود می‌برد که شامل نارضایتی‌هایی است که در رابطه با رویکرد 'v2' مطرح شده‌اند. بحث‌های مفصل‌تر درباره این رویکرد و نحوه پیاده‌سازی آن بیان شده، که نشان دهنده پیچیدگی‌ها و چالش‌های ذاتی در تلاش برای نوسکردن و بهبود بسترهای نرم‌افزاری بدون قربانی کردن ثبات است.

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


👑 @gopher_academy

Gopher Academy

08 Feb, 16:18


خبر خوب برای علاقه‌مندان به Go و ستاره‌شناسی و نجوم! کتابخانه jpleph را معرفی می‌کنم - یک کتابخانه Go خالص برای کار با فایل‌های باینری JPL DE ephemerides!

https://github.com/mshafiee/jpleph

پکیج jpleph به شما اجازه می‌ده تا به سادگی موقعیت و سرعت اجرام منظومه شمسی رو با دقت بالا از فایل‌های JPL DE بخونید و محاسبه کنید.  مهم نیست سیستم عاملتون چیه، این کتابخانه به صورت خودکار endianness رو تشخیص میده و کار میکنه!

چرا JPL DE؟ چون برای محاسبات نجومی دقیق، ماموریت‌های فضایی و تحقیقات علمی بی‌نظیره! دقتش از سری‌های تحلیلی خیلی بیشتره و با آخرین داده‌های رصدی JPL آپدیت میشه. jpleph این دقت رو به پروژه‌های Go شما میاره!
ویژگی‌های کلیدی jpleph:

پیاده‌سازی. کامل با Go
عملکرد عالی (هم‌سطح C/C++)
سازگاری با پلتفرم‌های مختلف (کراس-پلتفرم)
یکپارچگی آسان با پروژه‌های Go
مدیریت خطای قوی

اگر به astronomy، space و Go علاقه دارید، حتماً به jpleph یه نگاهی بندازید!
به توسعه کتابخانه کمک کنید، issue گزارش بدید یا در پروژه‌هاتون ازش استفاده کنید.  GPLv2  متن‌باز و رایگان!


<Mohammad Shafiee/>

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

08 Feb, 11:30


🔵 عنوان مقاله
Zog: 'Next Gen' Schema Validation for Go

🟢 خلاصه مقاله:
مقاله‌ای که اشاره شده به معرفی دو کتابخانه برنامه‌نویسی، Zod و Zog، می‌پردازد. Zod، کتابخانه‌ای محبوب برای اعتبارسنجی طرح‌های داده به صورت پویا در زبان برنامه‌نویسی TypeScript است. از سوی دیگر، Zog نسخه‌ای مشابه با Zod است که برای زبان Go توسعه یافته تا امکان تعریف و اجرای اعتبارسنجی‌ها بر روی مقادیر و ساختارها را فراهم آورد. هر دو کتابخانه به توسعه‌دهندگان امکان می‌دهند تا اصول و قواعد اعتبارسنجی را برای داده‌ها تعریف کنند و از صحت آن‌ها در زمان اجرای برنامه اطمینان حاصل نمایند. برای دسترسی به کدها و پروژه‌های مربوط به این کتابخانه‌ها، به مخزن GitHub آنها ارجاع داده شده است. این کتابخانه‌ها به ویژه برای توسعه‌دهندگانی که به دنبال راه‌حل‌های موثر برای اعتبارسنجی داده‌ها در برنامه‌های خود هستند، مفید هستند.

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


👑 @gopher_academy

Gopher Academy

08 Feb, 07:46


📚 معرفی دو کتاب عالی در زمینه ساختمان داده و الگوریتم‌ها

اگر به دنبال منابع قوی برای یادگیری ساختمان داده‌ها (Data Structures) و الگوریتم‌ها (Algorithms) هستید، این دو کتاب را از دست ندهید:👇

🔵https://skybooks.ir/products/Grokking-Algorithms

Table of Contents

1. Introduction to algorithms
2. Selection sort
3. Recursion
4. Quicksort
5. Hash tables
6. Beadth-first search
7. Trees
8. Balanced trees
9. Dijkstra’s algorithm
10. Greedy algorithms
11. Dynamic programming
12. k-nearest neighbors
13. where to go next

🔵https://skybooks.ir/products/Grokking-Data-Structures

Table of Contents

1. Introducing data structures: Why you should learn about data structures
2. Static arrays: Building your first data structure
3. Sorted arrays: Searching faster, at a price
4. Big-O notation: A framework for measuring algorithm efficiency
5. Dynamic arrays: Handling dynamically sized datasets
6. Linked lists: A flexible dynamic collection
7. Abstract data types: Designing the simplest container—the bag
8. Stacks: Piling up data before processing it
9. Queues: Keeping information in the same order as it arrives
10. Priority queues and heaps: Handling data according to its priority
11. Binary search trees: A balanced container
12. Dictionaries and hash tables: How to build and use associative arrays
13. Graphs: Learning how to model complex relationships in data

Gopher Academy

08 Feb, 06:10


پادکست نیمچه برنامه نویس:
این پادکست به شکل روان و داستانی موضوعاتی را در حوزه‌ی دواپس و برنامه نویسی روایت می‌کند.
مثلا در چند اپیزود اخیر به روایت و بررسی کالبدشکافی داون تایم شرکت های بزرگ پرداخته است.
اپیزود های کوتاه و جذاب این پادکست به صورت هفتگی منتشر می‌شوند.


می‌توانید کانال این پادکست را در کست‌باکس دنبال کنید:
https://castbox.fm/vh/6294201

👑 @DevOps_Labdon

Gopher Academy

08 Feb, 05:30


🔵 عنوان مقاله
httptap: View HTTP/HTTPS Requests Made by Any Linux Program

🟢 خلاصه مقاله:
این متن درباره یک ردیاب HTTP محدود به فرایند و مبتنی بر زبان برنامه‌نویسی Go است که بدون نیاز به دسترسی‌های ریشه (root) قابل اجرا است. این ابزار فقط از فضاهای نام شبکه‌ای در لینوکس پشتیبانی می‌کند و قابلیت رمزگشایی ترافیک TLS را دارد به این ترتیب که یک مرکز احراز هویت (CA) را بلافاصله و به‌صورت خودکار تولید می‌کند. این ویژگی‌ها ردیاب را ابزاری مفید برای عیب‌یابی یا بررسی ارتباطات خارجی نرم‌افزارها و وابستگی‌های آن‌ها فراهم می‌آورد، که ممکن است بدون اطلاع کاربر، اطلاعاتی را به خارج منتقل کنند.

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


👑 @gopher_academy

Gopher Academy

07 Feb, 11:30


🔵 عنوان مقاله
Go Programs Freezing When Launched by Steam

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفت، به مشکلی فنی پرداخته که توسط توسعه‌دهنده اصلی Ebitengine گزارش شده است. این مشکل فنی به خطاهایی در برنامه‌های نوشته شده با زبان برنامه‌نویسی Go اشاره دارد که توسط لانچر بازی Steam اجرا شده‌اند. مشخص شده است که Steam به نحوی با محیط اجرایی Go تداخل دارد، که منجر به شکست در اجرای برنامه‌ها می‌شود. این موضوع به بحث گسترده‌ای در مخزن Go منجر شده و چندین راه‌حل موقت ارائه شده است، اما هنوز هیچ راه‌حل کاملی برای حل این مشکل ارائه نشده است. بررسی‌ها و تلاش‌ها برای رفع این مشکل همچنان ادامه دارد و جامعه برنامه‌نویسان در تلاشند تا راه‌حلی دائمی بیابند.

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


👑 @gopher_academy

Gopher Academy

07 Feb, 05:30


🔵 عنوان مقاله
A Minesweeper Game Written in Go

🟢 خلاصه مقاله:
این مقاله به توضیح و بررسی یک نمونه بازی صحبت می‌پردازد که نه تنها به شکل معمول بر روی دسکتاپ اجرا می‌شود، بلکه قابلیت اجرا در وب را نیز دارد. تأثیرات و جزئیات بازی جذاب توصیف شده و به عنوان یک استفاده عالی از موتور بازی Ebitengine ارزیابی شده است. این مقاله همچنین به مخاطبانی که قصد دارند دستاوردهای مشابهی بدست آورند توصیه می‌کند که حتماً نگاهی به مخزن GitHub مربوط به این بازی بیندازند. بنابراین، این مقاله هم به ارائه دیدگاهی در مورد پیاده‌سازی بازی‌ها در محیط‌های مختلف و هم ارائه منابعی برای علاقمندان به توسعه بازی‌های مشابه می‌پردازد.

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


👑 @gopher_academy

Gopher Academy

05 Feb, 05:31


🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon
🟢 حوزه های تحت پوشش

(Bitcoin, Ethereum, Altcoins, Blockchain, Policy & Regulations, AI, NFTs, DeFi)


🔵 مهندسی نرم افزار
🔴 @software_labdon
🟢 حوزه های تحت پوشش

(Engineering, Architecture, Design, Testing, Security , QA)


🔵 لینوکس- از توزیع‌ها تا ترفندهای امنیتی
🔴 @linux_labdon
🟢 حوزه های تحت پوشش

(Linux Distributions, Open Source Software, Security Tips ,New Releases & Features)


🔵 دوآپـس - ابزارها و روندهای جدید
🔴 @devops_labdon
🟢 حوزه های تحت پوشش

(CI/CD Pipelines, Cloud Infrastructure, Containerization & Orchestration, Monitoring & Performance, Infrastructure as Code, Security in DevOps)

Gopher Academy

03 Feb, 11:30


🔵 عنوان مقاله
Keep Your Apps Fast and Error-Free with Honeybadger

🟢 خلاصه مقاله:
«Honeybadger» ابزاری است که به شما در شناسایی و رفع خطاها، حذف گلوگاه‌های عملکرد و کاوش سریع‌تر در جزئیات کمک می‌کند. این سیستم پشتیبانی از زبان‌های برنامه‌نویسی متعددی مانند Go، Ruby و هشت زبان دیگر را ارائه می‌دهد و بهترین روش برای کسب دیدگاه‌های لحظه‌ای در مورد سلامت و عملکرد برنامه‌های کاربردی است. Honeybadger با فراهم آوردن این امکانات، فرآیند نظارت و بهبود مستمر برنامه‌های کاربردی را تسهیل می‌بخشد.

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


👑 @gopher_academy

Gopher Academy

03 Feb, 05:30


🔵 عنوان مقاله
Centrifugo v6: A Scalable Real-Time Messaging Server

🟢 خلاصه مقاله:
این مقاله در خصوص ابزاری متن‌باز و خودمیزبانی شده به منظور ارسال پیام به کاربران اپلیکیشن‌های برخط توسط WebSocket، HTTP استریمینگ، SSE، و دیگر روش‌ها می‌پردازد. این ابزار معادلی برای Pubnub یا Pusher است اما با این تفاوت که در زبان Go نوشته شده‌است و فارغ از زبان برنامه‌نویسی، قابل استفاده است. همچنین، کد این ابزار در مخزن GitHub قابل دسترسی است. این مقاله بر توانایی‌های این ابزار تاکید دارد و اینکه چگونه می‌تواند به توسعه‌دهندگان در ارائه‌ی راه‌حل‌های ارتباطی برخط و به زمان واقعی کمک کند. ایده اصلی ارائه یک ابزار متن باز است که توسعه دهندگان می‌توانند برای پیکربندی و استفاده در پروژه‌های خود تنظیم کنند.

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


👑 @gopher_academy

Gopher Academy

02 Feb, 18:15


دوره دوم بوت‌کمپ برنامه‌نویسی Golang

🔺 فرصت آموزش و استخدام در همکاران سیستم 🔺

در طی ۴ جلسه حضوری:

🧲 مباحث اصلی برنامه‌نویسی با زبان گولنگ رو یاد می‌گیری.

💻 با طراحی نرم‌افزارهای کوچک به حل چالش‌ها و مسائل واقعی دنیای برنامه‌نویسی می‌پردازی.

🏢 و پس از اتمام دوره، وارد فرآیند جذب همکاران سیستم می‌شی.

💳 هزینه دوره: رایگان

- - - - - - - - - - - - - - - - -

👈🏻 برای شرکت در این دوره کافیه رزومه‌ت رو برای ما ارسال کنی تا در صورت تأیید شدن رزومه و پشت سر گذاشتن موفق مصاحبه فنی، اطلاعات شرکت در دوره رو برای شما ارسال کنیم. در ضمن در صورتی که هر سوالی درباره این دوره داشتی، از طریق همین ایمیل در ارتباط هستیم:

[email protected]

📅 مهلت ارسال رزومه:
یکشنبه ۲۱ بهمن‌ماه
- - - - - - - - - - - - - - - - -
Linkedin | Instagram

Gopher Academy

02 Feb, 11:30


🔵 عنوان مقاله
Protect Against Bots, Fraud, and Abuse in Real Time

🟢 خلاصه مقاله:
مقاله‌ای که ارائه داده‌اید، درباره‌ی محصول WorkOS Radar صحبت کرده که با بهره‌گیری از سیستم پیشرفته‌ی تشخیص هویت دستگاه، امنیت برنامه‌های کاربردی را تقویت می‌کند. این سیستم قابلیت دارد تا از وقوع تقلب‌های ثبت‌نام جعلی، سوء استفاده از سطوح رایگان، حملات رباتیک و تلاش‌های ورود اجباری به سیستم جلوگیری کند. با استفاده از فناوری امنیتی مدرن و به‌روز، WorkOS Radar به توسعه‌دهندگان اپلیکیشن‌ها این امکان را می‌دهد که از اپلیکیشن خود در برابر تهدیدات و تلاش‌های مخرب به طور موثر محافظت کنند. این محصول برای مبارزه با تلاش‌های نفوذ و حفظ امنیت کاربران طراحی شده است، که در نتیجه ایمنی بیشتری را برای برنامه‌ها و سیستم‌های تحت پوشش آن فراهم می‌آورد.

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


👑 @gopher_academy

Gopher Academy

02 Feb, 05:30


🔵 عنوان مقاله
Go 1.24's go tool is One of the Best Additions in Years

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شد، به نوآوری‌ها و تغییرات نسخه 1.24 زبان برنامه‌نویسی Go می‌پردازد که هنوز به طور کامل منتشر نشده است، اما نسخه اصلاح شده دوم آن (rc2) در دسترس قرار گرفته است. توجه زیادی به این نسخه معطوف شده زیرا شامل بهبودهای قابل توجهی است. یکی از مهم‌ترین پیشرفت‌ها، افزودن دستور جدید در ابزار Go و معرفی دستورالعمل 'tool' در فایل go.mod است. این تغییرات در مدیریت وابستگی‌ها در هنگام توسعه کمک شایانی می‌کند و عملکرد را از طریق کش کردن اجراها بهبود می‌بخشد و همچنین موجب کاهش بلوغ وابستگی‌ها می‌شود. این بهبودها می‌توانند در کارآیی کلی زبان و تجربه توسعه‌دهندگان تأثیرات مثبتی داشته باشند.

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


👑 @gopher_academy

Gopher Academy

01 Feb, 11:30


🔵 عنوان مقاله
Proposal: A Way to Reduce Error Handling Boilerplate with ?

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفت، پیشنهادی برای ساده‌سازی مدیریت خطا با استفاده از عملگر "?" ارائه می‌دهد. این عملگر جدید قادر است با کاهش کدهای اضافی، خطاها را به طور اختیاری مدیریت کند و در صورت وجود خطا به سرعت عملیات را متوقف سازد یا بلوک مدیریت خطا را اجرا نماید. استفاده از این عملگر می‌تواند به توسعه‌دهندگان این امکان را بدهد که بدون نیاز به کدنویسی مفصل برای هر شرایط خطا، به طور موثرتری کدهای پاک‌تر و خواناتری بنویسند. این رویکرد همچنین می‌تواند به بهبود خوانایی کد و سهولت نگهداری پروژه‌های برنامه‌نویسی کمک شایانی کند. در نهایت، عملگر "?" به عنوان یک راه‌حل کارآمد برای کاهش پیچیدگی‌های مرتبط با مدیریت خطا و افزایش تمرکز بر منطق اصلی برنامه‌ها مطرح می‌شود.

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


👑 @gopher_academy

Gopher Academy

01 Feb, 05:30


🔵 عنوان مقاله
Maps are Faster in Go 1.24

🟢 خلاصه مقاله:
مقاله‌ای که مطرح شده، به توضیح بهبودهای انجام‌شده در زبان برنامه‌نویسی Go در نسخه 1.24 می‌پردازد. این بهبودها با به‌کارگیری جداولی به نام Swiss Tables صورت گرفته است. جداول Swiss، روشی نوین در پیاده‌سازی جداول هش هستند که کارایی بالاتری را فراهم می‌کنند. نکته مهم این است که برنامه‌نویسان برای بهره‌مندی از این امکانات جدید نیازی به اعمال تغییرات یا بروزرسانی‌های خاص در کد خود ندارند. تنها با ارتقاء به نسخه 1.24 از Go، به‌طور خودکار این بهبودها در دسترس قرار می‌گیرد و کاربران می‌توانند از مزایای آن بهره ببرند، از جمله افزایش فعالیت و کارایی در تعامل با جداول هش. این تغییرات قرار است تأثیر قابل توجهی در بهبود عملکرد برنامه‌های نوشته شده در Go داشته باشد.

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


👑 @gopher_academy

Gopher Academy

31 Jan, 11:30


🔵 عنوان مقاله
Go Slices: Shared Memory and append() Pitfalls

🟢 خلاصه مقاله:
این متن کوتاه به بررسی برخی از اشکالات بالقوه در زبان برنامه‌نویسی Go هنگام کار با آرایه‌ها (slices) و زیرآرایه‌ها (sub-slices) می‌پردازد. نویسنده، پست راب پایک در سال 2013 در وبلاگ رسمی Go را به عنوان منبعی مفید در این زمینه معرفی کرده است. مقاله احتمالاً توضیح داده که چگونه برنامه‌نویسان می‌توانند به اشتباهاتی در استفاده از این ویژگی‌های زبان برخورد کنند و چگونه می‌توان از این اشکالات اجتناب کرد. اطلاعات بیشتری درباره پیچیدگی‌های ایجاد شده توسط آرایه‌ها و زیرآرایه‌ها و چالش‌های مرتبط با مدیریت حافظه در این زمینه ارائه شده است. بنابراین، درک این مسائل به شما کمک می‌کند تا به عنوان یک توسعه‌دهنده Go، کدهای مطمئن‌تر و بهینه‌تری بنویسید.

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


👑 @gopher_academy

Gopher Academy

31 Jan, 10:02


😂😂😂😂😂

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

31 Jan, 05:30


🔵 عنوان مقاله
Maddy 0.8: A Composable All-in-One Mail Server

🟢 خلاصه مقاله:
این مقاله به معرفی نسخه 0.8 یک نرم‌افزار پیام‌رسانی می‌پردازد که می‌تواند به عنوان یک MTA (میزبان انتقال پیام) عمل کند، پیام‌ها را از طریق SMTP دریافت کند، آن‌ها را ذخیره کند و حتی دسترسی به پیام‌ها را از طریق IMAP فراهم آورد. برای استفاده از این نسخه، نیاز است که نرم‌افزار Go نسخه 1.23 یا بالاتر نصب شده باشد. علاوه بر این، پشتیبانی از پروتکل PROXY متعلق به HAProxy و همچنین مدیریت رکوردهای چالش DNS-01 به این نسخه افزوده شده است. این ویژگی‌ها به بهبود امنیت و کارایی این نرم‌افزار در مدیریت ارتباطات و پیام‌ها کمک می‌کنند.

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


👑 @gopher_academy

Gopher Academy

29 Jan, 08:41


پنج پرامپت chatgpt برای بهبود عملکرد


۱. تولید پیشنهادات کاربردی
"من تازه به استفاده از ChatGPT روی آورده‌ام و شغل من [شغل خود را وارد کنید] است. لطفاً فهرستی از ۱۰ پیشنهاد برتر برای افزایش بهره‌وری من ارائه دهید."

۲. بهبود نوشتار با بازخورد دقیق
"[متن نوشتاری خود را وارد کنید] لطفاً نوشته‌ی من را بررسی کن. اشتباهات گرامری و املایی را اصلاح کن و پیشنهاداتی برای بهبود وضوح نوشته‌ام ارائه بده."

۳. ساخت یک رزومه قوی
"جزئیات حرفه‌ای من را در زیر تحلیل کن و یک رزومه متقاعدکننده ایجاد کن که به من در یافتن شغل [جزئیات شغل مورد نظر را وارد کنید] کمک کند: [جزئیات حرفه‌ای خود را وارد کنید]."

۴. تسریع یادگیری با اصل ۸۰/۲۰
"می‌خواهم درباره [موضوع مورد نظر را وارد کنید] یاد بگیرم. لطفاً ۲۰ درصد مهم‌ترین نکات این موضوع را شناسایی و به اشتراک بگذار که به من کمک کند ۸۰ درصد آن را درک کنم."

۵. یادگیری مهارت‌های جدید
"می‌خواهم در [مهارت مورد نظر را وارد کنید] بهتر شوم. من کاملاً مبتدی هستم. لطفاً یک برنامه یادگیری ۳۰ روزه ایجاد کن که به یک مبتدی مانند من کمک کند تا این مهارت را بیاموزد و پیشرفت کند."

با استفاده از این پیشنهادات، می‌توانید بهره‌وری خود را افزایش دهید و مهارت‌های جدیدی یاد بگیرید!

Gopher Academy

29 Jan, 05:30


🔵 عنوان مقاله
gno.land Offers Grants & Bounties for Go-Powered Decentralized Apps

🟢 خلاصه مقاله:
مقاله‌ای که شما به آن اشاره کرده‌اید، به معرفی پلتفرم قرارداد هوشمند gno.land می‌پردازد که محیطی جذاب برای توسعه‌دهندگان برنامه‌ها، علاقمندان به زبان برنامه‌نویسی Go و کسانی است که به دنبال کار با تکنولوژی‌های نوین هستند. این پلتفرم به کاربران امکان می‌دهد تا در محیطی آزاد و عادلانه به ساخت و پیاده‌سازی قراردادهای هوشمند بپردازند. هدف از این پلتفرم، فراهم کردن امکاناتی است که از طریق آنها بتوان جهانی بهتر و عادلانه‌تری را رقم زد. این پلتفرم با استفاده از زبان Go، یکی از زبان‌های برنامه‌نویسی روز دنیا، به کاربران امکان می‌دهد قابلیت‌های نوآورانه‌ای را در توسعه نرم‌افزارهای خود به کار برند.

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


👑 @gopher_academy

Gopher Academy

28 Jan, 11:30


🔵 عنوان مقاله
  Go in the Smallest of Places

🟢 خلاصه مقاله:
مقاله‌ای که در کنفرانس GopherCon 2024 ارائه شده است به بررسی پتانسیل و جزئیات فنی استفاده از TinyGo برای ساخت سیستم‌های مبتنی بر زبان Go روی میکروکنترلرها می‌پردازد. TinyGo به عنوان یک پیاده‌سازی کوچک و بهینه از زبان برنامه‌نویسی Go شناخته شده است که برای دستگاه‌های دارای منابع محدود مانند میکروکنترلرها طراحی شده است. سخنرانی تمرکز اصلی‌اش بر روی چالش‌ها و راه‌حل‌هایی بوده است که TinyGo در رفع مشکلات مربوط به محدودیت‌های حافظه و قدرت پردازش ارائه می‌دهد. همچنین بر این نکته تاکید شده که چگونه TinyGo می‌تواند برای توسعه دهندگان Go امکان استفاده از کدهای موجود را به‌گونه‌ای فراهم آورد که به آسانی قابل انتقال به پلتفرم‌های سخت‌افزاری مختلف باشد. این سخنرانی نه تنها جنبه‌های فنی را پوشش داده، بلکه به نمونه‌های کاربردی نیز پرداخته تا نشان دهد چگونه TinyGo می‌تواند در پروژه‌های واقعی مورد استفاده قرار گیرد.

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


👑 @gopher_academy

Gopher Academy

28 Jan, 07:23


در زبان برنامه‌نویسی Go (گولنگ)، مفهوم mutable و immutable به قابلیت تغییر یا عدم تغییر داده‌ها پس از ایجاد آنها اشاره دارد. این مفاهیم به طور مستقیم در خود زبان Go تعریف نشده‌اند، اما می‌توان آنها را در رفتار انواع داده‌ها مشاهده کرد.

### ۱. Immutable Types (انواع غیرقابل تغییر)

- تعریف: داده‌هایی که پس از ایجاد، نمی‌توان محتوای آنها را تغییر داد.

- مثال‌ها:

- اعداد (int, float, ...): وقتی یک عدد ایجاد می‌شود، نمی‌توان آن را تغییر داد. اگر مقدار جدیدی به یک متغیر اختصاص دهید، در واقع یک مقدار جدید ایجاد می‌شود.

- رشته‌ها (string): رشته‌ها در Go غیرقابل تغییر هستند. اگر بخشی از یک رشته را تغییر دهید، در واقع یک رشته جدید ایجاد می‌شود.

- ثابت‌ها (constants): ثابت‌ها در Go نیز غیرقابل تغییر هستند.


#### مثال:

s := "Hello"
s[0] = 'h' // این خطا می‌دهد، زیرا رشته‌ها غیرقابل تغییر هستند.
s = "hello" // این کار می‌کند، اما در واقع یک رشته جدید ایجاد می‌شود.




### ۲. Mutable Types (انواع قابل تغییر)

- تعریف: داده‌هایی که پس از ایجاد، می‌توان محتوای آنها را تغییر داد.

- مثال‌ها:
- آرایه‌ها (arrays): آرایه‌ها در Go قابل تغییر هستند، اما اندازه آنها ثابت است.
- برش‌ها (slices): برش‌ها قابل تغییر هستند و می‌توان عناصر آنها را تغییر داد.
- نقشه‌ها (maps): نقشه‌ها نیز قابل تغییر هستند و می‌توان کلیدها و مقادیر آنها را تغییر داد.
- ساختارها (structs): اگر فیلدهای یک ساختار قابل تغییر باشند، می‌توان آنها را تغییر داد.


#### مثال:

slice := []int{1, 2, 3}
slice[0] = 10 // این کار می‌کند، زیرا برش‌ها قابل تغییر هستند.



### ۳. تفاوت‌های کلیدی
- تغییرپذیری: داده‌های mutable پس از ایجاد قابل تغییر هستند، در حالی که داده‌های immutable پس از ایجاد غیرقابل تغییر هستند.
- عملکرد: تغییر داده‌های immutable معمولاً منجر به ایجاد یک کپی جدید از داده می‌شود، در حالی که تغییر داده‌های mutable روی همان داده اصلی اعمال می‌شود.
- کارایی: استفاده از داده‌های mutable می‌تواند کارایی بیشتری داشته باشد، زیرا از ایجاد کپی‌های مکرر جلوگیری می‌کند. با این حال، داده‌های immutable امن‌تر هستند و از خطاهای ناشی از تغییرات ناخواسته جلوگیری می‌کنند.

### ۴. نکات مهم
- در Go، رشته‌ها و ثابت‌ها immutable هستند، در حالی که برش‌ها، نقشه‌ها و ساختارها mutable هستند.
- هنگام کار با داده‌های mutable، باید مراقب باشید که تغییرات ناخواسته در داده‌ها رخ ندهد، به ویژه زمانی که داده‌ها بین توابع یا گوروتین‌ها به اشتراک گذاشته می‌شوند.

این تفاوت‌ها به شما کمک می‌کنند تا تصمیم بگیرید از کدام نوع داده در شرایط مختلف استفاده کنید.


👑 @gopher_academy

Gopher Academy

28 Jan, 07:07


🔵Mutable data type in Golang

Slice
Array
Map
Channels

————————————-

🔵Immutable data type in Golang

Boolean, Int, Float
Pointers
String
Interfaces


👑 @gopher_academy

Gopher Academy

28 Jan, 05:30


🔵 عنوان مقاله
asyncmachine-go: A Declarative Control Flow Library

🟢 خلاصه مقاله:
مقاله‌ی مورد بررسی رویکردهای برنامه‌نویسی شیء‌گرا و مدل بازیگر را از طریق ماشین حالت مبتنی بر ساعت برای ساخت جریان‌های کاری خودکار و دارای حالت بررسی می‌کند. این روش به توسعه‌دهندگان امکان می‌دهد تا با استفاده از ماشین‌های حالت که زمان‌بندی‌های مشخصی دارند، جریان‌های کاری پیچیده‌ای را طراحی و پیاده‌سازی کنند. با استفاده از مدل بازیگر، هر کامپوننت به‌عنوان یک بازیگر مستقل عمل می‌کند که می‌تواند پیام‌ها را دریافت کرده و بر اساس آن‌ها واکنش نشان دهد. این بازیگرها توانایی اجرای اعمال مختلف را دارند و با ارتباطات مشخص و قواعد تعریف‌شده با دیگر بازیگرها تعامل می‌کنند. این تکنیک به‌ویژه برای برنامه‌هایی که نیاز به مدیریت و واکنش‌های سریع دارند، مفید است، زیرا امکان پیکربندی پویای جریان‌های کاری و پاسخ‌گویی به تغییرات در زمان واقعی را فراهم می‌آورد. این سیستم تأکیدی بر خودکارسازی و کاهش نیاز به دخالت دستی دارد، که باعث افزایش کارایی و دقت در پردازش‌ها می‌شود.

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


👑 @gopher_academy

Gopher Academy

27 Jan, 18:33


💡 چرا همه اساتید موفق سیگنال و پکیج میفروشن ؟ 🥶

‼️ ادم موفق چیزی میفروشه به مردم ؟😂

💯 اقای ارسلان حسینی تو چنلش هر هفته یک سیگنال میده سری قبلی ریپل سیگنال داد ۳۵۰٪ سود داده و روند امروز مارکت هم تحلیل کرده بود و معامله جدید هم گذاشته 💸

برای ورود کلیک کنید:

💬
@arsalaneth ⬅️
💬
@arsalaneth ⬅️
🔴🔴🔴🔴🔴🔴

Gopher Academy

27 Jan, 11:30


🔵 عنوان مقاله
Forgejo 10.0: A Go-Powered Self-Hosted Software Forge

🟢 خلاصه مقاله:
مقاله‌ای که شما به آن اشاره کرده‌اید، در مورد نرم‌افزاری به نام Forgejo بحث می‌کند که به عنوان یک جایگزین کامل برای GitHub پیشنهاد شده است. Forgejo در واقع یک شاخه (fork) از نرم‌افزار Gitea است، اما با ویژگی‌های بیشتر توسعه یافته که آن را برای استفاده به عنوان پلتفرم کدنویسی مستقل تقویت می‌کند. این پلتفرم اکنون توسط Codeberg به کار گرفته شده است و شما می‌توانید نحوه کار آن را در مخزن خود Forgejo مشاهده کنید. به تازگی نسخه‌ی 10.0 از آن منتشر شده است که احتمالاً شامل به‌روزرسانی‌ها و ویژگی‌های جدیدی است. این مقاله تاکید دارد که Forgejo گزینه‌ای قدرتمند برای کسانی است که به دنبال جایگزینی برای GitHub هستند.

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


👑 @gopher_academy

Gopher Academy

27 Jan, 05:30


🔵 عنوان مقاله
Go 1.24 Release Candidate 2 Released

🟢 خلاصه مقاله:
در جدیدترین گزارش‌ها، تیم توسعه‌دهنده زبان برنامه‌نویسی Go اعلام کرده‌اند که یک قدم دیگر به انتشار نسخه 1.24 نزدیک‌تر شده‌ایم. آنها به شدت تاکید دارند که کاربران به آزمایش نسخه دوم کاندید انتشار (RC2) بپردازند و از آن در محیط‌های توسعه و تولید استفاده کنند تا هرگونه اشکالات آن را گزارش دهند. هرچند که RC2 تفاوت چشمگیری با RC1 ندارد، اما یادداشت‌های اولیه انتشار همچنان بهبود می‌یابند. علاوه بر این، تور تعاملی Go 1.24 ارائه‌شده توسط آنتون زیانوف به شما کمک می‌کند تا به سرعت با ویژگی‌های جدید این نسخه آشنا شوید و در کاربرد آن‌ها سرعت بگیرید. این بروزرسانی‌ها و امکانات جدید نشان‌دهنده تعهد مستمر تیم Go به بهبود و تکامل این زبان است.

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


👑 @gopher_academy

Gopher Academy

26 Jan, 11:30


🔵 عنوان مقاله
  How to Build an MMO Game with Godot 4 and Go

🟢 خلاصه مقاله:
این مقاله به بررسی و توضیح یک سری ویدیویی متشکل از 13 قسمت در یوتیوب می‌پردازد که نحوه ساخت یک بازی آنلاین چندنفره با استفاده از موتور بازی محبوب Godot (بدون ارتباط با Go) را آموزش می‌دهد. در این سریال، زبان برنامه‌نویسی Go برای مدیریت بخش پشتیبانی(بک‌اند) استفاده شده است. اصلی‌ترین هدف از این سری ویدیو، ارائه دستورالعمل‌ها و راهنمایی‌های گام به گام برای توسعه‌دهندگانی است که علاقمند به استفاده از Godot و Go در پروژه‌های بازی‌سازی خود هستند. این مقاله، علاوه بر معرفی ابزارها و تکنولوژی‌های مرتبط، به برجسته‌سازی توانایی‌ها و قابلیت‌های این دو پلتفرم در خلق بازی‌های چندنفره تمرکز دارد و نکات کاربردی برای برنامه‌نویسان و توسعه‌دهندگان بازی را ارائه می‌دهد.

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


👑 @gopher_academy

Gopher Academy

26 Jan, 05:30


🔵 عنوان مقاله
Protect Against Bots, Fraud, and Abuse in Real Time

🟢 خلاصه مقاله:
مقاله‌ای که ارائه شده در مورد WorkOS Radar و کاربردهای آن در حفظ امنیت برنامه‌ها می‌پردازد. WorkOS Radar با استفاده از تکنیک‌های پیشرفته شناسایی دستگاه (device fingerprinting)، قادر است رفتارهای مضر را تشخیص داده، تأیید کند و مسدود سازد. این فناوری به ویژه در جلوگیری از ثبت‌نام‌های جعلی، سوءاستفاده از سطح رایگان خدمات و همچنین مقابله با حملات ربات‌ها و تلاش‌های نفوذ به صورت خودکار (brute force attacks) مؤثر است. با استفاده از WorkOS Radar، کاربران می‌توانند از برنامه‌های خود در برابر انواع خطرات سایبری به طور موثر محافظت کرده و ایمنی داده‌ها و عملکرد کاربردی برنامه‌های خود را تضمین کنند. این ابزار امنیتی به کاربران این امکان را می‌دهد که به صورت فعال و پیشگیرانه در مقابل تهدیدات سایبری قدم بردارند.

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


👑 @gopher_academy

Gopher Academy

25 Jan, 11:30


🔵 عنوان مقاله
Bunster: Compile Shell Scripts to Static Binaries

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به بررسی چگونگی تبدیل اسکریپت‌های bash به زبان برنامه‌نویسی Go و سپس تبدیل آنها به باینری‌ها می‌پردازد. این فرآیند به منظور افزایش قابلیت حمل و اجرای اسکریپت‌ها در محیط‌های مختلف بدون نیاز به مفسر bash انجام می‌شود. ترانسپایل کردن اسکریپت‌های bash به زبان Go امکان بهره‌مندی از ویژگی‌های این زبان مانند مدیریت حافظه بهینه‌تر، سرعت بالاتر اجرا، و حاکمیت بیشتر بر روی محیط اجرایی را فراهم می‌آورد. به علاوه، این رویکرد امکان توزیع برنامه‌ها به صورت فایل‌های باینری را می‌دهد که اجرای آنها در سیستم‌ها و پلتفرم‌های گوناگون آسان‌تر می‌شود. این مقاله به خوانندگان راهنمایی‌های کاربردی برای ترانسپایل اسکریپت‌های bash می‌دهد و مزایای استفاده از Go را تشریح می‌کند.

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


👑 @gopher_academy

Gopher Academy

25 Jan, 05:30


🔵 عنوان مقاله
The First Newsletter Dedicated to Product Engineers

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته، تمرکز خود را بر روی نقش مهم مهندسان محصول در استارت‌آپ‌های در حال رشد به سرعت معطوف داشته است. این مهندسان نه تنها توانایی تشخیص نیازمندی‌های محصول را دارند، بلکه قابلیت اجرایی کردن این نیازها را نیز دارا هستند. اهمیت این نقش در این است که این افراد قادر به هم‌زمانی تحلیل و پیاده‌سازی هستند، که این امر، کلیدی برای موفقیت سریع است. مقاله با ارائه مهارت‌ها و راهبردهای لازم برای موفقیت در این نقش، "Product for Engineers" را به عنوان منبعی معرفی می‌کند که به اشتراک‌گذاری این دانش‌ها پرداخته و به مهندسان محصول کمک می‌کند تا در محیط‌های پویا و سریع استارت‌آپ‌ها به موفقیت دست یابند.

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


👑 @gopher_academy

Gopher Academy

24 Jan, 16:19



https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

24 Jan, 11:30


🔵 عنوان مقاله
An Interactive Tour of Go 1.24

🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی ویژگی‌های جدید نسخه 1.24 زبان برنامه‌نویسی Go پرداخته است. این ویژگی‌ها شامل موارد متنوعی می‌شوند که هر کدام به وسیله نمونه‌های قابل اجرا و تعاملی همراه شده‌اند تا کاربردی بودن آن‌ها مانند استفاده از نام‌های جنسیتی عمومی، ایجاد و پاک‌سازی نشانگرهای ضعیف، کار با دسترسی به فایل و مشاهده معیارهای عملکردی برای پیاده‌سازی جدید و سریع‌تر map نشان داده شود. انتظار می‌رود که نسخه 1.24 Go در ماه‌های آینده منتشر شود، با اینکه نسخه دوم Release Candidate (RC2) آن احتمالاً طی هفته جاری منتشر خواهد شد. این بروزرسانی‌ها نشان‌دهنده تلاش‌های مستمر توسعه‌دهندگان Go برای ارتقاء کارایی و افزایش توانایی‌های زبان هستند.

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


👑 @gopher_academy

Gopher Academy

24 Jan, 06:05


Gopher Academy pinned «🎯 چندتا پست در مورد ویژگی های جدید گولنگ 1.24 اینجاست می تونید بخونید👇 🔵 https://t.me/gopher_academy/3557 🔵 https://t.me/gopher_academy/3556 🔵 https://t.me/gopher_academy/3555 🔵 https://t.me/gopher_academy/3554 🔵 https://t.me/gopher_academy/3553 🔵»

Gopher Academy

24 Jan, 05:30


🔵 عنوان مقاله
Realizing Why Go Reflection Restricts What Struct Fields Can Be Modified

🟢 خلاصه مقاله:
این مقاله به بررسی دسترسی و تغییر داده‌ها در زبان برنامه‌نویسی Rust می‌پردازد و تأکید دارد که فیلدهای خصوصی (غیرقابل خروجی) نمی‌توانند تغییر کنند، حتی با استفاده از بازتاب (reflection). دیدگاه منطقی و اصول امنیتی در Rust، دسترسی به فیلدهای خصوصی را محدود می‌کند، که این از تغییر داده‌های حساس توسط کدهای بیرونی جلوگیری می‌کند. این محدودیت به حفظ ساختار داده‌ها کمک می‌کند و امنیت برنامه‌ها را افزایش می‌دهد. نکته‌ی کلیدی این است که Rust با محدود کردن دسترسی‌ها، به توسعه‌دهندگان کمک می‌کند تا سیستم‌های مطمئن‌تری بسازند و از ورود یا تغییرات ناخواسته در بخش‌های کلیدی کد جلوگیری می‌کند. این مقاله، با تاکید بر این امنیت داده، راهنمای مفیدی برای برنامه‌نویسانی است که به دنبال رویکردهای محافظت شده در برنامه‌نویسی هستند.

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


👑 @gopher_academy

Gopher Academy

23 Jan, 11:30


🔵 عنوان مقاله
go-mail v0.6: A Library for Sending Emails

🟢 خلاصه مقاله:
مقاله‌ای که مرور شده، درباره‌ی به‌روزرسانی نسخه 0.6 نرم‌افزار ارسال ایمیل گو-میل صحبت می‌کند. این نسخه جدید ویژگی‌های متعددی اضافه کرده است. از جمله این ویژگی‌ها می‌توان به پشتیبانی از امضای S/MIME، کشف خودکار احراز هویت SMTP، پشتیبانی از سوکت دامنه یونیکس و ویژگی 'ارسال سریع' اشاره کرد. این ویژگی‌های جدید به کاربران امکان می‌دهند تا ارسال ایمیل‌های خود را با امنیت و سهولت بیشتری انجام دهند. اضافه شدن این قابلیت‌ها نشان‌دهنده تلاش برای بهبود کارایی و افزایش امنیت در ارسال ایمیل‌ها است، و به کاربران اجازه می‌دهد تا بتوانند با اعتماد بیشتری نسبت به حفظ امنیت محتوای ارسالی خود اقدام کنند.

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


👑 @gopher_academy

Gopher Academy

23 Jan, 05:30


🔵 عنوان مقاله
A Practical Example of Dependency Inversion using Plugins

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، نحوه استفاده از اصول معماری پاک (Clean Architecture) به همراه بسته پلاگین زبان برنامه‌نویسی Go را برای ایجاد یک برنامه قابل تطبیق و قابل گسترش بدون نیاز به تغییر در کد منبع اصلی، توضیح می‌دهد. در این رویکرد، برنامه به لایه‌های مختلفی تقسیم می‌شود که هرکدام وظایف مجزایی دارند و تنها از طریق اینترفیس‌ها با یکدیگر در تعامل هستند. این ساختار به توسعه‌دهندگان امکان می‌دهد تا پلاگین‌ها یا ماژول‌هایی را به راحتی اضافه کنند یا حذف نمایند بدون آنکه نیاز به تغییر دادن کدهای اصلی برنامه باشد. استفاده از اصول معماری پاک همچنین به افزایش قابلیت نگهداری و کارایی کد کمک می‌کند و می‌تواند به بهبود چابکی و پاسخگویی برنامه در برابر تغییرات نیازها و فناوری‌ها منجر شود. این مقاله با ارائه مثال‌های عملی و کدبرداری، به خواننده کمک می‌کند تا درک بهتری از چگونگی پیاده‌سازی این معماری در پروژه‌های واقعی داشته باشد.

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


👑 @gopher_academy

Gopher Academy

22 Jan, 11:30


🔵 عنوان مقاله
if got, want: A Simple Way to Write Better Go Tests

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شد به بیان یک الگوی برجسته در بخش تست نویسی در زبان برنامه نویسی Go می‌پردازد که کمتر شناخته شده است. این الگو شامل استفاده از تخصیص و مقایسه در یک خط دستوری if است که باعث می‌شود خواندن و درک کد آزمایشی آسان‌تر شود. این روش تست نویسی به ما امکان می‌دهد که در زمان کمتر و با کدی که بهتر از نظر ساختاری سازمان‌دهی شده است، کد را تست کنیم. بیان شده است که این الگو حتی در کتابخانه استاندارد زبان Go نیز مورد استفاده قرار گرفته است. نویسندگان اغلب مزایای استفاده از این الگو را نادیده می‌گیرند، درحالی که می‌تواند به بهبود فهم و کارایی کدهای تست کمک کند.

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


👑 @gopher_academy

Gopher Academy

22 Jan, 06:27


اینم دوتا مقاله خوب و کامل در مورد تمامی ویژگی های گولتگ 1.24
https://antonz.org/go-1-24/

https://zenn.dev/koya_iwamura/articles/ca9ab62ff760c2


👑 @gopher_academy

Gopher Academy

22 Jan, 06:25


توی گولنگ 1.24 یه ویزگی اضافه شده برای نمایش zero value ها به نام omitzero که می تونید توی مقاله زیر در موردش بخونید

https://www.bytesizego.com/blog/go-124-omitzero


👑 @gopher_academy

Gopher Academy

22 Jan, 05:30


🔵 عنوان مقاله
Gophers Pack: A Collection of Gopher Pictures and Design Elements

🟢 خلاصه مقاله:
این مقاله درباره‌ی منابع تصویری موجود برای استفاده در پروژه‌ها، پست‌های وبلاگ، یا ارائه‌هایی است که نیازمند تم‌های مرتبط با Go gopher هستند. این تصاویر دوست‌داشتنی که زیر مجموعه‌ی حقوق مالکیت عمومی CC0 قرار دارند، می‌توانند بسیار مفید باشند و در این خبرنامه به طور مکرر استفاده می‌شوند. به تازگی، ماریا تعدادی از این تصاویر را با تم‌های زمستانی به مجموعه اضافه کرده است که این گزینه‌ها تنوع بیشتری را برای کاربران فراهم می‌آورد.

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


👑 @gopher_academy

Gopher Academy

21 Jan, 11:30


🔵 عنوان مقاله
go-haystack: Track Personal Devices via Apple's 'Find My' Network

🟢 خلاصه مقاله:
مقاله مورد بحث راهکاری نوآورانه را برای ردیابی دستگاه‌های بلوتوث شخصی از طریق شبکه گسترده‌ی «یافتن دستگاه من» اپل با استفاده از برنامه‌نویسی TinyGo و کمی تجهیزات اضافی مورد بررسی قرار می‌دهد. با استفاده از این تکنیک، کاربران می‌توانند با نصب یک قطعه سخت‌افزار کوچک که با TinyGo برنامه‌ریزی شده است، دستگاه‌های بلوتوث خود را به شبکه «یافتن دستگاه من» متصل کنند، که این امر امکان پیدا کردن دستگاه‌های گمشده را در مکان‌های وسیع‌تر فراهم می‌کند. این شبکه بدین صورت عمل می‌کند که تقریباً هر دستگاه اپل می‌تواند به عنوان یک گره در شبکه عمل کرده و سیگنال‌های بلوتوث را از دستگاه‌های گمشده دریافت و موقعیت آن‌ها را گزارش دهد. این روش بازدهی بالایی در یافتن دستگاه‌ها در محیط‌های مختلف دارد و ارتقاء امنیت شخصی کاربران را موجب می‌شود.

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


👑 @gopher_academy

Gopher Academy

21 Jan, 05:30


🔵 عنوان مقاله
ebpf-go 0.17: A Way to Work with eBPF from Go

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته است راجع به کتابخانه‌ای به زبان برنامه‌نویسی Go است که برای خواندن، تغییر دادن و بارگذاری برنامه‌های eBPF طراحی شده است. این برنامه‌ها به طور مستقیم توسط هسته لینوکس مورد استفاده قرار می‌گیرند. eBPF یک فناوری جدید و جذاب است که ارزش بررسی دارد. نسخه 0.17 این کتابخانه نیازمند نسخه 1.22 یا بالاتر از زبان Go است و API جدیدی را برای کار با متغیرهای جهانی معرفی می‌کند. این API جدید امکانات و قابلیت‌های اضافی به کتابخانه می‌بخشد، که شامل تعامل بهتر و مؤثرتر با برنامه‌های eBPF می‌باشد و بنابراین، کاربران می‌توانند برنامه‌ها و توابع خود را به طور کارآمدتر در هسته لینوکس پیاده‌سازی کنند.

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


👑 @gopher_academy

Gopher Academy

20 Jan, 11:30


🔵 عنوان مقاله
betteralign 0.6: Make Your Programs Use Less Memory.. Maybe

🟢 خلاصه مقاله:
این مقاله به ابزاری جدید می‌پردازد که با هدف کاهش مصرف حافظه در زبان برنامه‌نویسی Go طراحی شده است. این ابزار، که یک شاخه از ابزار fieldalignment موجود در Go است، از طریق بازآرایی فیلدهای موجود در ساختارها (structs) کار می‌کند. تفاوت‌های اصلی این ابزار با نسخه اصلی شامل عدم بررسی فایل‌های تولیدی یا تست، پرش از ساختارهایی که به صورت خاص مشخص شده‌اند یا دارای فیلدهای ناشناس هستند، و نگهداشتن کامنت‌ها در کد است. این بهبودها به منظور افزایش تجربه توسعه‌دهندگان (DX) ارائه شده است. استفاده از این ابزار می‌تواند به توسعه‌دهندگان کمک کند تا با بازسازی ساختارها، بهینه‌سازی مصرف حافظه را در برنامه‌های خود اعمال کنند.

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


👑 @gopher_academy

Gopher Academy

14 Jan, 11:30


🔵 عنوان مقاله
Rust vs Go in 2025

🟢 خلاصه مقاله:
مقاله‌ بررسی به‌روزی در مورد موضوعی است که جان به طور مکرر به آن پرداخته، و به همان نتیجه همیشگی می‌رسد: ارزش دانستن هر دو زبان وجود دارد. اگرچه ممکن است محتوای دقیق مقاله‌ای نامشخص باشد، اما پیام کلی و قدرت استدلال در مورد اهمیت دوزبانگی آشکار است. جان در این مقاله به این نکته تأکید می‌کند که دانستن دو زبان فواید متعددی دارد، مانند افزایش دسترسی به فرصت‌های شغلی، بهبود توانایی‌های فکری و ارتباطی، و درک بهتر فرهنگ‌های مختلف. این مقاله تأکید می‌کند که با وجود تکرار موضوع، اهمیت آن هرگز کهنه نمی‌شود و همواره معتبر و قابل توجه است.

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


👑 @gopher_academy

Gopher Academy

14 Jan, 05:30


🔵 عنوان مقاله
Go Developer Survey 2024 H2 Results

🟢 خلاصه مقاله:
خلاصه‌ی گزارش جامعه‌ی برنامه‌نویسی Go از نظرسنجی اخیرشان نشان می‌دهد که بیش از 4000 پاسخ از توسعه‌دهندگان تجزیه و تحلیل شده است و نشان دهنده‌ی رضایت زیاد آن‌ها از جهت‌گیری زبان Go است، اما بزرگترین چالش آن‌ها حفظ استانداردهای کدنویسی یکسان است. در زمینه‌ی سیستم‌عامل، Linux و macOS پیشتازند، در حالی که در زمینه‌ی محیط‌های توسعه، VS Code و GoLand محبوب‌ترین‌ها هستند و در بخش ابری، AWS بیشترین استفاده را دارد. همچنین آمارهای جالبی در مورد میزان استفاده توسعه‌دهندگان Go از LLM (مدل‌های زبان بزرگ) ارائه شده است.

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


👑 @gopher_academy

Gopher Academy

13 Jan, 15:54


در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، بهبودهای قابل توجهی در ابزارها و قابلیت‌های مرتبط با تست‌ها و احراز هویت (authentication) انجام شده است. در اینجا به دو بهبود مهم اشاره می‌کنیم:

---

### ۱. خروجی JSON برای `go test`:
یکی از بهبودهای مهم در ابزار تست Go، پشتیبانی از خروجی JSON برای نتایج تست‌ها است. این قابلیت تحلیل و گزارش‌گیری از تست‌ها را بسیار ساده‌تر و لذت‌بخش‌تر می‌کند.

#### ویژگی‌های کلیدی:
- خروجی ساختارمند: نتایج تست‌ها به صورت JSON ارائه می‌شوند که باعث می‌شود تحلیل و پردازش آن‌ها به‌طور خودکار ساده‌تر شود.
- سازگاری با ابزارهای گزارش‌گیری: خروجی JSON با ابزارهای گزارش‌گیری و تحلیل تست (مانند CI/CD pipelines) به‌طور کامل سازگار است.
- جزئیات بیشتر: خروجی JSON شامل اطلاعات دقیق‌تری مانند زمان اجرای هر تست، وضعیت (pass/fail)، و پیام‌های خطا است.

#### نحوه استفاده:
برای دریافت خروجی JSON از go test`، می‌توانید از فلگ -json` استفاده کنید:

go test -json ./...


#### مثال خروجی JSON:
{
"Time": "2023-10-01T12:34:56Z",
"Action": "run",
"Package": "example.com/myproject",
"Test": "TestSomething",
"Output": "=== RUN TestSomething\n"
}
{
"Time": "2023-10-01T12:34:57Z",
"Action": "pass",
"Package": "example.com/myproject",
"Test": "TestSomething",
"Elapsed": 0.12
}


#### مزایا:
- تحلیل خودکار: می‌توانید از ابزارهای تحلیل JSON (مانند jq) برای پردازش نتایج تست‌ها استفاده کنید.
- یکپارچه‌سازی با CI/CD: خروجی JSON به راحتی با سیستم‌های CI/CD (مانند GitHub Actions, GitLab CI, Jenkins) یکپارچه می‌شود.
- گزارش‌گیری پیشرفته: می‌توانید گزارش‌های دقیق‌تری از تست‌ها ایجاد کنید و آن‌ها را در داشبوردهای مختلف نمایش دهید.

---

### ۲. GOAUTH: احراز هویت آسان‌تر برای ریپوزیتوری‌های خصوصی:
قابلیت جدید GOAUTH به توسعه‌دهندگان اجازه می‌دهد تا به راحتی به ریپوزیتوری‌های خصوصی (مانند GitHub Private Repositories) متصل شوند. این قابلیت فرآیند احراز هویت را ساده‌تر و امن‌تر می‌کند.

#### ویژگی‌های کلیدی:
- پشتیبانی از چندین ارائه‌دهنده: GOAUTH از ارائه‌دهندگان مختلفی مانند GitHub, GitLab, Bitbucket و غیره پشتیبانی می‌کند.
- مدیریت توکن‌ها: می‌توانید توکن‌های دسترسی (access tokens) را به‌طور امن مدیریت کنید.
- سازگاری با `go get` و `go mod`: GOAUTH به‌طور کامل با ابزارهای مدیریت وابستگی Go (مانند go get و go mod) یکپارچه شده است.

#### نحوه استفاده:
برای استفاده از GOAUTH، کافی است توکن دسترسی خود را در فایل پیکربندی Go قرار دهید. به عنوان مثال:

# تنظیم توکن دسترسی برای GitHub
export GOPRIVATE=github.com/myorg/*
export GOAUTH_TOKEN=ghp_your_github_token_here


#### مثال استفاده با go get:
go get github.com/myorg/private-repo


#### مزایا:
- امنیت بهتر: توکن‌های دسترسی به‌طور امن مدیریت می‌شوند و نیازی به ذخیره آن‌ها در کد نیست.
- ساده‌سازی فرآیند: دیگر نیازی به تنظیمات دستی برای احراز هویت نیست.
- پشتیبانی از چندین ارائه‌دهنده: می‌توانید از GOAUTH برای اتصال به ریپوزیتوری‌های خصوصی در GitHub, GitLab, Bitbucket و غیره استفاده کنید.

---

### ۳. نتیجه‌گیری:
- خروجی JSON برای `go test` تحلیل و گزارش‌گیری از تست‌ها را بسیار ساده‌تر و لذت‌بخش‌تر می‌کند.
- GOAUTH فرآیند احراز هویت برای ریپوزیتوری‌های خصوصی را ساده‌تر و امن‌تر می‌کند.

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


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

13 Jan, 15:52


در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، بهبودهای قابل توجهی در ابزارها (Tooling) انجام شده است. یکی از این بهبودها، معرفی قابلیت جدیدی به نام متا-پترن (Meta-Pattern) است که نصب و استفاده از ابزارهای جانبی مانند `mockgen` را بسیار ساده‌تر و کارآمدتر می‌کند. در اینجا به بررسی این قابلیت و مزایای آن می‌پردازیم:

---

### ۱. متا-پترن (Meta-Pattern) چیست؟
- متا-پترن یک قابلیت جدید در ابزارهای Go است که به توسعه‌دهندگان اجازه می‌دهد تا ابزارهای جانبی (مانند `mockgen`، `protoc`، و غیره) را به‌طور خودکار نصب و مدیریت کنند.
- این قابلیت با استفاده از فایل‌های پیکربندی (مانند `go.work` یا go.mod) کار می‌کند و نیاز به نصب دستی ابزارها را کاهش می‌دهد.

---

### ۲. مزایای متا-پترن:
- ساده‌سازی نصب ابزارها: با استفاده از متا-پترن، می‌توانید ابزارهای مورد نیاز پروژه خود را به‌طور خودکار نصب کنید.
- مدیریت وابستگی‌ها: این قابلیت به شما کمک می‌کند تا وابستگی‌های ابزارها را به‌طور موثرتری مدیریت کنید.
- یکپارچه‌سازی با ابزارهای موجود: متا-پترن با ابزارهای موجود Go (مانند go generate و go mod) به‌طور کامل یکپارچه شده است.

---

### ۳. نحوه استفاده از متا-پترن:
برای استفاده از متا-پترن، می‌توانید از فایل‌های پیکربندی مانند go.work یا go.mod استفاده کنید. در اینجا یک مثال آورده شده است:

#### مثال ۱: استفاده از متا-پترن در go.mod
module example.com/myproject

go 1.20

require (
github.com/golang/mock v1.6.0
)

// تعریف ابزارهای مورد نیاز
toolchain {
mockgen = "github.com/golang/mock/[email protected]"
}


#### مثال ۲: استفاده از متا-پترن در go.work
go 1.20

use (
.
./submodule
)

// تعریف ابزارهای مورد نیاز
toolchain {
mockgen = "github.com/golang/mock/[email protected]"
protoc = "google.golang.org/protobuf/cmd/[email protected]"
}


---

### ۴. نصب خودکار ابزارها:
با استفاده از متا-پترن، می‌توانید ابزارهای مورد نیاز خود را به‌طور خودکار نصب کنید. برای این کار، کافی است دستور زیر را اجرا کنید:

go install toolchain


این دستور به‌طور خودکار ابزارهای تعریف شده در go.mod یا go.work را نصب می‌کند.

---

### ۵. استفاده از ابزارها:
پس از نصب ابزارها، می‌توانید از آن‌ها در پروژه خود استفاده کنید. به عنوان مثال، برای استفاده از `mockgen`، کافی است دستور زیر را اجرا کنید:

go generate ./...


این دستور به‌طور خودکار فایل‌های mock را برای پروژه شما ایجاد می‌کند.

---

### ۶. مثال کامل:
در اینجا یک مثال کامل از استفاده از متا-پترن برای نصب و استفاده از `mockgen` آورده شده است:

#### فایل go.mod:
module example.com/myproject

go 1.20

require (
github.com/golang/mock v1.6.0
)

toolchain {
mockgen = "github.com/golang/mock/[email protected]"
}


#### فایل main.go:
package main

import (
"example.com/myproject/mocks"
"testing"
)

func TestSomething(t *testing.T) {
mock := mocks.NewMockMyInterface(t)
mock.On("MyMethod").Return(nil)

// تست خود را اینجا بنویسید
}


#### اجرای دستورات:
# نصب ابزارها
go install toolchain

# ایجاد فایل‌های mock
go generate ./...

# اجرای تست‌ها
go test ./...


---

### ۷. نتیجه‌گیری:
- متا-پترن یک قابلیت جدید و مفید در ابزارهای Go است که نصب و مدیریت ابزارهای جانبی را بسیار ساده‌تر می‌کند.
- این قابلیت به خصوص برای ابزارهایی مانند `mockgen`، `protoc`، و سایر ابزارهای تولید کد بسیار مفید است.
- اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه‌های جدید را در نظر بگیرید تا از این بهبودها و قابلیت‌های جدید بهره‌مند شوید.

این قابلیت به توسعه‌دهندگان کمک می‌کند تا زمان کمتری را صرف نصب و پیکربندی ابزارها کنند و بیشتر روی توسعه کد تمرکز کنند.

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

13 Jan, 15:41


در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، قابلیت جدیدی برای alias کردن sliceها معرفی شده است که به توسعه‌دهندگان اجازه می‌دهد تا به راحتی از sliceها با نام‌های جدید استفاده کنند. این قابلیت به خصوص با افزایش استفاده از جنریک‌ها (Generics) در Go بسیار مفید است، زیرا باعث بهبود خوانایی و کاهش تکرار کد می‌شود.

---

### ۱. alias کردن sliceها چیست؟
- alias کردن به معنی تعریف یک نام جدید برای یک نوع داده موجود است. این کار به توسعه‌دهندگان اجازه می‌دهد تا از نام‌های کوتاه‌تر یا توصیفی‌تر برای انواع داده‌ای پیچیده استفاده کنند.
- در Go، این قابلیت به‌طور خاص برای sliceها بسیار مفید است، زیرا sliceها یکی از پرکاربردترین انواع داده‌ای در Go هستند.

---

### ۲. چرا alias کردن sliceها مهم است؟
- بهبود خوانایی کد: با استفاده از aliasها، می‌توانید از نام‌های توصیفی‌تر برای sliceها استفاده کنید که باعث خوانایی بیشتر کد می‌شود.
- کاهش تکرار کد: اگر از sliceها با انواع داده‌ای پیچیده استفاده می‌کنید، alias کردن باعث کاهش تکرار کد و ساده‌تر شدن آن می‌شود.
- سازگاری با جنریک‌ها: با معرفی جنریک‌ها در Go، alias کردن sliceها به توسعه‌دهندگان اجازه می‌دهد تا از جنریک‌ها به‌طور موثرتری استفاده کنند.

---

### ۳. نحوه alias کردن sliceها:
در Go، می‌توانید از کلمه کلیدی `type` برای تعریف alias استفاده کنید. در اینجا چند مثال آورده شده است:

#### مثال ۱: alias کردن یک slice ساده
package main

import "fmt"

// تعریف یک alias برای slice از اعداد صحیح
type IntSlice = []int

func main() {
var numbers IntSlice = []int{1, 2, 3, 4, 5}
fmt.Println(numbers) // خروجی: [1 2 3 4 5]
}


#### مثال ۲: alias کردن یک slice با جنریک‌ها
package main

import "fmt"

// تعریف یک alias برای slice از هر نوع داده‌ای با استفاده از جنریک‌ها
type GenericSlice[T any] = []T

func main() {
var numbers GenericSlice[int] = []int{1, 2, 3, 4, 5}
fmt.Println(numbers) // خروجی: [1 2 3 4 5]

var names GenericSlice[string] = []string{"Alice", "Bob", "Charlie"}
fmt.Println(names) // خروجی: [Alice Bob Charlie]
}


#### مثال ۳: alias کردن sliceهای پیچیده
package main

import "fmt"

// تعریف یک alias برای slice از sliceهای اعداد صحیح
type IntSliceSlice = [][]int

func main() {
var matrix IntSliceSlice = [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
fmt.Println(matrix) // خروجی: [[1 2 3] [4 5 6] [7 8 9]]
}


---

### ۴. مزایای alias کردن sliceها:
- خوانایی بهتر: با استفاده از aliasها، می‌توانید از نام‌های توصیفی‌تر برای sliceها استفاده کنید که باعث خوانایی بیشتر کد می‌شود.
- کاهش تکرار کد: اگر از sliceها با انواع داده‌ای پیچیده استفاده می‌کنید، alias کردن باعث کاهش تکرار کد و ساده‌تر شدن آن می‌شود.
- سازگاری با جنریک‌ها: alias کردن sliceها به توسعه‌دهندگان اجازه می‌دهد تا از جنریک‌ها به‌طور موثرتری استفاده کنند.

---

### ۵. نتیجه‌گیری:
- alias کردن sliceها یک قابلیت جدید و مفید در Go است که به توسعه‌دهندگان اجازه می‌دهد تا کدهای خوانا‌تر و قابل‌حفظ‌تری بنویسند.
- این قابلیت به خصوص با افزایش استفاده از جنریک‌ها در Go بسیار مفید است، زیرا باعث بهبود خوانایی و کاهش تکرار کد می‌شود.

اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه‌های جدید را در نظر بگیرید تا از این بهبودها و قابلیت‌های جدید بهره‌مند شوید.


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

13 Jan, 15:37


در نسخه‌های جدید زبان برنامه‌نویسی Go (Golang)، به‌روزرسانی‌هایی در استاندارد لایبرری (Standard Library) انجام شده است که شامل اضافه شدن پکیج‌های جدید و بهبود پکیج‌های موجود می‌شود. در اینجا به دو پکیج جدید که اشاره کردید، یعنی `os.Root` و `weak`**، می‌پردازیم:

---

### ۱. **پکیج `os.Root`
:
این پکیج جدید برای ساده‌سازی کارهای مربوط به مدیریت دایرکتوری‌ها و مسیرهای فایل‌سیستمی معرفی شده است.

#### ویژگی‌های کلیدی:
- دسترسی آسان به دایرکتوری‌های ریشه: این پکیج توابعی را فراهم می‌کند که دسترسی به دایرکتوری‌های ریشه (مانند / در لینوکس یا C:\ در ویندوز) را ساده‌تر می‌کند.
- مدیریت مسیرها: توابعی برای کار با مسیرهای نسبی و مطلق، تغییر دایرکتوری جاری، و بررسی وجود فایل یا دایرکتوری ارائه می‌دهد.
- سازگاری با سیستم‌عامل‌های مختلف: این پکیج به‌طور خودکار با تفاوت‌های بین سیستم‌عامل‌ها (مانند لینوکس، ویندوز، و macOS) سازگار است.

#### مثال استفاده:
package main

import (
"fmt"
"os"
)

func main() {
// دریافت دایرکتوری ریشه
root := os.Root()
fmt.Println("دایرکتوری ریشه:", root)

// تغییر دایرکتوری جاری به دایرکتوری ریشه
err := os.Chdir(root)
if err != nil {
fmt.Println("خطا در تغییر دایرکتوری:", err)
return
}

// لیست فایل‌ها و دایرکتوری‌ها در دایرکتوری ریشه
files, err := os.ReadDir(".")
if err != nil {
fmt.Println("خطا در خواندن دایرکتوری:", err)
return
}

for _, file := range files {
fmt.Println(file.Name())
}
}


---

### ۲. پکیج `weak`:
این پکیج جدید برای مدیریت weak pointers (اشاره‌گرهای ضعیف) معرفی شده است. weak pointers به توسعه‌دهندگان اجازه می‌دهند تا به یک شیء اشاره کنند بدون اینکه مانع از جمع‌آوری آن توسط Garbage Collector (GC) شوند.

#### ویژگی‌های کلیدی:
- مدیریت حافظه هوشمند: weak pointers به توسعه‌دهندگان کمک می‌کنند تا از memory leaks جلوگیری کنند، زیرا این اشاره‌گرها مانع از جمع‌آوری شیء توسط GC نمی‌شوند.
- استفاده در ساختارهای داده پیچیده: این پکیج برای مواردی مانند کش‌ها (caches)**، **لیست‌های وابسته**، و سایر ساختارهای داده‌ای که نیاز به مدیریت حافظه دقیق دارند، مفید است.
- **سازگاری با Garbage Collector
: weak pointers به‌طور کامل با GC Go سازگار هستند و هیچ تأثیر منفی بر عملکرد آن ندارند.

#### مثال استفاده:
package main

import (
"fmt"
"runtime"
"weak"
)

func main() {
// ایجاد یک شیء
obj := "این یک شیء است"

// ایجاد یک weak pointer به شیء
wp := weak.New(&obj)

// بررسی وجود شیء
if val, ok := wp.Get(); ok {
fmt.Println("شیء وجود دارد:", *val)
} else {
fmt.Println("شیء جمع‌آوری شده است.")
}

// حذف اشاره‌گر به شیء
obj = ""
runtime.GC() // اجرای Garbage Collector

// بررسی دوباره وجود شیء
if val, ok := wp.Get(); ok {
fmt.Println("شیء هنوز وجود دارد:", *val)
} else {
fmt.Println("شیء جمع‌آوری شده است.")
}
}


---

### ۳. مزایای این پکیج‌ها:
- `os.Root`:
- ساده‌سازی کار با دایرکتوری‌ها و مسیرها.
- کاهش نیاز به کدنویسی دستی برای مدیریت مسیرها.
- سازگاری با سیستم‌عامل‌های مختلف.

- `weak`:
- جلوگیری از memory leaks با استفاده از weak pointers.
- مدیریت هوشمند حافظه در ساختارهای داده پیچیده.
- بهبود عملکرد برنامه‌هایی که نیاز به مدیریت دقیق حافظه دارند.

---

### ۴. نتیجه‌گیری:
- `os.Root` و `weak` دو پکیج جدید و مفید در استاندارد لایبرری Go هستند که به توسعه‌دهندگان کمک می‌کنند تا کدهای بهینه‌تر و قابل‌حفظ‌تری بنویسند.
- اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه‌های جدید را در نظر بگیرید تا از این بهبودها و قابلیت‌های جدید بهره‌مند شوید.

این پکیج‌ها به‌طور خاص برای برنامه‌هایی که نیاز به مدیریت حافظه دقیق یا کار با فایل‌سیستم دارند، بسیار مفید هستند.


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

13 Jan, 15:33


در نسخه 1.24 زبان برنامه‌نویسی Go (Golang)، ویژگی جدیدی به نام SwissTable به عنوان بخشی از بهبودهای مربوط به map (نوع داده‌ای دیکشنری یا associative array در Go) معرفی شد. این ویژگی بهینه‌سازی‌هایی در عملکرد و کارایی map ارائه می‌دهد. در زیر به بررسی این ویژگی و مزایای آن می‌پردازیم:

---

### ۱. SwissTable چیست؟
- SwissTable یک ساختار داده‌ای جدید برای پیاده‌سازی map در Go است که از الگوریتم‌ها و تکنیک‌های بهینه‌شده برای بهبود عملکرد استفاده می‌کند.
- این ساختار داده‌ای بر اساس جدول هش (hash table) کار می‌کند، اما با بهینه‌سازی‌هایی که باعث افزایش سرعت و کاهش مصرف حافظه می‌شود.

---

### ۲. مزایای SwissTable:
- سرعت بیشتر: SwissTable با استفاده از تکنیک‌های بهینه‌سازی مانند SIMD (Single Instruction, Multiple Data) و cache-friendly data structures**، سرعت عملیات‌های درج، حذف و جستجو در `map` را افزایش می‌دهد.
- **مصرف حافظه کمتر
: این ساختار داده‌ای از حافظه بهینه‌تری استفاده می‌کند و باعث کاهش مصرف حافظه در مقایسه با پیاده‌سازی‌های قدیمی‌تر map می‌شود.
- مقیاس‌پذیری بهتر: SwissTable برای کار با مجموعه‌های داده‌ای بزرگ و کوچک به‌طور همزمان بهینه‌سازی شده است.

---

### ۳. تغییرات در Go 1.24:
- در Go 1.24، تیم توسعه‌دهندگان Go تصمیم گرفتند از SwissTable به عنوان پیاده‌سازی پیش‌فرض برای map استفاده کنند.
- این تغییر به‌طور خودکار برای همه کاربران Go اعمال می‌شود و نیازی به تغییر کد یا تنظیمات خاصی ندارد.

---

### ۴. تأثیر SwissTable بر برنامه‌های Go:
- برنامه‌های موجود: برنامه‌هایی که از map استفاده می‌کنند، به‌طور خودکار از مزایای SwissTable بهره‌مند می‌شوند. این بهبودها شامل افزایش سرعت و کاهش مصرف حافظه است.
- برنامه‌های جدید: توسعه‌دهندگان می‌توانند از map با اطمینان بیشتری استفاده کنند، زیرا عملکرد آن به‌طور قابل توجهی بهبود یافته است.

---

### ۵. مقایسه با پیاده‌سازی قدیمی `map`:
- پیاده‌سازی قدیمی: در نسخه‌های قبلی Go، map با استفاده از یک ساختار داده‌ای مبتنی بر hash table پیاده‌سازی می‌شد که عملکرد خوبی داشت، اما برای برخی موارد خاص (مانند مجموعه‌های داده‌ای بزرگ) بهینه‌سازی نشده بود.
- SwissTable: این ساختار داده‌ای جدید با استفاده از تکنیک‌های پیشرفته‌تر، عملکرد map را در همه موارد بهبود می‌بخشد.

---

### ۶. مثال استفاده از `map` در Go:
در Go، map به صورت زیر استفاده می‌شود:

package main

import "fmt"

func main() {
// ایجاد یک map
m := make(map[string]int)

// درج داده در map
m["apple"] = 5
m["banana"] = 3

// خواندن داده از map
fmt.Println("تعداد سیب‌ها:", m["apple"])

// حذف داده از map
delete(m, "banana")

// بررسی وجود کلید در map
if value, exists := m["banana"]; exists {
fmt.Println("تعداد موزها:", value)
} else {
fmt.Println("موز وجود ندارد.")
}
}


با استفاده از SwissTable، این عملیات‌ها (درج، حذف، و جستجو) سریع‌تر و با مصرف حافظه کم‌تری انجام می‌شوند.

---

### ۷. نتیجه‌گیری:
- SwissTable یک بهبود بزرگ در پیاده‌سازی map در Go است که در نسخه 1.24 معرفی شد.
- این ویژگی باعث افزایش سرعت، کاهش مصرف حافظه، و بهبود مقیاس‌پذیری map می‌شود.
- توسعه‌دهندگان Go می‌توانند بدون نیاز به تغییر کد، از مزایای این بهبودها بهره‌مند شوند.

اگر از Go استفاده می‌کنید، به‌روزرسانی به نسخه 1.24 یا بالاتر را در نظر بگیرید تا از این بهبودهای عملکردی بهره‌مند شوید.


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

13 Jan, 15:33


🤝Mohammad AbdorrahmaniMohammad Abdorrahmani


اگه شما هم با Golang کد می‌زنید، خبر خوب اینه که ورژن 1.24 قراره تو فوریه 2025 منتشر بشه و کلی بهبود خفن آورده که کارمون رو هم سریع‌تر می‌کنه، هم راحت‌تر.


هایلایت‌های این نسخه:
1️⃣ سوئیچ به SwissTable تو کامپایلر:
گولنگ با این تغییر، مدیریت مپ‌ها رو خیلی بهینه‌تر کرده! رم کمتر مصرف می‌شه و عملیات خوندن/نوشتن سریع‌تر شده.


2️⃣ آپدیت استاندارد لایبرری:
دو پکیج جدید داریم:
os.Root برای راحت‌تر کردن کارهای مربوط به دایرکتوری‌ها.
weak برای هندل کردن weak pointers که خیلی وقتا به درد می‌خوره.


یه قابلیت جدید برای alias کردن sliceها که به خصوص با افزایش استفاده از جنریک‌ها خیلی کاربردیه.


3️⃣ بهبود ابزارها (Tooling):
یه قابلیت خفن به اسم متا-پترن اضافه شده که نصب ابزارهایی مثل mockgen رو راحت‌تر از همیشه می‌کنه.


خروجی JSON برای go test: تحلیل تست‌ها دیگه یه لذت شده!
GOAUTH: حالا می‌تونید راحت‌تر به ریپوزیتوری‌های پرایوت مثل GitHub وصل بشید.


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

13 Jan, 11:30


🔵 عنوان مقاله
templ: A Way to Build HTML with Go

🟢 خلاصه مقاله:
مقاله‌ مورد بحث بر توسعه اجزاء در برنامه‌نویسی وب تمرکز دارد که هر کدام قطعه‌هایی از HTML را رندر می‌کنند. این اجزاء سپس به گونه‌ای با هم ترکیب می‌شوند تا صفحات وب، اسناد، و اپلیکیشن‌ها را شکل دهند. هسته این فرآیند در این است که با استفاده از مخزن کد متن‌باز GitHub، توسعه‌دهندگان می‌توانند به تکه کد‌های نوشته شده توسط دیگران دسترسی پیدا کنند و آن‌ها را در پروژه‌های خود به کار ببرند. این رویکرد نه تنها به بهبود کارایی و کاهش تکرار کار کمک می‌کند بلکه فرصت‌هایی برای همکاری و اشتراک‌گذاری دانش فنی بین توسعه‌دهندگان از سراسر دنیا فراهم می‌‌آورد. این مدل از توسعه مبتنی بر اجزاء، به صورت گسترده‌ای به عنوان یک استاندارد صنعتی در توسعه وب به کار رفته است.

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


👑 @gopher_academy

Gopher Academy

13 Jan, 05:30


🔵 عنوان مقاله
Fuego: A Nest-Inspired API/Web Framework for Go

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی آن پرداخته‌اید درباره چارچوبی برای زبان برنامه‌نویسی Go به نام "Nest" می‌باشد که از الهام گرفته‌ است. این چارچوب منحصر به فرد است زیرا تنها چارچوبی است که قابلیت تولید اسناد OpenAPI را از کد فراهم می‌کند. نمونه "hello world" نشان داده شده در مقاله به همراه مستندات کامل، امکان دسترسی و فهم سریع و آسان قابلیت‌های این چارچوب را به کاربران می‌دهد. نسخه اخیر (0.17) از این چارچوب، پشتیبانی اولیه از مسیریابی Gin را به اضافه کرده است که توسعه دهندگان Go را قادر می‌سازد تا از این قابلیت‌های جدید بهره‌برداری کنند. این گسترش‌ها با هدف بهبود تجربه توسعه دهندگان Go و افزایش کارایی برنامه‌های کاربردی ارائه شده‌اند.

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


👑 @gopher_academy

Gopher Academy

12 Jan, 11:30


🔵 عنوان مقاله
Memos: A Privacy-First Go-Powered Note Taking App

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شده، در مورد یک برنامه وب نوت‌برداری است کە می‌توانید به صورت شخصی میزبانی کنید و به طور مکرر به‌روزرسانی می‌شود. این برنامه وب تحت لیسانس MIT قرار دارد و از چارچوب Echo برای توسعۀ خود استفاده می‌کند. اطلاعات درون برنامه در یک فایل SQLite ذخیره می‌شوند. علاوه بر این، کد منبع برنامه در GitHub قابل دسترسی است. این اطلاعات می‌توانند به توسعه‌دهندگان کمک کنند تا راه‌اندازی وانتقال داده‌ها را به صورت مؤثرتر انجام دهند. تأکید اصلی روی قابلیت به‌روزرسانی مکرر و استفاده آسان از اطلاعات در محیط‌های مختلف است.

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


👑 @gopher_academy

Gopher Academy

12 Jan, 05:30


🔵 عنوان مقاله
Master the Fullstack

🟢 خلاصه مقاله:
این مقاله یک مسیر یادگیری جامع را برای کاربرانی که قصد توسعه مهارت‌های خود در زمینه سرور دارند، ارائه می‌دهد. در این مقاله، خواننده با نحوه ساخت API‌ها، ایجاد کانتینرها، استقرار کد، راه‌اندازی سرورها و دیگر فعالیت‌های مرتبط آشنا می‌شود. فرآیند یادگیری به گونه‌ای طراحی شده است که پوشش دهنده تمام جنبه‌های تکنیکی مورد نیاز برای مدیریت و بهینه‌سازی عملکرد سرورها باشد. مقاله بر تعادل بین نظریه و عملی تأکید دارد و به خوانندگان این امکان را می‌دهد که با انجام تمرین‌های عملی دانش خود را به طور مؤثر تقویت کنند. این محتوا برای توسعه‌دهندگان نرم‌افزار، مدیران سیستم و هر فرد دیگری که به دنبال افزایش دانش فنی خود در زمینه سرور و زیرساخت‌های مرتبط هستند، مناسب است.

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


👑 @gopher_academy

Gopher Academy

11 Jan, 11:30


🔵 عنوان مقاله
Pixel Federation Swaps MSK for WarpStream, Saves 83% on Kafka Costs

🟢 خلاصه مقاله:
مقاله‌ای که ملاحظه شد، به بررسی تجربه شرکت Pixel Federation در استفاده از WarpStream به جای AWS MSK می‌پردازد. Pixel Federation که پیشتر از AWS MSK به عنوان راه‌حلی برای مدیریت داده‌های Kafka استفاده می‌کرد، تصمیم گرفت تا به WarpStream بروزرسانی کند. این انتقال منجر به کاهش قابل توجهی در هزینه‌های مربوط به Kafka شده است. علاوه بر این، با استفاده از WarpStream، نیاز به بهره‌برداری پیچیده از VPC Peering، که با AWS MSK مورد نیاز بود، حذف گردید. در نتیجه، Pixel Federation توانست هم از نظر مالی و هم از نظر فنی بهبود قابل توجهی را تجربه کند. این تغییر نه تنها به کاهش هزینه‌ها منجر شده بلکه پیچیدگی فنی مربوط به نگهداری و تعمیرات زیرساخت‌ها را نیز به طور مؤثری کاهش داده‌ است.

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


👑 @gopher_academy

Gopher Academy

11 Jan, 05:30


🔵 عنوان مقاله
betteralign 0.6: Make Your Programs Use Less Memory.. Maybe

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته، ابزاری را شرح می‌دهد که برای شناسایی ساختارهای داده‌ای (structs) در زبان برنامه‌نویسی Go طراحی شده است. این ابزار، نسخه‌ای تغییر یافته از ابزار fieldalignment استاندارد Go می‌باشد. تفاوت اصلی آن در این است که فایل‌های تولید شده یا فایل‌های آزمایشی را نادیده می‌گیرد، همچنین از بررسی ساختارهای داده‌ای که دارای فیلدهای ناشناخته یا بدون نام هستند خودداری می‌کند. به علاوه، این ابزار نظرات موجود در کد را حذف نکرده و دارای بهبودهایی در تجربه توسعه‌دهندگان (DX improvements) است. هدف اصلی از این ابزار، کمک به برنامه‌نویسان برای بازسازی و ترتیب مجدد فیلدهای درون ساختارها به گونه‌ای است که حافظه کمتری مصرف کنند و بهینه‌سازی مموری را تسهیل کند.

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


👑 @gopher_academy

Gopher Academy

10 Jan, 11:30


🔵 عنوان مقاله
How I Program with LLMs

🟢 خلاصه مقاله:
در این مقاله، یکی از بنیان‌گذاران Tailscale نظرات خود را در مورد روش‌های مدرن نوشتن کد Go با استفاده از تکنیک‌های متعددی که توسط مدل‌های زبان بزرگ (LLM) پشتیبانی می‌شوند، به اشتراک می‌گذارد. او همچنین از یک پروژه جدید خبر می‌دهد که یک 'محیط بازی Go' مبتنی بر LLM است که در دست کار است. این ابزار جدید به توسعه‌دهندگان این امکان را می‌دهد تا کدهای Go خود را با توانائی‌های پیشرفته LLM تست و اجرا کنند، که می‌تواند فرآیند توسعه را بهبود ببخشد و کارایی برنامه‌نویسی با Go را افزایش دهد. این 'محیط بازی Go' که به احتمال زیاد شامل امکاناتی برای آموزش و توسعه مهارت‌های کدنویسی در بین توسعه‌دهندگان است، قصد دارد جامعه بزرگی از توسعه‌دهندگان Go را به خود جلب کند و روند برنامه‌نویسی با Go را متحول کند.

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


👑 @gopher_academy

Gopher Academy

07 Jan, 05:57


توافق روی نام گذاری ها از نون شب واجب تره!!
یه جمله جالب توی کتاب clean code دیدم که نوشته بود، زمانی که میخواید توابع یا متغیرهاتون رو نامگذاری کنید اون قدر حساسیت به خرج بدید که انگار دارید برای یک نوزاد تازه به دنیا اومده اسم انتخاب میکنید.
یک نکته که داخل تیم هم خیلی مهمه اینه که برای یک مفهوم، از چند ورب مختلف استفاده نشه. مثلا برای ایجاد کردن فرضا محصول میشه همه ورب های add, create, insert, make, ... رو استفاده کرد. برای اینکه ابهام و سردرگمی پیش نیاد همیشه سعی کنید توی پروژتون برای همه entity ها از یک ورب یکسان استفاده کنید و این رو توی تیمتون هم باهم توافق کنید که همه از اون ورب استفاده کنن.
این مساله به ظاهر کوچیک خیلی خیلی مهمه لطفا رعایت کنید.


| <Pouya Farshidnia/>


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

06 Jan, 06:53


در Go، اگر تعداد عناصر در یک اسلایس از مقدار ظرفیت فعلی (cap) بیشتر شود، حافظه بیشتری به آن تخصیص داده می‌شود. الگوریتم تخصیص ظرفیت معمولاً به‌صورت نمایی است (یعنی دو برابر می‌شود). این کار برای کاهش تعداد دفعات تخصیص مجدد حافظه انجام می‌شود و به بهبود کارایی کمک می‌کند.

### مثال:
s := make([]int, 0, 2) // ظرفیت اولیه 2
fmt.Println(len(s), cap(s)) // طول 0، ظرفیت 2

s = append(s, 1, 2, 3) // نیاز به افزایش ظرفیت
fmt.Println(len(s), cap(s)) // طول 3، ظرفیت 4 (دو برابر قبلی)


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


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

06 Jan, 06:52


اگر طول (size) یک اسلایس در Go بیشتر از ظرفیت (cap) آن شود، Go به‌طور خودکار یک حافظه جدید با ظرفیت بزرگ‌تر تخصیص می‌دهد. سپس عناصر قدیمی را به حافظه جدید منتقل کرده و عنصر جدید را اضافه می‌کند.

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

### مثال:
s := make([]int, 3, 5)
s = append(s, 1, 2, 3) // ظرفیت پر می‌شود
s = append(s, 4) // ظرفیت بیشتر می‌شود (افزایش خودکار ظرفیت)
fmt.Println(len(s)) // 7
fmt.Println(cap(s)) // 10 (ممکن است مقدار جدید متفاوت باشد)



https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

06 Jan, 06:52


در Go، تفاوت بین `size` و `capacity` در مورد ساختارهایی مانند آرایه‌ها و اسلایس‌ها این است:

1. Size (طول یا `len`):
- نشان‌دهنده تعداد عناصر فعلی موجود در یک اسلایس یا آرایه است.
- با تابع len() قابل دسترسی است.
- همیشه برابر با تعداد عناصر پر شده‌ی اسلایس یا آرایه است.

2. Capacity (ظرفیت یا `cap`):
- نشان‌دهنده حداکثر تعداد عناصری است که یک اسلایس می‌تواند نگه دارد بدون نیاز به تخصیص دوباره حافظه.
- با تابع cap() قابل دسترسی است.
- برای اسلایس‌ها ممکن است بزرگ‌تر از len باشد.

### مثال:
s := make([]int, 3, 5) // اسلایس با طول 3 و ظرفیت 5
fmt.Println(len(s)) // 3
fmt.Println(cap(s)) // 5



https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

06 Jan, 06:12


درود به همگی چند ماه پیش تصمیم گرفتم توی مواردی که خیلی باهاش سروکار دارم نمونه سوالتش رو از بعضی  سایت ها و یا استک اور فلو بهش برخوردم رو توی ریپوهای زیر جداگانه جمع آوری کنم
اگر دوس داشتید به اشتراک بزارید  و حمایت و مشارکت کنید
 


🎯- نمونه سوالات مصاحبه ای گیت
https://github.com/mrbardia72/git-Interview-Questions-And-Answers

🎯- نمونه سوالات مصاحبه ای گولنگ
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

🎯- نمونه سوالات مصاحبه ای دیتابیس
https://github.com/mrbardia72/db-Interview-Questions-and-Answers

🎯- نمونه سوالات مصاحبه ای داکر
https://github.com/mrbardia72/docker-Interview-Questions-and-Answers

🎯- نمونه سوالات مصاحبه ای والت
https://github.com/mrbardia72/vault-Interview-Questions-and-Answers

👇👇join👇👇

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

03 Jan, 18:03


در فایل go.mod، دو دستور go و toolchain نقش‌های متفاوتی دارند، هرچند هر دو به نسخه‌های Go مرتبط هستند. در ادامه به تفاوت‌های این دو دستور می‌پردازیم:
1. go: مشخص کردن نسخه حداقل زبان Go
این دستور نشان‌دهنده نسخه حداقل زبان Go است که پروژه باید با آن سازگار باشد. به عبارتی، این مقدار مشخص می‌کند که کدام نسخه از ویژگی‌های زبان و استاندارد Go برای کامپایل و اجرای پروژه لازم است.
کاربرد:
تعیین نسخه حداقل زبان Go که برای این پروژه لازم است.
اگر نسخه ابزار Go نصب‌شده روی سیستم از این مقدار کمتر باشد، ابزار Go اجازه بیلد (build) یا اجرای پروژه را نمی‌دهد.
این دستور به طور مستقیم بر رفتار زبان و کتابخانه‌های استاندارد تأثیر می‌گذارد.
مثال:
go 1.20
ویژگی‌های زبان و کتابخانه‌های استاندارد Go 1.20 به بالا در دسترس هستند.
اگر نسخه Go نصب‌شده روی سیستم از 1.20 کمتر باشد، هنگام اجرای دستورات go build یا go run خطا خواهید گرفت.
2. toolchain: تعیین نسخه ابزار Go
این دستور که در Go 1.21 معرفی شده، نسخه‌ای از ابزار Go (Go Toolchain) را مشخص می‌کند که پروژه باید از آن استفاده کند. ابزار Go شامل مواردی مانند go build, go run, go mod, و غیره است.
کاربرد:
مجبور کردن سیستم یا محیط CI/CD به استفاده از نسخه مشخص ابزار Go، صرف‌نظر از نسخه نصب‌شده روی سیستم.
در صورت نبود نسخه مشخص‌شده از ابزار Go، به طور خودکار آن نسخه دانلود و نصب می‌شود.
مثال:
toolchain go1.20
حتی اگر نسخه go روی سیستم شما 1.19 باشد، ابزار Go نسخه 1.20 را دانلود و استفاده می‌کند.
این خط تضمین می‌کند که تمام ابزارهای مرتبط با Go (کامپایلر، مدیریت ماژول‌ها، و غیره) از نسخه خاصی پیروی کنند.
تفاوت‌های اصلی
ویژگیgotoolchainهدفنسخه حداقل زبان Goنسخه ابزار Go (Go Toolchain)اثرگذاریروی ویژگی‌های زبان و استانداردهاروی ابزارهای مرتبط با Goزمان معرفیقدیمی (از ابتدای Go Modules)جدید (از Go 1.21 به بعد)رفتار در نبود نسخهخطا می‌دهدنسخه مناسب را دانلود و استفاده می‌کندتأثیر بر ساخت پروژهفقط بررسی زبان و استانداردهاتعیین دقیق نسخه ابزار برای کل فرآیند
چرا از هر دو استفاده کنیم؟
go: برای اطمینان از این که کد با نسخه خاصی از زبان سازگار است.
toolchain: برای تضمین این که ابزارها و محیط ساخت دقیقاً از نسخه خاصی استفاده کنند.
مثال ترکیبی
module example.com/myproject go 1.20 // حداقل نسخه زبان Go toolchain go1.21 // نسخه ابزار Go
زبان Go باید حداقل 1.20 باشد (برای ویژگی‌های زبان و استانداردها).
ابزارهای مرتبط با Go باید از نسخه 1.21 استفاده کنند (حتی اگر نسخه نصب‌شده 1.20 باشد، نسخه 1.21 دانلود و استفاده می‌شود).
نتیجه‌گیری
go برای تعیین حداقل سازگاری زبان Go است.
toolchain برای کنترل نسخه ابزار Go در محیط‌های مختلف به کار می‌رود.
ترکیب این دو، کنترل دقیق‌تری بر محیط توسعه و اجرای پروژه فراهم می‌کند.


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

03 Jan, 17:51


در فایل go.mod، toolchain برای تعیین نسخه ابزار Go (مانند go و ابزارهای مرتبط با آن) استفاده می‌شود. این ویژگی به شما امکان می‌دهد تا پروژه را به نسخه خاصی از ابزار Go مقید کنید، حتی اگر نسخه پیش‌فرض go در سیستم شما متفاوت باشد.
نحوه استفاده از toolchain
اگر در فایل go.mod خطی به شکل زیر مشاهده کنید:
toolchain go1.20
این به این معنی است که پروژه نیازمند نسخه go1.20 است و باید از این نسخه استفاده شود، صرف‌نظر از نسخه Go نصب‌شده روی سیستم.
کاربردهای اصلی toolchain
اطمینان از سازگاری نسخه Go
با استفاده از toolchain، می‌توانید مطمئن شوید که همه توسعه‌دهندگان و محیط‌های CI/CD از یک نسخه خاص از ابزار Go استفاده می‌کنند.
مدیریت نسخه‌ها در پروژه‌های تیمی
این ویژگی تضمین می‌کند که مشکلات ناشی از ناسازگاری نسخه‌ها (مانند تغییرات در syntax یا behavior) به حداقل برسند.
ساخت خودکار با نسخه مشخص
اگر نسخه‌ای که در toolchain تعریف شده، روی سیستم نصب نشده باشد، ابزار Go به‌طور خودکار آن را از وب‌سایت Go دریافت و نصب می‌کند.
نکته مهم درباره toolchain
این قابلیت با ابزار Go نسخه 1.21 و بالاتر در دسترس است. اگر نسخه Go قدیمی‌تری دارید، خط مربوط به toolchain در فایل go.mod نادیده گرفته خواهد شد.
toolchain مستقل از دستور go در فایل go.mod عمل می‌کند. دستور go نسخه حداقل زبان Go برای کدنویسی و بیلد کردن را مشخص می‌کند: go 1.20
مثالی کامل از go.mod
module example.com/myproject go 1.20 toolchain go1.20 require ( github.com/some/library v1.2.3 )
go 1.20: نسخه حداقل برای ویژگی‌های زبان Go.
toolchain go1.20: نسخه ابزار Go که پروژه باید با آن ساخته شود.
جمع‌بندی
toolchain یک ابزار قوی برای مدیریت و تثبیت نسخه ابزار Go در پروژه‌های بزرگ است. این قابلیت به‌خصوص در محیط‌های توسعه تیمی و پروژه‌هایی که وابستگی شدیدی به نسخه خاصی از Go دارند، بسیار مفید است.

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

01 Jan, 07:30


رفتار متغیرهای حلقه در Go
در Go، وقتی یک حلقه مانند for تعریف می‌شود، متغیرهای حلقه (result در این مثال) به صورت متغیر مشترک (shared) در حافظه استفاده می‌شوند. این بدان معناست که همه goroutineها به یک مرجع (reference) از این متغیر دسترسی دارند، نه به یک کپی از مقدار فعلی آن.

مثال مشکل‌ساز:
فرض کنید کدی شبیه به زیر داریم:

for _, result := range collections {
go func() {
fmt.Println(result.Title) // از result استفاده می‌شود
}()
}



مشکل چیست؟
1. متغیر result به طور مداوم در طول حلقه تغییر می‌کند.
2. goroutineها به دلیل اجرای همزمان (asynchronous execution) ممکن است با تأخیر اجرا شوند.
3. زمانی که goroutine اجرا می‌شود، ممکن است مقدار result تغییر کرده باشد و goroutine به مقدار آخرین تغییر یافته دسترسی داشته باشد، نه مقداری که هنگام تعریف goroutine موجود بود.

نتیجه
تمام goroutineها ممکن است به جای مقادیر مختلف، فقط مقدار آخرین آیتم حلقه را چاپ کنند.

---

راه‌حل: ایجاد کپی مستقل از متغیر حلقه
برای جلوگیری از این مشکل، باید مطمئن شویم که هر goroutine به یک کپی مستقل از مقدار result دسترسی دارد. این کار را با تعریف یک متغیر محلی جدید در هر تکرار حلقه انجام می‌دهیم.

اصلاح کد:

for _, result := range collections {
m := result // یک کپی از `result` ایجاد می‌کنیم
go func() {
fmt.Println(m.Title) // حالا goroutine به کپی مستقل دسترسی دارد
}()
}




تابع ناشناس با پارامتر
یک روش دیگر برای ایجاد کپی، ارسال مقدار متغیر حلقه به تابع ناشناس به صورت پارامتر است.

کد شما:

go func(m articleapp.NewArticle) {
// کد داخل goroutine
}(m)



1. `m` به عنوان آرگومان: متغیر result کپی شده و به عنوان پارامتر m به تابع ناشناس ارسال می‌شود.
2. کپی مستقل: حالا تابع ناشناس داخل goroutine به یک کپی مجزا و مستقل از مقدار متغیر result دسترسی دارد.
3. مشکل حل می‌شود: هر goroutine مقدار درست متغیر مربوط به تکرار خودش را پردازش می‌کند.

---

چرا این کار به جلوگیری از مشکلات همزمانی کمک می‌کند؟

مشکلات همزمانی زمانی رخ می‌دهند که چندین goroutine به صورت همزمان به یک منبع مشترک دسترسی داشته باشند.
در اینجا:

- اگر از متغیر حلقه result مستقیماً استفاده شود، goroutineها به یک مرجع مشترک از این متغیر دسترسی دارند.
- با ایجاد کپی (از طریق m) و ارسال آن به تابع ناشناس، هر goroutine یک نسخه مستقل از مقدار را دارد.
- این جداسازی تضمین می‌کند که مقدار هر goroutine به حلقه وابسته نیست و دیگر دچار تداخل نخواهد شد.

---

مثال عملی
قبل از اصلاح:

collections := []articleapp.NewArticle{
{Title: "A"}, {Title: "B"}, {Title: "C"},
}

for _, result := range collections {
go func() {
fmt.Println(result.Title) // ممکن است همه goroutineها مقدار "C" را چاپ کنند
}()
}


#### بعد از اصلاح:
for _, result := range collections {
go func(m articleapp.NewArticle) {
fmt.Println(m.Title) // هر goroutine مقدار درست را چاپ می‌کند
}(result)
}


---


جمع‌بندی
خط (m):
1. یک کپی مستقل از مقدار result ایجاد می‌کند.
2. این کپی را به تابع ناشناس ارسال می‌کند.
3. به جلوگیری از مشکلات ناشی از استفاده همزمان از متغیرهای حلقه در goroutineها کمک می‌کند.


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

31 Dec, 12:04


اگه یه میلیون کار داشته باشی و بخوای همزمان اجراشون کنی، ولی فقط 8 تا CPU داری، چه‌جوری بهینه‌ترین حالت رو پیدا می‌کنی؟

تو گولنگ، گوروتین‌ها خیلی سبک هستن. می‌تونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمی‌صرفه حافظه‌ رو با صدها هزار گوروتین که همزمان نمی‌تونن اجرا بشن، هدر بدی.

یه راه خفن برای کنترل این داستان استفاده از Semaphore هست که می‌تونی تعداد گوروتین‌های در حال اجرا رو محدود کنی.

حالا چطور کار می‌کنه؟
1. یه کانال با ظرفیت مشخص (N) درست می‌کنی که این ظرفیت میشه تعداد گوروتین‌های همزمانی که می‌خوای اجرا بشه.

2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر می‌کنی.

3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد توکن رو برمی‌گردونه.

4. اگه توکن نباشه گوروتین منتظر می‌مونه تا یکی آزاد بشه.
این تصویر یه مثال ساده با N=2 هست.



| <Mohammad Abdorrahmani/>

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

30 Dec, 09:45


📣 هش SHA 256 چگونه کار می‌کند؟
این وبسایت قدم به قدم فرآیند هش کردن رشته با الگوریتم Sha256 را بصورت گرافیکی نشان می‌دهد:

🔗 https://sha256algorithm.com/
🔹🔹🔹🔹🔹

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

29 Dec, 06:31


🍾یه سری رودمپ بدرد بخور براتون ردیف کردم

🔻Engineering Manager
https://roadmap.sh/engineering-manager

🔻Software Design and Architecture
https://roadmap.sh/software-design-architecture

🔻System Design
https://roadmap.sh/system-design

🔻Software Architect
https://roadmap.sh/software-architect


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

28 Dec, 10:01


اگر با زبان Go کار میکنید
بهتون اکستنشن Error Lens رو پیشنهاد میکنم
در همون لحظه و محیط کد به شما ارور های احتمالی رو میده


<Misagh Momeni Bashuqeh/>


https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

26 Dec, 05:33


👇👇join👇👇

https://t.me/addlist/KpzXaiSpKENkMGM0

Gopher Academy

24 Dec, 07:09


توی این مقاله اومده یه سری دلیل گفته که چرا مدیران ارشد شما را جدی نمی گیرند!!!🤔😅🚬

🔻 https://zaidesanton.substack.com/p/6-reasons-why-the-senior-leadership



🕸 https://linktr.ee/Labdon

Gopher Academy

22 Dec, 07:17


واقعا برنامه نویس بودن تو ایران ،یه مسیر شغلی کاملا مسخره است.
یوتیوب فیلتره ، سایت های آموزشی تحریم هستیم. پرداخت ارزی به سختی اتفاق میوفته و غیره.

در هر صورت خواستم بگم Github Copilot
به صورت رایگان در دسترس هست. اما تحریم هستیم.

https://aka.ms/vscode-activatecopilotfree
https://code.visualstudio.com/docs/copilot/setup-simplified


<پوریای اصلی قدیمی/>

🕸 @labdon_academy

Gopher Academy

21 Dec, 15:09


version: 2
updates:
- package-ecosystem: ""
directory: "/" # Location of package manifests
schedule:
interval: "weekly"

——————
این فایل YAML ارائه‌شده مربوط به Dependabot است، ابزاری که برای مدیریت وابستگی‌های پروژه در GitHub استفاده می‌شود. این ابزار به صورت خودکار وابستگی‌های پروژه را بررسی و نسخه‌های جدیدتر را پیشنهاد می‌دهد یا به‌روزرسانی می‌کند.

---

### ساختار Dependabot

1. `version: 2`:
- نسخه تنظیمات Dependabot را مشخص می‌کند. در حال حاضر، نسخه 2 جدیدترین نسخه است.

2. `updates`:
- لیستی از تنظیمات برای مدیریت به‌روزرسانی وابستگی‌ها است.

---

### اجزای اصلی تنظیمات

#### 1. `package-ecosystem`:
- نوع سیستم مدیریت بسته‌های پروژه شما را مشخص می‌کند.
- برخی از مقادیر متداول:
- npm برای پروژه‌های جاوااسکریپت.
- pip برای پروژه‌های پایتون.
- gomod برای پروژه‌های Go.
- docker برای به‌روزرسانی تصاویر Docker.
- در فایل شما مقدار آن خالی است و باید مقدار مناسب مشخص شود.

#### 2. `directory`:
- مسیر پوشه‌ای که فایل‌های وابستگی در آن قرار دارند.
- / به این معنی است که Dependabot باید فایل‌ها را از ریشه پروژه بررسی کند.

#### 3. `schedule`:
- زمان‌بندی اجرای به‌روزرسانی‌ها را مشخص می‌کند.
- `interval`:
- دوره اجرای به‌روزرسانی‌ها:
- daily: به‌روزرسانی‌های روزانه.
- weekly: به‌روزرسانی‌های هفتگی.
- monthly: به‌روزرسانی‌های ماهانه.

---

### نمونه تنظیم Dependabot برای پروژه Go

اگر پروژه شما از Go Modules استفاده می‌کند، تنظیمات ممکن است به شکل زیر باشد:

version: 2
updates:
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "weekly"


- `package-ecosystem: "gomod"`: مشخص می‌کند که Dependabot باید فایل go.mod را بررسی کند.
- `directory: "/"`: فایل go.mod در ریشه پروژه است.
- `interval: "weekly"`: به‌روزرسانی‌ها هر هفته اجرا می‌شوند.

---

### مزایای استفاده از Dependabot
1. امنیت بهتر:
- Dependabot مشکلات امنیتی شناخته‌شده در وابستگی‌ها را شناسایی و رفع می‌کند.

2. به‌روزرسانی خودکار:
- وابستگی‌ها را به آخرین نسخه‌ها ارتقا می‌دهد.

3. کاهش بار کاری:
- دیگر نیازی نیست به صورت دستی وابستگی‌ها را بررسی و به‌روزرسانی کنید.

---

👑 @gopher_academy

Gopher Academy

19 Dec, 17:31


شب چله بر شما خجسته باد

Gopher Academy

19 Dec, 07:36


مقدار بهینه برای Semaphore (یعنی تعداد گوروتین‌های همزمان) به عوامل مختلفی وابسته است، از جمله:

---

### 1. نوع سیستم‌عامل و سخت‌افزار
- سیستم‌های با تعداد هسته‌های بالا: می‌توان تعداد گوروتین‌های بیشتری را به‌صورت همزمان اجرا کرد.
پیشنهاد: عددی بین 2 تا 4 برابر تعداد هسته‌های CPU.
- مثال: اگر CPU شما 8 هسته‌ای است، مقدار 20-30 مناسب است.

- سیستم‌های کم‌قدرت یا سرورهای مجازی: مقدار پایین‌تر برای جلوگیری از استفاده بیش از حد از منابع.
پیشنهاد: 1 تا 2 برابر تعداد هسته‌های CPU.
- مثال: برای CPU 2 هسته‌ای، مقدار 5-10 مناسب است.

---

### 2. ماهیت وظایف گوروتین‌ها
- وظایف محاسباتی سنگین (CPU-bound):
- اگر وظایف به شدت از CPU استفاده می‌کنند، مقدار semaphore باید برابر یا کمی بیشتر از تعداد هسته‌های CPU باشد.
- دلیل: گوروتین‌های زیاد منجر به رقابت برای منابع CPU می‌شوند و کارایی را کاهش می‌دهند.

- وظایف I/O سنگین (I/O-bound):
- اگر وظایف بیشتر منتظر I/O هستند (مانند درخواست به دیتابیس یا API)، می‌توانید مقدار بزرگ‌تری برای semaphore انتخاب کنید (مثلاً 50 یا بیشتر).
- دلیل: در زمان انتظار برای I/O، CPU آزاد است و گوروتین‌های بیشتری می‌توانند اجرا شوند.

---

### 3. پیکربندی سرور و حافظه
- سیستم‌هایی با حافظه محدود: تعداد زیاد گوروتین‌ها می‌تواند حافظه را به سرعت پر کند. در این موارد مقدار کمتری انتخاب کنید.
- پیشنهاد: برای هر گوروتین حدود 4-8 کیلوبایت حافظه در نظر بگیرید و مقدار semaphore را متناسب با محدودیت حافظه تنظیم کنید.

---

### 4. محیط تولیدی (Production) در مقابل آزمایشی (Development)
- محیط آزمایشی (Development):
- مقدار کمتر برای تسهیل اشکال‌زدایی.
- پیشنهاد: مقدار 5-10.

- محیط تولیدی (Production):
- مقدار بهینه‌تر بر اساس تحلیل بار واقعی.
- پیشنهاد: با اندازه‌گیری و مانیتورینگ منابع، مقدار مناسب را پیدا کنید.

---

### 5. تنظیم پویا بر اساس تعداد هسته‌های CPU
می‌توانید مقدار semaphore را به‌طور خودکار بر اساس تعداد هسته‌های CPU تنظیم کنید:

import "runtime"

numCPU := runtime.NumCPU()
semaphore := make(chan struct{}, numCPU*2) // 2 برابر تعداد هسته‌ها


---

### توصیه نهایی:
1. برای **وظایف محاسباتی**، مقدار semaphore را برابر با تعداد هسته‌های CPU تنظیم کنید.
2. برای **وظایف I/O**، مقدار را بزرگ‌تر تنظیم کنید (مثلاً 4 برابر تعداد هسته‌ها).
3. مقدار را در محیط تولید با مانیتورینگ منابع (مانند CPU و حافظه) بهینه کنید.


👑 @gopher_academy

Gopher Academy

18 Dec, 11:30


🔵 عنوان مقاله
Echo: Extensible, Minimalist Go Web Framework

🟢 خلاصه مقاله:
مقاله مورد بحث حول ویژگی‌ها و به‌روزرسانی‌های اخیر در نسخه 4.13.0 فریمورک Echo برای توسعه وب می‌پردازد. Echo یک فریمورک وب سبک وزن است که به توسعه‌دهندگان امکان می‌دهد با امکاناتی نظیر مسیریابی HTTP، TLS خودکار، برخورد با داده‌ها، قالب‌بندی، میدلورها و روش‌های مختلف برای نمایش داده‌ها به راحتی برنامه‌های کاربردی وب را بنویسند. در آخرین نسخه‌اش، Echo تصمیم گرفته است میدلور JWT را به دلیل مشکلات امنیتی از هسته خود حذف کند. این تغییر به منظور افزایش امنیت کاربران و جلوگیری از آسیب‌پذیری‌های احتمالی اعمال شده است. همچنین، اطلاعات مربوط به این تغییرات در مخزن GitHub موجود است که توسعه‌دهندگان می‌توانند برای دیدن جزئیات بیشتر و دریافت آخرین کد‌ها به آن مراجعه کنند.

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


👑 @gopher_academy

Gopher Academy

18 Dec, 05:30


🔵 عنوان مقاله
Goverter: A Type-Safe Go Converter Generator

🟢 خلاصه مقاله:
در این مقاله به مهندسین نرم‌افزار راهکاری برای تولید مبدل‌های نوع امن در برنامه‌نویسی ارائه شده است. با استفاده از کتابخانه‌ای به نام Goverter، که در مخزن GitHub قابل دسترسی است، توسعه‌دهندگان می‌توانند با نوشتن امضاهای تبدیل نوع داده، کد مورد نیاز برای انجام تبدیل‌ها را به صورت خودکار تولید کنند. این امر باعث صرفه‌جویی در وقت و افزایش دقت و امنیت نوع داده در برنامه‌های نرم‌افزاری می‌شود. Goverter به واسطه خودکارسازی تولید کد، کاهش خطاهای مربوط به تبدیل نوع داده‌ها را تضمین می‌کند، به‌ طوری‌که توسعه‌دهندگان می‌توانند بر اساس الگوهای مشخص شده در امضاها، به راحتی مبدل‌های دقیق و امنی را پیاده‌سازی نمایند. این کتابخانه به شکل یک ابزار کاربردی در جامعه توسعه‌دهندگان قرار گرفته است تا استانداردهای برنامه‌نویسی را تحت تأثیر قرار دهد.

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


👑 @gopher_academy

Gopher Academy

17 Dec, 11:30


🔵 عنوان مقاله
go-wasm-http-server 2.0: Embed Go HTTP Handlers in a Service Worker

🟢 خلاصه مقاله:
این مقاله به موضوع استفاده از WebAssembly برای تعبیه کنندگان درخواست HTTP گو (Go) در یک Service Worker در مرورگر می‌پردازد و نشان می‌دهد چگونه می‌توان یک سرور HTTP را در سمت مرورگر شبیه‌سازی کرد. در این مقاله، نمونه‌های خاصی آورده شده است که می‌توانند به عنوان الهام بخش برای توسعه‌دهندگانی باشند که به دنبال راه حل‌های نوین در بهبود فعالیت‌های وب خود هستند. استفاده از WebAssembly به کاربران اجازه می‌دهد تا عملکرد سرور-side را در مرورگر تقلید کنند، با این امکان، سرعت پردازش درخواست‌ها و کاهش بار روی سرور مرکزی افزایش می‌یابد. در کل، این تکنیک می‌تواند پتانسیل بالایی در بهینه‌سازی عملیات وب و افزایش تجربه کاربری داشته باشد.

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


👑 @gopher_academy

Gopher Academy

17 Dec, 05:30


🔵 عنوان مقاله
🕒 Coming in Go 1.24: An Experiment for Time and Concurrency Testing

🟢 خلاصه مقاله:
این مقاله به بررسی ویژگی جدیدی در نسخه 1.24 زبان برنامه‌نویسی Go می‌پردازد که اوایل سال آینده منتشر می‌شود. ویژگی مورد بحث، بسته آزمایشی testing/synctest است، که فرصت‌های جدیدی برای آزمایش کد‌هایی که با زمان یا همزمانی سر و کار دارند را فراهم می‌آورد. بسته جدید قابلیت‌هایی را به توسعه‌دهندگان می‌دهد تا بتوانند با دقت بیشتری در مورد کنترل و محیط آزمایشی کد‌های خود کار کنند. نویسنده مقاله اشاره می‌کند که او خود این بسته را در محل کار خود بر روی تست‌های نامعلوم و مشکل‌دار بکار برده و تجربه موفقیت‌آمیزی داشته است. این گزارش نشان می‌دهد که testing/synctest به طور قابل توجهی بهبودی در آزمایش کد‌هایی که شامل مفاهیم زمان و همزمانی هستند، ارائه داده است.

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


👑 @gopher_academy

Gopher Academy

15 Dec, 05:56


👇 لیست کانال‌های مجموعه Labdon با به‌روزترین اخبار، آموزش‌ها و ترفندها در حوزه‌های مختلف:


🔵 گولنگ - همه چیز از اخبار تا نکات کلیدی
🔴 @gopher_academy

🔵 موقعیت شغلی های گولنگ چه ایرانی و چه خارجی
🔴 @gopher_job


🔵 انواع دیتابیس ها ردیس مانگو پستگرس و سایر دیتابیس ها
🔴 @database_academy
🟢 حوزه های تحت پوشش

(redis , mysql , postgresl , mongo ,etc)

🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon
🟢 حوزه های تحت پوشش

(Bitcoin, Ethereum, Altcoins, Blockchain, Policy & Regulations, AI, NFTs, DeFi)


🔵 مهندسی نرم افزار
🔴 @software_labdon
🟢 حوزه های تحت پوشش

(Engineering, Architecture, Design, Testing, Security , QA)


🔵 لینوکس- از توزیع‌ها تا ترفندهای امنیتی
🔴 @linux_labdon
🟢 حوزه های تحت پوشش

(Linux Distributions, Open Source Software, Security Tips ,New Releases & Features)


🔵 دوآپـس - ابزارها و روندهای جدید
🔴 @devops_labdon
🟢 حوزه های تحت پوشش

(CI/CD Pipelines, Cloud Infrastructure, Containerization & Orchestration, Monitoring & Performance, Infrastructure as Code, Security in DevOps)

🕸 @labdon_academy

Gopher Academy

14 Dec, 08:16


SDK (Software Development Kit) و کتابخانه (Library) هر دو ابزارهایی برای توسعه نرم‌افزار هستند، اما تفاوت‌های کلیدی در مفهوم، هدف و کاربرد دارند:

---

### 1. تعریف و مفهوم
- کتابخانه (Library):
مجموعه‌ای از توابع، کدها یا کلاس‌ها که برای حل مشکلات خاص یا افزودن ویژگی‌های خاص به برنامه استفاده می‌شود. کتابخانه‌ها به برنامه‌نویس اجازه می‌دهند تا به جای نوشتن کد از ابتدا، از کدهای آماده استفاده کند.

مثال:
- math در Python برای محاسبات ریاضی.
- fmt در Go برای قالب‌بندی و چاپ.

- SDK:
مجموعه‌ای کامل‌تر از ابزارها، شامل کتابخانه‌ها، مستندات، ابزارهای اشکال‌زدایی، شبیه‌سازها و APIهایی که برای توسعه نرم‌افزار برای یک پلتفرم خاص یا استفاده از یک سرویس خاص طراحی شده‌اند.

مثال:
- Android SDK برای توسعه اپلیکیشن‌های اندروید.
- AWS SDK برای کار با سرویس‌های آمازون.

---

### 2. هدف اصلی
- کتابخانه:
انجام یک وظیفه خاص یا مجموعه‌ای از وظایف مشخص (مانند خواندن/نوشتن فایل، محاسبات ریاضی، یا اتصال به پایگاه داده).

- SDK:
فراهم کردن محیطی کامل برای ساختن یک برنامه یا یک سیستم، که معمولاً شامل کتابخانه‌ها و ابزارهای اضافی است.

---

### 3. سطح استفاده
- کتابخانه:
متمرکز روی یک مسئله خاص است و برنامه‌نویس آن را به کد خود اضافه کرده و فراخوانی می‌کند.

- SDK:
همه‌چیزهایی که برای توسعه یک اپلیکیشن نیاز دارید، از جمله ابزارها، نمونه کدها، و حتی شبیه‌سازها را فراهم می‌کند.


🕸 https://linktr.ee/Labdon

Gopher Academy

11 Dec, 16:42


ظاهرا یه کمپانی بزرگ هندی اومده یه نظرسنجی بین کارمنداش گذاشته و ازشون پرسیده که سطح استرسشون چقدر هست تا محیط کار سالم تری براشون درست کنه. ۱۰۰ تا از کارمند ها هم گفتن که  خیلی استرس دارن و کمپانی هم فورا همشون رو اخراج کرده تا دیگه استرس نداشته باشن :)

DevTwitter | <Shana/>


🕸 https://linktr.ee/Labdon

Gopher Academy

11 Dec, 06:42


در کدنویسی Go، تفاوت اصلی بین دو تعریف شما به نوع متغیر (global یا constant) و روش مقداردهی آنها مربوط است:

1. `var DockerClient *client.Client`:
این یک متغیر است که می‌تواند در زمان اجرا مقداردهی شود. مقدار آن قابل تغییر است و در برنامه‌های پویا و انعطاف‌پذیر کاربرد دارد.

2. `const DockerClient = *client.Client`:
این تعریف صحیح نیست، زیرا مقدار ثابت (const) باید یک مقدار قابل محاسبه در زمان کامپایل (compile-time) باشد، اما یک مقدار اشاره‌گر به دلیل ماهیت پویا نمی‌تواند در یک ثابت تعریف شود.

### نتیجه:
تعریف صحیح و کاربردی var DockerClient *client.Client است، زیرا مقدار اشاره‌گرها و متغیرهایی که به منابع خارجی (مانند Docker) وابسته هستند، باید در زمان اجرا تنظیم شوند.


🕸 https://linktr.ee/Labdon

Gopher Academy

09 Dec, 07:18


اکر میخواهید در مورد انترفیس ها بیشتر بدونید توی گولنگ
پلی لیست زیر رو مشاهده کنید

https://www.youtube.com/playlist?list=PLADD_vxzPcZB595tXmu540KC6MTMqIndB


🕸 https://linktr.ee/Labdon

Gopher Academy

08 Dec, 16:02


👇👇👇👇👇👇👇

🍀لیستی از تمامی چنل های ما

🔵 https://linktr.ee/Labdon

👆👆👆👆👆👆👆

Gopher Academy

08 Dec, 11:30


🔵 عنوان مقاله
shortuuid 4.2: Generate Concise, Unambiguous and URL-Safe Unique IDs

🟢 خلاصه مقاله:
خلاصه مقاله:

در این مقاله، بحث بر سر استفاده از شناسه‌های کاربری کوتاه و غیر متوالی (مانند KwSysDpxcBU9FNhGkn2dCf) و نه شناسه‌های استاندارد UUID می‌باشد. این نوع شناسه‌ها در مواقعی که نیاز به شناسه‌هایی کوتاه و قابل نمایش برای کاربر است، مناسب هستند. اهمیت این شناسه‌ها در این است که، به جای استفاده از شناسه‌های طولانی و پیچیده‌ی استاندارد، امکان استفاده از شناسه‌هایی با طول کمتر و سادگی بیشتر برای بهبود تجربه کاربر فراهم می‌شود. این نوع شناسه‌ها می‌توانند در بسیاری از برنامه‌های تجاری و توسعه‌ی نرم‌افزار کاربرد داشته باشند، به خصوص در برنامه‌هایی که در آنها تعامل کاربر با شناسه‌های مختلف لازم است.

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


👑 @gopher_academy

Gopher Academy

08 Dec, 10:39


تیم سازی چیست؟ اهمیت، روش‌ها و مزایای آن در محیط کار

https://karboom.io/mag/articles/%D8%AA%DB%8C%D9%85-%D8%B3%D8%A7%D8%B2%DB%8C

🕸 @labdon_academy

Gopher Academy

08 Dec, 05:30


🔵 عنوان مقاله
WorkOS: Sell to Enterprises with a Few Lines of Code

🟢 خلاصه مقاله:
مقاله‌ی مذکور به بررسی یک پلتفرم هویت نوین برای نرم‌افزارهای سرویس‌دهی به کسب‌وکارها (B2B SaaS) می‌پردازد. این پلتفرم، با ارائه API‌ های انعطاف‌پذیر و آسان برای استفاده، امکان ادغام قابلیت‌های ورود تک‌گانه (SSO)، مدیریت هویت و دسترسی مبتنی بر ابر (SCIM) و دسترسی مبتنی بر سیاست‌های نرم‌افزاری (FGA) را در دقایق به جای ماه‌ها فراهم می‌آورد. استفاده از این پلتفرم به کسب‌وکارها اجازه می‌دهد تا تجربه کاربری بهتری را برای مشتریان خود به ارمغان بیاورند و در عین حال امنیت داده‌های کاربران را تضمین کنند. همچنین، سهولت در ادغام با سیستم‌های موجود، سرعت بالای راه‌اندازی و کاهش هزینه‌های نگهداری از ویژگی‌های کلیدی این پلتفرم محسوب می‌شود. این تکنولوژی ابتکاری به سازمان‌ها کمک می‌کند تا با رقبا در عرصه جهانی رقابت کنند.

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


👑 @gopher_academy

Gopher Academy

07 Dec, 11:38


🔵 عنوان مقاله
Full-Stack Observability from Honeybadger

🟢 خلاصه مقاله:
پلتفرم جدید خطازنی Honeybadger که شباهت زیادی به سرویس‌های Splunk، DataDog یا CloudWatch Logs دارد، با این تفاوت که فقط ویژگی‌های مثبت این سرویس‌ها را به همراه یک قیمت معقول ارائه می‌دهد. این سیستم، علاوه بر کارایی بالا، به راحتی با سرویس‌هایی نظیر Crunchy Bridge، Journald و AWS یکپارچه‌سازی می‌شود. از مزایای اصلی این پلتفرم می‌توان به قیمت مناسب، راحتی در استفاده و امکان یکپارچه‌سازی آسان با دیگر سرویس‌های مدیریت داده و زیرساخت‌های فناوری اطلاعات اشاره کرد. این ویژگی‌ها Honeybadger را به یک انتخاب جذاب برای مدیریت لاگ‌ها در مقیاس وسیع یا پروژه‌های کوچکتر تبدیل می‌کند.

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


👑 @Database_Academy

Gopher Academy

07 Dec, 11:30


🔵 عنوان مقاله
Diving into eBPF: Building a Process Tracer from Scratch

🟢 خلاصه مقاله:
متن مقاله به طور خلاصه به بررسی پیچیدگی‌ها و مسائل فنی عمیق در استفاده از سیستم عامل لینوکس می‌پردازد. این نوع محتوا به‌خصوص برای افرادی که نیاز به درک دقیق و عمیق‌تری از نحوه کارکرد و استفاده از لینوکس دارند، ارزش زیادی دارد. نویسنده به اهمیت داشتن منابع مفید و کاربردی برای حل مسائل و شکاف‌های موجود در دانش فنی کاربران پرداخته است و اینکه چگونه این دانش می‌تواند به رفع مشکلات مختلف کمک کند. مقاله به خوانندگانی که ممکن است در مواقع خاص نیاز به اطلاعات تکنیکی ویژه‌ای داشته باشند، هدف گرفته شده و بنابراین، می‌تواند به عنوان یک منبع ارزشمند در مواقع نیاز مورد استفاده قرار گیرد.

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


👑 @gopher_academy

Gopher Academy

07 Dec, 05:30


🔵 عنوان مقاله
🔊 go-taglib: Read/Write Audio Metadata Tags

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به توضیح فرآیند خواندن و نوشتن برچسب‌های متادیتا برای فایل‌های صوتی مانند MP3، FLAC و OGG می‌پردازد. این فرایند با استفاده از Taglib که یک کتابخانه C++ است، انجام می‌شود و به صورت یک نسخه WASM در این سیستم گنجانده شده است تا از پایداری و حمل‌پذیری بالاتری برخوردار باشد. مهمترین ویژگی این سیستم این است که به هیچ وابستگی‌های زمان اجرای خارجی نیاز ندارد. همچنین، این کتابخانه از برچسب‌های با ارزش‌های متعدد پشتیبانی می‌کند. مقاله بر لزوم استفاده از این فرایندها برای بهینه‌سازی مدیریت فایل‌های صوتی و دسترسی آسان‌تر به اطلاعات مرتبط با آن‌ها تأکید می‌کند. Taglib تحت مجوز LGPL منتشر شده است که به معنای امکان استفاده، تغییر و پخش مجدد آن در پروژه‌های نرم‌افزاری است.

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


👑 @gopher_academy

Gopher Academy

06 Dec, 11:30


🔵 عنوان مقاله
We Put the Go in Google Gemini

🟢 خلاصه مقاله:
مقاله‌ای که در اختیار داریم، به توضیحاتی پیرامون Google Gemini 1.5 Flash 8B for Go می‌پردازد، یک ابزار قدرتمند که قابلیت پردازش بیش از 1 میلیون توکن در یک پنجره‌ی متنی را دارد. این سیستم قادر است بیش از 30,000 خط کد را طی چند ثانیه از طریق فیلم‌های آموزشی مستقیم یا فایل‌های لاگ پردازش کند و هزینه آن نسبت به روش‌های مشابه بسیار کمتر است. ابزار Gemini1.5 از API های Google برای ساخت و به کارگیری در زبان برنامه‌نویسی "Go" استفاده می‌کند. این امکانات باعث می‌شود تا توسعه‌دهندگان بتوانند برنامه‌های کاربردی را به صورت سریع و با کیفیت بالا بسازند. برای استفاده از این ابزار، باید از طریق Google API Quickstart در Go اقدام کنید، که فرآیندی ساده و مستقیم برای اجرای گسترده و کاربردی این ابزار فراهم می‌کند.

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


👑 @gopher_academy

Gopher Academy

06 Dec, 05:30


🔵 عنوان مقاله
🪨 Pebble: RocksDB/LevelDB Inspired Key-Value Database in Go

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شده، به بررسی یک سیستم ذخیره‌سازی کلید-مقدار متمرکز بر عملکرد پرداخته است که از فرمت فایل RockDB استفاده می‌کند اما ویژگی‌های اضافی برخی از نیازهای CockroachDB را نیز در بر می‌گیرد. این سیستم در CockroachDB به کار رفته و به طور گسترده‌ای مورد استفاده قرار می‌گیرد و به عنوان یک سیستم پایدار و آماده به کار در محیط‌های تولید شناخته شده است. این مطالعه تأکید دارد که اضافات جدید به منظور بهبود تطابق با الزامات خاص CockroachDB انجام گرفته است، بدین ترتیب افزوده‌های فنی ارائه شده علاوه بر حفظ کارایی بالا، به ارتقاء قابلیت اطمینان و سهولت در استفاده از سیستم در سطوح وسیع کمک کرده‌اند.

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


👑 @gopher_academy

Gopher Academy

05 Dec, 11:30


🔵 عنوان مقاله
Rill 0.6: A Composable Concurrency Toolkit for Go

🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی مجموعه‌ای از توابع کاربردی در زمینه‌های جریانی سازی (streaming)، پردازش موازی، و ساخت خط لوله (pipeline) می‌پردازد. هدف اصلی این توابع، سهولت در ساخت برنامه‌های همزمان (concurrent programs) با استفاده از قطعات ساده و قابل استفاده مجدد است. در این مقاله، نویسنده تلاش کرده است تا با ارائه روش‌ها و ابزارهایی مناسب، توسعه‌دهندگان را در فرآیند ساخت برنامه‌هایی که می‌توانند بی‌درنگ (کارها را همزمان) انجام دهند، یاری رساند. این ابزارها به گونه‌ای طراحی شده‌اند که افزایش بهره‌وری در پردازش‌ها و تسریع در پیاده‌سازی سیستم‌های مبتنی بر جریانی سازی و خط لوله را به ارمغان می‌آورند، که این خود می‌تواند به بهبود عملکرد کلی برنامه‌ها منجر شود.

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


👑 @gopher_academy

Gopher Academy

05 Dec, 05:30


🔵 عنوان مقاله
The Draft Go 1.24 Release Notes

🟢 خلاصه مقاله:
در هفته گذشته شاهد ارائه اسلایدهای دنیل مارتی درباره نسخه آینده Go 1.24 بودیم که انتظار می‌رود اوایل سال 2025 منتشر شود. این ارائه اطلاعات مبسوطی در خصوص ویژگی‌های جدید و بهبود‌های در دست اجرا ارائه داد. نسخه پیش‌نویس یادداشت‌های انتشار برای این نسخه نیز به خوبی پیشرفته است و شامل فهرستی دقیق و سرشار از نکات کلیدی است که در انتظار تغییرات و بهبودهای آینده قرار می‌دهد. این اطلاعات به جامعه برنامه‌نویسان کمک خواهد کرد تا خود را برای استفاده از نسخه جدید آماده سازند و منجر به ایجاد برنامه‌های کارآمدتر و بهینه‌تری خواهد شد.

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


👑 @gopher_academy

Gopher Academy

04 Dec, 11:30


🔵 عنوان مقاله
Weak Pointers in Go: Why They Matter Now

🟢 خلاصه مقاله:
این مقاله به بررسی ویژگی جدیدی در زبان برنامه‌نویسی Go می‌پردازد که انتظار می‌رود در نسخه ۱.۲۴ از طریق بسته‌ی weak به طور کامل اضافه شود. ویژگی مورد بحث، اشاره‌گرهای ضعیف (weak pointers) است که یک ابزار پایین‌سطح برای ساخت ساختارهای حافظه‌ای کارآمد است. مؤلف، Phuong، مبانی عملکرد این اشاره‌گرها را شرح می‌دهد. اشاره‌گرهای ضعیف امکان پذیر می‌سازند تا توسعه‌دهندگان بتوانند سازه‌هایی را بسازند که از نظر استفاده از حافظه بهینه‌تر هستند. این اشاره‌گرها به نرم‌افزار اجازه می‌دهند که به یک شیء ارجاع دهد بدون اینکه جلوی جمع‌آوری زباله‌ی آن شیء توسط مدیریت حافظه را بگیرد. این ویژگی به ویژه در مواردی که کش‌ها و سایر ساختارهای داده‌ای که نیاز به حذف خودکار اشیاء را دارند، مفید است. استفاده از اشاره‌گرهای ضعیف می‌تواند به بهبود عملکرد کلی برنامه‌ها کمک کرده و حافظه‌ی کمتری را اشغال کند.

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


👑 @gopher_academy

Gopher Academy

04 Dec, 06:05


🟢 اگر مقاله، سورس کد، یا محتوای مفیدی در حوزه‌های زیر دارید، خوشحال می‌شویم که برای ما ارسال کنید:


🔴 Linux
🔴 DevOps
🔴 Blockchain
🔴 Database
🔴 software

💡 محتوای شما می‌تواند در کانال‌های مرتبط (با عنوان ذکر منبع خودتون)منتشر شود تا افراد بیشتری از آن بهره‌مند شوند.

🕊 ادمین:
@mrbardia72

Gopher Academy

04 Dec, 05:30


🔵 عنوان مقاله
Why Go Slices Still Surprise Me

🟢 خلاصه مقاله:
مقاله به بررسی مفهوم "اسلایس‌ها" در برنامه‌نویسی می‌پردازد، که اغلب به دو دلیل منبع اشتباهات و سردرگمی می‌شود. اولین کاربرد اسلایس به عنوان یک "فت پوینتر" (فضایی که هم شامل اشاره‌گر و هم اندازه است) است که برای دسترسی به داده‌ها و نگهداری اطلاعات درباره آنها استفاده می‌شود. دومین کاربرد، اسلایس به عنوان یک "آرایه پویا" است که امکان تغییر اندازه و مدیریت داده‌ها در حافظه را فراهم می‌کند. مشکل اصلی زمانی رخ می‌دهد که این دو کاربرد با یکدیگر ادغام شده و به اشتباه گرفته می‌شود، که منجر به پیچیدگی‌ها و خطاهای برنامه‌نویسی می‌شود. مقاله به اهمیت تفکیک این دو کاربرد و درک صحیح آنها تأکید دارد تا بتوان از بروز این ابهامات و خطاها پیشگیری کرد.

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


👑 @gopher_academy

Gopher Academy

03 Dec, 05:51


🟢 اگر کارفرما هستید و به دنبال نیروهای متخصص در حوزه‌های زیر می‌گردید، آگهی شغلی خود را برای ما ارسال کنید. و ما توی چنل های مرتبط به هر حوزه ای قرار میدیم

تخصص های همچون:
🔥 linux
🔥 devops
🔥 golang
🔥 blockchain
🔥 database


🟢 اگر کارجو هستید، رزومه خود را مطابق فرمت زیر برای ما ارسال کنید:

🤝موارد زیر را به همراه فایل pdf رزومه بفرستید:

🎯نام و نام خانوادگی (اجباری)
🎯مدت سابقه کار (اجباری)
🎯لینکدین (اختیاری)
🎯گیتهاب (اختیاری)
🎯محل سکونت  (اجباری)
🎯امکان نقل مکان برای کار دارم یا خیر
(اجباری)


🕊Admin:
@mrbardia72

Gopher Academy

03 Dec, 05:30


🔵 عنوان مقاله
Porcupine 1.0: A Fast Linearizability Checker

🟢 خلاصه مقاله:
مقاله‌ درباره استفاده از ابزاری به نام Porcupine برای بررسی خواص هم‌خط‌سازی در سیستم‌های هم‌زمان است که به زبان برنامه‌نویسی Go نوشته شده‌اند. در این روش، ابتدا یک مشخصه برای سیستم نوشته می‌شود. سپس، تاریخچه‌ای از عملیات‌ها که به صورت همزمان اجرا شده‌اند، ارائه می‌گردد. Porcupine آن تاریخچه را به کمک مشخصه تحلیل می‌کند تا تشخیص دهد آیا تاریخچه می‌تواند به شکل خطی بازآفرینی شود یا خیر. این فرایند برای تضمین اینکه سیستم به درستی در شرایط همزمانی کار می‌کند بسیار مهم است. ابزار Porcupine با استفاده از مفاهیم پیچیده‌ای چون خطی‌سازی به توسعه‌دهندگان کمک می‌کند تا مطمئن شوند عملیات‌های موازی در نهایت نتایج منطقی و مطابق با مشخصات انتظاری تولید می‌کنند. این مقاله همچنین به وبلاگی از سال ۲۰۱۷ استناد می‌کند که توضیحات بیشتری درباره Porcupine ارائه داده است.

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


👑 @gopher_academy

Gopher Academy

02 Dec, 11:30


🔵 عنوان مقاله
WorkOS: Sell to Enterprises with a Few Lines of Code

🟢 خلاصه مقاله:
این مقاله به بررسی یک پلتفرم هویت‌سنجی مدرن برای نرم‌افزارهای B2B SaaS می‌پردازد که امکان پیاده‌سازی آسان و سریع Single Sign-On (SSO)، System for Cross-domain Identity Management (SCIM)، و Fine-Grained Access Control (FGA) را از طریق API‌های انعطاف‌پذیر فراهم می‌آورد. به جای صرف ماه‌ها زمان برای ادغام و تنظیم این ویژگی‌ها، پلتفرم ارائه شده این قابلیت‌ها را در چند دقیقه فراهم می‌کند، که نتیجتاً به بهبود بهره‌وری و کاهش هزینه‌های توسعه کمک می‌کند. این ابزار به شرکت‌های SaaS اجازه می‌دهد تا مدیریت احراز هویت و دسترسی‌ها را به شیوه‌ای موثر و امن تنظیم کنند، که در نهایت منجر به ارائه تجربه‌های کاربری بهتر و افزایش امنیت داده‌ها می‌شود.

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


👑 @gopher_academy

Gopher Academy

02 Dec, 05:30


🔵 عنوان مقاله
📊  What's Coming in Go 1.24

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به بررسی تغییرات زبان برنامه‌نویسی Go در نسخه 1.24 که انتظار می‌رود در ژانویه یا فوریه 2025 منتشر شود، می‌پردازد. این مقاله شامل ارائه‌ای با 52 اسلاید است که جزئیات تغییرات در زبان، ابزارها و کتابخانه استاندارد Go را پوشش می‌دهد. تغییرات مهمی که عنوان شده‌اند شامل ایجاد نوع عمومی (generic type aliases)، اشاره‌گرهای ضعیف (weak pointers)، و یک بسته آزمایشی جدید برای کدنویسی همزمان (concurrent code) است. این بسته آزمایشی جدید، مخصوصاً برای تست کد‌هایی که به صورت همزمان اجرا می‌شوند، طراحی شده و قابلیت‌های جدیدی به برنامه‌نویسان Go ارائه می‌دهد تا با استفاده از آن‌ها بتوانند کارایی و امنیت برنامه‌های خود را بهبود ببخشند.

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


👑 @gopher_academy

Gopher Academy

01 Dec, 11:30


🔵 عنوان مقاله
Act: Run Your GitHub Actions Locally

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شده درباره ابزاری به نام "Run act" است که برای اجرای محلی فعالیت‌های GitHub Actions به کار می‌رود. این ابزار با مشاهده فعالیت‌های موجود در یک مخزن GitHub شروع به کار می‌کند و از Docker برای دریافت تصاویر مورد نیاز و اجرای وظایف استفاده می‌کند. "Run act" به کاربران امکان می‌دهد تا قبل از ارسال کدها به سرور مرکزی GitHub، به صورت محلی و بدون نیاز به آپلود مکرر، فرآیندها و وظایف مربوط به GitHub Actions را آزمایش و اجرا کنند. استفاده از این ابزار می‌تواند در وقت و منابع صرفه‌جویی کند و به توسعه‌دهندگان امکان می‌دهد تا خطاها را به سرعت شناسایی و رفع نمایند. این فرآیند همچنین به بهینه‌سازی چرخه توسعه نرم‌افزار کمک می‌کند.

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


👑 @gopher_academy

Gopher Academy

01 Dec, 05:30


🔵 عنوان مقاله
Understanding Command Injection Vulnerabilities in Go

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به اهمیت اتخاذ تدابیر امنیتی زمانی که از ابزارهای سیستمی در کدنویسی استفاده می‌شود، می‌پردازد. نویسنده تاکید دارد که عدم توجه به این مسائل می‌تواند به مشکلات امنیتی جدی منجر شود؛ به طور مثال، خطرات ناشی از اجرای فرمان‌هایی مانند `rm` (که باعث حذف فایل‌ها می‌شود) از طریق کدها، چیزی است که باید به طور ویژه مورد توجه باشد. نویسنده راهکارهایی را پیشنهاد می‌دهد که شامل اطمینان از ورودی‌های امن، استفاده از روش‌های احراز هویت صحیح، و جلوگیری از اجرای دستورات کاربر با سطح دسترسی بالا است. به‌طورکلی، مقاله بر اهمیت داشتن یک استراتژی محکم و اجرایی برای امنیت سیستم تاکید می‌کند، تا از آسیب‌های احتمالی پیشگیری کند.

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


👑 @gopher_academy

Gopher Academy

30 Nov, 17:51


🔵 عنوان مقاله
Kubernetes at the edge using LINBIT SDS for persistent storage (9 minute read)

🟢 خلاصه مقاله:
این بلاگ قابلیت‌های LINBIT SDS را در محیط‌های کامپیوتینگ اج در بررسی می‌کند و نشان می‌دهد که چگونه‌یک ساختار سبک سیستمی و راه‌حل‌های قوی ذخیره‌‌سازی بلوکی آن، این محصول را به گزینه‌ای ایده‌آل برای مدیریت ذخیره‌سازی دائمی در سخت‌افزارهای کم‌هزینه و کم منابع تبدیل می‌کند. LINBIT SDS به‌ویژه برای استفاده در محیط‌هایی که نیاز به حداقل منابع سیستمی هستند، مانند ایستگاه‌های کوچک و دستگاه‌های IoT، بهینه‌سازی شده است. این فناوری از توان پایین استفاده می‌کند و در عین حال عملکرد بالا و قابلیت اطمینان را حفظ می‌کند، که به تجمیع اطلاعات کارآمد و پردازش محلی کمک می‌کند. LINBIT SDS ابزاری موثر برای افزایش پایداری و کارایی سیستم‌های کامپیوتینگ اج با توجه به محدودیت‌های منابع است.

🟣لینک مقاله:
https://www.cncf.io/blog/2024/11/28/kubernetes-at-the-edge-using-linbit-sds-for-persistent-storage/?utm_source=tldrdevops


👑 @DevOps_Labdon

Gopher Academy

30 Nov, 17:50


این قضیه Quine رو یادتونه؟
این QR Code میتونه باینری خودش رو (یه QR code Generator) تولید کنه که روی لینوکس ۶۴ بیتی اجرا میشه!
سایزش فقط 2953 بایت هست!
سورس:
https://github.com/AlokSwaminathan/QRception

DevTwitter | <Mamadou On GameDev/>


👑 @software_labdon

Gopher Academy

30 Nov, 11:30


🔵 عنوان مقاله
🗓️ Enterprise Ready Conference

🟢 خلاصه مقاله:
این رویداد یک‌روزه در شهر سان فرانسیسکو برای رهبران تولید و مهندسی شرکت‌هایی که در زمینه توسعه نرم‌افزارهای SaaS مشغول به کار هستند، برگزار می‌شود. مخاطبان اصلی این کنفرانس، مدیران و سرپرستانی هستند که در حوزه‌های مرتبط با نرم‌افزار به عنوان خدمت (SaaS) فعال می‌باشند و به دنبال ایده‌های نوآورانه و راهکارهای عملی برای بهبود عملیات و افزایش کارایی تیم‌های خود هستند. در این رویداد، سخنرانانی از شرکت‌های برجسته‌ای مانند OpenAI، Vanta، Canva، و Dropbox حضور دارند که تجربیات و دیدگاه‌های خود را در مورد چالش‌ها و موقعیت‌های کلیدی صنعت SaaS به اشتراک می‌گذارند. این فرصتی استثنایی برای شبکه‌سازی و کسب اطلاعات ارزشمند درباره‌ی آخرین تحولات و نوآوری‌های این حوزه می‌باشد.

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


👑 @gopher_academy

Gopher Academy

30 Nov, 05:30


🔵 عنوان مقاله
Excelize 2.9: A Pure Go Way to Work with Excel Spreadsheets

🟢 خلاصه مقاله:
مقاله به بررسی کتابخانه‌ای می‌پردازد که توانایی خواندن و نوشتن فایل‌های XLAM، XLSM، XLSX، XLTM و XLTX را دارد. این کتابخانه که سابقه طولانی در بهبود و ارتقاء دارد، در نسخه 2.9 خود تمرکز بیشتری بر جزئیات داشته و توابع جدید متعددی را در زمینه‌های مختلف معرفی کرده است. به خصوص در زمینه کار با نمودارها و سلول‌های مبتنی بر تصاویر توسعه‌هایی داشته است. این پیشرفت‌ها از طریق مخزن GitHub قابل دسترسی است، که این امکان را به توسعه‌دهندگان می‌دهد تا از آخرین تغییرات و افزودنی‌های کتابخانه بهره ببرند. این توسعات نشان دهنده ادامه پیشرفت و تقویت این کتابخانه برای کار با فایل‌های اکسل در محیط‌های برنامه‌نویسی است.

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


👑 @gopher_academy

Gopher Academy

29 Nov, 13:30


در علوم کامپیوتر بهش میگن Quine؛ برنامه‌ای که بدون گرفتن هرگونه ورودی یک کپی از خودشو به عنوان خروجی چاپ میکنه. علت این نامگذاری هم به افتخار ریاضیدان و منطق‌دان آمریکایی Willard Van Orman Quine هست.
این کلمه رو با زبان برنامه‌نویسی مورد علاقه‌تون سرچ کنید مثال‌ زیاد پیدا میکنید.

Mamadou On GameDev/>

👑 @software_Labdon

Gopher Academy

29 Nov, 11:30


🔵 عنوان مقاله
︎ recur: Retry a Command with Exponential Backoff and Jitter

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شد در مورد ابزار خط فرمان مبتنی بر زبان برنامه‌نویسی Go است که برای تکرار دستورات مبتنی بر شل (Shell) در شرایط کنترل‌شده تا زمان برآورده شدن یک شرط یا موفقیت طراحی شده است. این ابزار به کاربران امکان می‌دهد تا دستورات شل خود را با استفاده از یک مکانیزم تلاش مجدد (retry) اجرا کرده تا به نتیجه مطلوب دست یابند. این فرآیند می‌تواند برای مواقعی که دستورات نیاز به چندین تلاش برای موفقیت دارند، بسیار مفید باشد. استفاده از این ابزار می‌تواند به صرفه‌جویی در زمان و افزایش کارایی عملیات خودکار در محیط‌های مختلف توسعه و تست کمک کند، زیرا کاربر نیازی به اجرای دستی دستورات برای چندین بار ندارد. این ابزار به ویژه در سناریوهایی که شکست‌های موقتی رخ می‌دهد، از قابلیت اطمینان بالایی برخوردار است.

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


👑 @gopher_academy

Gopher Academy

29 Nov, 05:30


🔵 عنوان مقاله
Are Go's Generics Simple or Incomplete? A Design Study

🟢 خلاصه مقاله:
در مقاله‌ای درباره استفاده از قابلیت Generics در زبان برنامه‌نویسی Go بحث شده است. برخی از افراد معتقدند که این ویژگی تنها پیچیدگی زبان را افزوده است. نویسنده مقاله، Nick، به توضیح درباره مشکل پیچیده‌ای می‌پردازد که در تلاش برای حل آن با استفاده از Generics بوده است. در نهایت او به راه‌حلی دست پیدا می‌کند که کار می‌کند، اما احساس می‌کند راه حل دشوارتر از آن بوده که لازم است. برخی کاربران در Reddit نظر داده‌اند که رویکرد او بیشتر بر پایه شی‌گرایی و رابط‌ها (OO / interface-based) است تا آنچه نیاز بوده است. این اختلاف نظرها نشان‌دهنده تنوع دیدگاه‌ها در جامعه برنامه‌نویسان است، و چالش‌هایی که در کاربرد Generics در پروژه‌های واقعی وجود دارد.

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


👑 @gopher_academy

Gopher Academy

28 Nov, 11:30


🔵 عنوان مقاله
Inside Bluesky’s Engineering Culture

🟢 خلاصه مقاله:
مقاله‌ای که در می 2024 نوشته شده و با رشد سریع اخیر Bluesky اهمیت بیشتری پیدا کرده، به بررسی نقش زبان برنامه‌نویسی Go در پشت‌صحنه شبکه اجتماعی Bluesky می‌پردازد. زبان Go به دلیل کارایی بالا، مدیریت بهینه منابع و زمان پاسخگویی سریع، به عنصر کلیدی در توسعه و عملکرد پشت‌صحنه این شبکه تبدیل شده است. این مقاله توضیح می‌دهد که چگونه استفاده از Go منجر به افزایش قابلیت اطمینان و کارایی سیستم‌های Bluesky شده و چه تأثیری بر تجربه کاربران و رشد پایدار شبکه داشته است. با توجه به محبوبیت روزافزون Bluesky، انتخاب Go به عنوان زبان اصلی توسعه می‌تواند الهام‌بخش سایر شرکت‌ها در انتخاب زبان‌های برنامه‌نویسی برای پروژه‌های مشابه باشد.

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


👑 @gopher_academy

Gopher Academy

28 Nov, 05:30


🔵 عنوان مقاله
GoMLX: ML in Go without Python

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی می‌پردازد، امکان استفاده از زبان برنامه‌نویسی Go به عنوان یک زبان چسب به منظور فراخوانی سرویس‌های یادگیری ماشینی از شخص ثالث و پایتون را مورد بحث قرار داده است. نویسنده، Eli، به بررسی این موضوع پرداخته که آیا می‌توان کارهای سنگین را مستقیماً از طریق Go انجام داد. GoMLX یکی از گزینه‌های موجود برای این منظور است. GoMLX به کاربران امکان می‌دهد تا بدون نیاز به استفاده از زبان‌های واسط مانند پایتون، توابع یادگیری ماشین را مستقیماً در Go اجرا کنند. این رویکرد می‌تواند به افزایش کارایی و سادگی در توسعه نرم‌افزار کمک کند، زیرا تمامی کدها در یک زبان واحد نوشته و مدیریت می‌شوند.

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


👑 @gopher_academy

Gopher Academy

27 Nov, 11:30


🔵 عنوان مقاله
superfile: A Terminal-Based File Manager App

🟢 خلاصه مقاله:
مقاله‌ای که خوانده شده، به بررسی ابزار مدیریت فایل جدیدی می‌پردازد که با استفاده از زبان برنامه‌نویسی Go و کتابخانه‌ی Bubble Tea ساخته شده است. این ابزار طراحی بصری جذابی دارد و ترکیبی از سادگی ابزارهای ترمینالی و دسترسی آسان به فایل‌ها را فراهم می‌آورد. این جذابیت بصری و سادگی، رویکردی تازه و قابل دسترس به مدیریت فایل را ارائه می‌دهد، که می‌تواند برای کاربرانی که به دنبال راهکارهای کارآمد و کم‌دردسر در مدیریت فایل‌های خود هستند، مفید باشد. از نقاط قوت این ابزار می‌توان به سرعت بالا، امکانات پیشرفته و رابط کاربری ساده و در عین حال کاربردی اشاره کرد. این ابزار با تمرکز بر بهبود تجربه کاربری در محیط‌های ترمینال و استفاده از تکنولوژی‌های مدرن، توانسته است تفاوتی قابل توجهی در این زمینه ایجاد کند.

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


👑 @gopher_academy

Gopher Academy

27 Nov, 06:47


در Go، Function Signature و Function Type به دو مفهوم مرتبط اما متفاوت اشاره دارند:

1. Function Signature:
مشخصات تابع شامل نام تابع، پارامترها (نوع و ترتیب)، و نوع مقدار بازگشتی است. این بخش توصیف می‌کند که تابع چه ورودی‌ها و خروجی‌هایی دارد. برای مثال:

func Add(a int, b int) int



2. Function Type:
نوع تابع تنها شامل پارامترها و مقادیر بازگشتی است، بدون نام تابع. می‌توان نوع تابع را به یک متغیر نسبت داد.

type MathOp func(a int, b int) int
var add MathOp = func(a, b int) int { return a + b }



تفاوت اصلی در این است که Signature تابع برای تعریف تابع استفاده می‌شود، اما Type تابع برای ایجاد انواع عمومی‌تر برای توابع با مشخصات مشابه به کار می‌رود.


👑 @gopher_academy

Gopher Academy

27 Nov, 05:30


🔵 عنوان مقاله
Go! Unlock Your Tech Potential with Ardan Labs Consulting

🟢 خلاصه مقاله:
شرکت Ardan Labs در زمینه‌های Go، Rust، Docker و K8s تخصص دارد و به شرکت‌ها کمک می‌کند تا سرعت توسعه نرم‌افزار خود را افزایش دهند، معماری سیستم‌های خود را بهینه‌سازی کنند و بدهی فناوری خود را مدیریت کنند. این شرکت با توجه به مشکلات و چالش‌های پیچیده فناوری و کمبودهای مهارتی که شرکت‌ها با آن روبرو هستند، خدمات خود را ارائه داده تا به تیم‌های آنها قدرت بیشتری ببخشد و به پروژه‌های توسعه نرم‌افزاری سرعت ببخشند.

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


👑 @gopher_academy

Gopher Academy

26 Nov, 11:30


🔵 عنوان مقاله
Speeding Up Calculations 450% with Go Assembly

🟢 خلاصه مقاله:
در این مقاله، مؤلف به بررسی اسمبلر زبان برنامه‌نویسی Go پرداخته است، که الهام بسیاری از اسمبلر Plan 9 گرفته است. Plan 9 خود اثری از راب پایک و کن تامپسون است که در توسعه Go نیز دست داشته‌اند. محور اصلی بحث، استفاده از اسمبلر Go برای پیاده‌سازی یک کتابخانه SIMD (اجرای چند دستور به صورت همزمان) بسیار سریع برای Go است. علاوه بر این، در مقاله به بحثی در Hacker News اشاره شده است که در آن راس کاکس (Russ Cox)، یکی از توسعه‌دهندگان اصلی Go، مفاهیم و زمینه‌های عمیق‌تری را برای این موضوع فراهم می‌کند. این بحث‌ها و توضیحات به خواننده کمک می‌کند تا درک بهتری از پتانسیل و کاربرد اسمبلر در Go بدست آورد و بینش‌هایی در مورد چگونگی بهبود عملکرد برنامه‌ها با استفاده از SIMD بگیرد.

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


👑 @gopher_academy

Gopher Academy

26 Nov, 05:39



👑 @gopher_academy

Gopher Academy

26 Nov, 05:30


🔵 عنوان مقاله
htmgo 1.0: Build Simple, Scalable System with Go and htmx

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی و تلفیق دو فناوری یعنی Go و htmx در ساخت وب‌اپلیکیشن‌های تعاملی می‌پردازد. Go، به دلیل سادگی و قابلیت اطمینانی که دارد، و htmx که کمک می‌کند تا عناصر تعاملی به سادگی در وب‌اپلیکیشن‌ها ایجاد شوند، بسیار مورد توجه قرار گرفته‌اند. در این مقاله، نسخه 1.0 این تلفیق معرفی شده و به عنوان یک روش پایدار برای توسعه وب‌اپلیکیشن‌ها مطرح شده است. تاکید بر این است که کاربرد این تکنولوژی‌ها می‌تواند به سرعت بخشیدن به فرآیند توسعه و افزایش کارایی در ساخت صفحات وب کمک کند، در حالی که کاربران را با رابط کاربری روان و تعاملی مواجه می‌سازد. این مقاله همچنین به نکاتی در مورد چگونگی استفاده از این تکنولوژی‌ها در پروژه‌های واقعی اشاره کرده است.

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


👑 @gopher_academy

Gopher Academy

25 Nov, 11:30


🔵 عنوان مقاله
ogen 1.5: OpenAPI v3 Code Generator for Go

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی آن پرداخته‌اید، به معرفی ابزاری به نام "ogen" می‌پردازد که برای تولید کد پیاده‌سازی کلاینت و سرور از مشخصات OpenAPI طراحی شده است. این ابزار توسط یک پست وبلاگی معرفی شده و همچنین دارای یک مخزن GitHub است. استفاده از ogen می‌تواند به توسعه‌دهندگان کمک کند تا روند توسعه نرم‌افزار را تسریع بخشیده و به استانداردسازی و خودکارسازی در تولید کد بین جلویی (کلاینت) و پشتی (سرور) کمک کند. این ابزار با کمک به خودکار سازی فرآیندها، خطاها را کاهش داده و بازدهی توسعه را بهبود می‌بخشد. کاربرد آن در پروژه‌هایی که از مشخصات OpenAPI برای توصیف API‌های خود استفاده می‌کنند، می‌تواند بسیار موثر باشد.

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


👑 @gopher_academy

Gopher Academy

25 Nov, 05:30


🔵 عنوان مقاله
A Taste of Go Code Generator Magic: A Quick Guide to Getting Started

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به بیان تجربه نویسنده در ایجاد برنامه‌ای برای تولید کد خودکار در زبان برنامه‌نویسی Go می‌پردازد. نویسنده به دلیل کمبود آموزش‌های موجود در این زمینه محرک شده تا چگونگی ایجاد برنامه‌ای را که قادر به تولید قالب‌های مقدماتی (boilerplate) برای پوشش دادن توابع است، نشان دهد. هدف از این تولید کد، کاستن از بار نویشتن کدهای تکراری و زمان‌بر است تا بدین وسیله زمان بیشتری برای برنامه‌نویسان فراهم آورد تا بتوانند روی جنبه‌های پیچیده‌تر و خلاقانه‌تر برنامه‌نویسی تمرکز کنند. این مقاله می‌تواند منبع مفیدی برای برنامه‌نویسانی باشد که به دنبال راهکارهایی برای بهینه‌سازی و افزایش کارایی کدنویسی خود در Go هستند.

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


👑 @gopher_academy

Gopher Academy

24 Nov, 10:38


با مفاهیم deadlock و علت‌هایی که ممکنه منجر بهش بشه توی این سایت بصورت عملی آشنا بشید.

#Concurrency #Deadlock #Operating #System #OS #linux #C #Race #condition

https://deadlockempire.github.io


👑 @linux_labdon

Gopher Academy

24 Nov, 10:22


🟢اگر کارفرما هستی و دنبال برنامه نویس گولنگ هستی آگهی شغلی تو برامون بفرستید
🟢اگر کارجو هستید رزومه خودتون رو براساس فرمتی زیر برامون بفرست

💋فقط استک گولنگ پروموت میکنیم.

🤝موارد زیر را به همراه فایل pdf رزومه بفرستید:

🎯نام و نام خانوادگی (اجباری)
🎯مدت سابقه کار (اجباری)
🎯لینکدین (اختیاری)
🎯گیتهاب (اختیاری)
🎯محل سکونت  (اجباری)
🎯امکان نقل مکان برای کار دارم یا خیر
(اجباری)


🕊Admin:
@mrbardia72


👑 @gopher_job

Gopher Academy

24 Nov, 06:51


چگونه یک سیستم رزرو بلیت هواپیما با معماری Event-Driven و Saga پیاده‌سازی کنیم؟

تو این مقاله توضیح دادم چطور با ترکیب Event-Driven Architecture، RabbitMQ و Saga Pattern تونستم سیستم‌های رزرو بلیت هواپیما رو به یه سطح دیگه ببرم. اگه دنبال معماری‌های مقیاس‌پذیر و پایدار هستی، حتماً این مطلب رو بخون!

لینک مقاله

DevTwitter | <mostafa jafarzadeh/>

👑 @software_Labdon

Gopher Academy

24 Nov, 05:30


🔵 عنوان مقاله
Leveraging benchstat Projections in Go Benchmark Analysis

🟢 خلاصه مقاله:
مقاله‌ای که مطرح شده به معرفی ابزار benchstat از کتابخانه استاندارد زبان برنامه‌نویسی Go می‌پردازد. این ابزار برای مقایسه و تفحص داده‌های بنچمارک (معیار سنجی کارایی) که توسط تست‌های بنچمارک Go تولید شده‌اند، استفاده می‌شود. مقاله با تشریح ویژگی‌ها و کاربردهای benchstat شروع می‌شود و دلایلی را که این ابزار می‌تواند برای توسعه‌دهندگان مفید باشد، بیان می‌کند. به‌طور خاص، این ابزار به تحلیل و درک بهتر عملکرد کد کمک می‌کند و می‌تواند بینش‌هایی راجع به بهینه‌سازی‌های احتمالی ارائه دهد. استفاده از benchstat به‌ویژه در محیط‌های توسعه‌ای که به دنبال بهبود مداوم کارایی هستند، توصیه می‌شود. این مقاله برای برنامه‌نویسانی که با زبان Go کار می‌کنند و می‌خواهند داده‌های بنچمارک خود را به طور دقیق‌تری تجزیه و تحلیل کنند، مفید است.

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


👑 @gopher_academy

Gopher Academy

23 Nov, 11:30


🔵 عنوان مقاله
GoLand 2024.3 Released

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به بررسی به‌روزرسانی بزرگ جدید در محیط توسعه یکپارچه (IDE) محبوب Go اختصاص دارد. این به‌روزرسانی ویژگی‌های چشمگیری نظیر تکمیل خودکار کد چندخطی با استفاده از هوش مصنوعی، بهبود زمان‌های راه‌اندازی برای پروژه‌های بزرگ، امکان جستجو برای واردات چرخه‌ای و روشی برای شبیه‌سازی یک ترمینال در کنسول خروجی را شامل می‌شود. این ویژگی‌ها به بهبود کارایی و افزایش بهره‌وری توسعه‌دهندگان کمک می‌کند، به ویژه در پروژه‌های بزرگ که مدیریت پیچیدگی‌ها و تابعیت‌های فراوان دارند. افزودن هوش مصنوعی به IDE نویدبخش بهره‌برداری هرچه بهتر از این ابزار در تولید کد و تحلیل برنامه‌ها است. استفاده از ترمینال مجازی نیز تجربه کاربری را بهبود بخشیده و توسعه برنامه‌های وابسته به ترمینال را آسان‌تر می‌کند.

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


👑 @gopher_academy

Gopher Academy

23 Nov, 05:30


🔵 عنوان مقاله
Machine Learning in Go with a Python Sidecar

🟢 خلاصه مقاله:
مقاله مورد بحث توسعهٔ زبان برنامه‌نویسی Go و نقش آن در پروژه‌های یادگیری ماشینی (ML) و مدل‌های زبان بزرگ (LLMs) را مورد بررسی قرار می‌دهد. Python به دلیل تنوع بسیار زیاد پروژه‌ها و نمونه‌ها، همچنان پرچمدار عرصه ML است، اما Go به عنوان یک زبان 'چسب' مفید برای ادغام و هماهنگی بین پروژه‌های ML شناخته شده است، حتی اگر این کار به تعامل با پروژه‌های مبتنی بر Python هم نیاز داشته باشد. استفاده از Go می‌تواند در بهبود چگونگی کنترل و مدیریت این تعاملات میان زبانی به طور موثر کمک کند. این مقاله به توضیح مزایای استفاده از Go در کاربردهای ML مختلف و تعامل آن با Python می‌پردازد.


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


👑 @gopher_academy

Gopher Academy

22 Nov, 15:18


شرکت های بزرگی مثل Microsoft مخازن جالبی در GitHub دارند مثل Security-101 که مخصوص آموزش امنیت برای کاربرانی است که قصد دارند نکات اولیه امنیتی را یاد بگیرند!
https://github.com/microsoft/Security-101

<Vahid Nameni/>

Gopher Academy

22 Nov, 11:30


🔵 عنوان مقاله
WorkOS: Sell to Enterprises with a Few Lines of Code

🟢 خلاصه مقاله:
این مقاله به بررسی پلتفرم جدید هویتی برای سرویس‌های نرم‌افزاری تجاری (B2B SaaS) می‌پردازد که قابلیت‌های انعطاف‌پذیر و روش‌های استفاده آسانی را از طریق API ارائه می‌دهد. این پلتفرم به کاربران امکان می‌دهد تا Single Sign-On (SSO)، System for Cross-domain Identity Management (SCIM)، و Fine-Grained Access Control (FGA) را در چند دقیقه و نه چند ماه، به طور کامل و بدون دردسر ادغام کنند. هدف اصلی این پلتفرم، تسهیل فرآیندهای مرتبط با مدیریت هویت و دستیابی به کنترل دقیق‌تر بر دسترسی‌ها در بسترهای نرم‌افزاری B2B است که به سازمان‌ها کمک می‌کند تا امنیت بیشتری را تجربه کنند و با سرعت بیشتری پروژه‌های خود را عملیاتی سازند.

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


👑 @gopher_academy

Gopher Academy

22 Nov, 05:30


🔵 عنوان مقاله
Mailpit: Go-Powered Email and SMTP Testing Tool

🟢 خلاصه مقاله:
این مقاله به معرفی ابزاری کوچک، سریع، کارآمد و بدون وابستگی برای آزمایش ایمیل و ارائه API برای توسعه‌دهندگان می‌پردازد. این ابزار به عنوان یک سرور SMTP عمل می‌کند که ایمیل‌ها می‌تواند به آن فرستاده شوند و یک رابط وبی نیز دارد تا کاربران بتوانند ایمیل‌های دریافتی را مشاهده کنند. برنامه با زبان برنامه‌نویسی Go نوشته شده است، به همین دلیل می‌توان آن را به یک باینری تکی تبدیل کرد و بر روی هر سروری قرار داد. منبع کد این ابزار در GitHub موجود است. این ویژگی‌ها به توسعه‌دهندگان امکان می‌دهد تا به صورت موثری بر روی ارسال و دریافت ایمیل‌ها در محیط‌های توسعه تست کرده و بدون نیاز به وابستگی‌های خارجی، از آن استفاده کنند.

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


👑 @gopher_academy

Gopher Academy

21 Nov, 11:30


🔵 عنوان مقاله
  Developing a Terminal App in Go with Bubble Tea

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به توضیح و راهنمایی یک اسکرین‌کست ۵۰ دقیقه‌ای‌ می‌پردازد که در آن فرآیند تولید یک ابزار خط فرمان برای یادداشت‌برداری با استفاده از زبان برنامه‌نویسی Go و کتابخانه‌های Bubble Tea و Lip Gloss از Charm، نمایش داده شده است. این اسکرین‌کست به بررسی چگونگی ساختار، طراحی و استایل دادن به این اپلیکیشن می‌پردازد و به توضیح مراحل توسعه ابزاری عملی در محیط خط فرمان اختصاص یافته است. Bubble Tea به عنوان یک کتابخانه برای مدیریت معماری و نماها استفاده می‌شود و Lip Gloss برای اعمال استایل و ظاهر بصری به کار می‌رود. این ترکیب ابزارها در Go فرصتی برای توسعه‌ دهندگان فراهم می‌کند تا اپلیکیشن‌های خط فرمان پیچیده و جذاب‌تری را توسعه دهند.

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


👑 @gopher_academy

Gopher Academy

21 Nov, 05:30


🔵 عنوان مقاله
Go sync.Once is Simple, But How Does It Work?

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته است به بررسی عمیق‌تر ساز و کار دستور "sync.Once" در زبان برنامه‌نویسی گو می‌پردازد. این دستور به عنوان یک ابزار همگام‌سازی در گو شناخته شده است و برای اجرای تنها یک بار یک تکه کد بسیار کارآمد است، اما پیچیدگی‌هایی نیز در آن نهفته است. مقاله توضیح می‌دهد که چگونه "sync.Once" با استفاده از مکانیزم‌های پیچیده‌تر مانند قفل‌ها و متغیرهای حالت برای تضمین اجرای منحصر به فرد آن عمل می‌کند. علاوه بر فرهم آوردن یک سطح بالایی از بررسی فنی، این مقاله نکاتی را درباره موارد کاربرد این دستور و همچنین مشکلات و محدودیت‌های احتمالی آن بیان می‌کند. برای مثال، بحث می‌شود که "sync.Once" باید با دقت زیادی استفاده شود تا از اختلالات در همزمانی جلوگیری کند. در نهایت، این مقاله ارزیابی کاملی از اهمیت درک درست این ابزار و استفاده مناسب از آن در برنامه‌های کاربردی مختلف ارائه می‌دهد.

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


👑 @gopher_academy

Gopher Academy

20 Nov, 11:30


🔵 عنوان مقاله
Run GitHub Actions Up to 2x Faster at Half the Cost

🟢 خلاصه مقاله:
مقاله‌ مورد نظر به معرفی سرویس "Blacksmith" می‌پردازد که به منظور اجرای سریع‌تر فعالیت‌های GitHub Actions با استفاده از پردازنده‌های مدرن مخصوص بازی‌های رایانه‌ای طراحی شده است. نصب و راه‌اندازی Blacksmith فقط با یک تغییر خط کد امکان‌پذیر است. بیش از 100 شرکت مانند Ashby، Superblocks و Slope از Blacksmith استفاده می‌کنند تا به توسعه‌دهندگان کمک کنند تا کدهای خود را سریع‌تر ادغام کنند. این سرویس در نتیجه باعث بهبود بازدهی و کارایی در فرآیند توسعه نرم‌افزار می‌شود.

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


👑 @gopher_academy

Gopher Academy

20 Nov, 05:30


🔵 عنوان مقاله
gosax: Libary for XML SAX (Simple API for XML) Parsing

🟢 خلاصه مقاله:
مقاله‌ای که شرح داده شده به بررسی کتابخانه‌ای برای تجزیه XML می‌پردازد که صرفاً برای خواندن (read-only) طراحی شده است. تمرکز اصلی این کتابخانه بر روی کارایی و آگاهی از مصرف حافظه است، به این معنا که تلاش شده تا با استفاده از تکنیک‌ها و الگوریتم‌های بهینه، حافظه کمتری اشغال شود و سرعت پردازش افزایش یابد. این ویژگی‌ها آن را برای استفاده در سیستم‌هایی که منابع محدود دارند یا نیاز به پردازش سریع داده‌ها دارند، مناسب می‌سازد. کتابخانه همچنین به گونه‌ای طراحی شده که با وجود محدودیت‌های خواندن فقط، کاربران قادر به دستیابی به عملکرد بهینه‌ای از تجزیه XML باشند. این افزایش کارایی و کاهش مصرف حافظه می‌تواند برای توسعه‌دهندگانی که با فایل‌های XML سنگین کار می‌کنند، بسیار مفید باشد.

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


👑 @gopher_academy

Gopher Academy

19 Nov, 11:30


🔵 عنوان مقاله
Polyglot Programming: TypeScript, Go, & Rust

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار می‌گیرد، یک دوره آموزشی ویدئویی تفصیلی را معرفی کرده که در آن نحوه برنامه‌نویسی همزمان با استفاده از سه زبان برنامه‌نویسی مورد بررسی قرار می‌گیرد. در این دوره، شرکت‌کنندگان یاد می‌گیرند که چگونه با بهره‌گیری از تکنیک‌های چند زبانی، نهایت بهره‌وری را کسب کنند. این امر از طریق پیاده‌سازی یک برنامه CLI که به طور کامل تست شده است، صورت می‌گیرد و در این فرآیند، تفاوت‌های میان زبان‌های برنامه‌نویسی مورد مقایسه قرار می‌گیرد. دوره به بینش‌های عمیقی در مورد چگونگی استفاده از توانایی‌های مختلف هر زبان برای حل مشکلات مختلف می‌پردازد، و در نهایت به توسعه دهندگان کمک می‌کند تا درک بهتری از انتخاب زبان مناسب برای پروژه‌های مختلف داشته باشند.

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


👑 @gopher_academy

Gopher Academy

19 Nov, 05:30


🔵 عنوان مقاله
Miniflux 2.2.3: Minimalist and Opinionated Feed Reader

🟢 خلاصه مقاله:
مقاله‌ای که اشاره کرده‌اید، به بررسی یک پروژه برنامه‌نویسی می‌پردازد که در آن از حداقل‌ها استفاده شده است. در این پروژه، به جای استفاده از ORM (Object-Relational Mapping) یا چارچوب‌های متداول برنامه‌نویسی، تنها از پایگاه داده Postgres استفاده شده است. همچنین، فقط از مقدار بسیار محدودی از JavaScript استفاده شده تا پیچیدگی‌های غیرضروری کاهش یابد. کد مربوط به این پروژه در یک مخزن GitHub قابل دسترس است. این انتخاب‌ها نشان دهنده تمایل به استفاده از تکنولوژی‌ها در ساده‌ترین شکل ممکن است تا کارایی بالا را بدون نیاز به اجزاء اضافی تضمین کند. این رویکرد در برنامه‌نویسی می‌تواند به بهبود عملکرد و سهولت نگهداری کمک کند.

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


👑 @gopher_academy

Gopher Academy

18 Nov, 11:30


🔵 عنوان مقاله
Yokai: A Modular, Observable Go Framework for Backend Apps

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته، یک چارچوب ماژولار برای ساخت برنامه‌های پس‌زمینه‌ی برنامه‌های کاربردی در زبان برنامه‌نویسی Go را معرفی می‌کند. این چارچوب با هدف افزایش کیفیت تولید و کاهش نیاز به نوشتن کدهای تکراری زیرساختی طراحی شده است. به طور خاص، این سیستم سه جنبه کلیدی را مدیریت می‌کند: قابلیت مشاهده (observability)، پیکربندی (configuration)، و وابستگی‌های درونی (dependency wiring).

بهره‌گیری از این چارچوب به توسعه‌دهندگان امکان می‌دهد تا بر توسعه ویژگی‌های مهم‌تر تمرکز کنند، زیرا نیاز به نوشتن و نگهداری کدهای پیچیده زیرساختی به شدت کاهش می‌یابد. همچنین، با استفاده از این چارچوب، ساختار نرم‌افزاری به گونه‌ای استاندارد و یکنواخت پیاده‌سازی می‌شود که این امر موجب تسهیل در نگهداری و توسعه‌ی نرم‌افزار در طولانی مدت می‌شود. استفاده از این چارچوب راهکاری جامع برای تقویت توانایی‌‌‌های توسعه دهندگان Go و بهبود کارایی برنامه‌های تولیدی است.

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


👑 @gopher_academy

Gopher Academy

18 Nov, 05:30


🔵 عنوان مقاله
🕒 When 1.1: Natural Language Date/Time Parser

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته، مربوط به یک کتابخانه برنامه‌نویسی است که به کاربران امکان می‌دهد تا زمان و تاریخ مورد نظر خود را از رشته‌های متنی مانند "امشب ساعت 11:10" یا "چهارشنبه آینده ساعت 4:20 صبح" استخراج کنند. این کتابخانه دارای قوانینی برای تشخیص و تبدیل تاریخ و زمان به زبان‌های انگلیسی، پرتغالی، چینی، روسی و هلندی است. این ویژگی کاربردی این کتابخانه را به ابزاری مفید و جهانی برای برنامه‌نویسان تبدیل می‌کند که به دنبال احتساب زمان‌های مختلف بر اساس عبارت‌های زبانی هستند. این کتابخانه به طور گسترده در پروژه‌های مختلف قابل استفاده است و فراهم آوردن این امکانات به صورت خودکار روند توسعه نرم‌افزاری را ساده‌تر و کارآمدتر می‌کند.

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


👑 @gopher_academy

Gopher Academy

17 Nov, 11:30


🔵 عنوان مقاله
Creating a 'Brainrot' Language Server in Go

🟢 خلاصه مقاله:
مقاله‌ در اینجا به موضوع نوعی اصطلاح نوظهور و مملو از واژگان و میم‌های نسل جدید با عنوان "brainrot" پرداخته است. این مقاله به صورت آموزشی است و در آن، جیتش به عنوان یک فرد خبره، نحوه ساخت یک سرور LSP (Language Server Protocol) را که بسیار عالی و موثر است، شرح می‌دهد. این سرور به منظور بهبود برنامه‌نویسی و توسعه نرم‌افزار به کار می‌رود. مقاله تلویحا اشاره می‌کند که خوانندگان می‌توانند از درس‌های یادگرفته شده در زمینه‌های دیگر و به روش‌های موثرتری استفاده کنند و نه فقط در حوزه تکنولوژی. با استفاده از زبان شوخ و مدرن، نویسنده سعی در جلب توجه و حفظ نگاه جذاب خواننده دارد.

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


👑 @gopher_academy

Gopher Academy

17 Nov, 05:30


🔵 عنوان مقاله
👀 wasmVision: A Way to Get Go-ing with Computer Vision

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی موتور پردازش بینایی کامپیوتری با کارایی بالا می‌پردازد، ابزار جدیدی به نام WebAssembly را معرفی می‌کند که قابلیت سفارشی‌سازی و توسعه دارد. این موتور توسط همان نبوغی که پروژه‌های TinyGo و GoCV را ایجاد کرده، توسعه یافته است. WebAssembly امکان تولید با استفاده از زبان‌های برنامه‌نویسی مختلف مانند TinyGo، Rust، و C را فراهم می‌آورد، به این ترتیب برنامه‌نویسان می‌توانند به شکل گسترده‌ای در سفارشی‌سازی و توسعه این موتور دخیل باشند. این قابلیت‌ها به موتور اجازه می‌دهد تا در زمینه‌های مختلف بینایی کامپیوتری به صورت اختصاصی و مؤثر کار کند، که می‌تواند در کاربردهای متنوع تکنولوژیکی تأثیر بگذارد.

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


👑 @gopher_academy

Gopher Academy

16 Nov, 11:30


🔵 عنوان مقاله
Reduce Your Apache Kafka Costs by 80+%

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی پیاده‌سازی سرویس Kafka بدون نیاز به دیسک‌های محلی یا هزینه‌های بین منطقه‌ای می‌پردازد، اشاره دارد که این ساختار امکان مقیاس‌پذیری خودکار بدون دخالت عملیاتی (zero ops) را فراهم می‌آورد. سرویس مذکور طوری طراحی شده است که مستقیماً در ابر مشتری و بدون نیاز به دسترسی‌های متقابل حساب‌های کاربری (no cross-account access) فعال می‌شود. این ویژگی‌ها نه تنها امنیت داده‌ها را تقویت می‌کند، بلکه با کاهش پیچیدگی‌های مربوط به مدیریت و نگهداری زیرساخت، به‌شدت به بهبود بهره‌وری و کاهش هزینه‌های عملیاتی کمک می‌کند. این سیستم ایده‌آل برای کسب‌وکارهایی است که به دنبال راهکاری آسان برای استقرار و مدیریت Kafka در مقیاس بزرگ هستند، ضمن اینکه نگرانی‌های مربوط به مدیریت زیرساخت فیزیکی را نیز از بین می‌برد.

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


👑 @gopher_academy

Gopher Academy

15 Nov, 12:30


به‌روزترین اخبار، تحلیل‌ها و مقالات تخصصی دنیای فناوری و موبایل را در کانال ما دنبال کنید! 📲💻 از معرفی گجت‌های جدید تا بررسی روندهای نرم‌افزاری،
اینجا همه چیز برای همراهی شما با دنیای تکنولوژی فراهم است. 🚀🔒

👇👇👇👇👇👇👇👇👇

🔔 کانال رسمی خبر ما: @omiddigiit
🛒 کانال رسمی فروش ما: @omiddigiit_ir
📸 اینستاگرام: @omiddigiit
🌐 وب‌سایت: OmidDigiit.ir
💬 ارتباط با فروش در تلگرام: @OmidDigiit_admin
💬 ارتباط با فروش در ایتا: @OmidDigiit_admin
🔗 عضویت در کانال‌های ما: کلیک کنید
🚀 همین حالا بپیوندید! تخفیف‌ها همراه با قرعه کشی و جدیدترین محصولات منتظرتان است.

Gopher Academy

15 Nov, 11:39


🔵 عنوان مقاله
html-to-markdown 2.1: Convert HTML to Markdown

🟢 خلاصه مقاله:
مقاله‌ای که مورد بحث قرار گرفته به بررسی ویژگی‌های نسخه دوم یک ابزار تجزیه HTML می‌پردازد. در این نسخه، از روش‌های پیچیده‌تری برای تجزیه HTML استفاده شده است، نه صرفاً استفاده از عبارات منظم (regexes)، که این امکان را می‌دهد تا با موقعیت‌های پیچیده و خاص بهتر کنار بیاید. این ابزار که کاملاً بازنویسی شده، دقت بالاتری را ارائه می‌دهد و می‌توان از آن هم به‌عنوان یک ابزار خط فرمان (CLI tool) و هم به‌عنوان کتابخانه‌ای در زبان برنامه‌نویسی Go استفاده کرد. همچنین به اشتراک‌گذاری کد این ابزار در GitHub اشاره شده است که این امکان را به توسعه‌دهندگان می‌دهد تا به کد این پروژه دسترسی داشته باشند و بتوانند در بهبود آن مشارکت کنند.

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


👑 @gopher_academy

Gopher Academy

15 Nov, 05:30


🔵 عنوان مقاله
Proposal: Add Region-Based Memory Management to Go

🟢 خلاصه مقاله:
در این مقاله به پیشنهاد جدیدی در زبان برنامه‌نویسی Go اشاره شده است که به دنبال ارائه جایگزینی برای پیشنهادی قدیمی است که به طور نامحدود معلق مانده بود. پیشنهاد قدیمی شامل افزودن حوزه‌های حافظه به Go بود، اما این پیشنهاد جدید بر مناطق خاصی متمرکز است. این پیشنهاد جدید بازخوردهای مختلفی از جامعه کاربران دریافت کرده است، شامل دیدگاه‌هایی هم در حمایت و هم در مخالفت با ایده. این توجه و بازخورد نشان‌دهنده تاثیر عمده‌ای است که این پیشنهاد می‌تواند بر بهبود مدیریت حافظه در Go داشته باشد، و میزان علاقه و دغدغه برنامه‌نویسان در خصوص بهینه‌سازی عملکرد و کارآمدی زبان.

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


👑 @gopher_academy

Gopher Academy

14 Nov, 13:05


🎯اگر علاقه مند به موضوعات👈🏻 بلاکچین/ارزهای دیجیتال/هوش مصنوعی/DeFi/NFTS هستید
👇 چنل زیر رو از دست ندید(با موضاعات متنوع و بروز)

📈 Bitcoin & Ethereum Trends
💰 Exciting Altcoins News
🔗 Cutting-Edge Blockchain Innovations
📊 Business Insights & Market Analysis
📜 Policy & Regulations Updates
🤖 AI: Artificial Intelligence Advancements
🎨 The World of NFTs
🌐 Decentralized Finance (DeFi) News



👑 @Blockchain_labdon

Gopher Academy

12 Nov, 17:18


Shaghayegh Rahmani

سلام و وقت بخیر خدمت دوستان و همراهان محترم🌸

متاسفانه با وجود تلاشهای زیادم موفق نشدم یک حمایت مالی از سمت دولت برای پروژهی ارزشمندِ "ترجمه خط میخی فارسی باستان با هوش مصنوعی" (پروژه EOPL) بگیرم.

من برای این پروژه تا اکنون، زحمت، انرژی و هزینهی بسیاری گذاشتم و بسیار سپاسگزار میشوم اگر میتونید از پروژهی من حمایت مالی کنید و یا اگر کسی رو میشناسید من رو به ایشون معرفی کنید.

در صورت تمایل، اسامی کسانی که از این پروژه حمایت مالی کنند رو در گیت هاب پروژه منتشر میکنم تا نامشان برای این پروژهی ارزشمند جاودان بمونه.

لینک گیت هاب پروژه:
https://lnkd.in/dhbnpxDh

راه ارتباطی با من:

ایمیل:
[email protected]

آیدی تلگرام:
@melanee2023

از لطف شما بسیار سپاسگزارم

شماره کارت:
6362 1411 1053 2067
بانک آینده به نام شقایق رحمانی
مربوط به حمایت مالی از پروژه EOPL

#حمایت_مالی #ترجمه_خط_میخی_فارسی_باستان #پروژه


👑 @labdon_academy

Gopher Academy

12 Nov, 05:30


🔵 عنوان مقاله
Optimizing and Visualizing Test Parallelism: Why More Cores Don't Speed Up Your Go Tests

🟢 خلاصه مقاله:
در این مقاله، روبرت به بحث در مورد استفاده از t.Parallel() برای اجرای آزمون‌ها به صورت موازی در برنامه‌نویسی می‌پردازد و توضیح می‌دهد که چگونه این روش می‌تواند گاهی اوقات به کند شدن آزمون‌ها منجر شود. وی ابزارها و تاکتیک‌هایی را معرفی می‌کند که به تجسم و بهینه‌سازی فرآیند آزمون کمک کرده و همچنین تشخیص می‌دهد که در چه زمانی انجام آزمون‌ها به صورت موازی سودمند است. این مطالب به توسعه‌دهندگان کمک می‌کند تا با درک بهتری نسبت به تاثیر و کارایی t.Parallel() در پروژه‌های خود، تصمیم‌گیری مناسب‌تری انجام دهند. این دانش به آن‌ها امکان می‌دهد که عملکرد تست‌های خود را بهینه‌سازی کنند و در نتیجه، توسعه نرم‌افزاری کارآمدتری داشته باشند.

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


👑 @gopher_academy

Gopher Academy

11 Nov, 11:30


🔵 عنوان مقاله
Go Beyond Limits with Golang, Rust, Docker & K8s

🟢 خلاصه مقاله:
مقاله مطرح شده به معرفی خدمات شرکت Ardan Labs می‌پردازد، که در زمینه مشاوره‌ی تکنولوژیکی تخصص دارد. این شرکت خدمات مشاوره‌ای در زمینه‌های برنامه‌نویسی با زبان‌های Go و Rust، همچنین در استفاده از تکنولوژی‌های Docker و Kubernetes ارائه می‌دهد. شرکت Ardan Labs به مشتریان خود کمک می‌کند تا سرعت توسعه‌ی نرم‌افزاری خود را افزایش دهند، معماری سیستم‌های خود را بهینه‌سازی کنند و بدهی‌های تکنولوژیکی را مدیریت کنند. این خدمات منجر به بهره‌وری بیشتر تیم‌ها و رسیدن به اهداف عالی می‌شود، زیرا آن‌ها می‌توانند با استفاده از تخصص گسترده‌ی شرکت، توانمندی‌های خود را توسعه دهند.

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


👑 @gopher_academy

Gopher Academy

11 Nov, 08:14


قانون هافستتر نسبتا ساده است: هر چیزی بیشتر از اون چیزی که انتظارش رو دارین طول می‌کشه؛ حتی اگر قانون هافستتر رو هم در موردش رعایت کرده باشین.

معمولا برنامه نویس‌ها موقع تخمین زدن زمان مورد نظر هر کاری به این قانون استناد می‌کنن تا تخمین بازتری بزنن؛ و بازم کار بیشتر طول می‌کشه.

#هکر #قوانین_هکرها #سفر #ویدئو

https://youtu.be/Ki3iirSd55U


👑 @labdon_academy

Gopher Academy

11 Nov, 05:30


🔵 عنوان مقاله
Run GitHub Actions Up to 2x Faster at Half the Cost

🟢 خلاصه مقاله:
مقاله مورد بررسی به ابزاری به نام Blacksmith اشاره دارد که با استفاده از آن می‌توان عملیات GitHub Actions را به طور قابل توجهی سریع‌تر انجام داد. این افزونه با به کارگیری پردازنده‌های مدرن مورد استفاده در سیستم‌های گیمینگ، عملیات مربوط به ادغام کد را تسریع می‌بخشد. یکی از ویژگی‌های قابل توجه Blacksmith این است که تنها با اعمال یک خط تغییر کد، می‌توان آن را به پروژه‌های موجود اضافه کرد. بیش از صد شرکت نظیر Ashby, Superblocks و Slope از این ابزار استفاده می‌کنند تا فرآیند توسعه نرم‌افزاری در تیم‌های خود را بهینه‌سازی و سرعت بخشیده و به توسعه‌دهندگان امکان دهند که کدهای خود را سریع‌تر ادغام کنند.

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


👑 @gopher_academy

Gopher Academy

10 Nov, 11:30


🔵 عنوان مقاله
vgt: The 'Missing Tool' for Visualizing Go Tests?

🟢 خلاصه مقاله:
مقاله مورد بحث به معرفی و تشریح یک ابزار مبتنی بر مرورگر پرداخته است که برای تجسم نتایج تست‌های زبان برنامه‌نویسی Go طراحی شده است. این ابزار برای درک بهتر پاراللیسم در اجرای تست‌ها و شناسایی تست‌هایی که زمان بیشتری لازم دارند، مفید توصیف شده است. با استفاده از این ابزار، توسعه‌دهندگان قادر خواهند بود به تحلیل دقیق‌تر و بصری نتایج تست‌ها دست پیدا کنند، که این می‌تواند در بهبود کیفیت نرم‌افزار و کاهش زمان توسعه مؤثر باشد. ابزار ارائه‌شده راه‌حلی جامع برای رصد و بهینه‌سازی رفتار تست‌ها در محیط‌های پیچیده و چندموازی ارائه می‌دهد و به کمک آن توسعه‌دهندگان می‌توانند نقاط ضعف برنامه‌ریزی شده در تست‌های خود را شناسایی و رفع نمایند.

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


👑 @gopher_academy

Gopher Academy

10 Nov, 05:30


🔵 عنوان مقاله
  The Business of Go

🟢 خلاصه مقاله:
این مقاله به بررسی نحوه‌ی رویکرد تیم Go به زبان برنامه‌نویسی گو و توسعه آن به عنوان یک محصول می‌پردازد، نه فقط یک زبان. تاکید این مقاله بر روی این است که چگونه Matt Boyle توصیه کرده به جای حضور در جلسات بالادستی، به سخنرانی‌های فنی توجه شود. به خصوص، جلسه‌ای که در آن Cameron شرکت داشت، نشان‌دهنده این موضوع است که گو همچنان در بازار رقابتی تکنولوژی‌ها که بسیاری از آن‌ها مستعد فرسودگی هستند، رشد و شکوفایی می‌کند. این مقاله روش‌هایی که تیم Go برای حفظ تازگی و کارآیی زبان در پیش گرفته‌است را بررسی می‌کند و به تفصیل وارد شرح و بسط فرایندهای درونی تیم و نحوه مدیریت آن به عنوان یک محصول می‌شود.

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


👑 @gopher_academy

Gopher Academy

09 Nov, 21:31


🥂امروز 10 november هست روزی که گولنگ به دنیا اومد🎂


🍻زادروزت خجسته باد

❤️Go
🔹High-level programming language

🫡Go is a statically typed, compiled high-level programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. It is syntactically similar to C, but also has memory safety, garbage collection, structural typing, and CSP-style concurrency. Wikipedia

🔻Designed by: Robert Griesemer, Rob Pike, Ken Thompson

🔻First appeared: November 10, 2009; 14 years ago

🔻Implementation language: Go, Assembly language (gc); C++ (gofrontend)

🔻License: 3-clause BSD + patent grant

🔻Memory management: Garbage collection

🔻OS: DragonFly BSD, FreeBSD, Linux, macOS, NetBSD, OpenBSD, Plan 9, Solaris, Windows

🔻Paradigm: Multi-paradigm: concurrent imperative, functional object-oriented


👑 @gopher_academy

Gopher Academy

09 Nov, 11:50


اینم گزینه خوبیه استفاده کنید👇🔻

https://github.com/emluque/golang-internals-resources


👑 @gopher_academy

Gopher Academy

09 Nov, 11:30


🔵 عنوان مقاله
Ranging Over Functions in Go 1.23

🟢 خلاصه مقاله:
این مقاله به بررسی ویژگی جدیدی به نام range-over در ورژن 1.23 می‌پردازد و چندین مثال از کاربردهای آن شامل ایتراتورهای خطی ساده، ایتراتورهای بازگشتی، و توضیح مختصری درباره تفاوت‌های ایتریشن نوع push و pull را ارائه می‌دهد. مقاله با بحث در مورد ایتراتورهای خطی ساده آغاز می‌شود که این امکان را به برنامه‌نویسان می‌دهد تا به صورت مستقیم و سریع توالی‌های داده‌ای را پیمایش کنند. سپس به ایتراتورهای بازگشتی پرداخته شده که کاربردی در ساختارهای داده‌ای پیچیده‌تر دارند. در نهایت، مقاله با بررسی مختصر رویکردهای push و pull در ایتریشن به پایان می‌رسد و تفاوت‌های استراتژیک و کارایی میان این دو روش را مورد بررسی قرار می‌دهد. این ویژگی جدید، که عملاً بینش‌هایی به بهبود کارایی و ساختار کد در برنامه‌نویسی می‌افزاید، به برنامه‌نویسان اجازه می‌دهد تا با استفاده از روش‌های جدید، کدهای خود را بهینه‌تر و خواناتر طراحی کنند.

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


👑 @gopher_academy

Gopher Academy

09 Nov, 06:50


کلی مثال متنوع داره برای یادگیری گولنگ🥂

👑 @gopher_academy

Gopher Academy

09 Nov, 06:28


Better Go Playground

https://goplay.tools

Better Go Playground with autocomplete and syntax highlight support.


👑 @gopher_academy

Gopher Academy

09 Nov, 05:30


🔵 عنوان مقاله
Constraints in Go

🟢 خلاصه مقاله:
در مقاله خود، جان سریال چهار قسمتی خود در مورد عمومی‌سازی‌ها (Generics) را با بررسی قرار دادن محدودیت‌ها بر روی نوع‌ها به پایان برد. این سریال که از معرفی ساده و پایه‌ای عمومی‌سازی‌ها آغاز شد، به تدریج به جنبه‌های پیچیده‌تری مانند محدودیت‌های نوعی پیش رفت که به توسعه‌دهندگان امکان می‌دهد تا نوع داده‌هایی که در الگوهای عمومی استفاده می‌شوند را به صورت محدود مشخص کنند. این امر در افزایش امنیت نوع و بهبود قابلیت خوانایی و نگهداری کد، نقش مهمی دارد. جان با استفاده از مثال‌هایی کدنویسی شده نشان داد که چگونه می‌توان با استفاده از محدودیت‌های نوعی، اطمینان حاصل کرد که کدهای عمومی‌سازی شده در شرایط مختلف به طور صحیح عمل می‌کنند و نحوه مدیریت خطاها را بهبود بخشید. این بینش‌های به دست آمده می‌تواند به توسعه‌دهندگان کمک کند تا برنامه‌هایی سازگارتر و مقاوم‌تر ایجاد کنند.

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


👑 @gopher_academy

Gopher Academy

08 Nov, 20:12


درخواست موقعیت شغلی دورکاری فرانت‌اند Vue.js

با درود

من به دنبال یک فرصت شغلی دورکاری به عنوان توسعه‌دهنده فرانت‌اند با تخصص در Vue.js هستم. با داشتن چندین سال تجربه در توسعه وب، مهارت‌های زیادی در طراحی رابط کاربری جذاب، بهینه‌سازی تجربه کاربری (UX) و پیاده‌سازی پروژه‌های مبتنی بر Vue.js کسب کرده‌ام.

من به دنبال شرکتی هستم که فرهنگ دورکاری را پذیرفته و امکان همکاری از راه دور را فراهم کند. هدف من مشارکت در تیم‌های پویا و نوآور است تا بتوانم مهارت‌هایم را در پروژه‌های چالش‌برانگیز به کار گیرم و به رشد و موفقیت پروژه‌ها کمک کنم.

ممنون می‌شوم اگر فرصت گفت‌وگویی برای بررسی همکاری بیشتر فراهم شود.

با تشکر،

برای ارتباط و دریافت رزومه به من پیام بدید

@arminsb1

Gopher Academy

08 Nov, 11:30


🔵 عنوان مقاله
Building Thread-Safe Abstractions in Java vs Go

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به مقایسه و ترجمه بخش‌هایی از پیاده‌سازی SimpleDB از زبان برنامه‌نویسی جاوا به گو می‌پردازد. این مقاله تفاوت‌های اصلی بین ابزارهای همزمانی و همگام‌سازی که هر دو زبان ارائه می‌دهند را بررسی می‌کند. در جاوا، مدل‌های همگام‌سازی بر پایه‌ی روش‌های thread-based synchronization مانند wait/notify و lock استفاده می‌شود، در حالی که گو از goroutines و channels برای اجرای همزمانی بهره می‌برد که راهکاری بسیار سبک‌تر و مدیریت شده‌تری را فراهم می‌کند. مقاله توضیح می‌دهد که چگونه تغییر زبان می‌تواند بر عملکرد و ساختار کد تأثیر بگذارد و چالش‌ها و مزیت‌های مربوط به استفاده از Go در مقایسه با Java را ارزیابی می‌کند. این بررسی می‌تواند به تصمیم‌گیری در خصوص انتخاب زبان مناسب برای پروژه‌های مختلف کمک کند.

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


👑 @gopher_academy

Gopher Academy

08 Nov, 05:30


🔵 عنوان مقاله
Checking the Top 10 Million Web Sites with Go

🟢 خلاصه مقاله:
مقاله‌ای با عنوان "27.6% از 10 میلیون سایت برتر مرده هستند" بیشتر به بررسی استفاده از زبان برنامه‌نویسی Go برای اسکریپینگ (استخراج داده) از وب‌سایت‌ها به صورت مقیاس‌پذیر و بازدهی بالا می‌پردازد. در این تحقیق، از ترکیب Redis با Go همراه با تجهیزات سخت‌افزاری قدرتمند استفاده شده است تا تنها در ده دقیقه، اطلاعات مربوط به وضعیت 10 میلیون سایت برتر اینترنت بررسی شود. این عملیات با سرعت تقریبی 17 هزار درخواست در ثانیه صورت گرفته و نتیجه آن نشان داده است که تقریباً 27.6 درصد از این سایت‌ها دیگر فعال نیستند. کدهای برنامه برای عموم منتشر شده‌اند تا دیگران نیز بتوانند از این روش در تحقیقات مشابه استفاده کنند یا آن را بهبود بخشند.

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


👑 @gopher_academy

Gopher Academy

07 Nov, 11:30


🔵 عنوان مقاله
jsony: A 'Blazing Fast', Safe JSON Serialization Library

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به بررسی یک رویکرد جدید در برنامه‌نویسی با زبان Go می‌پردازد که به طور خالص بدون استفاده از reflection اجرا شده و سرعت بیشتری نسبت به روش‌های استاندارد کتابخانه‌ها دارد. در این روش، تمام جزئیات باید با دقت فراوان طراحی شوند تا بتوان از افزایش عملکرد بهره برد. تاکید اصلی مقاله بر پیاده‌سازی‌هایی است که با دقت بالا در چینش و ساختار داده‌ها به افزایش سرعت و کارایی کمک می‌کند. این رویکرد، به دلیل عدم استفاده از reflection، نیازمند درک عمیق‌تر و دقت بیشتری در طراحی کد است، اما مزایای آن در بهبود عملکرد برنامه قابل توجه است.

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


👑 @gopher_academy

Gopher Academy

06 Nov, 11:30


🔵 عنوان مقاله
How to Compare Postgres EXPLAIN Plans & Tune Slow Queries

🟢 خلاصه مقاله:
در وبینار آتی برای توسعه‌دهندگان نرم‌افزار به بررسی علت کُند بودن پرس‌و‌جوهای PostgreSQL در برنامه‌های نوشته شده با زبان Go و راه‌های بهینه‌سازی آنها پرداخته می‌شود. استفاده از ابزار pganalyze، این امکان را فراهم می‌آورد تا با مقایسه‌ی برنامه‌های اجرایی و عیب‌یابی سناریوهای رایج مثل حلقه‌های تودرتوی ناکارآمد و نبود شاخص‌ها (indexes)، به شناسایی و رفع مشکلات کمک شود. این وبینار فرصتی است تا توسعه‌دهندگان بتوانند دانش خود را در زمینه‌ی تشخیص و تنظیم پرس‌و‌جوهای PostgreSQL بهبود ببخشند و در نتیجه، عملکرد برنامه‌های Go خود را ارتقاء دهند.

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


👑 @gopher_academy

Gopher Academy

06 Nov, 05:30


🔵 عنوان مقاله
Writing Secure Go Code

🟢 خلاصه مقاله:
این مقاله به بررسی منابع و تکنیک‌های مختلفی می‌پردازد که برای نوشتن برنامه‌های Go با دوام‌تر و ایمن‌تر ضروری است. یکی از توصیه‌های کلیدی مقاله بر ضرورت به‌روزرسانی مداوم نسخه‌های Go تاکید دارد تا بتوان از پیشرفت‌های امنیتی و ویژگی‌های جدید بهره برد. همچنین، استفاده از ابزارهای موجود در Go مانند 'go vet' برای بررسی کدها و یافتن اشکالات احتمالی پیش از اجرا، توصیه شده است. ابزارهای اسکن کد برای شناسایی آسیب‌پذیری‌های شناخته شده نیز معرفی شده‌اند، که می‌توانند به توسعه‌دهندگان کمک کنند تا نقاط ضعف امنیتی در برنامه‌های خود را شناسایی و برطرف سازند. مقاله بر اهمیت ترکیب این روش‌ها و منابع برای افزایش استحکام و امنیت برنامه‌های نوشته شده به زبان Go تاکید دارد.

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


👑 @gopher_academy

Gopher Academy

05 Nov, 11:30


🔵 عنوان مقاله
Toxiproxy 2.10: A TCP Proxy to Simulate 'Chaotic' Network Conditions

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی ابزار Toxiproxy اختصاص دارد که برای آزمایش قابلیت اطمینان و مدیریت خطاهای سیستم‌ها در شرایط بحرانی طراحی شده است. Toxiproxy یک پروژه طولانی‌مدت توسعه داده شده توسط Shopify است که می‌تواند در شبکه‌های زیربنایی که سیستم به آن وابسته است، مشکلاتی از قبیل تأخیر در انتقال داده‌ها، محدودیت پهنای باند و قطع اتصال‌ها پس از انتقال مقدار معینی از داده‌ها را شبیه‌سازی کند. هدف از این ابزار، تحت فشار قرار دادن سیستم‌ها و ارزیابی عملکرد آن‌ها در شرایط نامساعد شبکه است تا به مدیران سیستم امکان دهد سیاست‌های مقابله‌ای و بهبود بخشیده‌ای را در پردازش خطاها و مسائل مربوط به قابلیت اطمینان برنامه‌ریزی کنند. Toxiproxy به عنوان ابزاری مفید و کاربردی برای توسعه‌دهندگان نرم‌افزار و مدیران شبکه قابل استفاده است، تا بتوانند به طور م wirام سیستم‌های خود را در برابر پیچیدگی‌ها و اختلالات احتمالی در شبکه آماده سازند.

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


👑 @gopher_academy

Gopher Academy

05 Nov, 06:06


💬 دوستان عزیز، درود!

برای ارتقای محتوای کانال و به‌اشتراک‌گذاری اطلاعات مفید و بروز، از شما دعوت می‌کنیم هرگونه مطلب، خبر، آموزش، یا تجربه مرتبط با موضوعات بلاکچین، هوش مصنوعی ،مهندسی نرم‌افزار ، لینوکس و دوآپس که فکر می‌کنید می‌تواند به دیگران کمک کند، برای ما ارسال کنید.

این اطلاعات شامل لینک‌ها، مقالات، تجربیات شخصی و هر نکته کاربردی و ارزشمند دیگری می‌شود. 🙏

📩 لطفاً مطالب خود را از طریق ای دی زیر به من ارسال کنید👇

@mrbardia72

از همکاری شما دوستان سپاسگذارم! ❤️

Gopher Academy

05 Nov, 05:57


1. `panic`:

- یک خطای runtime ایجاد می‌کند و اجرای برنامه را متوقف می‌کند.
- قبل از خروج، توابع و تأخیرهای defer اجرا می‌شوند.
- مناسب برای مدیریت خطاهای جدی و ناپیش‌بینی‌شده که باید با پیام و گزارش خطا همراه باشند.

2. `os.Exit`:

- بلافاصله برنامه را با کد خروج تعیین‌شده متوقف می‌کند.
- از اجرای توابع defer صرف‌نظر می‌کند، بنابراین منابع ممکن است آزاد نشوند.
- مناسب برای خروج صریح بدون نیاز به اجرای cleanup.


👑 @gopher_academy

Gopher Academy

05 Nov, 05:53


panic signals "the programmer has made a fundamental mistake and execution cannot continue safely",

os. Exit signals "the programmer has decided that the process should terminate here"


👑 @gopher_academy

Gopher Academy

05 Nov, 05:30


🔵 عنوان مقاله
GoToSocial 0.17.0: A Go-Powered ActivityPub Server

🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی ActivityPub، یک استاندارد قابل توزیع برای شبکه‌های اجتماعی باز مانند Mastodon می‌پردازد. این استاندارد امکان به اشتراک‌گذاری و تعامل بین پلتفرم‌های مختلف بدون نیاز به سرور مرکزی را فراهم می‌کند. اگرچه مقاله مستقیماً در مورد شبکه‌ی Mastodon نیست، اما به سازگاری آن با API Mastodon اشاره می‌کند، به طوری که می‌توان با استفاده از برنامه‌های مشتری Mastodon با این سرویس ارتباط برقرار کرد. این ویژگی به کاربران امکان می‌دهد که تجربیاتی پیوسته بین برنامه‌های مختلف لذت ببرند و با اکوسیستم گسترده‌ای از کاربران از طرف دیگر پلتفرم‌ها به اشتراک‌گذاری اطلاعات پردازند. به این ترتیب، ActivityPub به عنصری کلیدی در ترویج همکاری و تبادل آزاد اطلاعات در میان جامعه‌ی دیجیتالی تبدیل شده است.

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


👑 @gopher_academy

Gopher Academy

04 Nov, 11:54


🔸بهینه سازی با {}struct در زبان Go🔸

کاهش سربار استفاده از حافظه در سناریو های خاص با استفاده از {}struct در زبان Go

لینک مقاله 👉

https://devdrug.com/article/optimization-with-empty-struct-in-go-language


👑 @gopher_academy

Gopher Academy

04 Nov, 11:30


🔵 عنوان مقاله
Automate Complex Workflows Across Clouds & Data Platforms

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به بررسی سیستم Kestra می‌پردازد که یک پلتفرم خودکارسازی قدرتمند است و قابلیت مقیاس‌پذیری تا میلیون‌ها اجرا را دارد. این سیستم به طور خاص برای اتوماتیک کردن فرآیندها در محیط‌‌های مختلف ابری نظیر AWS، GCP و Snowflake طراحی شده است. Kestra با قابلیت اطمینان بالا و بدون درز کار می‌کند، این بدان معناست که می‌تواند به صورت مؤثری فرآیندهای کسب‌وکار را در سطح وسیعی از پلتفرم‌های مختلف به خودکارسازی برساند. این ویژگی‌ها کمک می‌کند که سازمان‌ها بتوانند بهره‌وری را افزایش دهند و هزینه‌های عملیاتی خود را کاهش دهند، در حالی که از پیچیدگی‌های فنی که معمولاً با خودکارسازی فرآیندها همراه است، می‌کاهند. Kestra این امکانات را فراهم می‌آورد تا سازمان‌ها با اطمینان بیشتری به سوی دیجیتالی شدن پیش بروند.

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


👑 @gopher_academy

Gopher Academy

04 Nov, 05:30


🔵 عنوان مقاله
Go Blueprint: Create New Go Projects with a Defined Structure

🟢 خلاصه مقاله:
این مقاله به معرفی ابزار جدیدی برای پیاده‌سازی پروژه‌های جدید در زبان برنامه‌نویسی Go می‌پردازد، که به کاربران امکان می‌دهد به سرعت یک برنامه با ساختار پرونده‌ای پیش‌تعریف‌شده و تولید کد خودکار راه‌اندازی کنند. این ابزار به کاربران اجازه می‌دهد تا اپلیکیشن‌هایی بر پایه چارچوب‌های معروفی مانند Chi، Gin و Fiber و دیگر فریم‌ورک‌ها بسازند. همچنین، پشتیبانی از پایگاه‌های داده و ابزارهای اختیاری مانند HTMX و Tailwind CSS را فراهم می‌کند. اطلاعات بیشتر و منابع مرتبط در مخزن GitHub قرار دارند. این ابزار یکی از ابزارهای رو به افزایشی است که توسعه‌دهندگان را قادر می‌سازد تا بدون صرف زمان زیاد برای پیکربندی‌های اولیه، سریعاً پروژه‌های Go خود را آغاز کنند.

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


👑 @gopher_academy

Gopher Academy

03 Nov, 11:30


🔵 عنوان مقاله
Gomponents 1.0: HTML View Components in Pure Go

🟢 خلاصه مقاله:
مقاله‌ای که به آن اشاره شده، درباره کتابخانه کامپوننت HTML به نام v1.0 است که برای پروژه‌های زبان برنامه‌نویسی Go طراحی شده است. این کتابخانه پس از سه سال به نسخه ثابت و بدون وابستگی به دیگر مؤلفه‌ها رسیده است. استفاده از این کتابخانه در پروژه‌ها به توسعه‌دهندگان اجازه می‌دهد تا از اجزای HTML به طور مؤثری در برنامه‌های خود استفاده کنند. علاوه بر این، یک نمونه برنامه نیز برای بررسی موجود است که می‌تواند به کاربران کمک کند تا عملکرد و کاربرد کتابخانه را در عمل مشاهده کنند. این ابزار به افزایش بهره‌وری و کارایی در توسعه نرم‌افزار کمک خواهد کرد.

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


👑 @gopher_academy

Gopher Academy

03 Nov, 05:30


🔵 عنوان مقاله
'When I Told 4,091 Writers They Weren’t Getting Paid..'

🟢 خلاصه مقاله:
مهندسی در یکی از پلتفرم‌های محبوب نویسندگی که دارای پیغام‌های پرداخت است، داستانی از یک اشکال نرم‌افزاری خفیف یا وضعیت مسابقه‌ای (race condition) را به اشتراک گذاشته که منجر به دریافت خبرهای ناخواسته بد توسط تعداد زیادی از نویسندگان شد. این موقعیت‌های نرم‌افزاری می‌توانند به طور غیرمنتظره‌ای در محل‌های مختلفی ظاهر شوند، و بنابراین شناسایی آن‌ها و درک عواقب ممکن آن اهمیت دارد. آگاهی از چنین اتفاقاتی و داشتن دانش برای تشخیص و حل این موارد می‌تواند به جلوگیری از زیان‌های بیشتر به کاربران و کسب‌وکارها کمک کند. درک و تحلیل این مثال‌ها برای هر مهندس نرم‌افزاری ضروری است تا از تکرار این خطاها در آینده پرهیز شود.

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


👑 @gopher_academy

Gopher Academy

02 Nov, 11:30


🔵 عنوان مقاله
Greenmask: Postgres Data Masking and Obfuscation Tool

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته در مورد ابزاری است که با زبان برنامه‌نویسی Go نوشته شده است. این ابزار برای خروجی گرفتن از پایگاه داده‌های Postgres و مخفی‌سازی داده‌ها به شکل تعیین‌شده (deterministic) طراحی شده است. منبعی که برنامه در آن موجود است، GitHub repo، به کاربران امکان می‌دهد تا کد ابزار را مشاهده و در صورت نیاز تغییر دهند. مخفی‌سازی داده‌ها به این صورت است که اطلاعات حساس در دیتابیس در حین خروجی گرفتن تغییر می‌کنند تا از افشای اطلاعات جلوگیری شود، اما به نحوی که برای توسعه‌دهندگان قابل استفاده باقی بماند. این عملکرد برای سازمان‌هایی که به حفظ حریم خصوصی داده‌ها ملزم هستند بسیار مفید است.

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


👑 @gopher_academy

Gopher Academy

02 Nov, 10:57


در زبان برنامه‌نویسی Go، خطای nilness: nil dereference in field selection به این معنی است که شما سعی کرده‌اید به فیلدی از یک متغیر اشاره‌گری دسترسی پیدا کنید که مقدار آن nil است. این خطا معمولاً زمانی رخ می‌دهد که به یک فیلد یا متد از یک اشاره‌گر nil دسترسی پیدا کنید، و Go به طور ایستا (در زمان کامپایل) شناسایی کرده است که ممکن است این دسترسی منجر به panic شود.

برای رفع این خطا، باید مطمئن شوید که قبل از دسترسی به فیلدها یا متدهای اشاره‌گر، بررسی کنید که مقدار اشاره‌گر nil نباشد.


👑 @gopher_academy

Gopher Academy

02 Nov, 05:30


🔵 عنوان مقاله
  Russ Cox on Passing the Torch

🟢 خلاصه مقاله:
راس کاکس، سرپرست سابق تکنولوژی زبان برنامه‌نویسی Go، به تازگی در پادکست Go Time حضور یافت تا در مورد فرآیند کناره‌گیری خود و واگذاری مسئولیت‌های خود به رهبر جدید، آستین کلمنتس، صحبت کند. آستین کلمنتس نیز در این پادکست ظاهر شده است، همچنین چری موی که برخی از مسئولیت‌های پیشین آستین را به عهده گرفته نیز حضور داشته است. راس در یک پست جداگانه نیز در مورد این تغییرات بیشتر توضیح داده است. اگرچه پادکست یک ساعته است، اما متن کامل آن نیز موجود است. این بحث‌ها نه تنها به انتقال رهبری تمرکز دارد، بلکه به بخش‌هایی از فرایند توسعه Go و چگونگی تاثیر آن بر جامعه برنامه‌نویسان پرداخته است.

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


👑 @gopher_academy

Gopher Academy

01 Nov, 11:30


🔵 عنوان مقاله
Watermill: Library for Building Event-Driven Apps

🟢 خلاصه مقاله:
این مقاله به بررسی کتابخانه‌ای برای کار با جریان‌های پیام در برنامه‌های مبتنی بر رویداد می‌پردازد که امکان پشتیبانی از کانال‌های مختلفی مانند Kafka، RabbitMQ، HTTP و حتی binlogs MySQL را فراهم می‌سازد. این کتابخانه ابزاری قدرتمند برای توسعه‌دهندگان نرم‌افزار است تا بتوانند به طور موثرتری اپلیکیشن‌های درون‌ران و پاسخ‌گو به رویدادها را بسازند. کاربرد این کتابخانه شامل برقراری ارتباط بین کامپوننت‌ها و سیستم‌ها از طریق جریان‌های پیام است که امکان پردازش و تحلیل داده‌ها را در زمان واقعی فراهم می‌آورد. دستیابی به این شیوه از ارتباط درون سرویسی این امکان را به توسعه‌دهندگان می‌دهد که پیچیدگی‌های مدیریت ارتباطات و جریان داده‌ها را بهینه‌سازی کنند و بتوانند رابط‌کاربری‌های بیشتر متکی بر اینتراکتیویتی و داده‌ی مداوم را ارائه دهند. در نهایت، این کتابخانه به فرآیند توسعه اپلیکیشن‌های پیچیده‌تر و در عین حال کارآمدتر کمک شایانی می‌کند.

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


👑 @gopher_academy

Gopher Academy

01 Nov, 10:25


وضعیت این روزها.....

👑 @gopher_academy

Gopher Academy

01 Nov, 05:30


🔵 عنوان مقاله
Giu 0.9: A Dear ImGui-Based Cross Platform GUI Framework

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته است به توضیح و بررسی نحوه ساخت برنامه‌های کاربردی گرافیکی (GUI) با استفاده از زبان برنامه‌نویسی Go بر بستر کتابخانه Dear ImGui پرداخته است. نسخه 0.9 این فریمورک به عنوان نسخه‌ای که تغییرات عمده‌ای ندارد شناخته شده، اما قابلیت‌های فریمورک را تکمیل کرده و مستندات بیشتری به آن افزوده شده است. این افزایش مستندات به توسعه‌دهندگان کمک می‌کند تا با استفاده از این ابزار بهترین بهره‌برداری را داشته باشند و بتوانند برنامه‌های کاربردی GUI قدرتمند و کارآمدی را توسعه دهند.

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


👑 @gopher_academy

Gopher Academy

31 Oct, 11:30


🔵 عنوان مقاله
go-pretty: Pretty Print Tables, Lists and Text on the Terminal

🟢 خلاصه مقاله:
مقاله‌ای که در اختیار شما قرار دارد به بررسی ابزارهای مختلفی می‌پردازد که به زیباسازی خروجی کنسول در قالب جداول، لیست‌ها، نوارهای پیشرفت، متن و غیره می‌پردازند. تمرکز اصلی این ابزارها بر روی قابلیت سفارشی‌سازی است. این سفارشی‌سازی به کاربران امکان می‌دهد تا ظاهر خروجی‌ها را بر اساس نیازها و سلایق شخصی خود تنظیم کنند. از جمله مزایای استفاده از این ابزارها، بهبود خوانایی و جذابیت ویژوال خروجی‌های کنسولی است، که می‌تواند در فهم بهتر و سریع‌تر داده‌ها به کاربران کمک کند. این ابزارها، به خصوص در محیط‌های توسعه نرم‌افزار و آنالیز داده، کاربردی ارزشمند دارند. این مقاله با ارائه مثال‌های متنوع، نحوه به کارگیری و پیاده‌سازی این ابزارها را با جزئیات و به صورت گام به گام توضیح می‌دهد.

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


👑 @gopher_academy

Gopher Academy

31 Oct, 05:30


🔵 عنوان مقاله
Kamal 2: Thou Need Not PaaS

🟢 خلاصه مقاله:
مقاله به بررسی ابزار استقرار بر اساس کانتینر به نام Kamal از شرکت 37Signals می‌پردازد، شرکتی که بیشتر به خاطر توسعه Ruby on Rails شناخته شده است. اگرچه Kamal زبان‌ناپذیر است و از زبان‌های برنامه‌نویسی مختلف پشتیبانی می‌کند. این مقاله به توضیح و نمایش استقرار یک برنامه ساده به زبان Go با استفاده از یک دموی اسکرین‌کست می‌پردازد و سپس به مثالی با زبان Ruby می‌رسد. Kamal به عنوان یک گزینه جدید و قابل اعتماد برای استقرار برنامه‌های Go در سرورهای مدیریت‌ شده توسط خود معرفی شده است که می‌تواند راه برای استفاده گسترده‌تر از آن را هموار سازد. ابزار مذکور می‌تواند تحولی در استقرار سریع و آسان نرم‌افزارها بر روی پلتفرم‌های مختلف به ارمغان بیاورد.

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


👑 @gopher_academy

Gopher Academy

30 Oct, 11:30


🔵 عنوان مقاله
Sidekick: Bare Metal to Production Ready in Minutes

🟢 خلاصه مقاله:
مقاله‌ای که بررسی شده به معرفی ابزار جدیدی به نام "Sidekick" می‌پردازد که با الهام از "Kamal" ساخته شده و به زبان برنامه‌نویسی Go نوشته شده است. هدف اصلی Sidekick این است که فرآیند استقرار نرم‌افزارها را بر روی سرورهای خصوصی به صورتی ساده و با استفاده از تنها یک دستور، مشابه به سرویس Fly.io، فراهم آورد. نویسنده مقاله هنوز فرصتی برای امتحان این ابزار نداشته‌ است اما علاقه‌مند است که به زودی آن را بیازماید. از انجا که Sidekick بر اساس تجربیات و مفاهیم مشابه به Kamal طراحی شده، این ابزار می‌تواند راه‌حلی نوین و قدرتمند برای توسعه‌دهندگان و متخصصان IT در بهبود و تسهیل روند استقرار و مدیریت برنامه‌ها بر روی وی‌پی‌اس‌ها باشد.

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


👑 @gopher_academy

Gopher Academy

30 Oct, 05:30


🔵 عنوان مقاله
Writing a Circuit Breaker in Go

🟢 خلاصه مقاله:
این مقاله به بررسی سازوکار Circuit Breaker در مدیریت خطاها در سیستم‌های محاسباتی می‌پردازد. Circuit Breaker یک روش موثر برای جلوگیری از تکرار اشتباهاتی است که ممکن است به صورت پیوسته رخ دهند و باعث تشدید مشکلات سیستم شوند. این سازوکار، شبیه به کلید برق در ساختمان عمل می‌کند؛ در صورت بروز خطا به طور خودکار عملیات مورد نظر را قطع می‌کند تا از آسیب‌های بیشتر جلوگیری کند و با یک دوره زمانی تعیین شده به نام دوره خنک شدن، به سیستم این امکان را می‌دهد تا بازیابی کند. این رویکرد به کاهش آسیب‌پذیری سیستم کمک کرده و به بهبود ثبات و کارایی آن در برابر شکست‌های احتمالی منجر می‌شود. این تکنیک، به ویژه در محیط‌هایی که دارای وابستگی‌های متعدد و پیچیده هستند، حائز اهمیت است.

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


👑 @gopher_academy

Gopher Academy

29 Oct, 12:14


✍️Farshad AkbariFarshad Akbari



💡 آشنایی با کتابخانه sync در Go و کاربردهای آن برای مدیریت همزمانی

در برنامه‌نویسی Go، وقتی چند گوروتین همزمان اجرا می‌شوند، مدیریت همزمانی و دسترسی به منابع مشترک اهمیت زیادی پیدا می‌کند. کتابخانه sync در Go ابزارهایی فراهم می‌کند که به توسعه‌دهندگان کمک می‌کند تا این مدیریت را به سادگی و بدون بروز خطا انجام دهند. در ادامه به سه ابزار اصلی این کتابخانه اشاره می‌کنم:

1️⃣ Mutex (قفل متقابل)

Mutex برای جلوگیری از دسترسی همزمان گوروتین‌ها به یک منبع مشترک استفاده می‌شود. مثلا اگر چند گوروتین بخواهند به طور همزمان یک متغیر را تغییر دهند، با استفاده از Mutex می‌توانیم قفل دسترسی به این منبع را به یک گوروتین محدود کنیم.

2️⃣ WaitGroup (انتظار برای پایان گوروتین‌ها)

وقتی چند گوروتین همزمان اجرا می‌شوند و می‌خواهیم تا پایان کار همه‌ی آن‌ها صبر کنیم، WaitGroup کاربرد دارد. این ابزار به ما اجازه می‌دهد که منتظر بمانیم تا همه گوروتین‌ها کارشان را تمام کنند.

3️⃣ Once (اجرا فقط یک‌بار)

با استفاده از Once، می‌توانیم اطمینان حاصل کنیم که یک تابع فقط یک بار اجرا شود، حتی اگر چند گوروتین به طور همزمان آن را صدا بزنند. این ابزار برای مواردی مثل مقداردهی اولیه بسیار کاربردی است.


🔍 جمع‌بندی

کتابخانه sync به توسعه‌دهندگان Go کمک می‌کند تا همزمانی را به خوبی مدیریت کنند و از بروز مشکلاتی مثل شرایط رقابتی جلوگیری کنند. استفاده درست از این ابزارها باعث افزایش کارایی و ایمنی برنامه‌های چندوظیفه‌ای می‌شود.

👑 @gopher_academy

Gopher Academy

28 Oct, 16:13


تأثیر دانش زبان انگلیسی در دنیای برنامه‌نویسی از نگاه موسسه زبان آفاق

https://www.zoomit.ir/pr/428701-afagh-lc/


👑 @labdon_academy

Gopher Academy

28 Oct, 15:43


برای درک بهتر از مکانیزم داخلی context.WithTimeout و context.WithDeadline، باید به نحوه‌ی پیاده‌سازی آن‌ها در کتابخانه‌ی context و چگونگی استفاده از تایمرها در Go توجه کنیم.


این دو تابع هر دو بر اساس context پایه‌ای ساخته می‌شوند، اما تفاوت اصلی آن‌ها در نحوه‌ی مدیریت زمان و استفاده از تایمرهای داخلی است.

### 1. ساختار Context
هر دو WithTimeout و WithDeadline با ایجاد یک derived context (مشتق‌شده از context اصلی) کار می‌کنند. این context جدید مشابه context اصلی است، اما به جای آن که تا انتهای عمر برنامه معتبر باشد، در یک زمان مشخص منقضی می‌شود. مکانیزم داخلی به این صورت است:

- **WithTimeout**:
این تابع مدت زمانی به عنوان ورودی می‌گیرد و به کمک آن یک تایمر تنظیم می‌کند. تایمر از زمان فعلی (time.Now()) شروع به شمارش می‌کند و بعد از اتمام مدت زمان مشخص شده، context منقضی می‌شود.
- تایمر در واقع یک goroutine راه‌اندازی می‌کند که بعد از گذشت زمان، یک سیگنال خاتمه (Done) ارسال می‌کند.

- **WithDeadline**:
مشابه WithTimeout است، اما به جای این که مدت زمان از حالا محاسبه شود، زمانی ثابت برای خاتمه داده می‌شود. Goroutine مشابهی برای زمان دقیق پایان شروع می‌شود. این تابع می‌تواند مفید باشد در مواقعی که باید عملیات حتماً قبل از یک زمان خاص خاتمه یابد.
مکانیزم استفاده از تایمرهاایمرها**
در هر دو روش، تایمرها با استفاده از time.AfterFunc یا time.NewTimer در Go پیاده‌سازی می‌شوند. تایمر به‌گونه‌ای عمل می‌کند که وقتی زمان مشخص شده به پایان برسد، کانال Done فعال شده و پیام خاتمه ارسال می‌شود. در این زمان، عملیات مرتبط باید متوقف شود و با بررسی کانال Done از ادامه‌ی کار بازماند.
نحوه‌ی لغو Contextontext**
هر دو تابع به همراه یک تابع cancel بازگردانده می‌شوند. این تابع cancel به شما اجازه می‌دهد به صورت دستی context را قبل از پایان زمان آن لغو کنید. وقتی cancel فراخوانی شود، تایمر مربوط به context متوقف شده و کانال Done نیز بسته می‌شود. این مکانیزم به شما کمک می‌کند تا منابع استفاده‌شده توسط تایمرها را پاک‌سازی کنید و از اجرای بی‌مورد جلوگیری نمایید.
نحوه‌ی بررسی انقضای Contextontext**
هنگامی که عملیات در جریان است، شما می‌توانید با استفاده از ctx.Done() بررسی کنید که آیا context منقضی شده یا خیر. این تابع یک کانال بازمی‌گرداند که در صورت انقضای context، بسته می‌شود و به goroutine‌ها سیگنال می‌دهد که عملیات فعلی را خاتمه دهند. این سیگنال‌دهی از طریق select یا بررسی مستقیم کانال انجام می‌شود.

### 5. **پیاده‌سازی داخلی WithTimeout به کمک WithDeadline**
در کد داخلی کتابخانه context، پیاده‌سازی WithTimeout به صورت مستقیم از WithDeadline استفاده می‌کند:

func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
return WithDeadline(parent, time.Now().Add(timeout))
}

این تابع فقط زمان حال (time.Now()) را به timeout اضافه کرده و آن را به WithDeadline ارسال می‌کند. به همین دلیل، WithTimeout در واقع یک shortcut برای WithDeadline است.

### 6. **زمان‌بندی دقیق‌تر با WithDeadline**
در WithDeadline شما می‌توانید یک زمان دقیق برای انقضا مشخص کنید. مثلاً می‌توانید تعیین کنید که context در ساعت مشخصی منقضی شود، بدون توجه به این که در حال حاضر چقدر زمان باقی‌مانده است. این ویژگی برای مواردی مفید است که نیاز دارید چندین عملیات به طور همزمان و هماهنگ با یک deadline خاص به پایان برسند.

### نتیجه‌گیری:
- WithTimeout برای محدود کردن مدت زمان یک عملیات مفید است.
- WithDeadline برای تعیین یک زمان دقیق (مانند یک deadline واقعی) استفاده می‌شود.
- هر دو تابع مکانیزم‌های مشابهی از تایمرهای Go استفاده می‌کنند و هر دو به کمک goroutine‌ها برای ارسال سیگنال خاتمه عمل می‌کنند.


👑 @gopher_academy

Gopher Academy

28 Oct, 15:28


کلیدی‌ترین تفاوت‌های بین context.WithTimeout و context.WithDeadline در نحوه‌ی مدیریت زمان‌بندی و خاتمه‌ی contextها در Go است:

### 1. مبنای زمان‌بندی
- **context.WithTimeout**:
یک بازه زمانی ثابت مشخص می‌کند. Context پس از گذشت مدت زمان مشخص از زمان فراخوانی این تابع، منقضی می‌شود.
- مثال: اگر context.WithTimeout(ctx, 5*time.Second) فراخوانی شود، context پس از ۵ ثانیه منقضی می‌شود.
- **context.WithDeadline**:
یک زمان مشخص در آینده تعیین می‌کند. Context دقیقا در لحظه‌ی مشخص شده در deadline منقضی می‌شود.
- مثال: اگر context.WithDeadline(ctx, time.Now().Add(5*time.Second)) فراخوانی شود، context در لحظه‌ی دقیق مشخص شده (۵ ثانیه بعد) منقضی می‌شود.
مورد استفادهستفاده**
- **WithTimeout**:
زمانی که مدت زمان اجرای یک عملیات برای شما مهم است و می‌خواهید پس از مدت مشخصی عملیات خاتمه یابد، از WithTimeout استفاده می‌شود.
- **WithDeadline**:
زمانی که به یک deadline دقیق نیاز دارید (مانند زمانی که می‌خواهید قبل از یک لحظه‌ی دقیق، عملیاتی خاتمه یابد)، از WithDeadline استفاده پیاده‌سازی داخWithTimeout **WithTimeout** به عنوان یک shortcut برای WithDeadline عمل می‌کند و در واقع از WithDeadline استفاده می‌کند تا زمانی که مدت مشخص شده به پایان برسد. به این معنا که WithTimeout(ctx, d) معادل WithDeadline(ctx, time.Now().Add(d)) است.

### 4. **انعطاف‌پذیری بیشتر WithDeadline**
- در مواردی که زمان دقیق (مربوط به یک deadline خاص) برای شما مهم است، WithDeadline انعطاف بیشتری فراهم می‌کند، زیرا می‌توانید زمان مشخصی را به عنوان نقطکاربردهای رایج. **کاربردهای رایج**
- **context.WithTimeout** معمولاً برای تعیین یک بازه زمانی ثابت برای خاتمه دادن به عملیاتی مانند درcontext.WithDeadline**context.WithDeadline** اغلب در سیستم‌های توزیع شده یا عملیاتی که یک زمان‌بندی خاص برای اتمام دارند، کاربرد دارد.

### مثال‌ها:
// WithTimeout: منقضی شدن پس از 5 ثانیه
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

// WithDeadline: منقضی شدن در یک زمان دقیق
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(5*time.Second))
defer cancel()

در نهایت، انتخاب بین این دو تابع بستگی به نوع نیاز شما به زمان‌بندی و مدیریت زمان اجرای عملیات‌ها دارد.



👑 @gopher_academy

Gopher Academy

28 Oct, 14:24


آشنایی با Garbage Collector در Go: مدیریت حافظه کارآمد برای نرم‌افزار‌ها با کارایی بالا - قسمت ۲

میتوانید قسمت ۱ را در پست قبلی مطالعه کنید. ادامه:
- جمع آوری زباله قابل تنظیم:
یکی از ویژگی های برجسته Go، جمع آوری زباله قابل تنظیم آن است. توسعه‌دهندگان می‌توانند فرکانس GC را با استفاده از متغیر محیطی «GOGC» تنظیم کنند، که تعداد دفعات کار جمع‌آور زباله را نسبت به رشد پشته کنترل می‌کند.
مقدار پیش فرض 100 است، به این معنی که GC پس از دو برابر شدن اندازه پشته فعال می شود. افزایش مقدار «GOGC» فرکانس جمع‌آوری زباله را کاهش می‌دهد، مصرف حافظه را با وقفه‌های کمتر عوض می‌کند، در حالی که کاهش آن باعث می‌شود GC بیشتر اجرا شود و کنترل دقیق‌تری بر استفاده از حافظه تضمین می‌کند.

export GOGC=200 // رشد پشته را افزایش می دهد و باعث می شود GC کمتر اجرا شود

- Escape Analysis برای تخصیص پشته در مقابل هیپ:
کامپایلر Go از تحلیل گریز استفاده می‌کند، که تعیین می‌کند متغیرها می‌توانند در کدام ساختار داده stack یا heap تخصیص داده شوند. متغیرهایی که از محدوده خود "فرار" نمی کنند (مانند متغیرهای محلی در یک تابع) به صورت پشته ای تخصیص داده می شوند که سریعتر است و از جمع آوری زباله به طور کلی جلوگیری می کند. از سوی دیگر، تخصیص هیپ توسط جمع کننده زباله ردیابی می شود و تحلیل فرار استفاده غیر ضروری از هیپ را به حداقل می رساند و مدیریت حافظه را برای بسیاری از برنامه ها بهینه می کند.

- Profiling and Monitoring عملکرد GC:
Go ابزارهای قوی برای نظارت و بهینه سازی عملکرد GC فراهم می کند. بسته «زمان اجرا» به توسعه دهندگان اجازه می دهد تا آمار دقیق GC را ردیابی کنند، در حالی که "pprof" پروفایل CPU و حافظه را برای شناسایی و رفع تنگناهای عملکرد ارائه می دهد. این به ویژه برای برنامه‌هایی با تنظیمات دقیق که نیاز به کار در مقیاس یا زیر بار سنگین دارند، ارزشمند است و این امکان را می‌دهد الگوهای استفاده از حافظه را مشخص کرد و رفتار برنامه را بهینه نمود.

- کارایی حافظه در Go:
ترکیبی از جمع‌آوری همزمان زباله، Escape Analysis و موانع نوشتن تضمین می‌کند که Go در مدیریت حافظه بسیار کارآمد است، و آن را به یک انتخاب قدرتمند برای سیستم‌های بک‌اند، میکروسرویس‌ها و سرورهای با توان بالا تبدیل می‌کند.
چه در حال ساخت یک برنامه بومی ابری یا یک API با کارایی بالا باشید، GC به شما آرامش می دهد که مدیریت حافظه بدون نیاز به مداخله دستی بهینه شده است.

در نتیجه، جمع‌آوری زباله Go یکی از جذابیت‌های این زبان برای توسعه سیستم‌های پیشرفته و توزیع‌شده مدرن است که به توسعه دهنده این امکان را می دهد بدون نگرانی در مورد مدیریت حافظه سطح پایین، بر روی ساخت برنامه های مقیاس پذیر و با کارایی بالا تمرکز کند. با گزینه‌های تنظیم دقیق، ابزارهای پروفایل قوی و حداقل وقفه‌ها، GC Go تضمین می‌کند که حافظه به‌ صورتی کارآمد به گونه‌ای که برای توسعه‌دهنده شفاف باشد، مدیریت می‌شود.
اگر با Go کار می‌کنید، زمانی را صرف درک نحوه عملکرد جمع‌کننده زباله آن کنید این می‌تواند به شما در تصمیم‌گیری بهتر در مورد عملکرد، مقیاس‌پذیری و بهینه‌سازی حافظه کمک کند.


👑 @gopher_academy

Gopher Academy

28 Oct, 14:23


✍️Amir NiloofariAmir Niloofari

آشنایی با Garbage Collector در Go
: مدیریت حافظه کارآمد برای نرم‌افزار‌ها با کارایی بالا - قسمت ۱
همانطور که در پست قبل اشاره شد یکی از تمایزهای کلیدی Go، جمع آوری زباله همزمان(Concurrent Garbage collector) آن است که به طور هدفمند برای محیط های ابری و سرور‌های مدرن ساخته شده است.
با Go، توسعه‌دهندگان می‌توانند برنامه‌هایی با کارایی بالا بسازند و در عین حال مدیریت حافظه را به یک جمع‌آوری زباله بسیار بهینه و کم تأخیر بسپارند.
در این پست قرار است نگاهی عمیق‌تر به دلیل متمایز شدن Go’s GC و نحوه عملکرد آن بیندازیم:

- الگوریتم Mark-and-Sweep همزمان:
Go از فرآیند جمع‌آوری زباله Mark-and-Sweep استفاده می‌کند که همزمان با برنامه اجرا می‌شود. در مرحله Mark، لایو آبجکت‌ها (آبجکتی که حداقل یک مرجع به آن وجود دارد) شناسایی و علامت گذاری می شوند. سپس در مرحله Sweep حافظه را برای آبجکت‌هایی که دیگر به آنها ارجاع داده نمی شود اختصاص می دهد. زیبایی این فرآیند این است که به موازات اجرای برنامه اتفاق می‌افتد که برای ساخت برنامه‌های حساس به عملکرد مانند سرورهای وب یا سیستم‌های توزیع شده که در آن وقفه‌ها می‌توانند مستقیماً بر تاخیر (latency) تاثیر بگذارند، بسیار مهم است.

- تأخیر کم:
GC Go برای سناریوهای Low latency بهینه شده است که این برای برنامه هایی که نیاز به زمان پاسخ سریع دارند، مانند سیستم های بلادرنگ یا API هایی که حجم زیادی از ترافیک را مدیریت می کنند، ایده آل است. جمع‌آوری زباله به گونه‌ای طراحی شده است که مکث‌ها را به حداقل می‌رساند و حجم کاری خود را در چندین هسته CPU توزیع می‌کند و عملکرد برنامه را صاف و بدون وقفه نگه می‌دارد.

- الگوریتم علامت گذاری سه رنگ(Tricolor Marking):
اگر بخواهیم پشت پرده عملکرد زبان گو در مدیریت آبجکت‌ها را ببینیم از الگوریتم علامت گذاری سه رنگ برای مدیریت کارآمد چرخه عمر اشیا استفاده می کند.
آبجکت‌ها به عنوان سفید (غیرقابل دسترسی)، خاکستری (قابل دسترسی اما به طور کامل کاوش نشده)، یا سیاه (کاملا قابل دسترسی و کاوش شده) طبقه بندی می شوند. این رویکرد تضمین می‌کند که آبجکت‌ها زنده به درستی علامت‌گذاری می‌شوند، در حالی که آبجکت‌ها غیرقابل دسترس کنار گذاشته می‌شوند، حفظ حافظه غیر ضروری را کاهش می‌دهد و استفاده کارآمدتر از حافظه را تضمین می‌کند.

- نوشتن موانع برای اصلاحات حافظه ایمن:
Go در مرحله علامت‌گذاری از write barriers استفاده می‌کند تا هنگام تغییر آبجکت‌ها در حافظه، دقت را حفظ کند.
این موانع به‌عنوان نقاط بازرسی عمل می‌کنند و اطمینان می‌دهند که جمع‌آورنده زباله از تغییرات در ارجاعات آبجکت‌ها حتی زمانی که برنامه هنوز در حال اجرا است، آگاه است.
این مکانیسم از Memory corruption جلوگیری می کند (هنگامی که محتویات یک مکان حافظه به دلیل رفتار برنامه‌ای که از قصد برنامه‌نویس اصلی یا سازه‌های برنامه/زبان فراتر می‌رود، تغییر می‌کند.) و تضمین می کند که آبجکت‌ها زنده به اشتباه جابجا نمی شوند و کل سیستم را انعطاف پذیرتر و پاسخگوتر می کند.

👑 @gopher_academy

Gopher Academy

28 Oct, 11:30


🔵 عنوان مقاله
Using Go Embed

🟢 خلاصه مقاله:
مقاله توجه را به قابلیت مهمی در زبان برنامه‌نویسی Go با نام `go:embed` معطوف می‌کند که از نسخه 1.16 موجود است. این دستورالعمل امکان ضمیمه کردن فایل‌های استاتیک و حتی پوشه‌های کامل را درون باینری‌ها فراهم می‌کند. به جای ذخیره‌سازی فایل‌ها و دایرکتوری‌های مورد نیاز برنامه به صورت جداگانه، `go:embed` این امکان را می‌دهد که محتویات مورد نظر را مستقیماً درون ساختار (`struct`) خود برنامه ضمیمه کنید.

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

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


👑 @gopher_academy

Gopher Academy

28 Oct, 07:41


طلایی ترین لیست وبلاگ‌ها برنامه نویسان شرکت‌های بزرگ دنیا مثل Google و . . .
در این لیست افرادی که تجربه کار کردن در شرکت‌های بزرگ دارند اسم و لینکشون آورده شده

نفراول :
برنامه نویس شرکت TripAdvisor
هم مقالات فنی و هم مهارت نرم رو پوشش میده
https://dandreamsofcoding.com/

نفر دوم :
خالق الگوریتمی که در تمامی سیستم های recommender در شرکت بزرگ ازش استفاده میشه
https://lemire.me/blog/

نفر سوم :
از ایشون مگه بالاتر داریم ؟ CEO شرکت Stack overflow
https://www.joelonsoftware.com/

نفر چهارم :
مهندس نرمافزار گوگل و خالق چند تا از بزرگترین پروژه‌های Open Source جهان
https://latedev.wordpress.com/

نفر پنجم :
یک از تاثیر گذاران محبوبیت Linux
https://www.linux.org/forums/

نفر ششم :
برنامه نویس Google و نوسینده چند کتاب مشهور در دنیا
https://www.jeremykun.com/

نفر هفتم :
خالق Viaweb نوسینده بزرگ در حیطه برنامه نویسی
https://paulgraham.com/articles.html

نفر هقتم :
متخصص و Director شرکت Huawei
https://www.yegor256.com/

نفر هشتم :
یک متخصص به تمام معنا
https://prog21.dadgum.com/

نفر نهم :
نوسینده کتاب Clean Code
https://blog.cleancoder.com/

نفرم دهم :
مهندس گوگل
https://stevehanov.ca/blog/

نفرم یازدهم :
مهندس شرکت Uber
https://blog.pragmaticengineer.com/


👑 @labdon_academy

Gopher Academy

28 Oct, 05:30


🔵 عنوان مقاله
Distributed Transactions in Go: Read Before You Try

🟢 خلاصه مقاله:
این مقاله به بررسی و توضیح روش‌های مدیریت تراکنش‌ها در معماری‌های مبتنی بر خدمات می‌پردازد، جایی که این تراکنش‌ها نیاز به پردازش در بیش از یک سرویس دارند. به‌طور خاص، مقاله تمرکز خود را بر روی چالش‌ها و راهکارهای مدیریت و اطمینان از کنسیستنسی داده‌ها در سیستم‌های توزیع‌شده قرار می‌دهد. اول از همه، مقاله مفاهیم پایه‌ای تراکنش و خصوصیات ACID (atomicity, consistency, isolation, durability) را معرفی می‌کند. سپس، به بررسی مدل‌های مختلف تراکنش‌ها مثل 2PC (Two-Phase Commit) و سایر مدل‌های فراگیر تنظیم تراکنش مانند SAGA می‌پردازد. مقاله نیز رهیافت‌های جدید مانند تراکنش‌های طولانی-عمر (Long-running Transactions) و تکنیک‌های بازیابی معاصر را بررسی کرده و تأثیر آن‌ها بر روی مقیاس‌پذیری و دوام سیستم‌ها را تحلیل می‌کند. در نهایت، مقاله توصیه‌ها و بهترین روش‌ها برای طراحی سیستم‌های مقاوم در برابر خطا را ارائه می‌دهد، تاکید بر پیاده‌سازی استراتژی‌هایی که به حفظ تمامیت داده کمک کند.

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


👑 @gopher_academy

Gopher Academy

27 Oct, 21:30


🌟هفت آبان روز بزرگذاشت پدر ایران
🌟افتخار ایران و بشریت

🍻#CYRUS_THE_GREAT

👑#کوروش_بزرگ

🕊کوروش بیا که اینجا فرمانده ای نداریم
🕊فرمان بده درفشی از کاویان فرازیم

🕊ما جز قلم نداریم تیغی که صلح آریم
🕊با شعرِ آریایی روحُ روان نوازیم


🍻 به مناسبت این روز تخفیف ۵۰ درصدی روی تعرفه های تبلیغی کانال
🔵فقط 8 و 7 آبان تخفیف ۵۰ درصدی داریم

برای هماهنگی تبلیغات پیام بدید👇
@labdon_ads

👑 @gopher_academy

Gopher Academy

27 Oct, 16:31


💥 بوت‌کمپ برنامه‌نویسی Golang

👌 فرصت آموزش و استخدام در همکاران سیستم 👌

در طی ۴ جلسه:

🧲 مباحث اصلی برنامه‌نویسی با زبان گولنگ رو یاد می‌گیری.
💻 با طراحی نرم‌افزارهای کوچک به حل چالش‌ها و مسائل واقعی دنیای برنامه‌نویسی می‌پردازی.
🏢 و پس از اتمام دوره، وارد فرآیند جذب همکاران سیستم می‌شی.
💳 هزینه دوره: رایگان

✉️ برای شرکت در این دوره کافیه رزومه‌ت رو برای ما ارسال کنی تا در صورت تأیید شدن رزومه و پشت سر گذاشتن موفق مصاحبه فنی، اطلاعات شرکت در دوره رو برای شما ارسال کنیم. در ضمن در صورتی که هر سوالی درباره این دوره داشتی، از طریق همین ایمیل در ارتباط هستیم:

📧 [email protected]

📢 راستی یادت نره این پیام رو یه جا برای خودت ذخیره کنی تا بعدتر بتونی اون رو برای دوستان و آشنایان خودت بفرستی.
 
📅 مهلت ارسال رزومه:
دوشنبه ۱۴ آبان‌ماه

Linkedin 🌐 |🌐 Instagram

Gopher Academy

27 Oct, 11:30


🔵 عنوان مقاله
I'm Glad I Did It in Go

🟢 خلاصه مقاله:
Thorsten، نویسنده‌ی کتاب "نوشتن یک مفسر در زبان Go"، در بازخوانی تجربه‌های خود هشت سال پس از انتشار کتاب، به ارزیابی دلایل انتخاب زبان برنامه‌نویسی Go برای نگارش کتاب پرداخته است. او بیان می‌کند که Go به دلیل سادگی، خوانایی بالا و امکانات متعدد که برای نوشتن کدهای تمیز و مدیریت خطاها به شیوه‌ای واضح و مثال‌زدنی فراهم می‌آورد، گزینه‌ای ایده‌آل بوده است. طراحی Go با اهداف معین برای کاهش پیچیدگی برنامه‌نویسی توزیع‌شده و همچنین تسهیل پذیرش و درک فناوری توسط برنامه‌نویسان در سراسر جهان، آن را به گزینه ای مناسب برای نگارش کتاب تبدیل کرده است. در نتیجه، او دریافته که استفاده از Go نه تنها به افزایش کارایی در توسعه نرم‌افزار کمک کرده بلکه به شکل‌گیری پایگاه خوانندگانی گسترده و علاقه‌مند نیز منجر شده است.

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


👑 @gopher_academy

Gopher Academy

27 Oct, 05:30


🔵 عنوان مقاله
Elevate Your Backend Skills

🟢 خلاصه مقاله:
مقاله به بررسی اهمیت آموزش و توسعه مهارت‌ها در زمینه‌های مختلف برنامه‌نویسی نظیر Python، Go، TypeScript و همچنین آشنایی با پلتفرم‌هایی مانند AWS می‌پردازد. این مقاله تأکید دارد که با استفاده از دوره‌های آموزشی ویدیویی که توسط متخصصین این حوزه‌ها ارائه می‌شود، افراد می‌توانند به طرز چشمگیری دانش و تخصص خود را گسترش دهند. همچنین، اشاره می‌کند به فرصت‌های یادگیری متنوع از طریق مسیرهای یادگیری مختلف که به طور مداوم در حال ارتقا هستند و به شرکت‌کنندگان این امکان را می‌دهد که مهارت‌های مورد نیاز در بازار کار را به دست آورند. این مقاله تاکید می‌کند که توسعه مهارت‌های برنامه‌نویسی در درازمدت می‌تواند به بهبود فرصت‌های شغلی و پیشرفت کاری کمک کند.

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


👑 @gopher_academy

Gopher Academy

26 Oct, 11:30


🔵 عنوان مقاله
sync.Map: The Right Tool for the Right Job

🟢 خلاصه مقاله:
مقاله اخیر Phuong، که جدیدترین بخش از راهنمای تصویری محبوب او درباره گزینه‌های همروندی در زبان برنامه‌نویسی Go است، به بررسی sync.Map می‌پردازد. sync.Map، یک نقشه که برای خواندن و نوشتن همزمان توسط چندین goroutine طراحی شده و نیازی به قفل‌های صریح ندارد، به دلیل ایمنی در برابر همروندی بسیار مفید است. با این حال، Phuong دریافت که sync.Map همیشه گزینه‌ی کاملی نیست. وی در مقاله خود به تجزیه و تحلیل مواردی پرداخته است که استفاده از sync.Map ممکن است مناسب نباشد و به معرفی شرایطی پرداخته که استفاده از روش‌های دیگر گزینه بهتری سازند. این مقاله برای توسعه‌دهندگانی که با محیط همزمان در Go کار می‌کنند و به دنبال راه‌حل‌های ایمن و کارآمد هستند، مفید و آموزنده است.

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


👑 @gopher_academy

Gopher Academy

26 Oct, 05:30


🔵 عنوان مقاله
Reflecting on Go Reflection

🟢 خلاصه مقاله:
مقاله‌ای که مورد نقد قرار گرفته، یک تحلیل شخصی و برانگیزاننده در مورد ویژگی‌های زبان برنامه‌نویسی Go است، به‌خصوص بسته‌ی reflect آن. نویسنده، که یک برنامه‌نویس است و معمولاً از ساده‌ترین ویژگی‌های زبان‌های برنامه‌نویسی استفاده می‌کند، با اینکه مجبور شد از ویژگی‌های reflect در Go استفاده کند، هنوز هم از آن خوشش نیامده است. این نشان‌دهنده‌ی تجربه‌ای نامطلوب و نارضایتی فردی از استفاده این ویژگی خاص است. می‌توان گفت که مقاله به دنبال ایجاد یک بحث در میان جامعه‌ی برنامه‌نویسان برای ارزیابی مزایا و معایب استفاده از بسته‌ی reflect در زبان Go است. این انعکاس شخصی نویسنده بر سختی‌‌های استفاده و احساس کلی او نسبت به این ویژگی است.



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


👑 @gopher_academy

Gopher Academy

25 Oct, 05:30


🔵 عنوان مقاله
Olric: Distributed Cache and Key/Value Store

🟢 خلاصه مقاله:
این مقاله به بررسی فناوری نرم‌افزاری می‌پردازد که هم به عنوان یک کتابخانه جاگذاری‌شده در زبان برنامه نویسی Go و هم به صورت یک خدمت مستقل از زبان قابل استفاده است. این انعطاف‌پذیری امکان به‌کارگیری آن را در محیط‌های مختلف برنامه‌نویسی فراهم می‌آورد، که این خود بر توسعه‌پذیری و کارایی آن می‌افزاید. این تکنولوژی به دلیل استقلال از زبان، توانایی گسترش یافتن و ادغام در سیستم‌هایی با زمینه‌های مختلف فناوری را دارد، این امر به توسعه دهندگان اجازه می‌دهد تا با استفاده از ابزارها و زبان‌های برنامه‌نویسی که با آن آشنایی دارند، به سادگی و بدون نیاز به یادگیری زبان جدید، از قابلیت‌های این فناوری بهره‌مند شوند. این مزیت منجر به صرفه‌جویی در زمان و منابع می‌گردد و در نتیجه تأثیر مثبتی بر روند توسعه‌ی محصولات نرم‌افزاری خواهد داشت.

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


👑 @gopher_academy

Gopher Academy

24 Oct, 11:30


🔵 عنوان مقاله
anthropic-claude-golang-sdk: Go Library for Anthropic's Claude API

🟢 خلاصه مقاله:
مقاله پیشنهاد می‌دهد که برای ایجاد تعامل با مدل‌های هوش مصنوعی مکالمه‌ای Anthropic در برنامه‌های Go، استفاده از پیام‌های ساختاریافته و مدیریت پاسخ‌ها اهمیت دارد. روش‌ها و تکنیک‌های مختلفی برای ارسال و دریافت اطلاعات به صورت کارآمد و مؤثر با استفاده از این مدل‌ها در برنامه‌های نوشته شده به زبان Go توضیح داده شده است. این رویکرد به توسعه‌دهندگان کمک می‌کند تا از قابلیت‌های AI برای افزایش تعامل کاربری و بهبود عملکرد کلی نرم‌افزارهای خود بهره بگیرند. مقاله همچنین شامل مثال‌ها و کدنویسی‌های مرتبط است که نشان می‌دهد چگونه می‌توان این فرآیندها را در برنامه‌های واقعی پیاده‌سازی کرد و به چالش‌های احتمالی در این زمینه پاسخ داد.

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


👑 @gopher_academy

Gopher Academy

24 Oct, 05:30


🔵 عنوان مقاله
Gowitness: A Web Screenshot Utility using Chrome Headless

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به بررسی ابزاری به نام "وب‌سایت اسکرین‌شات" می‌پردازد که با استفاده از زبان برنامه‌نویسی Go نوشته شده است. این ابزار از Chrome Headless برای تولید اسکرین‌شات‌هایی از رابط‌های وب استفاده می‌کند و عملیات خود را از طریق خط فرمان اجرا می‌کند. عملکرد اصلی این ابزار در تولید تصاویری دقیق از صفحات وب است که برای توسعه‌دهندگان وب و تیم‌های QA که به تست و بررسی ظاهر و کارکرد وب‌سایت‌ها در محیط‌های مختلف می‌پردازند، بسیار مفید است. استفاده از Chrome Headless به این معنی است که اسکرین‌شات‌ها را می‌توان بدون نیاز به نمایش فیزیکی مرورگر و در حین اجرای اسکریپت‌های پس‌زمینه و دیگر فعالیت‌های مبرم مرورگر تهیه کرد، که این امکان افزایش کارایی و بهره‌وری را فراهم می‌کند.

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


👑 @gopher_academy

Gopher Academy

23 Oct, 05:30


🔵 عنوان مقاله
📉 A Guide to the Go Garbage Collector

🟢 خلاصه مقاله:
مقاله‌ای که به بررسی سیستم جمع‌آوری زباله (Garbage Collection) در زبان برنامه‌نویسی Go می‌پردازد، از نسخه 1.19 این زبان شروع شده است و به‌عنوان یک مستند زنده عرضه شده که توضیحات دقیق و جامعی درباره‌ی نحوه‌ی عملکرد این سیستم ارائه می‌دهد. مقاله همراه با دیاگرام‌های تعاملی مفید است که به درک بهتر و دقیق‌تر عملکرد سیستم جمع‌آوری زباله در Go کمک می‌کند. این مستند به عنوان منبعی ارزشمند برای توسعه‌دهندگانی که به دنبال فهم عمیق‌تری از مکانیزم‌های داخلی و بهینه‌سازی عملکرد برنامه‌های خود در Go هستند، محسوب می‌شود.

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


👑 @gopher_academy

Gopher Academy

22 Oct, 11:30


🔵 عنوان مقاله
Prep: Compile-Time Function Evaluation for Go

🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی ویژگی prep.Comptime پرداخته است که امکان ارزیابی توابع در زمان ساخت را فراهم می‌کند و نتیجه محاسبه شده را جایگزین توابع می‌نماید. این ویژگی شباهت‌هایی به comptime در زبان برنامه‌نویسی Zig دارد اما تفاوت‌هایی نیز با آن دارد. مقاله اذعان می‌کند که استفاده از این تکنیک ممکن است به نوعی "کفران" تلقی شود، اما نکته جالبی است که نمی‌توان انکار کرد. با این حال، این ویژگی محدودیت‌هایی دارد و ابزار toolexec اصولاً برای بازنویسی متن مبدأ به صورت دلخواه طراحی نشده است. این مقاله به بررسی ایده‌ای نو و جذاب پرداخته است اما همچنین به محدودیت‌ها و چالش‌هایی که ممکن است در استفاده از این تکنیک وجود داشته باشد، اشاره می‌کند. بنابراین، ضروری است که توسعه‌دهندگان قبل از استفاده از این ویژگی به طور دقیق به این محدودیت‌ها و چالش‌ها توجه کنند.

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


👑 @gopher_academy

Gopher Academy

22 Oct, 05:30


🔵 عنوان مقاله
Joining Errors in Go

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی دو رویکرد در زبان برنامه‌نویسی Go می‌پردازد: استفاده از چندین %ws و استفاده از دستور errors.Join که در نسخه 1.20 زبان Go معرفی شده است. رویکرد اول، %ws، از دستورهای فرمت‌بندی متنی برای ایجاد نتیجه‌ای استاندارد و یکپارچه استفاده می‌کند. این رویکرد به برنامه‌نویس اجازه می‌دهد که خروجی‌ها و پیام‌ها را به شکل واضح و دقیق نمایش دهد، خصوصاً در محیط‌هایی که نیاز به ترکیب و نمایش چندین مقدار متفاوت است. رویکرد دوم، errors.Join، امکان مدیریت و ترکیب چندین خطا را در یک پیغام خطا الحاقی فراهم می‌کند که بسیار مفید است برای دسته‌بندی خطاها و واکنش‌های مرتبط با آن‌ها. این امکان به برنامه‌نویس کمک می‌کند تا خطاهای متعدد را به شکل مؤثری دریابد و رفع کند، و در نهایت به بهبود خوانایی و قابلیت نگهداری کد کمک می‌کند.


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


👑 @gopher_academy

Gopher Academy

21 Oct, 11:30


🔵 عنوان مقاله
Some Go Web Dev Notes

🟢 خلاصه مقاله:
مقاله‌ی مورد بحث بر اهمیت و کارایی پست‌های جولیا تاکید دارد که به دلیل صداقت، کمک و بی‌پرده‌گویی‌اش مشهور است. این مقاله‌ یک مجموعه نکات فوری، توصیه‌ها و مشاهدات می‌باشد که نشان از کیفیت بالای محتوای ارایه شده توسط جولیا دارد. نویسنده به خوانندگان تضمین می‌دهد که جولیا همواره چیز جدیدی برای ارائه دارد و چشمان آنها را به موضوعات یا دیدگاه‌های نو باز می‌کند. این شیوه نوشتار جولیا تاثیرگذار و مفید ارزیابی شده و خواننده را به مطالعه بیشتر ترغیب می‌کند.

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


👑 @gopher_academy

Gopher Academy

21 Oct, 07:56


نکته خیلی جالبش شاید استفاده از GOMEMLIMIT بصورت dynamic هست که در runtime ست میشه..

Go Beyond: Building Performant and Reliable Golang Applications

https://blog.zomato.com/go-beyond-building-performant-and-reliable-golang-applications

✍️حسین نظری

#performance
#golang
#گولنگ


👑 @gopher_academy

Gopher Academy

21 Oct, 05:30


🔵 عنوان مقاله
Ebitengine v2.8.0: The Go 2D Game Engine

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته است به پروژه‌ی «اِبیت‌انجین» در اکوسیستم زبان برنامه‌نویسی گو اختصاص دارد. این پروژه به‌عنوان یکی از پروژه‌های محبوب در این حوزه شناخته شده است. در جدیدترین به‌روزرسانی‌ها، ابیت‌انجین پشتیبانی از فرمت صوتی 32 بیتی با فرمت فلوت و همچنین بهبودهایی در سفارشی‌سازی شیدر (shader) را به ارمغان آورده است. این امکانات جدید به توسعه‌دهندگان اجازه می‌دهد تا با دقت بیشتری بر روی جزئیات صوتی کار کنند و تجربه‌های بصری پیشرفته‌تری را ارائه دهند. به‌طور کلی، این پیشرفت‌ها نشان‌دهنده‌ی تعهد ابیت‌انجین به پیشرفت مداوم و ارائه‌ی قابلیت‌های جدید است که می‌تواند به افزایش کارایی و جذابیت این موتور بازی در بین توسعه‌دهندگان کمک کند.

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


👑 @gopher_academy

Gopher Academy

20 Oct, 11:30


🔵 عنوان مقاله
htmgo: Build Simple, Scalable Systems with Go and htmx

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته، به یک پروژه نوظهور و پیشرو 'آلفا' پرداخته است که رویکردی نوین در تلفیق سادگی زبان برنامه‌نویسی Go و کتابخانه‌ی htmx ارائه می‌دهد تا فرآیند ساخت وب‌اپلیکیشن‌های تعاملی را سرعت بخشد. این ترکیب، به توسعه‌دهندگان امکان می‌دهد تا به سرعت وب‌اپ‌های پویا و کاربرپسند بسازند، با استفاده از قابلیت‌های زبان Go در کنار سهولت htmx در ایجاد تعاملات کاربری پیچیده بدون نیاز به جاوااسکریپت زیاد. این رویکرد می‌تواند تأثیر چشمگیری در کارایی و سرعت توسعه وب‌اپلیکیشن‌ها داشته باشد، زیرا به توسعه‌دهندگان اجازه می‌دهد تا بر روی بهبود تجربه کاربری تمرکز کنند وقتی که بخش‌های بیشتری از منطق برنامه‌نویسی را به سادگی مدیریت کنند.

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


👑 @gopher_academy

Gopher Academy

20 Oct, 05:30


🔵 عنوان مقاله
bed: A Binary/Hex Editor Written in Go

🟢 خلاصه مقاله:
مقاله موردنظر درباره یک ویرایشگر باینری است که با زبان برنامه‌نویسی Go نوشته شده و دارای رابط کاربری شبیه به Vim است. این ابزار در ترمینال‌ها اجرا می‌شود و به دلیل ساختار مبتنی بر Go، قابلیت حمل بالایی دارد و عملکرد سریعی را ارائه می‌دهد. یکی از ویژگی‌های برجسته‌ی این ویرایشگر، قابلیت تقسیم پنجره است که به کاربران این امکان را می‌دهد که بتوانند چندین فایل یا بخش‌های مختلف یک فایل را به طور همزمان مشاهده و ویرایش کنند. این ویژگی‌ها آن را به یک ابزار مفید و کارآمد برای توسعه‌دهندگانی تبدیل می‌کند که با داده‌های باینری کار می‌کنند و نیازمند ابزاری قدرتمند برای مدیریت و تحلیل این نوع داده‌ها هستند.

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


👑 @gopher_academy

Gopher Academy

19 Oct, 11:30


🔵 عنوان مقاله
Reduce Your Data Streaming and Kafka Costs by 80+%

🟢 خلاصه مقاله:
مقاله مربوط به فناوری WarpStream می‌پردازد که مزایای معماری بدون دیسک و بدون حالت خود را به همراه مدل BYOC (آوردن مؤلفه‌هات به سرور) به نمایش می‌گذارد. این ساختار جدید، هزینه‌های استفاده از Kafka را تا بیش از ۸۰٪ کاهش می‌دهد، استریم داده‌ها را آسان‌تر می‌کند و امنیت داده‌ها را افزایش می‌دهد. WarpStream با پیشنهاد افتتاح حساب رایگان و ارائه ۴۰۰ دلار اعتبار که هرگز منقضی نمی‌شود، سعی در جذب کاربران جدید و نشان دادن توانایی‌های برتر خود در مقایسه با رقبا دارد. این پلتفرم، با ارائه راهکارهای نوآورانه در زمینه پردازش و انتقال داده‌ها، می‌کوشد راهکاری مقرون به صرفه و کارآمد برای شرکت‌ها و توسعه‌دهندگان فراهم آورد.

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


👑 @gopher_academy

Gopher Academy

19 Oct, 05:30


🔵 عنوان مقاله
Distributed Metrics in PHP with Go and Gob

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفت، به بررسی بسته "Gob" در زبان برنامه‌نویسی Go می‌پردازد. بسته Gob از طراحی بهینه‌ای برای کدگذاری و کدگشایی داده‌ها بین برنامه‌های نوشته‌شده در Go بهره می‌برد. هدف این است که ارتباط میان برنامه‌های مختلف را ساده‌تر و سریع‌تر سازد. این بسته به گونه‌ای طراحی شده است که تبادل داده‌ها بین برنامه‌های Go با حداقل تأخیر و بیشترین سرعت صورت گیرد. در این مقاله، نحوه کارکرد Gob، مزایای استفاده از آن و برخی از کاربردهای عملی که می‌توان به راحتی در برنامه‌های مختلف اجرا کرد، توضیح داده شده است. خلاصه اینکه، Gob یک ابزار قدرتمند برای توسعه‌دهندگان Go است که به آن‌ها اجازه می‌دهد داده‌ها را به صورت کارآمد در میان برنامه‌های مختلف جا به جا کنند.

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


👑 @gopher_academy

Gopher Academy

18 Oct, 11:30


🔵 عنوان مقاله
Modview: Go Project Dependency Graph Visualizer

🟢 خلاصه مقاله:
مقاله مورد بحث روشی ساده را برای تجسم وابستگی‌ها در پروژه‌های برنامه‌نویسی Go ارائه می‌دهد، که این امر از طریق نمودارهای گرافیکی و واضح انجام می‌گیرد. روش پیشنهادی به توسعه‌دهندگان کمک می‌کند تا به راحتی ساختار و تعاملات بین مولفه‌های مختلف پروژه خود را درک کنند. این فرآیند نه تنها باعث بهبود کیفیت کدنویسی می‌شود، بلکه در شناسایی و حل مسائل احتمالی وابستگی‌ها نیز مؤثر است. استفاده از نمودارهای گرافیکی به عنوان ابزاری بصری، فرآیند تحلیل و بررسی کدها را سریع‌تر و دقیق‌تر از روش‌های متنی سنتی می‌کند. این مقاله به بررسی ابزارها و روش‌های موجود برای ایجاد این نمودارها می‌پردازد و نحوه عملیاتی کردن آن‌ها در محیط‌های توسعه واقعی را شرح می‌دهد.

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


👑 @gopher_academy

Gopher Academy

18 Oct, 05:30


🔵 عنوان مقاله
caddy-exec: Caddy Module for Running One-Off Commands

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته پیرامون سرور HTTP(S) به نام Caddy است که به زبان برنامه‌نویسی Go نوشته شده است. نویسندگان مقاله اظهار دارند که از این سرور در کارهای خود بسیار راضی هستند. نکته‌ی برجسته‌ی مقاله به افزونه‌ای اشاره دارد که امکان فعال سازی دستورات در زمان راه‌اندازی یا خاموش کردن سرور، و همچنین از طریق مسیرهای خاصی به نام «route» را فراهم می‌آورد. این افزونه به کاربران اجازه می‌دهد تا عملیات خاصی را به صورت خودکار در زمان‌های تعیین شده یا در پاسخ به درخواست‌های خاص انجام دهند، که این امر می‌تواند به بهبود کارایی و انعطاف‌پذیری در مدیریت سرور کمک کند. این توانایی سازگاری با نیازهای کاربران و تنظیمات خاص آن‌ها، Caddy را به یک گزینه جذاب در میان سرورهای HTTP(S) تبدیل می‌کند.

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


👑 @gopher_academy

Gopher Academy

17 Oct, 17:37



👑 @labdon_academy

Gopher Academy

17 Oct, 11:30


🔵 عنوان مقاله
Rueidis: A Fast Redis Client with Caching and More

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته به بررسی یک کلاینت Redis تمرکز دارد که بر عملکرد آن تأکید دارد. این کلاینت ویژگی‌هایی چون اجرای خودکار دسته‌ای (auto-pipelining) دستورات غیر مسدود کننده، حافظه نهان سمت کلاینت که به شیوه رسمی پیاده‌سازی شده است، و پشتیبانی از تعداد زیادی از افزونه‌های رسمی Redis را دارا است. قرارگیری این کلایت در زیر مجموعه اصلی ارگانیک GitHub برای Redis هم به نوعی تائید کیفیت و اعتبار آن به شمار می‌رود. به نظر می‌رسد که این مقاله کوتاه بیشتر به توسعه‌دادن ویژگی‌ها و کارآمدی این کلاینت می‌پردازد تا ایجاد یک نمونه مثالی در بین کلاینت‌های Redis که تاکید زیادی بر عملکرد بهینه دارد.

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


👑 @gopher_academy

Gopher Academy

16 Oct, 11:30


🔵 عنوان مقاله
Revive 1.4: A Faster, Configurable, Flexible Linter for Go

🟢 خلاصه مقاله:
مقاله مورد بحث به بررسی ابزاری جدید در زبان برنامه‌نویسی Go می‌پردازد که به عنوان جایگزینی برای ابزار قبلی به نام golint عمل می‌کند. این ابزار جدید با هدف ارائه ساختار، قابلیت پیکربندی و عملکرد بهتر طراحی شده است. این ابزار توسط پروژه‌ها و کتابخانه‌های بزرگ Go به کار گرفته شده است. اطلاعات بیشتر و کد ابزار در مخزن GitHub قابل دسترسی است. این جایگزینی به کاربران امکان می‌دهد تا به روز رسانی‌ها و تنظیمات دقیق‌تری نسبت به golint داشته باشند، و با ایجاد بهبودهای عملکردی، تجربه کاربری را تحت تاثیر قرار دهد. نکته کلیدی این ابزار جدید این است که با وجود ارتقاء‌های انجام شده، همچنان سازگاری با استانداردهای پروژه‌های قدیمی‌تر را حفظ می‌کند.

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


👑 @gopher_academy

Gopher Academy

16 Oct, 05:40


🎯اگر علاقه مند به موضوعات👈🏻 بلاکچین/ارزهای دیجیتال/هوش مصنوعی/DeFi/NFTS هستید
👇 چنل زیر رو از دست ندید(با موضاعات متنوع و بروز)

📈 Bitcoin & Ethereum Trends
💰 Exciting Altcoins News
🔗 Cutting-Edge Blockchain Innovations
📊 Business Insights & Market Analysis
📜 Policy & Regulations Updates
🤖 AI: Artificial Intelligence Advancements
🎨 The World of NFTs
🌐 Decentralized Finance (DeFi) News



👑 @Blockchain_labdon

Gopher Academy

16 Oct, 05:30


🔵 عنوان مقاله
Developing a Go Bot That Embeds Ichiban Prolog

🟢 خلاصه مقاله:
اIchiban Prolog معرفی یک پیاده‌سازی جدید و موثر از زبان برنامه‌نویسی منطقی Prolog با استفاده از زبان برنامه‌نویسی Go است. این پیاده‌سازی به توسعه‌دهندگان اجازه می‌دهد تا قدرت زبان Prolog را به طور مستقیم درون برنامه‌های Go به کار ببرند. استفاده از Ichiban Prolog در برنامه‌های Go امکان بهره‌برداری از توابع پیچیده و منطقی را به شکلی سهل و ممکن فراهم می‌کند، بدون آنکه نیاز به جا‌به‌جایی بین زبان‌ها یا استفاده‌ از رابط‌های برنامه‌نویسی اضافی باشد. این امر باعث بهبود بهره‌وری در توسعه و کارایی برنامه‌ها می‌شود. Ichiban Prolog به خصوص برای موارد کاربردی که نیازمند مدل‌سازی منطقی و حل مسائل پیچیده هستند، مفید است و به توسعه‌دهندگان امکان می‌دهد با استفاده از تکنیک‌های Prolog، به راه‌حل‌های نوآورانه دست پیدا کنند.

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


👑 @gopher_academy

Gopher Academy

15 Oct, 11:30


🔵 عنوان مقاله
go2type: A Go to TypeScript API Client Generator

🟢 خلاصه مقاله:
این مقاله به بررسی ابزار خط فرمان (CLI) ساده‌ای می‌پردازد که برای تولید انواع داده‌ها و پرس‌وجوها در رابط کاربری‌های جلو (فرانت‌اند) طراحی شده است، به خصوص برای بک‌اند‌های نوشته شده به زبان برنامه‌نویسی Go. این ابزار به توسعه‌دهندگان کمک می‌کند تا با کارایی بیشتری برنامه‌های کاربردی تحت وب را توسعه دهند و مدیریت کنند. این امکان با سهولت در تولید کدهای قابل استفاده و سازگار برای فرانت‌اند‌ها از مدل‌ها و لاجیک سمت سرور (بک‌اند) فراهم می‌آید، به طوری که اینتگراسیون بین بخش‌های جلو و عقب برنامه به روانی و بدون درز صورت می‌گیرد. استفاده از این ابزار می‌تواند سرعت برنامه‌نویسی و دقت در تبادل داده‌ها و اطلاعات بین فرانت‌اند و بک‌اند را بهبود ببخشد و در نتیجه، کیفیت نهایی محصولات نرم‌افزاری را افزایش دهد.

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


👑 @gopher_academy

Gopher Academy

15 Oct, 05:30


🔵 عنوان مقاله
Stuck on What to Build? Guided Learning with Real Projects

🟢 خلاصه مقاله:
مقاله‌ای که مرور شد، پیرامون اهمیت خلق پروژه‌های واقعی در زمینه برنامه‌نویسی صحبت می‌کند تا به جای استفاده از برنامه‌های معمولی برای تمرین مهارت‌های هوش مصنوعی، توسعه‌دهندگان بتوانند با انجام پروژه‌های عملی و پیچیده، الگوهای پیشرفته بک‌اند را فراگیرند. در این مقاله تأکید شده که بیش از ۸۰۰ توسعه‌دهنده در برنامه‌هایی شرکت کرده‌اند که شامل توسعه نرم‌افزار مبتنی بر رویدادهای غیرهمزمان است. برنامه بعدی آموزشی به‌زودی آغاز می‌شود و شرکت کنندگان فرصت خواهند داشت تجربه‌ای مستقیم در محیط توسعه مجتمع (IDE) خود به دست آورند، بدون نیاز به مشاهده ویدیوها. این رویکرد به شرکت‌کنندگان امکان می‌دهد مهارت‌های عملی خود را تقویت کرده و به حل مسائل واقعی بپردازند.

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


👑 @gopher_academy

Gopher Academy

14 Oct, 11:30


🔵 عنوان مقاله
Go's Singleflight Melts in Your Code, Not in Your DB

🟢 خلاصه مقاله:
این مقاله به بررسی بسته‌ی غیر اصلی singleflight پرداخته است که توسط تیم Go نگهداری می‌شود و اطمینان می‌دهد که تابعی تنها یک بار اجرا شود و نتایج آن توسط فراخواننده‌های بعدی مورد استفاده قرار گیرد. این ویژگی موارد استفاده‌ی فراوانی دارد، به ویژه در دسترسی به پایگاه داده‌ها. Singleflight از تکرار بیهوده‌ی داده‌ها جلوگیری می‌کند و بهینه‌سازی قابل توجهی در منابع و زمان اجرا ایجاد می‌کند. این مقاله به عنوان آخرین مطلب در مجموعه‌ای درباره‌ی همروندی، کاربردها و تأثیرات singleflight را مورد تجزیه و تحلیل قرار می‌دهد، و نحوه‌ی کارآمد این بسته برای جلوگیری از اجراهای تکراری و استفاده‌ی مجدد از نتایج را شرح می‌دهد. این به کاهش بار و بهبود عملکرد کلی سیستم‌هایی که در آنها استفاده می‌شود، کمک می‌کند.

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


👑 @gopher_academy

Gopher Academy

14 Oct, 08:00


✍️ Mahsa HafeziKhomamy

🕸 @labdon_academy

Gopher Academy

14 Oct, 05:30


🔵 عنوان مقاله
Register Allocation in the Go Compiler

🟢 خلاصه مقاله:
اVladimir، که در حفظ سیستم تخصیص دهنده رجیستر GCC فعالیت می‌کند، با کمبود منابع و مستندات در مورد نحوه انجام این کار توسط زبان Go روبرو شده بود. در نتیجه، او تصمیم گرفت به مطالعه کد منبع Go بپردازد. پس از بررسی‌های عمیق و دقیق، ولادیمیر به شیوه‌های پیاده‌سازی شده توسط Go در زمینه تخصیص دهنده رجیستر (RA) پی برد و از آن‌ها تحت تأثیر قرار گرفت. او این رویکرد را نه تنها خوب طراحی شده، بلکه بدیع و خلاقانه توصیف کرد، نشان دهنده پیشرفت و نوآوری در این زمینه بود. ارزیابی مثبت ولادیمیر نشان می‌دهد که روش‌های انجام شده در Go می‌توانند بعنوان الهام بخش برای دیگر توسعه دهندگان نیز عمل کنند.

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


👑 @gopher_academy

Gopher Academy

13 Oct, 11:30


🔵 عنوان مقاله
Sets in Go: Using Maps and Recommended Packages

🟢 خلاصه مقاله:
مقاله مورد نظر به بررسی چگونگی ایجاد انواع داده‌ای برای مجموعه‌ها در زبان برنامه‌نویسی Go می‌پردازد، که به طور بومی این نوع داده را پشتیبانی نمی‌کند. نویسنده، ویلم، راهکارهایی جهت پیاده‌سازی مجموعه‌ها با استفاده از نقشه‌ها (maps) را شرح می‌دهد و همچنین به بسته‌هایی نظیر golang-set اشاره می‌کند که می‌توانند در این زمینه مفید باشند. او با نمایش نحوه استفاده از این ابزارها، به توسعه‌دهندگان امکان می‌دهد تا مجموعه‌های خود را به شکل مؤثرتر و منظم‌تری مدیریت کنند، در حالی که به بررسی مزایا و محدودیت‌های مرتبط با هر روش نیز می‌پردازد. در نهایت، مقاله با ارائه مثال‌های عملی کمک می‌کند تا خوانندگان بهتر بتوانند این امکانات را در پروژه‌های برنامه‌نویسی خود به کار گیرند.


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


👑 @gopher_academy

Gopher Academy

13 Oct, 06:36


در Kubernetes، کلاستر (Cluster) و نیم‌اسپیس (Namespace) دو مفهوم اصلی هستند که هر کدام نقش متفاوتی در مدیریت و سازماندهی منابع دارند:

### 1. کلاستر (Cluster):
کلاستر در Kubernetes به مجموعه‌ای از نودها (nodes) گفته می‌شود که با هم کار می‌کنند تا منابع محاسباتی را فراهم کنند و اپلیکیشن‌ها را اجرا کنند. هر کلاستر Kubernetes شامل یک یا چند نود است که می‌تواند شامل نودهای اصلی (master node) و نودهای کارگر (worker node) باشد.

در کلاستر:
- نودهای کارگر پادها و سرویس‌های اپلیکیشن‌ها را اجرا می‌کنند.
- نود اصلی وظیفه مدیریت و هماهنگی منابع، مدیریت وضعیت پادها و سرویس‌ها، و فراهم کردن API Kubernetes را برعهده دارد.

کلاستر معمولاً به عنوان یک محیط جداگانه استفاده می‌شود و شامل تمام منابع محاسباتی و شبکه‌ای مورد نیاز برای اجرای برنامه‌های کانتینری است.

### 2. نیم‌اسپیس (Namespace):
نیم‌اسپیس‌ها به عنوان یک مکانیزم برای تقسیم منطقی یک کلاستر عمل می‌کنند. نیم‌اسپیس‌ها به شما اجازه می‌دهند که منابع و اپلیکیشن‌های مختلف را در یک کلاستر مدیریت و جداسازی کنید.

ویژگی‌های کلیدی نیم‌اسپیس:
- جداسازی منابع: هر نیم‌اسپیس یک محدوده جداگانه برای منابع مثل پادها، سرویس‌ها، و سایر آبجکت‌ها فراهم می‌کند. این کمک می‌کند که از برخورد منابع در یک کلاستر جلوگیری شود.
- مدیریت دسترسی‌ها: نیم‌اسپیس‌ها به شما امکان می‌دهند که با استفاده از RBAC (Role-Based Access Control) دسترسی‌ها را برای تیم‌ها و کاربران مختلف تعریف کنید.
- مدیریت بهتر در محیط‌های اشتراکی: در یک کلاستر بزرگ که چند تیم مختلف ممکن است در حال استفاده از منابع باشند، نیم‌اسپیس‌ها کمک می‌کنند که هر تیم منابع خود را به‌صورت مستقل مدیریت کند.

### تفاوت‌های کلیدی:
- کلاستر: یک کلاستر مجموعه‌ای از نودها است که زیرساخت محاسباتی را فراهم می‌کند و محیطی را برای اجرای پادها در Kubernetes مهیا می‌سازد. هر کلاستر می‌تواند شامل چندین نیم‌اسپیس باشد.
- نیم‌اسپیس: نیم‌اسپیس یک واحد سازمانی داخلی در کلاستر است که به جداسازی منابع و مدیریت آنها کمک می‌کند. نیم‌اسپیس‌ها منابع یک کلاستر را تقسیم‌بندی می‌کنند، اما خود کلاستر را تقسیم نمی‌کنند.

### مثال:
فرض کنید یک سازمان از یک کلاستر برای اجرای چندین اپلیکیشن استفاده می‌کند. برای جداسازی تیم‌های مختلف یا اپلیکیشن‌های مختلف در همان کلاستر، می‌توان از **نیم‌اسپیس**ها استفاده کرد تا هر تیم بتواند منابع خود را جدا از دیگران مدیریت کند. این باعث می‌شود که مدیریت اپلیکیشن‌ها ساده‌تر و مؤثرتر باشد.


👑 @DevOps_Labdon

Gopher Academy

13 Oct, 05:30


🔵 عنوان مقاله
Streamline Your Product Delivery with monday dev

🟢 خلاصه مقاله:
مقاله مورد بررسی به توضیح ویژگی‌‌ها و فواید استفاده از پلتفرم monday dev در فرآیند توسعه محصول می‌پردازد. این پلتفرم، از مرحله ایده‌پردازی تا انتشار نهایی محصول، فرآیندهای مرتبط را تسریع بخشیده و ساده می‌کند. همه‌ی این مراحل در یک مکان یکپارچه انجام می‌شوند که هماهنگی بین تیم‌های مختلف را تسهیل می‌کند. این امر به افزایش سرعت و کارآمدی در توسعه محصول کمک می‌کند، که بدین ترتیب منجر به کاهش زمان از تولید تا اجرا و عرضه محصول در بازار می‌شود. پلتفرم monday dev با ارائه ابزارها و قابلیت‌های متعدد، به کاربران اجازه می‌دهد تا بر روی خلاقیت و کیفیت محصول تمرکز کنند، در حالی که از پشتیبانی پلتفرم بهره‌مند می‌شوند.

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


👑 @gopher_academy

Gopher Academy

12 Oct, 18:04


در این کانال مطالب متنوعی در زمینه های مختلف علوم کامپیوتر و تکنولوژی آموزش داده میشود که شامل:

🔰هوش مصنوعی
👨‍💻 آموزش برنامه نویسی
🌐امنیت وشبکه
🖥طراحی صفحات وب
💡ترفند های جالب

https://t.me/Digitallearning5

Gopher Academy

12 Oct, 11:30


🔵 عنوان مقاله
What's in an (Alias) Name?

🟢 خلاصه مقاله:
مقاله‌ای که قرار است در فوریه ۲۰۲۵ و در نسخه ۱.۲۴ زبان برنامه‌نویسی Go منتشر شود، به معرفی انواع مستعار جنریک می‌پردازد که به عنوان بخشی از پیشنهاد جدیدی، بر پایه‌ی انواع مستعار و جنریک‌ها ایجاد شده است. یکی از کاربردهای اصلی انواع مستعار، امکان بازسازی کد بدون ایجاد شکست در سازگاری است. رابرت در این مقاله به توضیح اصول انواع مستعار و دلایل نیازمندی به کار بیشتر برای ادغام آن‌ها با جنریک‌ها می‌پردازد. کار بیشتر مورد نیاز برای ادغام جنریک‌ها با انواع مستعار ناشی از پیچیدگی‌های فنی و نیاز به حفظ عملکرد سازگار در سطح کدهای برنامه است. این توسعه به برنامه‌نویسان کمک خواهد کرد تا کدهای موجود را با انعطاف‌پذیری بیشتر و بدون مخاطره شکست، توسعه دهند.

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


👑 @gopher_academy