🔵 عنوان مقاله
Goavatar: Generate Unique, Symmetric Identicons Based on a String
🟢 خلاصه مقاله:
این مقاله روشی ساده برای تولید آیکونهای پایه بر اساس یک رشته مانند نام کاربری ارائه میدهد که به صورت قطعی و یکنواخت انجام میشود. این آیکونها که بر اساس ورودیهای رشته مشخص شدهاند، میتوانند به عنوان وسیلهای برای شناسایی بصری به کار روند. این تکنیک میتواند در موقعیتهایی که شناسایی سریع کاربران مهم است، مانند انجمنها یا برنامههای چت، مفید باشد.
🟣لینک مقاله:
https://golangweekly.com/link/167344/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Goavatar: Generate Unique, Symmetric Identicons Based on a String
🟢 خلاصه مقاله:
این مقاله روشی ساده برای تولید آیکونهای پایه بر اساس یک رشته مانند نام کاربری ارائه میدهد که به صورت قطعی و یکنواخت انجام میشود. این آیکونها که بر اساس ورودیهای رشته مشخص شدهاند، میتوانند به عنوان وسیلهای برای شناسایی بصری به کار روند. این تکنیک میتواند در موقعیتهایی که شناسایی سریع کاربران مهم است، مانند انجمنها یا برنامههای چت، مفید باشد.
🟣لینک مقاله:
https://golangweekly.com/link/167344/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - MuhammadSaim/goavatar: A lightweight Go package to generate unique, symmetric identicons based on an input string. Easily…
A lightweight Go package to generate unique, symmetric identicons based on an input string. Easily integrate with your Go project to create visual avatars for users. - MuhammadSaim/goavatar
👍2
🔵 عنوان مقاله
A Guide to Optimizing for High Performance in Go
🟢 خلاصه مقاله:
این مقاله به بررسی تکنیکهای بهینهسازی مختلف برای توسعهدهندگان Go میپردازد تا به آنها کمک کند نرمافزارهای سریعتر و بهینهتری بسازند. تمرکز اولیه بر روی الگوهای رایجی مثل استفاده از استخرهای اشیاء، همترازسازی میدانهای ساختار، و استفاده از استخرهای کارگر است. همچنین، راهنمایی برای شبکههای با عملکرد بالا به زودی ارائه خواهد شد تا اطلاعات عمیقتری در مورد طراحی برنامههای کاربردی شبکهای که میتوانند مقادیر زیادی داده را به طور مؤثر مدیریت کنند، فراهم آورد.
🟣لینک مقاله:
https://golangweekly.com/link/167572/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
A Guide to Optimizing for High Performance in Go
🟢 خلاصه مقاله:
این مقاله به بررسی تکنیکهای بهینهسازی مختلف برای توسعهدهندگان Go میپردازد تا به آنها کمک کند نرمافزارهای سریعتر و بهینهتری بسازند. تمرکز اولیه بر روی الگوهای رایجی مثل استفاده از استخرهای اشیاء، همترازسازی میدانهای ساختار، و استفاده از استخرهای کارگر است. همچنین، راهنمایی برای شبکههای با عملکرد بالا به زودی ارائه خواهد شد تا اطلاعات عمیقتری در مورد طراحی برنامههای کاربردی شبکهای که میتوانند مقادیر زیادی داده را به طور مؤثر مدیریت کنند، فراهم آورد.
🟣لینک مقاله:
https://golangweekly.com/link/167572/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
goperf.dev
Go Optimization Guide
Patterns and Techniques for Writing High-Performance Applications with Go
👍2
🔵 عنوان مقاله
When is it OK to Panic in Go?
🟢 خلاصه مقاله:
مقالهای که توسط الکس نوشته شده، به بررسی استفاده از واژهی "پنیک" یا هراس در برنامهنویسی پرداخته است. ضربالمثل معروف بازی گو، "هراس نکن"، نه تنها یک توصیه خوب برای زندگی است بلکه نشان میدهد که نباید برای مدیریت خطاهای معمول از هراس استفاده کرد. در این مقاله، الکس شرایطی را شرح داده که در آنها به کارگیری هراس مناسب است، مانند زمانهایی که برنامه با خطای کشندهای مواجه میشود که قابلیت بازیابی ندارد. همچنین تأکید میکند که استفاده از هراس به عنوان رویکرد اولیه برای مدیریت همه خطاها میتواند به نوشتن کدی کمتر قابل اعتماد و دشوارتر برای نگهداری منجر شود و پیشنهاداتی برای مقابله با خطاهایی که قابلیت بازیابی دارند ارائه میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/167579/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
When is it OK to Panic in Go?
🟢 خلاصه مقاله:
مقالهای که توسط الکس نوشته شده، به بررسی استفاده از واژهی "پنیک" یا هراس در برنامهنویسی پرداخته است. ضربالمثل معروف بازی گو، "هراس نکن"، نه تنها یک توصیه خوب برای زندگی است بلکه نشان میدهد که نباید برای مدیریت خطاهای معمول از هراس استفاده کرد. در این مقاله، الکس شرایطی را شرح داده که در آنها به کارگیری هراس مناسب است، مانند زمانهایی که برنامه با خطای کشندهای مواجه میشود که قابلیت بازیابی ندارد. همچنین تأکید میکند که استفاده از هراس به عنوان رویکرد اولیه برای مدیریت همه خطاها میتواند به نوشتن کدی کمتر قابل اعتماد و دشوارتر برای نگهداری منجر شود و پیشنهاداتی برای مقابله با خطاهایی که قابلیت بازیابی دارند ارائه میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/167579/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
www.alexedwards.net
When is it OK to panic in Go? - Alex Edwards
🔵 عنوان مقاله
Goodbye Core Types, Hello Go As We Know and Love It
🟢 خلاصه مقاله:
مقاله به بررسی تکامل سیستم نوعبندی زبان برنامهنویسی Go میپردازد که با معرفی جنریکها در نسخه 1.18 این زبان، سطح بالاتری از انتزاع برای انواع پایه ارائه داد ولی این ویژگی جدید، پیچیدگیهایی را در ویژگیهای ساده زبان به وجود آورد. با ارزیابیهای بهدست آمده و واکنشهای جامعه کاربران، تصمیم بر این شد که در نسخه 1.25، این لایههای انتزاعی حذف شوند تا سادگی و شفافیت اصلی زبان حفظ شود و کدنویسی روزانه و مشخصات زبان سادهتر شود.
🟣لینک مقاله:
https://golangweekly.com/link/167576/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Goodbye Core Types, Hello Go As We Know and Love It
🟢 خلاصه مقاله:
مقاله به بررسی تکامل سیستم نوعبندی زبان برنامهنویسی Go میپردازد که با معرفی جنریکها در نسخه 1.18 این زبان، سطح بالاتری از انتزاع برای انواع پایه ارائه داد ولی این ویژگی جدید، پیچیدگیهایی را در ویژگیهای ساده زبان به وجود آورد. با ارزیابیهای بهدست آمده و واکنشهای جامعه کاربران، تصمیم بر این شد که در نسخه 1.25، این لایههای انتزاعی حذف شوند تا سادگی و شفافیت اصلی زبان حفظ شود و کدنویسی روزانه و مشخصات زبان سادهتر شود.
🟣لینک مقاله:
https://golangweekly.com/link/167576/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Goodbye core types - Hello Go as we know and love it! - The Go Programming Language
Go 1.25 simplifies the language spec by removing the notion of core types
👍2
🔵 عنوان مقاله
Mockery v3: Create Mock Implementations of Interfaces
🟢 خلاصه مقاله:
در این مقاله، ادعا شده است که Mockery v3 توانایی کنار زدن تمام فریمورکهای مبتنی بر رابط برنامهنویسی در محیط برنامهنویسی گو را دارد. نویسنده با بررسی ویژگیهای Mockery v3 و مقایسه آن با سایر فریمورکهای موجود، تلاش میکند تا این ادعای بزرگ را ثابت کند. همچنین، خوانندگان تشویق میشوند که برای بررسی دقیقتر و استفاده از این ابزار به صفحه اصلی آن مراجعه کنند، جایی که میتوانند اطلاعات کامل، نظرات کاربران، و دستورالعملهای دانلود را پیدا کنند.
🟣لینک مقاله:
https://golangweekly.com/link/168167/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Mockery v3: Create Mock Implementations of Interfaces
🟢 خلاصه مقاله:
در این مقاله، ادعا شده است که Mockery v3 توانایی کنار زدن تمام فریمورکهای مبتنی بر رابط برنامهنویسی در محیط برنامهنویسی گو را دارد. نویسنده با بررسی ویژگیهای Mockery v3 و مقایسه آن با سایر فریمورکهای موجود، تلاش میکند تا این ادعای بزرگ را ثابت کند. همچنین، خوانندگان تشویق میشوند که برای بررسی دقیقتر و استفاده از این ابزار به صفحه اصلی آن مراجعه کنند، جایی که میتوانند اطلاعات کامل، نظرات کاربران، و دستورالعملهای دانلود را پیدا کنند.
🟣لینک مقاله:
https://golangweekly.com/link/168167/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
topofmind.dev
Announcing Mockery v3 - Top of Mind
The last Go code generation framework you'll ever need.
👍1
🔵 عنوان مقاله
Fuzzing Go Binaries with LibAFL
🟢 خلاصه مقاله:
سGoLibAFL یک ابزار جدید است که با استفاده از کتابخانه فازینگ LibAFL ساخته شده با زبان برنامهنویسی Rust، تکنیکهای پیشرفته فازینگ را در اختیار توسعهدهندگان زبان Go قرار میدهد. این مقاله GoLibAFL را با راهحلهای موجود مقایسه کرده، نمونههایی از کاربرد آن را نشان میدهد و به تفصیل در مورد چگونگی سفارشیسازی LibAFL برای موارد استفاده در Go بحث میکند. GoLibAFL امنیت و روند توسعه برنامههای نوشته شده به زبان Go را بهبود میبخشد.
🟣لینک مقاله:
https://golangweekly.com/link/168161/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Fuzzing Go Binaries with LibAFL
🟢 خلاصه مقاله:
سGoLibAFL یک ابزار جدید است که با استفاده از کتابخانه فازینگ LibAFL ساخته شده با زبان برنامهنویسی Rust، تکنیکهای پیشرفته فازینگ را در اختیار توسعهدهندگان زبان Go قرار میدهد. این مقاله GoLibAFL را با راهحلهای موجود مقایسه کرده، نمونههایی از کاربرد آن را نشان میدهد و به تفصیل در مورد چگونگی سفارشیسازی LibAFL برای موارد استفاده در Go بحث میکند. GoLibAFL امنیت و روند توسعه برنامههای نوشته شده به زبان Go را بهبود میبخشد.
🟣لینک مقاله:
https://golangweekly.com/link/168161/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
www.srlabs.de
GoLibAFL — Fuzzing Go binaries using LibAFL
Nils Ollrogge, Bruno Produit
❤1
🔵 عنوان مقاله
Bufstream: Robust Streaming for gRPC
🟢 خلاصه مقاله:
**
اBufstream یک سیستم جدید و مخصوصی است که برای پیادهسازی Kafka با استفاده از جریانهای gRPC در محیط ابری طراحی شده است. این سیستم که ترکیبی از فناوری پخش جریان موزون Kafka و کارایی و سرعت gRPC است، بهخوبی آزمونهای سختگیرانه Jepsen را پشت سر گذاشته و در شرایط مختلف شبکه و تنش، دادهها را با دقت و قابلیت اطمینان بالا حفظ میکند.
🟣لینک مقاله:
https://golangweekly.com/link/168169/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Bufstream: Robust Streaming for gRPC
🟢 خلاصه مقاله:
**
اBufstream یک سیستم جدید و مخصوصی است که برای پیادهسازی Kafka با استفاده از جریانهای gRPC در محیط ابری طراحی شده است. این سیستم که ترکیبی از فناوری پخش جریان موزون Kafka و کارایی و سرعت gRPC است، بهخوبی آزمونهای سختگیرانه Jepsen را پشت سر گذاشته و در شرایط مختلف شبکه و تنش، دادهها را با دقت و قابلیت اطمینان بالا حفظ میکند.
🟣لینک مقاله:
https://golangweekly.com/link/168169/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
buf.build
Bufstream is the only cloud-native Kafka implementation validated by Jepsen
Jepsen's Bufstream report bolsters enterprise use of Buf’s elastic Kafka-compatible streaming platform to enable data quality, enforce governance policies, and cut costs 8x
❤1
🔵 عنوان مقاله
Vite Backend Integration for Go
🟢 خلاصه مقاله:
این مقاله به بررسی روشهای ادغام یک فرانتاند مبتنی بر Vite با بکاند مبتنی بر Go میپردازد. Vite به دلیل بازسازی سریع و امکاناتی چون جایگزینی ماژولهای داغ و بستهبندی بهینهشده، تجربه توسعه فرانتاند را بهبود میبخشد. از طرفی، Go برای بکاند به دلیل عملکرد قوی، کارایی بالا و مدیریت بهینه منابع در مدیریت ترافیک شبکه و پردازش داده مناسب است. ترکیب این دو فناوری اغلب از طریق تماسهای API برای برقراری ارتباط بین فرانتاند و بکاند انجام میگیرد، که نتیجه آن ساختاری قابل ارتقا و قابل نگهداری است که به خوبی پاسخگوی نیازهای مدرن تولید نرمافزار میشود.
🟣لینک مقاله:
https://golangweekly.com/link/168171/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Vite Backend Integration for Go
🟢 خلاصه مقاله:
این مقاله به بررسی روشهای ادغام یک فرانتاند مبتنی بر Vite با بکاند مبتنی بر Go میپردازد. Vite به دلیل بازسازی سریع و امکاناتی چون جایگزینی ماژولهای داغ و بستهبندی بهینهشده، تجربه توسعه فرانتاند را بهبود میبخشد. از طرفی، Go برای بکاند به دلیل عملکرد قوی، کارایی بالا و مدیریت بهینه منابع در مدیریت ترافیک شبکه و پردازش داده مناسب است. ترکیب این دو فناوری اغلب از طریق تماسهای API برای برقراری ارتباط بین فرانتاند و بکاند انجام میگیرد، که نتیجه آن ساختاری قابل ارتقا و قابل نگهداری است که به خوبی پاسخگوی نیازهای مدرن تولید نرمافزار میشود.
🟣لینک مقاله:
https://golangweekly.com/link/168171/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - olivere/vite: Vite backend integration for Go
Vite backend integration for Go. Contribute to olivere/vite development by creating an account on GitHub.
❤2
🔵 عنوان مقاله
sync.Pool is Not a Silver Bullet
🟢 خلاصه مقاله:
موقعیتهایی که استفاده از sync.Pool در آنها مؤثر است برای اشیاء با عمر کوتاه و پیشبینیپذیر است، زیرا بازیابی استفاده از این اشیاء، تخصیصهای تکراری را کاهش میدهد و بار روی جمعآوری زباله یا GC را کمتر میکند. با این حال، استفاده از sync.Pool ممکن است در شرایطی که عمر اشیاء قابل پیشبینی نیست یا طولانیمدت هستند نه تنها کارایی لازم را ارائه ندهد بلکه ممکن است عواقب منفی به همراه داشته باشد، باعث شده که sync.Pool بیش از حد مورد نیاز حافظه را نگه دارد و به افزایش فعالیتهای GC منجر شود.
🟣لینک مقاله:
https://golangweekly.com/link/168163/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
sync.Pool is Not a Silver Bullet
🟢 خلاصه مقاله:
موقعیتهایی که استفاده از sync.Pool در آنها مؤثر است برای اشیاء با عمر کوتاه و پیشبینیپذیر است، زیرا بازیابی استفاده از این اشیاء، تخصیصهای تکراری را کاهش میدهد و بار روی جمعآوری زباله یا GC را کمتر میکند. با این حال، استفاده از sync.Pool ممکن است در شرایطی که عمر اشیاء قابل پیشبینی نیست یا طولانیمدت هستند نه تنها کارایی لازم را ارائه ندهد بلکه ممکن است عواقب منفی به همراه داشته باشد، باعث شده که sync.Pool بیش از حد مورد نیاز حافظه را نگه دارد و به افزایش فعالیتهای GC منجر شود.
🟣لینک مقاله:
https://golangweekly.com/link/168163/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
WunderGraph
Golang sync.Pool is not a silver bullet
A deep dive into Go's sync.Pool, its benefits, pitfalls, and when to use it (or not)
🔵 عنوان مقاله
asciigraph: ASCII Line Graph Rendering Library
🟢 خلاصه مقاله:
این مقاله به معرفی کتابخانهای قدیمی و معتبر پرداخته که برای رسم نمودارهای خطی ساده با استفاده از متن ASCII در ترمینالها طراحی شده است. این کتابخانه به دلیل نداشتن هیچگونه وابستگی به کتابخانهها و نرمافزارهای دیگر، بسیار محبوب است. این ابزار برای نمایش دادهها به شکلی بصری در محیطهای ترمینال، از اهمیت ویژهای برخوردار است و به توسعهدهندگان امکان میدهد تا بدون خروج از پنجره ترمینال، تغییرات و روندهای دادهها را به سرعت نمایش دهند.
🟣لینک مقاله:
https://golangweekly.com/link/167596/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
asciigraph: ASCII Line Graph Rendering Library
🟢 خلاصه مقاله:
این مقاله به معرفی کتابخانهای قدیمی و معتبر پرداخته که برای رسم نمودارهای خطی ساده با استفاده از متن ASCII در ترمینالها طراحی شده است. این کتابخانه به دلیل نداشتن هیچگونه وابستگی به کتابخانهها و نرمافزارهای دیگر، بسیار محبوب است. این ابزار برای نمایش دادهها به شکلی بصری در محیطهای ترمینال، از اهمیت ویژهای برخوردار است و به توسعهدهندگان امکان میدهد تا بدون خروج از پنجره ترمینال، تغییرات و روندهای دادهها را به سرعت نمایش دهند.
🟣لینک مقاله:
https://golangweekly.com/link/167596/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - guptarohit/asciigraph: Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. - guptarohit/asciigraph
🔵 عنوان مقاله
The First Newsletter Dedicated to Product Engineers
🟢 خلاصه مقاله:
موفقیت به عنوان یک مهندس محصول تنها به مهارتهای فنی بستگی ندارد، بلکه نیازمند درک عمیق استراتژیها و تاکتیکهایی است که به خلق محصولاتی که کاربران دوست دارند منجر میشود. این شامل درک نیازهای بازار، همراستا کردن با اهداف کسبوکار و ارزیابی مداوم محیط رقابتی است. ارتباط مؤثر و همکاری با تیمهای دیگر مثل طراحی، بازاریابی و پشتیبانی مشتری نیز حیاتی است. علاوه بر این، بهروز ماندن با ترندها و ابزارهای فناوری میتواند مزیت رقابتی ایجاد کند. از سوی دیگر، برنامهریزی دقیق و اجرای آن، جمعآوری و تحلیل بازخورد کاربران برای بهبود مداوم محصول ضروری است. در نهایت، مهندس محصول باید به طور ماهرانهای این استراتژیها و تاکتیکها را ترکیب کند تا محصولاتی که عملکرد عالی دارند و با کاربران طنینانداز شوند را توسعه دهد.
🟣لینک مقاله:
https://golangweekly.com/link/167584/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The First Newsletter Dedicated to Product Engineers
🟢 خلاصه مقاله:
موفقیت به عنوان یک مهندس محصول تنها به مهارتهای فنی بستگی ندارد، بلکه نیازمند درک عمیق استراتژیها و تاکتیکهایی است که به خلق محصولاتی که کاربران دوست دارند منجر میشود. این شامل درک نیازهای بازار، همراستا کردن با اهداف کسبوکار و ارزیابی مداوم محیط رقابتی است. ارتباط مؤثر و همکاری با تیمهای دیگر مثل طراحی، بازاریابی و پشتیبانی مشتری نیز حیاتی است. علاوه بر این، بهروز ماندن با ترندها و ابزارهای فناوری میتواند مزیت رقابتی ایجاد کند. از سوی دیگر، برنامهریزی دقیق و اجرای آن، جمعآوری و تحلیل بازخورد کاربران برای بهبود مداوم محصول ضروری است. در نهایت، مهندس محصول باید به طور ماهرانهای این استراتژیها و تاکتیکها را ترکیب کند تا محصولاتی که عملکرد عالی دارند و با کاربران طنینانداز شوند را توسعه دهد.
🟣لینک مقاله:
https://golangweekly.com/link/167584/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Posthog
Product for Engineers | Substack
Helping engineers and founders flex their product muscles. Click to read Product for Engineers, a Substack publication with tens of thousands of subscribers.
🔵 عنوان مقاله
Introducing ls-lint: A File Structure Linter
🟢 خلاصه مقاله:
ls-lint به عنوان یک 'لینتر نام گذاری فایل و دایرکتوری بسیار سریع' معرفی شده است که از زبان برنامهنویسی Go بهره میبرد. این ابزار برای اعمال قوانین و ساختارهای خاص در خصوص سیاستهای نامگذاری فایلها و دایرکتوریها در پروژهها طراحی شده است. ls-lint با اسکن کردن فایلسیستم پروژه و اطمینان از پیروی همه فایلها و دایرکتوریها از مجموعهای از اصول نامگذاری از پیش تعیین شده، به ویژه در محیطهای همکاری که داشتن قوانین نامگذاری یکپارچه حیاتی است، کاربرد دارد. این ابزار از طریق مخزن GitHub قابل دانلود و یکپارچهسازی است.
🟣لینک مقاله:
https://golangweekly.com/link/167590/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Introducing ls-lint: A File Structure Linter
🟢 خلاصه مقاله:
ls-lint به عنوان یک 'لینتر نام گذاری فایل و دایرکتوری بسیار سریع' معرفی شده است که از زبان برنامهنویسی Go بهره میبرد. این ابزار برای اعمال قوانین و ساختارهای خاص در خصوص سیاستهای نامگذاری فایلها و دایرکتوریها در پروژهها طراحی شده است. ls-lint با اسکن کردن فایلسیستم پروژه و اطمینان از پیروی همه فایلها و دایرکتوریها از مجموعهای از اصول نامگذاری از پیش تعیین شده، به ویژه در محیطهای همکاری که داشتن قوانین نامگذاری یکپارچه حیاتی است، کاربرد دارد. این ابزار از طریق مخزن GitHub قابل دانلود و یکپارچهسازی است.
🟣لینک مقاله:
https://golangweekly.com/link/167590/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
ls-lint.org
An extremely fast file and directory name linter - Bring some structure to your project filesystem
🔵 عنوان مقاله
2X-40X Faster Docker Builds with Blacksmith
🟢 خلاصه مقاله:
ابزار Blacksmith با ایجاد یک تغییر کد یک خطی، امکان ساخت افزایشی برای تصاویر Docker را در اجراکننده GitHub Actions با نصب حافظه لایهای Docker فراهم میکند. این رویکرد جدید با کاهش زمان ساخت و تکرارینبودن فرآیند، کارآمدی را افزایش میدهد. بیش از ۳۰۰ شرکت، از جمله Ashby، Clerk و Mintlify از Blacksmith استفاده کردهاند، که نشاندهنده تأثیر قابل توجه آن در بهینهسازی فرایندهای توسعه است.
🟣لینک مقاله:
https://golangweekly.com/link/167571/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
2X-40X Faster Docker Builds with Blacksmith
🟢 خلاصه مقاله:
ابزار Blacksmith با ایجاد یک تغییر کد یک خطی، امکان ساخت افزایشی برای تصاویر Docker را در اجراکننده GitHub Actions با نصب حافظه لایهای Docker فراهم میکند. این رویکرد جدید با کاهش زمان ساخت و تکرارینبودن فرآیند، کارآمدی را افزایش میدهد. بیش از ۳۰۰ شرکت، از جمله Ashby، Clerk و Mintlify از Blacksmith استفاده کردهاند، که نشاندهنده تأثیر قابل توجه آن در بهینهسازی فرایندهای توسعه است.
🟣لینک مقاله:
https://golangweekly.com/link/167571/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍2
در گولنگ (و بهطور کلی در سیستمهای مبتنی بر یونیکس)، تفاوت
---
## 📥 1.
این همون ورودی استاندارد**ه که برنامه ازش داده میگیره. پیشفرض اینه که از **کیبورد یا خط فرمان میاد.
### مثال Go:
> اینجا
---
## 📤 2.
خروجی استاندارده که معمولاً به ترمینال یا همان صفحه نمایش میره. اکثر توابع
### مثال:
---
## ❗️ 3.
خروجی برای خطاها. فرقش با
### مثال:
➖➖➖➖➖➖➖
👑 @gopher_academy
stdin`، `stdout
و stderr
در واقع به کانالهای ورودی/خروجی استاندارد مربوط میشه. این مفاهیم پایهای در اکثر زبانها یکسان هستند، ولی تو Go هم به شکل زیر کاربرد دارن:---
## 📥 1.
stdin
— Standard Inputاین همون ورودی استاندارد**ه که برنامه ازش داده میگیره. پیشفرض اینه که از **کیبورد یا خط فرمان میاد.
### مثال Go:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
fmt.Print("Enter your name: ")
scanner := bufio.NewScanner(os.Stdin)
if scanner.Scan() {
fmt.Println("Hello,", scanner.Text())
}
}
> اینجا
os.Stdin
ورودی رو میخونه.---
## 📤 2.
stdout
— Standard Outputخروجی استاندارده که معمولاً به ترمینال یا همان صفحه نمایش میره. اکثر توابع
fmt.Print
, fmt.Println
, fmt.Printf
از os.Stdout
استفاده میکنن.### مثال:
fmt.Fprintln(os.Stdout, "This is a normal message.")
---
## ❗️ 3.
stderr
— Standard Errorخروجی برای خطاها. فرقش با
stdout
اینه که حتی اگر خروجی برنامه به یه فایل هدایت بشه (> out.txt
)، خطاها هنوز روی ترمینال باقی میمونن مگر اینکه مشخصاً مسیر stderr
هم تغییر کنه.### مثال:
fmt.Fprintln(os.Stderr, "This is an error message.")
➖➖➖➖➖➖➖
👑 @gopher_academy
👍2🔥1
تفاوت بین
## 🔧 مثال کاربردی: اجرای برنامه و جداسازی خروجیها
فرض کن برنامهای داریم به نام
الان اگه اینو تو ترمینال اجرا کنیم:
هردو پیام روی ترمینال میان. ولی اگه بخوای فقط خروجی معمول رو بریزی تو فایل:
📁 نتیجه:
-
- پیام خطا همچنان روی ترمیناله
اما اگه بخوای خطا رو هم بریزی تو یه فایل دیگه:
📁 نتیجه:
-
-
---
## 🐳 در دنیای کانتینرها (مثلاً Docker)
خیلی از ابزارهای لاگینگ (مثل
- مانیتورینگ بهتر انجام بشه
- خطاها مشخصتر باشن
- عملکرد بهتر در CI/CD
➖➖➖➖➖➖➖
👑 @gopher_academy
stdout
و stderr
توی ظاهر ممکنه کوچیک به نظر بیاد، ولی توی دنیای واقعی (بهخصوص در سرورها، لاگینگ، کانتینرها و automation) خیلی مهمه.## 🔧 مثال کاربردی: اجرای برنامه و جداسازی خروجیها
فرض کن برنامهای داریم به نام
myapp
که هم لاگ عادی داره و هم خطا:// main.go
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintln(os.Stdout, "Everything is running fine.") // خروجی عادی
fmt.Fprintln(os.Stderr, "Oops! Something went wrong!") // پیام خطا
}
الان اگه اینو تو ترمینال اجرا کنیم:
go run main.go
هردو پیام روی ترمینال میان. ولی اگه بخوای فقط خروجی معمول رو بریزی تو فایل:
go run main.go > output.txt
📁 نتیجه:
-
output.txt
: فقط شامل "Everything is running fine."
- پیام خطا همچنان روی ترمیناله
اما اگه بخوای خطا رو هم بریزی تو یه فایل دیگه:
go run main.go > output.txt 2> error.txt
📁 نتیجه:
-
output.txt
→ خروجی عادی (stdout
)-
error.txt
→ پیام خطا (stderr
)---
## 🐳 در دنیای کانتینرها (مثلاً Docker)
خیلی از ابزارهای لاگینگ (مثل
fluentd
, logstash
, یا خود docker logs
) فقط stdout
و stderr
رو بررسی میکنن. پس جداسازی درستش باعث میشه:- مانیتورینگ بهتر انجام بشه
- خطاها مشخصتر باشن
- عملکرد بهتر در CI/CD
➖➖➖➖➖➖➖
👑 @gopher_academy
❤4👍1
🔵 عنوان مقاله
Revive 1.8: A Faster, Configurable, Flexible Linter for Go
🟢 خلاصه مقاله:
مقالهای در مورد ابزار جدیدی است که به عنوان جایگزینی برای "golint"، ابزار فرمتبندی محبوب زبان برنامهنویسی Go، ارائه شده است. این ابزار جدید با ارائه بازخورد سازمانیافتهتر، گزینههای سفارشیسازی و عملکرد بهبود یافته، فرآیند فرمتبندی را تقویت میکند. این ابزار توسط پروژهها و کتابخانههای بزرگ Go به سرعت پذیرفته شده است. فایل README در مخزن GitHub توضیح میدهد که این ابزار جدید چگونه از golint متفاوت است، و به جزئیات تقویتهای عملکردی، ویژگیهای قابل تنظیم، و بهبود عملکرد آن میپردازد.
🟣لینک مقاله:
https://golangweekly.com/link/167594/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Revive 1.8: A Faster, Configurable, Flexible Linter for Go
🟢 خلاصه مقاله:
مقالهای در مورد ابزار جدیدی است که به عنوان جایگزینی برای "golint"، ابزار فرمتبندی محبوب زبان برنامهنویسی Go، ارائه شده است. این ابزار جدید با ارائه بازخورد سازمانیافتهتر، گزینههای سفارشیسازی و عملکرد بهبود یافته، فرآیند فرمتبندی را تقویت میکند. این ابزار توسط پروژهها و کتابخانههای بزرگ Go به سرعت پذیرفته شده است. فایل README در مخزن GitHub توضیح میدهد که این ابزار جدید چگونه از golint متفاوت است، و به جزئیات تقویتهای عملکردی، ویژگیهای قابل تنظیم، و بهبود عملکرد آن میپردازد.
🟣لینک مقاله:
https://golangweekly.com/link/167594/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
revive.run
revive - fast & configurable linter for Go
Revive documentation website
👍1
🔵 عنوان مقاله
urfave/cli 3.1: A Declarative Way to Build Go CLI Apps
🟢 خلاصه مقاله:
مقاله به بررسی دفترچه راهنمای ابزار نرمافزاری پرداخته و از ویژگیهای کلیدی آن مانند تکمیل خودکار دستورات در شل، تجزیه گزینهها و متن راهنما میگوید. این ویژگیها به کاربران کمک میکنند تا با کارایی بیشتر و راحتی بیشتری از نرمافزار استفاده کنند. دفترچه راهنما نه تنها ابزار را معرفی میکند، بلکه نحوه استفاده بهینه از ویژگیهای آن را به کاربران آموزش میدهد تا بتوانند فرآیندهای کاری خود را بهینهسازی کنند.
🟣لینک مقاله:
https://golangweekly.com/link/167592/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
urfave/cli 3.1: A Declarative Way to Build Go CLI Apps
🟢 خلاصه مقاله:
مقاله به بررسی دفترچه راهنمای ابزار نرمافزاری پرداخته و از ویژگیهای کلیدی آن مانند تکمیل خودکار دستورات در شل، تجزیه گزینهها و متن راهنما میگوید. این ویژگیها به کاربران کمک میکنند تا با کارایی بیشتر و راحتی بیشتری از نرمافزار استفاده کنند. دفترچه راهنما نه تنها ابزار را معرفی میکند، بلکه نحوه استفاده بهینه از ویژگیهای آن را به کاربران آموزش میدهد تا بتوانند فرآیندهای کاری خود را بهینهسازی کنند.
🟣لینک مقاله:
https://golangweekly.com/link/167592/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - urfave/cli: A declarative, simple, fast, and fun package for building command line tools in Go
A declarative, simple, fast, and fun package for building command line tools in Go - urfave/cli
👍1
🔵 عنوان مقاله
Chroma 2.16: Pure Go Syntax Highlighting
🟢 خلاصه مقاله:
این مقاله ابزاری قدرتمند را توضیح میدهد که قادر است کد منبع را به فرمتهای خواناتر مثل HTML با برجستهسازی نحوی، متن رنگی ANSI، و یا استخراج توکنهای خام در قالب JSON تبدیل کند. این ابزار بیشتر ویژگیهای Pygments، که یک برجستهکننده نحوی محبوب است، را داراست و از لکسرها و سبکهای Pygments نیز پشتیبانی میکند. همچنین، یک محیط آزمایش آنلاین برای امتحان این ابزار فراهم است که کاربران میتوانند عملکرد آن را به صورت زنده ببینند و در پروژههای کدنویسی خود به کار ببرند.
🟣لینک مقاله:
https://golangweekly.com/link/167898/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Chroma 2.16: Pure Go Syntax Highlighting
🟢 خلاصه مقاله:
این مقاله ابزاری قدرتمند را توضیح میدهد که قادر است کد منبع را به فرمتهای خواناتر مثل HTML با برجستهسازی نحوی، متن رنگی ANSI، و یا استخراج توکنهای خام در قالب JSON تبدیل کند. این ابزار بیشتر ویژگیهای Pygments، که یک برجستهکننده نحوی محبوب است، را داراست و از لکسرها و سبکهای Pygments نیز پشتیبانی میکند. همچنین، یک محیط آزمایش آنلاین برای امتحان این ابزار فراهم است که کاربران میتوانند عملکرد آن را به صورت زنده ببینند و در پروژههای کدنویسی خود به کار ببرند.
🟣لینک مقاله:
https://golangweekly.com/link/167898/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - alecthomas/chroma: A general purpose syntax highlighter in pure Go
A general purpose syntax highlighter in pure Go . Contribute to alecthomas/chroma development by creating an account on GitHub.
🔵 عنوان مقاله
Hunting Zombie Processes in Go and Docker
🟢 خلاصه مقاله:
**
مقاله به بررسی مشکلات ایجاد شده توسط فرایندهای زامبی پرداخته که در نتیجه فرایند اسپاون شدن فرایندهای دیگر بوجود آمدهاند. بهخصوص در محیطهای کانتینری که مدیریت فرایندها و ارتباطات بین آنها پیچیدهتر میشود. مقاله راهکارهایی را برای مدیریت و پایان دادن به زندگی فرایندهای زامبی ارائه میدهد که شامل استفاده از ابزارها و اسکریپتهایی برای تضمین خاتمه صحیح و پاکسازی سیستم از این فرایندها میشود، که در نهایت به بهبود عملکرد و ثبات سیستم کمک میکند.
🟣لینک مقاله:
https://golangweekly.com/link/168366/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Hunting Zombie Processes in Go and Docker
🟢 خلاصه مقاله:
**
مقاله به بررسی مشکلات ایجاد شده توسط فرایندهای زامبی پرداخته که در نتیجه فرایند اسپاون شدن فرایندهای دیگر بوجود آمدهاند. بهخصوص در محیطهای کانتینری که مدیریت فرایندها و ارتباطات بین آنها پیچیدهتر میشود. مقاله راهکارهایی را برای مدیریت و پایان دادن به زندگی فرایندهای زامبی ارائه میدهد که شامل استفاده از ابزارها و اسکریپتهایی برای تضمین خاتمه صحیح و پاکسازی سیستم از این فرایندها میشود، که در نهایت به بهبود عملکرد و ثبات سیستم کمک میکند.
🟣لینک مقاله:
https://golangweekly.com/link/168366/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
www.stormkit.io
Hunting Zombie Processes in Go and Docker - Stormkit
A technical deep dive into debugging zombie processes in a Go and Docker setup, detailing how I fixed a server crash caused by Node.js process leaks in Stormkit. Learn about process groups, SIGCHLD handling, and using Tini for zombie reaping.
👍2