Gopher Academy
Kanalga Telegram’da o‘tish
🕸 Gopher Academy 🔷interview golang https://github.com/mrbardia72/Go-Interview-Questions-And-Answers حمایت مالی: https://www.coffeete.ir/mrbardia72 ادمین: @mrbardia72
Ko'proq ko'rsatish3 805
Obunachilar
+124 soatlar
-87 kunlar
+630 kunlar
Ma'lumot yuklanmoqda...
O'xshash kanallar
Taglar buluti
Kirish va chiqish esdaliklari
---
---
---
---
---
---
Obunachilarni jalb qilish
Iyul '26
Iyul '26
+19
0 kanalda
Iyun '26
+67
0 kanalda
Get PRO
May '26
+45
0 kanalda
Get PRO
Aprel '26
+24
5 kanalda
Get PRO
Mart '26
+10
0 kanalda
Get PRO
Fevral '26
+79
1 kanalda
Get PRO
Yanvar '26
+29
8 kanalda
Get PRO
Dekabr '25
+103
7 kanalda
Get PRO
Noyabr '25
+72
0 kanalda
Get PRO
Oktabr '25
+598
1 kanalda
Get PRO
Sentabr '25
+61
6 kanalda
Get PRO
Avgust '25
+84
9 kanalda
Get PRO
Iyul '25
+99
10 kanalda
Get PRO
Iyun '25
+47
7 kanalda
Get PRO
May '25
+45
1 kanalda
Get PRO
Aprel '25
+63
8 kanalda
Get PRO
Mart '25
+90
8 kanalda
Get PRO
Fevral '25
+91
3 kanalda
Get PRO
Yanvar '25
+96
3 kanalda
Get PRO
Dekabr '24
+113
7 kanalda
Get PRO
Noyabr '24
+94
2 kanalda
Get PRO
Oktabr '24
+116
4 kanalda
Get PRO
Sentabr '24
+138
4 kanalda
Get PRO
Avgust '24
+101
2 kanalda
Get PRO
Iyul '24
+187
5 kanalda
Get PRO
Iyun '24
+173
11 kanalda
Get PRO
May '24
+301
2 kanalda
Get PRO
Aprel '24
+185
3 kanalda
Get PRO
Mart '24
+172
3 kanalda
Get PRO
Fevral '24
+154
0 kanalda
Get PRO
Yanvar '24
+207
0 kanalda
Get PRO
Dekabr '23
+215
4 kanalda
Get PRO
Noyabr '23
+77
2 kanalda
Get PRO
Oktabr '23
+79
0 kanalda
Get PRO
Sentabr '23
+70
0 kanalda
Get PRO
Avgust '23
+108
0 kanalda
Get PRO
Iyul '23
+68
0 kanalda
Get PRO
Iyun '23
+106
0 kanalda
Get PRO
May '23
+211
0 kanalda
Get PRO
Aprel '23
+142
0 kanalda
Get PRO
Mart '23
+56
0 kanalda
Get PRO
Fevral '23
+70
0 kanalda
Get PRO
Yanvar '23
+62
0 kanalda
Get PRO
Dekabr '22
+14
0 kanalda
Get PRO
Noyabr '22
+24
0 kanalda
Get PRO
Oktabr '22
+15
0 kanalda
Get PRO
Sentabr '22
+78
0 kanalda
Get PRO
Avgust '22
+47
0 kanalda
Get PRO
Iyul '22
+36
0 kanalda
Get PRO
Iyun '22
+26
0 kanalda
Get PRO
May '22
+27
0 kanalda
Get PRO
Aprel '22
+14
0 kanalda
Get PRO
Mart '22
+21
0 kanalda
Get PRO
Fevral '22
+13
0 kanalda
Get PRO
Yanvar '22
+24
0 kanalda
Get PRO
Dekabr '21
+51
0 kanalda
Get PRO
Noyabr '21
+107
0 kanalda
Get PRO
Oktabr '21
+13
0 kanalda
Get PRO
Sentabr '21
+31
0 kanalda
Get PRO
Avgust '21
+29
0 kanalda
Get PRO
Iyul '21
+41
0 kanalda
Get PRO
Iyun '21
+29
0 kanalda
Get PRO
May '21
+26
0 kanalda
Get PRO
Aprel '21
+49
0 kanalda
Get PRO
Mart '21
+376
0 kanalda
| Sana | Obunachilarni jalb qilish | Esdaliklar | Kanallar | |
| 12 Iyul | +1 | |||
| 11 Iyul | +1 | |||
| 10 Iyul | +1 | |||
| 09 Iyul | 0 | |||
| 08 Iyul | +1 | |||
| 07 Iyul | +2 | |||
| 06 Iyul | +3 | |||
| 05 Iyul | +4 | |||
| 04 Iyul | +3 | |||
| 03 Iyul | +1 | |||
| 02 Iyul | 0 | |||
| 01 Iyul | +2 |
Kanal postlari
🔵 عنوان مقاله
go-mail 0.8: Comprehensive Email Sending Library
🟢 خلاصه مقاله:
کتابخانهی قدرتمند go-mail نسخه 0.8، یک ابزار جامع برای ساخت و ارسال ایمیل است که با تمرکز ویژه بر امنیت و صحت عملکرد طراحی شده است. این کتابخانه امکانات متنوعی دارد که از جمله آنها میتوان به پشتیبانی از پروتکلهای امنیتی SSL/TLS، احراز هویت SMTP، و اعتبارسنجی آدرسهای ایمیل اشاره کرد. هدف از توسعهی این ابزار علاوه بر سهولت در فرآیند ارسال ایمیل، تضمین امنیت و کاهش خطاهای احتمالی در ارسال پیامها بوده است. با بهرهگیری از این کتابخانه، کاربران قادر خواهند بود ایمیلهای ایمن و معتبر را به سرعت و با اطمینان کامل ارسال کنند، و از قابلیتهایی نظیر مدیریت چندین حساب و پشتیبانی از استانداردهای روز بهرهمند شوند. این نسخه، نسخهای کامل و بهبود یافته است که نیازهای مختلف توسعهدهندگان و شرکتها در زمینهی ارتباطات الکترونیکی را برطرف میسازد.
#ایمیل #امنیت #برنامهنویسی #کتابخانه
🟣لینک مقاله:
https://github.com/wneessen/go-mail/wiki
➖➖➖➖➖➖➖➖
👑 @gopher_academy
| 2 | 🔵 عنوان مقاله
pREST 2.0: Serve a RESTful API From a Postgres Database
🟢 خلاصه مقاله:
نسخه ۲.۰ پِرِست این امکان را فراهم میکند تا یک پایگاه داده پستگرس را به یک API با معماری RESTful تبدیل کنید. این ابزار، مشابه نرمافزار PostgREST عمل میکند و به شما اجازه میدهد تا به راحتی و بدون نیاز به برنامهنویسی پیچیده، دادههای پایگاه دادهتان را به صورت ایمن و ساختاریافته در اختیار توسعهدهندگان قرار دهید. تفاوت مهم این نسخه در این است که با زبان برنامهنویسی گو ساخته شده است، در حالی که نسخه قبلی در هسکل توسعه یافته بود؛ این موضوع باعث شده تا کار با آن سادهتر و سریعتر انجام شود.
با استفاده از پِرِست ۲.۰، روند توسعه و ارائه APIهای مبتنی بر پایگاههای داده پستگرس بسیار سادهتر شده است. این ابزار امکاناتی قوی و در عین حال کاربرپسند را فراهم میکند که انعطافپذیری و سازگاری زیادی در پروژههای مختلف از خود نشان میدهد. به این ترتیب، توسعهدهندگان میتوانند تمرکز خود را بر طراحی و بهبود قسمتهای دیگری از برنامههایشان بگذارند، در حالی که پِرِست ۲.۰ مستقیماً ارتباط با پایگاه داده را مدیریت میکند.
در نتیجه، نسخه جدید پِرِست، گزینهای قدرتمند و بهینه برای تبدیل پایگاههای داده پستگرس به APIهای RESTful است که هم به لحاظ فنی پیشرفته و هم از نظر سادگی در استفاده، تحول عظیمی در فرآیند توسعه APIها به وجود آورده است.
#پایگاه_داده #API #پستگرس #توسعه
🟣لینک مقاله:
https://github.com/prest/prest
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 160 |
| 3 | 🔵 عنوان مقاله
support for multiple databases
🟢 خلاصه مقاله:
در دنیای توسعه نرمافزار، پشتیبانی از چندین بانک اطلاعاتی یکی از ویژگیهای مهم و حیاتی است که در بسیاری از پروژهها مورد نیاز قرار میگیرد. این قابلیت به برنامهنویسان امکان میدهد تا برنامههای خود را با انواع مختلفی از پایگاههای داده کارآمد و انعطافپذیر اجرا کنند، بدون آنکه محدود به یک نوع خاص باشند. در مقالات اخیر منتشر شده در خبرنامه هفتگی Golang، به اهمیت و راهکارهای پیادهسازی پشتیبانی چندگانه از پایگاههای داده پرداخته شده است؛ این موضوع به ویژه در پروژههایی که قصد دارند همزمان از چند بانک داده متفاوت استفاده کنند، نقش کلیدی ایفا میکند.
پشتیبانی از چندین بانک اطلاعاتی نه تنها باعث افزایش قابلیت انعطافپذیری برنامه میشود، بلکه توسعهدهندگان را قادر میسازد تا بهترین گزینه را برای هر نوع داده یا عملیات خاص انتخاب کنند. برای نمونه، ممکن است در یک پروژه، برای ذخیرهسازی دادههای تحلیلی از پایگاه دادهای با قابلیتهای خاص استفاده شود، و برای عملیاتهای سریعتر و تراکنشی، بانک اطلاعاتی متفاوتی به کار گرفته شود. در خبرنامه Golang، راهکارهایی برای پیادهسازی این قابلیتها به صورت کارآمد و بهینه ارائه شده است، به طوری که امکان مدیریت چندین پایگاه داده در یک برنامه، به سادگی انجامپذیر باشد.
در نتیجه، توجه به جنبههای فنی این موضوع میتواند تفاوت قابل توجهی در عملکرد و انعطافپذیری برنامههای توسعه یافته ایجاد کند. اهمیت درک صحیح و پیادهسازی موثر این قابلیت، به روز بودن و تطابق نرمافزارهای امروزی را تضمین میکند و به توسعهدهندگان کمک میکند تا سیستمهای قدرتمند و مقیاسپذیر بسازند. مقالات و مطالب منتشر شده در خبرنامه Golang، ابزاری ارزشمند برای یادگیری و بهرهبرداری بهتر از این قابلیتها در پروژههای آینده است.
#پشتیبانی_از_چندین_پایگاهداده #توسعه_نرمافزار #گولنگ #پایگاه_داده
🟣لینک مقاله:
https://github.com/prest/prest/pull/973
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 156 |
| 4 | 🔵 عنوان مقاله
deep dive into reflect
🟢 خلاصه مقاله:
در زبانهای برنامهنویسی، مفهوم رفلکشن یا انعکاس نقش مهمی در بهرهبرداری از قابلیتهای دینامیک و بررسی ساختارهای برنامهنویسی دارد. یکی از ویژگیهای جالب رفلکشن این است که معمولاً اطلاعات اضافی مربوط به نوع دادهها و متادیتای مربوط به آنها را نگه میدارد. این اطلاعات در زمان اجرا میتواند برای دسترسی به خصوصیات و متدهای اشیا و انواع مختلف استفاده شود، اما نگهداری این دادههای اضافی نه تنها مفید است بلکه میتواند باعث بروز مشکلاتی نیز شود.
از سوی دیگر، یکی از مسائلی که هنگام استفاده از رفلکشن ممکن است پیش بیاید، این است که این متادیتا مانع از حذف خودکار بخشهای بیاستفاده کد توسط ابزارهای بهینهساز یا لینککننده میشود. در زبانهایی که از فرآیندهای بهینهسازی برای کاهش حجم نهایی برنامه استفاده میکنند، قابلیت حذف کدهای غیرقابل دسترسی و استفادهنشده معمول است، اما presence of reflection metadata تردد این فرآیند را دشوار میکند و ممکن است باعث شود کدهای غیرضروری طولانیتر بمانند و در نتیجه حجم برنامه نهایی افزایش یابد.
در نهایت، باید بین نیاز به انعکاس برای کارایی و ابزارهای بهینهسازی تعادل برقرار کرد، زیرا نگهداری بیش از حد دادههای مربوط به نوع و متادیتا میتواند در بعضی موارد باعث جلوگیری از حذف بخشهای نااستفاده کد شود، که این موضوع در پروژههای حساس به حجم و کارایی اهمیت فراوانی دارد.
#برنامه_نویسی #ریفلکشن #کاهش_حجم #بهینهسازی
🟣لینک مقاله:
https://internals-for-interns.com/posts/go-runtime-reflect/
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 146 |
| 5 | 🔵 عنوان مقاله
Goshot: Go Library and CLI to Turn Code into Screenshots
🟢 خلاصه مقاله:
جیوشات یک ابزار قدرتمند است که هم یک کتابخانه (کتابخانهGo) و هم یک رابط خط فرمان (CLI) را در اختیار شما قرار میدهد تا کدهای برنامهنویسی خود را به عکسالعملهای تصویری تبدیل کنید. این امکان به شما اجازه میدهد کدهای مورد نظرتان را به راحتی به تصویر تبدیل کرده و در شبکههای اجتماعی، مستندات یا READMEهایتان به اشتراک بگذارید. قابلیتهای زیادی در این ابزار تعبیه شده است که کمک میکند تصاویر نهایی جذاب و منطبق بر سلیقه شما باشند.
در این ابزار، میتوانید استایل و رنگ بندی تصاویر را به صورت کامل تنظیم کنید؛ این قابلیت به شما امکان میدهد طراحی را مطابق با طرحبندی دلخواهتان سفارشی کنید. علاوه بر این، امکان هایلایت نحوی برنامهنویسی، یعنی نمایش رنگی و شفاف بخشهای مختلف کد، وجود دارد که نگاه مخاطب را آسانتر و فهم مطلب را سریعتر میکند. همچنین، جیوشات چندین سبک برای ظاهر پنجره و حاشیههای آن ارائه میدهد که به سادگی میتوانید ظاهر کد خود را مطابق با استایل مورد نظر تنظیم کنید.
به طور خلاصه، جیوشات ابزاری عالی برای توسعهدهندگان، معلمان و هر کسی است که میخواهد کدهای برنامهنویسی خود را به صورت تصویری جذاب و قابل اشتراکگذاری درآورد. با امکانات بسیار و انعطافپذیری بالا، میتوانید تصاویر حرفهای و البته متناسب با نیازهای شخصی یا تیمی خود بسازید و بر جذابیت و وضوح مطالب بیفزایید.
#کد_تصویری #ابزارنامه #پروژه_برخط #گرافیک_کد
🟣لینک مقاله:
https://github.com/watzon/goshot
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 203 |
| 6 | 🔵 عنوان مقاله
From TypeScript 7's Go Rewrite to Go as an Agentic Language
🟢 خلاصه مقاله:
در هفته جاری، نسخه جدید کامپایلر تایپاسکریپت ۷.۰ که با قدرت بالای زبان برنامهنویسی گو نوشته شده است، معرفی شد. این نسخه با سرعت بینظیر ده برابری نسبت به نمونههای قبلی، توسعهدهندگان را قادر میسازد تا کدهای خود را بسیار سریعتر و کارآمدتر کامپایل کنند. این تحول بزرگ در فرآیند توسعه نرمافزار، نشان دهنده تحول عمده در فناوریهای متنباز و اهمیت زبان گو در زمینه توسعه برنامههای پیشرفته است.
در این میان، استف فرانسیه، مدیر سابق پروژههای گو، با استناد به موفقیتهای مایکروسافت در انتقال پروژههای خود به این زبان، بر اهمیت و آیندهدار بودن گو تأکید میکند. او معتقد است که زبان برنامهنویسی گو، به دلیل ساختار قدرتمند و قابلیتهای کارآیی بالای آن، به عنوان زبان پیشفرض و طبیعی برای توسعههای عاملمحور (agentic) شناخته میشود. این دیدگاه نشان میدهد که در آینده، گو نقش اصلیتری در توسعه برنامههای هوشمند و سیستمهای تعاملی ایفا خواهد کرد.
در نتیجه، انتقال به زبان گو و بهکارگیری آن در پروژههای بزرگ، میتواند توسعهدهندگان را در ساخت برنامههایی سریعتر، قابل اعتمادتر و با قابلیتهای پیشرفتهتر یاری کند. این روند نشانگر تغییر مهم در استراتژیهای توسعه نرمافزار است و میتواند زمینهساز تحولات عمده در صنعت فناوری باشد.
#توسعه_نرمافزار #زبانبرنامهنویسی #گو #تکنولوژی
🟣لینک مقاله:
https://spf13.com/p/go-the-agentic-language/
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 198 |
| 7 | 🔵 عنوان مقاله
was released this week
🟢 خلاصه مقاله:
در هفته جاری، نسخه جدیدی از یک محصول منتشر شد که توجه بسیاری را به خود جلب کرد. در این میان، استیو فرانشیا، رئیس سابق بخش توسعه زبان برنامهنویسی Go، با استناد به موفقیتهای شرکت مایکروسافت در مهاجرت به این زبان، بر این باور است که زبان Go به عنوان گزینهی طبیعی و پیشفرض برای توسعه برنامههای عاملمحور (agentic development) شناخته میشود. او معتقد است تجربه مایکروسافت نشان میدهد که این زبان در ساخت برنامههای مقیاسپذیر و کارآمد، نقش کلیدی ایفا میکند و میتواند جایگزین گزینههای دیگر در آینده باشد.
در حقیقت، موفقیت مایکروسافت در انتقال برخی پروژههای مهم به زبان Go، نشاندهنده احتمال اینکه این زبان بتواند جایگاه ویژهتری در حوزه توسعه نرمافزارهای آینده پیدا کند، است. فرانشیا بر این باور است که این روند، فرصتهای جدیدی را برای توسعهدهندگان فراهم میآورد و بهرهوری را افزایش میدهد. با توجه به تجربیات و دستاوردهای اخیر، به نظر میرسد که زبان Go مسیر توسعه فناوریهای نوین و مستقل از پلتفرمها را هموار ساخته است.
در نتیجه، این تحولات نشان میدهند که آینده توسعه نرمافزارهای عاملمحور، به سمت زبانهایی مانند Go حرکت میکند، که قابلیت انعطافپذیری و مقیاسپذیری بالا دارند و میتوانند نیازهای پیچیده دنیای فناوری را برآورده سازند. پیشبینی میشود که در ماهها و سالهای آینده، شاهد رشد قابل توجه استفاده و پذیرش این زبان در پروژههای مختلف فناوری باشیم.
#برنامهنویسی #زبان_گو #توسعه_فناوری #هوشمندسازی
🟣لینک مقاله:
https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 206 |
| 8 | شرکت SpaceXAI مدل جدید Grok 4.5 رو عرضه کرده که قدرت کدنویسی در سطح Claude Opus 4.8 رو با هزینهای بسیار کمتر در اختیار کاربران قرار میده 🚀💻.
این مدل که با همکاری Cursor توسعه داده شده، طبق تستهای Artificial Analysis در کدنویسی با ایجنتها، قدرتی بالاتر از Opus 4.8 و نزدیک به GPT 5.5 و Fable 5 رو از خودش نشون داده 📈🤖.
همچنین نه تنها مصرف توکنهای اون بین 3 تا 5 برابر از مدلهای Claude کمتر بوده، بلکه برای اجرای این تستها در حالی که Fable 5 حدود 3800 دلار هزینه داره، هزینه اجرای اونها با Grok 4.5 چیزی حدود 833 دلار هست و سرعت بیشتری در اجرای اونها داره 💸⚡.
این مدل از حالا در پلتفرمهای مختلف و همچنین ابزار برنامهنویسی Grok Build در دسترس کاربران قرار گرفته 🛠️🌐. | 341 |
| 9 | چند وقت پیش تو یه مصاحبه کاری، یه سوال پرسیدن که کاملاً جا خوردم: "با gRPC کار کردی؟"
با صداقت گفتم: "نه، اصلاً نمیدونم چیه." یه لحظه سکوت... و از اون مصاحبه که بیرون اومدم یه چیزی تو ذهنم قفل شده بود: "باید بفهمم این چیه."
اون حس ناراحتکنندهی «ندونستن» تو یه مصاحبه، شد یکی از بهترین موتورهای یادگیریم. رفتم سراغ مطالعهی عمیق gRPC، از مشکلات REST و HTTP/1.1 شروع کردم، تا رسیدم به Protobuf، HTTP/2 Multiplexing، و انواع Streaming Pattern هاش.
چیزی که خودم رو غافلگیر کرد این بود که gRPC-Web (نسخهی قابلاستفاده تو مرورگر) نمیتونه مستقیم به یه gRPC server وصل شه چون مرورگرها کنترل کامل روی HTTP/2 frame ها ندارن، همیشه یه proxy (مثل Envoy) لازمه. فکر میکردم gRPC همهجا یکسان کار میکنه، ولی این محدودیت نشونم داد که چقدر context بین "backend-to-backend" و "browser-to-backend" فرق داره.
نتیجهش شده این "gRPC Blueprint" که دومین پست از سری آموزشیمه
توش میبینید:
- چرا REST رو HTTP/1.1 با Head-of-Line Blocking دستوپاگیر میشه
- سه رکن اصلی gRPC که باعث سرعت و کاراییش میشن
- مقایسهی صادقانهی REST vs gRPC vs WebSocket کدوم کجا برندهس
- جایی که gRPC واقعاً میدرخشه (Microservices، سیستمهای Real-time، محیطهای Polyglot)
@ | <shaghayegh Ayoubi/> | 385 |
| 10 | اگه به داستانهای استارتاپ ها علاقهمندین، حتما این سایت رو چک کنین.
ماجرای استارتاپ های شات دان شده رو میگه و آنالیزشون میکنه.
https://www.failory.com/ | 356 |
| 11 | 💼 به دنبال استخدام برنامهنویس هستید؟ یا به دنبال فرصت شغلی مناسب میگردید؟
🟢 کارفرمایان:
اگر به دنبال جذب برنامهنویس هستید، آگهی استخدام خود را برای ما ارسال کنید تا منتشر شود.
🟢 کارجویان:
اگر به دنبال فرصت شغلی هستید، رزومه خود را برای ما ارسال کنید تا در صورت وجود موقعیت مناسب، به شرکتها و کارفرمایان معرفی شوید. 🚀
👤 ادمین:
@mrbardia72
📄 لطفاً موارد زیر را به همراه فایل PDF رزومه ارسال کنید:
✅ نام و نام خانوادگی (اجباری)
✅ سابقه کار (اجباری)
✅ محل سکونت (اجباری)
✅ امکان نقل مکان برای کار (اجباری)
🔹 لینک LinkedIn (اختیاری)
🔹 لینک GitHub (اختیاری) | 374 |
| 12 | اگر بهطور مرتب روی پروژههای Go کار میکنی، go-mod-upgrade یکی از کاربردیترین ابزارهای CLI برای مدیریت وابستگیها است. این ابزار بهصورت تعاملی (Interactive) ماژولهای قدیمی موجود در go.mod را پیدا میکند و به تو اجازه میدهد انتخاب کنی کدامها را ارتقا دهی. ایده آن مشابه yarn upgrade-interactive در اکوسیستم Node.js است. (Go Packages)
چرا این ابزار ساخته شده است؟
خود Go ابزارهایی مانند:
go list -u -m all
یا
go get -u
را دارد، اما این ابزارها چند مشکل دارند:
فقط لیست آپدیتها را نمایش میدهند.
برای انتخاب تعاملی مناسب نیستند.
ممکن است همه dependencyها را یکجا ارتقا دهند.
مدیریت تعداد زیاد dependencyها سخت میشود.
درواقعه go-mod-upgrade این مشکل را حل میکند و قبل از هر ارتقا از تو میپرسد چه ماژولهایی را میخواهی آپدیت کنی. (Go Packages)
نصب
با Go:
go install github.com/oligot/go-mod-upgrade@latest
یا میتوان از فایلهای باینری آماده استفاده کرد. (Go Packages)
نحوه اجرا داخل پوشه پروژه:
go-mod-upgrade
ابزار فایل go.mod را میخواند و dependencyهای مستقیم (Direct Dependencies) را بررسی میکند.
خروجی چیزی شبیه این خواهد بود:
✔️ github.com/gin-gonic/gin 1.10.0 → 1.11.0
✔️ github.com/stretchr/testify 1.10.0 → 1.11.1
✔️ google.golang.org/grpc 1.74.2 → 1.75.0
سپس میتوانی با Space آنها را انتخاب و با Enter عملیات ارتقا را انجام دهی. (Go Packages)
حالت غیرتعاملی
اگر فقط بخواهی ببینی چه چیزهایی قابل ارتقا هستند:
go-mod-upgrade --list
خروجی:
github.com/gin-gonic/gin
github.com/stretchr/testify
golang.org/x/net
...
برای CI/CD هم مناسب است. (Go Packages)
گزینههای مهم
نمایش لیست
go-mod-upgrade --list
بروزرسانی همه بدون سؤال
go-mod-upgrade --force
نمایش لاگ بیشتر
go-mod-upgrade --verbose
نادیده گرفتن برخی پکیجها
مثلاً:
go-mod-upgrade --ignore "k8s.io.*"
تمام dependencyهای Kubernetes نادیده گرفته میشوند. (Go Packages)
اجرای Hook بعد از هر آپدیت
مثلاً بعد از هر Upgrade تست اجرا شود:
go-mod-upgrade --hook "go test ./..."
یا:
go-mod-upgrade --hook "go build ./..."
اگر تستها شکست بخورند، سریع متوجه میشوی کدام dependency مشکل ایجاد کرده است. (Go Packages)
رنگها
رنگهای مختلف نوع ارتقا را مشخص میکنند:
🟢 سبز
Patch Update
مثال:
v1.10.0 → v1.10.4
🟡 زرد
Minor Update
مثال:
v1.10.0 → v1.11.0
🔴 قرمز
Prerelease (مثل beta یا rc)
مثال:
v1.12.0 → v1.13.0-rc1
این رنگبندی کمک میکند ریسک ارتقا را سریع تشخیص دهی. (Go Packages)
چه dependencyهایی را آپدیت میکند؟
فقط Direct Dependencyها.
مثلاً:
require (
github.com/gin-gonic/gin v1.10.0
)
را ارتقا میدهد.
اما dependencyهای غیرمستقیم:
require (
github.com/go-logr/logr v1.4.3 // indirect
)
را معمولاً مستقیماً تغییر نمیدهد؛ اینها توسط go mod tidy و سیستم ماژول Go مدیریت میشوند. (Go Packages)
آیا Major Version را ارتقا میدهد؟
این یکی از مهمترین محدودیتهاست.
اگر:
github.com/foo/bar v1.9.0
نسخه جدید:
v2.0.0
باشد، ابزار معمولاً آن را بهصورت خودکار ارتقا نمیدهد، چون در Go تغییر نسخه اصلی معمولاً به تغییر مسیر ماژول (مثل /v2) نیاز دارد و ممکن است کد پروژه نیز تغییر بخواهد. این ابزار بیشتر برای Patch و Minor Update طراحی شده است. (Go Packages)
مزایا
رابط کاربری تعاملی و ساده.
انتخاب dependencyهای موردنظر بهجای ارتقای همه.
مناسب پروژههای بزرگ با دهها کتابخانه.
امکان اجرای Build یا Test بعد از هر ارتقا.
نمایش نوع ارتقا با رنگبندی.
مناسب برای استفاده دورهای جهت بهروز نگه داشتن پروژه. (Go Packages)
معایب
بهطور خودکار Major Versionها را مهاجرت نمیدهد.
نیاز به نصب ابزار جداگانه دارد.
همچنان باید پس از ارتقا go mod tidy و تستهای پروژه را اجرا کنی.
اگر ارتقا باعث ناسازگاری API شود، اصلاح کد بر عهده توسعهدهنده است. (Go Packages)
پیشنهاد برای استفاده در پروژههای واقعی
یک روند مطمئن میتواند این باشد:
go-mod-upgrade
go mod tidy
go test ./...
go vet ./...
golangci-lint run
با این ترتیب:
نسخههای جدید را انتخاب و ارتقا میدهی.
فایل های go.mod و go.sum را تمیز میکنی.
مطمئن میشوی تستها هنوز موفق هستند.
مشکلات احتمالی استاتیک را با go vet و golangci-lint بررسی میکنی.
این ابزار بهویژه زمانی ارزشمند است که پروژه دهها وابستگی مستقیم دارد و نمیخواهی برای هر کدام بهصورت دستی go get module@latest اجرا کنی. | 366 |
| 13 | 🚀 مروری بر بهروزرسانیهای Go 1.25.x
پس از انتشار Go 1.25، دوازده نسخه Patch منتشر شدهاند که تمرکز اصلی آنها روی رفع آسیبپذیریهای امنیتی و بهبود پایداری بوده است. در ادامه، مهمترین تغییرات هر نسخه را مرور میکنیم.
🔹 Go 1.25.1
🔐 رفع مشکلات امنیتی در net/http
⚙️ رفع باگهای go command و پکیجهای net، os، os/exec و testing/synctest
🔹 Go 1.25.2
🔐 رفع مشکلات امنیتی در archive/tar، crypto/tls، crypto/x509، encoding/asn1، encoding/pem، net/http، net/mail، net/textproto و net/url
⚙️ رفع باگهای کامپایلر، Runtime و پکیجهای context، debug/pe، net/http، os و sync/atomic
🔹 Go 1.25.3
🔧 اعمال اصلاحات در پکیج crypto/x509
🔹 Go 1.25.4
⚙️ رفع باگهای کامپایلر، Runtime و پکیجهای crypto/subtle، encoding/pem، net/url و os
🔹 Go 1.25.5
🔐 رفع دو مشکل امنیتی در crypto/x509
⚙️ رفع باگهای mime و os
🔹 Go 1.25.6
🔐 رفع مشکلات امنیتی در go command، archive/zip، crypto/tls و net/url
⚙️ رفع باگهای کامپایلر، Runtime و پکیجهای crypto/tls، errors و os
🔹 Go 1.25.7
🔐 رفع مشکلات امنیتی در go command و crypto/tls
⚙️ رفع باگهای کامپایلر و crypto/x509
🔹 Go 1.25.8
🔐 رفع مشکلات امنیتی در html/template، net/url و os
⚙️ رفع باگهای go command، کامپایلر و os
🔹 Go 1.25.9
🔐 رفع مشکلات امنیتی در go command، کامپایلر، archive/tar، crypto/tls، crypto/x509، html/template و os
⚙️ رفع باگهای go command، کامپایلر و Runtime
🔹 Go 1.25.10
🔐 رفع مشکلات امنیتی در go command، ابزار pack و پکیجهای html/template، net، net/http، net/http/httputil، net/mail و syscall
⚙️ رفع باگهای go command، کامپایلر، لینکر، Runtime و پکیجهای crypto/fips140، go/types و os
🔹 Go 1.25.11
🔐 رفع مشکلات امنیتی در crypto/x509، mime و net/textproto
⚙️ رفع باگهای کامپایلر و Runtime
🔹 Go 1.25.12
🔐 رفع مشکلات امنیتی در crypto/tls و os
⚙️ رفع باگهای کامپایلر، go command و پکیجهای net و os | 281 |
| 14 | 🚀 مروری بر بهروزرسانیهای Go 1.26.x
از زمان انتشار Go 1.26 تاکنون، پنج نسخه Patch منتشر شدهاند که تمرکز اصلی آنها روی رفع آسیبپذیریهای امنیتی و بهبود پایداری بوده است. در ادامه، مهمترین تغییرات هر نسخه را مرور میکنیم.
🔹 Go 1.26.1
🔐 رفع مشکلات امنیتی در crypto/x509، html/template، net/url و os
⚙️ رفع باگهای go command، go fix، کامپایلر و پکیجهای os و reflect
🔹 Go 1.26.2
🔐 رفع مشکلات امنیتی در go command، کامپایلر، archive/tar، crypto/tls، crypto/x509، html/template و os
⚙️ رفع باگهای go command، go fix، کامپایلر، لینکر، Runtime و پکیجهای net، net/http و net/url
🔹 Go 1.26.3
🔐 رفع مشکلات امنیتی در go command، ابزار pack و پکیجهای html/template، net، net/http، net/http/httputil، net/mail و syscall
⚙️ رفع باگهای go command، go fix، کامپایلر، لینکر، Runtime و پکیجهای crypto/fips140، crypto/tls، go/types و os
🔹 Go 1.26.4
🔐 رفع مشکلات امنیتی در crypto/x509، mime و net/textproto
⚙️ رفع باگهای کامپایلر، Runtime، go fix و crypto/fips140
🔹 Go 1.26.5
🔐 رفع مشکلات امنیتی در crypto/tls و os
⚙️ رفع باگهای کامپایلر، Runtime، go command و پکیجهای net، os و syscall | 254 |
| 15 | 🚀 نسخه Go 1.26.5 منتشر شد
تمرکز اصلی آن روی رفع مشکلات امنیتی و بهبود پایداری است.
این نسخه شامل اصلاحات امنیتی در پکیجهای crypto/tls و os بوده و همچنین تعدادی باگ در بخشهای مختلف Go برطرف شده است.
🔧 مهمترین تغییرات:
🔐 رفع مشکلات امنیتی در پکیجهای crypto/tls و os
⚙️ رفع باگهای کامپایلر برای بهبود عملکرد و پایداری
🧠 برطرف شدن اشکالات Runtime
🛠 رفع باگهای go command
🌐 اصلاح مشکلات در پکیجهای net، os و syscall
📋 جزئیات کامل تغییرات (Milestone):👇
📣 https://github.com/golang/go/issues?q=milestone%3AGo1.26.5+label%3ACherryPickApproved
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 561 |
| 16 | 🔵 عنوان مقاله
Understanding the Go Runtime: Profiling
🟢 خلاصه مقاله:
در این مقاله، Jesús مجدداً به موضوعی عمیق و فنی میپردازد و اینبار نگاهی دقیقتر به فرآیند پروفایلگیری در زبان برنامهنویسی Go دارد. اگر تاکنون از ابزار pprof استفاده کردهاید، احتمالاً با مفهومی که در پشت صحنه واقع شده است، آشنایی دارید. اما این بار، Jesús شما را با جزئیات داخلی و نحوه کارکرد این ابزار در Go آشنا میکند. او به تشریح اینکه چگونه سیستمهای داخلی برنامهنویسی این کار را انجام میدهند و هر یک از پنج نوع مختلف پرفایل چه چیزی را اندازهگیری میکند، میپردازد. در نتیجه، این مقاله به برنامهنویسان کمک میکند تا درک بهتری از فرآیند پروفایلگیری داشته باشند و بتوانند عیبیابی و بهینهسازی کدهای خود را مؤثرتر انجام دهند.
در این مقاله، Jesús با بیانی شیوا و جامع، نحوه جمعآوری و تحلیل دادههای پروفایل را شرح میدهد و نشان میدهد که این دادهها چه ICommandگوی میکنند و چگونه میتوانند برای بهبود عملکرد برنامهها مفید باشند. این مطالب، خصوصاً برای توسعهدهندگانی که قصد دارند به صورت عمیقتر سیستمهای Go را درک کنند، بسیار ارزشمند است.
در نهایت، اگر میخواهید بدانید چه اتفاقی در پس زمینه هنگام استفاده از ابزارهای پروفایل در زبان Go میافتد و چگونه میتوانید این اطلاعات را به نفع بهبود برنامههای خود بهکار گیرید، مطالعه این مقاله به شما توصیه میشود.
#پروفایل_گیری #GoLang #برنامهنویسی #بهینهسازی
🟣لینک مقاله:
https://internals-for-interns.com/posts/go-runtime-profiling/
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 340 |
| 17 | 🔵 عنوان مقاله
LeafWiki: A Self-Hosted Wiki in a Single Go Binary
🟢 خلاصه مقاله:
لیفویکی ابزاری است که به شما امکان میدهد یک ویکی شخصی و خودمیزبان را به سادگی و بدون نیاز به تنظیمات پیچیده راهاندازی کنید. این سیستم تنها با یک فایل باینری قابل اجرا است، که فرآیند راهاندازی آن بسیار ساده و سریع است. شما کافی است فایل باینری را اجرا کرده و یک دایرکتوری داده، شامل پایگاه داده SQLite و فایلهای مارکداون، ایجاد کنید. این طراحی کمتکلف و کاربرپسند، به کاربران اجازه میدهد بدون دردسر و با کمترین تلاش، محیط ویکی مخصوص به خودشان را داشته باشند.
در نمونههای دمو، میتوانید نحوه کار و قابلیتهای این ویکی استایل را به خوبی مشاهده کنید. این نمونهها نشان میدهند که چقدر راهاندازی و نگهداری این سیستم آسان است، و چطور میتوان در کمترین زمان یک فضای ویکی فعال و مفید ایجاد کرد. در نتیجه، لیفویکی گزینهای عالی برای کسانی است که نیاز به یک سیستم ویکی سبک و قابل اعتماد دارند، بدون اینکه با پیچیدگیهای معمول سرورهای ویکیشده مواجه شوند.
این سیستم برای کاربران شخصی، تیمهای کوچک و حتی سازمانهای کوچک مناسب است که میخواهند محتوای خود را بدون نیاز به سرورهای پیچیده و تنظیمات زمانبر مدیریت کنند. با توجه به سادگی، قابل حمل بودن و امکانات توسعهی آن، لیفویکی میتواند به سرعت جایگزین راهحلهای سنگین و هزینهبر شود و بهرهوری کاربران را افزایش دهد.
#ویکی_خودمیزبان #پایگاه_داده #نوشتههای_مارکداون #سادهترین_روش
🟣لینک مقاله:
https://github.com/perber/leafwiki
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 319 |
| 18 | 🔵 عنوان مقاله
Compress 1.19.0: Optimized Compression Packages for Go
🟢 خلاصه مقاله:
در نسخه ۱.۱۹.۰ از برنامه Compress، مجموعهای بهینهشده از بستههای فشردهسازی برای زبان برنامهنویسی Go معرفی شده است. این نسخه، شامل پشتیبانی از انواع استانداردهای فشردهسازی متنوع مانند زستاندارد (zstandard)، S2، gzip، zlib، اسنپی (snappy) و zip است تا توسعهدهندگان بتوانند بهترین گزینه را بر اساس نیازهایشان انتخاب کنند. به علاوه، یک پیادهسازی سریع و موازی برای gzip نیز در این نسخه ارائه شده است که امکان فشردهسازی سریعتر و کارآمدتر را فراهم میکند.
در بهبودهای اخیر این نسخه، تمرکز بر بهرهوری و سرعت بیشتر بوده است. یکی از این نکات، افزودن قابلیت رمزگذاری همزمان (کنکوردنت) بر روی جریان zstd است که باعث کاهش زمان فشردهسازی میشود. همچنین، یک دیکودر برای زستاندارد بر روی معماری ARM64 توسعه یافته است تا عملکرد و قدرت پردازش در دستگاههای مبتنی بر این معماری بهبود یابد و تجربه کاربری بهتر و سریعتری فراهم شود.
این بهبودهای تکنولوژیک نشان میدهد که تیم توسعه دهنده روی بهبود کارایی و سادگی استفاده از ابزارهای فشردهسازی در برنامههای مختلف کار میکند. در نتیجه، کاربران و توسعهدهندگان میتوانند از سرعت، کارایی و انعطاف بیشتری در فرآیند فشردهسازی دادهها بهرهمند شوند.
#فشرده_سازی #برنامه_نویسی #Go #زستاندارد
🟣لینک مقاله:
https://github.com/klauspost/compress
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 267 |
| 19 | 🔵 عنوان مقاله
parallel gzip implementation
🟢 خلاصه مقاله:
در دنیای فشردهسازی داده، بهروزرسانیهای جدید نقش مهمی در بهبود کارایی و سرعت پردازشها داشتهاند. یکی از این پیشرفتها، پیادهسازی همزمان و موازی الگوریتم gzip است که این امکان را فراهم میکند تا عملیات فشردهسازی و باز شدن فایلها به صورت همزمان و با بهرهگیری از چند هسته انجام شود. این رویکرد بهویژه در محیطهایی با حجم دادههای بزرگ و نیاز به پردازش سریع، بسیار مؤثر است و میتواند زمان عملیات را به طور قابل توجهی کاهش دهد.
علاوه بر این، بهبودهای جدید شامل رمزگذاری جریان zstd همزمان است، که این فناوری توانسته سرعت فشردهسازی را به طرز قابل توجهی ارتقا دهد. این فرآیند موازی به سیستمها اجازه میدهد تا به صورت همزمان چندین ماموریت فشردهسازی را انجام دهند، و در نتیجه بهرهوری سیستم به طور چشمگیری افزایش مییابد. همچنین، توسعهدهندگان موفق شدهاند یک دیکدک zstd برای معماری ARM64 طراحی و پیادهسازی کنند. این دیکدک به ویژه در دستگاههای مبتنی بر پردازندههای ARM، که در گوشیهای هوشمند و دستگاههای IoT بسیار رایج هستند، عملکرد و سرعت انتقال دادهها را بهبود میبخشد و امکان استفاده گستردهتر از فناوریهای فشردهسازی پیشرفته را فراهم میآورد.
در مجموع، این پیشرفتها نشاندهنده توجه مداوم به بهبود فناوریهای فشردهسازی و هدفگذاری بر روی قابلیتهای همزمانی و انطباق با معماریهای مختلف سختافزاری است که در نهایت تجربه کاربری بهتر و بهرهوری بالاتر را رقم میزند.
#فشردهسازی #پیشرفت_فناوری #zstd #ARM64
🟣لینک مقاله:
https://github.com/klauspost/pgzip
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 271 |
| 20 | 🔵 عنوان مقاله
How 4 Bytes of Padding Make Array Clearing 49% Faster
🟢 خلاصه مقاله:
حذف کردن آرایههای بزرگ در زبان برنامهنویسی Go، مخصوصاً در معماریهای اینتل، گاهی اوقات میتواند تفاوت قابل توجهی در سرعت اجرا داشته باشد. نکتهی جالب این است که قرار گرفتن آرایه در موقعیت صحیح و همراستا بودن آن با بایتهای ۸تایی، عملکرد حذف عناصر را تا ۴۹ درصد سریعتر میکند. این موضوع به نحوهی مدیریت حافظه و نحوهی تعامل پردازنده با دادهها مربوط میشود و تأثیر قابل توجهی بر کارایی برنامههای بزرگ دارد.
وقتی آرایه در موقعیتی قرار میگیرد که آدرسی آن ۸بایت همراستا است، عملیات پاکسازی یا صفر کردن آن به صورت بهینهتری انجام میشود. این موضوع به معماری پردازندههای اینتل مربوط است، که به صورت خاص برای خواندن و نوشتن دادههای ۸بایتی بهینهسازی شدهاند. در نتیجه، برخی از دستورالعملهای کمکی، مانند عملیاتهای بایتبهبایت، در این حالت سریعتر اجرا میشوند. به این پدیده، "پدینگ یا پر کردن ۴ بایتی" گفته میشود که اثر قابل توجهی بر سرعت دارد.
در بررسیهای آزمایشگاهی، محققان حتی نسخههای مختلف زبان برنامهنویسی، از جمله نسخههای مختلف از Go، را مورد ارزیابی قرار دادهاند. این آزمایش نشان میدهد که در زمانهایی که آرایه در موقعیت ایدهآل قرار دارد، میتوان بهبود چشمگیری در زمان اجرای عملیاتهای حافظه مشاهده کرد. این یافتهها اهمیت ساختاری برنامه و نحوهی تخصیص حافظه را در بهبود کارایی نشان میدهد و به توسعهدهندگان کمک میکند تا اطمینان حاصل کنند که دادههایشان در مسیرهای منطبق با معماری سختافزار قرار دارند.
در نتیجه، درک و استفاده از این نوع بهینهسازیها میتواند توسعهدهندگان را در ساخت برنامههای سریعتر و بهینهتر یاری دهد، مخصوصاً در پروژههای بزرگ که نیاز به عملیاتهای حافظه مکرر دارند. شناخت نحوهی قرارگیری دادهها و بهرهگیری از اصول معماری کامپیوتر، کلید موفقیت در رسیدن به کارایی بهتر است.
#برنامهنویسی
#بهینهسازی_حافظه
#پردازشگر
#پروگرمینگ
🟣لینک مقاله:
https://blog.andr2i.com/posts/2026-06-22-optimization-catalog-how-4-bytes-of-padding-make-array-clearing-49-faster
➖➖➖➖➖➖➖➖
👑 @gopher_academy | 597 |
