Forwarded from Gopher Academy
🔵 عنوان مقاله
qjs: Run JavaScript in Go
🟢 خلاصه مقاله:
qjs یک روش تازه برای اجرای JavaScript داخل اپهای Go است که بدون نیاز به Cgo کار میکند. بهجای اتصال به یک کتابخانه بومی، نسخه فورکشدهای از QuickJS را به WebAssembly کامپایل کرده و آن را زیر Wazero اجرا میکند. این رویکرد کل زنجیره را در محیط خالص Go نگه میدارد و فرایند بیلد، استاتیکسازی و کراسکامپایل را سادهتر میکند. مزیت دیگر، ایزولهسازی و سندباکس طبیعی ناشی از WebAssembly است. هرچند احتمالاً نسبت به اتصال بومی اندکی سربار دارد، اما برای سناریوهایی مثل اسکریپتنویسی، افزونهها و اجرای امن منطق کاربر، توازن خوبی بین سادگی، پرتابلبودن و امنیت ارائه میدهد.
#Go #JavaScript #WebAssembly #Wazero #QuickJS #Cgo #GoLang #Embedding
🟣لینک مقاله:
https://golangweekly.com/link/175350/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
qjs: Run JavaScript in Go
🟢 خلاصه مقاله:
qjs یک روش تازه برای اجرای JavaScript داخل اپهای Go است که بدون نیاز به Cgo کار میکند. بهجای اتصال به یک کتابخانه بومی، نسخه فورکشدهای از QuickJS را به WebAssembly کامپایل کرده و آن را زیر Wazero اجرا میکند. این رویکرد کل زنجیره را در محیط خالص Go نگه میدارد و فرایند بیلد، استاتیکسازی و کراسکامپایل را سادهتر میکند. مزیت دیگر، ایزولهسازی و سندباکس طبیعی ناشی از WebAssembly است. هرچند احتمالاً نسبت به اتصال بومی اندکی سربار دارد، اما برای سناریوهایی مثل اسکریپتنویسی، افزونهها و اجرای امن منطق کاربر، توازن خوبی بین سادگی، پرتابلبودن و امنیت ارائه میدهد.
#Go #JavaScript #WebAssembly #Wazero #QuickJS #Cgo #GoLang #Embedding
🟣لینک مقاله:
https://golangweekly.com/link/175350/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - fastschema/qjs: QJS is a CGO-Free, modern, secure JavaScript runtime for Go applications, built on the powerful QuickJS…
QJS is a CGO-Free, modern, secure JavaScript runtime for Go applications, built on the powerful QuickJS engine and Wazero WebAssembly runtime - fastschema/qjs
Forwarded from Unknown Place (Abolfazl)
گر برکنم دل از تو و بردارم از تو مهر
آن مهر بر که افکنم؟ آن دل کجا برم؟
۲۰ مهر - روز بزرگداشت حافظ شیرازی
آن مهر بر که افکنم؟ آن دل کجا برم؟
۲۰ مهر - روز بزرگداشت حافظ شیرازی
Forwarded from Linuxor ?
دیدین اوایل که مثلا برنامهنویسی یا هر مهارتی رو یاد میگیرین، چقدر یهویی پول درمیارین؟ بعد کمکم این اتفاق و فرصت ها کمتر میشه؟
به این پدیده میگن Beginner’s Luck: جسارت و هیجان تازهکارها باعث میشه فرصتها راحتتر دستشون بیاد، قبل از اینکه تجربه و ترس از اشتباه محدودشون کنه. البته حرفه ای ها فرصت های بزرگ تر و پایدار تری دارن ولی همیشه محتاطانه عمل میکنن مثلا نمیرن برای یه شرکت نامعتر یا کسی توی تلگرام کار کنن همین باعث میشه شانسشون محدود تر باشه.
@Linuxor
به این پدیده میگن Beginner’s Luck: جسارت و هیجان تازهکارها باعث میشه فرصتها راحتتر دستشون بیاد، قبل از اینکه تجربه و ترس از اشتباه محدودشون کنه. البته حرفه ای ها فرصت های بزرگ تر و پایدار تری دارن ولی همیشه محتاطانه عمل میکنن مثلا نمیرن برای یه شرکت نامعتر یا کسی توی تلگرام کار کنن همین باعث میشه شانسشون محدود تر باشه.
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
اکستنشن Notebook Sidebar یکی از کاربردی ترین افزونه های کروم برای برنامه نویس ها و کاربران مختلف هست. با این افزونه می تونید یادداشت هاتون رو مستقیماً داخل سایدبار مرورگر کروم بنویسید و کار هاتون رو برنامه ریزی کنید.در آپدیت جدید اکستنشن Notebook Sidebar قابلیت های کاربردی جدیدی مثل ایمپورت و اکسپورت یادداشت ها و حالت دارک مود هم اضافه شده.
لینک دانلود از کروم استور:
https://chromewebstore.google.com/detail/notebook-sidebar/fdjcoigfklgjpeplkkdbdicminpimdok
@DevTwitter | <OMid/>
لینک دانلود از کروم استور:
https://chromewebstore.google.com/detail/notebook-sidebar/fdjcoigfklgjpeplkkdbdicminpimdok
@DevTwitter | <OMid/>
Forwarded from Gopher Academy
🔵 عنوان مقاله
Terminating Elegantly: A Guide to Graceful Shutdowns
🟢 خلاصه مقاله:
ترک شایسته در سرویسها یعنی برنامه بتواند با دریافت SIGTERM، بدون از دست دادن داده یا خراب کردن وضعیت، درخواستهای جاری را تمام کند و منابع را درست آزاد کند. در این ارائه، Alex Pliutau با تمرکز بر Go در Kubernetes، چرخه کامل خاتمه را توضیح میدهد: از دریافت سیگنال و قطعکردن ترافیک تا ضربالاجل SIGKILL.
نکتههای کلیدی شامل اینهاست: استفاده از signal.NotifyContext و context برای لغو هماهنگ، مدیریت goroutineها با sync.WaitGroup، فراخوانی http.Server.Shutdown یا معادل gRPC برای تخلیه امن اتصالها، و توقف گرفتن کار جدید در Workerها درحالیکه کارهای درحال اجرا بهصورت زماندار تمام میشوند. در Kubernetes باید readiness زودتر غیرفعال شود تا Pod از مسیر ترافیک خارج شود، از preStop برای تأخیر یا Drain سفارشی کمک بگیرید، و terminationGracePeriodSeconds را درست تنظیم کنید. پایش و آزمون نیز ضروری است: لاگ شروع/پایان Shutdown، سنجههایی مثل تعداد درخواستهای درحال پردازش و زمان خاتمه، و تست SIGTERM تحت بار. رعایت این الگوهای ساده، خاتمهای قابل اعتماد و بدون اختلال در Go روی Kubernetes فراهم میکند.
#Go #Kubernetes #GracefulShutdown #CloudNative #Microservices #DevOps #Reliability #ProductionOps
🟣لینک مقاله:
https://golangweekly.com/link/175363/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Terminating Elegantly: A Guide to Graceful Shutdowns
🟢 خلاصه مقاله:
ترک شایسته در سرویسها یعنی برنامه بتواند با دریافت SIGTERM، بدون از دست دادن داده یا خراب کردن وضعیت، درخواستهای جاری را تمام کند و منابع را درست آزاد کند. در این ارائه، Alex Pliutau با تمرکز بر Go در Kubernetes، چرخه کامل خاتمه را توضیح میدهد: از دریافت سیگنال و قطعکردن ترافیک تا ضربالاجل SIGKILL.
نکتههای کلیدی شامل اینهاست: استفاده از signal.NotifyContext و context برای لغو هماهنگ، مدیریت goroutineها با sync.WaitGroup، فراخوانی http.Server.Shutdown یا معادل gRPC برای تخلیه امن اتصالها، و توقف گرفتن کار جدید در Workerها درحالیکه کارهای درحال اجرا بهصورت زماندار تمام میشوند. در Kubernetes باید readiness زودتر غیرفعال شود تا Pod از مسیر ترافیک خارج شود، از preStop برای تأخیر یا Drain سفارشی کمک بگیرید، و terminationGracePeriodSeconds را درست تنظیم کنید. پایش و آزمون نیز ضروری است: لاگ شروع/پایان Shutdown، سنجههایی مثل تعداد درخواستهای درحال پردازش و زمان خاتمه، و تست SIGTERM تحت بار. رعایت این الگوهای ساده، خاتمهای قابل اعتماد و بدون اختلال در Go روی Kubernetes فراهم میکند.
#Go #Kubernetes #GracefulShutdown #CloudNative #Microservices #DevOps #Reliability #ProductionOps
🟣لینک مقاله:
https://golangweekly.com/link/175363/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
Terminating elegantly: a guide to graceful shutdowns - Alex Pliutau
Did you ever unplug your computer because you were frustrated? In the world of software, a similar concept exists: the hard shutdown.
This abrupt termination can cause problems like data loss or system instability.
Thankfully, there's a better way: the…
This abrupt termination can cause problems like data loss or system instability.
Thankfully, there's a better way: the…
Forwarded from DevTwitter | توییت برنامه نویسی
بلاخره React از مِتا جدا شد!
بعد بیش از ۱۰ سال، React قراره تحت یه بنیاد مستقل به نام React Foundation اداره بشه ( زیر چتر Linux Foundation )
یعنی از این به بعد تصمیم گیری ها و سرنوشت ری اکت، دیگه فقط دست Meta نیست و جامعه دولوپرها و شرکتهای دیگه هم تو جهت دهی آینده React نقش دارن!
و این یعنی شفافیت، مشارکت و تنوع بیشتر در توسعه کتابخونه دوست داشتنی ری اکت
بنظرم React داره یه فصل جدید از داستانش رو شروع میکنه…
ری اکت دیگه صرفا پروژه یه شرکت نیست، بلکه نتیجه ی همکاری یه جامعه ی جهانی از دولوپر هاست
@DevTwitter | <Ahmad Ahmad-Nejad/>
بعد بیش از ۱۰ سال، React قراره تحت یه بنیاد مستقل به نام React Foundation اداره بشه ( زیر چتر Linux Foundation )
یعنی از این به بعد تصمیم گیری ها و سرنوشت ری اکت، دیگه فقط دست Meta نیست و جامعه دولوپرها و شرکتهای دیگه هم تو جهت دهی آینده React نقش دارن!
و این یعنی شفافیت، مشارکت و تنوع بیشتر در توسعه کتابخونه دوست داشتنی ری اکت
بنظرم React داره یه فصل جدید از داستانش رو شروع میکنه…
ری اکت دیگه صرفا پروژه یه شرکت نیست، بلکه نتیجه ی همکاری یه جامعه ی جهانی از دولوپر هاست
@DevTwitter | <Ahmad Ahmad-Nejad/>
Forwarded from DevTwitter | توییت برنامه نویسی
این پروژه یک وباسکرپر (Web Scraper) ساده و کاربردی است که به شما کمک میکنه تغییرات سایتها رو بهصورت خودکار شناسایی و ذخیره کنید.
با استفاده از این ابزار، میتونید چندین وبسایت رو زیر نظر بگیرید و هر زمان که محتوای اون ها تغییر کرد، باخبر بشید.
https://github.com/amintatari64/web-scraper
@DevTwitter | <Mat/>
با استفاده از این ابزار، میتونید چندین وبسایت رو زیر نظر بگیرید و هر زمان که محتوای اون ها تغییر کرد، باخبر بشید.
https://github.com/amintatari64/web-scraper
@DevTwitter | <Mat/>
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from CleverDevs (CleverDevs Ads)
💥 گروههای تلگرامی قدیمی شما رو به نرخ خوب و با تعداد نامحدودی خریدارم 💥
✅ با پرداخت فوری ✅
🗣 شرایط لازم:
- گروه ساختهُ ۲۰۲۳ به قبل باشه
- حداقل چند پیام قابل مشاهده مربوط به همون تاریخ داشته باشه
- توانایی انتقال مالکیت داشته باشید
همین! تعداد ممبر هم مهم نیست...
مثال:
از چندسال پیشا یه گروه برای کلاس داشتین و دیگه کاربردی نداره. من ازتون میخرمش!
🔫 سوالات رایج:
🎈 پیوی در خدمتم: @Pink0rca ➡️
✅ با پرداخت فوری ✅
🗣 شرایط لازم:
- گروه ساختهُ ۲۰۲۳ به قبل باشه
- حداقل چند پیام قابل مشاهده مربوط به همون تاریخ داشته باشه
- توانایی انتقال مالکیت داشته باشید
همین! تعداد ممبر هم مهم نیست...
مثال:
از چندسال پیشا یه گروه برای کلاس داشتین و دیگه کاربردی نداره. من ازتون میخرمش!
🔫 سوالات رایج:
- چند میخری؟
+ پیوی لینک گروه مورد نظر رو بفرست تا بگم (هیستوری گروه visible باشه)
- چرا میخرن این گروهها رو؟
+ چون قدیمیتر هستن تلگرام حساسیت کمتری روشون داره و میشه بهتر رشدشون داد، همچنین تو سرچ بهتر ایندکس میشن
- من اینطور گروهها رو ندارم... بیخیال بشم؟
+ خیر! به دوستان و آشنایان بگید شاید اونا داشته باشن، اینطوری به عنوان واسطه پورسانت خوبی دریافت میکنین
- چطور بهت اعتماد کنم؟ تازه عضو کانالت شدم و تورو نمیشناسم!
+ من هویت مشخصی دارم و همینطور طی سالهای گذشته در کنار فعالیتهام همیشه معاملاتی در زمینههای مختلف با افرادی که احتمالا شما هم میشناسین داشتم، هیچکس ناراضی نبوده و میتونید از خودشون بپرسید
- چقدر سود تو این کار هست؟
+ اگه زرنگ باشید میتونه چند میلیون در روز هم باشه، نمونش یکی از دوستان که دیشب ۷ تومن گیرش اومد
🎈 پیوی در خدمتم: @Pink0rca ➡️
Forwarded from Reza Jafari
یادگیری ماشین کلاسیک در عصر مدلهای بزرگ: ساده، شفاف و هنوز کاربردی
این روزها هر جا صحبت از هوش مصنوعیه، اسم مدلهای زبانی بزرگ مثل ChatGPT و GPT-4 زیاد شنیده میشه. خیلیها فکر میکنن این مدلها قراره جای همه روشهای قدیمیتر یادگیری ماشینی رو بگیرن و دوران مدلهای سنتی تموم شده. اما واقعیت اینه که یادگیری ماشینی سنتی هنوز زندهست و اتفاقاً توی خیلی از پروژههای واقعی، انتخاب درست و منطقیتریه. مدلهایی مثل رگرسیون، درخت تصمیم یا SVM هنوزم دارن توی خیلی از شرکتها و محصولات کار میکنن، اونم با نتایج دقیق، قابل اعتماد و مقرونبهصرفه.
توی خیلی از مسائل، دادهها شکل مشخص و ساختاری دارن، مثلاً تو پیشبینی فروش، تشخیص تقلب یا تحلیل رفتار مشتری. برای این جور کارها، نیازی به مدلهای خیلی پیچیده و سنگین نیست. مدلهای زبانی بزرگ برای متن و دادههای بدون ساختار ساخته شدن، نه برای دادههای عددی و جدولی. وقتی مسئله واضحه و دادههات تمیز و ساختاریه، مدلهای سنتی هم سادهترن، هم سریعتر و هم معمولاً دقیقتر.
از نظر هزینه و کارایی هم مدلهای سنتی یه سر و گردن بالاترن. مدلهای بزرگ نیاز به سختافزار قوی، GPU، انرژی زیاد و زمان طولانی برای آموزش دارن. اما مدلهای کلاسیک معمولاً روی یه سیستم معمولی اجرا میشن و توی زمان کوتاهی آموزش میبینن. این یعنی برای کسبوکارهایی که منابع محدود دارن یا باید سریع تصمیم بگیرن، روشهای سنتی خیلی بهصرفهترن.
یه مزیت خیلی مهم دیگه هم قابل توضیح بودن مدلهای سنتیه. مثلاً وقتی یه بانک بخواد توضیح بده چرا به یه نفر وام نداده، باید بشه تصمیم مدل رو روشن و منطقی توضیح داد. مدلهایی مثل رگرسیون خطی یا درخت تصمیم دقیقاً این امکان رو دارن. میتونن نشون بدن هر ویژگی چقدر توی تصمیم نهایی اثر گذاشته. ابزارهایی مثل SHAP و LIME هم کمک میکنن این موضوع حتی قابل نمایش و تحلیل بشه. این شفافیت برای حوزههایی مثل سلامت، بیمه یا مالی خیلی ارزشمنده.
مدلهای سنتی توی کار با دادههای ساختاری واقعاً عالی عمل میکنن. بخش زیادی از دادههای واقعی شرکتها هنوز به شکل جدولیه، نه متن. توی این نوع دادهها، مهندسی ویژگی و تنظیم درست مدل، نتیجههای فوقالعادهای میده. حتی گاهی مدلهای کلاسیک از مدلهای خیلی بزرگ و پیچیده هم بهتر عمل میکنن، بدون اینکه منابع زیادی مصرف کنن.
از طرفی، مدلهای سنتی به خاطر سادگیشون خیلی راحتتر پیادهسازی و نگهداری میشن. ابزارهایی مثل scikit-learn کار رو ساده کردن و میشه این مدلها رو بهراحتی داخل سیستمهای فعلی جا داد. چون منابع زیادی هم نمیخوان، حتی روی دستگاههای کوچیکتر یا سیستمهای لبهای هم قابل اجرا هستن.
یه نکته جالب اینه که ترکیب مدلهای زبانی بزرگ با مدلهای سنتی هم داره به یه روش مؤثر تبدیل میشه. یعنی بهجای اینکه یکی رو حذف کنیم، از مزایای هر دو استفاده میشه. مدل زبانی میتونه دادههای متنی رو تحلیل کنه و ازش ویژگی بسازه، بعد مدل سنتی با اون دادهها پیشبینی دقیقتر و قابل توضیحتری انجام بده. این ترکیب باعث میشه خطاهای مدلهای زبانی کمتر بشن و نتیجه نهایی منطقیتر و مطمئنتر باشه.
در نهایت، یادگیری ماشینی سنتی هنوز بخش مهمی از دنیای هوش مصنوعیه. مدلهای زبانی بزرگ ابزارهای فوقالعادهای هستن، اما همیشه باید متناسب با نوع مسئله، شکل داده و منابع در دسترس تصمیم گرفت. بعضی وقتها یه مدل ساده و شفاف، خیلی بهتر از یه مدل بزرگ و پیچیده کار میکنه. آیندهی هوش مصنوعی احتمالاً با همزیستی هوشمندانهی این دو رویکرده — جایی که مدلهای سنتی و مدرن کنار هم، هر کدوم جای خودشون رو حفظ میکنن.
🔤 🔤 🔤 🔤 🔤 🔤 🔤
🥇 اهورا اولین اپراتور هوش مصنوعی راهبردی ایران در حوزه ارائه خدمات و سرویسهای زیرساخت هوش مصنوعی
🌐 لینک ارتباط با اهورا
@reza_jafari_ai
این روزها هر جا صحبت از هوش مصنوعیه، اسم مدلهای زبانی بزرگ مثل ChatGPT و GPT-4 زیاد شنیده میشه. خیلیها فکر میکنن این مدلها قراره جای همه روشهای قدیمیتر یادگیری ماشینی رو بگیرن و دوران مدلهای سنتی تموم شده. اما واقعیت اینه که یادگیری ماشینی سنتی هنوز زندهست و اتفاقاً توی خیلی از پروژههای واقعی، انتخاب درست و منطقیتریه. مدلهایی مثل رگرسیون، درخت تصمیم یا SVM هنوزم دارن توی خیلی از شرکتها و محصولات کار میکنن، اونم با نتایج دقیق، قابل اعتماد و مقرونبهصرفه.
توی خیلی از مسائل، دادهها شکل مشخص و ساختاری دارن، مثلاً تو پیشبینی فروش، تشخیص تقلب یا تحلیل رفتار مشتری. برای این جور کارها، نیازی به مدلهای خیلی پیچیده و سنگین نیست. مدلهای زبانی بزرگ برای متن و دادههای بدون ساختار ساخته شدن، نه برای دادههای عددی و جدولی. وقتی مسئله واضحه و دادههات تمیز و ساختاریه، مدلهای سنتی هم سادهترن، هم سریعتر و هم معمولاً دقیقتر.
از نظر هزینه و کارایی هم مدلهای سنتی یه سر و گردن بالاترن. مدلهای بزرگ نیاز به سختافزار قوی، GPU، انرژی زیاد و زمان طولانی برای آموزش دارن. اما مدلهای کلاسیک معمولاً روی یه سیستم معمولی اجرا میشن و توی زمان کوتاهی آموزش میبینن. این یعنی برای کسبوکارهایی که منابع محدود دارن یا باید سریع تصمیم بگیرن، روشهای سنتی خیلی بهصرفهترن.
یه مزیت خیلی مهم دیگه هم قابل توضیح بودن مدلهای سنتیه. مثلاً وقتی یه بانک بخواد توضیح بده چرا به یه نفر وام نداده، باید بشه تصمیم مدل رو روشن و منطقی توضیح داد. مدلهایی مثل رگرسیون خطی یا درخت تصمیم دقیقاً این امکان رو دارن. میتونن نشون بدن هر ویژگی چقدر توی تصمیم نهایی اثر گذاشته. ابزارهایی مثل SHAP و LIME هم کمک میکنن این موضوع حتی قابل نمایش و تحلیل بشه. این شفافیت برای حوزههایی مثل سلامت، بیمه یا مالی خیلی ارزشمنده.
مدلهای سنتی توی کار با دادههای ساختاری واقعاً عالی عمل میکنن. بخش زیادی از دادههای واقعی شرکتها هنوز به شکل جدولیه، نه متن. توی این نوع دادهها، مهندسی ویژگی و تنظیم درست مدل، نتیجههای فوقالعادهای میده. حتی گاهی مدلهای کلاسیک از مدلهای خیلی بزرگ و پیچیده هم بهتر عمل میکنن، بدون اینکه منابع زیادی مصرف کنن.
از طرفی، مدلهای سنتی به خاطر سادگیشون خیلی راحتتر پیادهسازی و نگهداری میشن. ابزارهایی مثل scikit-learn کار رو ساده کردن و میشه این مدلها رو بهراحتی داخل سیستمهای فعلی جا داد. چون منابع زیادی هم نمیخوان، حتی روی دستگاههای کوچیکتر یا سیستمهای لبهای هم قابل اجرا هستن.
یه نکته جالب اینه که ترکیب مدلهای زبانی بزرگ با مدلهای سنتی هم داره به یه روش مؤثر تبدیل میشه. یعنی بهجای اینکه یکی رو حذف کنیم، از مزایای هر دو استفاده میشه. مدل زبانی میتونه دادههای متنی رو تحلیل کنه و ازش ویژگی بسازه، بعد مدل سنتی با اون دادهها پیشبینی دقیقتر و قابل توضیحتری انجام بده. این ترکیب باعث میشه خطاهای مدلهای زبانی کمتر بشن و نتیجه نهایی منطقیتر و مطمئنتر باشه.
در نهایت، یادگیری ماشینی سنتی هنوز بخش مهمی از دنیای هوش مصنوعیه. مدلهای زبانی بزرگ ابزارهای فوقالعادهای هستن، اما همیشه باید متناسب با نوع مسئله، شکل داده و منابع در دسترس تصمیم گرفت. بعضی وقتها یه مدل ساده و شفاف، خیلی بهتر از یه مدل بزرگ و پیچیده کار میکنه. آیندهی هوش مصنوعی احتمالاً با همزیستی هوشمندانهی این دو رویکرده — جایی که مدلهای سنتی و مدرن کنار هم، هر کدوم جای خودشون رو حفظ میکنن.
@reza_jafari_ai
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ⚝ (امیرحسین پناهےفر)
Kubernnetes from Pod to Prod 2025.pdf
30.7 MB
جزوه خوبیه واسه سلف لرنینگ k8s 👩💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Gopher Academy
🔵 عنوان مقاله
Go v1.25.2 and v1.24.8 have been released
🟢 خلاصه مقاله:
بهروزرسانیهای Go در نسخههای v1.25.2 و v1.24.8 منتشر شدهاند که مجموعهای از اصلاحات امنیتی را در بستههای مختلف ارائه میکند. این نسخهها از نوع وصلهای و سازگار به عقب هستند و بدون تغییر در رفتار زبان، امنیت و پایداری ابزارها و کتابخانهها را بهبود میدهند. توصیه میشود هرچه سریعتر به آخرین وصله در شاخه فعلیتان ارتقا دهید (برای v1.25 به v1.25.2 و برای v1.24 به v1.24.8)، یادداشتهای انتشار و هر CVE مرتبط را بررسی کنید، باینریها را مجدداً بسازید و ابزارهایی مانند govulncheck را برای شناسایی وابستگیهای آسیبپذیر اجرا کنید.
#Go #Golang #Security #Update #PatchRelease #CVE #DevOps #SoftwareMaintenance
🟣لینک مقاله:
https://golangweekly.com/link/175354/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go v1.25.2 and v1.24.8 have been released
🟢 خلاصه مقاله:
بهروزرسانیهای Go در نسخههای v1.25.2 و v1.24.8 منتشر شدهاند که مجموعهای از اصلاحات امنیتی را در بستههای مختلف ارائه میکند. این نسخهها از نوع وصلهای و سازگار به عقب هستند و بدون تغییر در رفتار زبان، امنیت و پایداری ابزارها و کتابخانهها را بهبود میدهند. توصیه میشود هرچه سریعتر به آخرین وصله در شاخه فعلیتان ارتقا دهید (برای v1.25 به v1.25.2 و برای v1.24 به v1.24.8)، یادداشتهای انتشار و هر CVE مرتبط را بررسی کنید، باینریها را مجدداً بسازید و ابزارهایی مانند govulncheck را برای شناسایی وابستگیهای آسیبپذیر اجرا کنید.
#Go #Golang #Security #Update #PatchRelease #CVE #DevOps #SoftwareMaintenance
🟣لینک مقاله:
https://golangweekly.com/link/175354/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
🧱 Heap Management در Go
در Go، مفهوم heap با چیزی که در سیستمعامل میشناسیم فرق داره.
Go روی memory-mapped segments، یه لایهی مخصوص خودش ساخته به نام mheap 🧠
🔹 mheap مرکز فرماندهی حافظهست:
اختصاص (allocate) اسپنهای جدید
پاکسازی (sweep) اسپنهای بدون استفاده
مدیریت حافظهی مربوط به goroutine stackها
به بیان ساده، mheap مثل یک مدیر حافظهی مرکزی عمل میکنه که کل heap و stackهای goroutineها رو زیر نظر داره.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در Go، مفهوم heap با چیزی که در سیستمعامل میشناسیم فرق داره.
Go روی memory-mapped segments، یه لایهی مخصوص خودش ساخته به نام mheap 🧠
🔹 mheap مرکز فرماندهی حافظهست:
اختصاص (allocate) اسپنهای جدید
پاکسازی (sweep) اسپنهای بدون استفاده
مدیریت حافظهی مربوط به goroutine stackها
به بیان ساده، mheap مثل یک مدیر حافظهی مرکزی عمل میکنه که کل heap و stackهای goroutineها رو زیر نظر داره.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
⚙️ Span Allocation: mheap.alloc
در فضای عظیم آدرس مجازی، پیدا کردن چند صفحهی آزاد پشت سر هم (contiguous pages) کار سادهای نیست — مخصوصاً وقتی چندین goroutine همزمان در حال تخصیص حافظهان 😵💫
در نسخههای اولیهی Go، تمام عملیاتهای mheap بهصورت global sync انجام میشدن، یعنی فقط یک goroutine در آنِ واحد میتونست حافظه بگیره یا آزاد کنه.
نتیجه؟ 🔻 سرعت کم و افزایش latency در بارهای زیاد.
🧠 اما Go جدید با طراحی جدیدی به نام Scalable Page Allocator این مشکل رو حل کرده:
تقسیمبندی allocator برای کاهش قفلگذاری (lock contention)
تخصیص همزمان و مستقل در چندین CPU
بهبود چشمگیر throughput در workloadهای سنگین
در واقع، mheap.alloc امروزی طوری طراحی شده که بتونه در محیطهای بسیار concurrent هم حافظه رو سریع و هوشمند مدیریت کنه 🚀
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در فضای عظیم آدرس مجازی، پیدا کردن چند صفحهی آزاد پشت سر هم (contiguous pages) کار سادهای نیست — مخصوصاً وقتی چندین goroutine همزمان در حال تخصیص حافظهان 😵💫
در نسخههای اولیهی Go، تمام عملیاتهای mheap بهصورت global sync انجام میشدن، یعنی فقط یک goroutine در آنِ واحد میتونست حافظه بگیره یا آزاد کنه.
نتیجه؟ 🔻 سرعت کم و افزایش latency در بارهای زیاد.
🧠 اما Go جدید با طراحی جدیدی به نام Scalable Page Allocator این مشکل رو حل کرده:
تقسیمبندی allocator برای کاهش قفلگذاری (lock contention)
تخصیص همزمان و مستقل در چندین CPU
بهبود چشمگیر throughput در workloadهای سنگین
در واقع، mheap.alloc امروزی طوری طراحی شده که بتونه در محیطهای بسیار concurrent هم حافظه رو سریع و هوشمند مدیریت کنه 🚀
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from DevTwitter | توییت برنامه نویسی
دارم سعی میکنم سوالات متداول و مهم از طراحی سیستم که در مصاحبه ها پرسیده میشه و از خودم هم پرسیده شده رو به صورت ویدئو ضبط کنم و کلیدواژهای مهم برای هر سوال رو در حد توان و وقتی که دارم کمی توضیح بدم.
توی هر سوال به موضوعات مهمش بیشتر پرداخته شده که در مصاحبه اهمیت بیشتری داره تا نشون بده از یک سری مفاهیم اون موضوع شناخت دارید.
البته که در هر سوال مطالب زیادی هست ولی سعی کردم هم موارد مهمش توضیح داده بشه و هم ساده باشه.
این پلی لیست در حدود 40 ویدئو هست که به مرور منتشر میشه.
در حال تکمیل پلی لیست های دیگه هم هستم :))
https://www.youtube.com/watch?v=3J-2KRValAA&feature=youtu.be
@DevTwitter | <Mohammad Keshavarz/>
توی هر سوال به موضوعات مهمش بیشتر پرداخته شده که در مصاحبه اهمیت بیشتری داره تا نشون بده از یک سری مفاهیم اون موضوع شناخت دارید.
البته که در هر سوال مطالب زیادی هست ولی سعی کردم هم موارد مهمش توضیح داده بشه و هم ساده باشه.
این پلی لیست در حدود 40 ویدئو هست که به مرور منتشر میشه.
در حال تکمیل پلی لیست های دیگه هم هستم :))
https://www.youtube.com/watch?v=3J-2KRValAA&feature=youtu.be
@DevTwitter | <Mohammad Keshavarz/>
Forwarded from Gopher Academy
📦 Tracking Free Pages
در Go، فضای آدرس مجازی بسیار بزرگه، بنابراین برای مشخص کردن وضعیت هر صفحه (آزاد یا در حال استفاده) از bitmap استفاده میشه
در این bitmap:
1 = صفحه در حال استفاده (توسط span)
0 = صفحه آزاد
🔹 هر bitmap شامل ۸ عدد uint64 هست (یعنی ۶۴ بایت) و وضعیت ۵۱۲ صفحهی متوالی رو نگه میداره.
🔹 از اونجا که هر arena در Go اندازهی ۶۴ مگابایت داره و هر صفحه ۸ کیلوبایت هست، پس در هر arena:
۸۱۹۲ صفحه داریم
۱۶ تا bitmap برای پوشش کل صفحات
در مجموع فقط ۱ کیلوبایت حافظه برای ذخیرهی وضعیت کل صفحات لازمه! ⚡️
اما مشکل: پیمایش bitmap برای پیدا کردن صفحات آزاد هنوز کند بود ⏳
برای حل این، Go مفهومی به نام Summary معرفی کرد که سه ویژگی داره:
start → تعداد صفرهای پشت سر هم از ابتدای bitmap
end → تعداد صفرهای پشت سر هم از انتهای bitmap
max → طولانیترین دنبالهی صفرها در کل bitmap
هر بار که صفحهای allocate یا free میشه، این summary بلافاصله بهروزرسانی میشه تا Go بتونه خیلی سریعتر صفحات آزاد رو پیدا کنه 🚀
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در Go، فضای آدرس مجازی بسیار بزرگه، بنابراین برای مشخص کردن وضعیت هر صفحه (آزاد یا در حال استفاده) از bitmap استفاده میشه
در این bitmap:
1 = صفحه در حال استفاده (توسط span)
0 = صفحه آزاد
🔹 هر bitmap شامل ۸ عدد uint64 هست (یعنی ۶۴ بایت) و وضعیت ۵۱۲ صفحهی متوالی رو نگه میداره.
🔹 از اونجا که هر arena در Go اندازهی ۶۴ مگابایت داره و هر صفحه ۸ کیلوبایت هست، پس در هر arena:
۸۱۹۲ صفحه داریم
۱۶ تا bitmap برای پوشش کل صفحات
در مجموع فقط ۱ کیلوبایت حافظه برای ذخیرهی وضعیت کل صفحات لازمه! ⚡️
اما مشکل: پیمایش bitmap برای پیدا کردن صفحات آزاد هنوز کند بود ⏳
برای حل این، Go مفهومی به نام Summary معرفی کرد که سه ویژگی داره:
start → تعداد صفرهای پشت سر هم از ابتدای bitmap
end → تعداد صفرهای پشت سر هم از انتهای bitmap
max → طولانیترین دنبالهی صفرها در کل bitmap
هر بار که صفحهای allocate یا free میشه، این summary بلافاصله بهروزرسانی میشه تا Go بتونه خیلی سریعتر صفحات آزاد رو پیدا کنه 🚀
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
🧩 Bitmap Summary در مدیریت صفحات Go
در این شکل، هر بیت از bitmap نشاندهندهی وضعیت یک صفحهی حافظه است:
0 → صفحه آزاد (free)
1 → صفحه در حال استفاده (allocated)
برای بهینهسازی جستجوی صفحات آزاد، Go برای هر bitmap سه مقدار خلاصهشده (summary) نگه میداره:
start = 3 → یعنی در ابتدای bitmap، ۳ صفحهی متوالی آزاد داریم
end = 7 → یعنی در انتهای bitmap، ۷ صفحهی متوالی آزاد داریم
max = 10 → طولانیترین دنبالهی صفحات آزاد در کل bitmap برابر با ۱۰ صفحه است
🔹 فلش در تصویر جهت افزایش آدرس حافظه (از پایین به بالا) رو نشون میده.
در نتیجه، ۳ صفحهی آزاد در بخش پایینتر حافظه (low address) و ۷ صفحهی آزاد در بالاترین بخش (high address) قرار دارن.
این ساختار باعث میشه Go خیلی سریعتر بتونه محدودههای بزرگ از صفحات آزاد رو پیدا کنه بدون اینکه کل bitmap رو اسکن کنه — فقط با نگاه کردن به summaryها! ⚡️
➖➖➖➖➖➖➖➖
👑 @gopher_academy
در این شکل، هر بیت از bitmap نشاندهندهی وضعیت یک صفحهی حافظه است:
0 → صفحه آزاد (free)
1 → صفحه در حال استفاده (allocated)
برای بهینهسازی جستجوی صفحات آزاد، Go برای هر bitmap سه مقدار خلاصهشده (summary) نگه میداره:
start = 3 → یعنی در ابتدای bitmap، ۳ صفحهی متوالی آزاد داریم
end = 7 → یعنی در انتهای bitmap، ۷ صفحهی متوالی آزاد داریم
max = 10 → طولانیترین دنبالهی صفحات آزاد در کل bitmap برابر با ۱۰ صفحه است
🔹 فلش در تصویر جهت افزایش آدرس حافظه (از پایین به بالا) رو نشون میده.
در نتیجه، ۳ صفحهی آزاد در بخش پایینتر حافظه (low address) و ۷ صفحهی آزاد در بالاترین بخش (high address) قرار دارن.
این ساختار باعث میشه Go خیلی سریعتر بتونه محدودههای بزرگ از صفحات آزاد رو پیدا کنه بدون اینکه کل bitmap رو اسکن کنه — فقط با نگاه کردن به summaryها! ⚡️
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from GitHub Trending Daily
🔥 New GitHub Trending Repositories 🔥
Found 9 new trending repositories:
1. daytona by daytonaio
📝 Daytona is a Secure and Elastic Infrastructure for Running AI-Generated Code
💻 TypeScript | ⭐ 22,565 | 🌟 Today: 242
🔗 Link
2. RSSHub by DIYgod
📝 🧡 Everything is RSSible
💻 TypeScript | ⭐ 39,072 | 🌟 Today: 18
🔗 Link
3. Everywhere by DearVa
📝 A context-aware AI assistant for your desktop. Ready to respond intelligently, seamlessly integratin...
💻 C# | ⭐ 350 | 🌟 Today: 84
🔗 Link
4. HowToCook by Anduin2017
📝 程序员在家做饭方法指南。Programmer's guide about how to cook at home (Simplified Chinese only).
💻 Dockerfile | ⭐ 94,782 | 🌟 Today: 56
🔗 Link
5. spring-ai-alibaba by alibaba
📝 Agentic AI Framework for Java Developers
💻 Java | ⭐ 6,092 | 🌟 Today: 19
🔗 Link
6. bun by oven-sh
📝 Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
💻 Zig | ⭐ 80,991 | 🌟 Today: 92
🔗 Link
7. diffusers by huggingface
📝 🤗 Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.
💻 Python | ⭐ 31,073 | 🌟 Today: 17
🔗 Link
8. klavis by Klavis-AI
📝 Klavis AI (YC X25): MCP integration layers that let AI agents use thousands of tools reliably.
💻 Python | ⭐ 4,708 | 🌟 Today: 47
🔗 Link
9. MinerU by opendatalab
📝 Transforms complex documents like PDFs into LLM-ready markdown/JSON for your Agentic workflows.
💻 Python | ⭐ 45,732 | 🌟 Today: 68
🔗 Link
🔘 @github_trending_daily
Found 9 new trending repositories:
1. daytona by daytonaio
📝 Daytona is a Secure and Elastic Infrastructure for Running AI-Generated Code
💻 TypeScript | ⭐ 22,565 | 🌟 Today: 242
🔗 Link
2. RSSHub by DIYgod
📝 🧡 Everything is RSSible
💻 TypeScript | ⭐ 39,072 | 🌟 Today: 18
🔗 Link
3. Everywhere by DearVa
📝 A context-aware AI assistant for your desktop. Ready to respond intelligently, seamlessly integratin...
💻 C# | ⭐ 350 | 🌟 Today: 84
🔗 Link
4. HowToCook by Anduin2017
📝 程序员在家做饭方法指南。Programmer's guide about how to cook at home (Simplified Chinese only).
💻 Dockerfile | ⭐ 94,782 | 🌟 Today: 56
🔗 Link
5. spring-ai-alibaba by alibaba
📝 Agentic AI Framework for Java Developers
💻 Java | ⭐ 6,092 | 🌟 Today: 19
🔗 Link
6. bun by oven-sh
📝 Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
💻 Zig | ⭐ 80,991 | 🌟 Today: 92
🔗 Link
7. diffusers by huggingface
📝 🤗 Diffusers: State-of-the-art diffusion models for image, video, and audio generation in PyTorch.
💻 Python | ⭐ 31,073 | 🌟 Today: 17
🔗 Link
8. klavis by Klavis-AI
📝 Klavis AI (YC X25): MCP integration layers that let AI agents use thousands of tools reliably.
💻 Python | ⭐ 4,708 | 🌟 Today: 47
🔗 Link
9. MinerU by opendatalab
📝 Transforms complex documents like PDFs into LLM-ready markdown/JSON for your Agentic workflows.
💻 Python | ⭐ 45,732 | 🌟 Today: 68
🔗 Link
🔘 @github_trending_daily
Forwarded from Linuxor ?
چند سال پیش که خام تر بودم، نرم افزار های بزرگ رو که نگاه میکردم کلی ازشون اشکال پیدا میکردم میگفتم اینا که این همه پول نیرو و علمشو دارن چرا همچین اشکالاتی دارن؛
بعد فهمیدم مهندسی نرم افزار مثل ساختمون ساختن نیست نقششو بکشی بسازی بری بالا... اینطوریه که هر نرم افزاری که میبینین سر پاست ظاهرا شاید ساختنش کاری نداره ولی پشتش پره از تصمیمهای سخت، خطاهای انسانی، بازنویسیها، مصالحهها بین کیفیت و زمان تحویل، و کلی شببیداری و سختی تحریب و از نو ساختن هستش.
@Linuxor
بعد فهمیدم مهندسی نرم افزار مثل ساختمون ساختن نیست نقششو بکشی بسازی بری بالا... اینطوریه که هر نرم افزاری که میبینین سر پاست ظاهرا شاید ساختنش کاری نداره ولی پشتش پره از تصمیمهای سخت، خطاهای انسانی، بازنویسیها، مصالحهها بین کیفیت و زمان تحویل، و کلی شببیداری و سختی تحریب و از نو ساختن هستش.
@Linuxor