Ditty | دیتی
برای سلامتی «صابر راستی کردار» دعا کنیم و ازش حمایت کنیم. صابر عزیز که با فونتهای قشنگش، دنیای ما رو قشنگتر کرد 🤲❤️ جزییات بیشتر در وبلاگ صابر: https://rastikerdar.blog.ir اگه قصد حمایت دارین: https://rastikerdar.github.io/vazirmatn #prayforsaber
خبر رسیده که متأسفانه صابر عزیز از میان ما رفته 😔🖤🥀
💔137🕊18❤4😁1
🔺این مقاله خیلی جالبه: ۶ قطعه کد کاربردی CSS که هر توسعهدهندهٔ فرانتاند باید اونها رو بدونه:
https://web.dev/articles/6-css-snippets-every-front-end-developer-should-know-in-2023
#css
https://web.dev/articles/6-css-snippets-every-front-end-developer-should-know-in-2023
#css
web.dev
6 CSS snippets every front-end developer should know in 2023 | Articles | web.dev
Toolbelt worthy, powerful, and stable CSS you can use today.
👍28💯3🔥2
🔺خیلی لذت بخشه وقتی روی پروژههای اپنسورس کار میکنی. مخصوصاً وقتی اولین کارت باشه
کمیل این بازی سودوکو رو طراحی کرده و سورسش رو هم روی گیتهاب گذاشته که نکتههای خوبی میتونین ازش یاد بگیرین:
https://sudoku.komeilmehranfar.com
سورس کد:
https://github.com/komeilmehranfar/sudoku-core
اطلاعات بیشتر:
https://www.linkedin.com/posts/komeilmehranfar_sudoku-core
پ.ن: شما هم اگه پروژه اپنسورسی دارین، توی کامنتها به اشتراک بذارین
#links
کمیل این بازی سودوکو رو طراحی کرده و سورسش رو هم روی گیتهاب گذاشته که نکتههای خوبی میتونین ازش یاد بگیرین:
https://sudoku.komeilmehranfar.com
سورس کد:
https://github.com/komeilmehranfar/sudoku-core
اطلاعات بیشتر:
https://www.linkedin.com/posts/komeilmehranfar_sudoku-core
پ.ن: شما هم اگه پروژه اپنسورسی دارین، توی کامنتها به اشتراک بذارین
#links
Linkedin
Sign Up | LinkedIn
500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.
👌15👍4❤3
🔺گوگل برای سنجش سرعت و Interactivity یک وبسایت از معیار FID از Core Web Vitals استفاده میکنه
- این معیار فاصلهٔ زمانی بین اولین تعامل کاربر با صفحه (مثل کلیک روی یک لینک یا دکمه) تا پاسخ مرورگر به اون تعامل رو اندازهگیری میکنه
- اگه یک امتیاز خوب میخوایم، باید زیر ۱۰۰ میلیثانیه به این تعامل پاسخ بدیم و برای این کار باید نکتهها و تکنیکهای #بهینهسازی مختلفی رو به کار بگیریم
- توی پست جدید دیتی با دلایل FID ضعیف و همچنین با نکتهها و تکنیکهایی برای داشتن یک FID عالی آشنا میشیم: 🚀
ditty.ir/533
#performance
- این معیار فاصلهٔ زمانی بین اولین تعامل کاربر با صفحه (مثل کلیک روی یک لینک یا دکمه) تا پاسخ مرورگر به اون تعامل رو اندازهگیری میکنه
- اگه یک امتیاز خوب میخوایم، باید زیر ۱۰۰ میلیثانیه به این تعامل پاسخ بدیم و برای این کار باید نکتهها و تکنیکهای #بهینهسازی مختلفی رو به کار بگیریم
- توی پست جدید دیتی با دلایل FID ضعیف و همچنین با نکتهها و تکنیکهایی برای داشتن یک FID عالی آشنا میشیم: 🚀
ditty.ir/533
#performance
دیتی | Ditty.ir
Core Web Vitals به زبان ساده - FID
این معیار یکی از ۳ معیار اصلی Core Web Vitals هست که برای سنجش Interactivity یا Responsiveness یک صفحه معرفی شده. توی این پست با دلایل یک FID ضعیف و همچنین تکنیکهایی برای داشتن یک FID عالی آشنا میشیم
👍13🔥7🤯1
🔺میخواید ببینید یک وبسایت از چه فونتهایی استفاده میکنه؟ این ابزار رو ببینید:
https://fonty.io
#links
https://fonty.io
#links
🔥18👍7❤2👏1
🔺برای نامگذاری تایپها توی تایپاسکریپت چه استانداردهایی وجود داره؟
۱. از حالت PascalCase استفاده کنیم. مثلاً User یا UserActivity
۲. از اسمهایی که برای شما و بقیه توسعهدهندهها خوانا و واضح هستن استفاده کنیم. مثلاً CustomerRecord بجای Record
۳. از حالت مفرد بجای جمع استفاده کنیم. مثلاً UserActivity بجای UserActivities. اگه نیاز به حالت جمع بود میتونیم براحتی از
۴. اگه از اینترفیسها استفاده میکنین، از حرف
۵. از اسمهای کلی (جنرال) برای تایپهای مشابه خودداری کنیم. و بهتره تایپها کاربرد مشخصی داشته باشن (اصل چهارم اصول سالید)
۶. قانون Hungarian notation. یعنی از آوردن نوع تایپ توی اسم تایپ خودداری کنیم. مثلاً UserNameString
۷. برای جنریکها اشکالی نداره که از اسمهای خوانا استفاده کنیم. مثلاً
مقالات تایپاسکریپت:
ditty.ir/c/typenoscript
#typenoscript
۱. از حالت PascalCase استفاده کنیم. مثلاً User یا UserActivity
۲. از اسمهایی که برای شما و بقیه توسعهدهندهها خوانا و واضح هستن استفاده کنیم. مثلاً CustomerRecord بجای Record
۳. از حالت مفرد بجای جمع استفاده کنیم. مثلاً UserActivity بجای UserActivities. اگه نیاز به حالت جمع بود میتونیم براحتی از
UserActivity[] استفاده کنیم۴. اگه از اینترفیسها استفاده میکنین، از حرف
I ابتدای اسم استفاده کنیم (اختیاری). مثلاً IBook۵. از اسمهای کلی (جنرال) برای تایپهای مشابه خودداری کنیم. و بهتره تایپها کاربرد مشخصی داشته باشن (اصل چهارم اصول سالید)
۶. قانون Hungarian notation. یعنی از آوردن نوع تایپ توی اسم تایپ خودداری کنیم. مثلاً UserNameString
۷. برای جنریکها اشکالی نداره که از اسمهای خوانا استفاده کنیم. مثلاً
func<TItem> بجای func<T>مقالات تایپاسکریپت:
ditty.ir/c/typenoscript
#typenoscript
👍46❤10🔥3🆒3
Ditty | دیتی
🔺اعتبارسنجی فرمهای HTML آسونتر از همیشه 😋 - با کمک دوستان، ابزاری رو توسعه دادیم که بتونیم با کمترین کد و به سادهترین حالت، یک فرم HTML رو اعتبارسنجی کنیم (مثل عکس) - اسمش رو گذاشتیم Facile Validator (فَسیل ولیدیتور) که اون رو به تازگی و به صورت رسمی…
این پکیج رو آپدیت کردیم و چند تا ویژگی اضافه کردیم. از جمله قابلیت نمایش پیامهای دلخواه وقتی یک Regex با خطا مواجه میشه.
همچنین آموزش استفاده از اون توی ریاکت رو هم قرار دادم.
ممنون میشم حمایت کنین 😉✌️👇
https://github.com/upjs/facile-validator
#tools
همچنین آموزش استفاده از اون توی ریاکت رو هم قرار دادم.
ممنون میشم حمایت کنین 😉✌️👇
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
👏15❤1
Ditty | دیتی
🔺"خب به آخر مصاحبه رسیدیم. آیا سوالی هست که دوست داری بپرسی؟" - حتماً این سوال رو توی هر مصاحبهای ازمون پرسیدن. پاسخهای درست به این سوال، قطعاً ما رو توی ذهن استخدامکننده از بقیه کاندیداها متمایز میکنه و شانس ما رو برای گرفتن جواب مثبت افزایش میده -…
یک نمونه دیگه از این دست سوالات رو میتونین اینجا پیدا کنین:
https://github.com/viraptor/reverse-interview
که به فارسی هم ترجمه شده:
https://github.com/Kaaveh/reverse-interview/blob/master/translations/PERSIAN.md
#links
https://github.com/viraptor/reverse-interview
که به فارسی هم ترجمه شده:
https://github.com/Kaaveh/reverse-interview/blob/master/translations/PERSIAN.md
#links
GitHub
GitHub - viraptor/reverse-interview: Questions to ask the company during your interview
Questions to ask the company during your interview - viraptor/reverse-interview
🔥16
🔺منظور از Shallow Rendering توی برنامه های فرانتاند چیه؟ 🤔
ـ Shallow Rendering یک تکنیک تستنویسی هست که بیشتر توی فریمورکهای Component-Based مثل ویو و ریاکت دیده میشه
- وقتی میخوایم یک کامپوننت رو با تکنیک Shallow Rendering تست کنیم، هنگام تست فقط خود کامپوننت رندر میشه و کامپوننتهای داخلی اون کامپوننت رندر نمیشن تا توجه و تمرکز روی خود کامپوننت والد باشه
- با این کار، تست کردن راحتتر، سریعتر و دقیقتر خواهد بود. اما باید بدونیم که استفاده از Shallow Rendering همیشه خوب نیست.
از معایب Shallow Rendering اینه که:
- ممکنه رفتارهای اون کامپوننت رو توی محیطهای واقعی نادیده بگیریم
- اگه کامپوننت به کامپوننتهای داخلی وابستگی داشته باشه ممکنه حتی باعث سختتر شدن تست بشه
- باعث نادیده گرفتهشدن خیلی از تعاملهای بین کامپوننت والد و فرزندها میشه که باعث میشه تست کمتر قابل اعتماد باشه
- پس بهتره از این تکنیک هم مثل هر چیز دیگهای با آگاهی استفاده کنیم
#testing
ـ Shallow Rendering یک تکنیک تستنویسی هست که بیشتر توی فریمورکهای Component-Based مثل ویو و ریاکت دیده میشه
- وقتی میخوایم یک کامپوننت رو با تکنیک Shallow Rendering تست کنیم، هنگام تست فقط خود کامپوننت رندر میشه و کامپوننتهای داخلی اون کامپوننت رندر نمیشن تا توجه و تمرکز روی خود کامپوننت والد باشه
- با این کار، تست کردن راحتتر، سریعتر و دقیقتر خواهد بود. اما باید بدونیم که استفاده از Shallow Rendering همیشه خوب نیست.
از معایب Shallow Rendering اینه که:
- ممکنه رفتارهای اون کامپوننت رو توی محیطهای واقعی نادیده بگیریم
- اگه کامپوننت به کامپوننتهای داخلی وابستگی داشته باشه ممکنه حتی باعث سختتر شدن تست بشه
- باعث نادیده گرفتهشدن خیلی از تعاملهای بین کامپوننت والد و فرزندها میشه که باعث میشه تست کمتر قابل اعتماد باشه
- پس بهتره از این تکنیک هم مثل هر چیز دیگهای با آگاهی استفاده کنیم
#testing
👍34❤2
🔺عملگر Non-null Assertion توی تایپاسکریپت چیه؟ 🤔
- توی این عکس اگه به انتهای خط اول نگاه کنین، یک علامت تعجب انتهای اون عبارت قرار گرفته
- این عملگر به تایپاسکریپت میگه که ما مطمئن هستیم این عبارت Null نیست و لطفاً توی ادامه Null بودن اون رو بررسی نکن
- بدون اون عملگر، تایپاسکریپت توی خط ۳ خطا نشون میداد که:
'el' is possibly 'null'
- این کد رو میتونید توی این صفحه اجرا کنین
#typenoscript
- توی این عکس اگه به انتهای خط اول نگاه کنین، یک علامت تعجب انتهای اون عبارت قرار گرفته
- این عملگر به تایپاسکریپت میگه که ما مطمئن هستیم این عبارت Null نیست و لطفاً توی ادامه Null بودن اون رو بررسی نکن
- بدون اون عملگر، تایپاسکریپت توی خط ۳ خطا نشون میداد که:
'el' is possibly 'null'
- این کد رو میتونید توی این صفحه اجرا کنین
#typenoscript
👍47👌1💯1
🔺معیار LCP از Core Web Vitals
- گوگل با LCP مدت زمانی که طول میکشه بزرگترین المنت توی Viewport لود بشه رو اندازهگیری میکنه
- دلایلی مثل غیر بهینهبودنِ سرور و تصاویر و فایلهای جاوااسکریپتی و فونتها میتونن امتیاز پایینی برای LCP رقم بزنن
- با استفاده از تکنیکهایی مثل SSR و SSG و بهینهسازی تصاویر و ریسورسها میتونیم یک LCP عالی داشته باشیم
- توی این پست بیشتر با دلایل LCP ضعیف و با نکاتی برای بهبود اون آشنا میشیم:
ditty.ir/535
#performance
- گوگل با LCP مدت زمانی که طول میکشه بزرگترین المنت توی Viewport لود بشه رو اندازهگیری میکنه
- دلایلی مثل غیر بهینهبودنِ سرور و تصاویر و فایلهای جاوااسکریپتی و فونتها میتونن امتیاز پایینی برای LCP رقم بزنن
- با استفاده از تکنیکهایی مثل SSR و SSG و بهینهسازی تصاویر و ریسورسها میتونیم یک LCP عالی داشته باشیم
- توی این پست بیشتر با دلایل LCP ضعیف و با نکاتی برای بهبود اون آشنا میشیم:
ditty.ir/535
#performance
دیتی | Ditty.ir
Core Web Vitals به زبان ساده - LCP
گوگل با LCP مدت زمانی که طول میکشه بزرگترین المنت توی Viewport لود بشه رو اندازهگیری میکنه. توی این پست با دلایل LCP ضعیف و همچنین با نکاتی برای بهبود این معیار آشنا میشیم.
👍13❤4
🔺هزاران آیکون SVG 👌
• https://iconbuddy.app
• https://fonty.io
• https://iconoir.com
• https://healthicons.org
• https://atlasicons.vectopus.com
• https://www.mingcute.com
#links
• https://iconbuddy.app
• https://fonty.io
• https://iconoir.com
• https://healthicons.org
• https://atlasicons.vectopus.com
• https://www.mingcute.com
#links
Free SVG Icons
Iconbuddy — Free and Open Source SVG icons
Browse and download 300,000+ SVG icons from multiple open source icon libraries. Customize color, size, and export as SVG, PNG, JSX, or Base64.
👍21👌2
🔺سوال مصاحبه: چرا توی JSX ریاکت، برای رندر کردن یک لیست از
- جوابتون رو توی کامنتها به اشتراک بذارین👇👏
#quiz
()forEach. بجای ()map. استفاده نمیکنیم؟- جوابتون رو توی کامنتها به اشتراک بذارین👇👏
#quiz
👍23🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔺ترفند: توی کنسول کروم و فایرفاکس میتونیم با استفاده از
#tricks
0$ به آخرین المنتی که توی تب Inspect انتخاب شده دسترسی داشته باشیم#tricks
🔥35👍22❤6
🔺یه نکتهٔ ریز ریاکتی که دوست داشتم براتون به اشتراک بذارم
- همونطور که میدونیم وقتی توی یک کامپوننت والد تغییری رخ میده (مثلاً State بروز میشه)، باعث میشه کامپوننتهای فرزند Re-render بشن. برای جلوگیری از این اتفاق میتونیم از
- کامپوننتی که از
- حالا فرض کنیم میخوایم از کامپوننت والد به فرزند یک آبجکت یا یک تابع (Callback) رو پاس بدیم. اینجا حتی اگه تغییری توی این آبجکت یا تابع رخ نده، در صورت ری-رندر شدن کامپوننت والد، کامپوننتهای فرزند در هر صورت (با
- دلیل این اتفاق اینه که توی Re-render هایی که برای یک کامپوننت رخ میده، تمام State ها از نو ساخته میشن و بنابراین اگه یک State از نوع آبجکت داشته باشیم، اون آبجکت توی رندر اولیه کاملاً متفاوت هست با آبجکتی که توی رندرهای بعدی داریم. گرچه ممکنه تغییری توی ظاهر آبجکت رخ نده، میدونیم که دو آبجکت با ظاهر یکسان با هم برابر نیستن
- بنابراین اگه یک کامپوننت فرزند داره از
- اینجاست که هوکهای
- بنابراین، اگه جایی از برنامه پرفورمنس برامون اهمیت داره و به کامپوننتهای فرزند داریم مقادیر غیر Primitive (آبجکت، آرایه، تابع کالبک) پاس میدیم، بهتره به این نکته توجه کنیم
- مثال عملی رو میتونید از اینجا ببینید:
https://bit.ly/3O9oTIm
پ.ن: این فقط یکی از کاربردهای
#react #tricks
- همونطور که میدونیم وقتی توی یک کامپوننت والد تغییری رخ میده (مثلاً State بروز میشه)، باعث میشه کامپوننتهای فرزند Re-render بشن. برای جلوگیری از این اتفاق میتونیم از
React.memo تو کامپوننت فرزند استفاده کنیم- کامپوننتی که از
React.memo استفاده میکنه، فقط زمانی Re-render میشه که تغییری توی Props اون رخ بده- حالا فرض کنیم میخوایم از کامپوننت والد به فرزند یک آبجکت یا یک تابع (Callback) رو پاس بدیم. اینجا حتی اگه تغییری توی این آبجکت یا تابع رخ نده، در صورت ری-رندر شدن کامپوننت والد، کامپوننتهای فرزند در هر صورت (با
memo یا بدون اون) ری-رندر میشن- دلیل این اتفاق اینه که توی Re-render هایی که برای یک کامپوننت رخ میده، تمام State ها از نو ساخته میشن و بنابراین اگه یک State از نوع آبجکت داشته باشیم، اون آبجکت توی رندر اولیه کاملاً متفاوت هست با آبجکتی که توی رندرهای بعدی داریم. گرچه ممکنه تغییری توی ظاهر آبجکت رخ نده، میدونیم که دو آبجکت با ظاهر یکسان با هم برابر نیستن
- بنابراین اگه یک کامپوننت فرزند داره از
React.memo استفاده میکنه و در صورتی که داریم یک آبجکت یا تابع (توابع هم نوعی آبجکت هستن) رو به اون کامپوننت پاس میدیم، با Re-render شدن کامپوننت والد، کامپوننت فرزند باز هم Re-render میشه. چون React.memo میبینه که پراپرتیها با هم برابر نیستن {} ==! {}- اینجاست که هوکهای
useCallback و useMemo به کارمون میان. این هوکها تضمین میکنن که توی رندرهای متعدد، مقدارها و توابع ما بدون تغییر باقی میمونن و توی هر رندر دقیقاً همون مقدار پیشین رو برمیگردونن (از useRef هم میشه استفاده کرد)- بنابراین، اگه جایی از برنامه پرفورمنس برامون اهمیت داره و به کامپوننتهای فرزند داریم مقادیر غیر Primitive (آبجکت، آرایه، تابع کالبک) پاس میدیم، بهتره به این نکته توجه کنیم
- مثال عملی رو میتونید از اینجا ببینید:
https://bit.ly/3O9oTIm
پ.ن: این فقط یکی از کاربردهای
useMemo هست. کاربرد اصلی اون کش کردن خروجی توابع هست.#react #tricks
👌49👍13❤6🔥1
🔺نویسندهٔ کتاب You Don't Know JS، آقای کایل سیمپسون یه جایی درباره رجکت شدنش توی مصاحبه با یه شرکت معروف صحبت میکرد و میگفت اون شرکت با دلیل اینکه «فکر نمیکنیم به اندازهٔ کافی جاوااسکریپت بلد باشی» من رو رد کردن.
- داستانهای جالبی رو از رجکت شدن افراد توی مصاحبههای شغلی اینجا میتونین ببینین:
https://rejected.us
#interview
- داستانهای جالبی رو از رجکت شدن افراد توی مصاحبههای شغلی اینجا میتونین ببینین:
https://rejected.us
#interview
🤣52👍21😁5❤3
🔺میخواید به صورت عملی ببینید #جاوااسکریپت چطوری عملیات Async رو مدیریت میکنه؟ اینجا رو ببینید:👇
https://www.jsv9000.app
#links
https://www.jsv9000.app
#links
👍31❤6🔥4🙏2
🔺همینطور که به روز ولنتاین نزدیک میشیم، بد نیست کدهای HTTP رو با مثالهایی از این روز یاد بگیریم:
HTTP codes as Valentine’s Day comics
#fun
HTTP codes as Valentine’s Day comics
#fun
Medium
HTTP codes as Valentine’s Day comics
With Valentine’s Day around the corner, it is a time for romantic hopefuls to ask out the object of their affection, and await an answer…
😁19🤣9❤4👍2😍2
🔺 تجربه مصاحبه
دوستان توی #مصاحبه وقتی از شما سوالی میشه، فوراً شروع نکنین به جواب دادن. سعی کنین اطلاعات بیشتری از سوال بدست بیارین.
مثلاً از شما پرسیده میشه که بزرگترین چالشی که توی آخرین پروژهتون داشتین چی بوده. شما اینجا بهتره تلاش کنین که منظور سوال رو متوجه بشین. چه نوع چالشی منظورش هست؟ فنی؟ ارتباطی؟
یک جواب مناسب میتونه این باشه:
«راستش توی پروژه قبلی چالشهای مختلفی داشتیم. هم فنی و هم غیر فنی. اما میشه لطفاً مشخص کنین که چه نوع چالشی منظورتون هست؟»
با این کار هم سوال رو دقیقتر متوجه میشین و میتونین جواب مناسبتری بدین، و هم زمان بیشتری برای فکر کردن به جواب بدست میارین.
#tips
دوستان توی #مصاحبه وقتی از شما سوالی میشه، فوراً شروع نکنین به جواب دادن. سعی کنین اطلاعات بیشتری از سوال بدست بیارین.
مثلاً از شما پرسیده میشه که بزرگترین چالشی که توی آخرین پروژهتون داشتین چی بوده. شما اینجا بهتره تلاش کنین که منظور سوال رو متوجه بشین. چه نوع چالشی منظورش هست؟ فنی؟ ارتباطی؟
یک جواب مناسب میتونه این باشه:
«راستش توی پروژه قبلی چالشهای مختلفی داشتیم. هم فنی و هم غیر فنی. اما میشه لطفاً مشخص کنین که چه نوع چالشی منظورتون هست؟»
با این کار هم سوال رو دقیقتر متوجه میشین و میتونین جواب مناسبتری بدین، و هم زمان بیشتری برای فکر کردن به جواب بدست میارین.
#tips
👍100❤14