🔺به کمک سایت زیر میتونین ببینین رنگ پسزمینهی انتخابی با رنگ متن و عکسهای دلخواه شما چقدر Contrast دارند.
https://color.review/
#link #tool #color #contrast
@ProGraphs
https://color.review/
#link #tool #color #contrast
@ProGraphs
Color.review
Colors that look and work great for everyone
A modern tool for exploring and finding accessible colors. Make sure that everyone can see your creations.
🔺eCommerce Website Design Gallery & Tech Inspiration ✨
https://ecomm.design/
#link #Inspiration #ecommerce #design
@ProGraphs
https://ecomm.design/
#link #Inspiration #ecommerce #design
@ProGraphs
eCommerce Website Design Gallery & Tech Inspiration
Ecomm.Design - Ecommerce Website Design Gallery and Tech Inspiration
Ecomm.design aims to showcase an eclectic mix of stores across many different verticals, with less of a focus on front-end experimentation and more on the metrics and UX practices that matter to ecommerce.
ProGraphs
منظور از "callback hell" در جاوااسکریپت چیست؟ چه زمانی این اتفاق میافتد؟ راه حل این مشکل چیست؟ #interviewquestion #js @ProGraphs
جواب:
معمولا برنامههای جاوااسکریپتی ما، از نظر زمانی به قسمتهای مختلف تقسیم میشوند. مثلا زمانی که نتیجهی یک درخواست را از سرور دریافت میکنیم. یا زمانی که کاربر بر روی یک دکمه کلیک میکند.
یکی از پترنها برای انجام عملیات async در جاوااسکریپت، callbackها هستند:
اما آیا تنها مشکل callbackها nest شدن آنها داخل هم و کاهش خوانایی کد است؟
خیر! callbackها مشکلات پایهای و مهمتری هم ایجاد میکنند.
برای مثال با توجه به اینکه callback را به یک تابع دیگر ارسال میکنیم و تابع مورد نظر، callback را صدا میکند، عملا کنترل callback از دست ما خارج میشود. در نتیجه ممکن است تابع مورد نظر، callback را بیش از یک بار صدا کند، اصلا صدا نکند و یا حتی گاهی به صورت async و گاهی به صورت synchronous صدا کند.
همچنین این مساله مشکلاتی در زمینه separation of concerns ایجاد میکند.
یکی از راه حلهای این مشکلات، promiseها هستند که اکثر این مشکلات را حل میکنند.
برای مثال promiseها فقط یک بار میتوانند resolve شوند. به این ترتیب، مشکل بیش از یک بار صدا شدن callbackها را حل میکنند.
همچنین در کار با promiseها، کنترل ادامهی برنامه، به یک تابع دیگر داده نمیشود، بنابراین مشکلات مربوط به separation of concerns تا حد زیادی حل میشوند.
معمولا برنامههای جاوااسکریپتی ما، از نظر زمانی به قسمتهای مختلف تقسیم میشوند. مثلا زمانی که نتیجهی یک درخواست را از سرور دریافت میکنیم. یا زمانی که کاربر بر روی یک دکمه کلیک میکند.
یکی از پترنها برای انجام عملیات async در جاوااسکریپت، callbackها هستند:
setTimeout(() => {همچنین برای انجام عملیات به صورت مرحله مرحله، مجبور میشویم callbackهای مختلف را داخل هم nest کنیم که به عنوان "callback hell" شناخته میشود.
doSomething();
}, 1000);
اما آیا تنها مشکل callbackها nest شدن آنها داخل هم و کاهش خوانایی کد است؟
خیر! callbackها مشکلات پایهای و مهمتری هم ایجاد میکنند.
برای مثال با توجه به اینکه callback را به یک تابع دیگر ارسال میکنیم و تابع مورد نظر، callback را صدا میکند، عملا کنترل callback از دست ما خارج میشود. در نتیجه ممکن است تابع مورد نظر، callback را بیش از یک بار صدا کند، اصلا صدا نکند و یا حتی گاهی به صورت async و گاهی به صورت synchronous صدا کند.
همچنین این مساله مشکلاتی در زمینه separation of concerns ایجاد میکند.
یکی از راه حلهای این مشکلات، promiseها هستند که اکثر این مشکلات را حل میکنند.
برای مثال promiseها فقط یک بار میتوانند resolve شوند. به این ترتیب، مشکل بیش از یک بار صدا شدن callbackها را حل میکنند.
همچنین در کار با promiseها، کنترل ادامهی برنامه، به یک تابع دیگر داده نمیشود، بنابراین مشکلات مربوط به separation of concerns تا حد زیادی حل میشوند.
ProGraphs
جواب: معمولا برنامههای جاوااسکریپتی ما، از نظر زمانی به قسمتهای مختلف تقسیم میشوند. مثلا زمانی که نتیجهی یک درخواست را از سرور دریافت میکنیم. یا زمانی که کاربر بر روی یک دکمه کلیک میکند. یکی از پترنها برای انجام عملیات async در جاوااسکریپت، callbackها…
این سوال رو بیشتر به عنوان مقدمهای برای مباحث مربوط به برنامهنویسی async در جاوااسکریپت مطرح کردیم.
تو مطالب بعدی به مرور مفاهیم پایهایتر async مثل concurrency, event loop, micro/macro tasks و ... رو بررسی میکنیم و دوباره به این سوال برخواهیم گشت 😉
تو مطالب بعدی به مرور مفاهیم پایهایتر async مثل concurrency, event loop, micro/macro tasks و ... رو بررسی میکنیم و دوباره به این سوال برخواهیم گشت 😉
در گوگل کروم میتوانیم برای زمانی که attribute یک عنصر تغییر میکند، breakpoint تعریف کنیم.
به این ترتیب مثلا میتوانیم بررسی کنیم که یک افکت، دقیقاً در چه قسمتی از کد و چطور پیادهسازی شده است!
#quicktip #devtools
@ProGraphs
به این ترتیب مثلا میتوانیم بررسی کنیم که یک افکت، دقیقاً در چه قسمتی از کد و چطور پیادهسازی شده است!
#quicktip #devtools
@ProGraphs
تاریخچهی کوتاهی از GraphQL از زبان یکی از سازندههاش!
https://youtu.be/F-OizdRJh1U
#link #talk #graphql
@ProGraphs
https://youtu.be/F-OizdRJh1U
#link #talk #graphql
@ProGraphs
YouTube
A Brief History of GraphQL by the Creator of GraphQL
Watch this talk by Lee Byron, a Co Creator of GraphQL to learn about the history of GraphQL. EVENT: Open Source Leadership Summit 2019 SPEAKER: Lee Byron PER...
🔺Figma Freebies - Free UI Kits & Figma Resources 🎉
https://www.figmafreebies.com/
#link #figma #freebie #resource
@ProGraphs
https://www.figmafreebies.com/
#link #figma #freebie #resource
@ProGraphs
ProGraphs
به زودی تغییرات خوبی خواهیم داشت و قصد داریم مطالب بیشتر و بهتری رو پوشش بدیم. اما قبلش با جواب دادن به این چند سوال به ما کمک کنید که این تغییرات هر چه بیشتر همسو با نظر شما باشه 🙏 اگر هر نظر دیگهای هم دارید از این طریق با ما در میون بگذارید: @HiProGraphsBot
بالاخره بعد از یه وقفهی نسبتا طولانی تغییراتی که قولش رو داده بودیم شروع کردیم 😉:
نسخهی اولیه سایت از امروز آمادهاس!
البته سایت رو با الهام از Brendan Eich تو 10 روز آماده کردیم😅
و حتما (فعلا) بدون ایراد و کامل نیست!
www.prographs.ir
البته سایت رو با الهام از Brendan Eich تو 10 روز آماده کردیم😅
و حتما (فعلا) بدون ایراد و کامل نیست!
www.prographs.ir
This media is not supported in your browser
VIEW IN TELEGRAM
میتونید وب سایت/اپلیکیشن ProGraphs رو روی دستگاهتون نصب کنید تا به بعضی قسمتها به صورت آفلاین دسترسی داشته باشید.
(تو ویدیو نصب شدن سایت/اپلیکیشن روی mac, android, windows, ios رو میبینید)
(تو ویدیو نصب شدن سایت/اپلیکیشن روی mac, android, windows, ios رو میبینید)
This media is not supported in your browser
VIEW IN TELEGRAM
بعد از نصب، میتونید یک لینک رو مستقیما از appهای نیتیو (مثل یوتیوب) با ما share کنید!
(فعلا فقط اندروید و گوگل کروم 71+)
(فعلا فقط اندروید و گوگل کروم 71+)
و از امروز در کنار مطالب کانال، به صورت منظم توی صفحهی اینستاگرام هم آموزشهای ویدیویی کوتاه خواهیم داشت.
instagram.com/prographs
instagram.com/prographs
تفاوت == و === در جاوااسکریپت چیست؟
(اونقدر که به نظر میرسه جواب واضح نیست 😅)
#interviewquestion #js
@ProGraphs
(اونقدر که به نظر میرسه جواب واضح نیست 😅)
#interviewquestion #js
@ProGraphs
ProGraphs
تفاوت == و === در جاوااسکریپت چیست؟ (اونقدر که به نظر میرسه جواب واضح نیست 😅) #interviewquestion #js @ProGraphs
جواب:
احتمالا جواب اکثر دولوپرها به این سوال، این جمله است:
عملگر == فقط مقدار را چک میکند. ولی عملگر === علاوه بر مقدار، نوع داده را هم چک میکند.
اما این تعریف در جاوااسکریپت دقیق نیست!
❗️در واقع عملگر == هم نوعداده را چک میکند و اگر نوع دادهی دو مقدار یکسان نباشد، یک یا هردوی مقادیر را تغییر میدهد (coercion) تا بتواند مقدار آنها را مقایسه کند.
در نتیجه برعکس چیزی که از تعریف اول به نظر میرسد، عملگر == کار بیشتری از عملگر === انجام میدهد!
اما دانستن تعریف دقیقتر چه کمکی به ما میکند؟
این عبارت را در نظر بگیرید:
2- اما وقتی با تعریف دقیقتر این عبارت را بررسی میکنیم، میدانیم که دو مقدار از نوعدادهی یکسان نیستند، پس عملگر == سعی میکند obj را تبدیل به string کند تا بتواند دو مقدار را مقایسه کند (برای تبدیل obj به string، متد toString صدا میشود).
(اینکه چطور obj به string تبدیل شد، و در کل coerce شدن نوع دادههای مختلف به یکدیگر را مطالب بعدی بررسی میکنیم)
احتمالا جواب اکثر دولوپرها به این سوال، این جمله است:
عملگر == فقط مقدار را چک میکند. ولی عملگر === علاوه بر مقدار، نوع داده را هم چک میکند.
اما این تعریف در جاوااسکریپت دقیق نیست!
❗️در واقع عملگر == هم نوعداده را چک میکند و اگر نوع دادهی دو مقدار یکسان نباشد، یک یا هردوی مقادیر را تغییر میدهد (coercion) تا بتواند مقدار آنها را مقایسه کند.
در نتیجه برعکس چیزی که از تعریف اول به نظر میرسد، عملگر == کار بیشتری از عملگر === انجام میدهد!
اما دانستن تعریف دقیقتر چه کمکی به ما میکند؟
این عبارت را در نظر بگیرید:
let obj = {1- وقتی با تعریف اول این عبارت را بررسی میکنیم، کاملا غیرمنطقی و گیج کننده به نظر میرسد!
toString() {
return "hi";
}
};
"hi" == obj // true!
2- اما وقتی با تعریف دقیقتر این عبارت را بررسی میکنیم، میدانیم که دو مقدار از نوعدادهی یکسان نیستند، پس عملگر == سعی میکند obj را تبدیل به string کند تا بتواند دو مقدار را مقایسه کند (برای تبدیل obj به string، متد toString صدا میشود).
(اینکه چطور obj به string تبدیل شد، و در کل coerce شدن نوع دادههای مختلف به یکدیگر را مطالب بعدی بررسی میکنیم)