uk
Feedback
Gopher Academy

Gopher Academy

Відкрити в Telegram
3 817
Підписники
-124 години
-37 днів
+330 день
Залучення підписників
липень '26
липень '26
+58
в 0 каналах
червень '26
+67
в 0 каналах
Get PRO
травень '26
+45
в 0 каналах
Get PRO
квітень '26
+24
в 5 каналах
Get PRO
березень '26
+10
в 0 каналах
Get PRO
лютий '26
+79
в 1 каналах
Get PRO
січень '26
+29
в 8 каналах
Get PRO
грудень '25
+103
в 7 каналах
Get PRO
листопад '25
+72
в 0 каналах
Get PRO
жовтень '25
+598
в 1 каналах
Get PRO
вересень '25
+61
в 6 каналах
Get PRO
серпень '25
+84
в 9 каналах
Get PRO
липень '25
+99
в 10 каналах
Get PRO
червень '25
+47
в 7 каналах
Get PRO
травень '25
+45
в 1 каналах
Get PRO
квітень '25
+63
в 8 каналах
Get PRO
березень '25
+90
в 8 каналах
Get PRO
лютий '25
+91
в 3 каналах
Get PRO
січень '25
+96
в 3 каналах
Get PRO
грудень '24
+113
в 7 каналах
Get PRO
листопад '24
+94
в 2 каналах
Get PRO
жовтень '24
+116
в 4 каналах
Get PRO
вересень '24
+138
в 4 каналах
Get PRO
серпень '24
+101
в 2 каналах
Get PRO
липень '24
+187
в 5 каналах
Get PRO
червень '24
+173
в 11 каналах
Get PRO
травень '24
+301
в 2 каналах
Get PRO
квітень '24
+185
в 3 каналах
Get PRO
березень '24
+172
в 3 каналах
Get PRO
лютий '24
+154
в 0 каналах
Get PRO
січень '24
+207
в 0 каналах
Get PRO
грудень '23
+215
в 4 каналах
Get PRO
листопад '23
+77
в 2 каналах
Get PRO
жовтень '23
+79
в 0 каналах
Get PRO
вересень '23
+70
в 0 каналах
Get PRO
серпень '23
+108
в 0 каналах
Get PRO
липень '23
+68
в 0 каналах
Get PRO
червень '23
+106
в 0 каналах
Get PRO
травень '23
+211
в 0 каналах
Get PRO
квітень '23
+142
в 0 каналах
Get PRO
березень '23
+56
в 0 каналах
Get PRO
лютий '23
+70
в 0 каналах
Get PRO
січень '23
+62
в 0 каналах
Get PRO
грудень '22
+14
в 0 каналах
Get PRO
листопад '22
+24
в 0 каналах
Get PRO
жовтень '22
+15
в 0 каналах
Get PRO
вересень '22
+78
в 0 каналах
Get PRO
серпень '22
+47
в 0 каналах
Get PRO
липень '22
+36
в 0 каналах
Get PRO
червень '22
+26
в 0 каналах
Get PRO
травень '22
+27
в 0 каналах
Get PRO
квітень '22
+14
в 0 каналах
Get PRO
березень '22
+21
в 0 каналах
Get PRO
лютий '22
+13
в 0 каналах
Get PRO
січень '22
+24
в 0 каналах
Get PRO
грудень '21
+51
в 0 каналах
Get PRO
листопад '21
+107
в 0 каналах
Get PRO
жовтень '21
+13
в 0 каналах
Get PRO
вересень '21
+31
в 0 каналах
Get PRO
серпень '21
+29
в 0 каналах
Get PRO
липень '21
+41
в 0 каналах
Get PRO
червень '21
+29
в 0 каналах
Get PRO
травень '21
+26
в 0 каналах
Get PRO
квітень '21
+49
в 0 каналах
Get PRO
березень '21
+376
в 0 каналах
Дата
Залучення підписників
Згадування
Канали
31 липня+2
30 липня0
29 липня+1
28 липня+3
27 липня+2
26 липня+1
25 липня+1
24 липня+1
23 липня+3
22 липня+2
21 липня+2
20 липня+2
19 липня+4
18 липня+3
17 липня0
16 липня+4
15 липня+5
14 липня0
13 липня+3
12 липня+1
11 липня+1
10 липня+1
09 липня0
08 липня+1
07 липня+2
06 липня+3
05 липня+4
04 липня+3
03 липня+1
02 липня0
01 липня+2
Дописи каналу
هفته جاری برای جامعه Go با چند تصمیم مهم در حوزه کتابخانه استاندارد و آینده این زبان همراه بوده است. مهم‌ترین خبر، پذیرش پیشنهاد اضافه شدن Kernel TLS (kTLS) به بسته crypto/tls است؛ قابلیتی که سال‌ها درباره آن بحث می‌شد و اکنون به‌طور رسمی چراغ سبز دریافت کرده است. پشتیبانی از kTLS به Go این امکان را می‌دهد که در سیستم‌عامل‌های پشتیبان، بخشی از پردازش TLS را به کرنل واگذار کند. این رویکرد می‌تواند در برخی سناریوها باعث کاهش سربار پردازشی، بهبود کارایی انتقال داده و استفاده بهینه‌تر از منابع سیستم شود؛ به‌ویژه در سرویس‌هایی که حجم بالایی از ارتباطات رمزنگاری‌شده را مدیریت می‌کنند. در کنار این خبر، گروه کاری Collections نیز پیشنهاد بسته container/... برای ارائه ساختارهای داده عمومی مبتنی بر جنریک‌ها را با هدف انتشار در Go 1.28 مطرح کرده است. این موضوع نشان می‌دهد که تمرکز توسعه‌دهندگان Go بیش از گذشته بر بهبود زیرساخت‌های کتابخانه استاندارد و ارائه ساختارهای داده مدرن معطوف شده است. از سوی دیگر، یکی دیگر از پیشنهادهای پذیرفته‌شده به توسعه‌دهندگان اجازه می‌دهد مثال‌های (Examples) مستندات Go، محدود به امضای تابع فعلی نباشند. این تغییر با استقبال جامعه Go روبه‌رو شده است، زیرا نوشتن مثال برای توابع کمکی و سناریوهایی که پیش‌تر امکان مستندسازی مناسبی نداشتند، از این پس ساده‌تر خواهد شد. مجموع این تغییرات نشان می‌دهد که مسیر توسعه Go همچنان بر بهبود عملکرد، غنی‌تر شدن کتابخانه استاندارد و ارتقای تجربه توسعه‌دهندگان متمرکز است. #GoLang #کتابخانه_استاندارد #برنامه_نویسی #توسعه_نرم‌افزار

