Forwarded from دستاوردهای یادگیری عمیق(InTec)
Qwen3 خیلی نرم و ریز مدل
embedding خودش رو هم منتشر کردHuggingFace
نتایج جالبی هم روی بنچمارکها گرفته و پیشرفتهای خوبی رو نشون داده.
پ.ن: توی لیدربورد
multi lingual رتبه اول هست (البته مدل 8b) قراره کلی آموزش و خبر بشنویم ازش
Forwarded from جهان موازی کدها 💻🌍
میخواد اولین نمایندگی رسمیش رو
توی تهران تاسیس کنه
اسمشم بذاره
شرکت سیب گستران پارسیان نوین پویای برادران جابز (به جز استیو)
🍏 @CodEMovazii
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ASafaeirad
Forwarded from ASafaeirad
Amygdala hijack:
An amygdala hijack occurs when the brain's emotional center (the amygdala), overrides the rational thinking part (the prefrontal cortex) in response to a perceived threat or stressor. This results in an intense emotional reaction that feels automatic and often disproportionate to the situation.
#til
An amygdala hijack occurs when the brain's emotional center (the amygdala), overrides the rational thinking part (the prefrontal cortex) in response to a perceived threat or stressor. This results in an intense emotional reaction that feels automatic and often disproportionate to the situation.
#til
Forwarded from tiivik️
⭕️سرویس TikTok User Finder اطلاعات حساب تیکتاک را بر اساس نام کاربری ارائه میدهد. علاوه بر دادههایی مانند تاریخ ایجاد حساب، تاریخ تغییر نام، آمارها، دنبالکنندگان و شناسه کاربری، اطلاعاتی درباره منطقه (کشور) ثبتنام و زبان رابط کاربری که حساب از آن استفاده میکند را نیز فراهم میکند. همچنین امکان مشاهده تاریخچهها و تصاویر پروفایل با فرمت اصلی را نیز فراهم میکند.
🆔@tiivik
🆔@tiivik
Forwarded from Linuxor ?
برای یادگیری کامپیوتر اگه سربازی جلوتونو نگرفته یا چه میدونم فرهنگ خانوادگی یا چیزای دیگه مجبورتون نمیکنه دانشگاه نرید
من توی چهار سال دانشگاه کلی یاد گرفتم و کلی پیشرفت کردم ولی چیزی رو در من کشت به اسم خلاقیت که با هیچ فرمولی نمیتونم مجددا بهش برسم... در حالی که کل چیزایی که یاد گرفتم سر جمع اندازه خوندن یه کتابی بیش نبود!
البته خوندن این کتاب نیاز به پس گردنی داره! که اگه دستتون سنگینه خودتون به خودتون زود تر پس گردنی رو بزنید نزارید دانشگاه با رقابت های بیهوده مثل نمره بهتون بزنه و مجبورتون کنه خلاف چیزایی که دوست دارید برید
این شرکت هایی هم که مدرک ازتون میخوان از بیرون ایران بهشون نگاه کنید توی سطح جهانی مفت نمیارزن فقط شاخ بازیشو تو ایران واس شما بلدن در بیارن !
@Linuxor
من توی چهار سال دانشگاه کلی یاد گرفتم و کلی پیشرفت کردم ولی چیزی رو در من کشت به اسم خلاقیت که با هیچ فرمولی نمیتونم مجددا بهش برسم... در حالی که کل چیزایی که یاد گرفتم سر جمع اندازه خوندن یه کتابی بیش نبود!
البته خوندن این کتاب نیاز به پس گردنی داره! که اگه دستتون سنگینه خودتون به خودتون زود تر پس گردنی رو بزنید نزارید دانشگاه با رقابت های بیهوده مثل نمره بهتون بزنه و مجبورتون کنه خلاف چیزایی که دوست دارید برید
این شرکت هایی هم که مدرک ازتون میخوان از بیرون ایران بهشون نگاه کنید توی سطح جهانی مفت نمیارزن فقط شاخ بازیشو تو ایران واس شما بلدن در بیارن !
@Linuxor
Forwarded from دستاوردهای یادگیری عمیق(InTec)
یکی از جذابترین گجتها که توی CES امسال معرفی شد؛
Next Mind
هست که بطور RealTime سیگنال مغز رو تیدیل به فرمان برای کنترل چیزهای مختلف (تلویزیون ؛ ضبط و ... ) میکنه
شخصاْ فکر میکنم از دیپلرنینگ برای پردازش سیگنالها و تغییر اون به دستورات استفاده میکنه (شخصاْ موفقیت آمیز بودن این موضوع رو قبلاْ تست کردم؛ اما فقط برای دستورات بسیار بسیار ساده)
https://www.next-mind.com/
Next Mind
هست که بطور RealTime سیگنال مغز رو تیدیل به فرمان برای کنترل چیزهای مختلف (تلویزیون ؛ ضبط و ... ) میکنه
شخصاْ فکر میکنم از دیپلرنینگ برای پردازش سیگنالها و تغییر اون به دستورات استفاده میکنه (شخصاْ موفقیت آمیز بودن این موضوع رو قبلاْ تست کردم؛ اما فقط برای دستورات بسیار بسیار ساده)
https://www.next-mind.com/
Forwarded from دستاوردهای یادگیری عمیق(InTec)
حذف نویز از تصاویر به کمک AutoEncoder ؛
اصطلاحا این نوع نویز رو که توی تصاویر دوربینهای مداربسته بسیار دیده میشه،
Salt & Pepper
میگن بهش، اینکار برای یک پروژه ثبت اتومات ساعت ورود و خروج و ثبت پلاک در پایگاه داده هست (متاسفانه نمیتونم دادههای پلاکهارو قرار بدم، اما مهم نیست)
نویزهای مختلفی روی تصاویر دریافتی از دوربینها وجود داره توی این پروژه، راهکار قبلی این بوده که دیتارو بصورت تصویر داخل دیتابیس نگهداری میکردند، بخاطر حجم و مشکلات مختلف چیز خوبی نبود و نهایتاً تا ۴ ماه دیتارو نگهداری میکردند.
راهکار : استفاده از دیپلرنینگ و ذخیره شماره پلاک بصورت متن، اما مشکل وجود نویزهای فراوان بود که دقت مدل رو پایین میاورد و اتوانکودر تونست به راحتی این مشکل رو حل کنه
جالبه که حجم هردو مدل (اتوانکودر و کلسیفیکیشن) باهم کمتر از ۵۰۰ کیلوبایت هست، و هر دو مدل بصورت
RealTime
روی raspberry درحال اجرا هستند (این پروژه برای پارکینگ یک مجتمع فروشگاهی خصوصی زده شده؛ و جنبه امنیتی و تبلیغاتی و ... خواهد داشت)
#پروژه_آخر_هفته
اصطلاحا این نوع نویز رو که توی تصاویر دوربینهای مداربسته بسیار دیده میشه،
Salt & Pepper
میگن بهش، اینکار برای یک پروژه ثبت اتومات ساعت ورود و خروج و ثبت پلاک در پایگاه داده هست (متاسفانه نمیتونم دادههای پلاکهارو قرار بدم، اما مهم نیست)
نویزهای مختلفی روی تصاویر دریافتی از دوربینها وجود داره توی این پروژه، راهکار قبلی این بوده که دیتارو بصورت تصویر داخل دیتابیس نگهداری میکردند، بخاطر حجم و مشکلات مختلف چیز خوبی نبود و نهایتاً تا ۴ ماه دیتارو نگهداری میکردند.
راهکار : استفاده از دیپلرنینگ و ذخیره شماره پلاک بصورت متن، اما مشکل وجود نویزهای فراوان بود که دقت مدل رو پایین میاورد و اتوانکودر تونست به راحتی این مشکل رو حل کنه
جالبه که حجم هردو مدل (اتوانکودر و کلسیفیکیشن) باهم کمتر از ۵۰۰ کیلوبایت هست، و هر دو مدل بصورت
RealTime
روی raspberry درحال اجرا هستند (این پروژه برای پارکینگ یک مجتمع فروشگاهی خصوصی زده شده؛ و جنبه امنیتی و تبلیغاتی و ... خواهد داشت)
#پروژه_آخر_هفته
Forwarded from ASafaeirad
Cortical blindness, also known as cerebral blindness or cortical visual impairment, is a neurological condition where vision is lost due to damage in the occipital cortex of the brain, the part responsible for processing visual information, rather than in the eyes themselves.
This means the eyes are typically normal, and the condition can range from partial visual field deficits to complete blindness.
Some individuals with cortical blindness can still process emotional information, particularly from facial expressions and eye contact, as the amygdala, can still be activated in the absence of the visual cortex
#til
This means the eyes are typically normal, and the condition can range from partial visual field deficits to complete blindness.
Some individuals with cortical blindness can still process emotional information, particularly from facial expressions and eye contact, as the amygdala, can still be activated in the absence of the visual cortex
#til
Forwarded from DevTwitter | توییت برنامه نویسی
یه زمانی تو جمع برنامه نویس ها بحث های فنی و تکنولوژی های جدید داغ بود. الان بحث فقط و فقط مهاجرت و اپلای هست.
<Mehdi Fathi/>
@DevTwitter
<Mehdi Fathi/>
@DevTwitter
Forwarded from کانال اطلاعرسانی توزیع پارچ (Sohrab)
برنامه packet ابزاری برای به اشتراک گذاری پروندهها بین دو کامپیوتر و حتی بواسطه Quick Share اندروید به مخزن پارچ اضافه شد.
برای نصب:
@ParchLinux
برای نصب:
sudo pacman -Sy packet
@ParchLinux
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰دستورات خالی کردن کش DNS در ویندوز و لینوکس :
🔹ویندوز
ipconfig /flushdns
🔹لینوکس
بسته به سرویس DNS مورد استفاده:
1️⃣ اگر از systemd-resolved استفاده میکنی:
sudo systemd-resolve --flush-caches
2️⃣ اگر از dnsmasq استفاده میکنی:
sudo killall -HUP dnsmasq
3️⃣ اگر از nscd استفاده میکنی:
sudo systemctl restart nscd
یا
sudo service nscd restart
🔹ویندوز
ipconfig /flushdns
🔹لینوکس
بسته به سرویس DNS مورد استفاده:
1️⃣ اگر از systemd-resolved استفاده میکنی:
sudo systemd-resolve --flush-caches
2️⃣ اگر از dnsmasq استفاده میکنی:
sudo killall -HUP dnsmasq
3️⃣ اگر از nscd استفاده میکنی:
sudo systemctl restart nscd
یا
sudo service nscd restart
Forwarded from Frontend with Erfun👨🏻💻 (Erfun Ghodoosi)
توی تیم درگیر فرایند performance optimization یک اپلیکیشن کاملا client side هستم
که با react + vite نوشته شده و در حال توسعه هست (احتمالا به زودی نسخه MVP هم لانچ میشه).
خب تا قبل از اون همچین تجربه ای رو فقط با nextjs داشتم. که nextjs برای یه همچین منظوری ساخته شده. و تا قبل از اینکه شما وارد فضای performance optimization بشید خودش خیلی چیزارو هندل کرده. من جمله عکس ها و رندر کردنشون در بهترین حالت ممکن (که هنوز هم میبینم بعضیا با اینکه سابقه خیلی زیادی دارن عکس هاشون توی نکست یا سایز مناسبی نداره یا fetchpriority مناسبی نداره یا بدتر از همه CLS خیلی زیادی ایجاد میکنه بخاطر اشتباه سایز دادن)
ولی توی ریکت ما داریم از img element دیفالت خود jsx استفاده میکنیم. و نداشتن یک کامپوننت built-in چالش های مختلفی رو ایجاد میکنه. از جمله همین layout shift که بدترین تجربه ی ممکن رو میتونه برای کاربر ایجاد کنه.
و اما مسائلی که سعی کردم رعایتشون کنم تا به یک پیشرفت پرفورمنس حدودا ۳۰ درصدی برسم (رسوندنش از ۶۰ به ۸۰ و بالاتر)
اول از همه بهبود متریک CLS بود:
برای عکس هام width و height مشخص کردم توی همون jsx. و همین تمام مسئله ی CLS رو برطرف کرد.
و بهبود LCP:
چیزی که اینجا کمکم کرد به نتیجه خیلی خوبی برسم
اول از همه کاهش سایز تصاویری بود که داشتیم
هرچند عکس ها سایز خیلی کوچیکی داشت ولی همچنان میشد قضیه رو با تبدیل فرمتشون به webp یا avif بهتر کرد.
و همینطور عکس هایی که توی لود اولیه کاربر باید میدید مخصوصا عکس های داخل header رو preload کردم تا خیلی سریع کاربر ببینه و مرورگر قبل از هرچیزی اون عکس هارو دانلود کنه و نگه داره.
که سرعت paint مرورگر نیاد پایین.
همینطور code splitting که به عنوان تسک اصلی مشخص شده بود ولی من پامو فراتر از اون گذاشتم.
کامپوننت route هارو همرو lazy load کردم
و از suspense boundary استفاده کردم تا مرورگر بعد از اینکه وارد اون route شدیم کامپوننت مربوط بهش رو دانلود کنه و نمایش بده.
این کار کمک میکنه توی لود اولیه جاوا اسکریپت اضافه ای دانلود نکنیم و کوچیک تر بودن سایز باندل یا همون js مون به لود سریع تر صفحه خیلی کمک میکنه.
همچنین از rollup-plugin-visualizer استفاده میکنم تا موقع بیلد حتما بهم نشون بده چه ماژول هایی داریم و اگر سایز ماژولی به طور نا متعارف و غیر بهینه ای بزرگه یه trade-off براش انجام بدیم.
یعنی چک کنیم که آیا جایگزینی وجود داره؟
آیا ما داریم واقعا از همه ی پتانسیل ها و فیچر های این ماژول (لایبرری بیشتر منظورمه) استفاده میکنیم؟
اگر جایگزینی داره همین پرفورمنس رو به ما میده؟ و ...
و همچنین به عنوان یه نکته کنکوری که هرجایی بهتون نمیگن:
این کانفیگ توی vite.config
اولیش که مربوط به sourcemap میشه
که با تولید نکردن فایل های sourcemap
بخش های مختلف باندل رو به سورس اصلی map نمیکنه
که اول از همه نکته امنیتی خیلی مهم داره و مهم تر از اون باعث کاهش حجم خروجی نهایی میشه.
و کانفیگ بعدی که باعث میشه هر پکیجی که از node modules ایمپورت شده به عنوان یک chunk جداگونه تولید بشه
یعنی که باندل جداگونه یا فایل js جداگونه که باعث میشه:
۱. کش بهتر مرورگر
یعنی اگه فقط توی بروز رسانی فقط یکی از این موراد (لایبرری ها یا chunk ها) تغییر کنه. بقیه شون توی کش مرور گر باقی میمونن
۲. لود اولیه سریع
مرورگر فقط باندلی که لازم داره رو واکشی میکنه.
۳. تحلیل بهتر ساختار باندل
مثل همون ابزاری که گفتم `rollup-plugin-visualizer`
وقتی از اینجور ابزار ها استفاده کنیم راحت تر میتونیم بفهمیم کد ها از کجا میان و تصمیم گیری و تحلیل برامون راحت تر میشه
که با react + vite نوشته شده و در حال توسعه هست (احتمالا به زودی نسخه MVP هم لانچ میشه).
خب تا قبل از اون همچین تجربه ای رو فقط با nextjs داشتم. که nextjs برای یه همچین منظوری ساخته شده. و تا قبل از اینکه شما وارد فضای performance optimization بشید خودش خیلی چیزارو هندل کرده. من جمله عکس ها و رندر کردنشون در بهترین حالت ممکن (که هنوز هم میبینم بعضیا با اینکه سابقه خیلی زیادی دارن عکس هاشون توی نکست یا سایز مناسبی نداره یا fetchpriority مناسبی نداره یا بدتر از همه CLS خیلی زیادی ایجاد میکنه بخاطر اشتباه سایز دادن)
ولی توی ریکت ما داریم از img element دیفالت خود jsx استفاده میکنیم. و نداشتن یک کامپوننت built-in چالش های مختلفی رو ایجاد میکنه. از جمله همین layout shift که بدترین تجربه ی ممکن رو میتونه برای کاربر ایجاد کنه.
و دقیقا وقتایی که دارید یه پروژه ای رو با ریکت میزنید و میبینید با اینکه ui خیلی خوبی داره ولی اونقد حس حرفه ای بودن و سریع بودن نداره. خیلی از مشکلات تجربه کاربری که داره بخاطر برطرف نکردن CLS یا cumulative layout shift هست.
وقتی توی لود اولیه بعد از پارس شدن استایل ها تازه سایز عکسا مشخص میشه و همه چی بالا پایین میپره توی اون لود اولیه. متریکی که برای گوگل به شدت مهمه.
و اما مسائلی که سعی کردم رعایتشون کنم تا به یک پیشرفت پرفورمنس حدودا ۳۰ درصدی برسم (رسوندنش از ۶۰ به ۸۰ و بالاتر)
اول از همه بهبود متریک CLS بود:
برای عکس هام width و height مشخص کردم توی همون jsx. و همین تمام مسئله ی CLS رو برطرف کرد.
و بهبود LCP:
چیزی که اینجا کمکم کرد به نتیجه خیلی خوبی برسم
اول از همه کاهش سایز تصاویری بود که داشتیم
هرچند عکس ها سایز خیلی کوچیکی داشت ولی همچنان میشد قضیه رو با تبدیل فرمتشون به webp یا avif بهتر کرد.
و همینطور عکس هایی که توی لود اولیه کاربر باید میدید مخصوصا عکس های داخل header رو preload کردم تا خیلی سریع کاربر ببینه و مرورگر قبل از هرچیزی اون عکس هارو دانلود کنه و نگه داره.
که سرعت paint مرورگر نیاد پایین.
همینطور code splitting که به عنوان تسک اصلی مشخص شده بود ولی من پامو فراتر از اون گذاشتم.
کامپوننت route هارو همرو lazy load کردم
و از suspense boundary استفاده کردم تا مرورگر بعد از اینکه وارد اون route شدیم کامپوننت مربوط بهش رو دانلود کنه و نمایش بده.
این کار کمک میکنه توی لود اولیه جاوا اسکریپت اضافه ای دانلود نکنیم و کوچیک تر بودن سایز باندل یا همون js مون به لود سریع تر صفحه خیلی کمک میکنه.
همچنین از rollup-plugin-visualizer استفاده میکنم تا موقع بیلد حتما بهم نشون بده چه ماژول هایی داریم و اگر سایز ماژولی به طور نا متعارف و غیر بهینه ای بزرگه یه trade-off براش انجام بدیم.
یعنی چک کنیم که آیا جایگزینی وجود داره؟
آیا ما داریم واقعا از همه ی پتانسیل ها و فیچر های این ماژول (لایبرری بیشتر منظورمه) استفاده میکنیم؟
اگر جایگزینی داره همین پرفورمنس رو به ما میده؟ و ...
و همچنین به عنوان یه نکته کنکوری که هرجایی بهتون نمیگن:
این کانفیگ توی vite.config
// .1
sourcemap: false,
// .2
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[0].toString();
}
},
},
},
اولیش که مربوط به sourcemap میشه
که با تولید نکردن فایل های sourcemap
بخش های مختلف باندل رو به سورس اصلی map نمیکنه
که اول از همه نکته امنیتی خیلی مهم داره و مهم تر از اون باعث کاهش حجم خروجی نهایی میشه.
و کانفیگ بعدی که باعث میشه هر پکیجی که از node modules ایمپورت شده به عنوان یک chunk جداگونه تولید بشه
یعنی که باندل جداگونه یا فایل js جداگونه که باعث میشه:
۱. کش بهتر مرورگر
یعنی اگه فقط توی بروز رسانی فقط یکی از این موراد (لایبرری ها یا chunk ها) تغییر کنه. بقیه شون توی کش مرور گر باقی میمونن
۲. لود اولیه سریع
مرورگر فقط باندلی که لازم داره رو واکشی میکنه.
۳. تحلیل بهتر ساختار باندل
مثل همون ابزاری که گفتم `rollup-plugin-visualizer`
وقتی از اینجور ابزار ها استفاده کنیم راحت تر میتونیم بفهمیم کد ها از کجا میان و تصمیم گیری و تحلیل برامون راحت تر میشه
Forwarded from Frontend with Erfun👨🏻💻 (Erfun Ghodoosi)
نکته کنکوری رو از دست ندید 😉
Forwarded from Gopher Academy
[ On | No ] syntactic support for error handling
این مقاله درباره تصمیم تیم زبان برنامهنویسی Go در مورد عدم افزودن سینتکس جدید برای مدیریت خطاها (error handling) در این زبان صحبت میکنه. در ادامه خلاصهای از محتوای مقاله رو برات توضیح میدم:
💐 موضوع اصلی مقاله:
این مقاله به بررسی بحثهای طولانیمدت در جامعه Go درباره مدیریت خطاها و پیشنهادات مختلف برای بهبود سینتکس آن میپردازه. تیم Go اعلام کرده که برای آینده قابل پیشبینی، هیچ تغییر سینتکسی جدیدی برای مدیریت خطاها در زبان Go اعمال نخواهد شد و تمام پیشنهادات مرتبط با تغییر سینتکس مدیریت خطاها بدون بررسی بیشتر بسته میشن.
💐 نکات کلیدی:
1. سابقه بحث مدیریت خطاها:
- مدیریت خطاها در Go به دلیل استفاده مکرر از الگوی
- در طول سالها، پیشنهادات زیادی از جامعه Go برای بهبود سینتکس مدیریت خطاها ارائه شده، از جمله ایدههایی مثل استفاده از عملگر
2. چالشهای موجود:
- مقاله توضیح میده که هنوز درک مشترکی در مورد اینکه آیا مشکل اصلی در سینتکس مدیریت خطاها (syntactic verbosity) هست یا در پیچیدگیهای مدیریت صحیح خطاها (مثل ساخت خطاهای معنادار برای APIها و کاربران) وجود نداره.
- افزودن سینتکس جدید ممکنه باعث بشه کدهای Go از حالت استاندارد و یکپارچه (idiomatic) خارج بشن و توسعهدهندگان رو به استفاده از روشهای جدید مجبور کنه، که با فلسفه طراحی Go (سادگی و اجتناب از روشهای متعدد برای یک کار) سازگار نیست.
3. تصمیم تیم Go:
- تیم Go به این نتیجه رسیده که به جای تمرکز روی تغییرات سینتکسی، بهتره انرژی جامعه و تیم روی بهبودهای دیگه در زبان متمرکز بشه.
- این تصمیم به معنای توقف بررسی پیشنهادات سینتکسی جدید برای مدیریت خطاها و بسته شدن تمام پیشنهادات باز در این زمینهست.
4. تأثیرات و آینده:
- این مقاله تأکید میکنه که تلاشهای جامعه برای بحث در مورد مدیریت خطاها، حتی اگر به تغییر سینتکس منجر نشده، باعث بهبودهای دیگهای در زبان Go و فرآیندهای توسعه اون شده.
- تیم Go امیدواره که در آینده، با درک بهتر از نیازها، راهحلهای مناسبتری برای مدیریت خطاها پیدا بشه، اما فعلاً تمرکز روی این موضوع متوقف شده.
💐 نتیجهگیری:
این مقاله بیشتر یک بیانیه رسمی از تیم Go درباره پایان دادن به بحثهای طولانی در مورد تغییر سینتکس مدیریت خطاها در زبان Go هست. اونا معتقدند که در حال حاضر، سیستم فعلی مدیریت خطاها (بر اساس مقادیر error و بررسی صریح) به اندازه کافی کارآمد هست و نیازی به پیچیدهتر کردن زبان با سینتکسهای جدید نیست.
https://go.dev/blog/error-syntax
➖➖➖➖➖➖➖➖
👑 @gopher_academy
این مقاله درباره تصمیم تیم زبان برنامهنویسی Go در مورد عدم افزودن سینتکس جدید برای مدیریت خطاها (error handling) در این زبان صحبت میکنه. در ادامه خلاصهای از محتوای مقاله رو برات توضیح میدم:
💐 موضوع اصلی مقاله:
این مقاله به بررسی بحثهای طولانیمدت در جامعه Go درباره مدیریت خطاها و پیشنهادات مختلف برای بهبود سینتکس آن میپردازه. تیم Go اعلام کرده که برای آینده قابل پیشبینی، هیچ تغییر سینتکسی جدیدی برای مدیریت خطاها در زبان Go اعمال نخواهد شد و تمام پیشنهادات مرتبط با تغییر سینتکس مدیریت خطاها بدون بررسی بیشتر بسته میشن.
💐 نکات کلیدی:
1. سابقه بحث مدیریت خطاها:
- مدیریت خطاها در Go به دلیل استفاده مکرر از الگوی
if err != nil گاهی اوقات بهعنوان یک فرآیند پرزحمت و تکراری (verbose) مورد انتقاد قرار گرفته. این موضوع در نظرسنجی توسعهدهندگان Go در سال ۲۰۲۴ (Go Developer Survey 2024 H1) هم مطرح شده بود.- در طول سالها، پیشنهادات زیادی از جامعه Go برای بهبود سینتکس مدیریت خطاها ارائه شده، از جمله ایدههایی مثل استفاده از عملگر
? برای کاهش کدهای تکراری. اما هیچکدام از این پیشنهادات به اندازه کافی حمایت یا اجماع لازم رو به دست نیاوردن.2. چالشهای موجود:
- مقاله توضیح میده که هنوز درک مشترکی در مورد اینکه آیا مشکل اصلی در سینتکس مدیریت خطاها (syntactic verbosity) هست یا در پیچیدگیهای مدیریت صحیح خطاها (مثل ساخت خطاهای معنادار برای APIها و کاربران) وجود نداره.
- افزودن سینتکس جدید ممکنه باعث بشه کدهای Go از حالت استاندارد و یکپارچه (idiomatic) خارج بشن و توسعهدهندگان رو به استفاده از روشهای جدید مجبور کنه، که با فلسفه طراحی Go (سادگی و اجتناب از روشهای متعدد برای یک کار) سازگار نیست.
3. تصمیم تیم Go:
- تیم Go به این نتیجه رسیده که به جای تمرکز روی تغییرات سینتکسی، بهتره انرژی جامعه و تیم روی بهبودهای دیگه در زبان متمرکز بشه.
- این تصمیم به معنای توقف بررسی پیشنهادات سینتکسی جدید برای مدیریت خطاها و بسته شدن تمام پیشنهادات باز در این زمینهست.
4. تأثیرات و آینده:
- این مقاله تأکید میکنه که تلاشهای جامعه برای بحث در مورد مدیریت خطاها، حتی اگر به تغییر سینتکس منجر نشده، باعث بهبودهای دیگهای در زبان Go و فرآیندهای توسعه اون شده.
- تیم Go امیدواره که در آینده، با درک بهتر از نیازها، راهحلهای مناسبتری برای مدیریت خطاها پیدا بشه، اما فعلاً تمرکز روی این موضوع متوقف شده.
💐 نتیجهگیری:
این مقاله بیشتر یک بیانیه رسمی از تیم Go درباره پایان دادن به بحثهای طولانی در مورد تغییر سینتکس مدیریت خطاها در زبان Go هست. اونا معتقدند که در حال حاضر، سیستم فعلی مدیریت خطاها (بر اساس مقادیر error و بررسی صریح) به اندازه کافی کارآمد هست و نیازی به پیچیدهتر کردن زبان با سینتکسهای جدید نیست.
https://go.dev/blog/error-syntax
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
[ On | No ] syntactic support for error handling - The Go Programming Language
Go team plans around error handling support
🍾1
Forwarded from Laravel News
Replace String Prefixes Precisely with Laravel's replaceStart Method https://laravel-news.com/replaceStart
Laravel News
Replace String Prefixes Precisely with Laravel's replaceStart Method - Laravel News
Laravel's Str::replaceStart method enables precise prefix replacement by modifying strings only when they begin with specific content. This utility excels in URL normalization, path cleanup, and configuration processing where conditional string manipulation…
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰پیدا کردن خطاهای درایورها حین بوت
🔰نمایش درایورهایی که در زمان بوت لینوکس خطا خوردهاند و اجرا نشدهاند را با دستورات زیر پیدا کنید. از فرمتی که نوشتم ایده بگیرید برای بررسی حالت های مختلف
🔹 خطاهای کلی در لاگ کرنل (مربوط به درایور)
🔹 خطاهای مرتبط با ماژولها
🔹 لاگ بوت systemd برای خطاهای درایور
🔹 مشاهده ماژولهای بارگذاری شده
lsmod
نویسنده: حسین سیلانی
اخبار و آموزش های بیشتر در کانال:
https://t.iss.one/linuxtnt
🔰نمایش درایورهایی که در زمان بوت لینوکس خطا خوردهاند و اجرا نشدهاند را با دستورات زیر پیدا کنید. از فرمتی که نوشتم ایده بگیرید برای بررسی حالت های مختلف
🔹 خطاهای کلی در لاگ کرنل (مربوط به درایور)
dmesg | grep -iE "error|fail|unable|could not|driver"
🔹 خطاهای مرتبط با ماژولها
dmesg | grep -i module
🔹 لاگ بوت systemd برای خطاهای درایور
journalctl -b | grep -iE "error|fail|unable|could not|driver"
🔹 مشاهده ماژولهای بارگذاری شده
lsmod
نویسنده: حسین سیلانی
اخبار و آموزش های بیشتر در کانال:
https://t.iss.one/linuxtnt