es
Feedback
Gopher Academy

Gopher Academy

Ir al canal en Telegram
3 818
Suscriptores
Sin datos24 horas
+37 días
+930 días
Atraer Suscriptores
julio '26
julio '26
+52
en 0 canales
junio '26
+67
en 0 canales
Get PRO
mayo '26
+45
en 0 canales
Get PRO
abril '26
+24
en 5 canales
Get PRO
marzo '26
+10
en 0 canales
Get PRO
febrero '26
+79
en 1 canales
Get PRO
enero '26
+29
en 8 canales
Get PRO
diciembre '25
+103
en 7 canales
Get PRO
noviembre '25
+72
en 0 canales
Get PRO
octubre '25
+598
en 1 canales
Get PRO
septiembre '25
+61
en 6 canales
Get PRO
agosto '25
+84
en 9 canales
Get PRO
julio '25
+99
en 10 canales
Get PRO
junio '25
+47
en 7 canales
Get PRO
mayo '25
+45
en 1 canales
Get PRO
abril '25
+63
en 8 canales
Get PRO
marzo '25
+90
en 8 canales
Get PRO
febrero '25
+91
en 3 canales
Get PRO
enero '25
+96
en 3 canales
Get PRO
diciembre '24
+113
en 7 canales
Get PRO
noviembre '24
+94
en 2 canales
Get PRO
octubre '24
+116
en 4 canales
Get PRO
septiembre '24
+138
en 4 canales
Get PRO
agosto '24
+101
en 2 canales
Get PRO
julio '24
+187
en 5 canales
Get PRO
junio '24
+173
en 11 canales
Get PRO
mayo '24
+301
en 2 canales
Get PRO
abril '24
+185
en 3 canales
Get PRO
marzo '24
+172
en 3 canales
Get PRO
febrero '24
+154
en 0 canales
Get PRO
enero '24
+207
en 0 canales
Get PRO
diciembre '23
+215
en 4 canales
Get PRO
noviembre '23
+77
en 2 canales
Get PRO
octubre '23
+79
en 0 canales
Get PRO
septiembre '23
+70
en 0 canales
Get PRO
agosto '23
+108
en 0 canales
Get PRO
julio '23
+68
en 0 canales
Get PRO
junio '23
+106
en 0 canales
Get PRO
mayo '23
+211
en 0 canales
Get PRO
abril '23
+142
en 0 canales
Get PRO
marzo '23
+56
en 0 canales
Get PRO
febrero '23
+70
en 0 canales
Get PRO
enero '23
+62
en 0 canales
Get PRO
diciembre '22
+14
en 0 canales
Get PRO
noviembre '22
+24
en 0 canales
Get PRO
octubre '22
+15
en 0 canales
Get PRO
septiembre '22
+78
en 0 canales
Get PRO
agosto '22
+47
en 0 canales
Get PRO
julio '22
+36
en 0 canales
Get PRO
junio '22
+26
en 0 canales
Get PRO
mayo '22
+27
en 0 canales
Get PRO
abril '22
+14
en 0 canales
Get PRO
marzo '22
+21
en 0 canales
Get PRO
febrero '22
+13
en 0 canales
Get PRO
enero '22
+24
en 0 canales
Get PRO
diciembre '21
+51
en 0 canales
Get PRO
noviembre '21
+107
en 0 canales
Get PRO
octubre '21
+13
en 0 canales
Get PRO
septiembre '21
+31
en 0 canales
Get PRO
agosto '21
+29
en 0 canales
Get PRO
julio '21
+41
en 0 canales
Get PRO
junio '21
+29
en 0 canales
Get PRO
mayo '21
+26
en 0 canales
Get PRO
abril '21
+49
en 0 canales
Get PRO
marzo '21
+376
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
27 julio+2
26 julio+1
25 julio+1
24 julio+1
23 julio+3
22 julio+2
21 julio+2
20 julio+2
19 julio+4
18 julio+3
17 julio0
16 julio+4
15 julio+5
14 julio0
13 julio+3
12 julio+1
11 julio+1
10 julio+1
09 julio0
08 julio+1
07 julio+2
06 julio+3
05 julio+4
04 julio+3
03 julio+1
02 julio0
01 julio+2
Publicaciones del Canal
شایان اویس‌قَرَن، پژوهشگر ایرانی علوم رایانه و استاد دانشگاه واشینگتن، مدال آباکوس سال ۲۰۲۶ اتحادیه بین‌المللی ریاضیات را دریافت کرده است؛ جایزه‌ای که به دستاوردهای برجسته پژوهشگران جوان در بخش‌های ریاضی علوم رایانه تعلق می‌گیرد. کمیته این جایزه می‌گوید اویس‌قرن با وارد کردن ابزارهایی از شاخه‌هایی چون هندسه چندجمله‌ای‌ها، نظریه احتمال و نظریه طیفی گراف‌ها، شیوه تحلیل الگوریتم‌ها را گسترش داده و برای حل چند مسئله قدیمی علوم رایانه راه‌های تازه‌ای گشوده است. پژوهش‌های او به‌ویژه در دو زمینه مورد توجه قرار گرفته‌اند: یافتن مسیرهای نزدیک به بهینه و نمونه‌گیری تصادفی از مجموعه‌های بسیار بزرگ و پیچیده. مدال آباکوس هر چهار سال یک‌بار اهدا می‌شود و ادامه جایزه‌ای است که تا سال ۲۰۱۸ به نام رولف نوانلینا شناخته می‌شد. نامزد دریافت آن باید در آغاز سال برگزاری کنگره جهانی ریاضی‌دانان هنوز به ۴۰ سالگی نرسیده باشد. این جایزه از مهم‌ترین افتخارات بین‌المللی در علوم رایانه نظری به شمار می‌رود. اما اهمیت کار اویس‌قرن تنها با فهرست کردن اصطلاح‌های تخصصی روشن نمی‌شود. بخش مهمی از مسیر علمی او به یکی از مشهورترین پرسش‌های علوم رایانه بازمی‌گردد: چگونه می‌توان کوتاه‌ترین مسیر ممکن را برای سفر میان چندین شهر پیدا کرد و در پایان به نقطه آغاز بازگشت؟ این پرسش که «مسئله فروشنده دوره‌گرد» نام دارد، در ظاهر ساده است. یک فروشنده، راننده یا مأمور توزیع باید از چند شهر یا مقصد عبور کند، هر کدام را یک بار ببیند و به نقطه نخست بازگردد. با افزایش شمار مقصدها، تعداد مسیرهای ممکن چنان سریع زیاد می‌شود که بررسی همه آنها عملاً ممکن نیست. در چنین مواردی، پژوهشگران به جای یافتن پاسخ دقیق، الگوریتمی می‌خواهند که در مدت معقول مسیری نزدیک به بهترین مسیر را پیدا کند و بتوان تضمین کرد که نتیجه آن از حد معینی بدتر نخواهد بود. https://t.me/futurepulse_persian

