🔵 عنوان مقاله
Watermill 1.5: Library for Building Event-Driven Apps
🟢 خلاصه مقاله:
خلاصهای از Watermill 1.5: این کتابخانه برای ساخت برنامههای رویدادمحور طراحی شده و کار با جریانهای پیام را در کانالهای متنوعی مانند Kafka، RabbitMQ، HTTP و حتی binlogهای MySQL تسهیل میکند. با فراهمکردن یک لایه یکپارچه برای انتشار و مصرف پیامها، به اتصال سرویسها، یکپارچهسازی با زیرساخت موجود و ساخت معماریهای ماژولار و مقیاسپذیر کمک میکند. این پروژه متنباز است و مخزن آن در GitHub در دسترس است.
🟣لینک مقاله:
https://golangweekly.com/link/173343/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Watermill 1.5: Library for Building Event-Driven Apps
🟢 خلاصه مقاله:
خلاصهای از Watermill 1.5: این کتابخانه برای ساخت برنامههای رویدادمحور طراحی شده و کار با جریانهای پیام را در کانالهای متنوعی مانند Kafka، RabbitMQ، HTTP و حتی binlogهای MySQL تسهیل میکند. با فراهمکردن یک لایه یکپارچه برای انتشار و مصرف پیامها، به اتصال سرویسها، یکپارچهسازی با زیرساخت موجود و ساخت معماریهای ماژولار و مقیاسپذیر کمک میکند. این پروژه متنباز است و مخزن آن در GitHub در دسترس است.
🟣لینک مقاله:
https://golangweekly.com/link/173343/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Watermill
Building event-driven applications the easy way in Go.
❤2
🔵 عنوان مقاله
Surf: An Advanced HTTP Client Library
🟢 خلاصه مقاله:
**Surf یک کتابخانه پیشرفته برای کلاینت HTTP است که با تمرکز بر اسکرپینگ وب و خودکارسازی API طراحی شده. این ابزار با شبیهسازی رفتار مرورگرهای دسکتاپ و توجه به جزئیات اثرگذار بر انگشتنگاری، تعامل پایدارتر با وبسایتها را ممکن میکند، در کنار مدیریت کوکی و سشن، ریدایرکتها و مذاکره محتوا. همچنین با پشتیبانی از HTTP/3 و قابلیتهایی مانند تلاش مجدد هوشمند، کنترل همزمانی، pooling اتصال و پشتیبانی از پروکسی، برای جمعآوری داده، تست و یکپارچهسازی API با کارایی و شباهت بالا به ترافیک واقعی مرورگر مناسب است.
🟣لینک مقاله:
https://golangweekly.com/link/173635/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Surf: An Advanced HTTP Client Library
🟢 خلاصه مقاله:
**Surf یک کتابخانه پیشرفته برای کلاینت HTTP است که با تمرکز بر اسکرپینگ وب و خودکارسازی API طراحی شده. این ابزار با شبیهسازی رفتار مرورگرهای دسکتاپ و توجه به جزئیات اثرگذار بر انگشتنگاری، تعامل پایدارتر با وبسایتها را ممکن میکند، در کنار مدیریت کوکی و سشن، ریدایرکتها و مذاکره محتوا. همچنین با پشتیبانی از HTTP/3 و قابلیتهایی مانند تلاش مجدد هوشمند، کنترل همزمانی، pooling اتصال و پشتیبانی از پروکسی، برای جمعآوری داده، تست و یکپارچهسازی API با کارایی و شباهت بالا به ترافیک واقعی مرورگر مناسب است.
🟣لینک مقاله:
https://golangweekly.com/link/173635/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - enetx/surf: SURF - Advanced Go HTTP client with Chrome/Firefox browser impersonation, HTTP/3 with QUIC fingerprinting…
SURF - Advanced Go HTTP client with Chrome/Firefox browser impersonation, HTTP/3 with QUIC fingerprinting, JA3/JA4 TLS emulation, and anti-bot bypass for web automation and scraping. - enetx/surf
❤2
📌 نصب، آپدیت و پاککردن Golang
🟦 در سیستم عامل Windows
🔹روش نصب:
دانلود از [go.dev/dl](https://go.dev/dl) → نصب فایل MSI → چک با
🔹روش آپدیت:
نسخه جدید MSI رو نصب کن (قدیمی جایگزین میشه).
🔹روش حذف کامل:
Control Panel → Uninstall → پاککردن پوشههای
---
🍏 در سیستم عامل macOS
🔹روش نصب:
* با Homebrew:
* یا دانلود
🔹روش آپدیت:
* با Brew:
* با pkg: دوباره نصب کن.
🔹روش حذف کامل:
* با Brew:
* دستی:
---
🟩 در سیستم عامل Linux
🔹روش نصب:
*در Debian/Ubuntu:
* یا tarball رسمی:
🔹روش آپدیت:
* apt:
* snap:
* tarball: دوباره نصب کن.
🔹روش حذف کامل:
---
✨ نکته: مسیر کاری Go پیشفرض
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🟦 در سیستم عامل Windows
🔹روش نصب:
دانلود از [go.dev/dl](https://go.dev/dl) → نصب فایل MSI → چک با
go version
🔹روش آپدیت:
نسخه جدید MSI رو نصب کن (قدیمی جایگزین میشه).
🔹روش حذف کامل:
Control Panel → Uninstall → پاککردن پوشههای
C:\Go
و C:\Users\<User>\go
---
🍏 در سیستم عامل macOS
🔹روش نصب:
* با Homebrew:
brew install go
* یا دانلود
.pkg
از [go.dev/dl](https://go.dev/dl)🔹روش آپدیت:
* با Brew:
brew upgrade go
* با pkg: دوباره نصب کن.
🔹روش حذف کامل:
* با Brew:
brew uninstall go
* دستی:
sudo rm -rf /usr/local/go ~/go
---
🟩 در سیستم عامل Linux
🔹روش نصب:
*در Debian/Ubuntu:
sudo apt install golang-go
* یا tarball رسمی:
wget https://go.dev/dl/go1.xx.x.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.xx.x.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
🔹روش آپدیت:
* apt:
sudo apt upgrade golang-go
* snap:
sudo snap refresh go
* tarball: دوباره نصب کن.
🔹روش حذف کامل:
sudo rm -rf /usr/local/go ~/go
sudo apt remove golang-go
sudo snap remove go
---
✨ نکته: مسیر کاری Go پیشفرض
~/go
هست. برای آخرین نسخهها همیشه از [go.dev/dl](https://go.dev/dl) استفاده کن.➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤3
🔵 عنوان مقاله
Testing Time (and Other Asynchronicities)
🟢 خلاصه مقاله:
**خلاصه فارسی: وبلاگ رسمی Go در ادامه معرفی قابلیتهای جدید زبان، به بسته testing/synctest پرداخته که در Go 1.25 به مرحله پایدار (GA) رسیده است. این بسته با فراهمکردن امکان کنترل و شبیهسازی زمان و هماهنگی در تستها، نوشتن تستهای قابلاعتماد برای کدهای همزمان و وابسته به زمان را آسانتر میکند و خطاهای تصادفی را کاهش میدهد. پست با مثالها و الگوهای عملی نشان میدهد چگونه synctest را در کنار testing بهکار بگیریم و نکات ادغام و مهاجرت را بیان میکند؛ ارتقای آن به GA نیز به معنی پایداری API و آمادهبودن برای استفاده گسترده است.
🟣لینک مقاله:
https://golangweekly.com/link/173622/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Testing Time (and Other Asynchronicities)
🟢 خلاصه مقاله:
**خلاصه فارسی: وبلاگ رسمی Go در ادامه معرفی قابلیتهای جدید زبان، به بسته testing/synctest پرداخته که در Go 1.25 به مرحله پایدار (GA) رسیده است. این بسته با فراهمکردن امکان کنترل و شبیهسازی زمان و هماهنگی در تستها، نوشتن تستهای قابلاعتماد برای کدهای همزمان و وابسته به زمان را آسانتر میکند و خطاهای تصادفی را کاهش میدهد. پست با مثالها و الگوهای عملی نشان میدهد چگونه synctest را در کنار testing بهکار بگیریم و نکات ادغام و مهاجرت را بیان میکند؛ ارتقای آن به GA نیز به معنی پایداری API و آمادهبودن برای استفاده گسترده است.
🟣لینک مقاله:
https://golangweekly.com/link/173622/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Testing Time (and other asynchronicities) - The Go Programming Language
A discussion of testing asyncronous code and an exploration of the `testing/synctest` package. Based on the GopherCon Europe 2025 talk with the same title.
❤2
Forwarded from AI Labdon
🤖 علاقهمند به دنیای هوش مصنوعی هستی؟
🏖 دنبال میکنی که چطور AI داره دنیا رو متحول میکنه؟
🍻پس جای درستی اومدی!
🎯 در کانال ما هر روز:
🔍 جدیدترین اخبار و دستاوردهای دنیای AI
🧠 تحلیل تخصصی در حوزه یادگیری ماشین، دیپ لرنینگ و مدلهای زبانی
💼 بررسی کاربردهای هوش مصنوعی در پزشکی، صنعت، آموزش، امنیت و اقتصاد
🛠 معرفی ابزارها، دورهها و منابع یادگیری
📈 بررسی ترندها و آینده فناوریهای مرتبط با هوش مصنوعی
🍄همهی اینها به زبان ساده، خلاصه و قابل فهم برای همه علاقهمندان — از مبتدی تا حرفهای!
👇👇👇👇👇👇
https://t.iss.one/ai_labdon
🏖 دنبال میکنی که چطور AI داره دنیا رو متحول میکنه؟
🍻پس جای درستی اومدی!
🎯 در کانال ما هر روز:
🔍 جدیدترین اخبار و دستاوردهای دنیای AI
🧠 تحلیل تخصصی در حوزه یادگیری ماشین، دیپ لرنینگ و مدلهای زبانی
💼 بررسی کاربردهای هوش مصنوعی در پزشکی، صنعت، آموزش، امنیت و اقتصاد
🛠 معرفی ابزارها، دورهها و منابع یادگیری
📈 بررسی ترندها و آینده فناوریهای مرتبط با هوش مصنوعی
🍄همهی اینها به زبان ساده، خلاصه و قابل فهم برای همه علاقهمندان — از مبتدی تا حرفهای!
👇👇👇👇👇👇
https://t.iss.one/ai_labdon
🎉1
🔵 عنوان مقاله
Container-Aware GOMAXPROCS
🟢 خلاصه مقاله:
** بلاگ رسمی Go سری تازهای را درباره ویژگیهای Go 1.25 آغاز کرده و در نخستین بخش، به رفتار آگاه از کانتینر در GOMAXPROCS میپردازد. مقدار پیشفرض این تنظیم روی سختافزار واقعی منطقی است، اما در کانتینرها میتواند بهدلیل محدودیتهای CPU (مانند cgroup و quota) مشکل ایجاد کند. در Go 1.25 تشخیص و تنظیم پیشفرض بهبود یافته تا با محدودیتهای کانتینر سازگارتر شود، عملکرد پیشبینیپذیرتری بدهد و تنها در برخی موارد نیاز به تنظیم دستی باقی بماند.
🟣لینک مقاله:
https://golangweekly.com/link/173329/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Container-Aware GOMAXPROCS
🟢 خلاصه مقاله:
** بلاگ رسمی Go سری تازهای را درباره ویژگیهای Go 1.25 آغاز کرده و در نخستین بخش، به رفتار آگاه از کانتینر در GOMAXPROCS میپردازد. مقدار پیشفرض این تنظیم روی سختافزار واقعی منطقی است، اما در کانتینرها میتواند بهدلیل محدودیتهای CPU (مانند cgroup و quota) مشکل ایجاد کند. در Go 1.25 تشخیص و تنظیم پیشفرض بهبود یافته تا با محدودیتهای کانتینر سازگارتر شود، عملکرد پیشبینیپذیرتری بدهد و تنها در برخی موارد نیاز به تنظیم دستی باقی بماند.
🟣لینک مقاله:
https://golangweekly.com/link/173329/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Container-aware GOMAXPROCS - The Go Programming Language
New GOMAXPROCS defaults in Go 1.25 improve behavior in containers.
🔥1
🔵 عنوان مقاله
How Go Schedules Millions of Goroutines: A Deep Dive into GMP
🟢 خلاصه مقاله:
این مطلب با نگاهی عمیق و قابلفهم توضیح میدهد که زمانبند Go چگونه با مدل GMP (گوروتینها، رشتههای سیستمعامل، و پردازندههای منطقی) میلیونها گوروتین را روی تعداد کمی نخ اجرا میکند. سازوکار صفهای اجرا، «کارربایی» بین پردازندهها، نحوهٔ ایجاد و توقف گوروتینها، مدیریت بلاکشدن روی I/O یا syscall، پیشامپشن برای عدالت و کاهش تأخیر، و تعامل زمانبند با جمعآوری زباله بررسی میشود. همچنین نکات عملی مانند تنظیم GOMAXPROCS، پرهیز از انفجار گوروتینها، مدیریت فشار کانالها، و استفاده از ابزارهای ردیابی و pprof برای عیبیابی مطرح شده است. در کنار آن، دو راهنمای کاربردی معرفی میشود: ساخت تصویر کانتینر از کد Go با Depot API (تأکید بر بیلد سریع، کش و ادغام در CI) و استقرار یک سایت استاتیک Hugo روی Hetzнер (از آمادهسازی تا TLS و تحویل پایدار). این مجموعه پلی بین تئوری زمانبندی و استقرار عملی ایجاد میکند.
🟣لینک مقاله:
https://golangweekly.com/link/173629/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How Go Schedules Millions of Goroutines: A Deep Dive into GMP
🟢 خلاصه مقاله:
این مطلب با نگاهی عمیق و قابلفهم توضیح میدهد که زمانبند Go چگونه با مدل GMP (گوروتینها، رشتههای سیستمعامل، و پردازندههای منطقی) میلیونها گوروتین را روی تعداد کمی نخ اجرا میکند. سازوکار صفهای اجرا، «کارربایی» بین پردازندهها، نحوهٔ ایجاد و توقف گوروتینها، مدیریت بلاکشدن روی I/O یا syscall، پیشامپشن برای عدالت و کاهش تأخیر، و تعامل زمانبند با جمعآوری زباله بررسی میشود. همچنین نکات عملی مانند تنظیم GOMAXPROCS، پرهیز از انفجار گوروتینها، مدیریت فشار کانالها، و استفاده از ابزارهای ردیابی و pprof برای عیبیابی مطرح شده است. در کنار آن، دو راهنمای کاربردی معرفی میشود: ساخت تصویر کانتینر از کد Go با Depot API (تأکید بر بیلد سریع، کش و ادغام در CI) و استقرار یک سایت استاتیک Hugo روی Hetzнер (از آمادهسازی تا TLS و تحویل پایدار). این مجموعه پلی بین تئوری زمانبندی و استقرار عملی ایجاد میکند.
🟣لینک مقاله:
https://golangweekly.com/link/173629/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Medium
How Go Schedules Millions of Goroutines: A Deep Dive into GMP
How Go really handles concurrency. Demystifying the GMP scheduler to prevent performance pitfalls and write better code.
Forwarded from Software Engineer Labdon
دلیل اینکه در زبانهایی مثل Go یا Rust یا حتی C دچار سردرگمی میشید، بخاطر این هست که میخواهید ساختارهایی که از زبانهای شیگرا در ذهن دارید رو دقیقا به همون شکل در اینها هم داشته باشید. این زبانها هم تا حدی این توهم رو ایجاد میکنند که اینکار شدنی هست؛ و میتوان گفت که همینطور است، ولی فقط در ظاهر!
بسیاری از چیزهایی که شما در زبانهای شیگرا با آنها اشنا شدید، مختص و منحصر به شیگرایی نیستند. صرفا چون شما احتمالا به دلایل تاریخی برنامهنویسی رو با شیگرایی یاد گرفتید، ممکن هست اینطور تصور کنید که این مفاهیم فقط مختص به شی گرایی هستند. در حالی که بیشتر مفاهیمی که در ذهن دارید در هر پارادایم و هر زبانی قابل پیاده سازی هست.
مثلا اگر امروز به یک برنامهنویس Go یا Rust یک پروژهی بانکی یا یک سیستم فروشگاه رو محول کنید، به احتمال زیاد این پروژه رو مبتنی بر DDD انجام خواهد داد! حتی یک برنامهنویس Clojure هم احتمالا همین رویه را دنبال خواهد کرد! الان احتمالا در ذهن شما این سوال پیش آمده که DDD؟ چطور همچین چیزی ممکن هست؟ مگه این برای شی گرایی نیست؟ خیر، «شما» اون رو با شی گرایی یاد گرفتید، ولی خودش یک ایدهی عمومی است.
شما به شکلی آموزش دیدهاید که یونیتهای کد را در قالب کلاس ها ببینید. و وقتی به زبانهایی میرسید که دارای کلاس نیستند، اولین چیزی که به فکرتان میرسد این است که کلاس را در آنها شبیه سازی کنید. درست است؟
این دیدگاه، شما را دچار مشکل میکند، و دلیل اصلی اش این است که شما حتی در زبانهای شیگرا هم به درستی درک نکرده بودید که کلاس چیست! و همان دیدگاه اشتباه خود درباره کلاس رو به سایر زبانها هم انتقال میدهید!
وقتی حرف از کلاس میشود، بیشتر افراد میکنند کلاس یک بلاک از کد است که تعدادی فیلد و متد را بین دو {} گرد هم آورده است.
اما کسی سوال نمیکند خب چرا اینکار را کردند؟ فقط چون میخواستند یک سری فیلد داشته باشند و یک سری تابع بتوانند روی انها کار کنند؟
خب این رو که از قدیم در همه زبانها داشتیم. مگر اصلا جور دیگری میشود برنامه نویسی کرد؟ در تمام زبانها یک سری دیتا داریم و یک سری تابع که روی آن دیتا کار میکنند. قدیمی ترین کد C ای که میتوانید پیدا کنید را باز کنید، احتمالا در آن یک استراکت پیدا میکنید به همراه تعدادی تابع که روی آن استراکت کار میکنند. این رویه قبل از شی گرایی هم وجود داشته... فقط چون این دو را کنار هم درون {} قرار میدهید اسمش میشود کلاس؟ یعنی فقط چون میخواستند کنار هم باشن؟ که تنها نباشن؟ غصه نخورن؟ فکر نمیکنید شاید دلایل مهمتری برای این موضوع وجود داشته؟
ویژگیهایی وجود دارد که باعث میشود کلاس، کلاس بشود:
۱. کلاس دارای مکانیزم وراثت است.
۲. کلاس پلی مورفیسم مبتنی بر وراثت را فراهم میکند (متدهای virtual)
۳. از روی کلاس، میتوان آبجکتی در حافظه تولید کرد.
۴. کلاس آبجکتها را دسته بندی میکند (برای همین اسمش class است). یعنی باید بتوان جواب این سوال را جویا شد: ایا فلان آبجکت جزو فلان کلاس است؟
۵. آبجکتهای ساخته شده از روی کلاس، دارای لایف تایم متفاوتی از سایر بلاک ها هستند. ابجکتها حالت رفرنس دارند. به این معنی که تقریبا در تمام زبانها، در هیپ قرار میگیرند.
اینکه دیتا و توابع را کنار هم و در یک بلاک به اسم کلاس جمع کردناند، به خاطر این است که یک کانتکست یکپارچه پدید آورند که در قالب آن بتوانند همهی ویژگیهای بالا را برآورده کنند.
اینکه شما یک استراکت بسازید، و چند تابع تعریف کنید که روی آن استراکت کار کنند، کدام یک از ویژگیهای بالا را شامل میشود؟ این دو بخش لزومی هم ندارد که جدا از هم باشند. مثلا در zig میتوانید توابع را عین یک کلاس درون همان بلاک مربوط به استراکت قرار دهید. ولی باز هم در صورت انجام اینکار، تبدیل به کلاس نمیشود چون هیچکدام از ویژگیهای بالا را ندارد.
یا مثلا در C یا سایر زبانها، فیلدها و متدها را در ماژولها گرد هم میاورند. ایا با اینکار آن ماژول تبدیل به کلاس شده است؟
اتفاقی که این وسط افتاده این است:
۱. شما در حین یادگیری شی گرایی بدرستی درک نکردید که کلاس چیست!
۲. بر مبنای آن درک اشتباه، فکر کردید شی گرایی یعنی کنار هم قرار دادن فیلدها و متدها در یک بلاک.
۳. اصرار به این دارید که این درک اشتباه را در زبانهایی که اصلا دارای کلاس نیستند پیاده سازی کنید.
این همان جایی است که در زبانهایی مانند Go و Rust و Zig و C سایرین به مشکل بر میخورید. برای همین هست که میگویند اینها را با زبانهای شی گرا اشتباه نگیرید. چون اینها از نظر ظاهری، شاید شرایطی را فراهم کنند که به چشم شما مشابه چیزی باشد که در شی گرایی به یاد داشتید، ولی از نظر Semantics با زبانهای شی گرا متفاوت اند.
| <Amirreza Gh/>
بسیاری از چیزهایی که شما در زبانهای شیگرا با آنها اشنا شدید، مختص و منحصر به شیگرایی نیستند. صرفا چون شما احتمالا به دلایل تاریخی برنامهنویسی رو با شیگرایی یاد گرفتید، ممکن هست اینطور تصور کنید که این مفاهیم فقط مختص به شی گرایی هستند. در حالی که بیشتر مفاهیمی که در ذهن دارید در هر پارادایم و هر زبانی قابل پیاده سازی هست.
مثلا اگر امروز به یک برنامهنویس Go یا Rust یک پروژهی بانکی یا یک سیستم فروشگاه رو محول کنید، به احتمال زیاد این پروژه رو مبتنی بر DDD انجام خواهد داد! حتی یک برنامهنویس Clojure هم احتمالا همین رویه را دنبال خواهد کرد! الان احتمالا در ذهن شما این سوال پیش آمده که DDD؟ چطور همچین چیزی ممکن هست؟ مگه این برای شی گرایی نیست؟ خیر، «شما» اون رو با شی گرایی یاد گرفتید، ولی خودش یک ایدهی عمومی است.
شما به شکلی آموزش دیدهاید که یونیتهای کد را در قالب کلاس ها ببینید. و وقتی به زبانهایی میرسید که دارای کلاس نیستند، اولین چیزی که به فکرتان میرسد این است که کلاس را در آنها شبیه سازی کنید. درست است؟
این دیدگاه، شما را دچار مشکل میکند، و دلیل اصلی اش این است که شما حتی در زبانهای شیگرا هم به درستی درک نکرده بودید که کلاس چیست! و همان دیدگاه اشتباه خود درباره کلاس رو به سایر زبانها هم انتقال میدهید!
وقتی حرف از کلاس میشود، بیشتر افراد میکنند کلاس یک بلاک از کد است که تعدادی فیلد و متد را بین دو {} گرد هم آورده است.
اما کسی سوال نمیکند خب چرا اینکار را کردند؟ فقط چون میخواستند یک سری فیلد داشته باشند و یک سری تابع بتوانند روی انها کار کنند؟
خب این رو که از قدیم در همه زبانها داشتیم. مگر اصلا جور دیگری میشود برنامه نویسی کرد؟ در تمام زبانها یک سری دیتا داریم و یک سری تابع که روی آن دیتا کار میکنند. قدیمی ترین کد C ای که میتوانید پیدا کنید را باز کنید، احتمالا در آن یک استراکت پیدا میکنید به همراه تعدادی تابع که روی آن استراکت کار میکنند. این رویه قبل از شی گرایی هم وجود داشته... فقط چون این دو را کنار هم درون {} قرار میدهید اسمش میشود کلاس؟ یعنی فقط چون میخواستند کنار هم باشن؟ که تنها نباشن؟ غصه نخورن؟ فکر نمیکنید شاید دلایل مهمتری برای این موضوع وجود داشته؟
ویژگیهایی وجود دارد که باعث میشود کلاس، کلاس بشود:
۱. کلاس دارای مکانیزم وراثت است.
۲. کلاس پلی مورفیسم مبتنی بر وراثت را فراهم میکند (متدهای virtual)
۳. از روی کلاس، میتوان آبجکتی در حافظه تولید کرد.
۴. کلاس آبجکتها را دسته بندی میکند (برای همین اسمش class است). یعنی باید بتوان جواب این سوال را جویا شد: ایا فلان آبجکت جزو فلان کلاس است؟
۵. آبجکتهای ساخته شده از روی کلاس، دارای لایف تایم متفاوتی از سایر بلاک ها هستند. ابجکتها حالت رفرنس دارند. به این معنی که تقریبا در تمام زبانها، در هیپ قرار میگیرند.
اینکه دیتا و توابع را کنار هم و در یک بلاک به اسم کلاس جمع کردناند، به خاطر این است که یک کانتکست یکپارچه پدید آورند که در قالب آن بتوانند همهی ویژگیهای بالا را برآورده کنند.
اینکه شما یک استراکت بسازید، و چند تابع تعریف کنید که روی آن استراکت کار کنند، کدام یک از ویژگیهای بالا را شامل میشود؟ این دو بخش لزومی هم ندارد که جدا از هم باشند. مثلا در zig میتوانید توابع را عین یک کلاس درون همان بلاک مربوط به استراکت قرار دهید. ولی باز هم در صورت انجام اینکار، تبدیل به کلاس نمیشود چون هیچکدام از ویژگیهای بالا را ندارد.
یا مثلا در C یا سایر زبانها، فیلدها و متدها را در ماژولها گرد هم میاورند. ایا با اینکار آن ماژول تبدیل به کلاس شده است؟
اتفاقی که این وسط افتاده این است:
۱. شما در حین یادگیری شی گرایی بدرستی درک نکردید که کلاس چیست!
۲. بر مبنای آن درک اشتباه، فکر کردید شی گرایی یعنی کنار هم قرار دادن فیلدها و متدها در یک بلاک.
۳. اصرار به این دارید که این درک اشتباه را در زبانهایی که اصلا دارای کلاس نیستند پیاده سازی کنید.
این همان جایی است که در زبانهایی مانند Go و Rust و Zig و C سایرین به مشکل بر میخورید. برای همین هست که میگویند اینها را با زبانهای شی گرا اشتباه نگیرید. چون اینها از نظر ظاهری، شاید شرایطی را فراهم کنند که به چشم شما مشابه چیزی باشد که در شی گرایی به یاد داشتید، ولی از نظر Semantics با زبانهای شی گرا متفاوت اند.
| <Amirreza Gh/>
👍7💯2 2
🔵 عنوان مقاله
A-go-ha! Gopher Hawaiian Shirt Patterns
🟢 خلاصه مقاله:
**
در اواخر تابستان، خبر جالبی برای جامعهٔ Go منتشر شده است: در سال ۲۰۲۳ راس کاکس همراه با رنه فرنچ، خالق ماسکات گوفر، پیراهنهای هاوایی با طرحهای مرتبط با Go طراحی و چاپ کردند. اکنون الگوهای این طرحها در چند رنگ بهطور عمومی در دسترس قرار گرفتهاند تا علاقهمندان بتوانند نسخههای خودشان را تهیه یا از آنها استفاده خلاقانه کنند. این یک حرکت سرگرمکننده و نمادین از فرهنگ جامعهٔ Go است که حالوهوای برنامهنویسی را با استایل تابستانی پیوند میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/173619/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
A-go-ha! Gopher Hawaiian Shirt Patterns
🟢 خلاصه مقاله:
**
در اواخر تابستان، خبر جالبی برای جامعهٔ Go منتشر شده است: در سال ۲۰۲۳ راس کاکس همراه با رنه فرنچ، خالق ماسکات گوفر، پیراهنهای هاوایی با طرحهای مرتبط با Go طراحی و چاپ کردند. اکنون الگوهای این طرحها در چند رنگ بهطور عمومی در دسترس قرار گرفتهاند تا علاقهمندان بتوانند نسخههای خودشان را تهیه یا از آنها استفاده خلاقانه کنند. این یک حرکت سرگرمکننده و نمادین از فرهنگ جامعهٔ Go است که حالوهوای برنامهنویسی را با استایل تابستانی پیوند میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/173619/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - rsc/gophershirt: Gopher Hawaiian Shirts
Gopher Hawaiian Shirts. Contribute to rsc/gophershirt development by creating an account on GitHub.
🔵 عنوان مقاله
now supports Go 1.25.
🟢 خلاصه مقاله:
اکنون این پروژه بهطور کامل از Go 1.25 پشتیبانی میکند؛ خبری که در آخرین شماره Golang Weekly برجسته شده است. این پشتیبانی شامل ساخت و آزمایش با ابزارهای Go 1.25، همسانسازی CI و تصاویر کانتینری، و بهروزرسانی اسناد است تا ارتقاء بدون اصطکاک انجام شود. با توجه به بهبودهای کارایی، پایداری و ابزارها در Go 1.25، توصیه میشود Go را ارتقاء دهید، go.mod را به 1.25 تنظیم کنید، go mod tidy اجرا کنید و تستها را بگذرانید؛ در صورت بروز مشکل، آن را گزارش کنید. اگر فعلاً ارتقاء نمیدهید، میتوانید از نسخه فعلی خود استفاده کنید، اما ویژگیهای جدید پروژه احتمالاً بر پایه Go 1.25 ارائه خواهند شد.
🟣لینک مقاله:
https://golangweekly.com/link/173624/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
now supports Go 1.25.
🟢 خلاصه مقاله:
اکنون این پروژه بهطور کامل از Go 1.25 پشتیبانی میکند؛ خبری که در آخرین شماره Golang Weekly برجسته شده است. این پشتیبانی شامل ساخت و آزمایش با ابزارهای Go 1.25، همسانسازی CI و تصاویر کانتینری، و بهروزرسانی اسناد است تا ارتقاء بدون اصطکاک انجام شود. با توجه به بهبودهای کارایی، پایداری و ابزارها در Go 1.25، توصیه میشود Go را ارتقاء دهید، go.mod را به 1.25 تنظیم کنید، go mod tidy اجرا کنید و تستها را بگذرانید؛ در صورت بروز مشکل، آن را گزارش کنید. اگر فعلاً ارتقاء نمیدهید، میتوانید از نسخه فعلی خود استفاده کنید، اما ویژگیهای جدید پروژه احتمالاً بر پایه Go 1.25 ارائه خواهند شد.
🟣لینک مقاله:
https://golangweekly.com/link/173624/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The GitHub Blog
CodeQL 2.22.4 adds support for Go 1.25 and accuracy improvements - GitHub Changelog
CodeQL is the static analysis engine behind GitHub code scanning, which finds and remediates security issues in your code. We’ve recently released CodeQL 2.22.4, which adds support for Go 1.25,…
👍1🤝1
🚀 به کانال تخصصی انواع دیتابیس و دیتا خوش اومدی!
اینجا هر روز مطالب کاربردی و بهروز درباره موضوعات زیر میذاریم:
🔹 PostgreSQL
🔹 RDBMS (سیستمهای مدیریت پایگاه داده رابطهای)
🔹 NoSQL
🔹 Big Data
🔹 Data Science
🔹 Data Engineering
📚 یادگیری، نکات حرفهای و تازهترین ترندهای دنیای دیتا همه اینجاست!
📌 همین حالا جوین شو و یک قدم جلوتر باش
https://t.iss.one/Database_Academy
اینجا هر روز مطالب کاربردی و بهروز درباره موضوعات زیر میذاریم:
🔹 PostgreSQL
🔹 RDBMS (سیستمهای مدیریت پایگاه داده رابطهای)
🔹 NoSQL
🔹 Big Data
🔹 Data Science
🔹 Data Engineering
📚 یادگیری، نکات حرفهای و تازهترین ترندهای دنیای دیتا همه اینجاست!
📌 همین حالا جوین شو و یک قدم جلوتر باش
https://t.iss.one/Database_Academy
❤1
🔵 عنوان مقاله
D2: A Declarative Diagramming Tool in Go
🟢 خلاصه مقاله:
D2 یک ابزار نمودارسازی اعلانمحور و متنمحور است که با زبان Go ساخته شده و از نظر رویکرد شبیه Mermaid عمل میکند؛ یعنی بهجای رسم دستی، با نوشتن متن، نمودار تولید میکنید. بهروزرسانی اخیر خروجی ASCII را اضافه کرده تا بتوان همان نمودارها را بهصورت متن ساده در ترمینال، READMEها، ایمیلها و محیطهای محدود به متن استفاده کرد. این قابلیت، کاربردپذیری و دسترسپذیری D2 را در جریانهای کاری مختلف افزایش میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/173083/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
D2: A Declarative Diagramming Tool in Go
🟢 خلاصه مقاله:
D2 یک ابزار نمودارسازی اعلانمحور و متنمحور است که با زبان Go ساخته شده و از نظر رویکرد شبیه Mermaid عمل میکند؛ یعنی بهجای رسم دستی، با نوشتن متن، نمودار تولید میکنید. بهروزرسانی اخیر خروجی ASCII را اضافه کرده تا بتوان همان نمودارها را بهصورت متن ساده در ترمینال، READMEها، ایمیلها و محیطهای محدود به متن استفاده کرد. این قابلیت، کاربردپذیری و دسترسپذیری D2 را در جریانهای کاری مختلف افزایش میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/173083/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
D2 Documentation
Home | D2 Documentation
D2 is a modern DSL that turns text to diagrams.
❤2
Forwarded from AI Labdon
علیبابا بمب هوش مصنوعی را ترکاند | «3-Qwen» با یک تریلیون پارامتر، تهدیدی جدی برای GPT و گوگل!
https://saednews.com/c/10169/495846
https://saednews.com/c/10169/495846
Saednews
علیبابا بمب هوش مصنوعی را ترکاند | «3-Qwen» با یک تریلیون پارامتر، تهدیدی جدی برای GPT و گوگل!
ساعدنیوز: علیبابا با معرفی مدل هوش مصنوعی جدیدش، رقابت را برای غولهای جهانی فناوری داغتر کرد.
❤3🏆1
🔵 عنوان مقاله
Ergo 3.1: An Actor-Based Framework for Go
🟢 خلاصه مقاله:
Ergo 3.1 یک فریمورک بازیگرمحور برای زبان Go است که الگوها و مفاهیم آزمودهشدهٔ دنیای Erlang/OTP—مانند بازیگرهای ایزوله با ارتباط پیاممحور و الگوهای نظارت و بازیابی—را به Go میآورد. این رویکرد با جداسازی خطاها، مدیریت ساختیافتهٔ همزمانی و پشتیبانی از سناریوهای توزیعشده، ساخت سرویسهای مقیاسپذیر و مقاوم را سادهتر میکند. نسخهٔ 3.1 در مسیر پایداری، کارایی و سادگی API در سری v3 پیش رفته و ابزارهای آشنا و کارآمدی برای طراحی سیستمهای مقاوم در اکوسیستم Go فراهم میکند.
🟣لینک مقاله:
https://golangweekly.com/link/174078/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Ergo 3.1: An Actor-Based Framework for Go
🟢 خلاصه مقاله:
Ergo 3.1 یک فریمورک بازیگرمحور برای زبان Go است که الگوها و مفاهیم آزمودهشدهٔ دنیای Erlang/OTP—مانند بازیگرهای ایزوله با ارتباط پیاممحور و الگوهای نظارت و بازیابی—را به Go میآورد. این رویکرد با جداسازی خطاها، مدیریت ساختیافتهٔ همزمانی و پشتیبانی از سناریوهای توزیعشده، ساخت سرویسهای مقیاسپذیر و مقاوم را سادهتر میکند. نسخهٔ 3.1 در مسیر پایداری، کارایی و سادگی API در سری v3 پیش رفته و ابزارهای آشنا و کارآمدی برای طراحی سیستمهای مقاوم در اکوسیستم Go فراهم میکند.
🟣لینک مقاله:
https://golangweekly.com/link/174078/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - ergo-services/ergo: An actor-based Framework with network transparency for creating event-driven architecture in Golang.…
An actor-based Framework with network transparency for creating event-driven architecture in Golang. Inspired by Erlang. Zero dependencies. - GitHub - ergo-services/ergo: An actor-based Framework ...
❤3
🔵 عنوان مقاله
Let's Look at Go's New Experimental API for JSON
🟢 خلاصه مقاله:
**این مطلب نگاهی عملی به یک API آزمایشی و جدید برای JSON در Go 1.25 دارد؛ تلاشی که بهدلیل کاستیهای بسته قدیمی json شکل گرفته است. مقاله توضیح میدهد این نسخه «v2» چه مشکلاتی از طراحی قبلی را هدف گرفته، تجربه برنامهنویس را چگونه شفافتر و قابل پیشبینیتر میکند، و در کارهای روزمره مثل encode/decode، پیکربندی رفتار، مدیریت خطا و رسیدگی به مواردی مانند اعداد، null، فیلدهای ساختار و جریانها چه تفاوتهایی دارد. همچنین تأکید میکند که این API هنوز آزمایشی است، برای ارزیابی و دریافت بازخورد عرضه شده، ممکن است تغییر کند، و توصیههایی برای نحوه امتحانکردن آن در Go 1.25 و ملاحظات مهاجرت ارائه میکند.
🟣لینک مقاله:
https://golangweekly.com/link/174056/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Let's Look at Go's New Experimental API for JSON
🟢 خلاصه مقاله:
**این مطلب نگاهی عملی به یک API آزمایشی و جدید برای JSON در Go 1.25 دارد؛ تلاشی که بهدلیل کاستیهای بسته قدیمی json شکل گرفته است. مقاله توضیح میدهد این نسخه «v2» چه مشکلاتی از طراحی قبلی را هدف گرفته، تجربه برنامهنویس را چگونه شفافتر و قابل پیشبینیتر میکند، و در کارهای روزمره مثل encode/decode، پیکربندی رفتار، مدیریت خطا و رسیدگی به مواردی مانند اعداد، null، فیلدهای ساختار و جریانها چه تفاوتهایی دارد. همچنین تأکید میکند که این API هنوز آزمایشی است، برای ارزیابی و دریافت بازخورد عرضه شده، ممکن است تغییر کند، و توصیههایی برای نحوه امتحانکردن آن در Go 1.25 و ملاحظات مهاجرت ارائه میکند.
🟣لینک مقاله:
https://golangweekly.com/link/174056/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
A new experimental Go API for JSON - The Go Programming Language
Go 1.25 introduces experimental support for encoding/json/jsontext and encoding/json/v2 packages.
❤2
🔵 عنوان مقاله
The 9 Go Test Assertions I Use (and Why)
🟢 خلاصه مقاله:
**
الکس در ادامهی بحث پرهیز از پکیجهای آمادهی assertion در تستهای Go، توضیح میدهد عملاً از چه چیزی استفاده میکند: مجموعهای کمتعداد از ۹ تابع assertion دستساز. او میگوید کتابخانههای بزرگ هرچند کدنویسی را کوتاه میکنند، اما اغلب منجر به ابهام، جریان کنترل پنهان و پیامهای خطای نامفهوم میشوند. در مقابل، چند کمکتابع ساده که به t.Helper() متکیاند، بدون وابستگی خارجی و با پیامهای خطای دقیق، هم خوانایی را بالا میبرند و هم از تکرار جلوگیری میکنند.
این ۹ تابع رایجترین نیازها را پوشش میدهند: برابری/نابرابری، nil و non-nil، شرایط بولی، شاملبودن در رشتهها یا مجموعهها، و انتظارهای مرتبط با خطا. اصل مهم این است که این توابع نازک و شفاف باشند، منطق تست را پنهان نکنند و خطا را با مقادیر واقعی/مورد انتظار گزارش کنند.
او به دامهای رایج نیز اشاره میکند: تفاوت nil در اینترفیسها، محدودیتهای مقایسهی عمیق، و ترجیح سنجش رفتار قابل مشاهده بهجای برابری کامل ساختارها. نتیجهگیری او دربارهی «آیا assertion ضدالگو است؟» مشروط است: اگر کلیگرا و جادویی شوند، بله؛ اما اگر کمحجم، صریح و متناسب با حوزهی تست بمانند، ابزاری مفید هستند. قاعده نهایی: جایی که تکرار دارید از کمکتابع استفاده کنید، و هر جا یک بررسی اختصاصی پیام را شفافتر میکند، همان را درجا بنویسید.
🟣لینک مقاله:
https://golangweekly.com/link/173627/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
The 9 Go Test Assertions I Use (and Why)
🟢 خلاصه مقاله:
**
الکس در ادامهی بحث پرهیز از پکیجهای آمادهی assertion در تستهای Go، توضیح میدهد عملاً از چه چیزی استفاده میکند: مجموعهای کمتعداد از ۹ تابع assertion دستساز. او میگوید کتابخانههای بزرگ هرچند کدنویسی را کوتاه میکنند، اما اغلب منجر به ابهام، جریان کنترل پنهان و پیامهای خطای نامفهوم میشوند. در مقابل، چند کمکتابع ساده که به t.Helper() متکیاند، بدون وابستگی خارجی و با پیامهای خطای دقیق، هم خوانایی را بالا میبرند و هم از تکرار جلوگیری میکنند.
این ۹ تابع رایجترین نیازها را پوشش میدهند: برابری/نابرابری، nil و non-nil، شرایط بولی، شاملبودن در رشتهها یا مجموعهها، و انتظارهای مرتبط با خطا. اصل مهم این است که این توابع نازک و شفاف باشند، منطق تست را پنهان نکنند و خطا را با مقادیر واقعی/مورد انتظار گزارش کنند.
او به دامهای رایج نیز اشاره میکند: تفاوت nil در اینترفیسها، محدودیتهای مقایسهی عمیق، و ترجیح سنجش رفتار قابل مشاهده بهجای برابری کامل ساختارها. نتیجهگیری او دربارهی «آیا assertion ضدالگو است؟» مشروط است: اگر کلیگرا و جادویی شوند، بله؛ اما اگر کمحجم، صریح و متناسب با حوزهی تست بمانند، ابزاری مفید هستند. قاعده نهایی: جایی که تکرار دارید از کمکتابع استفاده کنید، و هر جا یک بررسی اختصاصی پیام را شفافتر میکند، همان را درجا بنویسید.
🟣لینک مقاله:
https://golangweekly.com/link/173627/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
www.alexedwards.net
The 9 Go test assertions I use (and why) - Alex Edwards
❤2👍1
🎙️ عنوان پادکست:
What's coming in Go 1.25? Plus Redowan Delowar on what makes Go different from other languages
خلاصه پادکست:
این قسمت نگاهی به Go 1.25 و انتشار نخستین نسخه候دی آن دارد و توضیح میدهد این چرخه چه پیامهایی درباره روند تکاملی و سازگاریمحور Go میدهد. سپس به یادداشت التون مینِتو درباره «نظریهمندتر بودن Go» میپردازد و مزایا و معایب پیشفرضهای قویتر در برابر انعطاف را بررسی میکند. در ادامه، با تکیه بر مطلب «HTTP QUERY and Go»، نکات عملی برای پارس و اعتبارسنجی پارامترهای کوئری در هندلرهای HTTP مطرح میشود....
What's coming in Go 1.25? Plus Redowan Delowar on what makes Go different from other languages
خلاصه پادکست:
این قسمت نگاهی به Go 1.25 و انتشار نخستین نسخه候دی آن دارد و توضیح میدهد این چرخه چه پیامهایی درباره روند تکاملی و سازگاریمحور Go میدهد. سپس به یادداشت التون مینِتو درباره «نظریهمندتر بودن Go» میپردازد و مزایا و معایب پیشفرضهای قویتر در برابر انعطاف را بررسی میکند. در ادامه، با تکیه بر مطلب «HTTP QUERY and Go»، نکات عملی برای پارس و اعتبارسنجی پارامترهای کوئری در هندلرهای HTTP مطرح میشود....
🤝5
🔵 عنوان مقاله
Go Experiments with SIMD: Intrinsics Arrive on the dev.simd Branch
🟢 خلاصه مقاله:
شاخه آزمایشی dev.simd در ابزارهای Go پشتیبانی مستقیم از SIMD را از طریق «اینترینسیکها» اضافه میکند؛ یعنی توابعی که بهطور مستقیم به دستورهای برداری پردازنده نگاشت میشوند. این کار به توسعهدهندگان اجازه میدهد بدون نوشتن اسمبلی، کد برداریِ پرکارایی را مستقیماً در Go بنویسند. تمرکز اولیه روی مدل AMD در معماری x86-64 است.
SIMD برای شتابدهی به پردازشهای موازی روی دادههای متعدد در یک دستور کلیدی است و در حوزههایی مانند محاسبات عددی، پردازش تصویر و سیگنال، رمزنگاری، فشردهسازی و اجرای پرسوجوهای پایگاهداده سودمند است. پیشتر این دسترسی عمدتاً با اسمبلی Go انجام میشد که نگهداری و قابل حمل بودن را دشوار میکرد.
اینترینسیکها ضمن حفظ ایمنی نوع و یکپارچگی با زنجیره ابزار Go، نوشتن و بازبینی کد برداری را سادهتر میکنند و نیاز به پوششهای اسمبلی را کاهش میدهند. بااینحال این قابلیت هنوز آزمایشی است: رابطها پایدار نیستند، پوشش دستورها کامل نیست و کارایی ممکن است تغییر کند. این ویژگی فعلاً در نسخههای پایدار Go موجود نیست و برای آزمایش باید شاخه dev.simd را ساخت و استفاده را با بررسی ویژگیها و مسیرهای جایگزین محافظت کرد.
🟣لینک مقاله:
https://golangweekly.com/link/173331/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go Experiments with SIMD: Intrinsics Arrive on the dev.simd Branch
🟢 خلاصه مقاله:
شاخه آزمایشی dev.simd در ابزارهای Go پشتیبانی مستقیم از SIMD را از طریق «اینترینسیکها» اضافه میکند؛ یعنی توابعی که بهطور مستقیم به دستورهای برداری پردازنده نگاشت میشوند. این کار به توسعهدهندگان اجازه میدهد بدون نوشتن اسمبلی، کد برداریِ پرکارایی را مستقیماً در Go بنویسند. تمرکز اولیه روی مدل AMD در معماری x86-64 است.
SIMD برای شتابدهی به پردازشهای موازی روی دادههای متعدد در یک دستور کلیدی است و در حوزههایی مانند محاسبات عددی، پردازش تصویر و سیگنال، رمزنگاری، فشردهسازی و اجرای پرسوجوهای پایگاهداده سودمند است. پیشتر این دسترسی عمدتاً با اسمبلی Go انجام میشد که نگهداری و قابل حمل بودن را دشوار میکرد.
اینترینسیکها ضمن حفظ ایمنی نوع و یکپارچگی با زنجیره ابزار Go، نوشتن و بازبینی کد برداری را سادهتر میکنند و نیاز به پوششهای اسمبلی را کاهش میدهند. بااینحال این قابلیت هنوز آزمایشی است: رابطها پایدار نیستند، پوشش دستورها کامل نیست و کارایی ممکن است تغییر کند. این ویژگی فعلاً در نسخههای پایدار Go موجود نیست و برای آزمایش باید شاخه dev.simd را ساخت و استفاده را با بررسی ویژگیها و مسیرهای جایگزین محافظت کرد.
🟣لینک مقاله:
https://golangweekly.com/link/173331/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
proposal: simd: architecture-specific SIMD intrinsics under a GOEXPERIMENT · Issue #73787 · golang/go
Update (08/20/2025): A preliminary implementation of AMD64 low-level SIMD package is being developed on the dev.simd branch. You're welcome to check it out and try it with your use cases. Feedb...
❤2
🔵 عنوان مقاله
Exploring Concurrency Issues with Philosophers and Go
🟢 خلاصه مقاله:
** این مجموعه به دو موضوع عملی میپردازد: نخست، با استفاده از مسئله «فیلسوفان غذاخور» نشان میدهد چگونه در Go مشکلاتی مانند بنبست، گرسنگی و رقابت رخ میدهد و با الگوهایی مانند ترتیبدهی منابع مشترک، استفاده سنجیده از کانالها و select با timeout، هماهنگی با WaitGroup و لغو با context، و همچنین ابزارهایی مثل race detector و go vet میتوان آنها را پیشگیری و ردیابی کرد. دوم، توضیح میدهد چرا Podman میتواند جایگزین بهتری برای Docker باشد: معماری بدون دیمون، اجرای روتلس، سازگاری با CLI و تصاویر OCI، و ادغام تمیز با systemd؛ با این حال به تفاوتهایی در شبکه، ولومها و گردشکار compose هم اشاره میکند که نیازمند آزمون و تنظیمات است. پیام مشترک: هم در همزمانی و هم در انتخاب ابزار، طراحی سنجیده و توجه به امنیت و بهرهوری، نتیجه بهتری میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/174074/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Exploring Concurrency Issues with Philosophers and Go
🟢 خلاصه مقاله:
** این مجموعه به دو موضوع عملی میپردازد: نخست، با استفاده از مسئله «فیلسوفان غذاخور» نشان میدهد چگونه در Go مشکلاتی مانند بنبست، گرسنگی و رقابت رخ میدهد و با الگوهایی مانند ترتیبدهی منابع مشترک، استفاده سنجیده از کانالها و select با timeout، هماهنگی با WaitGroup و لغو با context، و همچنین ابزارهایی مثل race detector و go vet میتوان آنها را پیشگیری و ردیابی کرد. دوم، توضیح میدهد چرا Podman میتواند جایگزین بهتری برای Docker باشد: معماری بدون دیمون، اجرای روتلس، سازگاری با CLI و تصاویر OCI، و ادغام تمیز با systemd؛ با این حال به تفاوتهایی در شبکه، ولومها و گردشکار compose هم اشاره میکند که نیازمند آزمون و تنظیمات است. پیام مشترک: هم در همزمانی و هم در انتخاب ابزار، طراحی سنجیده و توجه به امنیت و بهرهوری، نتیجه بهتری میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/174074/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Substack
Exploring Concurrency Issues with Philosophers and Go
Understand key concepts in concurrency by solving the dining philosophers problem step by step while discussion different subtle problems and intricacies. Full code in Go is provided towards the end.
🤝1 1