2
BDD (Behavior-Driven Development) یا توسعه نرم‌افزار مبتنی بر رفتار یک روش توسعه نرم‌افزار است که تمرکز آن بر رفتار مورد انتظار سیستم از دید کاربر یا کسب‌وکار است، نه صرفاً جزئیات فنی پیاده‌سازی. در واقع تکامل‌یافته‌ی TDD (Test-Driven Development) است، اما به جای اینکه فقط برنامه‌نویس‌ها تست بنویسند، تلاش می‌کند توسعه‌دهندگان، تسترها و افراد کسب‌وکار (Business Analysts/Product Owners) همه با یک زبان مشترک درباره رفتار سیستم صحبت کنند. ایده اصلی BDD به جای اینکه بگوییم: این متد باید مقدار X را برگرداند. می‌گوییم: وقتی کاربر رمز عبور درست وارد می‌کند، باید وارد حساب کاربری خود شود. یعنی تمرکز از کد به رفتار سیستم منتقل می‌شود. ساختار معروف BDD معمولاً از قالب زیر استفاده می‌کند: Given When Then که به آن Gherkin Syntax گفته می‌شود. مثال ساده فرض کنید سیستم Login داریم. Feature: User Login Scenario: Successful Login Given the user is on the login page And the user has a valid account When the user enters the correct username and password Then the user should be redirected to the dashboard And a welcome message should be displayed معنی هر بخش Given شرایط اولیه Given the user has an account یعنی: کاربر قبلاً ثبت‌نام کرده است. When اتفاقی که رخ می‌دهد When the user clicks Login Then نتیجه مورد انتظار Then the dashboard is displayed مثال دیگر فرض کنید ATM داریم. Feature: Withdraw Money Scenario: Successful Withdrawal Given my account balance is $500 When I withdraw $100 Then my balance should become $400 کاملاً شبیه زبان طبیعی است. حتی مدیر پروژه هم می‌تواند آن را بخواند. در TDD ممکن است تستی مانند این بنویسید: func TestAddUser(t *testing.T) { } اما در BDD همان موضوع به این صورت بیان می‌شود: Given a valid user When the user is created Then the user should exist in the database مزایای BDD ۱. مستندات زنده (Living Documentation) سناریوها هم تست هستند و هم مستندات پروژه. ۲. کاهش سوءتفاهم همه دقیقاً می‌دانند سیستم باید چه رفتاری داشته باشد. ۳. تست‌های خوانا به جای: Test_Create_User_Valid_Name دارید: Given a valid name When creating a user Then the user is stored ۴. ارتباط بهتر تیم با Product Owner QA Developer همه یک زبان مشترک دارند. ابزارهای معروف BDD اگر زبان Go کار می‌کنید: Ginkgo Gomega Godog (پیاده‌سازی Gherkin برای Go) مثال با Godog: Feature: Calculator Scenario: Add two numbers Given I have entered 10 And I have entered 20 When I press add Then the result should be 30 سپس برای هر مرحله، کد Go نوشته می‌شود: func iHaveEntered(arg int) error { ... } func iPressAdd() error { ... } func theResultShouldBe(arg int) error { ... } مثال واقعی فروشگاه اینترنتی Feature: Buy Product Scenario: Product in stock Given a product has quantity 5 When the customer buys 2 items Then the stock should become 3 And the order should be created اگر موجودی کافی نباشد: Scenario: Product out of stock Given a product has quantity 1 When the customer buys 2 items Then the purchase should fail And an "Out of stock" message should be shown چرخه BDD Discuss Behavior ↓ Write Scenario (Given/When/Then) ↓ Run Scenario (Fail) ↓ Write Code ↓ Scenario Passes ↓ Refactor چه زمانی از BDD استفاده کنیم؟ بیشترین ارزش را در پروژه‌هایی دارد که: نیازمندی‌های کسب‌وکار پیچیده هستند. چند تیم (توسعه، QA و محصول) روی یک پروژه کار می‌کنند. می‌خواهید رفتار سیستم به‌صورت مستند و قابل اجرا باقی بماند. برای پروژه‌های کوچک یا ابزارهای ساده، استفاده از BDD ممکن است هزینه‌ی نگهداری بیشتری نسبت به مزایایش داشته باشد. جمع‌بندی فقط یک روش نوشتن تست نیست؛ بلکه یک شیوه‌ی همکاری و طراحی نرم‌افزار است. در این رویکرد، ابتدا رفتار مورد انتظار سیستم با زبانی قابل فهم برای همه‌ی اعضای تیم (معمولاً با قالب Given–When–Then) تعریف می‌شود، سپس این سناریوها به تست‌های خودکار تبدیل شده و در نهایت کد به گونه‌ای نوشته می‌شود که آن رفتارها را برآورده کند. نتیجه این است که تست‌ها، مستندات و نیازمندی‌های کسب‌وکار همسو و همیشه به‌روز باقی می‌مانند.
283
3
🔵 عنوان مقاله Qualcomm Posts Linux Patches For X2 Elite Extreme Powered ASUS Zenbook A16 🟢 خلاصه مقاله: شرکت کوالکام در ادامه تلاش‌های خود برای بهبود سازگاری پردازنده‌های Snapdragon، اکنون مجموعه‌ای جدید از اصلاحات (پچ‌ها) را برای هسته لینوکس منتشر کرده است. این پچ‌ها به هدف راه‌اندازی لپ‌تاپ‌های مجهز به پردازنده X2 Elite Extreme، مانند لپ‌تاپ ASUS Zenbook A16، هنگام بوت شدن در سیستم‌عامل لینوکس طراحی شده است. این اقدام پس از انتشار اصلاحاتی بود که اجازه می‌داد لپ‌تاپ‌های Lenovo Yoga Slim 7x Gen11 و HP EliteBook X G2q X2 Elite، بدون نیاز به ویندوز ۱۱ بر پایه ARM، راه‌اندازی شوند و کار کنند. حال، مهندسان کوالکام به دنبال توسعه این مسیر هستند تا دستگاه‌های مبتنی بر X2 Elite Extreme را نیز با موفقیت در لینوکس به کار بیاندازند و تجربه کاربری بهتر و آزادی بیشتری برای کاربران فراهم آورند. #کوالکام #لینوکس #گجت‌های_هوشمند #توسعه فناوری 🟣لینک مقاله: https://www.phoronix.com/news/Qualcomm-Zenbook-A16-X2EE ➖➖➖➖➖➖➖➖ 👑 @Linux_Labdon
256
4
در هفتمین رویداد تک‌وتاک - سلسله رویدادهای تخصصی در حوزه توسعه نرم‌افزار همکاران سیستم - که به‌ صورت #رایگان و #آنلاین برگزار
در هفتمین رویداد تک‌وتاک - سلسله رویدادهای تخصصی در حوزه توسعه نرم‌افزار همکاران سیستم - که به‌ صورت #رایگان و #آنلاین برگزار می‌شه، با رویکرد توسعه نرم‌افزار مبتنی بر رفتار (BDD) آشنا می‌شیم و درباره این صحبت می‌کنیم که چطور می‌تونیم با ایجاد یه زبان مشترک بین توسعه‌دهندگان، کارشناسان تست و ذی‌نفعان کسب‌وکار، نیازمندی‌ها رو شفاف‌تر تعریف و مستند کنیم. همینطور با ساختار Given / When / Then و نقشی که در بهبود همکاری تیمی و توسعه نرم‌افزار داره آشنا می‌شیم. سرفصل‌های این رویداد عبارتند از: ✅ آشنایی با Behavior-Driven Development ✅ چرا BDD رو انتخاب کردیم؟ ✅ در سیستم ما BDD چگونه پیاده‌سازی شده؟ ✅ یک مثال واقعی از پروژه ✅ استفاده از AI در فرآیند BDD 👨🏻‍💻 ارائه‌دهنده: امیر حصاری | تیم‌لید همکاران سیستم 📅 پنج‌شنبه ۸ مردادماه | ساعت ۱۰ تا ۱۲ 🔴 شرکت در رویداد فقط در صورت ثبت‌نام امکان‌پذیره. 👈🏻 اطلاعات بیشتر و ثبت‌نام: https://B2n.ir/ds9896 لینکدین | اینستاگرام
275
5
براساس داده‌های تله‌متری بیش از 22 هزار توسعه‌دهنده در 4 هزار تیم در faros: تعداد باگ‌ها حدود ۵۴٪ افزایش یافته. نسبت Incident به Pull Request بیش از ۳ برابر شده. زمان Review به شکل قابل توجهی افزایش پیدا کرده. حدود ۳۱٪ Pull Requestهای بیشتری بدون Review انسانی Merge میشه این گزارش نشون میده که هنوز جامعه مهندسی نرم افزار به بلوغ استفاده از ابزارهای هوش مصنوعی نرسیده و تا حالا بیشتر به سرعت توسعه و خروجی محصول از کد توجه شده تا امنیت و code review. https://faros.ai/research/ai-acceleration-whiplash @ | <Ramin Farajpour Cami/>
263
6
اینم نمی‌دونم دیدید یا نه؟ Anthropic یک سری پرامپت آماده copy-paste در Claude Code مربوط به جنبه‌های مختلف توسعه نرم‌افزار در مستنداتش داره. پرامپت‌های ساده‌ای هستند و زیر هر کدوم هم توضیح داده شده که چرا کار می‌کنند. https://code.claude.com/docs/en/prompt-library @ | <Hamed/>
269
7
شایان اویس‌قَرَن، پژوهشگر ایرانی علوم رایانه و استاد دانشگاه واشینگتن، مدال آباکوس سال ۲۰۲۶ اتحادیه بین‌المللی ریاضیات را دریافت کرده است؛ جایزه‌ای که به دستاوردهای برجسته پژوهشگران جوان در بخش‌های ریاضی علوم رایانه تعلق می‌گیرد. کمیته این جایزه می‌گوید اویس‌قرن با وارد کردن ابزارهایی از شاخه‌هایی چون هندسه چندجمله‌ای‌ها، نظریه احتمال و نظریه طیفی گراف‌ها، شیوه تحلیل الگوریتم‌ها را گسترش داده و برای حل چند مسئله قدیمی علوم رایانه راه‌های تازه‌ای گشوده است. پژوهش‌های او به‌ویژه در دو زمینه مورد توجه قرار گرفته‌اند: یافتن مسیرهای نزدیک به بهینه و نمونه‌گیری تصادفی از مجموعه‌های بسیار بزرگ و پیچیده. مدال آباکوس هر چهار سال یک‌بار اهدا می‌شود و ادامه جایزه‌ای است که تا سال ۲۰۱۸ به نام رولف نوانلینا شناخته می‌شد. نامزد دریافت آن باید در آغاز سال برگزاری کنگره جهانی ریاضی‌دانان هنوز به ۴۰ سالگی نرسیده باشد. این جایزه از مهم‌ترین افتخارات بین‌المللی در علوم رایانه نظری به شمار می‌رود. اما اهمیت کار اویس‌قرن تنها با فهرست کردن اصطلاح‌های تخصصی روشن نمی‌شود. بخش مهمی از مسیر علمی او به یکی از مشهورترین پرسش‌های علوم رایانه بازمی‌گردد: چگونه می‌توان کوتاه‌ترین مسیر ممکن را برای سفر میان چندین شهر پیدا کرد و در پایان به نقطه آغاز بازگشت؟ این پرسش که «مسئله فروشنده دوره‌گرد» نام دارد، در ظاهر ساده است. یک فروشنده، راننده یا مأمور توزیع باید از چند شهر یا مقصد عبور کند، هر کدام را یک بار ببیند و به نقطه نخست بازگردد. با افزایش شمار مقصدها، تعداد مسیرهای ممکن چنان سریع زیاد می‌شود که بررسی همه آنها عملاً ممکن نیست. در چنین مواردی، پژوهشگران به جای یافتن پاسخ دقیق، الگوریتمی می‌خواهند که در مدت معقول مسیری نزدیک به بهترین مسیر را پیدا کند و بتوان تضمین کرد که نتیجه آن از حد معینی بدتر نخواهد بود. https://t.me/futurepulse_persian
290
8
🔵 عنوان مقاله 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
326
9
🔵 عنوان مقاله GoMLX: Accelerated Machine Learning Framework for Go 🟢 خلاصه مقاله: چارچوب یادگیری ماشین GoMLX که مخصوص زبان برنامه‌نویسی Go طراحی شده، راه‌حلی سریع و مؤثر برای توسعه مدل‌های هوشمند است. این فریم‌ورک بدون نیاز به زبان پایتون ساخته شده و جایگزینی ایده‌آل برای کتابخانه‌های معروفی مانند TensorFlow یا PyTorch محسوب می‌شود، در حالی که کاملاً در قالب و سبک برنامه‌نویسی Go می‌گنجد. در نسخه‌های اخیر، این ابزار پیشرفت‌های قابل توجهی داشته است؛ از جمله پشتیبانی بهتر از دستورالعمل‌های SIMD که عملکرد پردازشی را بسیار بهبود بخشیده، و افزوده شدن صفحه اصلی جدید، همراه با مستندات جامع و کامل. علاوه بر این، قابلیت پشتیبانی از مدل‌های متنوع از پروژه Hugging Face به صورت مستقیم، امکانات فوق‌العاده‌ای را برای توسعه دهندگان فراهم کرده است. به کمک این به‌روزرسانی‌ها، توسعه‌دهندگان می‌توانند مدل‌های یادگیری ماشین را با سرعت و سهولت بیشتری در زبان Go پیاده‌سازی کنند، و مسیر توسعه پروژه‌های هوش مصنوعی در این زبان برنامه‌نویسی را هموارتر سازند. در نتیجه، GoMLX به عنوان ابزاری قدرتمند و کارآمد در عرصه یادگیری ماشین با زبان Go شناخته شده است که امکاناتی جامع و به روز را در اختیار کاربران قرار می‌دهد. #یادگیری_ماشین #گوامدل #هوش_مصنوعی #برنامه_نویسی 🟣لینک مقاله: https://gomlx.github.io/ ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
256
10
🔵 عنوان مقاله 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
280
11
🚀 اگر قصد داری زبان انگلیسی رو تقویت کنی، از صفر شروع کنی یا برای مهاجرت آماده بشی، یکی از بهترین اساتیدی که می‌شناسم استاد منصوریان هست. 🇬🇧 اگر به دنبال یادگیری اصولی، منظم و کاربردی زبان هستی، پیشنهاد می‌کنم حتماً پیج ایشون رو دنبال کنی. 📚✨ 📅 ظرفیت کلاس‌های فعلی: یکشنبه و پنجشنبه: ساعت ۱۴:۳۰ 🕒 شنبه و چهارشنبه: ساعت ۱۹:۰۰ 🕖 👇👇👇👇 Https://t.me/RaziyehMansourian 🔗
206
12
🔵 عنوان مقاله 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
248
13
🔵 عنوان مقاله 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
305
14
🔵 عنوان مقاله 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
262
15
🔵 عنوان مقاله 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
309
16
‏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 سریع بخواند.
371
17
معرفی کتابخونه Zen-QL : یک Integrated Query Language در زبان گولنگ می‌باشد که در نسخه های اخیر از عبارات کامپایل شده برای سهولت در کدنویسی و خوانایی بیشتر کدبیس ها پشتیبانی مینماید. ایجاد API های مجتمع برای پشتیبانی از منابع داده ای مختلف از هدف های اصلی این پروژه بوده و همچنین بدلیل طراحی ماژولار آن می‌توان تنها از ماژول های مورد نیاز بدون اضافات استفاده نمود. https://GitHub.com/malikhan-dev/zenql <Mohammad/>
481
18
آسیب‌پذیری 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
511
19
🔵 عنوان مقاله 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
407
20
🔵 عنوان مقاله 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
310