Ditty | دیتی – Telegram
Ditty | دیتی
3.19K subscribers
194 photos
20 videos
4 files
387 links
دیتی | دنیای ساده‌شدهٔ برنامه‌نویسی وب
https://ditty.ir
Download Telegram
🔺این مقاله خیلی جالبه: ۶ قطعه کد کاربردی CSS که هر توسعه‌دهندهٔ فرانت‌اند باید اونها رو بدونه:

https://web.dev/articles/6-css-snippets-every-front-end-developer-should-know-in-2023

#css
👍28💯3🔥2
🔺خیلی لذت بخشه وقتی روی پروژه‌های اپن‌سورس کار می‌کنی. مخصوصاً وقتی اولین کارت باشه

کمیل این بازی سودوکو رو طراحی کرده و سورسش رو هم روی گیت‌هاب گذاشته که نکته‌های خوبی می‌تونین ازش یاد بگیرین:
https://sudoku.komeilmehranfar.com

سورس کد:
https://github.com/komeilmehranfar/sudoku-core

اطلاعات بیشتر:
https://www.linkedin.com/posts/komeilmehranfar_sudoku-core


پ.ن: شما هم اگه پروژه اپن‌سورسی دارین، توی کامنت‌ها به اشتراک بذارین

#links
👌15👍43
🔺گوگل برای سنجش سرعت و Interactivity یک وب‌سایت از معیار FID از Core Web Vitals استفاده می‌کنه

- این معیار فاصلهٔ زمانی بین اولین تعامل کاربر با صفحه (مثل کلیک روی یک لینک یا دکمه) تا پاسخ مرورگر به اون تعامل رو اندازه‌گیری می‌کنه

- اگه یک امتیاز خوب می‌خوایم، باید زیر ۱۰۰ میلی‌ثانیه به این تعامل پاسخ بدیم و برای این کار باید نکته‌ها و تکنیک‌های #بهینه‌سازی مختلفی رو به کار بگیریم

- توی پست جدید دیتی با دلایل FID ضعیف و همچنین با نکته‌ها و تکنیک‌هایی برای داشتن یک FID عالی آشنا می‌شیم: 🚀
ditty.ir/533

#performance
👍13🔥7🤯1
🔺می‌خواید ببینید یک وب‌سایت از چه فونت‌هایی استفاده می‌کنه؟ این ابزار رو ببینید:
https://fonty.io

#links
🔥18👍72👏1
🔺برای نام‌گذاری تایپ‌ها توی تایپ‌اسکریپت چه استانداردهایی وجود داره؟

۱. از حالت PascalCase استفاده کنیم. مثلاً User یا UserActivity

۲. از اسم‌هایی که برای شما و بقیه توسعه‌دهنده‌ها خوانا و واضح هستن استفاده کنیم. مثلاً CustomerRecord بجای Record

۳. از حالت مفرد بجای جمع استفاده کنیم. مثلاً UserActivity بجای UserActivities. اگه نیاز به حالت جمع بود می‌تونیم براحتی از UserActivity[] استفاده کنیم

۴. اگه از اینترفیس‌ها استفاده می‌کنین، از حرف I ابتدای اسم استفاده کنیم (اختیاری). مثلاً IBook

۵. از اسم‌های کلی (جنرال) برای تایپ‌های مشابه خودداری کنیم. و بهتره تایپ‌ها کاربرد مشخصی داشته باشن (اصل چهارم اصول سالید)

۶. قانون Hungarian notation. یعنی از آوردن نوع تایپ توی اسم تایپ خودداری کنیم. مثلاً UserNameString

۷. برای جنریک‌ها اشکالی نداره که از اسم‌های خوانا استفاده کنیم. مثلاً func<TItem> بجای func<T>

مقالات تایپ‌اسکریپت:
ditty.ir/c/typenoscript

#typenoscript
👍4610🔥3🆒3
🔺منظور از Shallow Rendering توی برنامه های فرانت‌اند چیه؟ 🤔

ـ Shallow Rendering یک تکنیک تست‌نویسی هست که بیشتر توی فریم‌ورک‌های Component-Based مثل ویو و ری‌اکت دیده میشه

- وقتی می‌خوایم یک کامپوننت رو با تکنیک Shallow Rendering تست کنیم، هنگام تست فقط خود کامپوننت رندر میشه و کامپوننت‌های داخلی اون کامپوننت رندر نمیشن تا توجه و تمرکز روی خود کامپوننت والد باشه

