ProGraphs
818 subscribers
216 photos
6 videos
11 files
377 links
مجموعه مطالبی از برنامه‌نویسی وب و گرافیک

ProGraphs = Programming + Graphics
Download Telegram
​​🔺 یک ابزار مفید برای انتخاب میان فونت ها ✌🏻

https://wordmark.it/

#link #icon

@ProGraphs
​​توضیح مفهوم کلی prototype در جاوااسکریپت (بخش سوم)

در مطالب قبل با پراپرتی [[prototype]] و کاربرد آن آشنا شدیم. یک روش برای لینک کردن آبحکت‌ها با استفاده از prototype هم بررسی کردیم. حالا می‌خواهیم روشی ساده‌تر برای این کار بررسی کنیم:

روش دوم:
استفاده از Object.create. این متد یک آبجکت را به عنوان ورودی دریافت می‌کند و آبجکت جدیدی return می‌کند که از طریق [[prototype]] به آبجکت مورد نظر لینک شده است.
در تصویر می‌بینید که بدون استفاده از تابع و ‌new و ... خیلی ساده دو آبجکت را با [[prototype]] به هم لینک کردیم

روش اول پایه‌ی پیاده سازی مکانیزم‌های OOP در جاوااسکریپت هست که احتمالا زیاد با آن برخورد کردید.
ولی دقت کنید که لینک کردن آبجکت‌ها به یکدیگر با روش ساده‌تر که Object.create است در خیلی از مواقع بهتر و ساده‌تر است.

#quicktip #js

@ProGraphs
ProGraphs
​​توضیح مفهوم کلی prototype در جاوااسکریپت (بخش سوم) در مطالب قبل با پراپرتی [[prototype]] و کاربرد آن آشنا شدیم. یک روش برای لینک کردن آبحکت‌ها با استفاده از prototype هم بررسی کردیم. حالا می‌خواهیم روشی ساده‌تر برای این کار بررسی کنیم: روش دوم: استفاده…
مفهوم prototype پایه‌ی خیلی از patternها و paradigmها در جاوااسکریپت است. ولی متاسفانه خیلی از دولوپر‌ها بدون درک درست این مفهوم ازش استفاده می‌کنند.
تو این سری مطالب سعی کردیم مفهوم کلی prototype رو بدون توجه به OOP و ... بررسی کنیم که وقتی pattern ها و paradigmهایی مثل OOP رو پیاده سازی می‌کنید از نحوه کارکرد مکانیزم‌های پایه‌ای مثل prototype, new, ... هم مطلع باشید.

اگر فکر می‌کنید بررسی خود patternهای قابل پیاده سازی با prototype میتونه مفید باشه. یا اگر اشکالی تو این مطالب دیدید و یا اگر هر نظر دیگه‌ای دارید میتونید از این طریق با ما در میون بذارید:

@HiProGraphsBot
​​​​📌 بایگانی‌ Roadmap های مختلف:

نقشه‌ راه برای Web developer شدن در سال 2018
https://t.iss.one/ProGraphs/49
نقشه‌ راه برای توسعه‌دهنده حرفه‌ای React شدن در سال 2018
https://t.iss.one/ProGraphs/64
نقشه‌ راه برای توسعه‌دهنده حرفه‌ای Vue شدن در سال 2018
https://t.iss.one/ProGraphs/72
نقشه‌ راه برای UI/UX Designer شدن
https://t.iss.one/ProGraphs/102
نقشه‌ راه برای توسعه‌دهنده حرفه‌ای Angular شدن در سال 2018
https://t.iss.one/ProGraphs/104

🌹 این مطلب رو با دوستان خود به اشتراک بگذارید. 🌹

#archive #roadmap

@ProGraphs
​​احتمالا دقت کردید که برای ایجاد گرادینت در CSS باید گرادینت را در راستای شکلی خاص مانند خط (linear) یا دایره (radial) تعریف کنیم.

اما با ترفندی که در تصویر می‌بینید می‌توانیم با ترکیب چند گرادینت و blend-mode گرادینتی بدون شکل واضح درست کنیم‌ (مثل گرادینتی که احتمالا در صفحه ورود اینستاگرام دیدید)

#quicktip #css #trick

@ProGraphs
آیا با data attribute ها در html آشنا هستید؟
کاربرد آن‌ها چیست؟

#interviewquestion #html

@ProGraphs
​​قالب های Landing Page رایگان برای استارت‌آپ‌ها 🎉

https://cruip.com/

#link #landingpage #template

@ProGraphs
​​یه کوتاه کننده لینک عالی 👌🏻🎉

https://kutt.it/

#link #urlshortener

@ProGraphs
ProGraphs
آیا با data attribute ها در html آشنا هستید؟ کاربرد آن‌ها چیست؟ #interviewquestion #html @ProGraphs
جواب:

