خب بریم سراغ تست سرعت اجرای پایتون و mojo در برنامه ی fibonacci .
اینجا ما کد پایتون و mojo رو داریم که یک برنامه ی fibonacci را با فرمول:
موقع نوشتن کدش توی mojo متوجه شدم هنوز این زبان خیلی ناقصه و بر خلاف تبلیغاتی که براش انجام شده هنوز نمیشه توی محیط واقعی ازش استفاده کرد. مثلا موقع استفاده از print توی mojo شما نمیتونید از keyword ها مثل پایتون استفاده کنید و با خطای:
اما بریم سراغ سرعت اجرا:
Python:
و بله پایتون اینجا داره بهتر عمل میکنه :)
🆔 @MdDaily
اینجا ما کد پایتون و mojo رو داریم که یک برنامه ی fibonacci را با فرمول:
Fn = Fn-1 + Fn-2
اجرا می کنند موقع نوشتن کدش توی mojo متوجه شدم هنوز این زبان خیلی ناقصه و بر خلاف تبلیغاتی که براش انجام شده هنوز نمیشه توی محیط واقعی ازش استفاده کرد. مثلا موقع استفاده از print توی mojo شما نمیتونید از keyword ها مثل پایتون استفاده کنید و با خطای:
keyword arguments are not supported yet
مواجه میشید. اما بریم سراغ سرعت اجرا:
Python:
python fib.py 0.02s user 0.01s system 97% cpu 0.031 total
Mojo:mojo fib.mojo 0.09s user 0.03s system 114% cpu 0.102 total و بله پایتون اینجا داره بهتر عمل میکنه :)
🆔 @MdDaily
👍1🔥1🍾1
Md Daily
خب بریم سراغ تست سرعت اجرای پایتون و mojo در برنامه ی fibonacci . اینجا ما کد پایتون و mojo رو داریم که یک برنامه ی fibonacci را با فرمول: Fn = Fn-1 + Fn-2 اجرا می کنند موقع نوشتن کدش توی mojo متوجه شدم هنوز این زبان خیلی ناقصه و بر خلاف تبلیغاتی که…
💡 نتیجه
بعد از اینکه با دستور :
Mojo executable :
- آیا mojo میتونه جای پایتون رو بگیره؟
جواب کوتاه: نه
خیلی پروژه های بزرگ هوش مصنوعی و آنالیز داده با پایتون نوشته شدن و اگه قرار باشه به mojo مهاجرت کنند، مجبورن خیلی بازنویسی کنند و هزینه و زمان زیادی را صرف کنند
- آیا mojo واقعا از پایتون سریع تره؟
جواب کوتاه: هم آره هم نه
در حالت عادی پایتون از mojo سریع تره ولی بعد از گرفتن خروجی در mojo سرعت برنامه ای که با mojo نوشته شده از پایتون بیشتر میشه
- آیا منی که پایتون بلدم یعنی mojo هم بلدم؟
جواب کوتاه: تقریبا نه
با مراجعه به مستندات mojo میتونید ببیند که چه قدر نوشتن برنامه در پایتون و mojo متفاوته و قواعد این زبان ها مثل هم نیستند . mojo روی کاغذ سینتکسش شبیه پایتونه ولی در عمل خیلی متفاوته .
- آیا mojo با اکوسیستم پایتون کاملا سازگاره؟
جواب کوتاه: بستگی داره
برای استفاده از پکیج های پایتونی تو mojo باید پکیج python را صدا بزنید که پکیج پایتون mojo برای شما چیزی که مد نظرتونه رو import کنه مثلا برای استفاده از numpy :
- آيا mojo متن بازه؟
نه!
قرار نیست هر چیز جدیدی که میاد جایگزین زبان های قبلی بشه . مثل چند وقت پیش که زبان carbon خیلی سروصدا کرد و الان میبینیم ازش هیچ خبری نیست
خلاصه اینکه خوبه چیز های جدید را امتحان کنید و یاد بگیرید ولی خیلی درگیر جو ترند ها نشید :)
🆔 @MdDaily
بعد از اینکه با دستور :
mojo build fib.mojo
برنامه را بیلد کردم و مجدد تست گرفتم سرعت اجرایی به طرز چشمگیری افزایش پیدا کرد :Mojo executable :
./fib 0.00s user 0.00s system 84% cpu 0.003 total
اما چیزی که تا اینجای کار مشخصه اینکه mojo صرفا سینتکسش شبیه پایتون هستش و اگر شما یک برنامه ای دارید که با پایتون نوشتید و قصد داشته باشید با mojo ازش خروجی بگیرید این کار بدون بازنویسی بخش های زیادی از پروژه ی شما فعلا غیر ممکنه و mojo خیلی با built in های پایتونی سازگار نیست و داره مسیر جدا گونه ایو دنبال میکنه. - آیا mojo میتونه جای پایتون رو بگیره؟
جواب کوتاه: نه
خیلی پروژه های بزرگ هوش مصنوعی و آنالیز داده با پایتون نوشته شدن و اگه قرار باشه به mojo مهاجرت کنند، مجبورن خیلی بازنویسی کنند و هزینه و زمان زیادی را صرف کنند
- آیا mojo واقعا از پایتون سریع تره؟
جواب کوتاه: هم آره هم نه
در حالت عادی پایتون از mojo سریع تره ولی بعد از گرفتن خروجی در mojo سرعت برنامه ای که با mojo نوشته شده از پایتون بیشتر میشه
- آیا منی که پایتون بلدم یعنی mojo هم بلدم؟
جواب کوتاه: تقریبا نه
با مراجعه به مستندات mojo میتونید ببیند که چه قدر نوشتن برنامه در پایتون و mojo متفاوته و قواعد این زبان ها مثل هم نیستند . mojo روی کاغذ سینتکسش شبیه پایتونه ولی در عمل خیلی متفاوته .
- آیا mojo با اکوسیستم پایتون کاملا سازگاره؟
جواب کوتاه: بستگی داره
برای استفاده از پکیج های پایتونی تو mojo باید پکیج python را صدا بزنید که پکیج پایتون mojo برای شما چیزی که مد نظرتونه رو import کنه مثلا برای استفاده از numpy :
from python import Pythonو خب اینجا داره پایتون اجرا میشه و خروجی mojo هم دیگه سرعتی که انقدر داره دربارش تبلیغ میشه رو نداره.
# This is equivalent to Python's `import numpy as np`
let np = Python.import_module("numpy")
- آيا mojo متن بازه؟
نه!
قرار نیست هر چیز جدیدی که میاد جایگزین زبان های قبلی بشه . مثل چند وقت پیش که زبان carbon خیلی سروصدا کرد و الان میبینیم ازش هیچ خبری نیست
خلاصه اینکه خوبه چیز های جدید را امتحان کنید و یاد بگیرید ولی خیلی درگیر جو ترند ها نشید :)
🆔 @MdDaily
👍4
🔸 خیلی از تصمیمهای ما بر اساس ترس و شک هستن و ترسهامون اقدامات و کارهای ما رو تحت تأثیر قرار میدن. مثلاً ممکنه دلمون بخواد که حوزه کاریمون رو تغییر بدیم، ولی با خودمون فکر میکنیم نکنه دیر باشه یا نتونم موفق بشم؟
🔹و همین ترس و شک باعث میشه این کار رو انجام ندیم. در واقع ما به جای اینکه دلیلی برای انجام کار پیدا کنیم، دنبال دلیلی هستیم که اون کار رو انجام ندیم.
🔸اشتباه کردن یه اتفاق اجتنابناپذیره، همینطور احساس ترس یا شک؛ اما آیا این موضوع به این معنیه که اگر جایی ترسیدیم یا شک داشتیم نباید ادامه بدیم؟ اصلاً این طور نیست. اما چطور میتونیم به این ترس غلبه کنیم؟ در ادامه ۵ راهکاری که بهمون توی این کار کمک میکنه رو توضیح دادیم.
<TechRasa>
🆔 @MdDaily
🔹و همین ترس و شک باعث میشه این کار رو انجام ندیم. در واقع ما به جای اینکه دلیلی برای انجام کار پیدا کنیم، دنبال دلیلی هستیم که اون کار رو انجام ندیم.
🔸اشتباه کردن یه اتفاق اجتنابناپذیره، همینطور احساس ترس یا شک؛ اما آیا این موضوع به این معنیه که اگر جایی ترسیدیم یا شک داشتیم نباید ادامه بدیم؟ اصلاً این طور نیست. اما چطور میتونیم به این ترس غلبه کنیم؟ در ادامه ۵ راهکاری که بهمون توی این کار کمک میکنه رو توضیح دادیم.
<TechRasa>
🆔 @MdDaily
👍1
Md Daily
🔸 خیلی از تصمیمهای ما بر اساس ترس و شک هستن و ترسهامون اقدامات و کارهای ما رو تحت تأثیر قرار میدن. مثلاً ممکنه دلمون بخواد که حوزه کاریمون رو تغییر بدیم، ولی با خودمون فکر میکنیم نکنه دیر باشه یا نتونم موفق بشم؟ 🔹و همین ترس و شک باعث میشه این کار رو…
۱)اهداف کمریسک رو انتخاب نکنین
اهدافتون رو خارج از منطقه امنتون انتخاب کنین. اگه اهدافتان در چارچوب منطقه امنتون باشه، در این صورت شکست خیلی معنا نخواهد داشت.
شکست خوردن در منطقه امن در واقع راهی هوشمندانه برای عقب نگه داشتن خودتون و حفظ وضعیت موجوده. اگه هیچوقت احساس ناراحتی نمیکنین، پس احتمالاً چیز جدیدی رو امتحان نکردین.
۲)کسی منتظر شما نیست!
ممکنه موفق بشین یا شکست بخورین؛ اما در بیشتر موارد هیچکس به موفقیت یا شکست شما اهمیتی نمیده. دنیا بسیار بزرگ و ما کوچک هستیم. این به این معنیه که میتونیم رویاهامون رو با اندک نگرانی از اینکه دیگران چی فکر میکنن، دنبال کنیم.
۳) شروع کنین، حتی اگه نقطه شروعتون رو دوست ندارین!
احساس ترس و عدم اطمینان باعث میشه فکر کنیم که آماده نیستیم و به خودمون میگیم «قبل از شروع کسبوکارم باید این مدرک رو بگیرم» یا «باید قبل از مسابقه بیشتر تمرین کنم»
برای همین خیلی مهمه که حتماً شروع و سعی کنین در ادامه ایرادهاتون رو رفع کنین.
۴) اتفاقهایی رو که قطعی نیستن رو قطعی ندونین!
چه کسی گفته که قراره شکست بخورین؟ این که یه نفر یا یکی از دوستان ما در یک مسیری شکست خورده به این معنی نیست که شما هم شکست میخورین.
شما محکوم به شکست خوردن نیستین؛ در واقع شاید تقدیر شما در موفقیت باشه. جوری رفتار نکنین که انگار شکستتون قطعیه، چون نیست.
۵) تنها شکست واقعی، هیچ کاری انجام ندادن!
همه ما با احساسهایی مانند ترس، عدم اطمینان و آسیبپذیری سروکار داریم. متأسفانه بسیاری از ما اجازه میدیم تا این احساسات روی اقدامات و فعالیتهامون تأثیر بذارن.
به همین دلیل لازم نیست که در کاری که انجام میدین عالی باشین، کافیه که تصمیم بگیرین و عمل کنین؛ همین کار شما رو متمایز میکنه. شما میتونین با انجام کارهایی که اکثر مردم برای انجام ندادن اون بهانه مییارن، به موفقیتهای بسیاری برسین.
<TechRasa>
🆔 @MdDaily
اهدافتون رو خارج از منطقه امنتون انتخاب کنین. اگه اهدافتان در چارچوب منطقه امنتون باشه، در این صورت شکست خیلی معنا نخواهد داشت.
شکست خوردن در منطقه امن در واقع راهی هوشمندانه برای عقب نگه داشتن خودتون و حفظ وضعیت موجوده. اگه هیچوقت احساس ناراحتی نمیکنین، پس احتمالاً چیز جدیدی رو امتحان نکردین.
۲)کسی منتظر شما نیست!
ممکنه موفق بشین یا شکست بخورین؛ اما در بیشتر موارد هیچکس به موفقیت یا شکست شما اهمیتی نمیده. دنیا بسیار بزرگ و ما کوچک هستیم. این به این معنیه که میتونیم رویاهامون رو با اندک نگرانی از اینکه دیگران چی فکر میکنن، دنبال کنیم.
۳) شروع کنین، حتی اگه نقطه شروعتون رو دوست ندارین!
احساس ترس و عدم اطمینان باعث میشه فکر کنیم که آماده نیستیم و به خودمون میگیم «قبل از شروع کسبوکارم باید این مدرک رو بگیرم» یا «باید قبل از مسابقه بیشتر تمرین کنم»
برای همین خیلی مهمه که حتماً شروع و سعی کنین در ادامه ایرادهاتون رو رفع کنین.
۴) اتفاقهایی رو که قطعی نیستن رو قطعی ندونین!
چه کسی گفته که قراره شکست بخورین؟ این که یه نفر یا یکی از دوستان ما در یک مسیری شکست خورده به این معنی نیست که شما هم شکست میخورین.
شما محکوم به شکست خوردن نیستین؛ در واقع شاید تقدیر شما در موفقیت باشه. جوری رفتار نکنین که انگار شکستتون قطعیه، چون نیست.
۵) تنها شکست واقعی، هیچ کاری انجام ندادن!
همه ما با احساسهایی مانند ترس، عدم اطمینان و آسیبپذیری سروکار داریم. متأسفانه بسیاری از ما اجازه میدیم تا این احساسات روی اقدامات و فعالیتهامون تأثیر بذارن.
به همین دلیل لازم نیست که در کاری که انجام میدین عالی باشین، کافیه که تصمیم بگیرین و عمل کنین؛ همین کار شما رو متمایز میکنه. شما میتونین با انجام کارهایی که اکثر مردم برای انجام ندادن اون بهانه مییارن، به موفقیتهای بسیاری برسین.
<TechRasa>
🆔 @MdDaily
👍1🔥1
حالا که بحث اپل داغه بذارید یه حقیقت رو درمورد iOS بهتون بگم:
توی آیفون و آیپد، مرورگری به جز سافاری وجود نداره
حتی کروم و فایرفاکس و edge هم اونجا در حقیقت سافاری هستن، فقط ادای یه مرورگر دیگه رو درمیارن!
قضیه از این قراره که اپل فقط اجازه میده یک انجین خاص به اسم WebKit روی iOS ران بشه. کار این browser engine خیلی خلاصه اینه که کد وبسایت رو بخونه و براساس اون، صفحات رو رندر کنه و به یوزر نشون بده
بخاطر این محدودیت، شرکتهای دیگه نمیتونن از انجین خودشون توی iOS استفاده کنن
توی حالت عادی، گوگل از یه انجین به اسم Blink استفاده میکنه
و فایرفاکس هم انجین خاص خودش به اسم Gecko رو داره
اما وقتی که پای iOS درمیون میاد، WebKit به تنها گزینه تبدیل میشه
البته شرکتهای سازنده مرورگرها میتونن یه سری تغییرات جزئی توی انجین ایجاد کنن اما طبیعتا دستشون خیلی باز نیست
در نتیجه، کروم یا فایرفاکسی که روی iOS میبینید، در حقیقت همون سافاریه که چادر گلگلی تنش کرده و اون زیر داره به ریش دولوپر و یوزر میخنده
نکته تکمیلی: این قضیه فقط توی iOS وجود داره و برای macOS شرکتها میتونن از انجین خودشون استفاده کنن و محدودیتی در کار نیست
<Erfan.tsx>
🆔 @MdDaily
توی آیفون و آیپد، مرورگری به جز سافاری وجود نداره
حتی کروم و فایرفاکس و edge هم اونجا در حقیقت سافاری هستن، فقط ادای یه مرورگر دیگه رو درمیارن!
قضیه از این قراره که اپل فقط اجازه میده یک انجین خاص به اسم WebKit روی iOS ران بشه. کار این browser engine خیلی خلاصه اینه که کد وبسایت رو بخونه و براساس اون، صفحات رو رندر کنه و به یوزر نشون بده
بخاطر این محدودیت، شرکتهای دیگه نمیتونن از انجین خودشون توی iOS استفاده کنن
توی حالت عادی، گوگل از یه انجین به اسم Blink استفاده میکنه
و فایرفاکس هم انجین خاص خودش به اسم Gecko رو داره
اما وقتی که پای iOS درمیون میاد، WebKit به تنها گزینه تبدیل میشه
البته شرکتهای سازنده مرورگرها میتونن یه سری تغییرات جزئی توی انجین ایجاد کنن اما طبیعتا دستشون خیلی باز نیست
در نتیجه، کروم یا فایرفاکسی که روی iOS میبینید، در حقیقت همون سافاریه که چادر گلگلی تنش کرده و اون زیر داره به ریش دولوپر و یوزر میخنده
نکته تکمیلی: این قضیه فقط توی iOS وجود داره و برای macOS شرکتها میتونن از انجین خودشون استفاده کنن و محدودیتی در کار نیست
<Erfan.tsx>
🆔 @MdDaily
🗿2😐1🆒1😡1
ابزار JsonCrack خیلی جالبه. از فایل های جیسونی که خوندنشون سخته براتون مثله تصویر پست یه دیاگرام تولید میکنه که میتونید ازش خروجی تصویری بگیرید.
علاوه بر JSON از YAML، XML و CSV هم پشتیبانی میکنه و برای vscode هم اکستنشن داره .
لینک گیت هاب پروژه:
https://github.com/AykutSarac/jsoncrack.com
وبسایت پروژه:
https://jsoncrack.com/
🆔 @MdDaily
علاوه بر JSON از YAML، XML و CSV هم پشتیبانی میکنه و برای vscode هم اکستنشن داره .
لینک گیت هاب پروژه:
https://github.com/AykutSarac/jsoncrack.com
وبسایت پروژه:
https://jsoncrack.com/
🆔 @MdDaily
👍4🍌2🌭1🦄1
💡 توی این مدتی که اولین نسخه ی پایدار Bun منتشر شد و باز هم یه ابزار جدید به اکو سیستم جاوا اسکریپت اضافه شد و کلی سروصدا کرد، تصمیم گرفتم توی این پست Deno, Bun و NodeJs رو باهم مقایسه کنم و ببینیم هرکدوم چه مزیت هایی دارن و اصلا چرا وجود دارن
خب قبل از اینکه بریم این ابزار ها را باهم مقایسه کنیم، اول بریم سراغ اینکه چرا اینها وجود دارند و چه مشکلی رو حل می کنند؟
تا قبل از اومدن nodeJS، ابزار هایی وجود داشتند که به توسعه دهندگان اجازه می دادند خارج از مرورگر هم کد های جاوا اسکریپت خودشون را اجرا کنند اما با دسترسی ها و امکانات محدود پس در نتیجه نیاز به یه ران تایمی حس میشد که این مشکلات رو حل کنه و استفاده از جاوا اسکریپت رو خارج از مرورگر عمومی کنه. اتفاقی که تو پشت صحنه میوفتاد و الانم میفوته اینکه کد های جاوا اسکریپتی که شما می نویسید توی مرورگر های کرومیوم بیس توسط یه انجینی بنام V8 تفسیر و اجرا میشند. این انجین با زبان c++ نوشته شده و متن بازم هست. سال 2009 یه شخصی بنام Ryan Dahl اومد انجین V8 رو گذاشت تویه برنامه ای که با c++ نوشته بود که بتونه جاوا اسکریپت رو خارج از محیط مرورگر هم اجرا کنه و ویژگی های جدیدی را هم بهش اضافه کرد و اونجا بود که nodeJs متولد شد و این ایده که از جاوا اسکریپت توی بکند، دسکتاپ موبایل و... هم استفاده بشه و فقط محدود به مرورگر نباشه شکل گرفت. پس به طور کلی ران تایم های جاوا اسکریپتی مثله Deno, Bun و NodeJs اومدن تا به ما این امکان را بدن از جاوا اسکریپت خارج از محیط مرورگر استفاده کنیم.
خب سوالی که پیش میاد اینه NodeJs داره کارش رو به خوبی انجام میده و محبوب ترین ران تایم جاوا اسکریپتم هست، پس چرا Deno و Bun وجود دارند؟
نود جی اس با تمام ویژگی های خوبی که داره و محبوبیت زیادش اما همچنان پرفورمنس فوق العاده ای نداره و به صورت پیش فرض از تایپ اسکریپت پشتیبانی نمیکنه . چند سال بعد از انتشار NodeJs سازندش تصمیم میگیره یه ران تایم جدیدی را به نام Deno بنویسه. هدف Deno این بود که کمو کاستی از NodeJs رو برطرف کنه، امنیت بالاتری نسب به NodeJs داشته باشه و خیلی از مواردی که توی NodeJs نیاز بودن برای استفاده ازشون پکیج نصب بشه رو تو خودش داشته باشه مثل پشتیبانی از تایپ اسکریپت. Deno با زبان راست نوشته شده و مثل NodeJs از انجین V8 استفاده میکنه. اما متاسفانه Deno از دیدگاه خیلی ها تقریبا یه پروژه ی شکست خوردس اما چرا Deno شکست خورده و نتونتسه مثل NodeJs محبوب بشه؟
با تمام برتری ها و مزیت هایی که Deno نسبت به NodeJs داره اما یه مشکل اساسی وجود داره که باعث میشه Deno یه پروژه ی شکست خورده حساب بشه! پروژه ی Deno بجای اینکه بیاد روی ویژگی های ضروری و core کار کنه و بعدا فیچر های بیشتری اضافه کنه تمام تمرکزش رو گذاشته روی ویژگی های برترش نسبت به NodeJs و همین باعث شده با خیلی از API ها ناسازگار بمونه و مهاجرت پروژه ای که با NodeJs نوشته شده به Deno خیلی سخت و تو پروژه های خیلی بزرگ تقریبا غیر ممکن بشه. اینجاس که Bun اومده تا اشتباهات Deno رو جبران کنه. Bun دقیقا داره چیکار میکنه؟
ران تایم Bun که زبان Zig نوشته شده، بجای V8 از انجین JavaScriptCore استفاده میکنه و یکی از دلایل سریع تر بودن Bun نسبت به بقیه بخاطر انجینیه که داره ازش استفاده میکنه. Bun علاوه بر ران تایم بودن یه جعبه ابزار کاملی از تمام چیز هایی که توسعه دهنده برای اجرای یه برنامه ی ساده تا بکند یه پروژه بزرگ نیاز داره توی خودش داره.
مثل:
- پشتیبانی از Ts,tsx,Jsx
- پکیج منیجر
- هات ریلود
- باندلر
- پشتیبانی از api های استاندار وب
- خوندن و نوشتن روی فایل های سرور
- سازگار بودن با ESM و CommonJS
و..
یکی از دلایلی که باعث محبوبیت Bun شده اینکه کاملا با پروژه ها NodeJs سازگاره و بدون تغییرات در کدتون میتونید از Node به Bun مهاجرت کنید.
پس در نتیجه احتمال مهاجرت توسعه دهندگان در آینده ی نزدیک از NodeJs به Bun وجود داره، باید منتظر باشیم ببینیم چی میشه:)
برای پروژه ی بعدیم از Bun استفاده کنم؟
بستگی داره. اگه میخواهید لبه ی تکنولوژی باشید و چیز های جدیدی را امتحان کنید، چرا که نه :) ولی اگه دارید رویه پروژه ای کار میکنید که براتون مهمه همه چیز استیبل باشه، هنوز برای مهاجرت به Bun زوده، چون هنوز کامیونیتی بزرگی مثل Node نداره و پروژه های زیاد و بزرگی باهاش نوشته نشدند
🆔 @MdDaily
خب قبل از اینکه بریم این ابزار ها را باهم مقایسه کنیم، اول بریم سراغ اینکه چرا اینها وجود دارند و چه مشکلی رو حل می کنند؟
تا قبل از اومدن nodeJS، ابزار هایی وجود داشتند که به توسعه دهندگان اجازه می دادند خارج از مرورگر هم کد های جاوا اسکریپت خودشون را اجرا کنند اما با دسترسی ها و امکانات محدود پس در نتیجه نیاز به یه ران تایمی حس میشد که این مشکلات رو حل کنه و استفاده از جاوا اسکریپت رو خارج از مرورگر عمومی کنه. اتفاقی که تو پشت صحنه میوفتاد و الانم میفوته اینکه کد های جاوا اسکریپتی که شما می نویسید توی مرورگر های کرومیوم بیس توسط یه انجینی بنام V8 تفسیر و اجرا میشند. این انجین با زبان c++ نوشته شده و متن بازم هست. سال 2009 یه شخصی بنام Ryan Dahl اومد انجین V8 رو گذاشت تویه برنامه ای که با c++ نوشته بود که بتونه جاوا اسکریپت رو خارج از محیط مرورگر هم اجرا کنه و ویژگی های جدیدی را هم بهش اضافه کرد و اونجا بود که nodeJs متولد شد و این ایده که از جاوا اسکریپت توی بکند، دسکتاپ موبایل و... هم استفاده بشه و فقط محدود به مرورگر نباشه شکل گرفت. پس به طور کلی ران تایم های جاوا اسکریپتی مثله Deno, Bun و NodeJs اومدن تا به ما این امکان را بدن از جاوا اسکریپت خارج از محیط مرورگر استفاده کنیم.
خب سوالی که پیش میاد اینه NodeJs داره کارش رو به خوبی انجام میده و محبوب ترین ران تایم جاوا اسکریپتم هست، پس چرا Deno و Bun وجود دارند؟
نود جی اس با تمام ویژگی های خوبی که داره و محبوبیت زیادش اما همچنان پرفورمنس فوق العاده ای نداره و به صورت پیش فرض از تایپ اسکریپت پشتیبانی نمیکنه . چند سال بعد از انتشار NodeJs سازندش تصمیم میگیره یه ران تایم جدیدی را به نام Deno بنویسه. هدف Deno این بود که کمو کاستی از NodeJs رو برطرف کنه، امنیت بالاتری نسب به NodeJs داشته باشه و خیلی از مواردی که توی NodeJs نیاز بودن برای استفاده ازشون پکیج نصب بشه رو تو خودش داشته باشه مثل پشتیبانی از تایپ اسکریپت. Deno با زبان راست نوشته شده و مثل NodeJs از انجین V8 استفاده میکنه. اما متاسفانه Deno از دیدگاه خیلی ها تقریبا یه پروژه ی شکست خوردس اما چرا Deno شکست خورده و نتونتسه مثل NodeJs محبوب بشه؟
با تمام برتری ها و مزیت هایی که Deno نسبت به NodeJs داره اما یه مشکل اساسی وجود داره که باعث میشه Deno یه پروژه ی شکست خورده حساب بشه! پروژه ی Deno بجای اینکه بیاد روی ویژگی های ضروری و core کار کنه و بعدا فیچر های بیشتری اضافه کنه تمام تمرکزش رو گذاشته روی ویژگی های برترش نسبت به NodeJs و همین باعث شده با خیلی از API ها ناسازگار بمونه و مهاجرت پروژه ای که با NodeJs نوشته شده به Deno خیلی سخت و تو پروژه های خیلی بزرگ تقریبا غیر ممکن بشه. اینجاس که Bun اومده تا اشتباهات Deno رو جبران کنه. Bun دقیقا داره چیکار میکنه؟
ران تایم Bun که زبان Zig نوشته شده، بجای V8 از انجین JavaScriptCore استفاده میکنه و یکی از دلایل سریع تر بودن Bun نسبت به بقیه بخاطر انجینیه که داره ازش استفاده میکنه. Bun علاوه بر ران تایم بودن یه جعبه ابزار کاملی از تمام چیز هایی که توسعه دهنده برای اجرای یه برنامه ی ساده تا بکند یه پروژه بزرگ نیاز داره توی خودش داره.
مثل:
- پشتیبانی از Ts,tsx,Jsx
- پکیج منیجر
- هات ریلود
- باندلر
- پشتیبانی از api های استاندار وب
- خوندن و نوشتن روی فایل های سرور
- سازگار بودن با ESM و CommonJS
و..
یکی از دلایلی که باعث محبوبیت Bun شده اینکه کاملا با پروژه ها NodeJs سازگاره و بدون تغییرات در کدتون میتونید از Node به Bun مهاجرت کنید.
پس در نتیجه احتمال مهاجرت توسعه دهندگان در آینده ی نزدیک از NodeJs به Bun وجود داره، باید منتظر باشیم ببینیم چی میشه:)
برای پروژه ی بعدیم از Bun استفاده کنم؟
بستگی داره. اگه میخواهید لبه ی تکنولوژی باشید و چیز های جدیدی را امتحان کنید، چرا که نه :) ولی اگه دارید رویه پروژه ای کار میکنید که براتون مهمه همه چیز استیبل باشه، هنوز برای مهاجرت به Bun زوده، چون هنوز کامیونیتی بزرگی مثل Node نداره و پروژه های زیاد و بزرگی باهاش نوشته نشدند
🆔 @MdDaily
❤2👍2⚡1👌1
Md Daily
💡 توی این مدتی که اولین نسخه ی پایدار Bun منتشر شد و باز هم یه ابزار جدید به اکو سیستم جاوا اسکریپت اضافه شد و کلی سروصدا کرد، تصمیم گرفتم توی این پست Deno, Bun و NodeJs رو باهم مقایسه کنم و ببینیم هرکدوم چه مزیت هایی دارن و اصلا چرا وجود دارن خب قبل از…
توی این پست Deno و Bun و NodeJs باهم مقایسه شدند و به این سوال که چرا این ابزار ها وجود دارند چه مشکلی رو حل میکنند، جواب داده شده :)
🆔 @MdDaily
🆔 @MdDaily
✍2❤🔥1👀1
Audio
🎧 #موزیک مناسب زمان برنامه نویسی
► 00:00 Rainy Nights - Azaleh
► 03:46 In A Cabin By The Lake - Lazarus Moment
► 09:47 Hollow - Ecepta
► 11:44 For The Sky - Himalia
► 17:16 Disconnect - Victoriya
► 21:11 Horizon - Almost Vanished
► 25:50 Forget Me Not - Oscuro Official
► 29:59 Radiance - Menual
► 33:51 Dawn - Kazukii
► 37:36 No One Is Forever - Moon
► 41:44 But You Never Told Me - Groundfold
► 44:56 God Will Let Me Know - Dakun
► 48:06 Asylum - Eyeri
► 52:50 Tension - Kazukii
► 57:19 Your Reflection - Lux Natura
► 1:01:38 Frustration - Brimstone
► 1:06:22 Wanderer - Fyze
► 1:11:09 Hypnos - 4lienetic
► 1:14:52 We Are Blind - RIT & LuQus
► 1:19:04 Asterism - Ecepta
► 1:22:48 Cosmo Pollen - Brombaer & Noahs Boat
► 1:27:22 One Too Many - Exist Strategy
► 1:31:23 Somewhere - F3edo
► 1:37:10 Ilia - Kisnou
► 1:39:56 Tea - Quok
► 1:44:33 Quenching - Margari's Kid
🆔 @MdDaily
► 00:00 Rainy Nights - Azaleh
► 03:46 In A Cabin By The Lake - Lazarus Moment
► 09:47 Hollow - Ecepta
► 11:44 For The Sky - Himalia
► 17:16 Disconnect - Victoriya
► 21:11 Horizon - Almost Vanished
► 25:50 Forget Me Not - Oscuro Official
► 29:59 Radiance - Menual
► 33:51 Dawn - Kazukii
► 37:36 No One Is Forever - Moon
► 41:44 But You Never Told Me - Groundfold
► 44:56 God Will Let Me Know - Dakun
► 48:06 Asylum - Eyeri
► 52:50 Tension - Kazukii
► 57:19 Your Reflection - Lux Natura
► 1:01:38 Frustration - Brimstone
► 1:06:22 Wanderer - Fyze
► 1:11:09 Hypnos - 4lienetic
► 1:14:52 We Are Blind - RIT & LuQus
► 1:19:04 Asterism - Ecepta
► 1:22:48 Cosmo Pollen - Brombaer & Noahs Boat
► 1:27:22 One Too Many - Exist Strategy
► 1:31:23 Somewhere - F3edo
► 1:37:10 Ilia - Kisnou
► 1:39:56 Tea - Quok
► 1:44:33 Quenching - Margari's Kid
🆔 @MdDaily
👨💻6🍌2👍1
از آخرین باری که Phind.com رو تست کردم خیلی تغییر کرده و توی آپدیت جدیدش به شما این امکان رو میده که با فعال کردن حالت Pair Programmer یک دستیار برنامه نویس در کنار خودتون داشته باشید. وقتی حالت Pair Programmer رو فعال می کنید طبق چیزی که ازش درخواست کردید، شروع می کنه به تعریف وظایف برای خودش و با سرچ توی اینترنت و وظایفی که برای خودش تعریف کرده، به شما نتیجه میده. شما میتونید از مدل GPT-4 و GPT-3.5 یا Phind استفاده کنید که مدل GPT-4 اش در حالت رایگان محدودیت 10 درخواست در روز داره ولی استفاده از دو مدل دیگه هیچ محدودیتی نداره .
شما میتونید از Phind توی vscode هم به صورت اکستنشن استفاده کنید
توی ویدیوی پست، ازش خواستم یک بکند با گولنگ و یک وب اپ با Django بنویسه
🆔 @MdDaily
شما میتونید از Phind توی vscode هم به صورت اکستنشن استفاده کنید
توی ویدیوی پست، ازش خواستم یک بکند با گولنگ و یک وب اپ با Django بنویسه
🆔 @MdDaily
👍2🤯2✍1🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
و بالاخره یکی از بزرگ ترین آپدیت های Google Bard امروز منتشر شد!
بارد به اکستنشن مجهز شده و به کمک این قابلیت به سرویسهایی مثل گوگل درایو، جیمیل و بقیه ی اپ های گوگل متصل میشه و ازش میتونید به عنوان یه دستیار استفاده کنید
🆔 @MdDaily
بارد به اکستنشن مجهز شده و به کمک این قابلیت به سرویسهایی مثل گوگل درایو، جیمیل و بقیه ی اپ های گوگل متصل میشه و ازش میتونید به عنوان یه دستیار استفاده کنید
🆔 @MdDaily
⚡1👍1🤯1👀1
#گولنگ
توی این پست از مجموعه پست های آموزشی MdDaily قراره با پکیج
پکیج pprof چه مشکلی رو حل میکنه؟
برای نوشتن برنامه هایی با پرفورمنس بالا و استفاده ی بهینه تر از منابع، شما باید از اینکه هر پروسه ای چه قدر داره توی سرعت اجرایی برنامه اثر میگذاره و چه میزان منابع رو درگیر میکنه آگاه باشید تا بتونید برنامتون رو بهینه کنید. اینجاس که پکیج
پکیج pprof کجاها کاربرد داره؟
پکیج pprof مخفف Performance Profiling هستش و به شما در جزیه و تحلیل عملکرد برنامه های Go کمک میکنه. این پکیج به شما این امکان رو میده تا داده های پروفایل را از برنامه های خود جمع آوری کنید و این داده ها را در یک اینترفیس مبتی بر وب یا به صورت cli بررسی کنید.
- سی پیو (CPU Profiling): میتوانید از pprof برای تجزیه و تحلیل مصرف CPU در برنامه Go خود استفاده کنید. این به شما کمک میکنه تا بخشهایی از کد خود را که بیشترین منابع CPU را مصرف میکنند شناسایی کنید.
- مموری (Memory Profiling): همچنین میتوان از pprof برای تجزیه و تحلیل مصرف حافظه استفاده کرد، که به شما کمک میکنه مموری لیک ها یا الگوهای تخصیص حافظه ناکارآمد (inefficient memory allocation patterns) رو تو کدتون پیدا کنید.
-گوروتین (Goroutine Profiling): به شما اجازه میده تا کانکارنسی های برنامهی خود را تجزیه و تحلیل کنید و به شما کمک میکنه تا درک کنید که چطوری گوروتینها ایجاد، مسدود یا اجرا میشوند و همچنین با پروفایل کردن گوروتینها به شما کمک میکنه تا مشخص کنید که گوروتینها در کجا منتظر هستند یا مسدود شدند
یک مثال از pprof :
🆔 @MdDaily
توی این پست از مجموعه پست های آموزشی MdDaily قراره با پکیج
pprof در Golang آشنا بشیم :)پکیج pprof چه مشکلی رو حل میکنه؟
برای نوشتن برنامه هایی با پرفورمنس بالا و استفاده ی بهینه تر از منابع، شما باید از اینکه هر پروسه ای چه قدر داره توی سرعت اجرایی برنامه اثر میگذاره و چه میزان منابع رو درگیر میکنه آگاه باشید تا بتونید برنامتون رو بهینه کنید. اینجاس که پکیج
pprof به کمک ما میاد. پکیج pprof کجاها کاربرد داره؟
پکیج pprof مخفف Performance Profiling هستش و به شما در جزیه و تحلیل عملکرد برنامه های Go کمک میکنه. این پکیج به شما این امکان رو میده تا داده های پروفایل را از برنامه های خود جمع آوری کنید و این داده ها را در یک اینترفیس مبتی بر وب یا به صورت cli بررسی کنید.
- سی پیو (CPU Profiling): میتوانید از pprof برای تجزیه و تحلیل مصرف CPU در برنامه Go خود استفاده کنید. این به شما کمک میکنه تا بخشهایی از کد خود را که بیشترین منابع CPU را مصرف میکنند شناسایی کنید.
- مموری (Memory Profiling): همچنین میتوان از pprof برای تجزیه و تحلیل مصرف حافظه استفاده کرد، که به شما کمک میکنه مموری لیک ها یا الگوهای تخصیص حافظه ناکارآمد (inefficient memory allocation patterns) رو تو کدتون پیدا کنید.
-گوروتین (Goroutine Profiling): به شما اجازه میده تا کانکارنسی های برنامهی خود را تجزیه و تحلیل کنید و به شما کمک میکنه تا درک کنید که چطوری گوروتینها ایجاد، مسدود یا اجرا میشوند و همچنین با پروفایل کردن گوروتینها به شما کمک میکنه تا مشخص کنید که گوروتینها در کجا منتظر هستند یا مسدود شدند
یک مثال از pprof :
package mainخروجی کد در پست بعدی....
import (
_ "net/http/pprof"
"net/http"
"time"
)
func main() {
// ایجاد یک وب سرور برای پروفایل کردن برنامه.
go func() {
http.ListenAndServe(":6060", nil)
}()
// کد برنامه ی شما ...
// اکنون میتونید توی این آدرس: http://localhost:6060/debug/pprof/ پروفایل برنامتون رو ببینید
// به عنوان مثال : این کد 10 ثانیه داده های پروفایل cpu را جمع آوری میکنه
time.Sleep(10 * time.Second)
}
🆔 @MdDaily
❤3👍1