Gopher Academy
Відкрити в Telegram
🕸 Gopher Academy 🔷interview golang https://github.com/mrbardia72/Go-Interview-Questions-And-Answers حمایت مالی: https://www.coffeete.ir/mrbardia72 ادمین: @mrbardia72
Показати більше3 817
Підписники
Немає даних24 години
+97 днів
+830 день
Архів дописів
3 817
معرفی کتابخونه Zen-QL :
یک Integrated Query Language در زبان گولنگ میباشد که در نسخه های اخیر از عبارات کامپایل شده برای سهولت در کدنویسی و خوانایی بیشتر کدبیس ها پشتیبانی مینماید.
ایجاد API های مجتمع برای پشتیبانی از منابع داده ای مختلف از هدف های اصلی این پروژه بوده و همچنین بدلیل طراحی ماژولار آن میتوان تنها از ماژول های مورد نیاز بدون اضافات استفاده نمود.
https://GitHub.com/malikhan-dev/zenql
<Mohammad/>
3 817
آسیبپذیری 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 #CyberSecurity3 817
🔵 عنوان مقاله
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
3 817
🔵 عنوان مقاله
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
3 817
🔵 عنوان مقاله
GoLand 2026.2 Released
🟢 خلاصه مقاله:
نسخه جدید GoLand 2026.2 منتشر شد. این آخرین بهروزرسانی IDE تجاری برای زبان برنامهنویسی Go امکانات بسیار زیادی را به توسعهدهندگان عرضه میکند. یکی از ویژگیهای برجسته این نسخه، یکپارچهسازی کامل با ابزار go fix است که به برنامهنویسان کمک میکند بهراحتی و سریع کدهای خود را اصلاح و بهروزرسانی کنند. این ادغام فرآیند اصلاح اشکالات و بهبود ساختار کد را سادهتر و مؤثرتر میکند و باعث افزایش بهرهوری در توسعه میشود.
علاوه بر این، یک ابزار جدید با عنوان "بهینهسازی Go" معرفی شده است که مجموعهای کامل از امکانات پیشرفته را جمعآوری کرده است. این ابزار شامل قابلیتهای تحلیل پروفایلینگ، تحلیل escape، و بهینهسازی ساختار دادهها است. این ویژگیها در قالب یک فضای واحد گرد هم آمدهاند تا توسعهدهندگان بتوانند عملکرد برنامههای خود را بهتر درک و بهبود بخشند. به کمک این ابزار، میتوان به بهینهترین شکل ممکن کدهای Go را تحلیل و اصلاح کرد، که این امر نهایت بهرهوری و کارایی را به پروژههای برنامهنویسی میبخشد.
نسخه جدید GoLand 2026.2، یک گام بزرگ در جهت ارتقای قابلیتها و سهولت استفاده برای جامعه توسعهدهندگان این زبان مهم است. امکانات جدید باعث میشوند روند توسعه نرمافزار سریعتر، دقیقتر و کارآمدتر انجام شود و برنامهنویسان بتوانند تمرکز خود را بر روی نوآوری و بهبود عملکرد برنامههایشان قرار دهند. این نسخه نشان میدهد که تیم توسعه JetBrains همواره در تلاش است تا ابزارهای قدرتمند و کاربردپسند را برای توسعهدهندگان فراهم کند.
#GoLand #برنامهنویسی #هوشمندسازی_کد #توسعه_نرمافزار
🟣لینک مقاله:
https://blog.jetbrains.com/go/2026/07/16/goland-2026-2-is-now-available/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
🔵 عنوان مقاله
How I Use HTMX to Build Go Webapps
🟢 خلاصه مقاله:
در این مقاله، من به طور عملی نحوه استفاده از HTMX در ساخت برنامههای وب با زبان Go را شرح میدهم. HTMX ابزاری است که امکان بهروزرسانی صفحات وب را به سبک AJAX، اما با تکیه بر ویژگیهای HTML، به صورت ساده و کارآمد فراهم میکند. در این راهنما، من بر تجربیات شخصی خود تأکید میکنم و نکات خاص و جزئیاتی که در فرآیند توسعه ممکن است چالشبرانگیز باشند را به صورت صادقانه توضیح میدهم. هدف اصلی من نشان دادن نحوه بهرهبرداری مؤثر و مستقیم از این فناوری در پروژههای مبتنی بر زبان Go است و راهنماییهایی عملی برای توسعهدهندگان علاقهمند به این روش ارائه میدهم.
در ادامه، جزئیات مربوط به روشها و تکنیکهای خاص در به کارگیری HTMX در محیط توسعه با Go را بررسی میکنم، از نحوه پیادهسازی درخواستهای دینامیک گرفته تا رفع خطاهای رایج و بهبود عملکرد برنامههای وب. این مقاله برای توسعهدهندگان علاقهمند به یادگیری راهحلهای نوین و سریع در توسعه برنامههای وب است، که میخواهند با ابزارهای مدرن، تجربۀ کاربری بهتری خلق کنند و فرآیند توسعه را سادهتر و مؤثرتر سازند.
#برنامه_نویسی #وب_داینامیک #HTMX #گو
🟣لینک مقاله:
https://www.alexedwards.net/blog/how-i-use-htmx-with-go
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
🧑🎨 A collection of Golang agentic skills that works ✨🚀
https://github.com/samber/cc-skills-golang 🛠🐙
3 817
🔵 عنوان مقاله
My Thoughts on the Future of Go in the AI Era
🟢 خلاصه مقاله:
در دنیای فناوری امروز، هوش مصنوعی به عنوان یکی از مهمترین و پررونقترین حوزهها شناخته میشود که تحولات ساختاری زیادی را در جوامع انسانی به وجود آورده است. در این میان، فکر کردن در مورد آینده زبانهای برنامهنویسی و نقش آنها در عصر هوش مصنوعی بسیار مهم است. همانطور که در مقاله اخیر استیو فرانچیا مطرح شد، آلیس بر این باور است که هوش مصنوعی ممکن است به جای کاهش ارزش زبانهای برنامهنویسی، آنها را ارزشمندتر کند.
او معتقد است که در حالی که بعضی تصور میکنند زبانهای ساده و «خستهکننده» در مواجهه با هوش مصنوعی کماهمیت میشوند، برعکس ممکن است هوش مصنوعی این زبانها را تبدیل به ابزارهای قدرتمندتری برای توسعه و نوآوری کند. این دیدگاه نویدبخش است و نشان میدهد که زبانهای قدیمی و ساده نیز در آینده نقش مهمی خواهند داشت و میتوانند با بهرهگیری از امکانات هوش مصنوعی، کارایی و ارزش خود را افزایش دهند.
در نتیجه، تصور ما درباره اهمیت و ارزش زبانهای برنامهنویسی باید تغییر کند. آیندهای که در آن هوش مصنوعی و زبانهای برنامهنویسی در کنار هم رشد میکنند، میتواند فرصتهای بینظیری برای توسعه فناوری و بهبود کیفیت زندگی انسانها فراهم آورد. بنابراین، نباید زبانهای برنامهنویسی «خستهکننده» را نادیده گرفت؛ بلکه باید آنها را با دیدی نو و امکانات نوین در مسیر پیشرفت دید.
#هوش_مصنوعی #زبان_برنامه_نویسی #فناوری_آینده #نوآوری
🟣لینک مقاله:
https://packagemain.tech/p/my-thoughts-on-the-future-of-go-in-ai-era
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
🔵 عنوان مقاله
Sketchy: A Framework for Creating Generative Art in Go
🟢 خلاصه مقاله:
در دنیای هنرهای جدید، ابزارهای برنامهنویسی توانستهاند خلاقیت را وارد حوزه هنرهای دیجیتال کنند. یکی از این ابزارها، چارچوب «اسکچی» است که برای خلق آثار هنری مبتنی بر تولید خودکار طراحی شده است. این فریمورک با بهرهگیری از موتور Ebitengine و امکانات گرافیکی Canvas در پسزمینه، امکانات بینظیری را برای هنرمندان و توسعهدهندگان فراهم میکند تا آثار هنری بینظیر و پیچیده را به سادگی و با کارایی بالا خلق کنند.
در واقع، این پروژه با هدف ساختن یک فضای ساده و کاربرپسند برای اجرای فرمهای هنری پدید آمده است. استفاده از فناوریهای مدرن در کنار رابط کاربری کاربرپسند، امکان طراحی و توسعه اثرهای گرافیکی و هنری را برای مبتدیان و حرفهایها تا حد قابل توجهی تسهیل میکند. به طور کلی، «اسکچی» یک چارچوب انعطافپذیر است که نه تنها در پروژههای هنری و خلاقانه، بلکه در آموزشهای فنی و تمرینهای برنامهنویسی نیز کاربرد فراوان دارد.
این ابزار نوآورانه به هنر دیجیتال جانی دوباره بخشیده و راه را برای خلق اثرهای هنری نوآورانه در فضای دیجیتال هموار میکند. تجربه کار با آن ساده است و به علاقهمندان اجازه میدهد تا بدون نیاز به دانستن جزئیات پیچیده، ایدههای خود را به تصاویری جذاب و پویا تبدیل کنند. این توسعهدهندهها و هنرمندان را ترغیب میکند تا مهارتهای برنامهنویسی و هنر دیجیتال را همزمان تقویت کنند و در پروژههای خلاقانه خود نوآوریهای بیشتری به کار گیرند.
#هنرهای_دیجیتال #خلاقیت_برخط #برنامهنویسی #عکاسی_پویانما
🟣لینک مقاله:
https://github.com/aldernero/sketchy
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
درواقعه
RWMutex زمانی استفاده میشود که خواندن (Read) بسیار بیشتر از نوشتن (Write) باشد.
کاربرد اصلی RLock() و RUnlock() این است که چندین goroutine بتوانند همزمان داده را بخوانند،
بدون اینکه مزاحم یکدیگر شوند، اما در زمان نوشتن، فقط یک goroutine اجازهی تغییر داده را داشته باشد.
بدون RWMutex
فرض کنید یک Map مشترک دارید:
var m = make(map[string]int)
var mu sync.Mutex
برای خواندن:
mu.Lock()
value := m["apple"]
mu.Unlock()
اگر 100 goroutine همزمان بخواهند فقط مقدار apple را بخوانند، همگی باید منتظر هم بمانند، چون Mutex فقط اجازه میدهد یک goroutine وارد بخش بحرانی شود.
با RWMutex
var m = make(map[string]int)
var rw sync.RWMutex
برای خواندن:
rw.RLock()
value := m["apple"]
rw.RUnlock()
اکنون:
Reader 1 میتواند بخواند.
Reader 2 همزمان میتواند بخواند.
Reader 3 همزمان میتواند بخواند.
...
حتی هزار Reader نیز میتوانند همزمان داده را بخوانند.
اما اگر یک Writer بخواهد داده را تغییر دهد:
rw.Lock() m["apple"] = 10 rw.Unlock()تا زمانی که تمام Readerها
RUnlock() نکنند، Writer منتظر میماند.
کاربردهای رایج
1. Cache
type Cache struct {
mu sync.RWMutex
data map[string]string
}
خواندن:
func (c *Cache) Get(key string) string {
c.mu.RLock()
defer c.mu.RUnlock()
return c.data[key]
}
نوشتن:
func (c *Cache) Set(key, value string) {
c.mu.Lock()
defer c.mu.Unlock()
c.data[key] = value
}
در یک Cache معمولاً عملیات Get بسیار بیشتر از Set است، بنابراین RWMutex عملکرد بهتری نسبت به Mutex دارد.
2. Configuration
فرض کنید صدها goroutine فقط تنظیمات برنامه را میخوانند و هر چند دقیقه یک بار تنظیمات بهروزرسانی میشود.
Read Read Read Read Read
│ │ │ │
└──────┴──────┴──────┘
همزمان اجرا میشوند
Write
│
منتظر میماند تا همه Readerها تمام شوند.
3. Web Server
در یک وبسرور:
اکثر درخواستها فقط اطلاعات را از حافظه میخوانند.
تعداد کمی از درخواستها اطلاعات را تغییر میدهند.
در این شرایط RWMutex انتخاب مناسبی است.
چه زمانی از Mutex استفاده کنیم؟
اگر تقریباً همه عملیاتها نوشتن هستند یا خواندن و نوشتن به یک اندازه انجام میشوند، معمولاً Mutex انتخاب بهتری است؛ زیرا RWMutex خودش سربار بیشتری دارد.
قانون کلی
فقط خواندن → RLock() / RUnlock()
تغییر داده → Lock() / Unlock()
به همین دلیل، RWMutex در ساختارهایی مانند Cache، Mapهای اشتراکی، تنظیمات برنامه (Configuration)، Session Store و In-Memory Database بسیار پرکاربرد است، زیرا امکان خواندن همزمان را فراهم میکند و در عین حال از نوشتن همزمان جلوگیری میکند.3 817
متد
RUnlock() در sync.RWMutex در زبان Go
RUnlock undoes a single RWMutex.RLock call; it does not affect other simultaneous readers. It is a run-time error if rw is not locked for reading on entry to RUnlock.
متن اصلی
RUnlock undoes a single RWMutex.RLock call; it does not affect other simultaneous readers.یعنی: هر بار که
RUnlock() را صدا میزنید، فقط یک فراخوانی RLock() را آزاد میکنید.
اگر چندین goroutine به طور همزمان قفل خواندن (RLock) گرفته باشند، RUnlock() فقط قفل همان goroutine را آزاد میکند و روی بقیه تأثیری ندارد.
فرض کنید:
var rw sync.RWMutex
rw.RLock() // Reader 1
rw.RLock() // Reader 2
rw.RUnlock() // فقط یکی از RLockها آزاد میشود.
بعد از این:
هنوز یک RLock فعال باقی مانده است.
بنابراین نویسنده (Lock()) هنوز نمیتواند قفل را بگیرد.
بخش دوم
It is a run-time error if rw is not locked for reading on entry to RUnlock.یعنی: اگر هنگام فراخوانی
RUnlock() هیچ RLock() فعالی وجود نداشته باشد، برنامه در زمان اجرا (runtime) panic میکند.
مثال:
var rw sync.RWMutex
rw.RUnlock()
خروجی:
fatal error: sync: RUnlock of unlocked RWMutexچون هیچ قفل خواندنی وجود نداشت. مثال کامل
package main
import (
"fmt"
"sync"
)
func main() {
var rw sync.RWMutex
rw.RLock()
fmt.Println("Reader 1")
rw.RLock()
fmt.Println("Reader 2")
rw.RUnlock()
fmt.Println("Reader 1 released")
rw.RUnlock()
fmt.Println("Reader 2 released")
}
خروجی:
Reader 1 Reader 2 Reader 1 released Reader 2 releasedاگر تعداد
RUnlock بیشتر از RLock باشد
var rw sync.RWMutex
rw.RLock()
rw.RUnlock()
rw.RUnlock() // Panic
خروجی:
fatal error: sync: RUnlock of unlocked RWMutexنکته مهم تعداد
RLock() و RUnlock() باید دقیقاً برابر باشد.
تصور ذهنی
میتوانید RWMutex را مانند یک شمارندهی خوانندهها تصور کنید:
شروع Readers = 0 RLock() Readers = 1 RLock() Readers = 2 RUnlock() Readers = 1 RUnlock() Readers = 0 ← اکنون Writer میتواند Lock بگیرد.بنابراین،
RUnlock() بر خلاف Unlock() برای Mutex، صرفاً یک قفل را آزاد نمیکند؛ بلکه شمارندهی Readerها را یک واحد کاهش میدهد. تا زمانی که این شمارنده به صفر نرسد، هیچ goroutine نمیتواند با Lock() قفل نوشتن را به دست آورد.3 817
🔵 عنوان مقاله
Microsoft Agent Framework for Go in Public Preview
🟢 خلاصه مقاله:
مایکروسافت در مسیر گوگل قرار گرفت و نسخه آزمایشی عمومی فریمورک «عاملهای هوشمند» را برای زبان Go منتشر کرد. این فریمورک، امکاناتی را در اختیار توسعهدهندگان قرار میدهد تا به سادگی بتوانند عاملهای هوشمند مبتنی بر هوش مصنوعی ساخته، مدیریت و راهاندازی کنند. هدف اصلی این ابزار، سادهسازی فرآیند توسعه و استقرار کارهای هوش مصنوعی در محیطهای مختلف است، به گونهای که کاربران بتوانند به سرعت و با کمترین پیچیدگی، راهحلهای هوشمند خود را عملیاتی کنند.
این پروژه در گیتهاب قابل دسترسی است و نشان میدهد که مایکروسافت قصد دارد در رقابت با دیگر شرکتها، ابزارهای قدرتمند و کاربرپسند برای توسعه هوشمند ارائه دهد. این فریمورک امکاناتی متنوع برای ساخت و مدیریت جریانهای کاری و عاملهای هوشمند را به توسعهدهندگان ارائه میدهد، تا بتوانند در حوزههای مختلف فناوری و کسبوکار، راهحلهای مؤثرتر و هوشمندتری ارائه دهند.
در نتیجه، انتشار این فریمورک نشاندهنده تلاش مایکروسافت برای گسترش ابزارهای متنباز و تسهیل توسعه هوش مصنوعی است. این اقدام میتواند فرصتهای جدیدی را برای توسعهدهندگان ایجاد کند و به رشد سریعتر فناوریهای مبتنی بر هوش مصنوعی کمک کند.
#هوش_مصنوعی #فریمورک #مایکروسافت #گو
🟣لینک مقاله:
https://devblogs.microsoft.com/go/microsoft-agent-framework-for-go-public-preview/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
🔵 عنوان مقاله
Chatto: A Go-Powered Group/Team Chat App
🟢 خلاصه مقاله:
در دنیای پیامرسانهای گروهی، برنامههای متنوعی وجود دارند که هر کدام ویژگیها و نقاط قوت خاص خود را دارند. یکی از این برنامهها، اپلیکیشن چت Chatto است که با زبان برنامهنویسی Go ساخته شده و امکاناتی شبیه به Slack ارائه میدهد، اما با تفاوت مهم در سرعت و عدم مزاحمت در اعلانهای مرتبط با هوش مصنوعی. این برنامه، یک سامانه چت گروهی کامل و قابل میزبانی است که میتوانید آن را روی سرور خود پیادهسازی کنید و کنترل کاملی بر روی دادههای خود داشته باشید.
در طراحی این اپلیکیشن، تمرکز بر سادگی و کارایی بوده است؛ به همین دلیل عملکرد آن بسیار سریع است و تجربه کاربری روانی را فراهم میکند. علاوه بر این، این برنامه برخلاف برخی پیامرسانها که دائما به آپدیتهای مربوط به ویژگیهای هوش مصنوعی اشاره میکنند، تمرکز خود را بر روی کاربری اصلی و ارتباط سریع و موثر گذاشته است. کد منبع این پروژه در مخزن گیتهاب قرار دارد، که توسعهدهندگان میتوانند آن را شخصیسازی و توسعه دهند.
این اپلیکیشن، یک نمونه عالی از توسعهپذیری و شخصیسازی است، و میتواند به عنوان یک جایگزین مناسب برای سرورهای پیامرسان گروهی متمرکز و آفلاین مورد استفاده قرار گیرد. با بهرهگیری از فناوریهای مدرن مانند SvelteKit در قسمت frontend، تجربه کاربری جدیدی را به کاربران ارائه میدهد، در حالی که در backend از زبان قدرتمند Go برای سرعت و بهرهوری بالا بهره برده است.
در مجموع، Chatto یک راه حل جامع و قابل اعتماد است برای کسانی که به دنبال برپایی گروههای چتی سریع، امن و بدون مزاحمت هستند. این ابزار امکانات خوبی را فراهم میکند که میتوان آن را مطابق نیازهای خاص هر سازمان یا گروه تنظیم کرد و مدیریت نمود.
#چت #پیام_رسان #پروژه_باز #توسعه_آزاد
🟣لینک مقاله:
https://www.hmans.dev/blog/chatto-is-open-source
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
Repost from Pavel Durov
🩵 Telegram now has a Rich Text Editor.
It supports tables, headings, inline media, lists, AI content, formulas, and more.
😈 Messaging apps will never be the same!
3 817
Repost from Linux
لینوس توروالدز، سازنده و مسئول هسته لینوکس، در واکنش به استفاده از هوش مصنوعی برای کدنویسی و چک کردن کدها گفته لینوکس از اون پروژه های ضد هوش مصنوعی نیست و اگر کسی با این قضیه مشکل داره میتونه لینوکس رو فورک کنه یا اینکه بیخیال لینوکس بشه و بره پی کارش!
این قضیه، از استفاده از ابزار هوش مصنوعی Sashiko برای پیدا کردن باگها و مشکلات امنیتی موجود در پچ های لینوکس شروع شد که Laurent Pinchart، یکی از توسعه دهندگان لینوکس، معتقد بود که این ابزار نظراتش رو باید به طور خودکار برای بررسی به توسعه دهندگان لینوکس نفرسته بلکه قبل از اون یک انسان باید اونهارو بررسی کنه و بعد از اینکه مطمئن شد که درست هستن، اونهارو برای بررسی نهایی به توسعه دهندگان لینوکس بفرسته تا اونهارو اصلاح کنن و فشار کاری اونهارو زیاد نکنه.
ولی Roman Gushchin، سازنده این ابزار، معتقده که بررسی هر نظر تولید شده این ابزار توسط یک انسان، کل هدف این ابزار که سریعتر کردن کار توسعه دهندگان لینوکس هست رو زیر سوال میبره و اون رو کند میکنه.
لینوس توروالدز به عنوان تصمیم گیرنده نهایی متن بلند بالایی با لحنی تند در جواب نوشته که حائز اهمیت هست:
میدونم که بعضی از افراد از هوش مصنوعی خوششون نمیاد ولی به عنوان maintainer اصلی پروژه، این یکی از چیزهاییه که من کاملا پاش میاستم و ذره ای ازش کوتاه نمیام.
لینوکس از اون پروژه های ضد هوش مصنوعی نیست و اگر کسی با این قضیه مشکل داره میتونه لینوکس رو فورک کنه یا اینکه بیخیال لینوکس بشه و بره پی کارش.
هوش مصنوعی یک ابزار مثل بقیه ابزارهاست و یک ابزار کاربردی هست. این قضیه ممکنه حتی در یک سال گذشته واضح نبوده باشه ولی کاربردی بودن اون حالا اونقدر واضحه که دیگه جای سوالی باقی نمیمونه.
پیرامون هوش مصنوعی نگرانیها و سوالات زیادی (از جنبه اقتصادی و غیره) وجود داره ولی کاربردی بودن دیگه جزو اون سوالات نیست و هر کسی که در این باره شکی داشته باشه مشخصا از این ابزارها واقعا استفاده نکرده.
بله، این ابزار می تونه تا حدی ازاردهنده هم باشه؛ هم از نظر حجم کاری که روی دوش مسئولان پروژه قرار میده و هم از این زاویه که مدام باگ های خجالت اور پیدا می کنه.
اما راه حل این نیست که سرتون رو داخل خاک قرار بدین و مثل کاری که بعضی افراد انجام میدن، تو سرتون اهنگ بخونین و بگین من صداتو نمیشنوم.
راه حل اینه که مطمئن بشیم این ابزارهای هوش مصنوعی به مسئولان پروژه کمک کنن نه اینکه صرفا برای اونها دردسر و زحمت اضافه به بار بیارن. در این مورد اصلا بحثی وجود نداره.
ما هیچ کسی رو مجبور نمیکنیم که از این ابزارها استفاده کنه و ولی اگر کسی بخواد مخالف استفاده بقیه از اونها بشه، به محکمترین شکل ممکن به اونها بی محلی میکنم و نظراتشون رو نادیده میگیرم.
و نه، هوش مصنوعی کامل و بی نقص نیست. ولی هر کسی که به مشکلات هوش مصنوعی اشاره میکنه، بهتره همزمان یه نگاهی هم به آینه بندازه و خودش رو نشونه بگیره. چون اینجوری هم نیست که هوش طبیعی ما انسانها همیشه تحفه خاصی بوده باشه.
پروژه هسته لینوکس همیشه حول تکنولوژی بوده و خواهد بود. قطعا بعد اجتماعی کار کردن روی پروژه متن باز مهم هست و به افراد انگیزه زیادی برای کار کردن روی پروژه میده اما در نهایت اینها همه مزایای جانبی هستن و هدف اصلی پروژه نیستن.
این پروژه یک نوع پروژه برای مبارزان عدالت اجتماعی نیست، هیچ وقت نبوده و نخواهد بود. ما در جامعه هسته لینوکس به دلایل متعصبانه و ایدئولوژیک روی اون کار نمیکنیم، بلکه به این خاطر روی اون کار میکنیم که در نهایت منجر به تکنولوژی بهتری بشه. بنابراین تصمیمات ما در درجه اول براساس شایستگی و ارزش فنی گرفته میشن و نه از روی ترس از ابزارهای جدید.
🔎 tomshardware
3 817
جنسن هوانگ، مدیرعامل انویدیا، با ارزشترین شرکت جهان 🌍، در سفرش به ژاپن به شرکت سگا سر زد و از Shoichiro Irimajiri، مدیرعامل پیشین سگا، بابت نجات دادن انویدیا تشکر کرد. 🙏✨
در اواسط دهه 90، سگا انویدیا را انتخاب کرد تا چیپ کنسول بازی Dreamcast را بسازد 💻، انویدیا هم در حال طراحی چیپ NV2 برای آن بود. این چیپ از چهارضلعیها و سطوح منحنی برای رندر کردن بازیها استفاده میکرد، ولی صنعت بازی و به خصوص مایکروسافت با استاندارد فراگیر Direct3D، به سمت مثلثها برای رندر کردن سوق پیدا کرده بودند. 🎮📉
بعد از یک سال از این قرارداد، انویدیا خودش را در دو راهی سختی دید ⚖️؛ در یک سمت اگر توسعه این چیپ با تکنولوژی خودش را ادامه بدهد، در نهایت یک شرکت با تکنولوژی منسوخ خواهد بود و اگر قرارداد سگا را رها کند، پول کافی برای بقا نخواهد داشت. 💸❌
بدین صورت جنسن هوانگ به سراغ Shoichiro Irimajiri، مدیرعامل سگا در آن زمان، رفت و به او گفت که انویدیا نمیتواند این چیپ را تحویل بدهد و بهتر است دنبال شرکت دیگری برای توسعه چیپ کنسولش باشد. بعد از آن سگا به سراغ چیپهای VideoLogic با تکنولوژی PowerVR رفت و از چیپهای انویدیا برای کنسول Dreamcast استفاده نکرد. 🔄🚫
ولی در طرف مقابل، Shoichiro Irimajiri هیات مدیره سگا را قانع کرد که روی انویدیا سرمایهگذاری کنند 💰؛ به جای قرارداد تامین چیپ، 5 میلیون دلار روی آن سرمایهگذاری کنند و در ازای آن سهام انویدیا دریافت کنند. با این سرمایهگذاری، انویدیا که در استانه ورشستگی بود، نجات پیدا کرد و سالهای بعد چیپ محبوب RIVA 128 با رندرینگ بر پایه مثلثها را عرضه کرد و بیش از یک میلیون از آنها را فروخت. 🚀📈
وقتی انویدیا در سال 1999 سهامش را در بازار بورس عرضه کرد، سگا سهامی که در انویدیا به ارزش 15 میلیون دلار داشت را فروخت. اگر این شرکت سهامش را تا امروز نگه میداشت، ارزش این سهام بیش از یک تریلیون دلار میبود! 💎💸🤯
3 817
🔵 عنوان مقاله
radsort 1.0: A Stable LSD Radix Sort Implementation
🟢 خلاصه مقاله:
برنامهنویس موفق و پرکار، خالق ابزارهای کاربردی مانند compress و cpuid، حالا نسخهای جدید و منحصر به فرد از الگوریتم مرتبسازی رادیکس را در قالب رادسورت ۱.۰ ارائه داده است. این الگوریتم، که از نوع مرتبسازی پایدار است، با استفاده از روش لوکاس یا LSD (Least Significant Digit) عمل میکند و همچنین میزان فضای مورد نیاز آن بسیار به صرفه است، به طوری که هزینه حافظه آن در حدود تقریبی جذر ناحیه دادهها است.
در این نسخه، توسعهدهنده تلاش کرده است تا نه تنها کارایی و پایداری الگوریتم حفظ شود، بلکه فضای مصرفی آن نیز به حداقل برسد، تا کاربردهایی که نیازمند سرعت و حافظه کم هستند، بتوانند بهرهمند شوند. این برنامه میتواند در پروژههایی که نیازمند مرتبسازی سریع و سالم دادهها هستند، نقش کلیدی ایفا کند و با بهینهسازی فضای حافظه، امکان استفاده در سیستمهایی با منابع محدود را فراهم میکند.
در مجموع، رادسورت ۱.۰ نمونهای از نوآوری در حوزه الگوریتمهای مرتبسازی است که همزمان کارایی بالا و مصرف بهینه حافظه را برای کاربر فراهم میآورد، و مطمئناً توجه توسعهدهندگان و برنامهنویسان فنی را جلب خواهد کرد.
#مرتبسازی #الگوریتم #برنامهنویسی #هوش_مصنوعی
🟣لینک مقاله:
https://github.com/klauspost/radsort
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
🔵 عنوان مقاله
mmap vs pread in a Real Go Storage Engine
🟢 خلاصه مقاله:
در این مقاله، به بررسی و مقایسه عملکرد دو روش مختلف خواندن دادهها در لایه سیستم فایل موتور ذخیرهسازی واقعی در زبان برنامهنویسی Go پرداخته شده است. یکی از این روشها، `mmap` است که در مواقعی استفاده میشود که سیستمعامل نشان میدهد صفحات حافظه مورد نیاز در حافظه اصلی قرار دارند، و دیگری `pread` است که در مواقعی به کار میرود که ممکن است با خطای صفحه اصلی مواجه شویم و این خطا باعث مسدود شدن نخ (Thread) در اجرای برنامه شود.
در ابتدا، توضیح داده شده است که `mmap` به عنوان یک روش کارآمد برای نقشهبرداری مستقیم فایل به حافظه عمل میکند، به خصوص زمانی که صفحههای مورد نیاز در حافظه قرار دارند. این ویژگی باعث میشود عملیات خواندن سریعتری انجام شود و نیاز به خواندن مستقیم از دیسک کاهش یابد. با این حال، در صورت نبودن صفحات مورد نیاز در حافظه (مثلاً صفحات غیرفعال در کش حافظه)، سیستمعامل مجبور است صفحات را بارگذاری کند که ممکن است باعث تأخیر و مسدود شدن نخهای برنامه گردد.
در مقابل، `pread` یک سیستمکال است که خواندن دادهها را مستقیماً از فایل بدون نیاز به نگاشت حافظه انجام میدهد. این روش در مواردی که انتظار میرود خطاهای مربوط به صفحات حافظه رخ دهد، مخصوصاً زمانی که صفحات در حافظه نیستند و عملیات خواندن ممکن است باعث بلوکه شدن نخ شود، ترجیح داده میشود. در این مقاله، نحوه استفاده هر کدام از این روشها بر اساس وضعیت صفحات حافظه و نیازهای سیستم تشریح شده است.
در نهایت، بررسی شده است که انتخاب بین `mmap` و `pread` باید بر اساس وضعیت حافظه و حساسیت عملیات خواندن باشد تا بهترین عملکرد را در سیستمهای ذخیرهسازی واقعی در زبان Go ارائه دهد. این نکته نشان میدهد که طراحی لایههای مربوط به فایل سیستم باید متناسب با ویژگیهای خاص درخت داده و نیازهای کاربری باشد تا کارایی و پایداری سیستم تضمین گردد.
#سیستم_فایل #پایگاه_داده #بهینهسازی #برنامهنویسی
🟣لینک مقاله:
https://internals-for-interns.com/posts/mmap-vs-pread-go-storage-engine/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
3 817
Repost from AI
دستهبندی سادهتر برای AI Thinking
🧠 تفکر تحلیلی
Analyzing
Reasoning
Evaluating
Inferring
Investigating
🤔 تفکر عمیق
Pondering
Contemplating
Reflecting
Deliberating
💡 تفکر خلاق
Musing
Brainstorming
Exploring
Imagining
🔍 تفکر حل مسئله
Hypothesizing
Testing
Debugging
Synthesizing
3 817
🔵 عنوان مقاله
httpSMS: Turn an Android Phone into an SMS Gateway
🟢 خلاصه مقاله:
در دنیای امروز، پیامک یکی از مهمترین روشهای ارتباطی در فناوری اطلاعات است؛ اما برای توسعهدهندگان، پیدا کردن راهی خودکار و موثر برای ارسال و دریافت پیامکها به صورت برنامهنویسی، همواره چالشی بزرگ بوده است. در این راستا، یکی از توسعهدهندگان اهل کامرون با تلاش و خلاقیت خود، راهحلی ابتکاری ارائه داد تا این مشکل را برطرف کند.
این توسعهدهنده، پس از مشاهده محدودیتهای روشهای رایج، تصمیم گرفت گوشی اندرویدی خود را به یک درگاه پیامک تبدیل کند. او با بهرهگیری از امکانات سیستم عامل اندروید و برنامهنویسی، توانست راهی آسان و کارآمد برای مدیریت پیامکها و تبادل آنها به صورت API طراحی کند. این ابزار، به توسعهدهندگان و شرکتهای فناوری اجازه میدهد تا بدون نیاز به سختافزار یا سامانههای پیچیده، فرآیند ارسال و دریافت پیامکهای برنامهنویسی شده را به آسانی انجام دهند.
ایدهی این پروژه باعث شد تا راهی مقرون به صرفه و قابل اعتماد برای مدیریت پیامکها در پروژههای فناوری اطلاعات به وجود بیاید؛ ابزاری که در هر شرایط و با هر نوع گوشی اندرویدی قابل اجرا است و میتواند به عنوان یک درگاه پیامکی مناسب برای کسبوکارهای آنلاین و توسعهدهندگان نرمافزار مورد استفاده قرار گیرد.
#درگاه_پیامک #اندروید #توسعه_فناوری #پاسخگویی_خودکار
🟣لینک مقاله:
https://github.com/NdoleStudio/httpsms
➖➖➖➖➖➖➖➖
👑 @gopher_academy