برای ذخیره‌ی دیتای مختص به یک عنصر از data-attribute ها استفاده می‌کنیم.

در html برای کنترل بعضی از ویژگی‌های عناصر attribute هایی تعیین شده است مثلا برای تعیین آدرس یک لینک از href استفاده می‌کنیم. اما اگر بخواهیم ویژگی جدیدی برای عناصر پیاده سازی کنیم که از قبل در html تعیین نشده می‌توانیم این مقدار را به کمک جاوااسکریپت و data-attribute ها پیاده کنیم.

برای مثال فرض کنید می‌خواهیم مکانیزم نمایش alert در صفحه را پیاده سازی کنیم:

چندین عنصر alert در صفحه داریم که هر کدام باید مدت زمان خاصی نمایش داده شوند و بعد به صورت خودکار از صفحه حذف شوند. برای کنترل مقدار زمانی که هر alert در صفحه می‌ماند به این شکل عمل می‌کنیم:

<div class="alert" data-timeout="2000">
alert!
</div>

در مرحله بعد در جاوااسکریپ از مقدار data-timeout استفاده می‌کنیم و پس از زمان تعیین شده عنصر را از صفحه حذف می‌کنیم.
​​بر خلاف تصور اکثر دولوپر‌ها جاوااسکریپت در مرورگر‌های مدرن به صورت مفسری اجرا نمی‌شود و کد جاوااسکریپت قبل از اجرا کامپایل می‌شود.

اما کد کامپایل شده جاوااسکریپت را برخلاف زبانی مثل جاوا منتشر نمی‌کنیم و فقط خود مرورگر برای optimize کردن کد، قبل از هر بار اجرا آن را کامپایل می‌کند. به این روش JIT یا Just-in-time compilation گفته می‌شود.

البته در عمل مرورگر‌ها قبل از اجرای کد زمان کافی برای کامپایل کردن تمام و کمال کد ندارند و مجبور به استفاده از تکنیک‌های پیچیده‌تری هستند که در این مقاله می‌توانید مطالعه کنید:

https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/

#quicktip #js

@ProGraphs
آیا با مفهوم hoisting در جاوااسکریپت آشنا هستید؟
نحوه عملکرد آن را توضیح بدید

#interviewquestion #js

@ProGraphs
ProGraphs
آیا با مفهوم hoisting در جاوااسکریپت آشنا هستید؟ نحوه عملکرد آن را توضیح بدید #interviewquestion #js @ProGraphs
جواب:

کد زیر را در نظر بگیرید:
proGraphs = 20;
var proGraphs;
console.log(proGraphs); //20

در خط اول مقدار متغیر را تعیین کرده‌ایم در حالی که تعریف متغیر در خط بعدی است!
دلیل درست کار کردن این کد مفهوم hoisting است. در جاوااسکریپت تعریف متغیر‌ها (فقط تعریف و نه مقداردهی) و توابع به بالای scope منتقل می‌شود و سپس بقیه کد اجرا می‌شود. به این ترتیب تعریف متغیر proGraphs قبل از مقداردهی به آن انجام می‌شود با اینکه در خط پایین‌تر قرار دارد.

و اما چرا این اتفاق می‌افتد و نحوه عملکرد hoisting چیست؟ (خیلی مهم)

در مطالب قبلی اشاره کردیم که کد جاوااسکریپت در مرورگر‌های مدرن قبل از اجرا کامپایل می‌شود.
در واقع تعریف متغیر‌ها و توابع در زمان کامپایل کد انجام می‌شود و مقداردهی و استفاده از آن‌ها در زمان اجرا. به این ترتیب تعریف متغیر و مقداردهی به آن در دو زمان کاملا متفاوت (هر چند خیلی سریع)‌ انجام می‌شود.
در حقیقت hoisting فقط یک مفهوم ذهنی است و این کامپایل شدن کد است که باعث می‌شود به متغیر‌ها و توابع قبل از تعریف دسترسی داشته باشیم.

(همچنین متغیر‌هایی که با let و const تعریف می‌شوند hoist نمی‌شوند)
​​مجموعه‌ای از پالت‌های رنگی عالی 🎉👌🏻

https://colordrop.io/

#link #color

@ProGraphs
​​در مطالب قبلی اشاره کردیم که انجین جاوااسکریپت در مرحله‌ی کامپایل کد، متغیر‌های موجود در هر scope را تعریف می‌کند و سپس کد اجرا می‌شود.

به این ترتیب چند بار تعریف کردن یک متغیر کاملا نادیده گرفته می‌شود و هیچ تاثیری بر مقدار متغیر نخواهد داشت. (به کد تصویر دقت کنید).

همچنین اگر متغیری که با let تعریف می‌کنیم قبلا تعریف شده باشد، error دریافت می‌کنیم.

#quicktip #js

@ProGraphs