Forwarded from متخصص وردپرس | پوینا
به هیچ عنوان در سی پنل Hotlink Protection رو فعال نکنید و چک کنید اگر فعال هست غیر فعالش کنید
دقت کنید فعال کردن این گزینه باعث میشه سئوتون خراب بشه و افت شدیدی داشته باشید این Hotlink Protection با افزونه هایی هم میشه فعالش کرد اما به هیچ عنوان روی سایتتون فعال نکنید
و اگر قبلا روی سایتتون فعال بوده حتما باید اچ تی اکسس پاک کنید دوباره بسازید وگرنه دچار مشکل سئو و افت شدید سئو میشید
این مورد در چندین سایت مختلف باهم تست شده و مشکلاتی رو ایجاد کرده
@poinair پوینا
دقت کنید فعال کردن این گزینه باعث میشه سئوتون خراب بشه و افت شدیدی داشته باشید این Hotlink Protection با افزونه هایی هم میشه فعالش کرد اما به هیچ عنوان روی سایتتون فعال نکنید
و اگر قبلا روی سایتتون فعال بوده حتما باید اچ تی اکسس پاک کنید دوباره بسازید وگرنه دچار مشکل سئو و افت شدید سئو میشید
این مورد در چندین سایت مختلف باهم تست شده و مشکلاتی رو ایجاد کرده
@poinair پوینا
Forwarded from Linuxor ?
دو قلوی شیطانی ...
یه نوع حمله هست به اسم Evil Twin به این صورته که هکر میاد یه یه هات اسپات هم اطلاعات و ESSID با Wifi شما درست میکنه.
حالا شما اگه سیگنال وایفایتون ضعیف باشه خود بخود به Wifi هکر وصل میشید. اگرم ضعیف نباشه هکر با حمله DOS اونو ضعیف میکنه و ناچارا دستگاهتون خودکار به Wifi هکر وصل میشه.
بعد هکر در واقع بین شما و اینترنت قرار گرفته میتونه پکت هاتونو رصد کنه (بجز https) یا حتی به سایت فیشینگ هدایتتون کنه. (انقدره که ماهید)
🐧 @Linuxor
یه نوع حمله هست به اسم Evil Twin به این صورته که هکر میاد یه یه هات اسپات هم اطلاعات و ESSID با Wifi شما درست میکنه.
حالا شما اگه سیگنال وایفایتون ضعیف باشه خود بخود به Wifi هکر وصل میشید. اگرم ضعیف نباشه هکر با حمله DOS اونو ضعیف میکنه و ناچارا دستگاهتون خودکار به Wifi هکر وصل میشه.
بعد هکر در واقع بین شما و اینترنت قرار گرفته میتونه پکت هاتونو رصد کنه (بجز https) یا حتی به سایت فیشینگ هدایتتون کنه. (انقدره که ماهید)
🐧 @Linuxor
Forwarded from ⚝
en.wikipedia.org/wiki/TPR_Storytelling
TPR Storytelling is a method of teaching foreign languages. TPR lessons use a mixture of reading and storytelling to help students learn a foreign language in a classroom setting.
#learn #linguistics
@amiria703_channel
TPR Storytelling is a method of teaching foreign languages. TPR lessons use a mixture of reading and storytelling to help students learn a foreign language in a classroom setting.
#learn #linguistics
@amiria703_channel
Forwarded from ⚝
GitHub
Release v5 #یوسف_قبادی · bepass-org/oblivion
What's Changed
strings.xml [zh-CN] by @HanaKDev in #289
Update strings.xml by @mohammadshg84 in #304
new pr rebased by @binaryb3ast in #314
Pr 299 by @DanielcoderX in #343
Improve multi-langua...
strings.xml [zh-CN] by @HanaKDev in #289
Update strings.xml by @mohammadshg84 in #304
new pr rebased by @binaryb3ast in #314
Pr 299 by @DanielcoderX in #343
Improve multi-langua...
GitHub.com/bepass-org/oblivion/releases/tag/v5
نسخهٔ پنجم برنامهٔ Oblivion منتشر شد.
این برنامه یک دور زنندهٔ فیلترینگ و همچنین تحریم است که بر بستر خدمات WARP ارائه شده از کلودفلر کار میکند. تغییرات نسخهٔ پنجم نسبت به نسخهٔ قبلی در پیوند مذکور، قابل مشاهده است.
#news #filternet
@amiria703_channel
نسخهٔ پنجم برنامهٔ Oblivion منتشر شد.
این برنامه یک دور زنندهٔ فیلترینگ و همچنین تحریم است که بر بستر خدمات WARP ارائه شده از کلودفلر کار میکند. تغییرات نسخهٔ پنجم نسبت به نسخهٔ قبلی در پیوند مذکور، قابل مشاهده است.
#news #filternet
@amiria703_channel
Forwarded from ⚝
قلم آراد، توسط محمد درویشی عزیز منتشر شد.
با این حساب قلمهای منتشر شدهٔ بر روی گیتهاب این هنرمند گرانقدر به این کیفیت میرسد:
آراد؛ استعداد مَد؛ سورنا؛ یونیکسل و رویین
برای اطلاعات بیشتر به وبگاه جناب درویشی مراجعه کنید:
mdarvishi5124.github.io
همچنین برای حمایت، به این پیوند مراجعه کنید:
daramet.com/mdarvishi5124
#news #FLOSS #font
@amiria703_channel
با این حساب قلمهای منتشر شدهٔ بر روی گیتهاب این هنرمند گرانقدر به این کیفیت میرسد:
آراد؛ استعداد مَد؛ سورنا؛ یونیکسل و رویین
برای اطلاعات بیشتر به وبگاه جناب درویشی مراجعه کنید:
mdarvishi5124.github.io
همچنین برای حمایت، به این پیوند مراجعه کنید:
daramet.com/mdarvishi5124
#news #FLOSS #font
@amiria703_channel
Forwarded from IRCF | اینترنت آزاد برای همه
نسخه ۵ از اپ #oblivion بر روی گوگلپلی قرار گرفت.
🚀 play.google.com/store/apps/details?id=org.bepass.oblivion
💡 github.com/bepass-org/oblivion/releases/latest
تغییرات برنامه:
- بهرهمندی پوسته از ویژگی دارکمد
- بروزرسانی Warp-plus بهمنظور اتصال بهتر
- امکان تنظیم نوع اندپوینت
- اضافهشدن حالت پروکسی
- رفع برخیاز مشکلات
🔍 ircf.space/software.php
@ircfspace
🚀 play.google.com/store/apps/details?id=org.bepass.oblivion
💡 github.com/bepass-org/oblivion/releases/latest
تغییرات برنامه:
- بهرهمندی پوسته از ویژگی دارکمد
- بروزرسانی Warp-plus بهمنظور اتصال بهتر
- امکان تنظیم نوع اندپوینت
- اضافهشدن حالت پروکسی
- رفع برخیاز مشکلات
🔍 ircf.space/software.php
@ircfspace
Forwarded from Gopher Academy
🔵 عنوان مقاله
Building an Interactive Shell in Go
🟢 خلاصه مقاله:
این مقاله توسط تیم توسعهدهنده پایگاه داده Dolt نوشته شده است، که نرمافزار خط فرمانی (CLI) را برای اجرای دستورات SQL و ارتباط با پایگاه داده ارائه میدهند. مقاله به معرفی راهنمایی برای ساخت یک CLI مناسب و کاربرپسند پرداخته، که شامل ویژگیهایی مانند تاریخچه دستورات و تکمیل خودکار دستورات است. در این مقاله، کتابخانه ishell به عنوان انتخاب مناسب برای ایجاد چنین ویژگیهایی در CLI معرفی شده است. این کتابخانه به توسعهدهندگان کمک میکند تا بتوانند یک رابط کاربری خط فرمان قدرتمند و در عین حال قابل فهم برای کاربران نهایی ارائه دهند.
🟣لینک مقاله:
https://www.dolthub.com/blog/2023-03-29-interactive-shell-golang/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Building an Interactive Shell in Go
🟢 خلاصه مقاله:
این مقاله توسط تیم توسعهدهنده پایگاه داده Dolt نوشته شده است، که نرمافزار خط فرمانی (CLI) را برای اجرای دستورات SQL و ارتباط با پایگاه داده ارائه میدهند. مقاله به معرفی راهنمایی برای ساخت یک CLI مناسب و کاربرپسند پرداخته، که شامل ویژگیهایی مانند تاریخچه دستورات و تکمیل خودکار دستورات است. در این مقاله، کتابخانه ishell به عنوان انتخاب مناسب برای ایجاد چنین ویژگیهایی در CLI معرفی شده است. این کتابخانه به توسعهدهندگان کمک میکند تا بتوانند یک رابط کاربری خط فرمان قدرتمند و در عین حال قابل فهم برای کاربران نهایی ارائه دهند.
🟣لینک مقاله:
https://www.dolthub.com/blog/2023-03-29-interactive-shell-golang/
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Dolthub
Building an interactive shell in Golang
Learn how to build an interactive shell application in Go.
Forwarded from مشورت کامپیوتریها (SRB)
🔷صرفا دانشجو بودن میشود اینکه از ترم 1 تا 8 درس بخوانیم و 142 واحد کارشناسی را پاس کنیم و آخر سر با یک معدل معمولی یا خوبی دانشگاه را خداحافظ گوییم؛
در صورتی که میتوان بیش از یک دانشجو بود. میتوان رویداد برگزار کرد، مقاله نوشت، دستیار استاد شد، عضو انجمن علمی بود، میتوان در صنعت فعال بود و هزار میتوان دیگر. در این قسمت پادکست با افرادی که روی این میتوانهای خود بیشتر کار کردهاند و بیشتر دانشجو بودهاند صحبت میکنیم.
🗓 به زودی
[تلگرام | اینستاگرام | ویرگول | اسپاتیفای | کستباکس | اپلپادکست]
🔰مشورت کامپیوتری ها
@coaching_ce
در صورتی که میتوان بیش از یک دانشجو بود. میتوان رویداد برگزار کرد، مقاله نوشت، دستیار استاد شد، عضو انجمن علمی بود، میتوان در صنعت فعال بود و هزار میتوان دیگر. در این قسمت پادکست با افرادی که روی این میتوانهای خود بیشتر کار کردهاند و بیشتر دانشجو بودهاند صحبت میکنیم.
🗓 به زودی
[تلگرام | اینستاگرام | ویرگول | اسپاتیفای | کستباکس | اپلپادکست]
🔰مشورت کامپیوتری ها
@coaching_ce
Forwarded from Syntax | سینتکس (Daimon)
Cloud_Native_Go_Building_Reliable_Services_in_Unreliable_Environments.pdf
8.4 MB
Forwarded from Syntax | سینتکس (Daimon)
یک مقاله درباره تفاوت بین stateless و stateful بودن
https://medium.com/@saeidlaalkaei/stateful-and-stateless-sets-across-different-technologies-5ad1d06caf98
اهمیت Stateless در برنامههای Cloud Native
یکی از استانداردهای اصلی در طراحی برنامههای کلاد نیتیو Stateless بودن آنها است. دلایل این موضوع به شرح زیر است:
1. مقیاسپذیری آسان: برنامههای Stateless به راحتی میتوانند در محیطهای ابری مقیاسپذیر شوند. به دلیل عدم وابستگی به وضعیت، میتوان به سادگی تعداد نمونههای برنامه را افزایش یا کاهش داد.
مثلا فرض کنید ما اومدیم یدونه لیمیت بر اساس ip address کاربر درست کردیم که توی یک مپ داخل برناممون ذخیرش کردیم. خب در این شرایط وقتی instance برناممون رو بیشتر کنیم چه اتفاقی برای لیمیتی که نوشتیم میوفته؟ stateless بودن این دغدغه هارو حذف میکنه.
2. مدیریت بهتر منابع: در برنامههای Stateless، منابع به راحتی میتوانند بین نمونههای مختلف توزیع شوند، زیرا هر نمونه هیچگونه وابستگی به دیگر نمونهها ندارد.
3. قابلیت تحمل خطا: اگر یک نمونه از برنامه به هر دلیلی دچار مشکل شود، میتوان به سرعت آن را جایگزین کرد بدون اینکه تأثیری بر روی وضعیت کاربران دیگر داشته باشد.
4. استقرار سریعتر: در محیطهای ابری، زمان استقرار بسیار مهم است. برنامههای Stateless به دلیل سادگی و عدم نیاز به ذخیره وضعیت، سریعتر میتوانند مستقر شوند.
#stateless #stateful
@Syntax_fa
https://medium.com/@saeidlaalkaei/stateful-and-stateless-sets-across-different-technologies-5ad1d06caf98
اهمیت Stateless در برنامههای Cloud Native
یکی از استانداردهای اصلی در طراحی برنامههای کلاد نیتیو Stateless بودن آنها است. دلایل این موضوع به شرح زیر است:
1. مقیاسپذیری آسان: برنامههای Stateless به راحتی میتوانند در محیطهای ابری مقیاسپذیر شوند. به دلیل عدم وابستگی به وضعیت، میتوان به سادگی تعداد نمونههای برنامه را افزایش یا کاهش داد.
مثلا فرض کنید ما اومدیم یدونه لیمیت بر اساس ip address کاربر درست کردیم که توی یک مپ داخل برناممون ذخیرش کردیم. خب در این شرایط وقتی instance برناممون رو بیشتر کنیم چه اتفاقی برای لیمیتی که نوشتیم میوفته؟ stateless بودن این دغدغه هارو حذف میکنه.
2. مدیریت بهتر منابع: در برنامههای Stateless، منابع به راحتی میتوانند بین نمونههای مختلف توزیع شوند، زیرا هر نمونه هیچگونه وابستگی به دیگر نمونهها ندارد.
3. قابلیت تحمل خطا: اگر یک نمونه از برنامه به هر دلیلی دچار مشکل شود، میتوان به سرعت آن را جایگزین کرد بدون اینکه تأثیری بر روی وضعیت کاربران دیگر داشته باشد.
4. استقرار سریعتر: در محیطهای ابری، زمان استقرار بسیار مهم است. برنامههای Stateless به دلیل سادگی و عدم نیاز به ذخیره وضعیت، سریعتر میتوانند مستقر شوند.
#stateless #stateful
@Syntax_fa
Medium
Stateful and Stateless Sets across different Technologies
Database Management Systems (DBMS):
Forwarded from DevAcademy
https://leetcode.com/problems/group-anagrams/denoscription/
سلام به همگی
امشب جلسه داریم و قراره سوال leetcode حل کنیم
#algorithm
ذخیره در گوگل کلندر
سلام به همگی
امشب جلسه داریم و قراره سوال leetcode حل کنیم
#algorithm
ذخیره در گوگل کلندر
Forwarded from Ninja Learn | نینجا لرن
💎 توابع بازگشتی 💎
سلام دوستان! 🌟 امروز میخوایم در مورد یه مفهوم جذاب توی برنامهنویسی صحبت کنیم: توابع بازگشتی.
اگه برنامهنویس هستی یا تازه شروع کردی، حتماً این مفهوم برات جالبه! بیاین با یه مثال ساده، این موضوع رو با هم یاد بگیریم.
❓تابع بازگشتی چیه؟ 🤔
تابع بازگشتی یعنی تابعی که توی خودش دوباره خودش رو صدا میزنه!
یعنی تابع میتونه یه مسئله رو به نسخههای کوچیکتر از همون مسئله تقسیم کنه و حل کنه.
این روش توی مسائل پیچیده مثل محاسبه فاکتوریل یا سری فیبوناچی خیلی به کار میاد.
✅ مثال فاکتوریل با تابع بازگشتی 🔢
بیاین با یه مثال شروع کنیم: محاسبه فاکتوریل!
فاکتوریل یه عدد (n!) یعنی حاصل ضرب همه اعداد از ۱ تا n. مثلاً 5! میشه 120 (یعنی 1×2×3×4×5).
1⃣ جاوااسکریپت:
2⃣ پایتون:
تو این کد، تابع
❓چرا توابع بازگشتی؟ 🤓
توابع بازگشتی کمک میکنن مسائل پیچیده رو به شکل سادهتری حل کنیم. اما باید دقت کنیم که همیشه یه شرط توقف (شرط پایه) توی تابع باشه، وگرنه ممکنه تابع تا بینهایت خودش رو صدا بزنه و برنامه هنگ کنه!
تمرین عملی 📝
حالا نوبت توعه! سعی کن یه تابع بازگشتی برای سری فیبوناچی بنویسی. این تمرین بهت کمک میکنه بهتر با توابع بازگشتی آشنا بشی.
امیدوارم این آموزش براتون مفید بوده باشه!
اگه سوالی دارید یا نظری دارید، حتماً توی گروه مطرح کنید. 🌹
@ninja_learn_ir
سلام دوستان! 🌟 امروز میخوایم در مورد یه مفهوم جذاب توی برنامهنویسی صحبت کنیم: توابع بازگشتی.
اگه برنامهنویس هستی یا تازه شروع کردی، حتماً این مفهوم برات جالبه! بیاین با یه مثال ساده، این موضوع رو با هم یاد بگیریم.
❓تابع بازگشتی چیه؟ 🤔
تابع بازگشتی یعنی تابعی که توی خودش دوباره خودش رو صدا میزنه!
یعنی تابع میتونه یه مسئله رو به نسخههای کوچیکتر از همون مسئله تقسیم کنه و حل کنه.
این روش توی مسائل پیچیده مثل محاسبه فاکتوریل یا سری فیبوناچی خیلی به کار میاد.
✅ مثال فاکتوریل با تابع بازگشتی 🔢
بیاین با یه مثال شروع کنیم: محاسبه فاکتوریل!
فاکتوریل یه عدد (n!) یعنی حاصل ضرب همه اعداد از ۱ تا n. مثلاً 5! میشه 120 (یعنی 1×2×3×4×5).
1⃣ جاوااسکریپت:
function factorial(n) {
if(n === 1) {
return 1;
} else {
return n * factorial(n-1);
}
}2⃣ پایتون:
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
تو این کد، تابع
factorial خودش رو صدا میزنه تا وقتی که به عدد ۱ برسه. وقتی به ۱ رسید، مقدارها به ترتیب برمیگردن و جواب نهایی محاسبه میشه.❓چرا توابع بازگشتی؟ 🤓
توابع بازگشتی کمک میکنن مسائل پیچیده رو به شکل سادهتری حل کنیم. اما باید دقت کنیم که همیشه یه شرط توقف (شرط پایه) توی تابع باشه، وگرنه ممکنه تابع تا بینهایت خودش رو صدا بزنه و برنامه هنگ کنه!
تمرین عملی 📝
حالا نوبت توعه! سعی کن یه تابع بازگشتی برای سری فیبوناچی بنویسی. این تمرین بهت کمک میکنه بهتر با توابع بازگشتی آشنا بشی.
امیدوارم این آموزش براتون مفید بوده باشه!
اگه سوالی دارید یا نظری دارید، حتماً توی گروه مطرح کنید. 🌹
@ninja_learn_ir
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
#golden_sentence
💎 جمله طلایی امروز 💎
🔸Bad programmers worry about the code. Good programmers worry about data structures and their relationships.Linus Torvalds
برنامهنویسای ضعیف بیشتر نگران کد و چگونگی نوشتن اون هستند، در حالی که برنامهنویسای خوب تمرکز خودشون رو به روی ساختارهای دادهای و روابط بین اونها قرار میدن.
🆔 Channel | Group | YouTube
Forwarded from کداکسپلور | CodeExplore (CodeExplore)
PyAutoGUI: کتابخانهای برای کنترل موس و کیبورد و انجام عملیاتهای اتوماتیک.
Selenium: ابزار برای اتوماتیکسازی تستهای مرورگرهای وب.
Fabric: کتابخانهای برای اتوماتیکسازی وظایف از راه دور.
BeautifulSoup: ابزار برای استخراج داده از صفحات وب (وب اسکرپینگ).
SQLAlchemy: ابزار ORM برای کار با پایگاههای داده رابطهای.
Django ORM: ابزار ORM داخلی فریمورک Django برای کار با پایگاه داده.
Peewee: یک ORM ساده و کوچک برای پایگاه دادههای رابطهای.
Twisted: فریمورکی برای توسعه برنامههای شبکهای با قابلیت پردازش موازی.
Socket: ماژول داخلی پایتون برای کار با سوکتهای شبکه.
Requests: کتابخانهای محبوب برای ارسال درخواستهای HTTP.
asyncio: ابزار برای برنامهنویسی ناهمزمان و شبکهای.
PySpark: واسط پایتون برای Apache Spark، مناسب برای پردازش دادههای بزرگ.
Dask: فریمورکی برای پردازش دادههای بزرگ با استفاده از پایتون.
Apache Airflow: پلتفرمی برای برنامهریزی، مانیتورینگ، و مدیریت جریانهای کاری.
ROS (Robot Operating System): مجموعهای از کتابخانهها و ابزارها برای ساخت رباتها.
MicroPython: نسخهای از پایتون که برای اجرا روی دستگاههای محدود مناسب است.
PySerial: ابزار برای برقراری ارتباط با پورتهای سریال.
#python
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
یارو بخاطر اینکه زبان برنامه نویسی که کار میکنه توی ایران 403 میده سایتش ، چسی میاد (golang)
مرد حسابی،این ربطی به زبان نداره،کلا توی ایران سایت هایی که رنگشون آبی یا نارنجی باشن باز نمیشه
@SEYED_BAX
مرد حسابی،این ربطی به زبان نداره،کلا توی ایران سایت هایی که رنگشون آبی یا نارنجی باشن باز نمیشه
@SEYED_BAX
Forwarded from Ninja Learn | نینجا لرن
دوتا قسمت دیگه هم اپلود شد 😁
قسمت ۱۲:
https://youtu.be/3a-eMvZR3N0?si=u5Iit6niuEOmXWUj
قسمت ۱۳:
https://youtu.be/MV62c2umUO0?si=DF3y4eYoOU-iUwYp
قسمت ۱۲:
https://youtu.be/3a-eMvZR3N0?si=u5Iit6niuEOmXWUj
قسمت ۱۳:
https://youtu.be/MV62c2umUO0?si=DF3y4eYoOU-iUwYp
YouTube
🚀 اموزش مقدماتی DRF - 📚 قسمت 12 - 👨🏫 Deserialization
خوش اومدی به Ninjalearn اینجا بهت کمک میکنیم تا مهارتهای برنامهنویسی و توسعه وب رو بصورت تخصصی و اصولی یاد بگیری. 💻 از مفاهیم پایه تا تکنیکهای پیشرفته، همه چیز رو به سادهترین و کاربردیترین شکل ممکن آموزش میدیم. با ما همراه شو تا به یک توسعهدهنده حرفهای…
Forwarded from کانال اطلاعرسانی توزیع پارچ (Sohrab)
Forwarded from Mir Sobhan
v0.2.1
قابلیت دامپ و لود بهینه شدند.
آپشنال بودن پراپرتی حل شد.
قابلیت دامپ و لود بهینه شدند.
آپشنال بودن پراپرتی حل شد.
Forwarded from ASafaeirad
Next.js now supports HTTPS for your local dev server!
Docs
#news #nextjs
next dev --experimental-httpsDocs
#news #nextjs
nextjs.org
CLI: next CLI
Learn how to run and build your application with the Next.js CLI.
Forwarded from Code Module | کد ماژول (𔓙)
همه چیز از متد hasOwn جاوااسکریپت ✌️
کارایی hasOwn تقریباً مشابه hasOwnProperty هست و این متد به صورت استاتیک، از آبجکت گلوبال Object در دسترس هست و بررسی میکنه که آیا یک پراپرتی داخل یک آبجکت خاص وجود داره یا خیر. خروجی این متد یک مقدار بولین (true یا false) هست.
مستندات MDN میگه hasOwn قراره جایگزین hasOwnProperty بشه. اما چرا؟ چرا hasOwn رو به hasOwnProperty ترجیح بدیم؟
دلایل مختلفی برای معرفی این متد وجود داره. ابتدای باید محدودیتهای hasOwnProperty رو بشناسیم. اول اینکه این متد خیلی راحت میتونه Override بشه:
همچنین وقتی که یک آبجکت رو به صورت زیر میسازیم:
اینجا معمولاً هدفمون اینه که یک آبجکت بدون پروتوتایپ میخوایم. یعنی بدون والد. پس توی چنین آبجکتی هیچ یک از پراپرتیهای والد وجود نداره. از جمله hasOwnProperty. پس با صدا زدن این متد از این آبجکت خطا میگیریم:
Override کردن یا حذف کردن چنین متدی ممکنه برای یک کتابخونه خارجی دردسر ساز بشه. برای حل چنین مشکلی نویسنده اون کتابخونه مجبور بود به چنین راه حلهایی رو بیاره:
پس دولوپرای جاوااسکریپت به این فکر افتادن که یک متد اختصاصی برای حل چنین مشکلاتی معرفی کنن. اسم این متد رو گذاشتن hasOwn. اگه از این متد برای آبجکتهای بالا استفاده کنیم دیگه خطا نمیگیریم:
همونطور که گفتیم اگه یک پراپرتی توی یک آبجکت وجود داشته باشه، خروجی این متد true هست. حتی اگه مقدار پراپرتی null یا undefined باشه:
از این متد نمیتونیم برای مقادیر null و undefined استفاده کنیم:
همچنین با hasOwn میتونیم بررسی کنیم که آیا یک آرایه یک ایندکس خاص داره یا نه:
همچنین باید بدونیم که متد hasOwn یک متد کاملاً جدید هست و فقط مرورگرهای جدید از اون پشتیبانی میکنن.
#hasown #javanoscript
@CodeModule
کارایی hasOwn تقریباً مشابه hasOwnProperty هست و این متد به صورت استاتیک، از آبجکت گلوبال Object در دسترس هست و بررسی میکنه که آیا یک پراپرتی داخل یک آبجکت خاص وجود داره یا خیر. خروجی این متد یک مقدار بولین (true یا false) هست.
const person = { name: 'Emily' };
Object.hasOwn(person, 'name'); // true
person.hasOwnProperty('name'); // trueمستندات MDN میگه hasOwn قراره جایگزین hasOwnProperty بشه. اما چرا؟ چرا hasOwn رو به hasOwnProperty ترجیح بدیم؟
دلایل مختلفی برای معرفی این متد وجود داره. ابتدای باید محدودیتهای hasOwnProperty رو بشناسیم. اول اینکه این متد خیلی راحت میتونه Override بشه:
const person = {
name: 'Mario',
hasOwnProperty() {
return true;
},
}
alert(person.hasOwnProperty('age')); // trueهمچنین وقتی که یک آبجکت رو به صورت زیر میسازیم:
const person = Object.create(null);
اینجا معمولاً هدفمون اینه که یک آبجکت بدون پروتوتایپ میخوایم. یعنی بدون والد. پس توی چنین آبجکتی هیچ یک از پراپرتیهای والد وجود نداره. از جمله hasOwnProperty. پس با صدا زدن این متد از این آبجکت خطا میگیریم:
const person = Object.create(null);
person.hasOwnProperty('name'); // TypeError: person.hasOwnProperty is not a function
Override کردن یا حذف کردن چنین متدی ممکنه برای یک کتابخونه خارجی دردسر ساز بشه. برای حل چنین مشکلی نویسنده اون کتابخونه مجبور بود به چنین راه حلهایی رو بیاره:
const person = {
hasOwnProperty() {
return true;
},
}
const exists = Object.prototype.hasOwnProperty.call(person, 'age'); alert(exists); // falseپس دولوپرای جاوااسکریپت به این فکر افتادن که یک متد اختصاصی برای حل چنین مشکلاتی معرفی کنن. اسم این متد رو گذاشتن hasOwn. اگه از این متد برای آبجکتهای بالا استفاده کنیم دیگه خطا نمیگیریم:
const person1 = Object.create(null);
alert(Object.hasOwn(person1, 'name')); // false
const person2 = {
hasOwnProperty: () => true,
}
alert(Object.hasOwn(person2, 'name')); // false
همونطور که گفتیم اگه یک پراپرتی توی یک آبجکت وجود داشته باشه، خروجی این متد true هست. حتی اگه مقدار پراپرتی null یا undefined باشه:
const person = {};
Object.hasOwn(person, 'name'); // false
person.age = 4;
Object.hasOwn(person, 'age'); // true
person.prop = null;
Object.hasOwn(person, 'prop'); // true
person.prop = undefined;
Object.hasOwn(person, 'prop'); // trueاز این متد نمیتونیم برای مقادیر null و undefined استفاده کنیم:
// TypeError: can't convert undefined to object
Object.hasOwn(undefined, 'prop');
// TypeError: can't convert null to object
Object.hasOwn(null, 'prop');
همچنین با hasOwn میتونیم بررسی کنیم که آیا یک آرایه یک ایندکس خاص داره یا نه:
const numbers = ['one', 'two'];
Object.hasOwn(numbers, 1); // true
Object.hasOwn(numbers, 2); // false
همچنین باید بدونیم که متد hasOwn یک متد کاملاً جدید هست و فقط مرورگرهای جدید از اون پشتیبانی میکنن.
#hasown #javanoscript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Go Casts 🚀
حتما سعی کنید به practice داشتن playground روی سیستم localتون عادت کنید. خیلی مهمه، چندین ساله که این شیوه رو به کار میبرم و ازش نتیجه گرفتم.
شاید برای یه سری سناریو خیلی پیچیده که حجم داده زیاد باشه و یا inter-service communication زیاد باشه سخت باشه این کار، اما برای اکثر مواقع قابل استفاده ست.
اینکه شما روی سیستم خودتون بستری رو فراهم کنید که بتونید باگ یا فیچر مورد نظر رو توسعه بدید و دیباگ کنید کمی حوصله و زمان میخواد، اما به شدت کمک میکنه بعد از راه اندازی سرعت کارتون بالا بره و سریع بتونید سناریوهای مختلفی رو تست کنید.
خود سایت گولنگ هم یه قسمتی داره به اسم playground
https://go.dev/play
ولی معمولا سناریوهایی که playground میخوان پیچیده تر از یه کد گولنگی هست که دیتابیس و سرویس های دیگه رو هم درگیر میکنه، که من باز تلاش میکنم راه اندازی کنم، حتی اگه لازم باشه که دامپ دیتابیس رو بیارم روی سیستم لوکال، یا حداقل بخشی از دامپ رو…
یا حداقل دامپ نمیشه آورد یه کدی بنویسم که داده تولید کنه
@gocasts
شاید برای یه سری سناریو خیلی پیچیده که حجم داده زیاد باشه و یا inter-service communication زیاد باشه سخت باشه این کار، اما برای اکثر مواقع قابل استفاده ست.
اینکه شما روی سیستم خودتون بستری رو فراهم کنید که بتونید باگ یا فیچر مورد نظر رو توسعه بدید و دیباگ کنید کمی حوصله و زمان میخواد، اما به شدت کمک میکنه بعد از راه اندازی سرعت کارتون بالا بره و سریع بتونید سناریوهای مختلفی رو تست کنید.
خود سایت گولنگ هم یه قسمتی داره به اسم playground
https://go.dev/play
ولی معمولا سناریوهایی که playground میخوان پیچیده تر از یه کد گولنگی هست که دیتابیس و سرویس های دیگه رو هم درگیر میکنه، که من باز تلاش میکنم راه اندازی کنم، حتی اگه لازم باشه که دامپ دیتابیس رو بیارم روی سیستم لوکال، یا حداقل بخشی از دامپ رو…
یا حداقل دامپ نمیشه آورد یه کدی بنویسم که داده تولید کنه
@gocasts
go.dev
Go Playground - The Go Programming Language