💐امکانات جدید در GoLand 2025.2
۱. تحلیل جریان داده برای جلوگیری از nil dereference
اGoLand اکنون از تحلیل بینتابعی (interprocedural) استفاده میکند تا جریان دادههای nil را در حلقههای فراخوانی تابع، فایلها و بستهها دنبال کند. در نتیجه، هشدارهایی برای استفادههای ناایمن از اشارهگرها (dereference) به شکل مستقیم در ادیتور نمایش داده میشود. علاوه بر این، تب جدیدی به نام Data Flow Analysis در پنجره Problems اضافه شده که مسیر دقیق جریان nil را نشان میدهد.
۲. صفحه خوشآمدگویی غیرمسدودکننده (Non‑blocking Welcome screen)
صفحه خوشآمدگویی (Welcome Screen) حالا به صورت تب (tab) در IDE باز میشود، بدون آنکه اجرای محیط توسعه را متوقف کند. این امکان را دارید که بدون باز کردن پروژه به ترمینال، ابزار HTTP، Docker، Kubernetes یا پایگاهداده دسترسی داشته باشید و حتی فایلهای مستقل را ویرایش کنید.
۳. کشف هوشمندانهتر endpointها و تولید درخواست (Request) خودکار
ابزار Endpoints بهبود یافته تا الگوهای مدرن ServeMux را بهتر بشناسد؛ از جمله مسیرهای wildcard یا آنهایی که با HTTP method همراه هستند، مانند GET /task/{id}/.
علاوه بر این، متد HTTP در کنار هر endpoint نمایش داده شده، autocomplete برای ساخت آسانتر request فعال شده و پشتیبانی از فریمورکهایی مانند Chi, Gin, Gorilla نیز بهبود یافته است.
۴. اJunie؛ عامل هوشمند داخل IDE
عامل هوشمند Junie حالا سریعتر شده (حدود ۳۰٪ افزایش سرعت)، از پروتکل MCP (Model Context Protocol) پشتیبانی میکند و امکان کار در محیط Remote Development را فراهم میآورد—همه اینها در دل IDE برای تسهیل کارهای حرفهایتر.
۵. ارتقا در پشتیبانی از golangci-lint نسخه ۲
ادغام با golangci-lint بهبود یافته، به طوری که نسخهی جدید آن (v2) در تحلیل بلادرنگ (real-time) بهتر و مطمئنتر عملکرد دارد.
---
خلاصه کاربردی
ویژگی جدید کاربرد
تحلیل Nil با DFA جلوگیری از خطاهای اشارهگری قبل از runtime
صفحه خوشآمدگویی غیرمسدودکننده دسترسی سریعتر به ابزارها بدون باز کردن پروژه
کشف و Request خودکار endpointها تسهیل تعامل با HTTP در توسعه وب
اJunie با MCP و پشتیبانی Remote افزایش سرعت و قابلیت هوشمند برای توسعه حرفهای
ارتقاء golangci‑lint integration تحلیل کد دقیقتر و قابلاعتمادتر در زمان توسعه
---
در مجموع، نسخه 2025.2 تمرکزش را روی بهبود تجربه توسعهدهنده معطوف کرده—از تشخیص هوشمند خطا تا دسترسی سریع به ابزارها و هوشمندسازی کمکها در IDE.
۱. تحلیل جریان داده برای جلوگیری از nil dereference
اGoLand اکنون از تحلیل بینتابعی (interprocedural) استفاده میکند تا جریان دادههای nil را در حلقههای فراخوانی تابع، فایلها و بستهها دنبال کند. در نتیجه، هشدارهایی برای استفادههای ناایمن از اشارهگرها (dereference) به شکل مستقیم در ادیتور نمایش داده میشود. علاوه بر این، تب جدیدی به نام Data Flow Analysis در پنجره Problems اضافه شده که مسیر دقیق جریان nil را نشان میدهد.
۲. صفحه خوشآمدگویی غیرمسدودکننده (Non‑blocking Welcome screen)
صفحه خوشآمدگویی (Welcome Screen) حالا به صورت تب (tab) در IDE باز میشود، بدون آنکه اجرای محیط توسعه را متوقف کند. این امکان را دارید که بدون باز کردن پروژه به ترمینال، ابزار HTTP، Docker، Kubernetes یا پایگاهداده دسترسی داشته باشید و حتی فایلهای مستقل را ویرایش کنید.
۳. کشف هوشمندانهتر endpointها و تولید درخواست (Request) خودکار
ابزار Endpoints بهبود یافته تا الگوهای مدرن ServeMux را بهتر بشناسد؛ از جمله مسیرهای wildcard یا آنهایی که با HTTP method همراه هستند، مانند GET /task/{id}/.
علاوه بر این، متد HTTP در کنار هر endpoint نمایش داده شده، autocomplete برای ساخت آسانتر request فعال شده و پشتیبانی از فریمورکهایی مانند Chi, Gin, Gorilla نیز بهبود یافته است.
۴. اJunie؛ عامل هوشمند داخل IDE
عامل هوشمند Junie حالا سریعتر شده (حدود ۳۰٪ افزایش سرعت)، از پروتکل MCP (Model Context Protocol) پشتیبانی میکند و امکان کار در محیط Remote Development را فراهم میآورد—همه اینها در دل IDE برای تسهیل کارهای حرفهایتر.
۵. ارتقا در پشتیبانی از golangci-lint نسخه ۲
ادغام با golangci-lint بهبود یافته، به طوری که نسخهی جدید آن (v2) در تحلیل بلادرنگ (real-time) بهتر و مطمئنتر عملکرد دارد.
---
خلاصه کاربردی
ویژگی جدید کاربرد
تحلیل Nil با DFA جلوگیری از خطاهای اشارهگری قبل از runtime
صفحه خوشآمدگویی غیرمسدودکننده دسترسی سریعتر به ابزارها بدون باز کردن پروژه
کشف و Request خودکار endpointها تسهیل تعامل با HTTP در توسعه وب
اJunie با MCP و پشتیبانی Remote افزایش سرعت و قابلیت هوشمند برای توسعه حرفهای
ارتقاء golangci‑lint integration تحلیل کد دقیقتر و قابلاعتمادتر در زمان توسعه
---
در مجموع، نسخه 2025.2 تمرکزش را روی بهبود تجربه توسعهدهنده معطوف کرده—از تشخیص هوشمند خطا تا دسترسی سریع به ابزارها و هوشمندسازی کمکها در IDE.
🔥5❤1👍1
«به جای اینکه توی benchmark از
توضیح
در تستهای بنچمارک گولنگ (یعنی تابعهایی که با
ولی از نسخههای جدیدتر Go، متد [`b.Loop()`](https://pkg.go.dev/testing#B.Loop) اضافه شده که همین کار رو به شکل مدرن و کمی بهینهتر انجام میده و خوانایی رو هم بهتر میکنه:
فرق اصلی
* کد کوتاهتر و خواناتر
* جلوگیری از اشتباهات احتمالی در حلقه شمارشی
* خود Go در آینده ممکنه بهینهسازیهای بیشتری روی
مثال تبدیل
قدیم:
جدید:
پس پیغام `b.N can be modernized using b.Loop()` یعنی «لطفاً حلقه
for i := 0; i < b.N; i++ { ... }
استفاده کنی، میتونی از متد جدیدتر b.Loop()
استفاده کنی.»توضیح
در تستهای بنچمارک گولنگ (یعنی تابعهایی که با
func BenchmarkXxx(b *testing.B)
نوشته میشن)، معمولاً برای اجرای کد به تعداد کافی و گرفتن میانگین زمان اجرا، از این الگو استفاده میشه:for i := 0; i < b.N; i++ {
// کدی که باید بنچمارک بشه
}
ولی از نسخههای جدیدتر Go، متد [`b.Loop()`](https://pkg.go.dev/testing#B.Loop) اضافه شده که همین کار رو به شکل مدرن و کمی بهینهتر انجام میده و خوانایی رو هم بهتر میکنه:
b.Loop(func() {
// کدی که باید بنچمارک بشه
})
فرق اصلی
* کد کوتاهتر و خواناتر
* جلوگیری از اشتباهات احتمالی در حلقه شمارشی
* خود Go در آینده ممکنه بهینهسازیهای بیشتری روی
b.Loop
انجام بدهمثال تبدیل
قدیم:
func BenchmarkSomething(b *testing.B) {
for i := 0; i < b.N; i++ {
doWork()
}
}
جدید:
func BenchmarkSomething(b *testing.B) {
b.Loop(func() {
doWork()
})
}
پس پیغام `b.N can be modernized using b.Loop()` یعنی «لطفاً حلقه
for
رو به b.Loop
تغییر بده».🍓4👨💻1
دیدگاه جامعه درباره استفاده از Enum در Go
اهمیت خاص گذاشتن روی مقدار Invalid در صفر:
هشدار نسبت به وابستگی زیاد به iota وقتی این مقادیر در دیتابیس ذخیره میشن:
برخی هم در بحثهای Reddit اشاره کردهاند که enumهای واقعی مثل Rust’s sum types در Go وجود ندارند و هرچقدر هم شبیهسازی شوند، محدودیتهایی دارند.
اهمیت خاص گذاشتن روی مقدار Invalid در صفر:
“New go devs from Java tend to forget that the enum doesn’t default to null… defining 0 as unknown saves a lot of confusing bugs!”
هشدار نسبت به وابستگی زیاد به iota وقتی این مقادیر در دیتابیس ذخیره میشن:
“Reordering/removing cases also doesn't cause any big problem… unless you are using the number representation of enums in the database.”
برخی هم در بحثهای Reddit اشاره کردهاند که enumهای واقعی مثل Rust’s sum types در Go وجود ندارند و هرچقدر هم شبیهسازی شوند، محدودیتهایی دارند.
👌7
Forwarded from AI Labdon
تاجگذاری OpenAi در میدان شطرنج هوش مصنوعی ؛ ChatGPT گراک رو به زمین زد!
▪️در اولین دوره مسابقات شطرنج هوش مصنوعی در Kaggle Game Arena، مدل o3 از OpenAI با یک نمای قاطع 4 بر 0 مقابل Grok 4 (xAI) پیروز شد.
▪️مدل o3 با دقت 90.8% و بازیهای حسابشده، حریف رو به اشتباهات سخت کشوند؛ در حالی که Grok 4 با دقت 80.2% نتونست جلوی سقوط مهرهها رو بگیره.
▪️ردهبندی نهایی :
🥇 OpenAI - o3 (قهرمان)
🥈 xAI - Grok 4 (نایبقهرمان)
🥉 Gemini 2.5 Pro (مقام سوم)
▪️در اولین دوره مسابقات شطرنج هوش مصنوعی در Kaggle Game Arena، مدل o3 از OpenAI با یک نمای قاطع 4 بر 0 مقابل Grok 4 (xAI) پیروز شد.
▪️مدل o3 با دقت 90.8% و بازیهای حسابشده، حریف رو به اشتباهات سخت کشوند؛ در حالی که Grok 4 با دقت 80.2% نتونست جلوی سقوط مهرهها رو بگیره.
▪️ردهبندی نهایی :
🥇 OpenAI - o3 (قهرمان)
🥈 xAI - Grok 4 (نایبقهرمان)
🥉 Gemini 2.5 Pro (مقام سوم)
🏆3
🆗 چیستی SBOM و اهمیتش؟
ا* SBOM یا Software Bill of Materials، لیستی ساختاریافته از تمام اجزای تشکیلدهنده نرمافزار مثل پکیجها، ماژولها و کتابخانههاست. این لیست کمک میکنه تیمها بر زنجیره تأمین نرمافزاری، وابستگیها و ریسکهای امنیتی تسلط بهتری داشته باشن
* در پروژههای Go، فایل
---
مزایای SBOM
| مزیت | توضیح |
| --------------- | ------------------------------------------------------ |
| امنیت | شناسایی سریع آسیبپذیریهای وابستگیها |
| تطابق با مجوزها | بررسی مجوزهای وابستگیها قبل از انتشار |
| استانداردسازی | استفاده از فرمتهای مشترک و قابل تحلیل |
| الزامات قانونی | کاربرد در پروژههایی با نیازهای compliance مثل FedRAMP |
---
نحوهی تولید SBOM در پروژههای Go
1. نصب ابزار CycloneDX برای Go:
2. تولید SBOM با فرمت JSON:
3. تحلیل SBOM با ابزارهایی مثل Grype:
4. بررسی تطابق مجوزها:
* برای پروژههایی که از Go Workspace استفاده میکنن، باید بهطور موقت آن را غیرفعال کرد (مثلاً با
---
جمعبندی کوتاه
*ا SBOM یک نقشهٔ دقیق از تمام اجزای نرمافزار شماست—وقت نگرانی دربارهٔ نسخهها، آسیبپذیریها یا مجوزهای حقوقی شون داشته باشی.
* ابزار CycloneDX for Go سادهترین راه برای تولید SBOM در پروژههای Go است.
* پس از تولید، ابزارهایی مثل Grype و CycloneDX خود ابزار خوبی برای تحلیل و بررسی و آسیبپذیری یا مجوزها فراهم میکنن.
ا* SBOM یا Software Bill of Materials، لیستی ساختاریافته از تمام اجزای تشکیلدهنده نرمافزار مثل پکیجها، ماژولها و کتابخانههاست. این لیست کمک میکنه تیمها بر زنجیره تأمین نرمافزاری، وابستگیها و ریسکهای امنیتی تسلط بهتری داشته باشن
* در پروژههای Go، فایل
go.mod
فقط وابستگیهای مستقیم رو فهرست میکنه، اما SBOM برای پوششدهی وابستگیهای غیرمستقیم (transitive) و تولید خروجی در قالبهای استاندارد بسیار کاربردیتره ---
مزایای SBOM
| مزیت | توضیح |
| --------------- | ------------------------------------------------------ |
| امنیت | شناسایی سریع آسیبپذیریهای وابستگیها |
| تطابق با مجوزها | بررسی مجوزهای وابستگیها قبل از انتشار |
| استانداردسازی | استفاده از فرمتهای مشترک و قابل تحلیل |
| الزامات قانونی | کاربرد در پروژههایی با نیازهای compliance مثل FedRAMP |
---
نحوهی تولید SBOM در پروژههای Go
1. نصب ابزار CycloneDX برای Go:
go install github.com/CycloneDX/cyclonedx-go@latest
2. تولید SBOM با فرمت JSON:
cyclonedx-go mod -json -output sbom.json
3. تحلیل SBOM با ابزارهایی مثل Grype:
grype sbom.json
4. بررسی تطابق مجوزها:
cyclonedx-go mod -licenses -json -output licenses.json
* برای پروژههایی که از Go Workspace استفاده میکنن، باید بهطور موقت آن را غیرفعال کرد (مثلاً با
GO111MODULE=off
) تا ابزار بتواند SBOM را به درستی تولید کند ---
جمعبندی کوتاه
*ا SBOM یک نقشهٔ دقیق از تمام اجزای نرمافزار شماست—وقت نگرانی دربارهٔ نسخهها، آسیبپذیریها یا مجوزهای حقوقی شون داشته باشی.
* ابزار CycloneDX for Go سادهترین راه برای تولید SBOM در پروژههای Go است.
* پس از تولید، ابزارهایی مثل Grype و CycloneDX خود ابزار خوبی برای تحلیل و بررسی و آسیبپذیری یا مجوزها فراهم میکنن.
👌4👍1🔥1
یه محیط خفن گرافیکی جذاب برای یادگیری الگوهای Concurrency
Go Concurrency Explorer
https://www.concurrency.rocks
Go Concurrency Explorer
https://www.concurrency.rocks
Go Concurrency Rocks
Interactive exploration of Go concurrency patterns
❤1👌1🍾1
Forwarded from Linux Labdon
لینوس توروالدز: کد مهندس گوگل «آشغال محض» بود!
▪️همه فکر میکنن مهندسای گوگل در قله کیفیت هستن، اما خالق لینوکس یه شوک اساسی داد! لینوس توروالدز بدون هیچ تعارف، کد یکی از برنامهنویسای گوگل رو «به درد نخور» خطاب کرد و اون رو با خاک یکسان کرد.
▪️ماجرا از یه Pull Request مربوط به پشتیبانی RISC-V در لینوکس 6.17 شروع شد. پالمر دابلت از تیم اندروید، تغییرات رو فرستاد، ولی:
1. کیفیت کدنویسی افتضاح!
2. ارسال دیرهنگام در «پنجره ادغام»!
▪️همه فکر میکنن مهندسای گوگل در قله کیفیت هستن، اما خالق لینوکس یه شوک اساسی داد! لینوس توروالدز بدون هیچ تعارف، کد یکی از برنامهنویسای گوگل رو «به درد نخور» خطاب کرد و اون رو با خاک یکسان کرد.
▪️ماجرا از یه Pull Request مربوط به پشتیبانی RISC-V در لینوکس 6.17 شروع شد. پالمر دابلت از تیم اندروید، تغییرات رو فرستاد، ولی:
1. کیفیت کدنویسی افتضاح!
2. ارسال دیرهنگام در «پنجره ادغام»!
✍4🔥1
Forwarded from 𓄂 Bardia 𓆃
🎯 آمادگی کامل IELTS با تدریس خصوصی و آنلاین
👑به دنبال نمره بالا در آیلتس هستی؟
🟢با استاد Mansourian، مدرس با تجربه مهارتهای
🩵Speaking
🩵Writing
🩵Reading
🩵Listening
رو به بهترین شکل تقویت کن.
📌 کلاسها به صورت آنلاین، خصوصی و روزانه برگزار میشه.
📈 پیشرفت سریع + برنامهریزی دقیق برای رسیدن به هدفت.
💬 همین الان فالو کن و مسیر موفقیتت رو شروع کن!
👇پیج استاد توی انستاگرام 👇
https://www.instagram.com/english_razi_ielts
👑به دنبال نمره بالا در آیلتس هستی؟
🟢با استاد Mansourian، مدرس با تجربه مهارتهای
🩵Speaking
🩵Writing
🩵Reading
🩵Listening
رو به بهترین شکل تقویت کن.
📌 کلاسها به صورت آنلاین، خصوصی و روزانه برگزار میشه.
📈 پیشرفت سریع + برنامهریزی دقیق برای رسیدن به هدفت.
💬 همین الان فالو کن و مسیر موفقیتت رو شروع کن!
👇پیج استاد توی انستاگرام 👇
https://www.instagram.com/english_razi_ielts
در ادامه، یک خلاصه کاربردی و بهروز از مقاله Matthias Endler با عنوان «How To Review Code» (منتشرشده در ۶ آگوست ۲۰۲۵) آورده شده است
نکات کلیدی برای بررسی کد با رویکرد حرفهای
۱. به چشمانداز کلی فکر کن
بررسی کد نباید فقط به خطهای تغییر یافته محدود شود. بهتر است به این سوالها پاسخ بدهیم:
کد جدید چگونه با سیستم فعلی تعامل دارد؟
تستها، مستندات و دیتا تایپها بهروز شدهاند؟
آیا معماری کلی را تضعیف نمیکند؟
۲. نامگذاری اهمیت زیادی دارد
نامگذاری بد نهتنها کد را سختفهم میکند، بلکه میتواند نشانهای از مشکلات ساختاری بزرگ باشد. انتخاب نامهایی واضح، با مفهوم و هماهنگ با دامنه کاربرد حیاتی است.
مثال ارائهشده روی یک نسخه نامناسب از تابع update_player_stats تأکید دارد.
۳. اگر ممکن است، کد را اجرا کن
داشتن نسخه محلی برای اجرای کد، تستها و linters خیلی کمک میکند. جابهجایی و آزمودن کد به فهم بهتر منطق کمک میکند (مخصوصاً برای تغییرات UI یا پیامهای خطا).
۴. درباره دسترسپذیری خود صادق باش
بررسی کد ممکن است زمانبر باشد. اگر فرصت انجامش را نداری، صادق باش و به نویسنده اطلاع بده — تا فرایند توسعه متوقف نشود.
۵. هیچوقت دست از یادگیری بر ندار
هر بررسی کد فرصتی برای یادگیری الگوها، کتابخانهها یا رویکردهایی است که شاید نمیدانستی. هدف فقط اصلاح نیست، رشد تیمی نیز هست.
۶. حسّی رفتار نکن — فقط نقدهای اصلمحور
اformat و whitespace را به ابزارهای قالبزن (formatter) بسپار. انرژی خود را برای بررسی منطق، طراحی و نگهداریپذیری صرف کن. اگر تغییری کاربردی ندارد یا باعث سردرگمی نخواهد شد، نادیدهاش بگیر.
۷. روی چرا تمرکز کن، نه چگونه
بهتر است سؤالهای راهگشا درباره دلیل انتخاب یک راه حل مطرح شود، تا صرفاً گفتن "اشتباه است". این رویکرد ماندگارتر و آموزندهتر است.
۸. پرسیدن سؤالهای ساده هیچ اشکالی ندارد
اگر چیزی را نمیفهمی، حتماً سؤال بپرس. ممکن است شخص دیگری هم همانطور فکر کند. این کمک میکند نویسنده ببینند بخشهایی از کد بیدلیل گیجکنندهاند.
۹. به بررسی سبک خودت هم گوش بده
بپرس: "آیا نقدم خیلی سختگیرانه بود؟ مفید بود؟ باعث پیشرفت شد؟"
احتمالاً خودت هم در حال یادگیری هستی و تکامل در روند بررسی خیلی ارزشمند است.
جمعبندی: بررسی کد حرفهای یعنی چه؟
علاوه بر خطهای تغییر، به تأثیر تغییر در کل سیستم توجه کن.
نامگذاری صحیح، درک جریان و معماری را سادهتر میکند.
وقتی میشود کد را اجرا کرد، حتماً امتحانش کن.
اگر وقت نداری یا چیزی را نفهمیدی، صادق باش و سؤال بپرس.
مهمتر از اصلاح، کمک به رشد است.
نکات کلیدی برای بررسی کد با رویکرد حرفهای
۱. به چشمانداز کلی فکر کن
بررسی کد نباید فقط به خطهای تغییر یافته محدود شود. بهتر است به این سوالها پاسخ بدهیم:
کد جدید چگونه با سیستم فعلی تعامل دارد؟
تستها، مستندات و دیتا تایپها بهروز شدهاند؟
آیا معماری کلی را تضعیف نمیکند؟
۲. نامگذاری اهمیت زیادی دارد
نامگذاری بد نهتنها کد را سختفهم میکند، بلکه میتواند نشانهای از مشکلات ساختاری بزرگ باشد. انتخاب نامهایی واضح، با مفهوم و هماهنگ با دامنه کاربرد حیاتی است.
مثال ارائهشده روی یک نسخه نامناسب از تابع update_player_stats تأکید دارد.
۳. اگر ممکن است، کد را اجرا کن
داشتن نسخه محلی برای اجرای کد، تستها و linters خیلی کمک میکند. جابهجایی و آزمودن کد به فهم بهتر منطق کمک میکند (مخصوصاً برای تغییرات UI یا پیامهای خطا).
۴. درباره دسترسپذیری خود صادق باش
بررسی کد ممکن است زمانبر باشد. اگر فرصت انجامش را نداری، صادق باش و به نویسنده اطلاع بده — تا فرایند توسعه متوقف نشود.
۵. هیچوقت دست از یادگیری بر ندار
هر بررسی کد فرصتی برای یادگیری الگوها، کتابخانهها یا رویکردهایی است که شاید نمیدانستی. هدف فقط اصلاح نیست، رشد تیمی نیز هست.
۶. حسّی رفتار نکن — فقط نقدهای اصلمحور
اformat و whitespace را به ابزارهای قالبزن (formatter) بسپار. انرژی خود را برای بررسی منطق، طراحی و نگهداریپذیری صرف کن. اگر تغییری کاربردی ندارد یا باعث سردرگمی نخواهد شد، نادیدهاش بگیر.
۷. روی چرا تمرکز کن، نه چگونه
بهتر است سؤالهای راهگشا درباره دلیل انتخاب یک راه حل مطرح شود، تا صرفاً گفتن "اشتباه است". این رویکرد ماندگارتر و آموزندهتر است.
۸. پرسیدن سؤالهای ساده هیچ اشکالی ندارد
اگر چیزی را نمیفهمی، حتماً سؤال بپرس. ممکن است شخص دیگری هم همانطور فکر کند. این کمک میکند نویسنده ببینند بخشهایی از کد بیدلیل گیجکنندهاند.
۹. به بررسی سبک خودت هم گوش بده
بپرس: "آیا نقدم خیلی سختگیرانه بود؟ مفید بود؟ باعث پیشرفت شد؟"
احتمالاً خودت هم در حال یادگیری هستی و تکامل در روند بررسی خیلی ارزشمند است.
جمعبندی: بررسی کد حرفهای یعنی چه؟
علاوه بر خطهای تغییر، به تأثیر تغییر در کل سیستم توجه کن.
نامگذاری صحیح، درک جریان و معماری را سادهتر میکند.
وقتی میشود کد را اجرا کرد، حتماً امتحانش کن.
اگر وقت نداری یا چیزی را نفهمیدی، صادق باش و سؤال بپرس.
مهمتر از اصلاح، کمک به رشد است.
❤2👍1🍾1
Forwarded from Software Engineer Labdon
پایان استقلال گیتهاب؛ مایکروسافت همهچیز را میبلعد!
▪️گیتهاب، بزرگترین مخزن کد جهان و خانه میلیونها توسعهدهنده، بعد از استعفای مدیرعاملش دیگه مستقل نیست! مایکروسافت رسماً این پلتفرم محبوب رو قورت داد و انداختش وسط تیم Core AI خودش.
▪️«توماس دومکه» مدیرعامل گیتهاب گفت تا آخر امسال میره دنبال استارتاپ جدیدش، اما درست بعد از اعلام رفتنش، خبر اومد که گیتهاب از این به بعد بخشی از پروژههای AI مایکروسافته؛ یعنی همه راهها مستقیم میره سمت GitHub Copilot...
+ اما برنامهنویس ها نگرانن همون بلایی که سر اسکایپ اومد سر گیتهاب هم بیاد!
▪️گیتهاب، بزرگترین مخزن کد جهان و خانه میلیونها توسعهدهنده، بعد از استعفای مدیرعاملش دیگه مستقل نیست! مایکروسافت رسماً این پلتفرم محبوب رو قورت داد و انداختش وسط تیم Core AI خودش.
▪️«توماس دومکه» مدیرعامل گیتهاب گفت تا آخر امسال میره دنبال استارتاپ جدیدش، اما درست بعد از اعلام رفتنش، خبر اومد که گیتهاب از این به بعد بخشی از پروژههای AI مایکروسافته؛ یعنی همه راهها مستقیم میره سمت GitHub Copilot...
+ اما برنامهنویس ها نگرانن همون بلایی که سر اسکایپ اومد سر گیتهاب هم بیاد!
💊2❤1👀1
Forwarded from AI Labdon
یک مثال شبیه به تستهای SWE-bench Verified می زنیم تا تفاوت رو بین سه مدل Claude Opus 4.1**، **Claude Sonnet 4 و Claude Haiku 3.5 ببینیم.
---
📌 سناریو
پروژه: یک سیستم مدیریت سفارش ساده (Python)
مشکل: یک تابع برای محاسبه قیمت کل سفارش نوشته شده، ولی تخفیف بهدرستی اعمال نمیشود.
کد اولیه (دارای باگ):
هدف:
* تخفیف باید بر اساس درصد اعمال شود، نه کم کردن مستقیم عدد از مبلغ کل.
* باید اطمینان حاصل شود که نتیجه کمتر از صفر نشود.
---
🔍 خروجی مدلها
ا Opus 4.1 (قدرت استدلال بالا)
✅ تغییرات:
* استفاده از comprehension برای خوانایی.
* محاسبه تخفیف بهصورت درصدی.
* جلوگیری از منفی شدن قیمت.
* گرد کردن به دو رقم اعشار (برای واحد پولی).
---
ا Sonnet 4 (تعادل سرعت و کیفیت)
✅ تغییرات:
* درست کردن محاسبه تخفیف.
* جلوگیری از عدد منفی.
⚠️ کمی کمتر از Opus در توجه به جزئیات (مثلاً گرد کردن و Docstring بهبود یافته).
---
ا Haiku 3.5 (سریع ولی سادهتر)
✅ تغییرات:
* محاسبه درست تخفیف.
⚠️ اما:
* حفاظت در برابر منفی شدن قیمت را اضافه نکرده.
* بهینهسازی یا بهبود ساختار کد انجام نداده.
---
📊 نتیجهگیری
| مدل | کیفیت کد | توجه به جزئیات | سرعت |
| ------------- | --------- | ---------------- | ---------- |
| Opus 4.1 | عالی | بسیار بالا | متوسط |
| Sonnet 4 | خوب | متوسط رو به بالا | سریعتر |
| Haiku 3.5 | قابل قبول | پایین | بسیار سریع |
---
📌 سناریو
پروژه: یک سیستم مدیریت سفارش ساده (Python)
مشکل: یک تابع برای محاسبه قیمت کل سفارش نوشته شده، ولی تخفیف بهدرستی اعمال نمیشود.
کد اولیه (دارای باگ):
def calculate_total_price(items, discount_percentage):
"""
items: list of tuples (price, quantity)
discount_percentage: float between 0 and 100
"""
total = 0
for price, qty in items:
total += price * qty
total -= discount_percentage
return total
هدف:
* تخفیف باید بر اساس درصد اعمال شود، نه کم کردن مستقیم عدد از مبلغ کل.
* باید اطمینان حاصل شود که نتیجه کمتر از صفر نشود.
---
🔍 خروجی مدلها
ا Opus 4.1 (قدرت استدلال بالا)
def calculate_total_price(items, discount_percentage):
"""
items: list of tuples (price, quantity)
discount_percentage: float between 0 and 100
"""
total = sum(price * qty for price, qty in items)
discount_amount = total * (discount_percentage / 100)
final_total = max(total - discount_amount, 0)
return round(final_total, 2)
✅ تغییرات:
* استفاده از comprehension برای خوانایی.
* محاسبه تخفیف بهصورت درصدی.
* جلوگیری از منفی شدن قیمت.
* گرد کردن به دو رقم اعشار (برای واحد پولی).
---
ا Sonnet 4 (تعادل سرعت و کیفیت)
def calculate_total_price(items, discount_percentage):
total = sum(price * qty for price, qty in items)
discount = total * (discount_percentage / 100)
return max(total - discount, 0)
✅ تغییرات:
* درست کردن محاسبه تخفیف.
* جلوگیری از عدد منفی.
⚠️ کمی کمتر از Opus در توجه به جزئیات (مثلاً گرد کردن و Docstring بهبود یافته).
---
ا Haiku 3.5 (سریع ولی سادهتر)
def calculate_total_price(items, discount_percentage):
total = 0
for price, qty in items:
total += price * qty
return total - (total * discount_percentage / 100)
✅ تغییرات:
* محاسبه درست تخفیف.
⚠️ اما:
* حفاظت در برابر منفی شدن قیمت را اضافه نکرده.
* بهینهسازی یا بهبود ساختار کد انجام نداده.
---
📊 نتیجهگیری
| مدل | کیفیت کد | توجه به جزئیات | سرعت |
| ------------- | --------- | ---------------- | ---------- |
| Opus 4.1 | عالی | بسیار بالا | متوسط |
| Sonnet 4 | خوب | متوسط رو به بالا | سریعتر |
| Haiku 3.5 | قابل قبول | پایین | بسیار سریع |
❤5👌1🍾1
𓄂 Bardia 𓆃
🍾🥂🎁
پاول دروف به مناسبت ۸۰ سالگی پدرش و همزمان ۱۲ سالگی تلگرام متن احساسیی راجع به توصیه هایی اون فرد منتشر کرده که خلاصشو این پایین آوردم :
″ پدرم یکی از بزرگترین متخصصهای ادبیات روم باستانه و ۳ نکته مهم رو بهم توصیه کرده :
1. با عملت الگو باش، نه با حرفت ، چون بچهها و اطرافیان بیشتر کاری که میکنی رو یاد میگیرن، نه چیزی که میگی.
2. روی جنبه مثبت تمرکز کن ، حتی توی شرایط سخت، افکار رو جوری ببین که بیشترین خیر و اثر مثبت رو بیاره.
3. وجدان رو اولویت بده ، چون اخلاق و وجدان از هوش و استعداد ماندگارتره و حتی در عصر هوش مصنوعی هم ارزشش رو از دست نمیده.
+ بعد پاول این توصیهها رو به تلگرام ربط داده و گفته میخواد تلگرام هم همین سه اصل رو دنبال کنه:
- پیشرو بودن و الگو دادن
- وفادار موندن به اصول و وجدان کاری
- مثبت بودن و شادی آوردن برای کاربرها
″ پدرم یکی از بزرگترین متخصصهای ادبیات روم باستانه و ۳ نکته مهم رو بهم توصیه کرده :
1. با عملت الگو باش، نه با حرفت ، چون بچهها و اطرافیان بیشتر کاری که میکنی رو یاد میگیرن، نه چیزی که میگی.
2. روی جنبه مثبت تمرکز کن ، حتی توی شرایط سخت، افکار رو جوری ببین که بیشترین خیر و اثر مثبت رو بیاره.
3. وجدان رو اولویت بده ، چون اخلاق و وجدان از هوش و استعداد ماندگارتره و حتی در عصر هوش مصنوعی هم ارزشش رو از دست نمیده.
+ بعد پاول این توصیهها رو به تلگرام ربط داده و گفته میخواد تلگرام هم همین سه اصل رو دنبال کنه:
- پیشرو بودن و الگو دادن
- وفادار موندن به اصول و وجدان کاری
- مثبت بودن و شادی آوردن برای کاربرها
👍7❤1🕊1🍾1
Forwarded from AI Labdon
اوپنایآی یه راهنمای جامع برای GPT-5 منتشر کرده، یه بسته پر و پیمون برای توسعهدهندهها که پر از نکتههای آماده برای استفادهست، راهنمایی برای بهتر کردن استدلال، ساخت اپ بدون نیاز به کدنویسی، و حتی یه متاپرامپت برای بالا بردن کیفیت کلی خروجی.
https://cookbook.openai.com
<محمد زمانی/>
https://cookbook.openai.com
<محمد زمانی/>
❤5
معرفی goplay.tools
که با عنوان «Better Go Playground» مشهور است، یک محیط آنلاین توسعه (IDE) برای زبان Go است که با ویژگیهای پیشرفته، مرزهای Playground رسمی را بهچالش میکشد.
چرا بهتر از Playground رسمی است؟
اByteSizeGo اشاره میکند Playground رسمی Go محدودیتهایی مثل ثابت بودن زمان (Frozen time)، نبود امکان تست چندفایل، درخواستهای شبکهای و سرعت اجرایی محدود دارد. در مقابل، goplay.tools انعطافپذیری و امکانات بیشتری ارائه میدهد و تجربهی توسعه را جدیتر میگیرد.
نکات کلیدی جامعه توسعهدهندگان
* این پروژه بهصورت متنباز در GitHub با نام x1unix/go-playground توسعه یافته است، محبوبیت قابل توجهی دارد (\~1.4k ستاره) و تحت مجوز MIT عرضه میشود.([GitHub][1])
* توسعهدهنده در Reddit درخواستکننده تست نسخه بتا برای افزونهها بوده است که عبارتند از آموزشهای Go و … برای بروزرسانی نسخه v2 این ابزار.
---
جمعبندی
اgoplay.tools واقعاً گزینهای جذاب برای کسانیست که:
* به امکانات کاملتری مانند auto-complete، ویجتهای تصویری و multi-file نیاز دارند،
* محیط کار با ویژوال پایش قابل تنظیم را میپسندند،
* و ردگیری و تمرین Go را با ابزارهای واقعیای که در IDEهای حرفهای استفاده میشود، میخواهند.
که با عنوان «Better Go Playground» مشهور است، یک محیط آنلاین توسعه (IDE) برای زبان Go است که با ویژگیهای پیشرفته، مرزهای Playground رسمی را بهچالش میکشد.
چرا بهتر از Playground رسمی است؟
اByteSizeGo اشاره میکند Playground رسمی Go محدودیتهایی مثل ثابت بودن زمان (Frozen time)، نبود امکان تست چندفایل، درخواستهای شبکهای و سرعت اجرایی محدود دارد. در مقابل، goplay.tools انعطافپذیری و امکانات بیشتری ارائه میدهد و تجربهی توسعه را جدیتر میگیرد.
نکات کلیدی جامعه توسعهدهندگان
* این پروژه بهصورت متنباز در GitHub با نام x1unix/go-playground توسعه یافته است، محبوبیت قابل توجهی دارد (\~1.4k ستاره) و تحت مجوز MIT عرضه میشود.([GitHub][1])
* توسعهدهنده در Reddit درخواستکننده تست نسخه بتا برای افزونهها بوده است که عبارتند از آموزشهای Go و … برای بروزرسانی نسخه v2 این ابزار.
---
جمعبندی
اgoplay.tools واقعاً گزینهای جذاب برای کسانیست که:
* به امکانات کاملتری مانند auto-complete، ویجتهای تصویری و multi-file نیاز دارند،
* محیط کار با ویژوال پایش قابل تنظیم را میپسندند،
* و ردگیری و تمرین Go را با ابزارهای واقعیای که در IDEهای حرفهای استفاده میشود، میخواهند.
❤3😘1
نکات ضروری درباره Assembler در Go
1. دستوری Semi-Abstract و مبتنی بر Plan 9
* اسمبلی Go برخلاف زبانهایی مثل C یا x86، کاملاً بهصورت مستقیم به دستورات ماشین نگاشته نمیشود. بلکه از یک سطح انتزاعی استفاده میکند که از محیط کامپایلر
* بنابراین، زمانیکه دستوری مثل
2. مشاهده اسمبلی تولیدی
* برای دیدن خروجی اسمبلی تابعی مثل `main`، میتونید از دستور زیر استفاده کنید:
یا:
این دستورها نسخهی semi-abstract اسمبلی تولیدشده را نشان میدهند؛ و پس از لینک، دستوراتی استاندارد در Object یا Binary قابل مشاهده خواهند بود
3. تفاوت در ارزیابی Expressions
* در اسمبلی Go از precedence اپراتورها مشابه Go استفاده میشود؛ نه مشابه زبان C.
* برای مثال:
4. سمبلها و نماهای خاص
* در اسمبلی Go برای اشاره به توابع یا متغیرها از سینتکس خاصی استفاده میشود، مثلا
* همچنین سورس اسمبلی اگر دارای فایلی با پسوند
5. دستورات کلیدی و پرچمها
* دستور
* دستور
1. دستوری Semi-Abstract و مبتنی بر Plan 9
* اسمبلی Go برخلاف زبانهایی مثل C یا x86، کاملاً بهصورت مستقیم به دستورات ماشین نگاشته نمیشود. بلکه از یک سطح انتزاعی استفاده میکند که از محیط کامپایلر
gc
سرچشمه میگیرد و مبتنی بر Plan 9 است * بنابراین، زمانیکه دستوری مثل
MOV
میبینی، ممکن است واقعا معادل آن نباشد و به مفاهیمی مانند load یا clear نگاشته شده باشد.2. مشاهده اسمبلی تولیدی
* برای دیدن خروجی اسمبلی تابعی مثل `main`، میتونید از دستور زیر استفاده کنید:
go build -gcflags -S x.go
یا:
go tool compile -S x.go
این دستورها نسخهی semi-abstract اسمبلی تولیدشده را نشان میدهند؛ و پس از لینک، دستوراتی استاندارد در Object یا Binary قابل مشاهده خواهند بود
3. تفاوت در ارزیابی Expressions
* در اسمبلی Go از precedence اپراتورها مشابه Go استفاده میشود؛ نه مشابه زبان C.
* برای مثال:
3&1<<2
برابر با (3&1)<<2
است و نتیجه آن 4 خواهد بود؛ نه 0 4. سمبلها و نماهای خاص
* در اسمبلی Go برای اشاره به توابع یا متغیرها از سینتکس خاصی استفاده میشود، مثلا
·FuncName(SB)
(Dot + نام تابع)* همچنین سورس اسمبلی اگر دارای فایلی با پسوند
.s
باشد، ابزار go build
فایل go_asm.h
تولید میکند تا offsets ساختارها، مقادیر constant و ... در اسمبلی قابل استفاده باشند 5. دستورات کلیدی و پرچمها
* دستور
PCALIGN $n
برای ترازسازی (alignment) دستورات به فواصل مشخص کاربرد دارد؛ مخصوصا در حلقههای بحرانی یا توابع حیاتی* دستور
go tool asm
(یا cmd/asm
) با پرچمهایی مثل -S
, -debug
, -D
, -o
, -shared
, و ... استفاده میشود برای کنترل خروجی، پیشپردازش (#include
, #define
) و رفتار assembler .❤2👍1👾1
چند نکته عملی و مفید از ریپوی Go Practical Tips توسط func25 جمعآوری کردم — این نکات به صورت کوتاه و کاربردی برای بهبود کیفیت و نگهداری کدهای Go ارائه شدهاند. این توصیهها از تجربه واقعی توسعهدهندهها و نکات بهاشتراکگذاشتهشده در توییتر استخراج شدهاند.
https://github.com/func25/go-practical-tips/blob/main/tips.md
https://github.com/func25/go-practical-tips/blob/main/tips.md
GitHub
go-practical-tips/tips.md at main · func25/go-practical-tips
Go Practical Tips. Contribute to func25/go-practical-tips development by creating an account on GitHub.
👍2❤1
در برخی شرایط، استفاده از زبان اسکریپتینگ داخلی (مثل Lua) برای پیکربندی، توسعه ویژگیهای پویا یا سفارشیسازی رفتار نرمافزار مفید است. این مقاله نشان میدهد چگونه زبان Lua (با نسخه ۵.۱) را در اپلیکیشنهای Go جاسازی (embed) کنیم، با استفاده از کتابخانهی gopher-lua، بدون نیاز به cgo یا وابستگی به کتابخانههای C.
این شیوه به شما این امکان را میدهد که بدون پیچیدگیهای cgo یا وابستگی به محیط C، سریع Lua را به پروژههای Go خود اضافه کنید و قابلیتهایی مثل extensibility یا plugin سازی را فراهم نمایید.
https://otm.github.io/2015/07/embedding-lua-in-go/
این شیوه به شما این امکان را میدهد که بدون پیچیدگیهای cgo یا وابستگی به محیط C، سریع Lua را به پروژههای Go خود اضافه کنید و قابلیتهایی مثل extensibility یا plugin سازی را فراهم نمایید.
https://otm.github.io/2015/07/embedding-lua-in-go/
🔥5
The latest ebooks for Go (Fundamentals) 101.
Tapir, the author of Go 101, has spent 4+ years on writing the Go 101 book and maintaining the go101.org website. New contents will continue being added to the book and the website from time to time. If you would like to, you can also support Go 101 by buying the book at the following places:
https://github.com/go101/go101/releases/tag/v1.25.e
Tapir, the author of Go 101, has spent 4+ years on writing the Go 101 book and maintaining the go101.org website. New contents will continue being added to the book and the website from time to time. If you would like to, you can also support Go 101 by buying the book at the following places:
https://github.com/go101/go101/releases/tag/v1.25.e
GitHub
Release v1.25.e · go101/go101
The latest ebooks for Go (Fundamentals) 101.
Tapir, the author of Go 101, has spent 4+ years on writing the Go 101 book and maintaining the go101.org website. New contents will continue being added...
Tapir, the author of Go 101, has spent 4+ years on writing the Go 101 book and maintaining the go101.org website. New contents will continue being added...
🔥1👌1