📌 جاوا اسکریپت دقیقا چیه؟ بخش 7: Dynamic
• تو زبانی مثل ++C، وقتی یه متغیر تعریف میکنی، باید از قبل مشخص کنی چه نوعی داره (مثلاً عدد، رشته، بولین و...).
به این زبانها میگن: Statically Typed
• از مزیت و معایبش هم بگم که، یکی از کاربرداش اینه که تایپ متغیرها به صورت dynamic یا دستی میتونه تغییر پیدا کنه. ایرادشم مثلا اینکه تو یه سری موارد باگ های عجیب غریبی میده
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6
#javanoscript
• تو زبانی مثل ++C، وقتی یه متغیر تعریف میکنی، باید از قبل مشخص کنی چه نوعی داره (مثلاً عدد، رشته، بولین و...).
به این زبانها میگن: Statically Typed
ولی توی جاوااسکریپت اینطوری نیست.
• جاوااسکریپت یه زبان Dynamically Typed هست. یعنی لازم نیست نوع متغیر رو از قبل مشخص کنی — خودش موقع runtime تشخیص میده که اون متغیر چه نوعی داره.
• از مزیت و معایبش هم بگم که، یکی از کاربرداش اینه که تایپ متغیرها به صورت dynamic یا دستی میتونه تغییر پیدا کنه. ایرادشم مثلا اینکه تو یه سری موارد باگ های عجیب غریبی میده
اما اگه دوست داری که JS رو با type ها استفاده کنی میتونی از TypeScript استفاده کنی. این مشکل با اضافه کردن "static types" حل میشه، ولی توی خود JS همیشه با dynamic typing کار میکنی.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6
#javanoscript
@JSKernel
❤🔥1
📌 جاوا اسکریپت دقیقا چیه؟ بخش 8: Single-threaded
• بعضی زبانها یا محیطها چند تا thread دارن و میتونن همزمان چند کار رو با هم انجام بدن (multi-threaded).
اما جاوااسکریپت اینطوری نیست.
• جاوااسکریپت یه زبان Single-Threaded هست، یعنی در هر لحظه فقط میتونه یک کار رو انجام بده.
یعنی چی؟
پس engine جاوااسکریپت چطور کارهای مختلف رو به صورت همزمان انجام میده؟
📌 خلاصه:
• جاوااسکریپت با اینکه single-threaded هست ولی با کمک Event Loop میتونه چند تا کار مختلف رو بهصورت همزمان مدیریت کنه.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7
• بعضی زبانها یا محیطها چند تا thread دارن و میتونن همزمان چند کار رو با هم انجام بدن (multi-threaded).
اما جاوااسکریپت اینطوری نیست.
• جاوااسکریپت یه زبان Single-Threaded هست، یعنی در هر لحظه فقط میتونه یک کار رو انجام بده.
یعنی چی؟
• توی JavaScript همهچیز به ترتیب اجرا میشه (خطبهخط)
• فقط یه دونه thread اصلی داره که بهش میگن main thread
• وقتی یه تابع اجرا میشه، بقیه باید صبر کنن تا اون تموم شه
پس engine جاوااسکریپت چطور کارهای مختلف رو به صورت همزمان انجام میده؟
• اینجاست که موتور جاوااسکریپت از یه چیزی به اسم Event Loop استفاده میکنه (در بخش آخر در موردش حرف میزنیم).
• جاوااسکریپت با کمک Event Loop و محیط اجرا (مرورگر یا Node.js)، میتونه کارهای زمانبر رو به صورت غیرهمزمان (async) مدیریت کنه، بدون اینکه thread اصلی بلاک بشه.
📌 خلاصه:
• جاوااسکریپت با اینکه single-threaded هست ولی با کمک Event Loop میتونه چند تا کار مختلف رو بهصورت همزمان مدیریت کنه.
اگه سوالی دارین تو بخش کامنتا بپرسید.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7
@JSKernel
Chakra UI یه کتابخونهی رابط کاربری برای React، که کلی کامپوننت آماده داره.
#chakra_ui #chakra
• اگه با React کار میکنی و دنبال یه راه ساده و سریع برای ساخت UI هستی، Chakra یکی از انتخابهای خوبه.
• بهجای اینکه از صفر دکمه و فرم و مودال بسازی، همهچی رو حاضر و آماده بهت میده!
#chakra_ui #chakra
@JSKernel
❤1
📌 جاوا اسکریپت دقیقا چیه؟ بخش اخر 9: Non-blocking event loop concurrency model
Concurrency Mode
• یعنی روسی که engine جاوااسکریپت میتونه کارهای مختلف رو به صورت همزمان (بدون توقف برنامه) انجام بده
اما چرا به Concurrency model نیاز داریم؟
پس ما به یه رفتار غیرمسدودکننده نیاز داریم به اسم Non-blocking
حالا به کمک Event loop میتونیم تسکهای طولانی رو پشت صحنه انجام بدیم و اجازه نمیده کد اصلی ما بلاک بشه
• async یه مفهومه یعنی چطور جاوااسکریپت با کارهای زمانبر رفتار میکنه
• event loop یه مکانیزمه یعنی چطور اون کارهای async رو مدیریت و اجرا میکنه
به این سبک اجرای همزمان تو جاوااسکریپت میگن:
Non-blocking Event Loop Concurrency Model
📌خلاصه:
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7، بخش 8
#javanoscript #async
Concurrency Mode
• یعنی روسی که engine جاوااسکریپت میتونه کارهای مختلف رو به صورت همزمان (بدون توقف برنامه) انجام بده
اما چرا به Concurrency model نیاز داریم؟
چون خود جاوااسکریپت Single-threaded هست. و صرفا میتونه یه کار رو به صورت همزمان برای ما انجام بده پس ما نیاز به روشی داریم که بتونیم کارهای محتلف و به صورت همزمان انجام بدیم.
حالا اگه ما یه تسک طولانی داشته باشیم چون جاوااسکریپت Single-threaded هست ادامه کد ما تا زمانی که اون تسک طولانی تموم بشه متوقف میشه.
پس ما به یه رفتار غیرمسدودکننده نیاز داریم به اسم Non-blocking
Non-blocking
• blocking یعنی همه چیز صبر کنه تا یه کار تموم بشه
• non-blocking یعنی اون کار زمانبر میره توی پسزمینه، و بقیهی کد اجرا میشه
حالا به کمک Event loop میتونیم تسکهای طولانی رو پشت صحنه انجام بدیم و اجازه نمیده کد اصلی ما بلاک بشه
Event Loop چیه؟
• یه مکانیزم توی JS که مدیریت میکنه کی کدهای async (زمانبر) اجرا بشن.
- پشت صحنه میشینه
- صف کارهایی که باید اجرا بشن رو بررسی میکنه
- وقتی نوبت رسید، اون کار رو میزاره توی thread اصلی و اجراش میکنه
• async یه مفهومه یعنی چطور جاوااسکریپت با کارهای زمانبر رفتار میکنه
• event loop یه مکانیزمه یعنی چطور اون کارهای async رو مدیریت و اجرا میکنه
به این سبک اجرای همزمان تو جاوااسکریپت میگن:
Non-blocking Event Loop Concurrency Model
📌خلاصه:
جاوااسکریپت با وجود اینکه فقط یه thread برای اجرا داره، ولی با استفاده از یه سیستم به اسم Event Loop، میتونه چندتا کار async رو بهصورت غیرهمزمان و بدون بلاک شدن برنامه مدیریت کنه.
اگه سوالی دارین تو بخش کامنتا بپرسین.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7، بخش 8
#javanoscript #async
@JSKernel
❤🔥1
Supabase یه سرویس بکانده که بهت کمک میکنه بدون دردسر، یه پشتصحنهی کامل برای اپلیکیشنات بسازی.
قابلیتها:
📌 وقتی به کارت میاد که بخوای سریع یه بکاند کامل و حرفهای بسازی، بدون اینکه از اول همهچی رو کدنویسی کنی.
#supabase
قابلیتها:
• دیتابیس داره (PostgreSQL)انگار یه Firebase اوپنسورسه که کنترل بیشتری هم بهت میده.
• احراز هویت داره (مثل لاکین، ثبتنام و...)
• استوریج برای آپلود فایلهات داره
• API خودکار برای دیتاها میسازه
• حتی قابلیت ریلتایم هم داره!
📌 وقتی به کارت میاد که بخوای سریع یه بکاند کامل و حرفهای بسازی، بدون اینکه از اول همهچی رو کدنویسی کنی.
#supabase
@JSKernel
Remix یه فریمورک برای ساخت وباپلیکیشن با React .
فرقش با بقیه؟ تمرکز روی سرعت، سئو و تجربهی کاربر.
حالا میتونی هم سمت کلاینت رو کنترل کنی، هم سمت سرور رو.
از لودینگ دیتا بگیر تا ارسال فرم و روتینگ و کلی چیزو مدیریت میکنه.
اگه میخواین پروژههاتون هم سریع باشه، هم با browser engine رفیق، Remix رو حتماً یه نگاه بنداز.
#remix #react
فرقش با بقیه؟ تمرکز روی سرعت، سئو و تجربهی کاربر.
حالا میتونی هم سمت کلاینت رو کنترل کنی، هم سمت سرور رو.
از لودینگ دیتا بگیر تا ارسال فرم و روتینگ و کلی چیزو مدیریت میکنه.
اگه میخواین پروژههاتون هم سریع باشه، هم با browser engine رفیق، Remix رو حتماً یه نگاه بنداز.
#remix #react
@JSKernel
❤1
اگه تازه با React آشنا شدی و میخوای اولین پروژهتو بسازی، این مقاله چیزه خوبیه:
https://dev.to/abdul_fadiga_1f402d165920/build-your-first-portfolio-with-react-a-beginners-ultimate-guide-490f
از اینکه چرا React برای ساخت سایت خوبه، تا ساختار پروژه و ساخت کامپوننت و توضیح داده، صفر تا دیپلوی.
📌 کسایی که میخوان اولین پرتفولیو شخصی با React رو بسازن.
#react #devto
https://dev.to/abdul_fadiga_1f402d165920/build-your-first-portfolio-with-react-a-beginners-ultimate-guide-490f
از اینکه چرا React برای ساخت سایت خوبه، تا ساختار پروژه و ساخت کامپوننت و توضیح داده، صفر تا دیپلوی.
📌 کسایی که میخوان اولین پرتفولیو شخصی با React رو بسازن.
#react #devto
@JSKernel
YouTube
اجرای آزاد و بی دردسر و رایگان مدلهای زبانی روی گوشیهای اندروید و اپل
مدلهای زبانی بزرگ باحال هستن و کلی جا استفاده شون میکنیم. اما استفاده زیاد ازشون هزینه مالی داره و هر استفادهای هم نیازمند اتصال به اینترنت است. یکی از روشهای مرسوم برای حل این مساله استفاده از این مدلها به شکل آفلاین است، یعنی دانلود یک مدل آزاد و استفاده…
https://www.youtube.com/watch?v=Euf_G4-duDs&t=201s
جادی اومده یه ریپو رو معرفی کرده که کارش اجرا کردن مدلای SLM روی موبایله.
جدا از حرکت جالب این پروژه، اینکه چطور داره کار میکنه خیلی باحاله.
جادی اومده یه ریپو رو معرفی کرده که کارش اجرا کردن مدلای SLM روی موبایله.
جدا از حرکت جالب این پروژه، اینکه چطور داره کار میکنه خیلی باحاله.
Radix UI یه مجموعه کامپوننت آماده برای React .
اما با یه تفاوت مهم:
کامپوننتهاش فقط ساختاری هستن، نه ظاهری!
تفاوتش هم با کتابخونههایی مثل Chakra ui همینه که Radix ui فقط منطق و ساختار داره و ظاهرش دیگه با خودته.
#radix #radix_ui
اما با یه تفاوت مهم:
کامپوننتهاش فقط ساختاری هستن، نه ظاهری!
یعنی چی؟
یعنی Radix بهت منوی آماده، مودال، تب، اسلایدر و کلی کوفت و زهرمار میده، ولی بدون استایل.
میتونی استایل دلخواه خودتو بهش بدی با Tailwind، CSS یا هرچی دوست داری.
تفاوتش هم با کتابخونههایی مثل Chakra ui همینه که Radix ui فقط منطق و ساختار داره و ظاهرش دیگه با خودته.
#radix #radix_ui
@JSKernel
🔥1
XSS یا همون Cross-Site Scripting یه حمله سمت کلاینت تو دنیای فرانتاند.
اینجوریه که یه آدم مریض یه کد مخرب (معمولاً جاوااسکریپت) رو وارد برنامه میکنه، و کد روی مرورگر بقیه کاربرا اجرا میشه!
معمولا از طریق فرمها، سرج، چت و هرجایی که کاربر میتونه جیزی بنویسه، وارد میشه.
کاربردش هم استفاده تبلیغاتی بیشتر داره مثلا باز شدن پاپآپ و ریدایرکت به یه URL دیگه. کلا مرورگر فک میکنه از سمت سایت خودته پس اجراش میکنه.
حالا چطور این باگ و دفع کنید اینجا بخونید:
https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/XSS
#xss
اینجوریه که یه آدم مریض یه کد مخرب (معمولاً جاوااسکریپت) رو وارد برنامه میکنه، و کد روی مرورگر بقیه کاربرا اجرا میشه!
معمولا از طریق فرمها، سرج، چت و هرجایی که کاربر میتونه جیزی بنویسه، وارد میشه.
کاربردش هم استفاده تبلیغاتی بیشتر داره مثلا باز شدن پاپآپ و ریدایرکت به یه URL دیگه. کلا مرورگر فک میکنه از سمت سایت خودته پس اجراش میکنه.
مثلا تو React، چون JSX بهصورت پیشفرض جلوی اجرای مستقیم HTML رو میگیره، تا حد زیادی امنیتت بیشتره.
اما فرض بگیریم طرف نوبه و اومده از dangerouslySetInnerHTML استفاده کرده (که اسمش هم مشخصه خطرناکه)، عملاً در رو برای XSS باز کردی.
حالا چطور این باگ و دفع کنید اینجا بخونید:
https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/XSS
#xss
@JSKernel
Temporal یه پلتفرم برای مدیریت Workflow های پیچیده. یعنی کارهایی که باید بهترتیب، زمانبندیشده یا با اطمینان بالا اجرا بشن.
درواقع یه ابزار Orchestration هست که چندتا کار وابسه و حساس رو با ترتیب انجام میده.
github
#temporal
با ابزارهای Automation اشتباه نگیرینش چون کارش کلا متفاوته.
مثلا پرداخت چندمرحلهای، ارسال ایمیل بعد خرید، تایید هویت چندمرحلهای و چیزایی مثل این.
درواقع یه ابزار Orchestration هست که چندتا کار وابسه و حساس رو با ترتیب انجام میده.
github
#temporal
@JSKernel
