جاوا اسکریپت زبان عجیبی هست، انحصار فرانتاند وب رو در اختیار داره و کل دنیا ازش استفاده میکنند، ولی هنوز که هنوزه متدی برای تولید عدد رندوم در بازه مشخص نداره و توی همه پروژهها باید از استکاورفلو کپیپیست بشه
هنوز که هنوزه متدی برای shuffle کردن آرایه نداره و باید متد تعریف بشه
هنوز که هنوزه متدی برای انتخاب آیتم رندوم از آرایه نداره و باید متد تعریف بشه
هنوز که هنوزه میشه 🦧 و 🥒 و true و 5 رو باهم جمع کرد
هنوز که هنوزه متد sleep نداره و باید به تایماوت و کالبک بسنده کرد
هنوز که هنوزه متد sort روی آرایه عددی، به صورت استرینگی کار میکنه
هنوز که هنوزه توافقی سر اینکه نفی باید 0 باشه یا false یا null یا undefined یا -1 یا … وجود نداره و ! همه رو شامل میشه
و حتی NaN هم با NaN برابر نیست
و در نهایت بعد از این همه سال، نباید سرچ من هنوز این باشه:
JS generate random number in range
هنوز که هنوزه متدی برای shuffle کردن آرایه نداره و باید متد تعریف بشه
هنوز که هنوزه متدی برای انتخاب آیتم رندوم از آرایه نداره و باید متد تعریف بشه
هنوز که هنوزه میشه 🦧 و 🥒 و true و 5 رو باهم جمع کرد
هنوز که هنوزه متد sleep نداره و باید به تایماوت و کالبک بسنده کرد
هنوز که هنوزه متد sort روی آرایه عددی، به صورت استرینگی کار میکنه
هنوز که هنوزه توافقی سر اینکه نفی باید 0 باشه یا false یا null یا undefined یا -1 یا … وجود نداره و ! همه رو شامل میشه
و حتی NaN هم با NaN برابر نیست
و در نهایت بعد از این همه سال، نباید سرچ من هنوز این باشه:
JS generate random number in range
🔥13
نسخه بتا 4.0.0 از JQuery ریلیز شده که میتونید تغییراتش رو اینجا ببینید
اینکه JQuery نسخه جدید داده واقعا نشون میده که تیماش چقدر پشتکار داره، چون استفاده از JQuery به پایینترین حد خودش رسیده در ده سال اخیر
مثل مقایسه کمپانی های تولید گوشی دکمهای ساده هست، که هنوز OS شون رو آپدیت کنند…
اینکه JQuery نسخه جدید داده واقعا نشون میده که تیماش چقدر پشتکار داره، چون استفاده از JQuery به پایینترین حد خودش رسیده در ده سال اخیر
مثل مقایسه کمپانی های تولید گوشی دکمهای ساده هست، که هنوز OS شون رو آپدیت کنند…
Jquery
jQuery 4.0.0 BETA! | Official jQuery Blog
jQuery: The Write Less, Do More, JavaScript Library
قصد دارم بعد از اتمام پروژه فعلی، برای تفریح یک دوره آموزشی جدید ضبط کنم، بیشتر قصد دارید چه موضوعی باشه؟
Anonymous Poll
42%
ادامه دوره توسعه ربات
56%
دوره توسعه وباپ های TWA برای تلگرام
31%
دوره VueJS
🔥14
مدت کوتاهی میشه که روی MacOS هستم و از اونجایی که ۸ سال اخیر رو تماما روی گنو/لینوکس با i3wm بودم(هنوز هم هستم)، استفاده از MacOS بدون Tiling WM و شورتکاتها و ... این مدت برام واقعا عذابآور بود، تا اینکه بالاخره نرمافزار Yabai و skhd و Karabiner و Raycast رو نصب و کانفیگ کردم
نرمافزار Yabai در اصل شاهکاری هست که Tiling WM رو به MacOS میاره و دقیقا مثل i3wm و سایر Tiling WM ها، پنجرههای شما رو به صورت خودکار (مثل تصویر بالا) مدیریت میکنه
نرمافزار skhd یک سرویس و daemon ساده برای تعریف شورتکات کیبورد هست و نمونه شورتکاتهای تعریف شده رو هم میتونید در تصویر ببینید، در اصل ترکیب skhd با yabai باعث میشه که به لحاظ شورتکات کیبوردی هم به i3wm برسیم
نرمافزار Karabiner یک نرمافزار کامل و پیشرفته برای Remap کردن دکمه های کیبورد هست و سناریو های پیشرفتهای رو ساپورت میکنه، از جمله مفیدترین کارهایی که باهاش کردم دکمه های مسخره Command و Control و Option و ... در MacOS بوده رو تغییر دادم به شکلی که قبلا عادت داشتم
نرمافزار Raycast هم در اصل همون Rofi هست ولی با ظاهر شیک و برای آدم های پولدار (البته ما نسخه رایگانش رو استفاده میکنیم و پولمون نمیرسه)، در اصل یک منوی شناور مثل Rofi هست که میتونید با استفاده از اون اپلیکیشنها و ... تون رو لانچ کنید
در کل، من به این ستاپ جدیدی که با کمک این 4 نرمافزار تونستم کانفیگ کنم، نمره 8 از 10 رو میدم به لحاظ نزدیکی به گنو/لینوکس با i3wm، اگر شما هم روزی ناچار به استفاده از مک شدید میتونید با این نرمافزارها و کانفیگشون خودتون رو نجات بدید
نرمافزار Yabai در اصل شاهکاری هست که Tiling WM رو به MacOS میاره و دقیقا مثل i3wm و سایر Tiling WM ها، پنجرههای شما رو به صورت خودکار (مثل تصویر بالا) مدیریت میکنه
نرمافزار skhd یک سرویس و daemon ساده برای تعریف شورتکات کیبورد هست و نمونه شورتکاتهای تعریف شده رو هم میتونید در تصویر ببینید، در اصل ترکیب skhd با yabai باعث میشه که به لحاظ شورتکات کیبوردی هم به i3wm برسیم
نرمافزار Karabiner یک نرمافزار کامل و پیشرفته برای Remap کردن دکمه های کیبورد هست و سناریو های پیشرفتهای رو ساپورت میکنه، از جمله مفیدترین کارهایی که باهاش کردم دکمه های مسخره Command و Control و Option و ... در MacOS بوده رو تغییر دادم به شکلی که قبلا عادت داشتم
نرمافزار Raycast هم در اصل همون Rofi هست ولی با ظاهر شیک و برای آدم های پولدار (البته ما نسخه رایگانش رو استفاده میکنیم و پولمون نمیرسه)، در اصل یک منوی شناور مثل Rofi هست که میتونید با استفاده از اون اپلیکیشنها و ... تون رو لانچ کنید
در کل، من به این ستاپ جدیدی که با کمک این 4 نرمافزار تونستم کانفیگ کنم، نمره 8 از 10 رو میدم به لحاظ نزدیکی به گنو/لینوکس با i3wm، اگر شما هم روزی ناچار به استفاده از مک شدید میتونید با این نرمافزارها و کانفیگشون خودتون رو نجات بدید
🔥8 3 2 1
یکی از پروژه هایی که باعث میشه پایتون قابل تحملتر بشه برای برنامهنویس هایی مثل من که به {} عادت دارند
https://github.com/mathialo/bython
https://github.com/mathialo/bython
Media is too big
VIEW IN TELEGRAM
همچنین درمورد مفهوم CPU Cache و Burst Length و چند تا چیزمیز مشابه دیگه صحبت میکنیم
پ.ن: فرایند ضبط ویدیو رو سعی کردم سادهتر کنم و دستانداز های مسیر رو کمتر کنم تا ویدیوهای بیشتری بتونم ضبط کنم، از بابت کیفیت متوسط صدا و عدم ادیت مناسب پیشاپیش دلجویی میکنم
Please open Telegram to view this post
VIEW IN TELEGRAM
ظاهرا اپل اخیرا یک پروژه اوپن سورس جدیدی رو منتشر کرده به اسم PKL که مخفف Pickle یا همون خیارشور هست
یک استاندارد جدید هست برای تعریف فایل های کانفیگ، با بهرهگیری از قابلیت هایی مثل متغیر و شرط و حلقه و تایپچک و ...
در واقع، بیشتر شبیه یک transpiler هست که ورودی رو به سینتکس خودش میگیره و خروجی رو به صورت JSON یا Yaml یا XML یا ... ترنسپایل میکنه و تحویل میده
آیا چیز جدید و انقلابیای هست؟ قطعا نه، صرفا برای استفاده درونسازمانی خودشون بوده و تصمیم گرفتند اوپنسورس کنند
داخلش هم الگوبرداری هایی از Typenoscript و Zod دیده میشه برای تایپسیف بودن و تایپچک، که کمی آشناتر میکنه این ابزار رو برای دولوپر های جاوا اسکریپت
دوست داشتید میتونید سینتکساش رو یاد بگیرید و استفاده کنید، برای من تنها نکته مثبتش اینه که اپل هم کمکم داره به سمت اوپنسورس کردن پیش میره و نشونه خوبی هست
pkl-lang.org/
یک استاندارد جدید هست برای تعریف فایل های کانفیگ، با بهرهگیری از قابلیت هایی مثل متغیر و شرط و حلقه و تایپچک و ...
در واقع، بیشتر شبیه یک transpiler هست که ورودی رو به سینتکس خودش میگیره و خروجی رو به صورت JSON یا Yaml یا XML یا ... ترنسپایل میکنه و تحویل میده
آیا چیز جدید و انقلابیای هست؟ قطعا نه، صرفا برای استفاده درونسازمانی خودشون بوده و تصمیم گرفتند اوپنسورس کنند
داخلش هم الگوبرداری هایی از Typenoscript و Zod دیده میشه برای تایپسیف بودن و تایپچک، که کمی آشناتر میکنه این ابزار رو برای دولوپر های جاوا اسکریپت
دوست داشتید میتونید سینتکساش رو یاد بگیرید و استفاده کنید، برای من تنها نکته مثبتش اینه که اپل هم کمکم داره به سمت اوپنسورس کردن پیش میره و نشونه خوبی هست
pkl-lang.org/
احتمالا شما هم مثل من کانال ElectroBoom رو در یوتیوب سابسکرایب دارید، یا حداقل یکی از ویدیو های این شخص رو دیدید
معمولا توی همه ویدیوهاش هم یک برق گرفتگی جذابی داره
حالا نکته جالب اینجاست که با این ویدیو از BBC متوجه شدم که ایشون ایرانی-کانادایی هستند و مصاحبهشون هم فارسی هست، توصیه میکنم ببینید
و مورد بعدی هم این هست که، ایشون با ۷ میلیون سابسکرایبر توی یوتیوب، فکر کنم بزرگترین یوتیوبر ایرانی ایشون هستند، نه چرندیاتی مثل …
https://youtu.be/c9oqAbaXisg
معمولا توی همه ویدیوهاش هم یک برق گرفتگی جذابی داره
حالا نکته جالب اینجاست که با این ویدیو از BBC متوجه شدم که ایشون ایرانی-کانادایی هستند و مصاحبهشون هم فارسی هست، توصیه میکنم ببینید
و مورد بعدی هم این هست که، ایشون با ۷ میلیون سابسکرایبر توی یوتیوب، فکر کنم بزرگترین یوتیوبر ایرانی ایشون هستند، نه چرندیاتی مثل …
https://youtu.be/c9oqAbaXisg
به مناسبت ریلیز شدن نسخه 1.1 از BunJS، روی سیستم نصب کردمش و یک بنچمارکی ازش گرفتم در مقایسه با OpenSwoole عزیز که در عکس بالا میتونیم ببینیم
در حالت بنچمارک Single Thread:
بان: 220 هزار درخواست بر ثانیه
اوپنسوله: 148 هزار درخواست بر ثانیه
در حالت بنچمارک 8 ترد:
بان: 146 هزار درخواست بر ثانیه
اوپنسوله: 166 هزار درخواست بر ثانیه
در حالت کلی، نزدیک به هم هستند و نکته خندهدار این هست که کل دنیا و JS کارها بابت پرفرمنس Bun هایپ شدند و معتقدند یه چیز انقلابی هست، با این وجود OpenSwoole ای که ده ساله همین پرفرمنس رو میده یه عده معتقدن PHP مرده😏
پ.ن: این پست رو سومین بار هست که میفرستم، دو بار قبلی تصویر اشتباهی فرستاده بودم
پ.ن۲: طبیعی هست که پرفرمنس JS در حالت سینگل ترد بالاتر باشه چون خودش هم تک ترد Async هست و مولتی Instance نیست
پ.ن۳: انقدر باگ ZeroDay و مشکلات امنیتی و ... توی این هفته اخیر توی دنیا تکنولوژی پیدا شده، که نمیدونم از کدوم بنویسم، خودتون برید بخونید
در حالت بنچمارک Single Thread:
بان: 220 هزار درخواست بر ثانیه
اوپنسوله: 148 هزار درخواست بر ثانیه
در حالت بنچمارک 8 ترد:
بان: 146 هزار درخواست بر ثانیه
اوپنسوله: 166 هزار درخواست بر ثانیه
در حالت کلی، نزدیک به هم هستند و نکته خندهدار این هست که کل دنیا و JS کارها بابت پرفرمنس Bun هایپ شدند و معتقدند یه چیز انقلابی هست، با این وجود OpenSwoole ای که ده ساله همین پرفرمنس رو میده یه عده معتقدن PHP مرده
پ.ن: این پست رو سومین بار هست که میفرستم، دو بار قبلی تصویر اشتباهی فرستاده بودم
پ.ن۲: طبیعی هست که پرفرمنس JS در حالت سینگل ترد بالاتر باشه چون خودش هم تک ترد Async هست و مولتی Instance نیست
پ.ن۳: انقدر باگ ZeroDay و مشکلات امنیتی و ... توی این هفته اخیر توی دنیا تکنولوژی پیدا شده، که نمیدونم از کدوم بنویسم، خودتون برید بخونید
Please open Telegram to view this post
VIEW IN TELEGRAM
این ویدیو رو توصیه میکنم حتما ببینید، یک ویدیو با کیفیت و ارزشمند به تمام معناست، هم به لحاظ محتوایی و هم داستانی و اجرایی واقعا خوبه
موضوع ویدیو هم درباره پورت کردن Dot Net Framework برای ویندوز 95 هست، کاری که خود مایکروسافت از روی تنبلی یا … بیخیالش شد و ساپورت دات نت از ویندوز 98 به بعد شروع شد
https://youtu.be/CTUMNtKQLl8
موضوع ویدیو هم درباره پورت کردن Dot Net Framework برای ویندوز 95 هست، کاری که خود مایکروسافت از روی تنبلی یا … بیخیالش شد و ساپورت دات نت از ویندوز 98 به بعد شروع شد
https://youtu.be/CTUMNtKQLl8
YouTube
I ported THOUSANDS of apps to Windows 95
▶VOTE for my NEXT PROJECT: https://www.patreon.com/posts/march-2024-poll-101363953
▶dotnet9x on GitHub: https://github.com/itsmattkc/dotnet9x
▶FOLLOW on Twitter: https://twitter.com/itsmattkc
▶FOLLOW on Twitch: https://twitch.tv/mattkclive
▶FOLLOW on…
▶dotnet9x on GitHub: https://github.com/itsmattkc/dotnet9x
▶FOLLOW on Twitter: https://twitter.com/itsmattkc
▶FOLLOW on Twitch: https://twitch.tv/mattkclive
▶FOLLOW on…
سورسکد MS-DOS نسخه های 1.25 و 2.0 و 4.0 توی گیتهاب به صورت اوپنسورس منتشر شده
اکثریت سورسکد با اسمبلی هست و منم چیز زیادی ازش متوجه نشدم، ولی خب تلاش برای خوندن و فهمیدنش میتونه تفریح خوبی باشه
https://github.com/microsoft/MS-DOS
اکثریت سورسکد با اسمبلی هست و منم چیز زیادی ازش متوجه نشدم، ولی خب تلاش برای خوندن و فهمیدنش میتونه تفریح خوبی باشه
https://github.com/microsoft/MS-DOS
GitHub
GitHub - microsoft/MS-DOS: The original sources of MS-DOS 1.25, 2.0, and 4.0 for reference purposes
The original sources of MS-DOS 1.25, 2.0, and 4.0 for reference purposes - microsoft/MS-DOS
ظاهرا یک نفر بر بستر بلاکچین بیتکوین، برای انتقال 6 دلار، حدود 100 هزار دلار کمیسیون داده، تنها حدسی که میشه زد اینه که جای فیلد های Amount و Fee رو اشتباه زده 😅
دفعه بعدی که احساس کردید بدشانس هستید، یاد این بیوفتید که برای انتقال 300 هزار تومن، حدود 6 میلیارد تومن کارمزد انتقال ندادید😵💫
لینک تراکنش
دفعه بعدی که احساس کردید بدشانس هستید، یاد این بیوفتید که برای انتقال 300 هزار تومن، حدود 6 میلیارد تومن کارمزد انتقال ندادید
لینک تراکنش
Please open Telegram to view this post
VIEW IN TELEGRAM
| Erfan's Notes | via @DevelopixBot
⭕️ دوره آموزش برنامهنویسی ربات تلگرام 💠 در این دوره به آموزش رباتنویسی تلگرام میپردازیم، از مباحث پایه و عمومی شروع میکنیم و مفاهیم رو یاد میگیریم، بعد یک ربات کامل رو پیادهسازی میکنیم.
دوره برنامهنویسی ربات تلگرام که پارسال ضبط کرده بودم رو به صورت کالکشن ربات دولوپیکس درآوردم که دسترسی بهش راحتتر باشه
با توجه به این نظرسنجی که کردیم، احتمال نزدیک بهزودی دوره ساخت مینیاپ تلگرام رو ضبط و منتشر میکنم، اگر پیشنهادی داشتید بگید
با توجه به این نظرسنجی که کردیم، احتمال نزدیک بهزودی دوره ساخت مینیاپ تلگرام رو ضبط و منتشر میکنم، اگر پیشنهادی داشتید بگید
| Erfan's Notes | via @DevelopixBot
⭕️ دوره آموزش Spline 💠 دوره آموزش نرمافزار طراحی سهبعدی اسپلاین (Spline) با محوریت طراحی وبسایت سهبعدی
دوره آموزش اسپلاین (طراحی وب سهبعدی) که حدود دو سال پیش ضبط کرده بودم رو منتشر کردم و میتونید در کالکشن بالا ببینید
Please open Telegram to view this post
VIEW IN TELEGRAM
من معمولا اکثر زبانهایی که بهصورت روزمره باهاشون سر و کار دارم، مفسری هستند، احتمالا شما هم JS و PHP و Python و زبان های مفسری مشابه کار میکنید
همونطور که میدونید، من طرفدار شدید پرفورمنس و بهینهسازی کد هستم و حتی پست هایی هم درمورد بنچمارک بین فریمورکها و زبانها گذاشتم قبلا که در اونها:
سناریوی فرضی ما برای بنچمارک، یک سایت هست که IO داره و Database داره و Network داره، در واقع اکثر زمانی که تلف میکنه سر IO Bound Task ها هست همونطوری که توی این پست هم توضیح دادم
ولی اخیرا برای یک پروژهای به یک تسکی خوردیم که CPU Bound خیلی سنگین بود و Memory Bound هم بود، در واقع نیاز داشتیم که روی دیتاست با حجم 12M شهر/روستا iterate کنیم و نسبت به زبان کشور، از بین 20M اسم که به زبانهای مختلف برای اون شهر/روستا بود، اسم محلیاش رو پیدا کنیم
این رو من با دیتاست کوچکتری که فقط برای ایران بود 200K شهر/روستا و 200K هم اسم متناظر، من با PHP نوشتم و نتیجه معقول بود و حدود 10-12 ثانیه طول میکشید
ولی برای اینکه IO به صورت Async باشه با JS بازنویسی کردم و به 7-8 ثانیه رسیدم با دیتای 200K x 200K
حالا وقتش بود که با دیتاست 20M x 12M تست کنیم، نهایتا باید 10-15 دقیقه طول میکشید، درسته؟ نه! طبق محاسباتی که کردیم، حدود 3-4 روز طول میکشید تا بتونه این دیتا رو بخونه و پارس کنه و مپ کنه و فیلتر کنه و اسم متناظر رو پیدا کنه🤣
اینجا بود که یکی از دوست های Rust کارم به دادم رسید و با زبان کامپایلری Rust، همون کد JS ای که نوشته بودم رو با Rust بازنویسی کرد، نتیجه به نظرتون چی شد؟ از 3-4 روز به 10 ثانیه کاهش پیدا کرد☺️
البته بازنویسیای که کرد، بسیاری از مفاهیم رو به شکل بهینهتری در سطوح پایین هندل کرد و خیلی از بارها و overhead ها رو برداشت، مثلا در نسخه JS مصرف رم حدود 24GB رسیده بود بعد از دوساعت اجرا، ولی نسخه Rust کلا 4GB رم مصرف میکرد و کلا 10 ثانیه طول میکشید روی دیتاست کامل🎉
نتیجه ماجرا این هست که حس میکنم کمکم باید یک زبان کامپایلری هم به چرخه زبان هایی که روزمره باهاشون کار میکنیم، اضافه کنیم چون واقعا تفاوت خیلی خیلی زیادی هست در کارهای CPU Bound بینشون، تفاوتی مثل ۳-۴ روز و ۱۰ ثانیه😎
همونطور که میدونید، من طرفدار شدید پرفورمنس و بهینهسازی کد هستم و حتی پست هایی هم درمورد بنچمارک بین فریمورکها و زبانها گذاشتم قبلا که در اونها:
سناریوی فرضی ما برای بنچمارک، یک سایت هست که IO داره و Database داره و Network داره، در واقع اکثر زمانی که تلف میکنه سر IO Bound Task ها هست همونطوری که توی این پست هم توضیح دادم
ولی اخیرا برای یک پروژهای به یک تسکی خوردیم که CPU Bound خیلی سنگین بود و Memory Bound هم بود، در واقع نیاز داشتیم که روی دیتاست با حجم 12M شهر/روستا iterate کنیم و نسبت به زبان کشور، از بین 20M اسم که به زبانهای مختلف برای اون شهر/روستا بود، اسم محلیاش رو پیدا کنیم
این رو من با دیتاست کوچکتری که فقط برای ایران بود 200K شهر/روستا و 200K هم اسم متناظر، من با PHP نوشتم و نتیجه معقول بود و حدود 10-12 ثانیه طول میکشید
ولی برای اینکه IO به صورت Async باشه با JS بازنویسی کردم و به 7-8 ثانیه رسیدم با دیتای 200K x 200K
حالا وقتش بود که با دیتاست 20M x 12M تست کنیم، نهایتا باید 10-15 دقیقه طول میکشید، درسته؟ نه! طبق محاسباتی که کردیم، حدود 3-4 روز طول میکشید تا بتونه این دیتا رو بخونه و پارس کنه و مپ کنه و فیلتر کنه و اسم متناظر رو پیدا کنه
اینجا بود که یکی از دوست های Rust کارم به دادم رسید و با زبان کامپایلری Rust، همون کد JS ای که نوشته بودم رو با Rust بازنویسی کرد، نتیجه به نظرتون چی شد؟ از 3-4 روز به 10 ثانیه کاهش پیدا کرد
البته بازنویسیای که کرد، بسیاری از مفاهیم رو به شکل بهینهتری در سطوح پایین هندل کرد و خیلی از بارها و overhead ها رو برداشت، مثلا در نسخه JS مصرف رم حدود 24GB رسیده بود بعد از دوساعت اجرا، ولی نسخه Rust کلا 4GB رم مصرف میکرد و کلا 10 ثانیه طول میکشید روی دیتاست کامل
نتیجه ماجرا این هست که حس میکنم کمکم باید یک زبان کامپایلری هم به چرخه زبان هایی که روزمره باهاشون کار میکنیم، اضافه کنیم چون واقعا تفاوت خیلی خیلی زیادی هست در کارهای CPU Bound بینشون، تفاوتی مثل ۳-۴ روز و ۱۰ ثانیه
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from TechTube 𝕏 تک توب
گوگل در نسخه 128 مرورگر کروم که در حال حاضر ازمایشی هست، نسخه کوچکی از هوش مصنوعی Gemini رو قرار داده که به صورت افلاین و روی خود دستگاه اجرا میشه و به توسعه دهندگان سایتها امکان استفاده از این مدل رو به صورت مجانی برای کاربردهایی مثل ترجمه، خلاصه سازی و دیگر سوالات به نسبت ساده رو میده.
🔎 mortenjust
📍 @TechTube
🔎 mortenjust
📍 @TechTube