🔵 عنوان مقاله
Waitgroups: What They Are, How to Use Them and What Changed with Go 1.25
🟢 خلاصه مقاله:
خلاصهای از WaitGroup در Go: ابزاری برای همگامسازی که اجازه میدهد تا پایان کار چند گوروتین صبر کنیم. الگوی کلاسیک با Add پیش از راهاندازی گوروتینها، Done در انتهای هر گوروتین (معمولاً با defer) و Wait در گوروتین ناظر انجام میشود؛ اما بیدقتی در تطبیق Add/Done میتواند به بنبست یا وحشت (panic) منجر شود. مقاله ضمن مرور کاربردها و نکات عملی، توضیح میدهد که در Go 1.25 راهی سادهتر ارائه شده است: دیگر لازم نیست Add و Done را دستی جفت کنید؛ میتوان واحدهای کار را در یک مرحله به WaitGroup متصل کرد تا کتابخانه بهصورت خودکار پیش از اجرا شمارنده را افزایش دهد و هنگام اتمام آن را کم کند. این روش خطاهای رایج را کاهش میدهد و در عین حال با کدهای قدیمی سازگار است، هرچند در الگوهای پیچیده همچنان ممکن است استفاده مستقیم از الگوی سنتی ترجیح داده شود.
🟣لینک مقاله:
https://golangweekly.com/link/173336/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Waitgroups: What They Are, How to Use Them and What Changed with Go 1.25
🟢 خلاصه مقاله:
خلاصهای از WaitGroup در Go: ابزاری برای همگامسازی که اجازه میدهد تا پایان کار چند گوروتین صبر کنیم. الگوی کلاسیک با Add پیش از راهاندازی گوروتینها، Done در انتهای هر گوروتین (معمولاً با defer) و Wait در گوروتین ناظر انجام میشود؛ اما بیدقتی در تطبیق Add/Done میتواند به بنبست یا وحشت (panic) منجر شود. مقاله ضمن مرور کاربردها و نکات عملی، توضیح میدهد که در Go 1.25 راهی سادهتر ارائه شده است: دیگر لازم نیست Add و Done را دستی جفت کنید؛ میتوان واحدهای کار را در یک مرحله به WaitGroup متصل کرد تا کتابخانه بهصورت خودکار پیش از اجرا شمارنده را افزایش دهد و هنگام اتمام آن را کم کند. این روش خطاهای رایج را کاهش میدهد و در عین حال با کدهای قدیمی سازگار است، هرچند در الگوهای پیچیده همچنان ممکن است استفاده مستقیم از الگوی سنتی ترجیح داده شود.
🟣لینک مقاله:
https://golangweekly.com/link/173336/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
mfbmina.dev
Waitgroups: what they are, how to use them and what changed with Go …
Imagine the following problem: you need to process hundreds of records and generate a single output. One way to solve this is to process each record sequentially and unify the output only at the end. …
🍾2❤1
🔵 عنوان مقاله
GitHub's CEO, Thomas Dohmke, has stood down
🟢 خلاصه مقاله:
خلاصه فارسی: طبق گزارش مقاله، توماس دومکه از سمت مدیرعاملی گیتهاب کنار رفته و همزمان گیتهاب یکپارچگی عمیقتری با سازمان CoreAI مایکروسافت پیدا کرده است. این تغییر، نشانه همراستایی بیشتر محصولات و نقشهراه گیتهاب با استراتژی مرکزی هوش مصنوعی مایکروسافت است. در کوتاهمدت احتمالاً تجربه کاربران تغییر چندانی نمیکند، اما در بلندمدت ممکن است شاهد ادغام و هماهنگی بیشتر قابلیتهای مبتنی بر هوش مصنوعی و انتشار سریعتر آنها باشیم. پرسشهای جامعه درباره میزان استقلال محصول و تأثیر بر اکوسیستم متنباز همچنان پابرجاست.
🟣لینک مقاله:
https://golangweekly.com/link/173109/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub's CEO, Thomas Dohmke, has stood down
🟢 خلاصه مقاله:
خلاصه فارسی: طبق گزارش مقاله، توماس دومکه از سمت مدیرعاملی گیتهاب کنار رفته و همزمان گیتهاب یکپارچگی عمیقتری با سازمان CoreAI مایکروسافت پیدا کرده است. این تغییر، نشانه همراستایی بیشتر محصولات و نقشهراه گیتهاب با استراتژی مرکزی هوش مصنوعی مایکروسافت است. در کوتاهمدت احتمالاً تجربه کاربران تغییر چندانی نمیکند، اما در بلندمدت ممکن است شاهد ادغام و هماهنگی بیشتر قابلیتهای مبتنی بر هوش مصنوعی و انتشار سریعتر آنها باشیم. پرسشهای جامعه درباره میزان استقلال محصول و تأثیر بر اکوسیستم متنباز همچنان پابرجاست.
🟣لینک مقاله:
https://golangweekly.com/link/173109/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The GitHub Blog
Auf Wiedersehen, GitHub ♥️
I am stepping down as GitHub CEO to build my next adventure. GitHub is thriving and has a bright future ahead.
🕊2❤1
Forwarded from AI Labdon
برگه تقلب برنامه نویسی رو از اینجا پیدا کن
▪️اگه داری برنامه نویسی رو یاد میگیری یا دنبال کار میگردی و مصاحبه میری این چیت شیت ها( برگه تقلب ها) گزینه های خیلی خوبی هست برای مرور...
▪️تقریبا اکثر زبان ها و ابزارهارو پوشش میده و میتونی استفاده کنی ؛ نکته جذابش اینه که پرکابرد ترین پرامپت های ChatGPT هم داره :))
آدرس سایت:
Quickref.me
▪️اگه داری برنامه نویسی رو یاد میگیری یا دنبال کار میگردی و مصاحبه میری این چیت شیت ها( برگه تقلب ها) گزینه های خیلی خوبی هست برای مرور...
▪️تقریبا اکثر زبان ها و ابزارهارو پوشش میده و میتونی استفاده کنی ؛ نکته جذابش اینه که پرکابرد ترین پرامپت های ChatGPT هم داره :))
آدرس سایت:
Quickref.me
🔥2❤1
🔵 عنوان مقاله
created an 'Advanced Go Driver' for Amazon RDS and Aurora
🟢 خلاصه مقاله:
این مقاله یک «درایور پیشرفتهی Go» برای Amazon RDS و Aurora معرفی میکند که بهجای تغییر پروتکلها، روی pgx (برای PostgreSQL) و درایور بومی MySQL سوار میشود و قابلیتهای عملیاتی مهمی اضافه میکند. مهمترین مزیتها شامل سادهسازی احراز هویت با پشتیبانی از IAM و توکنهای SigV4، مدیریت خودکار TLS و چرخش گواهیها/اسرار، و تابآوری در سوییچاوور/فِیلاوور با تشخیص تغییرات DNS، اتصال مجدد شفاف و تکرار تراکنش-آگاه است. این درایور توپولوژی Aurora/RDS (نویسنده/خواننده) را میشناسد، برای بارهای فقط-خواندنی از ریدرها استفاده میکند و در صورت نیاز به نویسنده مهاجرت میکند. همچنین قلابهای مشاهدهپذیری (لاگ/متریک/تریس)، پشتیبانی از context، سازگاری با database/sql و pgx، و پیکربندی ساده از طریق DSN/متغیرهای محیطی را ارائه میدهد. نتیجه، کاهش زحمت در تعمیرات، بهبود رفتار در رخدادها، و یکپارچهسازی مدیریت اتصال برای PostgreSQL و MySQL روی AWS است.
🟣لینک مقاله:
https://golangweekly.com/link/173079/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
created an 'Advanced Go Driver' for Amazon RDS and Aurora
🟢 خلاصه مقاله:
این مقاله یک «درایور پیشرفتهی Go» برای Amazon RDS و Aurora معرفی میکند که بهجای تغییر پروتکلها، روی pgx (برای PostgreSQL) و درایور بومی MySQL سوار میشود و قابلیتهای عملیاتی مهمی اضافه میکند. مهمترین مزیتها شامل سادهسازی احراز هویت با پشتیبانی از IAM و توکنهای SigV4، مدیریت خودکار TLS و چرخش گواهیها/اسرار، و تابآوری در سوییچاوور/فِیلاوور با تشخیص تغییرات DNS، اتصال مجدد شفاف و تکرار تراکنش-آگاه است. این درایور توپولوژی Aurora/RDS (نویسنده/خواننده) را میشناسد، برای بارهای فقط-خواندنی از ریدرها استفاده میکند و در صورت نیاز به نویسنده مهاجرت میکند. همچنین قلابهای مشاهدهپذیری (لاگ/متریک/تریس)، پشتیبانی از context، سازگاری با database/sql و pgx، و پیکربندی ساده از طریق DSN/متغیرهای محیطی را ارائه میدهد. نتیجه، کاهش زحمت در تعمیرات، بهبود رفتار در رخدادها، و یکپارچهسازی مدیریت اتصال برای PostgreSQL و MySQL روی AWS است.
🟣لینک مقاله:
https://golangweekly.com/link/173079/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍5
🔻 درود دوستان عزیز، لطفا توجه کنید.
❇️ از این به بعد برای تبلیغات فقط مستقیماً به خودم پیام بدید. 👇
✨ برای دریافت تعرفههای تبلیغاتی لطفاً در پیام خصوصی با من در ارتباط باشید.
🎯 @mrbardia72
❌ هیچ تبلیغی از سمت هشتگ یار دیگه پذیرفته نخواهد شد.
🌷 با سپاس
❇️ از این به بعد برای تبلیغات فقط مستقیماً به خودم پیام بدید. 👇
✨ برای دریافت تعرفههای تبلیغاتی لطفاً در پیام خصوصی با من در ارتباط باشید.
🎯 @mrbardia72
❌ هیچ تبلیغی از سمت هشتگ یار دیگه پذیرفته نخواهد شد.
🌷 با سپاس
🤝4
Gopher Academy pinned «🔻 درود دوستان عزیز، لطفا توجه کنید. ❇️ از این به بعد برای تبلیغات فقط مستقیماً به خودم پیام بدید. 👇 ✨ برای دریافت تعرفههای تبلیغاتی لطفاً در پیام خصوصی با من در ارتباط باشید. 🎯 @mrbardia72 ❌ هیچ تبلیغی از سمت هشتگ یار دیگه پذیرفته نخواهد شد. 🌷 با سپاس»
🔵 عنوان مقاله
how a malicious Go module was exfiltrating credentials via Telegram.
🟢 خلاصه مقاله:
در این یادداشت از Golang Weekly یک نمونه سوءاستفاده زنجیره تأمین در اکوسیستم Go شرح داده میشود: ماژولی که با اجرای پنهانی (مثلاً در init) اطلاعات حساسی مثل متغیرهای محیطی، کلیدهای ابری، اعتبارنامههای Git و SSH را جمعآوری و از طریق API ربات تلگرام بهصورت HTTPS ارسال میکرد. استفاده از تلگرام بهدلیل ترافیک قابلقبول و زیرساخت آماده، به مهاجم کمک میکند تا انتقال داده را پنهان کند. نشانههای کشف شامل ارجاع به api.telegram.org، رشتههای مبهمسازیشده حاوی توکن/Chat ID، و منطق غیرعادی هنگام ساخت یا تست است. برای مقابله: قفلکردن نسخه و checksum وابستگیها، استفاده از GOPROXY و پایگاه checksum، vendors کردن کتابخانههای حساس، بازبینی تغییرات، قطع دسترسی شبکه در محیط build/test، تحلیل ایستا برای آدرسهای مشکوک، اسکن اسرار، و بهکارگیری اعتبارنامههای کماختیار و کوتاهعمر توصیه میشود. پیام نهایی: پیامرسانها را بهعنوان کانالهای بالقوه خروج داده در نظر بگیرید و حتی وابستگیهای کوچک را با دقت بررسی کنید.
🟣لینک مقاله:
https://golangweekly.com/link/173335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
how a malicious Go module was exfiltrating credentials via Telegram.
🟢 خلاصه مقاله:
در این یادداشت از Golang Weekly یک نمونه سوءاستفاده زنجیره تأمین در اکوسیستم Go شرح داده میشود: ماژولی که با اجرای پنهانی (مثلاً در init) اطلاعات حساسی مثل متغیرهای محیطی، کلیدهای ابری، اعتبارنامههای Git و SSH را جمعآوری و از طریق API ربات تلگرام بهصورت HTTPS ارسال میکرد. استفاده از تلگرام بهدلیل ترافیک قابلقبول و زیرساخت آماده، به مهاجم کمک میکند تا انتقال داده را پنهان کند. نشانههای کشف شامل ارجاع به api.telegram.org، رشتههای مبهمسازیشده حاوی توکن/Chat ID، و منطق غیرعادی هنگام ساخت یا تست است. برای مقابله: قفلکردن نسخه و checksum وابستگیها، استفاده از GOPROXY و پایگاه checksum، vendors کردن کتابخانههای حساس، بازبینی تغییرات، قطع دسترسی شبکه در محیط build/test، تحلیل ایستا برای آدرسهای مشکوک، اسکن اسرار، و بهکارگیری اعتبارنامههای کماختیار و کوتاهعمر توصیه میشود. پیام نهایی: پیامرسانها را بهعنوان کانالهای بالقوه خروج داده در نظر بگیرید و حتی وابستگیهای کوچک را با دقت بررسی کنید.
🟣لینک مقاله:
https://golangweekly.com/link/173335/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Socket
Malicious Go Module Disguised as SSH Brute Forcer Exfiltrate...
A malicious Go module posing as an SSH brute forcer exfiltrates stolen credentials to a Telegram bot controlled by a Russian-speaking threat actor.
❤2🔥2
🔵 عنوان مقاله
Building Ebitengine Games for Web Browsers
🟢 خلاصه مقاله:
این معرفی سهدقیقهای از تروِر اسلوکِم نشان میدهد چگونه بازیهای Ebitengine (موتور دوبعدی مبتنی بر Go) را برای مرورگر بسازیم. هسته کار این است: پروژه Go را با GOOS=js و GOARCH=wasm به WebAssembly کامپایل کنید، فایل wasm_exec.js را در صفحه HTML بگنجانید و بازی را روی یک canvas اجرا نمایید. در مرورگر باید به محدودیتهای فایلسیستم، بارگذاری ناهمزمان داراییها، نیاز شروع صدا با تعامل کاربر، همگامسازی رندر با requestAnimationFrame و تفاوتهای DPI و تغییر اندازه صفحه توجه کنید. برای داراییها از embed یا سرویسدهی مستقیم استفاده کرده و آنها را برای وب بهینه کنید؛ کنترلها را برای ماوس/کیبورد/تاچ طراحی و روی موبایل و مرورگرهای مختلف تست کنید. برای انتشار، یک میزبان استاتیک (مثل GitHub Pages/Netlify) کافی است، به شرط تنظیم MIME نوع application/wasm و HTTPS. نتیجه: مسیری سریع از ساخت دسکتاپ به وب با WebAssembly، یک HTML ساده و رعایت قیود مرورگر، مطابق راهنمای کوتاه و کاربردی نویسنده.
🟣لینک مقاله:
https://golangweekly.com/link/173337/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Building Ebitengine Games for Web Browsers
🟢 خلاصه مقاله:
این معرفی سهدقیقهای از تروِر اسلوکِم نشان میدهد چگونه بازیهای Ebitengine (موتور دوبعدی مبتنی بر Go) را برای مرورگر بسازیم. هسته کار این است: پروژه Go را با GOOS=js و GOARCH=wasm به WebAssembly کامپایل کنید، فایل wasm_exec.js را در صفحه HTML بگنجانید و بازی را روی یک canvas اجرا نمایید. در مرورگر باید به محدودیتهای فایلسیستم، بارگذاری ناهمزمان داراییها، نیاز شروع صدا با تعامل کاربر، همگامسازی رندر با requestAnimationFrame و تفاوتهای DPI و تغییر اندازه صفحه توجه کنید. برای داراییها از embed یا سرویسدهی مستقیم استفاده کرده و آنها را برای وب بهینه کنید؛ کنترلها را برای ماوس/کیبورد/تاچ طراحی و روی موبایل و مرورگرهای مختلف تست کنید. برای انتشار، یک میزبان استاتیک (مثل GitHub Pages/Netlify) کافی است، به شرط تنظیم MIME نوع application/wasm و HTTPS. نتیجه: مسیری سریع از ساخت دسکتاپ به وب با WebAssembly، یک HTML ساده و رعایت قیود مرورگر، مطابق راهنمای کوتاه و کاربردی نویسنده.
🟣لینک مقاله:
https://golangweekly.com/link/173337/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
Building Ebitengine Games for Web Browsers
This video explains how to build Ebitengine applications (and other Go applications) for web browsers.
https://trevors-tutorials.com/0009-building-ebitengine-games-for-web-browsers/
https://ebitengine.org
0:00 Intro and Table of Contents
0:28 WebAssembly…
https://trevors-tutorials.com/0009-building-ebitengine-games-for-web-browsers/
https://ebitengine.org
0:00 Intro and Table of Contents
0:28 WebAssembly…
❤1
Forwarded from DevOps Labdon
رد پیشنهادهای چند میلیون دلاری؛ خالق VLC میخواهد نرمافزارش رایگان بماند
https://www.zoomit.ir/software-application/447008-skipping-multi-million-dollar-offer-vlc/
https://www.zoomit.ir/software-application/447008-skipping-multi-million-dollar-offer-vlc/
زومیت
رد پیشنهادهای چند میلیون دلاری؛ خالق VLC میخواهد نرمافزارش رایگان بماند
توسعهدهندهی ویالسی میگوید از پیشنهادهای چند میلیون دلاری شرکتهای مطرح چشمپوشی کرده است تا این نرمافزار رایگان بماند.
❤14 8
🔵 عنوان مقاله
has now released Omarchy 2.0
🟢 خلاصه مقاله:
**اومارچی ۲.۰ منتشر شده است و یک ویدئوی ۳۰ دقیقهای همراه آن ارائه شده که روند کار و ویژگیها را مرور میکند. این عرضه در روزهای اخیر با استقبال و توجه قابلتوجهی از سوی توسعهدهندگان در شبکههای اجتماعی روبهرو شده و بحثهای پررونقی را برانگیخته است.
🟣لینک مقاله:
https://golangweekly.com/link/173359/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
has now released Omarchy 2.0
🟢 خلاصه مقاله:
**اومارچی ۲.۰ منتشر شده است و یک ویدئوی ۳۰ دقیقهای همراه آن ارائه شده که روند کار و ویژگیها را مرور میکند. این عرضه در روزهای اخیر با استقبال و توجه قابلتوجهی از سوی توسعهدهندگان در شبکههای اجتماعی روبهرو شده و بحثهای پررونقی را برانگیخته است.
🟣لینک مقاله:
https://golangweekly.com/link/173359/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Hey
Omarchy 2.0
Omarchy 2.0 was released on Linux's 34th birthday as a gift to perhaps the greatest open-source project the world has ever known. Not only does Linux run 95% of all servers on the web, billions of devices as an embedded OS, but it also turns out to be an…
Forwarded from Bardia & Erfan
🚀 به دنیای توسعه و تکنولوژی خوش اومدی!
اگر به موضوعات زیر علاقهمندی:
🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصتهای شغلی ریموت (خارجی و داخلی)
ما برات یه مجموعه کانالهای تخصصی ساختیم تا همیشه بهروز، حرفهای و الهامبخش بمونی!
📚 یادگیری، فرصت، شبکهسازی و پیشرفت، همش اینجاست...
📌 از این لینک همه چنلهامونو یهجا ببین و جوین شو:
👉 https://t.iss.one/addlist/QtXiQlynEJwzODBk
اگر به موضوعات زیر علاقهمندی:
🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصتهای شغلی ریموت (خارجی و داخلی)
ما برات یه مجموعه کانالهای تخصصی ساختیم تا همیشه بهروز، حرفهای و الهامبخش بمونی!
📚 یادگیری، فرصت، شبکهسازی و پیشرفت، همش اینجاست...
📌 از این لینک همه چنلهامونو یهجا ببین و جوین شو:
👉 https://t.iss.one/addlist/QtXiQlynEJwzODBk
❤2
🔵 عنوان مقاله
html-to-markdown 2.4: Convert HTML to Markdown
🟢 خلاصه مقاله:
این ابزار با نام html-to-markdown 2.4 محتوای HTML را با پارسکردن واقعی ساختار آن به Markdown تبدیل میکند، نه با الگوهای regex؛ بنابراین در برابر موارد پیچیده و مرزی پایدارتر است. هم بهصورت ابزار خط فرمان و هم بهعنوان کتابخانه Go قابل استفاده است و برای سناریوهایی مثل مهاجرت محتوا و تولید وبسایتهای استاتیک مناسب است.
🟣لینک مقاله:
https://golangweekly.com/link/173347/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
html-to-markdown 2.4: Convert HTML to Markdown
🟢 خلاصه مقاله:
این ابزار با نام html-to-markdown 2.4 محتوای HTML را با پارسکردن واقعی ساختار آن به Markdown تبدیل میکند، نه با الگوهای regex؛ بنابراین در برابر موارد پیچیده و مرزی پایدارتر است. هم بهصورت ابزار خط فرمان و هم بهعنوان کتابخانه Go قابل استفاده است و برای سناریوهایی مثل مهاجرت محتوا و تولید وبسایتهای استاتیک مناسب است.
🟣لینک مقاله:
https://golangweekly.com/link/173347/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Html-To-Markdown
Convert entire websites to markdown | html-to-markdown
Accurate online converter. Convert any HTML input to Markdown output. Supports entire websites & emails. No invalid Markdown — it just works.
🤝2❤1
🔵 عنوان مقاله
his experiences at last week's GopherCon UK 2025.
🟢 خلاصه مقاله:
** این یادداشت در Golang Weekly گزارشی تأملمحور از تجربه نویسنده در GopherCon UK 2025 (هفته گذشته) است؛ بر بلوغ اکوسیستم Go، سادگی و قابلیت اتکا تأکید دارد و موضوعاتی مانند الگوهای همزمانیِ قابلفهم، بهینهسازی مبتنی بر پروفایلینگ، تست مقیاسپذیر، تجربه توسعهدهنده، و امنیت زنجیره تأمین را برجسته میکند. ارزش «hallway track» و گفتگوهای غیررسمی برای انتقال تجربههای عملی و اتخاذ تغییرات کوچک اما اثرگذار نیز پررنگ است. نویسنده با قدردانی از برگزارکنندگان، توصیههایی عملی مثل اولویت دادن به وضوح کد، شروع بهینهسازی با اندازهگیری، و سرمایهگذاری روی ابزارهای بازخورد سریع ارائه میکند و خوانندگان را به پیگیری منابع رسمی کنفرانس و آزمودن ایدهها در پروژههای خود تشویق میکند.
🟣لینک مقاله:
https://golangweekly.com/link/173082/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
his experiences at last week's GopherCon UK 2025.
🟢 خلاصه مقاله:
** این یادداشت در Golang Weekly گزارشی تأملمحور از تجربه نویسنده در GopherCon UK 2025 (هفته گذشته) است؛ بر بلوغ اکوسیستم Go، سادگی و قابلیت اتکا تأکید دارد و موضوعاتی مانند الگوهای همزمانیِ قابلفهم، بهینهسازی مبتنی بر پروفایلینگ، تست مقیاسپذیر، تجربه توسعهدهنده، و امنیت زنجیره تأمین را برجسته میکند. ارزش «hallway track» و گفتگوهای غیررسمی برای انتقال تجربههای عملی و اتخاذ تغییرات کوچک اما اثرگذار نیز پررنگ است. نویسنده با قدردانی از برگزارکنندگان، توصیههایی عملی مثل اولویت دادن به وضوح کد، شروع بهینهسازی با اندازهگیری، و سرمایهگذاری روی ابزارهای بازخورد سریع ارائه میکند و خوانندگان را به پیگیری منابع رسمی کنفرانس و آزمودن ایدهها در پروژههای خود تشویق میکند.
🟣لینک مقاله:
https://golangweekly.com/link/173082/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Jamie Tanna | Software Engineer
GopherCon UK 2025 · Jamie Tanna | Software Engineer
A writeup of the GopherCon UK 2025 conference.
❤2
🔵 عنوان مقاله
Josh W Comeau has a new, fantastic guide to SVG paths.
🟢 خلاصه مقاله:
**راهنمای تازهای از جاش دابلیو. کومو درباره مسیرهای SVG منتشر شده که درک نحو و ساخت مسیرها را ساده میکند و نشان میدهد چگونه با تغییرات کوچک میتوان گرافیکهای دقیق و کمحجم ساخت. همچنین جدیدترین مطلب معرفیشده در خبرنامه Golang Weekly مروری منتخب و کوتاه از تازههای دنیای Go، ابزارها و نکات کاربردی ارائه میدهد تا پیگیری اخبار و منابع پراکنده آسانتر شود.
🟣لینک مقاله:
https://golangweekly.com/link/173110/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Josh W Comeau has a new, fantastic guide to SVG paths.
🟢 خلاصه مقاله:
**راهنمای تازهای از جاش دابلیو. کومو درباره مسیرهای SVG منتشر شده که درک نحو و ساخت مسیرها را ساده میکند و نشان میدهد چگونه با تغییرات کوچک میتوان گرافیکهای دقیق و کمحجم ساخت. همچنین جدیدترین مطلب معرفیشده در خبرنامه Golang Weekly مروری منتخب و کوتاه از تازههای دنیای Go، ابزارها و نکات کاربردی ارائه میدهد تا پیگیری اخبار و منابع پراکنده آسانتر شود.
🟣لینک مقاله:
https://golangweekly.com/link/173110/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Joshwcomeau
An Interactive Guide to SVG Paths • Josh W. Comeau
SVG gives us many different primitives to work with, but by far the most powerful is the <path> element. Unfortunately, it’s also the most inscrutable, with its compact Regex-style syntax. In this tutorial, we’ll demystify this infamous element and see some…
Forwarded from Software Engineer Labdon
ا"Architecture Decision Record (ADR) Template" یعنی یک قالب (Template) برای ثبت و مستندسازی تصمیمهای معماری نرمافزار.
به طور ساده:
وقتی در طراحی یک سیستم نرمافزاری تصمیمهای مهمی مثل انتخاب دیتابیس، معماری میکروسرویسها، الگوی کشینگ، یا حتی انتخاب یک کتابخانه مهم گرفته میشود، این تصمیمها باید مستند شوند تا بعداً تیم یا افراد جدید بدانند چرا آن انتخاب انجام شده و چه گزینههایی رد شدهاند.
یک ADR Template کمک میکند این مستندسازی همیشه با یک ساختار مشخص و یکسان انجام شود.
---
### ساختار رایج یک ADR Template
معمولاً شامل بخشهای زیر است:
1. Title (عنوان تصمیم)
یک عنوان کوتاه و گویا.
2. Status (وضعیت)
مثلاً: Proposed, Accepted, Rejected, Superseded
3. Context (زمینه / دلیل نیاز به تصمیم)
توضیح اینکه چه مشکلی وجود داشته یا چه نیازی باعث شد که تصمیم گرفته شود.
4. Decision (تصمیم نهایی)
تصمیمی که گرفته شد (مثلاً "ما از PostgreSQL به جای MySQL استفاده میکنیم").
5. Consequences (پیامدها)
مزایا و معایب این تصمیم، و اثراتی که بر سیستم دارد.
---
### مثال ساده
➖➖➖➖➖➖➖➖
👑 @software_Labdon
به طور ساده:
وقتی در طراحی یک سیستم نرمافزاری تصمیمهای مهمی مثل انتخاب دیتابیس، معماری میکروسرویسها، الگوی کشینگ، یا حتی انتخاب یک کتابخانه مهم گرفته میشود، این تصمیمها باید مستند شوند تا بعداً تیم یا افراد جدید بدانند چرا آن انتخاب انجام شده و چه گزینههایی رد شدهاند.
یک ADR Template کمک میکند این مستندسازی همیشه با یک ساختار مشخص و یکسان انجام شود.
---
### ساختار رایج یک ADR Template
معمولاً شامل بخشهای زیر است:
1. Title (عنوان تصمیم)
یک عنوان کوتاه و گویا.
2. Status (وضعیت)
مثلاً: Proposed, Accepted, Rejected, Superseded
3. Context (زمینه / دلیل نیاز به تصمیم)
توضیح اینکه چه مشکلی وجود داشته یا چه نیازی باعث شد که تصمیم گرفته شود.
4. Decision (تصمیم نهایی)
تصمیمی که گرفته شد (مثلاً "ما از PostgreSQL به جای MySQL استفاده میکنیم").
5. Consequences (پیامدها)
مزایا و معایب این تصمیم، و اثراتی که بر سیستم دارد.
---
### مثال ساده
# ADR 001: انتخاب دیتابیس اصلی
## Status
Accepted
## Context
ما نیاز به یک دیتابیس داریم که قابلیت ذخیره دادههای ساختیافته و مقیاسپذیری داشته باشد. تیم تجربه خوبی با SQL دارد.
## Decision
انتخاب PostgreSQL به عنوان دیتابیس اصلی.
## Consequences
+ ویژگیهای پیشرفته (JSONB، Full-text search)
+ جامعه کاربری بزرگ
- یادگیری برخی قابلیتهای خاص برای اعضای تیم جدید
➖➖➖➖➖➖➖➖
👑 @software_Labdon
Forwarded from Gopher Job
🟢 اگر کارفرما یا کارجو هستی
و دنبال نیرو یا موقعیت شغلی توی حوزههای زیر هستی، به من پیام بده 👇
⚔️ DevOps Engineer
⚔️ Site Reliability Engineer (SRE)
⚔️ Linux SysAdmin
⚔️ Cloud Engineer (AWS/GCP/Azure)
⚔️ Infrastructure Engineer
⚔️ Security Engineer (DevSecOps/Linux)
⚔️ Automation Engineer
⚔️ Platform Engineer
⚔️ Software Security
⚔️ Software QA
⚔️ Backend
⚔️ AI Engineer / Machine Learning
⚔️ Database Engineer / DBA
📩 همین الان پیام بده و استارت بزن! تا هم بتونی نیروی خوب پیدا کنی و یا یتونی یه موقعیت شغلی مناسب پیدا کنی
به من پیام بده آگهی یا رزومه ات رو قرار بدم اینجا
@mrbardia72
و دنبال نیرو یا موقعیت شغلی توی حوزههای زیر هستی، به من پیام بده 👇
⚔️ DevOps Engineer
⚔️ Site Reliability Engineer (SRE)
⚔️ Linux SysAdmin
⚔️ Cloud Engineer (AWS/GCP/Azure)
⚔️ Infrastructure Engineer
⚔️ Security Engineer (DevSecOps/Linux)
⚔️ Automation Engineer
⚔️ Platform Engineer
⚔️ Software Security
⚔️ Software QA
⚔️ Backend
⚔️ AI Engineer / Machine Learning
⚔️ Database Engineer / DBA
📩 همین الان پیام بده و استارت بزن! تا هم بتونی نیروی خوب پیدا کنی و یا یتونی یه موقعیت شغلی مناسب پیدا کنی
به من پیام بده آگهی یا رزومه ات رو قرار بدم اینجا
@mrbardia72
🔵 عنوان مقاله
you can read it in article form.
🟢 خلاصه مقاله:
این نوشته دو مطلب فنی را معرفی میکند: نخست، ترور اسلاکِم به رفتاری ظریف در الحاق عناصر به اسلایسهای Go میپردازد؛ جایی که بهدلیل اشتراک آرایهٔ پشتیبان، append میتواند بهصورت غیرمنتظره دادهٔ اسلایسهای دیگر را تغییر دهد یا بسته به ظرفیت، باعث تخصیص جدید شود. نتیجه این است که باید حواسمان به ظرفیت، اشتراک حافظه و جداسازی داده با copy یا تخصیص هدفمند باشد. دوم، الی بندرسکی پیادهسازی یک مفسر کوچک Forth را در Go و C مقایسه میکند تا تفاوتهای عملی میان ایمنی و سهولت (در Go) و کنترل و سربار کم (در C) را نشان دهد. پیام کلی: با درک دقیق جزییات زبان و مدل حافظه، میتوان از خطاهای پنهان پرهیز کرد و انتخابهای بهینهتری انجام داد.
🟣لینک مقاله:
https://golangweekly.com/link/173338/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
you can read it in article form.
🟢 خلاصه مقاله:
این نوشته دو مطلب فنی را معرفی میکند: نخست، ترور اسلاکِم به رفتاری ظریف در الحاق عناصر به اسلایسهای Go میپردازد؛ جایی که بهدلیل اشتراک آرایهٔ پشتیبان، append میتواند بهصورت غیرمنتظره دادهٔ اسلایسهای دیگر را تغییر دهد یا بسته به ظرفیت، باعث تخصیص جدید شود. نتیجه این است که باید حواسمان به ظرفیت، اشتراک حافظه و جداسازی داده با copy یا تخصیص هدفمند باشد. دوم، الی بندرسکی پیادهسازی یک مفسر کوچک Forth را در Go و C مقایسه میکند تا تفاوتهای عملی میان ایمنی و سهولت (در Go) و کنترل و سربار کم (در C) را نشان دهد. پیام کلی: با درک دقیق جزییات زبان و مدل حافظه، میتوان از خطاهای پنهان پرهیز کرد و انتخابهای بهینهتری انجام داد.
🟣لینک مقاله:
https://golangweekly.com/link/173338/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Trevor's Tutorials
9. Building Ebitengine Games for Web Browsers
A guide on how to build Ebitengine games to run in web browsers.
❤3
🔵 عنوان مقاله
What is the Go Proxy Even Doing?
🟢 خلاصه مقاله:
گو برای پایداری و تکرارپذیری ساختها از یک پروکسی ماژول استفاده میکند که با کشکردن و سرویسدهی نسخهها، وابستگی توسعهدهندگان به مخازن مبدا را کاهش میدهد. اما همین طراحی میتواند باعث کلونهای تکراری و فشار اضافه بر سرورهای بالادستی شود؛ یعنی یک نسخه چندبار کلون میشود یا درخواستهای پشتسرهم برای همان تگها و کامیتها ثبت میگردد. تد با لاگهای واقعی نشان میدهد این الگو چگونه رخ میدهد و سپس توضیح میدهد برای محافظت از سرورش چه کرده است؛ از جمله گذاشتن محدودیت نرخ و فیلتر کردن ترافیک تکراری تا جلوی بار غیرضروری گرفته شود. جمعبندی: پروکسی به مصرفکنندگان بستهها کمک میکند، اما میتواند هزینه را به بالادست منتقل کند؛ بنابراین نگهدارندگان باید از این الگوها آگاه باشند و دفاعهای سبکوزنی برای پایداری سرویس خود در نظر بگیرند.
🟣لینک مقاله:
https://golangweekly.com/link/173087/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
What is the Go Proxy Even Doing?
🟢 خلاصه مقاله:
گو برای پایداری و تکرارپذیری ساختها از یک پروکسی ماژول استفاده میکند که با کشکردن و سرویسدهی نسخهها، وابستگی توسعهدهندگان به مخازن مبدا را کاهش میدهد. اما همین طراحی میتواند باعث کلونهای تکراری و فشار اضافه بر سرورهای بالادستی شود؛ یعنی یک نسخه چندبار کلون میشود یا درخواستهای پشتسرهم برای همان تگها و کامیتها ثبت میگردد. تد با لاگهای واقعی نشان میدهد این الگو چگونه رخ میدهد و سپس توضیح میدهد برای محافظت از سرورش چه کرده است؛ از جمله گذاشتن محدودیت نرخ و فیلتر کردن ترافیک تکراری تا جلوی بار غیرضروری گرفته شود. جمعبندی: پروکسی به مصرفکنندگان بستهها کمک میکند، اما میتواند هزینه را به بالادست منتقل کند؛ بنابراین نگهدارندگان باید از این الگوها آگاه باشند و دفاعهای سبکوزنی برای پایداری سرویس خود در نظر بگیرند.
🟣لینک مقاله:
https://golangweekly.com/link/173087/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤2
تابع
توضیح دقیقتر:
- پکیج: این تابع در پکیج
- کاربرد:
- ساختار:
-
-
مثال:
چرا از
- وقتی چندین گوروتین به یک متغیر مشترک دسترسی دارند، استفاده از عملیات معمولی (غیراتمیک) ممکن است به مشکلات همزمانی (concurrency issues) مثل race condition منجر شود.
-
نکات:
- این تابع فقط برای متغیرهای از نوع
- عملیات اتمیک معمولاً سریعتر از استفاده از قفلها (مثل
➖➖➖➖➖➖➖➖
👑 @gopher_academy
atomic.LoadInt32
در زبان برنامهنویسی Go (گولنگ) برای خواندن ایمن (safe) یک مقدار 32 بیتی از نوع int32
از حافظه به صورت اتمیک (atomic) استفاده میشود. عملیات اتمیک به این معناست که این عملیات به صورت کامل و بدون وقفه انجام میشود و از تداخل (race condition) بین گوروتینها (goroutines) جلوگیری میکند.توضیح دقیقتر:
- پکیج: این تابع در پکیج
sync/atomic
قرار دارد.- کاربرد:
atomic.LoadInt32
برای خواندن مقدار یک متغیر int32
از حافظه به صورت اتمیک استفاده میشود. این تابع تضمین میکند که مقدار خواندهشده دقیق و بدون تأثیر از تغییرات همزمان توسط گوروتینهای دیگر است.- ساختار:
func LoadInt32(addr *int32) (val int32)
-
addr
: اشارهگر به متغیر int32
که میخواهید مقدارش را بخوانید.-
val
: مقداری که از حافظه خوانده میشود و به عنوان خروجی برگردانده میشود.مثال:
package main
import (
"fmt"
"sync/atomic"
)
func main() {
var counter int32 = 42
// خواندن مقدار counter به صورت اتمیک
value := atomic.LoadInt32(&counter)
fmt.Println("Value:", value) // خروجی: Value: 42
}
چرا از
atomic.LoadInt32
استفاده کنیم؟- وقتی چندین گوروتین به یک متغیر مشترک دسترسی دارند، استفاده از عملیات معمولی (غیراتمیک) ممکن است به مشکلات همزمانی (concurrency issues) مثل race condition منجر شود.
-
atomic.LoadInt32
تضمین میکند که مقدار خواندهشده همیشه معتبر و بهروز است، بدون اینکه نیازی به قفل (lock) باشد.نکات:
- این تابع فقط برای متغیرهای از نوع
int32
کار میکند. برای انواع دیگر (مثل int64
یا uint32
) توابع مشابهی مثل atomic.LoadInt64
یا atomic.LoadUint32
وجود دارد.- عملیات اتمیک معمولاً سریعتر از استفاده از قفلها (مثل
sync.Mutex
) هستند، اما فقط برای عملیاتهای ساده مثل خواندن یا نوشتن مناسباند.➖➖➖➖➖➖➖➖
👑 @gopher_academy
کجا نباید از داداشمون RabbitMQ استفاده کنیم؟
1- وقتی نیاز به real-time response داریم.
چرا؟ چون RabbitMQ صف هست و ارسال/دریافت پیام ممکنه با تاخیر انجام شود.
پیشنهادم WebSocket، gRPC یا Redis Pub/Sub است.
2- وقتی به message replay یا history نیاز داریم
چرا؟ چون RabbitMQ پیامها رو بعد از مصرف حذف میکند. البته میشه کانفیگ کرد که نگه داره.
3- زمانی که پیامها حجمشون خیلی زیاد است.
چرا؟ چون در حجم بالا RabbitMQ دچار افت performance میشود. Kafka رو پیشنهاد میکنم برای اینجا.
4- وقتی ترتیب دقیق پردازش پیامها خیلی مهم است. چرا؟ چون RabbitMQ تضمین دقیقی برای ترتیب پیامها ندارد. اینجا هم پیشنهادم Kafka است.
<Amirhossein Dehghan/>
1- وقتی نیاز به real-time response داریم.
چرا؟ چون RabbitMQ صف هست و ارسال/دریافت پیام ممکنه با تاخیر انجام شود.
پیشنهادم WebSocket، gRPC یا Redis Pub/Sub است.
2- وقتی به message replay یا history نیاز داریم
چرا؟ چون RabbitMQ پیامها رو بعد از مصرف حذف میکند. البته میشه کانفیگ کرد که نگه داره.
3- زمانی که پیامها حجمشون خیلی زیاد است.
چرا؟ چون در حجم بالا RabbitMQ دچار افت performance میشود. Kafka رو پیشنهاد میکنم برای اینجا.
4- وقتی ترتیب دقیق پردازش پیامها خیلی مهم است. چرا؟ چون RabbitMQ تضمین دقیقی برای ترتیب پیامها ندارد. اینجا هم پیشنهادم Kafka است.
<Amirhossein Dehghan/>
👍4 3❤2🐳1