- با این کار، تست کردن راحت‌تر، سریع‌تر و دقیق‌تر خواهد بود. اما باید بدونیم که استفاده از Shallow Rendering همیشه خوب نیست.

از معایب Shallow Rendering اینه که:
- ممکنه رفتارهای اون کامپوننت رو توی محیط‌های واقعی نادیده بگیریم
- اگه کامپوننت به کامپوننت‌های داخلی وابستگی داشته باشه ممکنه حتی باعث سخت‌تر شدن تست بشه
- باعث نادیده گرفته‌شدن خیلی از تعامل‌های بین کامپوننت والد و فرزندها میشه که باعث میشه تست کمتر قابل اعتماد باشه
- پس بهتره از این تکنیک هم مثل هر چیز دیگه‌ای با آگاهی استفاده کنیم
#testing
👍342
🔺عملگر Non-null Assertion توی تایپ‌اسکریپت چیه؟ 🤔

- توی این عکس اگه به انتهای خط اول نگاه کنین، یک علامت تعجب انتهای اون عبارت قرار گرفته

- این عملگر به تایپ‌اسکریپت میگه که ما مطمئن هستیم این عبارت 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
👍134
روحتون شـــاد، در یــاد ما زنــده خواهید مــاند 🌹💚

#ps752
#iWillLightACandleToo
57💔19🤔6🤪2👍1👎1😁1
🔺سوال مصاحبه: چرا توی JSX ری‌اکت، برای رندر کردن یک لیست از ()forEach. بجای ()map. استفاده نمی‌کنیم؟

- جوابتون رو توی کامنت‌ها به اشتراک بذارین👇👏

#quiz
👍23🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔺ترفند: توی کنسول کروم و فایرفاکس می‌تونیم با استفاده از 0$ به آخرین المنتی که توی تب Inspect انتخاب شده دسترسی داشته باشیم
#tricks
🔥35👍226
🔺یه نکتهٔ ریز ری‌اکتی که دوست داشتم براتون به اشتراک بذارم

- همونطور که می‌دونیم وقتی توی یک کامپوننت والد تغییری رخ میده (مثلاً 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👍136🔥1
🔺نویسندهٔ کتاب You Don't Know JS، آقای کایل سیمپسون یه جایی درباره رجکت شدنش توی مصاحبه با یه شرکت معروف صحبت می‌کرد و می‌گفت اون شرکت با دلیل اینکه «فکر نمی‌کنیم به اندازهٔ کافی جاوااسکریپت بلد باشی» من رو رد کردن.

- داستان‌های جالبی رو از رجکت شدن افراد توی مصاحبه‌های شغلی اینجا می‌تونین ببینین:
https://rejected.us

#interview
🤣52👍21😁53
🔺می‌خواید به صورت عملی ببینید #جاوااسکریپت چطوری عملیات Async رو مدیریت می‌کنه؟ اینجا رو ببینید:👇
https://www.jsv9000.app

#links
👍316🔥4🙏2
🔺همینطور که به روز ولنتاین نزدیک می‌شیم، بد نیست کدهای HTTP رو با مثال‌هایی از این روز یاد بگیریم:
HTTP codes as Valentine’s Day comics

#fun
😁19🤣94👍2😍2
🔺 تجربه مصاحبه

دوستان توی #مصاحبه وقتی از شما سوالی میشه، فوراً شروع نکنین به جواب دادن. سعی کنین اطلاعات بیشتری از سوال بدست بیارین.

مثلاً از شما پرسیده میشه که بزرگترین چالشی که توی آخرین پروژه‌تون داشتین چی بوده. شما اینجا بهتره تلاش کنین که منظور سوال رو متوجه بشین. چه نوع چالشی منظورش هست؟ فنی؟ ارتباطی؟

یک جواب مناسب می‌تونه این باشه:
«راستش توی پروژه قبلی چالش‌های مختلفی داشتیم. هم فنی و هم غیر فنی. اما میشه لطفاً مشخص کنین که چه نوع چالشی منظورتون هست؟»

با این کار هم سوال رو دقیق‌تر متوجه میشین و می‌تونین جواب مناسب‌تری بدین، و هم زمان بیشتری برای فکر کردن به جواب بدست میارین.

#tips
👍10014