2
🔵 عنوان مقاله Go's Stuck Goroutine Problem (And Why to Let It Fail) 🟢 خلاصه مقاله: در زبان برنامه‌نویسی Go، یکی از مشکلات رایج، گیر کردن روروتین‌ها یا همان گوروتین‌هایی است که به طور ناخواسته متوقف می‌شوند یا توقف نمی‌کنند. این وضعیت معمولا زمانی رخ می‌دهد که عملیات بلندمدت یا بی‌وقفه درون گوروتین‌ها گرفتار شوند و نتوانند به درستی پایان یابند. این مشکل باعث می‌شود که برنامه‌های چندوظیفه‌ای به طور ناخوشایند کند شوند یا در برخی موارد متوقف شوند، که این امر می‌تواند روند توسعه و نگهداری برنامه را دشوارتر کند. یکی از دلایل اصلی این مشکل، محدودیت‌های مدل اجرای همزمان در زبان Go است. برخلاف زبان‌هایی مانند Erlang که بر پایه سیستم‌های مقاوم در برابر خطا ساخته شده‌اند، Go اجازه نمی‌دهد که گوروتین‌ها مستقیم کشته شوند، زیرا این کار می‌تواند منجر به مشکلاتی مانند وضعیت‌های ناپایدار یا ناپایدارهای حافظه شود. در نتیجه، معمولاً راهکارهای سنتی برای پایان دادن به گوروتین‌ها از جمله ارسال سیگنال‌های توقف یا کانال‌های لغو، در مواقعی کارآمد نیستند یا ممکن است موجب مشکلات دیگری شوند. در این زمینه، نسخه ۰.۴۰ از زبان برنامه‌نویسی River بر اساس فلسفه‌ای الهام گرفته از Erlang، رویکرد «بگذار کار خودش را انجام دهد» یا همان "let it crash" را پیاده‌سازی کرده است. در این رویکرد، به جای تلاش برای کنترل کامل و دخالت در روند اجرای گوروتین‌ها، آنها را رها می‌کنیم - به عبارت دیگر، اگر یک گوروتین خراب شد یا گیر کرد، برنامه این مشکل را قبول می‌کند و اجازه می‌دهد در صورت نیاز خودش خاموش شود و دوباره راه‌اندازی گردد. این روش یکی از راهکاری است که به برنامه‌نویسان کمک می‌کند تا سیستم‌های مقاوم‌تر و پایدارتر ساخته و نگهداری کنند، به خصوص در مواردی که وظایف پس‌زمینه یا عملیات بلندمدت اهمیت زیادی دارند و نیاز به مدیریت خطاهای پیش‌بینی‌شده ندارند. در نتیجه، در مواجهه با گوروتین‌های گیر کرده، بهترین راه‌حل ممکن این است که به جای تلاش بی‌وقفه برای کنترل کامل، اجازه دهیم خطاها رخ دهند و سیستم خود را بازیابی کند؛ همان روشی که در اکوسیستم Erlang بسیار رایج است و در حال حاضر با رویکرد جدید River و فلسفه «بگذار کار خودش را بکند»، می‌تواند راهکار مفیدی باشد. #برنامه‌نویسی #Go #سیستم‌های مقاوم #توسعه‌دهی 🟣لینک مقاله: https://riverqueue.com/blog/go-stuck-jobs ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
212
3
🔵 عنوان مقاله GoMLX: Accelerated Machine Learning Framework for Go 🟢 خلاصه مقاله: چارچوب یادگیری ماشین GoMLX که مخصوص زبان برنامه‌نویسی Go طراحی شده، راه‌حلی سریع و مؤثر برای توسعه مدل‌های هوشمند است. این فریم‌ورک بدون نیاز به زبان پایتون ساخته شده و جایگزینی ایده‌آل برای کتابخانه‌های معروفی مانند TensorFlow یا PyTorch محسوب می‌شود، در حالی که کاملاً در قالب و سبک برنامه‌نویسی Go می‌گنجد. در نسخه‌های اخیر، این ابزار پیشرفت‌های قابل توجهی داشته است؛ از جمله پشتیبانی بهتر از دستورالعمل‌های SIMD که عملکرد پردازشی را بسیار بهبود بخشیده، و افزوده شدن صفحه اصلی جدید، همراه با مستندات جامع و کامل. علاوه بر این، قابلیت پشتیبانی از مدل‌های متنوع از پروژه Hugging Face به صورت مستقیم، امکانات فوق‌العاده‌ای را برای توسعه دهندگان فراهم کرده است. به کمک این به‌روزرسانی‌ها، توسعه‌دهندگان می‌توانند مدل‌های یادگیری ماشین را با سرعت و سهولت بیشتری در زبان Go پیاده‌سازی کنند، و مسیر توسعه پروژه‌های هوش مصنوعی در این زبان برنامه‌نویسی را هموارتر سازند. در نتیجه، GoMLX به عنوان ابزاری قدرتمند و کارآمد در عرصه یادگیری ماشین با زبان Go شناخته شده است که امکاناتی جامع و به روز را در اختیار کاربران قرار می‌دهد. #یادگیری_ماشین #گوامدل #هوش_مصنوعی #برنامه_نویسی 🟣لینک مقاله: https://gomlx.github.io/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
213
4
🔵 عنوان مقاله oapi-codegen 2.8.0: Now with OpenAPI 3.1 Support 🟢 خلاصه مقاله: نسخه ۲.۸.۰ ابزار oapi-codegen به‌روزرسانی شد و اکنون از استاندارد جدید OpenAPI 3.1 پشتیبانی می‌کند. این ابزار مدت‌هاست که به عنوان روشی موثر و معتبر برای تولید کدهای پایه و استانداردهای مشتری و سرور در زبان گو توسعه یافته است. با این بروزرسانی، توسعه‌دهندگان می‌توانند از قابلیت‌های پیشرفته و به‌روز OpenAPI 3.1 بهره‌مند شوند و فرآیند ساخت و یکپارچه‌سازی APIها را به شکل ساده‌تر و دقیق‌تری انجام دهند. این تغییرات فرصت‌های جدیدی را برای بهبود کیفیت و سرعت توسعه سرویس‌های مبتنی بر API فراهم می‌آورد و نشان‌دهنده توسعه مداوم این ابزار قدرتمند است. #OpenAPI #برنامه‌نویسی #توسعهAPI #گو 🟣لینک مقاله: https://github.com/oapi-codegen/oapi-codegen/releases/tag/v2.8.0 ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
214
5
🚀 اگر قصد داری زبان انگلیسی رو تقویت کنی، از صفر شروع کنی یا برای مهاجرت آماده بشی، یکی از بهترین اساتیدی که می‌شناسم استاد منصوریان هست. 🇬🇧 اگر به دنبال یادگیری اصولی، منظم و کاربردی زبان هستی، پیشنهاد می‌کنم حتماً پیج ایشون رو دنبال کنی. 📚✨ 📅 ظرفیت کلاس‌های فعلی: یکشنبه و پنجشنبه: ساعت ۱۴:۳۰ 🕒 شنبه و چهارشنبه: ساعت ۱۹:۰۰ 🕖 👇👇👇👇 Https://t.me/RaziyehMansourian 🔗
176
6
🔵 عنوان مقاله go-diskfs: Manipulate Disks and Disk Images from Go 🟢 خلاصه مقاله: در دنیای مدیریت و ویرایش دیسک‌ها، ابزارهای مختلفی وجود دارند که به کمک آن‌ها می‌توان قسمت‌های مختلف یک دیسک را تنظیم یا فایل‌سیستم‌های مختلف را بر روی آن پیاده‌سازی کرد. ابزارهایی مانند fdisk، mkfs، vfat و mtools جزو ابزارهای اصلی و رایج در این حوزه هستند که هر یک نقش خاص خود را در کارهای مربوط به پارتیشن‌بندی، ساخت فایل‌سیستم و مدیریت فایل‌های سیستم‌های مختلف ایفا می‌کنند. در این میان، کتابخانه go-diskfs برای زبان برنامه‌نویسی Go طراحی شده است که هدف آن فراهم کردن امکان کار با دیسک‌ها و تصاویر دیسک به صورت برنامه‌نویسی و بدون نیاز به اجرای ابزارهای خارجی است. این کتابخانه به توسعه‌دهندگان این امکان را می‌دهد تا قسمت‌های مختلف دیسک‌ها، پارتیشن‌ها، فایل‌سیستم‌ها و فایل‌های ایمیج را به راحتی و با قابلیت برنامه‌ریزی مدیریت کنند. بنابراین، در مواردی که نیاز دارید عملیات مشابه آن‌هایی که با fdisk، mkfs یا mtools انجام می‌شود، اما در داخل برنامه و به صورت خودکار انجام دهید، این ابزار بسیار کاربردی است. استفاده از go-diskfs مزایای زیادی دارد؛ اول اینکه توسعه‌دهندگان می‌توانند فرآیندهای مدیریت دیسک را در برنامه‌های خود وارد کرده و کنترل کامل بر عملیات‌های پارتیشن‌بندی و ساخت فایل‌سیستم‌ها داشته باشند. این ابزار مخصوصاً در پروژه‌هایی که نیاز به کار اتوماتیک و مستقیم با دیسک‌ها دارند، بسیار مؤثر است و باعث ساده‌سازی کارهای پیچیده می‌شود. در نهایت، این کتابخانه، راهکاری قدرتمند برای رسیدن به مدیریت حرفه‌ای و برنامه‌نویسی دیسک و ایمیج‌ها در زبان برنامه‌نویسی محبوب Go است. #مدیریت_دیسک #برنامه‌نویسی #ایمیج_دیسک #go 🟣لینک مقاله: https://github.com/diskfs/go-diskfs ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
220
7
🔵 عنوان مقاله Storing Passkeys Like Password Hashes, and a Go API to Match 🟢 خلاصه مقاله: در دنیای امنیت فناوری‌های نوین، نگهداری امن اطلاعات کاربر اهمیت بسیار زیادی دارد. یکی از روش‌های نوآورانه در این زمینه، پیشنهاد شده است که کلیدهای عبور یا همان «پاس‌کی‌ها» به روشی مشابه با هش رمزعبورها ذخیره شوند. این رویکرد به معنای تبدیل کلیدهای عبور به رشته‌های بی‌ظاهر و نامشخص است که فضای کافی برای تضمین امنیت و جلوگیری از افشای اطلاعات حساس را فراهم می‌کند. علاوه بر این، تیم‌های توسعه‌دهنده در حال کار بر روی APIی استاتلس برای رمزنگاری و مدیریت «پاس‌کی‌ها» هستند، که می‌تواند در آینده در کتابخانه استاندارد زبان برنامه‌نویسی Go در نسخه 1.28 قرار گیرد. این API، امکاناتی فراهم می‌کند تا عملیات مربوط به نگهداری و احراز هویت وب‌تایید (WebAuthn) به صورت ساده‌تر و امن‌تر انجام شود، و توسعه‌دهندگان بتوانند این فناوری‌ها را بدون نگرانی از پیچیدگی‌های پایین‌دستی پیاده‌سازی کنند. این نوآوری‌ها نشان می‌دهد که چگونه فناوری‌های امنیتی در حال تحول هستند و توسعه‌دهندگان در حال حرکت به سمت روشی امن‌تر، کاراتر و کاربرپسندتر برای حفاظت از هویت دیجیتال کاربران خود هستند. انتظار می‌رود این ابزارهای جدید، نقش مهمی در ارتقاء سطح امنیت و سهولت استفاده در سیستم‌های هویت دیجیتال ایفا کنند. #امنیت_دیجیتال #پاس‌کی #WebAuthn #برنامه‌نویسی 🟣لینک مقاله: https://words.filippo.io/passkey-record/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
214
8
🔵 عنوان مقاله Escape Analysis in Go: Stack vs. Heap Allocations Explained 🟢 خلاصه مقاله: در دنیای برنامه‌نویسی با زبان Go، یکی از مفاهیم مهم که به بهبود کارایی و مدیریت حافظه کمک می‌کند، تحلیل فرار (escape analysis) است. این تحلیل مشخص می‌کند که آیا متغیرها و داده‌ها باید در استک (پشته) یا در هلپ (هیپ) اختصاص یابند. استک اختصاصی است و معمولاً سریع و کم‌حجم است، در حالی که هلپ برای داده‌هایی که طول عمرشان فراتر از دامنه تابع است، استفاده می‌شود و نیازمند مدیریت حافظه دینامیک است. انتخاب صحیح بین این دو حالت می‌تواند منجر به بهتر شدن عملکرد برنامه و مصرف بهینه‌تر حافظه شود. در این مقاله، قصد داریم این مفهوم را با زبانی ساده و قابل فهم توضیح دهیم و نشان دهیم که چگونه تحلیل فرار در زبان Go کمک می‌کند تا برنامه‌نویسان تصمیم‌های هوشمندانه‌تری در مدیریت حافظه بگیرند. همچنین به بررسی ابزارهای جدید در نسخه ۲۰۲۶ GoLand می‌پردازیم، که کار توسعه‌دهندگان را در تحلیل و بهینه‌سازی حافظه بسیار ساده‌تر و سریع‌تر می‌کند. خروجی گزینه "-gcflags="-m"" در کامپایلر Go به ما نشان می‌دهد که کدام قسمت‌های کد در حافظه به صورت استک یا هلپ مدیریت شده‌اند و کجا ممکن است نیاز باشد به کد بازگردیم و بهبودهای لازم را انجام دهیم. در نتیجه، با درک عمیق‌تر از تحلیل فرار، برنامه‌نویسان می‌توانند برنامه‌هایی با کارایی بالا و حافظه بهینه‌تر بنویسند و در عین حال، با ابزارهای مدرن توسعه، فرآیند بهینه‌سازی را تسریع کنند. این موضوع نه تنها برای متخصصان کارآمد بلکه برای هر توسعه‌دهنده‌ی علاقمند به بهبود کیفیت کد و عملکرد برنامه‌های خود اهمیت دارد. #برنامه_نویسی #GoLang #مدیریت_حافظه #تحلیل_فرار 🟣لینک مقاله: https://blog.jetbrains.com/go/2026/07/20/escape-analysis/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
215
9
🔵 عنوان مقاله httpretty 0.2: Pretty-Print HTTP Requests Made from Go 🟢 خلاصه مقاله: در حوزه توسعه وب و برنامه‌نویسی، داشتن ابزارهایی که فرایند اشکال‌زدایی را ساده‌تر و موثرتر می‌کنند، اهمیت ویژه‌ای دارد. یکی از نمونه‌های این ابزارها، کتابخانه‌ "httretty 0.2" است که برای قالب‌بندی و نمایش درخواست‌های HTTP در زبان Go طراحی شده است. این ابزار به‌طور خاص، امکان نمایش جزئیات کامل درخواست‌های ارسالی، همانند چیزی که در گزینه‌ی "--verbose" در ابزار curl ارائه می‌شود، را فراهم می‌کند. در هنگام اشکال‌زدایی، نمایش واضح و دقیق این درخواست‌ها می‌تواند به توسعه‌دهندگان کمک کند تا مشکلات مربوط به درخواست‌ها و پاسخ‌ها را سریع‌تر شناسایی و رفع نمایند. این پروژه، که حدود هفت سال پیش آغاز شد، در طول زمان بروزرسانی‌های متعددی داشته است. در نسخه‌ی اخیر، امکانات جدیدی مانند پشتیبانی از بدن‌های چندبخشی (multipart bodies)، تریلرهای HTTP، و موارد دیگری اضافه شده است. این پیشرفت‌ها، قابلیت نمایش و مدیریت انواع مختلف درخواست‌های HTTP را بسیار بهبود بخشیده است و کارکرد این ابزار را در فریم‌ورک‌های مختلف بیشتر کرده است. بنابراین، "httretty" ابزاری قدرتمند است که توسعه‌دهندگان را در فرآیند دیباگینگ و بهینه‌سازی درخواست‌های HTTP یاری می‌دهد و به آن‌ها امکان می‌دهد تا با دیدی بازتر و کنترل بهتر، مسائل مربوط به ارتباطات شبکه‌ای را حل کنند. در مجموع، این ابزار به شکل قابل توجهی فرآیند توسعه و اشکال‌زدایی اپلیکیشن‌های وب را آسان‌تر و کارآمدتر می‌نماید، و استفاده از آن در پروژه‌های گوناگون می‌تواند تأثیر قابل توجهی در افزایش کیفیت و سرعت توسعه داشته باشد. #برنامه‌نویسی #یاختن_کد #اشکال‌زدایی #توسعه_وب 🟣لینک مقاله: https://github.com/henvic/httpretty ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
224
10
‏Cache Locality یعنی: این‌که داده‌هایی که برنامه استفاده می‌کند، چقدر نزدیک به هم در حافظه قرار دارند و در نتیجه CPU بتواند آن‌ها را سریع‌تر از Cache بخواند. چرا Cache Locality مهم است؟ ‏CPU خیلی سریع‌تر از RAM است. اگر داده‌ها در Cache باشند → اجرا خیلی سریع اگر در RAM باشند → CPU باید صبر کند پس: هرچه Cache Locality بهتر → Performance بهتر دو نوع Cache Locality 1️⃣ ‏Temporal Locality یعنی: اگر یک داده الان استفاده شده، احتمالاً به‌زودی دوباره استفاده می‌شود 📌 مثال: for i := 0; i < 1000; i++ { sum += arr[5] } اینجا arr[5] بارها استفاده می‌شود → CPU آن را در Cache نگه می‌دارد. 2️⃣‏Spatial Locality یعنی: اگر یک آدرس حافظه استفاده شود، آدرس‌های کناری آن هم احتمالاً استفاده می‌شوند 📌 مثال: for i := 0; i < len(arr); i++ { sum += arr[i] } آرایه پشت سر هم در حافظه است → CPU یک بلوک کامل را Cache می‌کند. مثال بد (Cache Locality ) type Node struct { next *Node value int } لیست لینک‌شده: هر node ممکن است در جای تصادفی حافظه باشد ‏ CPU دائم cache miss می‌خورد مثال خوب (Cache Locality ) values := make([]int, 1_000_000) * حافظه پیوسته ‏ cache-friendly ✅ ارتباط Cache Locality با Green Tea GC ‏ GC قدیمی Go: * دنبال pointerها می‌دوید * حافظه را پراکنده می‌خواند ❌ ‏Green Tea GC: * حافظه را بلوک‌به‌بلوک (span-based) اسکن می‌کند * دسترسی پیوسته → cache locality بالا ✅ 📈 نتیجه: ‏cache miss کمتر ‏CPU efficiency بیشتر ‏GC سریع‌تر 🇨🇨 یک نکته Cache locality یعنی برنامه طوری به حافظه دسترسی داشته باشد که داده‌های موردنیاز نزدیک هم باشند و CPU بتواند آن‌ها را از cache سریع بخواند.
305
11
معرفی کتابخونه Zen-QL : یک Integrated Query Language در زبان گولنگ می‌باشد که در نسخه های اخیر از عبارات کامپایل شده برای سهولت در کدنویسی و خوانایی بیشتر کدبیس ها پشتیبانی مینماید. ایجاد API های مجتمع برای پشتیبانی از منابع داده ای مختلف از هدف های اصلی این پروژه بوده و همچنین بدلیل طراحی ماژولار آن می‌توان تنها از ماژول های مورد نیاز بدون اضافات استفاده نمود. https://GitHub.com/malikhan-dev/zenql <Mohammad/>
447
12
آسیب‌پذیری GO-2026-5932 هشداری مهم برای توسعه‌دهندگان زبان Go است و به بسته golang.org/x/crypto/openpgp مربوط می‌شود. برخلاف بسیاری از هشدارهای امنیتی که به یک باگ یا نقص مشخص اشاره دارند، این مورد اعلام می‌کند که طراحی این بسته به‌طور ذاتی ناامن است، مشکلات امنیتی شناخته‌شده متعددی دارد، دیگر نگهداری و به‌روزرسانی نمی‌شود و استفاده از آن به هیچ عنوان توصیه نمی‌شود. طبق این هشدار، بسته openpgp سال‌هاست که از چرخه توسعه خارج شده و توسعه‌دهندگان Go نیز آن را منسوخ (Deprecated) می‌دانند. در نتیجه، حتی اگر کد شما امروز بدون مشکل کار کند، همچنان در معرض ریسک‌های امنیتی قرار دارد و در آینده نیز هیچ وصله یا به‌روزرسانی امنیتی برای آن منتشر نخواهد شد. اگر پروژه شما همچنان نیاز به سازگاری با سیستم‌های OpenPGP دارد، پیشنهاد رسمی این است که به github.com/ProtonMail/go-crypto/openpgp مهاجرت کنید. این پروژه یک فورک نگهداری‌شده از بسته اصلی است که با هدف جایگزینی مستقیم (Drop-in Replacement) توسعه یافته و علاوه بر رفع بسیاری از مشکلات، همچنان به‌روزرسانی و پشتیبانی می‌شود. این هشدار بار دیگر اهمیت بررسی وابستگی‌های پروژه را یادآوری می‌کند. استفاده از کتابخانه‌هایی که دیگر نگهداری نمی‌شوند، حتی اگر سال‌ها بدون مشکل کار کرده باشند، می‌تواند امنیت کل نرم‌افزار را به خطر بیندازد. مهاجرت به کتابخانه‌های فعال و پشتیبانی‌شده، یکی از مهم‌ترین اقدامات برای حفظ امنیت و پایداری پروژه‌های Go است. #GoLang #OpenPGP #CyberSecurity
435
13
🔵 عنوان مقاله Fyne 2.8: A Big Update for the Popular GUI Toolkit 🟢 خلاصه مقاله: نسخه‌ی Fyne 2.8، یک به‌روزرسانی بزرگ برای فریمورک محبوب رابط کاربری گرافیکی است که پس از مدت‌ها انتظار منتشر شده است. این نسخه، تحولی در امکانات ارائه شده است و قابلیت‌های جدید و پیشرفته‌ای را به مجموعه ابزارهای توسعه‌دهندگان اضافه می‌کند. در این بروزرسانی، شاهد افزودن قابلیت‌های جدیدی مانند شکل‌های پردازش شده با شتاب‌دهی GPU، سایه‌ها و شیدرهای سفارشی GLSL هستیم که به برنامه‌ها ظاهری بسیار جذاب‌تر و حرفه‌ای‌تر می‌بخشند. علاوه بر این، بخش رندر مارک‌داون یا همان Markdown در این نسخه غنی‌تر شده است و قابلیت‌های بیشتری در نمایش متن‌های فرمت‌دهی شده ارائه می‌دهد. در کنار این موارد، APIهای پنجره در حالت چند صفحه‌نمایش یا چند مانیتور نیز بهبود یافته‌اند، که توسعه‌دهندگان را قادر می‌سازد تا برنامه‌های چند صفحه‌نمایش را به شکلی ساده‌تر و کارآمدتر پیاده‌سازی کنند. این امکانات جدید باعث شده است تا Fyne 2.8 بتواند نیازهای توسعه برنامه‌های پیچیده‌تر و جذاب‌تر را برآورده کند و تجربه کاربری بهتری برای کاربران نهایی فراهم کند. این نسخه، نشان‌دهنده تلاش تیم توسعه‌دهنده برای بروز نگه داشتن فریمورک و پاسخگویی به نیازهای روزافزون دنیای توسعه نرم‌افزار است. نسخه‌ی جدید Fyne 2.8، با امکانات پیشرفته‌ای که ارائه می‌دهد، جایگاه خود را به‌عنوان یکی از قدرتمندترین ابزارهای ساخت رابط کاربری در دنیای توسعه اپلیکیشن تثبیت کرده است و برای برنامه‌نویسانی که به دنبال انعطاف‌پذیری و کارایی بالا هستند، گزینه‌ای ایده‌آل محسوب می‌شود. #فاینه #رابط_کاربری #توسعه_نرم‌افزار #نسخه_جدید 🟣لینک مقاله: https://fyne.io/blog/2026/07/13/fyne-v2.8-released/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
379
14
🔵 عنوان مقاله Compile-Time OpenTelemetry Instrumentation for Go 🟢 خلاصه مقاله: در دنیای توسعه برنامه‌های مدرن، نظارت و رصد کردن رفتار برنامه‌ها اهمیت زیادی دارد. این نیاز باعث شده است تا ابزارهای متعددی برای جمع‌آوری داده‌های مربوط به عملکرد و مشکلات برنامه‌ها توسعه یابند. یکی از این ابزارها OpenTelemetry است که اکنون به نسخه‌ای پایدار رسیده و قابلیت‌هایی جدید و کارآمد ارائه می‌دهد. یکی از بزرگ‌ترین تحولات در این زمینه، پشتیبانی از ابزارهای نظارتی در زمان کامپایل (Compile-Time Instrumentation) برای زبان Go است. با این فناوری، دیگر نیاز نیست توسعه‌دهندگان به صورت دستی ابزارهای نظارتی را بر روی کدهای خود پیاده‌سازی کنند یا از عوامل eBPF استفاده کنند. در عوض، با بهره‌گیری از قابلیت‌های پیشرفته OpenTelemetry و استفاده از ابزار -toolexec، نحوه افزودن ابزارهای نظارتی به برنامه‌های Go به طور خودکار و بدون زحمت انجام می‌شود. این روش نه تنها فرآیند اضافه کردن نظرات و سنسورها را ساده‌تر می‌کند بلکه خطاهای انسانی را کاهش داده و توسعه سریع‌تر برنامه‌ها را ممکن می‌سازد. هرچند این فناوری بسیار کارآمد است، ولی باید توجه داشت که پوشش کتابخانه‌های نسخه ۱ در این زمینه محدودیت‌هایی دارد که ممکن است در برخی پروژه‌ها نیاز به توجه و برنامه‌ریزی خاصی داشته باشد. با وجود این، این توسعه بزرگ مسیر تازه‌ای برای نظارت بی‌وقفه و دقیق بر برنامه‌های Go فراهم می‌کند و به توسعه‌دهندگان امکان می‌دهد کیفیت و کارایی برنامه‌های خود را به شکل مؤثری بهبود بخشند. در نتیجه، OpenTelemetry در نسخه جدید خود، نه تنها روند افزودن ابزارهای نظارتی را ساده کرده بلکه امکانات جدیدی برای توسعه‌دهندگان فراهم آورده است که باعث بهبود سرعت توسعه و ارتقاء کیفیت محصولات نرم‌افزاری می‌شود. #نظارت #OpenTelemetry #برنامه_نویسی #Go 🟣لینک مقاله: https://opentelemetry.io/blog/2026/go-compile-time-instrumentation-v1/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
293
15
🔵 عنوان مقاله GoLand 2026.2 Released 🟢 خلاصه مقاله: نسخه جدید GoLand 2026.2 منتشر شد. این آخرین به‌روزرسانی IDE تجاری برای زبان برنامه‌نویسی Go امکانات بسیار زیادی را به توسعه‌دهندگان عرضه می‌کند. یکی از ویژگی‌های برجسته این نسخه، یکپارچه‌سازی کامل با ابزار go fix است که به برنامه‌نویسان کمک می‌کند به‌راحتی و سریع کدهای خود را اصلاح و به‌روزرسانی کنند. این ادغام فرآیند اصلاح اشکالات و بهبود ساختار کد را ساده‌تر و مؤثرتر می‌کند و باعث افزایش بهره‌وری در توسعه می‌شود. علاوه بر این، یک ابزار جدید با عنوان "بهینه‌سازی Go" معرفی شده است که مجموعه‌ای کامل از امکانات پیشرفته را جمع‌آوری کرده است. این ابزار شامل قابلیت‌های تحلیل پروفایلینگ، تحلیل escape، و بهینه‌سازی ساختار داده‌ها است. این ویژگی‌ها در قالب یک فضای واحد گرد هم آمده‌اند تا توسعه‌دهندگان بتوانند عملکرد برنامه‌های خود را بهتر درک و بهبود بخشند. به کمک این ابزار، می‌توان به بهینه‌ترین شکل ممکن کدهای Go را تحلیل و اصلاح کرد، که این امر نهایت بهره‌وری و کارایی را به پروژه‌های برنامه‌نویسی می‌بخشد. نسخه جدید GoLand 2026.2، یک گام بزرگ در جهت ارتقای قابلیت‌ها و سهولت استفاده برای جامعه توسعه‌دهندگان این زبان مهم است. امکانات جدید باعث می‌شوند روند توسعه نرم‌افزار سریع‌تر، دقیق‌تر و کارآمدتر انجام شود و برنامه‌نویسان بتوانند تمرکز خود را بر روی نوآوری و بهبود عملکرد برنامه‌هایشان قرار دهند. این نسخه نشان می‌دهد که تیم توسعه JetBrains همواره در تلاش است تا ابزارهای قدرتمند و کاربردپسند را برای توسعه‌دهندگان فراهم کند. #GoLand #برنامه‌نویسی #هوشمندسازی_کد #توسعه_نرم‌افزار 🟣لینک مقاله: https://blog.jetbrains.com/go/2026/07/16/goland-2026-2-is-now-available/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
283
16
🔵 عنوان مقاله How I Use HTMX to Build Go Webapps 🟢 خلاصه مقاله: در این مقاله، من به طور عملی نحوه استفاده از HTMX در ساخت برنامه‌های وب با زبان Go را شرح می‌دهم. HTMX ابزاری است که امکان به‌روزرسانی صفحات وب را به سبک AJAX، اما با تکیه بر ویژگی‌های HTML، به صورت ساده و کارآمد فراهم می‌کند. در این راهنما، من بر تجربیات شخصی خود تأکید می‌کنم و نکات خاص و جزئیاتی که در فرآیند توسعه ممکن است چالش‌برانگیز باشند را به صورت صادقانه توضیح می‌دهم. هدف اصلی من نشان دادن نحوه بهره‌برداری مؤثر و مستقیم از این فناوری در پروژه‌های مبتنی بر زبان Go است و راهنمایی‌هایی عملی برای توسعه‌دهندگان علاقه‌مند به این روش ارائه می‌دهم. در ادامه، جزئیات مربوط به روش‌ها و تکنیک‌های خاص در به کارگیری HTMX در محیط توسعه با Go را بررسی می‌کنم، از نحوه پیاده‌سازی درخواست‌های دینامیک گرفته تا رفع خطاهای رایج و بهبود عملکرد برنامه‌های وب. این مقاله برای توسعه‌دهندگان علاقه‌مند به یادگیری راه‌حل‌های نوین و سریع در توسعه برنامه‌های وب است، که می‌خواهند با ابزارهای مدرن، تجربۀ کاربری بهتری خلق کنند و فرآیند توسعه را ساده‌تر و مؤثرتر سازند. #برنامه_نویسی #وب_داینامیک #HTMX #گو 🟣لینک مقاله: https://www.alexedwards.net/blog/how-i-use-htmx-with-go ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
313
17
🧑‍🎨 A collection of Golang agentic skills that works ✨🚀 https://github.com/samber/cc-skills-golang 🛠🐙
🧑‍🎨 A collection of Golang agentic skills that works ✨🚀 https://github.com/samber/cc-skills-golang 🛠🐙
551
18
🔵 عنوان مقاله My Thoughts on the Future of Go in the AI Era 🟢 خلاصه مقاله: در دنیای فناوری امروز، هوش مصنوعی به عنوان یکی از مهم‌ترین و پررونق‌ترین حوزه‌ها شناخته می‌شود که تحولات ساختاری زیادی را در جوامع انسانی به وجود آورده است. در این میان، فکر کردن در مورد آینده زبان‌های برنامه‌نویسی و نقش آن‌ها در عصر هوش مصنوعی بسیار مهم است. همانطور که در مقاله اخیر استیو فرانچیا مطرح شد، آلیس بر این باور است که هوش مصنوعی ممکن است به جای کاهش ارزش زبان‌های برنامه‌نویسی، آن‌ها را ارزشمندتر کند. او معتقد است که در حالی که بعضی تصور می‌کنند زبان‌های ساده و «خسته‌کننده» در مواجهه با هوش مصنوعی کم‌اهمیت می‌شوند، برعکس ممکن است هوش مصنوعی این زبان‌ها را تبدیل به ابزارهای قدرتمندتری برای توسعه و نوآوری کند. این دیدگاه نویدبخش است و نشان می‌دهد که زبان‌های قدیمی و ساده نیز در آینده نقش مهمی خواهند داشت و می‌توانند با بهره‌گیری از امکانات هوش مصنوعی، کارایی و ارزش خود را افزایش دهند. در نتیجه، تصور ما درباره اهمیت و ارزش زبان‌های برنامه‌نویسی باید تغییر کند. آینده‌ای که در آن هوش مصنوعی و زبان‌های برنامه‌نویسی در کنار هم رشد می‌کنند، می‌تواند فرصت‌های بی‌نظیری برای توسعه فناوری و بهبود کیفیت زندگی انسان‌ها فراهم آورد. بنابراین، نباید زبان‌های برنامه‌نویسی «خسته‌کننده» را نادیده گرفت؛ بلکه باید آن‌ها را با دیدی نو و امکانات نوین در مسیر پیشرفت دید. #هوش_مصنوعی #زبان_برنامه_نویسی #فناوری_آینده #نوآوری 🟣لینک مقاله: https://packagemain.tech/p/my-thoughts-on-the-future-of-go-in-ai-era ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
330
19
🔵 عنوان مقاله Sketchy: A Framework for Creating Generative Art in Go 🟢 خلاصه مقاله: در دنیای هنرهای جدید، ابزارهای برنامه‌نویسی توانسته‌اند خلاقیت را وارد حوزه هنرهای دیجیتال کنند. یکی از این ابزارها، چارچوب «اسکچ‌ی» است که برای خلق آثار هنری مبتنی بر تولید خودکار طراحی شده است. این فریم‌ورک با بهره‌گیری از موتور Ebitengine و امکانات گرافیکی Canvas در پس‌زمینه، امکانات بی‌نظیری را برای هنرمندان و توسعه‌دهندگان فراهم می‌کند تا آثار هنری بی‌نظیر و پیچیده را به سادگی و با کارایی بالا خلق کنند. در واقع، این پروژه با هدف ساختن یک فضای ساده و کاربرپسند برای اجرای فرم‌های هنری پدید آمده است. استفاده از فناوری‌های مدرن در کنار رابط کاربری کاربرپسند، امکان طراحی و توسعه اثرهای گرافیکی و هنری را برای مبتدیان و حرفه‌ای‌ها تا حد قابل توجهی تسهیل می‌کند. به طور کلی، «اسکچ‌ی» یک چارچوب انعطاف‌پذیر است که نه تنها در پروژه‌های هنری و خلاقانه، بلکه در آموزش‌های فنی و تمرین‌های برنامه‌نویسی نیز کاربرد فراوان دارد. این ابزار نوآورانه به هنر دیجیتال جانی دوباره بخشیده و راه را برای خلق اثرهای هنری نوآورانه در فضای دیجیتال هموار می‌کند. تجربه کار با آن ساده است و به علاقه‌مندان اجازه می‌دهد تا بدون نیاز به دانستن جزئیات پیچیده، ایده‌های خود را به تصاویری جذاب و پویا تبدیل کنند. این توسعه‌دهنده‌ها و هنرمندان را ترغیب می‌کند تا مهارت‌های برنامه‌نویسی و هنر دیجیتال را همزمان تقویت کنند و در پروژه‌های خلاقانه خود نوآوری‌های بیشتری به کار گیرند. #هنرهای_دیجیتال #خلاقیت_برخط #برنامه‌نویسی #عکاسی_پویانما 🟣لینک مقاله: https://github.com/aldernero/sketchy ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
244
20
درواقعه RWMutex زمانی استفاده می‌شود که خواندن (Read) بسیار بیشتر از نوشتن (Write) باشد. کاربرد اصلی RLock() و RUnlock() این است که چندین goroutine بتوانند همزمان داده را بخوانند، بدون اینکه مزاحم یکدیگر شوند، اما در زمان نوشتن، فقط یک goroutine اجازه‌ی تغییر داده را داشته باشد. بدون RWMutex فرض کنید یک Map مشترک دارید: var m = make(map[string]int) var mu sync.Mutex برای خواندن: mu.Lock() value := m["apple"] mu.Unlock() اگر 100 goroutine همزمان بخواهند فقط مقدار apple را بخوانند، همگی باید منتظر هم بمانند، چون Mutex فقط اجازه می‌دهد یک goroutine وارد بخش بحرانی شود. با RWMutex var m = make(map[string]int) var rw sync.RWMutex برای خواندن: rw.RLock() value := m["apple"] rw.RUnlock() اکنون: Reader 1 می‌تواند بخواند. Reader 2 همزمان می‌تواند بخواند. Reader 3 همزمان می‌تواند بخواند. ... حتی هزار Reader نیز می‌توانند همزمان داده را بخوانند. اما اگر یک Writer بخواهد داده را تغییر دهد: rw.Lock() m["apple"] = 10 rw.Unlock() تا زمانی که تمام Readerها RUnlock() نکنند، Writer منتظر می‌ماند. کاربردهای رایج 1. Cache type Cache struct { mu sync.RWMutex data map[string]string } خواندن: func (c *Cache) Get(key string) string { c.mu.RLock() defer c.mu.RUnlock() return c.data[key] } نوشتن: func (c *Cache) Set(key, value string) { c.mu.Lock() defer c.mu.Unlock() c.data[key] = value } در یک Cache معمولاً عملیات Get بسیار بیشتر از Set است، بنابراین RWMutex عملکرد بهتری نسبت به Mutex دارد. 2. Configuration فرض کنید صدها goroutine فقط تنظیمات برنامه را می‌خوانند و هر چند دقیقه یک بار تنظیمات به‌روزرسانی می‌شود. Read Read Read Read Read │ │ │ │ └──────┴──────┴──────┘ همزمان اجرا می‌شوند Write │ منتظر می‌ماند تا همه Readerها تمام شوند. 3. Web Server در یک وب‌سرور: اکثر درخواست‌ها فقط اطلاعات را از حافظه می‌خوانند. تعداد کمی از درخواست‌ها اطلاعات را تغییر می‌دهند. در این شرایط RWMutex انتخاب مناسبی است. چه زمانی از Mutex استفاده کنیم؟ اگر تقریباً همه عملیات‌ها نوشتن هستند یا خواندن و نوشتن به یک اندازه انجام می‌شوند، معمولاً Mutex انتخاب بهتری است؛ زیرا RWMutex خودش سربار بیشتری دارد. قانون کلی فقط خواندن → RLock() / RUnlock() تغییر داده → Lock() / Unlock() به همین دلیل، RWMutex در ساختارهایی مانند Cache، Mapهای اشتراکی، تنظیمات برنامه (Configuration)، Session Store و In-Memory Database بسیار پرکاربرد است، زیرا امکان خواندن همزمان را فراهم می‌کند و در عین حال از نوشتن همزمان جلوگیری می‌کند.
220