🔺منظور از Stateless بودن REST چیه؟ 🤔
- همونطور که میدونیم رِست یک معماری مبتنی بر HTTP و شامل قوانینی هست برای ساختن وبسرویسها. و یک برنامهٔ RESTful به برنامهای گفته میشه که از این قوانین تبعیت میکنه
- یکی از قوانین برنامهٔ رِستفول اینه که هر درخواستی که از کلاینت به سمت سرور زده میشه، باید توی خودش همهٔ اطلاعاتی که سرور برای دادنِ پاسخ مناسب لازم داره رو داشته باشه
- به عبارت دیگه، هر درخواست باید کاملاً مستقل از درخواستهای دیگه عمل کنه و سرور برای فهمیدن یک درخواست نباید وابسته به درخواستهای دیگه باشه
- وابستگی درخواستها چه زمانی به وجود میاد؟ زمانی که سرور اطلاعاتی از یک درخواست رو ذخیره کرده تا برای درخواستهای بعدی از اون استفاده کنه و اینجاست که قانون Stateless بودن نقض میشه
- برای مثال توی یک برنامهای که میخواد از قوانین رست تبعیت کنه میخوایم نظر ارسال کنیم. اینجا هر درخواست توی خودش علاوه بر متن نظر، باید اطلاعات مربوط به شناسایی و احراز هویت کاربر (مثلاً توکن JWT) رو همیشه به همراه داشته باشه
- توی این برنامه قانون رست زمانی نقض میشه که سرور اطلاعات مربوط به احراز هویت رو (مثلاً به وسیلهٔ قابلیت Session ها) توی خودش ذخیره کنه تا برای درخواستهای بعدی دیگه نیازی به ارسال اطلاعات احراز هویت نباشه
- پ.ن: منظور از State اطلاعاتی هست که توی برنامه در جریانه. مثل اطلاعات کاربری، تم، زبان و ... .
#tips
- همونطور که میدونیم رِست یک معماری مبتنی بر HTTP و شامل قوانینی هست برای ساختن وبسرویسها. و یک برنامهٔ RESTful به برنامهای گفته میشه که از این قوانین تبعیت میکنه
- یکی از قوانین برنامهٔ رِستفول اینه که هر درخواستی که از کلاینت به سمت سرور زده میشه، باید توی خودش همهٔ اطلاعاتی که سرور برای دادنِ پاسخ مناسب لازم داره رو داشته باشه
- به عبارت دیگه، هر درخواست باید کاملاً مستقل از درخواستهای دیگه عمل کنه و سرور برای فهمیدن یک درخواست نباید وابسته به درخواستهای دیگه باشه
- وابستگی درخواستها چه زمانی به وجود میاد؟ زمانی که سرور اطلاعاتی از یک درخواست رو ذخیره کرده تا برای درخواستهای بعدی از اون استفاده کنه و اینجاست که قانون Stateless بودن نقض میشه
- برای مثال توی یک برنامهای که میخواد از قوانین رست تبعیت کنه میخوایم نظر ارسال کنیم. اینجا هر درخواست توی خودش علاوه بر متن نظر، باید اطلاعات مربوط به شناسایی و احراز هویت کاربر (مثلاً توکن JWT) رو همیشه به همراه داشته باشه
- توی این برنامه قانون رست زمانی نقض میشه که سرور اطلاعات مربوط به احراز هویت رو (مثلاً به وسیلهٔ قابلیت Session ها) توی خودش ذخیره کنه تا برای درخواستهای بعدی دیگه نیازی به ارسال اطلاعات احراز هویت نباشه
- پ.ن: منظور از State اطلاعاتی هست که توی برنامه در جریانه. مثل اطلاعات کاربری، تم، زبان و ... .
#tips
👍46❤6🔥4👎1🎉1
🔺چطوری میتونیم یک ماژول جاوااسکریپتی رو تحت شرایط خاصی Import کنیم؟ 🤔
- توی جاوااسکریپت قابلیتی وجود داره به اسم Dynamic Imports که اجازه میده با انعطاف و اختیارات بیشتری یک ماژول رو لود و استفاده کنیم 💯
- توی جدیدترین پست دیتی با این ویژگی بیشتر آشنا بشین:
ditty.ir/498
#javanoscript
- توی جاوااسکریپت قابلیتی وجود داره به اسم Dynamic Imports که اجازه میده با انعطاف و اختیارات بیشتری یک ماژول رو لود و استفاده کنیم 💯
- توی جدیدترین پست دیتی با این ویژگی بیشتر آشنا بشین:
ditty.ir/498
#javanoscript
دیتی | Ditty.ir
همه چیز از Dynamic Import جاوااسکریپت
با قابلیتی آشنا میشیم اجازه میده یک ماژول جاوااسکریپتی رو تحت شرایط دلخواه Import و استفاده کنیم
👍24🔥7🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
🔺یکی از کاربردیترین قابلیتهای توی VS Code قابلیت Expand Selection هست
- مثلاً اگه بخوایم کدهای بین بلاکها، پرانتزها یا تگها رو انتخاب کنیم، خیلی راحت میتونیم از دکمههای Shift+Alt+Right روی کیبورد استفاده کنیم
- همچنین یه افزونه جدید و جالب برای VS Code معرفی شده به اسم Smart Clicks که کمک میکنه با یک دابلکلیک ماوس کارهای مشابهی انجام بدیم:
https://github.com/antfu/vscode-smart-clicks
#tips
- مثلاً اگه بخوایم کدهای بین بلاکها، پرانتزها یا تگها رو انتخاب کنیم، خیلی راحت میتونیم از دکمههای Shift+Alt+Right روی کیبورد استفاده کنیم
- همچنین یه افزونه جدید و جالب برای VS Code معرفی شده به اسم Smart Clicks که کمک میکنه با یک دابلکلیک ماوس کارهای مشابهی انجام بدیم:
https://github.com/antfu/vscode-smart-clicks
#tips
👍29🔥1🥰1
🔺توی DOM میتونیم از متد
- اگه المنت با Selector همخونی داشته باشه خروجی
matches استفاده کنیم برای اینکه متوجه بشیم آیا یک المنت با Selector مد نظر ما همخونی داره یا نه- اگه المنت با Selector همخونی داشته باشه خروجی
true هست. در غیر این صورت false
#tips 💯🔥25👍10🤩4
This media is not supported in your browser
VIEW IN TELEGRAM
🔺با Emmet خیلی راحت میتونیم یک کد HTML رو Wrap کنیم توی یک تگ دیگه 👌
- توی VS Code دکمه F1 رو بزنین و بعد دنبال گزینه Emmet: Wrap With Abbreviation بگردین
#tips
- توی VS Code دکمه F1 رو بزنین و بعد دنبال گزینه Emmet: Wrap With Abbreviation بگردین
#tips
🔥26👍14🤔1
🔺چقدر با مفاهیم Core Web Vitals آشنایی داری؟
Anonymous Poll
3%
کاملاً آشنایی دارم
7%
تا حدودی، میدونم چیه
12%
خیلی کم، فقط به گوشم خورده
77%
نمیدونم چی هست اصلاً
🤔18🤩5🤯2
Ditty | دیتی
🔺اعتبارسنجی فرمهای HTML آسونتر از همیشه 😋 - با کمک دوستان، ابزاری رو توسعه دادیم که بتونیم با کمترین کد و به سادهترین حالت، یک فرم HTML رو اعتبارسنجی کنیم (مثل عکس) - اسمش رو گذاشتیم Facile Validator (فَسیل ولیدیتور) که اون رو به تازگی و به صورت رسمی…
🔺توی ورژن جدید Facile Validator میشه از Regex برای اعتبارسنجی ورودیها استفاده کرد
- همچنین یک قابلیت به اسم X-Prefixed Rules اضافه شده که اجازه میده کار تعریف کردن آرگومان برای قوانین رو توی جاوااسکریپت انجام بدیم
- مستندات و صفحه رسمی:
https://github.com/upjs/facile-validator
#tools
- همچنین یک قابلیت به اسم X-Prefixed Rules اضافه شده که اجازه میده کار تعریف کردن آرگومان برای قوانین رو توی جاوااسکریپت انجام بدیم
- مستندات و صفحه رسمی:
https://github.com/upjs/facile-validator
#tools
GitHub
GitHub - upjs/facile-validator: Robust Frontend Forms Validation, inspired by Laravel Validation, Built for Simplicity of Use 🍬
Robust Frontend Forms Validation, inspired by Laravel Validation, Built for Simplicity of Use 🍬 - upjs/facile-validator
👏8🔥4👍3❤1
🔺مقدارهای
https://codepen.io/alvaromontoro/pen/vYdyOxe
#css
justify-content برای CSS Flexbox به زبان ساده :))https://codepen.io/alvaromontoro/pen/vYdyOxe
#css
😁67👍15👎1🤯1
👍17❤6🎉1🤩1
🔺ـ Tree Shaking یعنی چی؟ 🤔
- وقتی با ابزارهایی مثل وبپک میخوایم از یک برنامهٔ جاوااسکریپتی بیلد بگیریم، تکنیک Tree Shaking با حذف کدهای اضافی و بلااستفاده (به قول معروف Dead Code) بهمون کمک میکنه تا حجم کدهای کمتری توی باندل نهایی قرار بگیره که در نتیجه سرعت برنامه بالاتر میره
- برای مثال اگه توی برنامه import/export هایی داشته باشیم که هیچ جایی استفاده نمیشن، ابزارهایی مثل وبپک هنگام باندل کردن برنامه با آنالیزهایی که انجام میدن متوجه این import/export ها میشن و اونها از خروجی نهایی حذف میکنن
- به این مرحله از عملیات باندل کردن به اصطلاح گفته میشه Tree Shaking یا Dead Code Elimination
عکس از Unsplash
#tips
- وقتی با ابزارهایی مثل وبپک میخوایم از یک برنامهٔ جاوااسکریپتی بیلد بگیریم، تکنیک Tree Shaking با حذف کدهای اضافی و بلااستفاده (به قول معروف Dead Code) بهمون کمک میکنه تا حجم کدهای کمتری توی باندل نهایی قرار بگیره که در نتیجه سرعت برنامه بالاتر میره
- برای مثال اگه توی برنامه import/export هایی داشته باشیم که هیچ جایی استفاده نمیشن، ابزارهایی مثل وبپک هنگام باندل کردن برنامه با آنالیزهایی که انجام میدن متوجه این import/export ها میشن و اونها از خروجی نهایی حذف میکنن
- به این مرحله از عملیات باندل کردن به اصطلاح گفته میشه Tree Shaking یا Dead Code Elimination
عکس از Unsplash
#tips
👍45👏3❤1
Ditty | دیتی
🔺چقدر با مفاهیم Core Web Vitals آشنایی داری؟
🔺توی این نظرسنجی، بیشتر شرکتکنندهها درباره Core Web Vitals که یک موضوعِ داغ و مهم توی دنیای امروز فرانتاند هست، گفتن اطلاعی ندارن
- خبر خوب اینه که دوست خوبم، صالح فدائی یکی از با دانشترین دولوپرهایی که میشناسم، قراره توی یک همایش درباره Core Web Vitals صحبت کنه 👋
- پیشنهاد میکنم این همایش رو از دست ندین. برای اطلاعات بیشتر این پست رو ببینین:
https://news.1rj.ru/str/quera_ir/1692
- صالح توی گروه دیتی هست. سوالی داشتین توی گروه بپرسین
#frontend
- خبر خوب اینه که دوست خوبم، صالح فدائی یکی از با دانشترین دولوپرهایی که میشناسم، قراره توی یک همایش درباره Core Web Vitals صحبت کنه 👋
- پیشنهاد میکنم این همایش رو از دست ندین. برای اطلاعات بیشتر این پست رو ببینین:
https://news.1rj.ru/str/quera_ir/1692
- صالح توی گروه دیتی هست. سوالی داشتین توی گروه بپرسین
#frontend
👏12❤2👍2
🔺سایپرس (Cypress) یکی از جالبترین و مدرنترین ابزارهای تست End to End برنامههای فرانت هست. یکی از دوستان زحمت کشیده و داره آموزشهایی از این ابزار به صورت ویدئویی و رایگان منتشر میکنه. پیشنهاد میکنم سری به این کانال بزنین:
https://news.1rj.ru/str/automationcamp
#links
https://news.1rj.ru/str/automationcamp
#links
www.cypress.io
Testing Frameworks for Javanoscript | Write, Run, Debug | Cypress
Simplify front-end testing with Cypress' open-source app. Explore our versatile testing frameworks for browser-based applications and components.
👍16❤1🥰1
🔺توابع Debounce و Throttle چه فرقی با هم دارن؟ 🤔
- هر دو تابع شباهتهای زیادی دارن و برای به تاخیر انداختن اجرای یک قطعه کد به کار میرن. به قول معروف برای Rate Limiting
- تابع Throttle مشخص میکنه که کدهای ما توی یک بازه زمانی مشخص فقط یک بار اجرا بشه
- مثلاً میخوایم یک قطعه کد توی بازه زمانی ۱۰ ثانیه، حداکثر یکبار اجرا بشه. اینجا از تابع Throttle استفاده میکنیم
- با تابع Debounce میتونیم مطمئن بشیم که یک قطعه کد دوباره اجرا نمیشه مگر اینکه مقدار مشخصی از زمان گذشته باشه
- معروفترین مثال Debounce برای پیادهسازی جستجوی لحظهای هست. ابتدا صبر میکنیم تا کاربر دست از تایپ کردن بکشه و بعد جستجو رو شروع میکنیم. مثلاً میگیم اگه از آخرین تایپ کاربر ۱ ثانیه گذشته بود جستجو رو شروع کن. در غیر این صورت، جستجو رو به تعویق بنداز
- به زودی توی دیتی نحوه پیادهسازی این توابع رو قرار میدم (منابع)
#tips
- هر دو تابع شباهتهای زیادی دارن و برای به تاخیر انداختن اجرای یک قطعه کد به کار میرن. به قول معروف برای Rate Limiting
- تابع Throttle مشخص میکنه که کدهای ما توی یک بازه زمانی مشخص فقط یک بار اجرا بشه
- مثلاً میخوایم یک قطعه کد توی بازه زمانی ۱۰ ثانیه، حداکثر یکبار اجرا بشه. اینجا از تابع Throttle استفاده میکنیم
- با تابع Debounce میتونیم مطمئن بشیم که یک قطعه کد دوباره اجرا نمیشه مگر اینکه مقدار مشخصی از زمان گذشته باشه
- معروفترین مثال Debounce برای پیادهسازی جستجوی لحظهای هست. ابتدا صبر میکنیم تا کاربر دست از تایپ کردن بکشه و بعد جستجو رو شروع میکنیم. مثلاً میگیم اگه از آخرین تایپ کاربر ۱ ثانیه گذشته بود جستجو رو شروع کن. در غیر این صورت، جستجو رو به تعویق بنداز
- به زودی توی دیتی نحوه پیادهسازی این توابع رو قرار میدم (منابع)
#tips
Stack Overflow
Difference between throttling and debouncing a function
Can anyone give me an in-simple-words explanation about the difference between throttling and debouncing a function for rate-limiting purposes?
To me, both seem to do the same the thing. I have che...
To me, both seem to do the same the thing. I have che...
👍27🔥6
🔺متد
- تا به حال جایی مجبور شدین از
- برای آشنایی با متد
https://ditty.ir/p/XolQJ
پ.ن: زحمت کد توی عکس رو تماماً GitHub Copilot کشیده 😁
#javanoscript
reduceRight کاملاً مشابه reduce عمل میکنه با این تفاوت که از راست به چپ پیمایش انجام میده- تا به حال جایی مجبور شدین از
reduceRight استفاده کنین؟- برای آشنایی با متد
reduce این پست رو بخونین:https://ditty.ir/p/XolQJ
پ.ن: زحمت کد توی عکس رو تماماً GitHub Copilot کشیده 😁
#javanoscript
👍24❤3👏3
Ditty | دیتی
🔺توابع Debounce و Throttle چه فرقی با هم دارن؟ 🤔 - هر دو تابع شباهتهای زیادی دارن و برای به تاخیر انداختن اجرای یک قطعه کد به کار میرن. به قول معروف برای Rate Limiting - تابع Throttle مشخص میکنه که کدهای ما توی یک بازه زمانی مشخص فقط یک بار اجرا بشه -…
🔺پیادهسازی توابع Throttle و Debounce توی جاوااسکریپت با جزییات فراوان:
https://ditty.ir/499
#javanoscript
https://ditty.ir/499
#javanoscript
دیتی | Ditty.ir
پیادهسازی توابع Throttle و Debounce در جاوااسکریپت
با دو تابع آشنا میشیم که کمک میکنن برنامهٔ بهینهتر و سریعتر و کاربرد پذیرتر داشته باشیم
🔥14👍8🎉1
🔺دوستان زحمت کشیدن و یک پکیج اختصاصی برای عمل تفریق توی جاوااسکریپت طراحی کردن: 😄
https://www.npmjs.com/package/subtract
#links
https://www.npmjs.com/package/subtract
#links
npm
npm: subtract
subtract numbers. Latest version: 0.0.3, last published: 7 years ago. Start using subtract in your project by running `npm i subtract`. There are no other projects in the npm registry using subtract.
😁29🤬10🤩3👏2🔥1
Ditty | دیتی
🔺دوستان زحمت کشیدن و یک پکیج اختصاصی برای عمل تفریق توی جاوااسکریپت طراحی کردن: 😄 https://www.npmjs.com/package/subtract #links
🔺در راستای زحمات دوستان، یک پکیج وجود داره به اسم is-odd با ۲۰۰هزار دانلود هفتگی که برای تشخیص عدد فرد استفاده میشه:
https://www.npmjs.com/package/is-odd
- یک پکیج دیگه وجود داره به اسم is-even که برای تشخیص عدد زوج استفاده میشه، ۴۲۹هزار نصب هفتگی داره و توی خودش داره به شکل زیر از پکیج is-odd استفاده میکنه:
https://www.npmjs.com/package/is-odd
- یک پکیج دیگه وجود داره به اسم is-even که برای تشخیص عدد زوج استفاده میشه، ۴۲۹هزار نصب هفتگی داره و توی خودش داره به شکل زیر از پکیج is-odd استفاده میکنه:
var isOdd = require('is-odd');
module.exports = function isEven(i) {
return !isOdd(i);
};
#tips😁49🤯8👍4👎3🔥2
🔺آقای مارتین فاولر میگه: یک برنامهنویس بد کدی مینویسه که فقط یک کامپیوتر بتونه اون رو درک کنه. اما یک برنامهنویس خوب کدی مینویسه که یک انسان بتونه اون رو متوجه بشه!
- توی Code Review هایی که انجام میدم و رزومههایی که بررسی میکنم، معمولاً اولین و مهمترین معیار برای قبولی کد، تمیزی و خوانایی اون هست. و کار کردن کد اولویت دوم
- میخوایم با چند مقاله آشنا بشیم که کمک میکنن کدهای تمیزتر و خواناتری داشته باشیم:
• Clean Code Explained – A Practi...
• Clean Code concepts adapted for...
• Clean Code Practice: How to write...
• JavaScript Clean Coding Best P...
• Function parameters in JavaScript
• Keeping your code clean
• Best Practices for Using Modern...
• Best practices for cross node/w...
• Writing Clean Code
• Writing Clean Code and The Pra...
• Clean code, dirty code, human...
• Practical Ways to Write Better...
• The Must-Know Clean Code Princ...
منبع
#javanoscript
- توی Code Review هایی که انجام میدم و رزومههایی که بررسی میکنم، معمولاً اولین و مهمترین معیار برای قبولی کد، تمیزی و خوانایی اون هست. و کار کردن کد اولویت دوم
- میخوایم با چند مقاله آشنا بشیم که کمک میکنن کدهای تمیزتر و خواناتری داشته باشیم:
• Clean Code Explained – A Practi...
• Clean Code concepts adapted for...
• Clean Code Practice: How to write...
• JavaScript Clean Coding Best P...
• Function parameters in JavaScript
• Keeping your code clean
• Best Practices for Using Modern...
• Best practices for cross node/w...
• Writing Clean Code
• Writing Clean Code and The Pra...
• Clean code, dirty code, human...
• Practical Ways to Write Better...
• The Must-Know Clean Code Princ...
منبع
#javanoscript
freeCodeCamp.org
Clean Code Explained – A Practical Introduction to Clean Coding for Beginners
By Yiğit Kemal Erinç "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
🔥37👍20❤9
🔺آمار نظرسنجی Stackoverflow سال ۲۰۲۲ هم منتشر شد
» نکتههایی از این آمار:
• برای دهمین سال پیاپی و طبق معمول، جاوااسکریپت پر استفادهترین زبان
• دیتابیس MySQL پراستفادهترین دیتابیس
• نود جیاس و ریاکت پراستفادهترین فریمورکهای وب
• ویاس کد (VS Code) پراستفادهترین IDE
• زبان Rust دوستداشتنیترین زبان و MATLAB ترسناکترین
• دوستداشتنیترین دیتابیس PostgreSQL
• دوستداشتنیترین فریمورکهای وب Phoenix و Svelte و Deno
• ترسناکترین فریمورکهای وب Angular.js و Drupal و jQuery
• دوستداشتنیترین ابزارها Docker و Kubernetes
• دوستداشتنیترین IDE ها Neovim و VS Code
• ترسناکترین IDE ها NetBeans و Eclipse
• به طور میانگین، از سال ۲۰۲۱ تا ۲۰۲۲ میزان دستمزدها ۲۳٪ افزایش داشته
• زبانهای Clojure و Erlang و #F پردرآمدترین زبانها
» آمار با جزییات کامل
#stats
» نکتههایی از این آمار:
• برای دهمین سال پیاپی و طبق معمول، جاوااسکریپت پر استفادهترین زبان
• دیتابیس MySQL پراستفادهترین دیتابیس
• نود جیاس و ریاکت پراستفادهترین فریمورکهای وب
• ویاس کد (VS Code) پراستفادهترین IDE
• زبان Rust دوستداشتنیترین زبان و MATLAB ترسناکترین
• دوستداشتنیترین دیتابیس PostgreSQL
• دوستداشتنیترین فریمورکهای وب Phoenix و Svelte و Deno
• ترسناکترین فریمورکهای وب Angular.js و Drupal و jQuery
• دوستداشتنیترین ابزارها Docker و Kubernetes
• دوستداشتنیترین IDE ها Neovim و VS Code
• ترسناکترین IDE ها NetBeans و Eclipse
• به طور میانگین، از سال ۲۰۲۱ تا ۲۰۲۲ میزان دستمزدها ۲۳٪ افزایش داشته
• زبانهای Clojure و Erlang و #F پردرآمدترین زبانها
» آمار با جزییات کامل
#stats
👍44❤8👎2
🔺توی #تایپاسکریپت اگه بخوایم یک مقدار رو غیر قابل تغییر یا Immutable کنیم، راههای زیادی وجود داره که یکی از جالبترین اونها استفاده از Const Assertion هست
- با این ویژگی اینجا آشنا بشین:
ditty.ir/500 💯
#typenoscript
- با این ویژگی اینجا آشنا بشین:
ditty.ir/500 💯
#typenoscript
دیتی | Ditty.ir
با Const Assertion تایپاسکریپت چه کارهایی میشه کرد؟
با قابلیتی آشنا میشیم که خیلی راحت اجازه میده مقادیری غیر قابل تغییر یا به قول معروف Immutable داشته باشیم
🔥17👍8