Forwarded from a pessimistic researcher (Kc)
" پر Cite ترین مقاله لمپورت"
بخش اول
—————————————————
یادمه یه بار با Leslie Lamport مصاحبه کرده بودند و ازش پرسیده بودن چرا انقدر توی Concurrency Theory گولاخی و رو دستت نیست ؟ :))))
ایشونم اول شکسته نفسی میکرد و بعدش گفت به نظرم دلیل اصلیش اینه که مسائل حوزه Distributed Systems و Concurrency Theory که شاکله اصلیش مفهوم زمان هستش رو من به چشم یک مسئله فیزیک میبینم ولی دیگران به چشم یک مسئله ریاضی.
منم مثل شما اولش نفهمیدم که این چیه میگه و فازش چیه. تا اینکه رفتم سراغ پر Cite ترین مقاله ایشون. این مقاله تا این لحظه که من دارم براتون این پست رو مینویسم ۱۲۹۸۰ تا Cite خورده :))))))))))))
یادمه توی یه مصاحبه هم خودش گفته بود خودمم درک نمیکنم چرا انقدر این مقاله رو دانشمندا دوست دارن. شاید چیزی توش دیدن که من خودم ندیدم :)))
حالا داستان این مقاله که در انتهای این پست فایلش رو براتون قرار میدم چیه؟
ایده ای که باعث شد آقای لمپورت دست به قلم بشه و این مقاله رو بنویسه از اینجا ناشی میشه که :
دو تا از محققین IBM به نام های Paul Johnson و Robert Thomas میان که مشکل اصلی یکی از محصولات IBM رو حل کنن. داستان اینه که IBM یک محصول داشته به اسم TIP که مخفف این عبارته :
Tivoli Integrated Portal
شرکت IBM کلی محصول داشت و کاربر ها موقعی که میخواستن از هر کدوم استفاده کنن مجبور میشدن برای هر کدوم یک بار عمل Authentication رو انجام بدن. شرکت IBM گفت که چه کاریه من بیام یک سیستم یکپارچه برای Authentication بنویسم که کاربرا یک بار Authenticate بشن و بعد از اون بتونن از همه محصولات استفاده کنن. واسه همینم میاد TIP رو میسازه. مشکل اینجا بود که این TIP میومد از یک سری دیتابیس Replicate شده روی شبکه ARPA-like استفاده میکرد و دنبال ارائه یک الگوریتم بودن تا بتونن به شکل Consistent این دیتابیس ها رو Maintain کنن.
میان یک الگوریتم مبتنی بر مکانیزم Timestamp میسازن. یعنی هر Event یا هر Request که میومد به سمت این دیتابیس یک Timestamp میخورد و به نوعی فکر کردن میتونن بین این Event ها یا همون Request ها یک رابطه Totally Order برقرار کنن.
سخت شد ؟ :)))))
حالا این رابطه Totally Order چی هست اصلا؟ اگر وضع تون خیلی خرابه برید سکشن 9.1 و 9.6 کتاب ریاضی گسسته روزن رو بخونید. اما اگر اوضاع تون انقدر ها هم وخیم نیست توجه تون رو به ادامه مطلب جلب میکنم :)))
ما توی ریاضیات به رابطه ای که خواص Reflexivity و AntiSymetric و Transitive رو داشته باشه میگیم یک رابطه Partial Order . به طور مثال رابطه کوچک یا بزرگ تر بودن اعداد یک نوع رابطه Partial Order عه (البته ما دو نوع رابطه Partial Order داریم اینی که من تعریف کردم رو بهش میگن Weak Partial Order و اینی که من تعریف کردم اگر به جای Reflexivity از نوع Irreflexive باشه بهش میگن Strong Partial Order ولی حالا خیلی مهم نیست و به قول یکی از دوستانم Any way :))))) )
حالا اگر به ازای هر دو عضو از مجموعه ای ک درگیر رابطه Partial order هست ما بتونیم اون دو تا رو Compare کنیم یا به اصطلاح Comparable باشن میگیم اون رابطه Totally Order هستش.
زبونم مو در آورد تا بهتون بگم که اون دو نفر ای که مسئله Replicated Database رو میخواستن حل کنن دیدشون این بود که بین Request هایی که داره به سمت دیتابیس میرن این رابطه Totally Order برقراره و میشه تعیین کرد که هر Event ای قبل یا بعد از چه Event ای رخ داده.
از اونجایی که فکر میکردن خیلی کار گولاخی کردن گفتن این مسئله فقط محدود به محصول TIP نمیشه و هر نوع دیتابیس توزیع شده ای رو می تونیم اینطوری Maintain کنیم.
بعد اینکه کلی جشن گرفتن و خوشحالی کردن رفتن این مقاله رو در قالب یک RFC با شماره 677 منتشر کردن.(دلیلش این بود که این الگوریتم فقط بر روی شبکه های ARPA-Like جواب می داد)
آقای لمپورت که لیسانس فیزیک خونده بود و قضیه نسبیت آقای انیشتن رو بلد بود فهمید که این دو نفر Bullshit گفتن :)))))
حالا آقای لمپورت دید جامعه CS که نسبیت نمی فهمن چیه اومد توی این مقاله باهامون کامپیوتری صحبت کرد.
گفت که عزیزان شما وقتی میگید که یک رخداد مانند a قبل از یک رخداد مانند b اتفاق افتاده، در اصل دارید بر اساس پارامتر زمان فیزیکی این رو میگید. خب حالا ما باید برای هر کدم از این Process هایی که توی سیستم مون داریم یک Physical Timer بذاریم ولی خب چه تضمینی هست که اینا دقیق و هماهنگ با همدیگه کار کنن؟ ثانیا خیلی از سیستم های نرم افزاری از تایمر های دیجیتال استفاده میکنند که اون دیگه خیلی فاجعه تره.
بخش اول
—————————————————
یادمه یه بار با Leslie Lamport مصاحبه کرده بودند و ازش پرسیده بودن چرا انقدر توی Concurrency Theory گولاخی و رو دستت نیست ؟ :))))
ایشونم اول شکسته نفسی میکرد و بعدش گفت به نظرم دلیل اصلیش اینه که مسائل حوزه Distributed Systems و Concurrency Theory که شاکله اصلیش مفهوم زمان هستش رو من به چشم یک مسئله فیزیک میبینم ولی دیگران به چشم یک مسئله ریاضی.
منم مثل شما اولش نفهمیدم که این چیه میگه و فازش چیه. تا اینکه رفتم سراغ پر Cite ترین مقاله ایشون. این مقاله تا این لحظه که من دارم براتون این پست رو مینویسم ۱۲۹۸۰ تا Cite خورده :))))))))))))
یادمه توی یه مصاحبه هم خودش گفته بود خودمم درک نمیکنم چرا انقدر این مقاله رو دانشمندا دوست دارن. شاید چیزی توش دیدن که من خودم ندیدم :)))
حالا داستان این مقاله که در انتهای این پست فایلش رو براتون قرار میدم چیه؟
ایده ای که باعث شد آقای لمپورت دست به قلم بشه و این مقاله رو بنویسه از اینجا ناشی میشه که :
دو تا از محققین IBM به نام های Paul Johnson و Robert Thomas میان که مشکل اصلی یکی از محصولات IBM رو حل کنن. داستان اینه که IBM یک محصول داشته به اسم TIP که مخفف این عبارته :
Tivoli Integrated Portal
شرکت IBM کلی محصول داشت و کاربر ها موقعی که میخواستن از هر کدوم استفاده کنن مجبور میشدن برای هر کدوم یک بار عمل Authentication رو انجام بدن. شرکت IBM گفت که چه کاریه من بیام یک سیستم یکپارچه برای Authentication بنویسم که کاربرا یک بار Authenticate بشن و بعد از اون بتونن از همه محصولات استفاده کنن. واسه همینم میاد TIP رو میسازه. مشکل اینجا بود که این TIP میومد از یک سری دیتابیس Replicate شده روی شبکه ARPA-like استفاده میکرد و دنبال ارائه یک الگوریتم بودن تا بتونن به شکل Consistent این دیتابیس ها رو Maintain کنن.
میان یک الگوریتم مبتنی بر مکانیزم Timestamp میسازن. یعنی هر Event یا هر Request که میومد به سمت این دیتابیس یک Timestamp میخورد و به نوعی فکر کردن میتونن بین این Event ها یا همون Request ها یک رابطه Totally Order برقرار کنن.
سخت شد ؟ :)))))
حالا این رابطه Totally Order چی هست اصلا؟ اگر وضع تون خیلی خرابه برید سکشن 9.1 و 9.6 کتاب ریاضی گسسته روزن رو بخونید. اما اگر اوضاع تون انقدر ها هم وخیم نیست توجه تون رو به ادامه مطلب جلب میکنم :)))
ما توی ریاضیات به رابطه ای که خواص Reflexivity و AntiSymetric و Transitive رو داشته باشه میگیم یک رابطه Partial Order . به طور مثال رابطه کوچک یا بزرگ تر بودن اعداد یک نوع رابطه Partial Order عه (البته ما دو نوع رابطه Partial Order داریم اینی که من تعریف کردم رو بهش میگن Weak Partial Order و اینی که من تعریف کردم اگر به جای Reflexivity از نوع Irreflexive باشه بهش میگن Strong Partial Order ولی حالا خیلی مهم نیست و به قول یکی از دوستانم Any way :))))) )
حالا اگر به ازای هر دو عضو از مجموعه ای ک درگیر رابطه Partial order هست ما بتونیم اون دو تا رو Compare کنیم یا به اصطلاح Comparable باشن میگیم اون رابطه Totally Order هستش.
زبونم مو در آورد تا بهتون بگم که اون دو نفر ای که مسئله Replicated Database رو میخواستن حل کنن دیدشون این بود که بین Request هایی که داره به سمت دیتابیس میرن این رابطه Totally Order برقراره و میشه تعیین کرد که هر Event ای قبل یا بعد از چه Event ای رخ داده.
از اونجایی که فکر میکردن خیلی کار گولاخی کردن گفتن این مسئله فقط محدود به محصول TIP نمیشه و هر نوع دیتابیس توزیع شده ای رو می تونیم اینطوری Maintain کنیم.
بعد اینکه کلی جشن گرفتن و خوشحالی کردن رفتن این مقاله رو در قالب یک RFC با شماره 677 منتشر کردن.(دلیلش این بود که این الگوریتم فقط بر روی شبکه های ARPA-Like جواب می داد)
آقای لمپورت که لیسانس فیزیک خونده بود و قضیه نسبیت آقای انیشتن رو بلد بود فهمید که این دو نفر Bullshit گفتن :)))))
حالا آقای لمپورت دید جامعه CS که نسبیت نمی فهمن چیه اومد توی این مقاله باهامون کامپیوتری صحبت کرد.
گفت که عزیزان شما وقتی میگید که یک رخداد مانند a قبل از یک رخداد مانند b اتفاق افتاده، در اصل دارید بر اساس پارامتر زمان فیزیکی این رو میگید. خب حالا ما باید برای هر کدم از این Process هایی که توی سیستم مون داریم یک Physical Timer بذاریم ولی خب چه تضمینی هست که اینا دقیق و هماهنگ با همدیگه کار کنن؟ ثانیا خیلی از سیستم های نرم افزاری از تایمر های دیجیتال استفاده میکنند که اون دیگه خیلی فاجعه تره.
Forwarded from Ninja Learn | نینجا لرن
💎 معرفی پکیج honeypot 💎
امروز میخوام درباره یه پکیج خفن برای جنگو به اسم django-admin-honeypot صحبت کنم که به شما کمک میکنه جلوی دسترسیهای غیرمجاز به پنل ادمین پروژهتون رو بگیرین. این پکیج بهصورت حرفهای میتونه هکرها و رباتهایی که سعی دارن به پنل ادمین سایتتون دسترسی پیدا کنن رو گیر بندازه 😎
حالا django-admin-honeypot چیه؟ 🤔
خب django-admin-honeypot یه پکیج امنیتی برای Django هست که یک صفحه لاگین جعلی برای پنل ادمین شما ایجاد میکنه. این صفحه شبیه به صفحه لاگین اصلی به نظر میرسه، ولی در واقع تلهایه که کاربرهای غیرمجاز رو فریب میده تا اطلاعات ورودشون رو وارد کنن. از این طریق، شما میتونید بهراحتی متوجه بشید چه افرادی قصد دسترسی به پنل شما رو دارن. 💀
چه فایدهای داره؟ 🤷♂️
1⃣ ردیابی حملات:
شما میتونین هر کسی که سعی داره بدون اجازه وارد پنل ادمین بشه رو شناسایی کنین.
2⃣ کاهش ریسک حملات:
هکرها به اشتباه فکر میکنن وارد صفحه اصلی شدن و شما میتونین از این فرصت استفاده کنین تا حمله رو مدیریت کنین.
3⃣ سادگی استفاده:
بدون نیاز به تغییرات پیچیده توی پروژهتون، بهراحتی میتونید این پکیج رو نصب و استفاده کنین.
چطور از django-admin-honeypot استفاده کنیم؟ 🚀
1⃣ نصب پکیج
برای شروع، کافیه پکیج رو نصب کنی:
2⃣ اضافه کردن به پروژه
بعد از نصب، باید django-admin-honeypot رو به تنظیمات پروژه اضافه کنی. توی فایل
3⃣ تنظیمات URL
حالا وقتشه که یه مسیر جعلی برای پنل ادمین بسازی! توی فایل
نتیجه:
- مسیر
- مسیر
4⃣ تست و بررسی
حالا اگه کسی به
جمع بندی 🎯
فهمیدیم استفاده از django-admin-honeypot یه راه عالی برای گمراه کردن هکرها و افرادیه که سعی دارن به پنل ادمین شما دسترسی پیدا کنن. با ساختن یه تله ساده، میتونین از دسترسیهای غیرمجاز جلوگیری کنین و امنیت پروژهتون رو بالاتر ببرین.
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوام درباره یه پکیج خفن برای جنگو به اسم django-admin-honeypot صحبت کنم که به شما کمک میکنه جلوی دسترسیهای غیرمجاز به پنل ادمین پروژهتون رو بگیرین. این پکیج بهصورت حرفهای میتونه هکرها و رباتهایی که سعی دارن به پنل ادمین سایتتون دسترسی پیدا کنن رو گیر بندازه 😎
حالا django-admin-honeypot چیه؟ 🤔
خب django-admin-honeypot یه پکیج امنیتی برای Django هست که یک صفحه لاگین جعلی برای پنل ادمین شما ایجاد میکنه. این صفحه شبیه به صفحه لاگین اصلی به نظر میرسه، ولی در واقع تلهایه که کاربرهای غیرمجاز رو فریب میده تا اطلاعات ورودشون رو وارد کنن. از این طریق، شما میتونید بهراحتی متوجه بشید چه افرادی قصد دسترسی به پنل شما رو دارن. 💀
چه فایدهای داره؟ 🤷♂️
1⃣ ردیابی حملات:
شما میتونین هر کسی که سعی داره بدون اجازه وارد پنل ادمین بشه رو شناسایی کنین.
2⃣ کاهش ریسک حملات:
هکرها به اشتباه فکر میکنن وارد صفحه اصلی شدن و شما میتونین از این فرصت استفاده کنین تا حمله رو مدیریت کنین.
3⃣ سادگی استفاده:
بدون نیاز به تغییرات پیچیده توی پروژهتون، بهراحتی میتونید این پکیج رو نصب و استفاده کنین.
چطور از django-admin-honeypot استفاده کنیم؟ 🚀
1⃣ نصب پکیج
برای شروع، کافیه پکیج رو نصب کنی:
pip install django-admin-honeypot
2⃣ اضافه کردن به پروژه
بعد از نصب، باید django-admin-honeypot رو به تنظیمات پروژه اضافه کنی. توی فایل
settings.py خط زیر رو اضافه کن:INSTALLED_APPS = [
# برنامههای دیگه
'admin_honeypot',
]
3⃣ تنظیمات URL
حالا وقتشه که یه مسیر جعلی برای پنل ادمین بسازی! توی فایل
urls.py این تغییرات رو اعمال کن:from django.urls import path, include
import admin_honeypot.urls
urlpatterns = [
path('admin/', include('admin_honeypot.urls', namespace='admin_honeypot')),
path('real-admin/', admin.site.urls), # مسیر اصلی پنل ادمین واقعیتون
]
نتیجه:
- مسیر
/admin/ حالا صفحه جعلی ادمینه که تلهی شماست 😈 - مسیر
/real-admin/ هم مسیر واقعی پنل ادمین شماست که فقط خودتون میدونید.4⃣ تست و بررسی
حالا اگه کسی به
/admin/ بره و سعی کنه وارد پنل بشه، اطلاعات تلاشهاش توی لاگها ذخیره میشه و میتونین بررسی کنین که چه کسی سعی داشته پنل ادمین رو هک کنه. هر لاگ شامل زمان، آیپی و اطلاعات لاگین اشتباه فرد مهاجم میشه. 📜جمع بندی 🎯
فهمیدیم استفاده از django-admin-honeypot یه راه عالی برای گمراه کردن هکرها و افرادیه که سعی دارن به پنل ادمین شما دسترسی پیدا کنن. با ساختن یه تله ساده، میتونین از دسترسیهای غیرمجاز جلوگیری کنین و امنیت پروژهتون رو بالاتر ببرین.
#django #honeypot
Forwarded from DevTwitter | توییت برنامه نویسی
🎉سرویس جدید ویناتلنت به نام Refriend برای دسترسی راحت تر به پوزیشن های شغلی در اروپا راه اندازی شد🎉
ویناتلنت بیش از ۵ سال است که در پیدا کردن کار های ریموت برای ایرانیان در حوزه آی تی و نرم افزار فعالیت میکند.
اما اینبار با سرویس جدید Refriend امکان پیدا کردن کارهایی که دارای ویزا اسپانسرشیپ هستند رو فراهم کرده. در عین حال برای هر پوزیشن موجود در سایت، یک ریفرر مشخص وجود داره که فرایند گرفتن آفر رو تا ۶۰٪ سریع تر و راحت تر میکنه.
💡برخی ویژگی های سرویس جدید Refriend :
📍پوزیشنهای وریفای شده: بیش از ۲۰۰ فرصت شغلی معتبر در ۱۶ کشور اروپایی.
📍ویزای اسپانسرشیپ: تمامی پوزیشنها با ویزای اسپانسرشیپ ارائه میشوند.
📍ریفرر اختصاصی: هر پوزیشن یک ریفرر وریفای شده دارد که شما را به شرکت مربوطه معرفی میکند.
📍افزایش شانس آفر: با داشتن ریفرر، شانس دریافت آفر تا ۶۰٪ بیشتر میشود.
📍ریلوکیشن پکیج: برخی از پوزیشنها دارای بسته جابجایی هستند که مهاجرت شما را آسانتر و کمهزینهتر میکند.
همین حالا به WINaTalent سر بزنید و از سرویس Refriend برای پیدا کردن شغل ایدهآلتان استفاده کنید!
https://refriend.winatalent.com/
ویناتلنت بیش از ۵ سال است که در پیدا کردن کار های ریموت برای ایرانیان در حوزه آی تی و نرم افزار فعالیت میکند.
اما اینبار با سرویس جدید Refriend امکان پیدا کردن کارهایی که دارای ویزا اسپانسرشیپ هستند رو فراهم کرده. در عین حال برای هر پوزیشن موجود در سایت، یک ریفرر مشخص وجود داره که فرایند گرفتن آفر رو تا ۶۰٪ سریع تر و راحت تر میکنه.
💡برخی ویژگی های سرویس جدید Refriend :
📍پوزیشنهای وریفای شده: بیش از ۲۰۰ فرصت شغلی معتبر در ۱۶ کشور اروپایی.
📍ویزای اسپانسرشیپ: تمامی پوزیشنها با ویزای اسپانسرشیپ ارائه میشوند.
📍ریفرر اختصاصی: هر پوزیشن یک ریفرر وریفای شده دارد که شما را به شرکت مربوطه معرفی میکند.
📍افزایش شانس آفر: با داشتن ریفرر، شانس دریافت آفر تا ۶۰٪ بیشتر میشود.
📍ریلوکیشن پکیج: برخی از پوزیشنها دارای بسته جابجایی هستند که مهاجرت شما را آسانتر و کمهزینهتر میکند.
همین حالا به WINaTalent سر بزنید و از سرویس Refriend برای پیدا کردن شغل ایدهآلتان استفاده کنید!
https://refriend.winatalent.com/
Forwarded from Go Casts 🚀
با ما بپّر، یه جایی قُلابت گیر میکنه!
کلیک خوردن مفاهیم مهندسی نرم افزار تو ذهن راه روشن و مشخصی نداره، ولی اگه خودتو درگیرش کنی آخرش یه جایی قلابت گیر میکنه.
تیمسازی ۳ تازه شروع شده، هدفمون از دوره و تیمسازی اینه که اونقدری برات بستر فراهم کنیم که آخرش قلابت گیر کنه و یه سری از مفاهیم مهندسی نرم افزار رو بهتر درک کنی.
با تسک دادن و به چالش کشیدن ذهنت برای طراحی سیستم، درگیرت میکنیم که یه جایی مفاهیم تو ذهنت کلیک بخوره.
سعی میکنیم چالش هایی که طراحی میکنیم به چالش های واقعی مهندسی نزدیک باشه که شرایط برای کلیک خوردن مفاهیم فراهم بشه.
برنامه نویسی و درک مفاهیم مرتبط باهاش کار یکی دو روز نیست، واسه همین بر خلاف بوتکمپ و ورکشاپ های کوتاه مدت، سعی میکنیم اونقدری بهت زمان بدیم که آروم آروم بتونی هضم کنی مفاهیم رو (الحمدلله تیمسازی بیش از ده ماهه که شروع شده و اگه خدا امان بده و سلامتی سعی میکنیم ادامه ش بدیم)
تصویر حاضر، فیدبک یکی از بچه های شرکت کننده در دوره + تیمسازی ۳ هست
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515
@gocasts
کلیک خوردن مفاهیم مهندسی نرم افزار تو ذهن راه روشن و مشخصی نداره، ولی اگه خودتو درگیرش کنی آخرش یه جایی قلابت گیر میکنه.
تیمسازی ۳ تازه شروع شده، هدفمون از دوره و تیمسازی اینه که اونقدری برات بستر فراهم کنیم که آخرش قلابت گیر کنه و یه سری از مفاهیم مهندسی نرم افزار رو بهتر درک کنی.
با تسک دادن و به چالش کشیدن ذهنت برای طراحی سیستم، درگیرت میکنیم که یه جایی مفاهیم تو ذهنت کلیک بخوره.
سعی میکنیم چالش هایی که طراحی میکنیم به چالش های واقعی مهندسی نزدیک باشه که شرایط برای کلیک خوردن مفاهیم فراهم بشه.
برنامه نویسی و درک مفاهیم مرتبط باهاش کار یکی دو روز نیست، واسه همین بر خلاف بوتکمپ و ورکشاپ های کوتاه مدت، سعی میکنیم اونقدری بهت زمان بدیم که آروم آروم بتونی هضم کنی مفاهیم رو (الحمدلله تیمسازی بیش از ده ماهه که شروع شده و اگه خدا امان بده و سلامتی سعی میکنیم ادامه ش بدیم)
تصویر حاضر، فیدبک یکی از بچه های شرکت کننده در دوره + تیمسازی ۳ هست
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515
@gocasts
Forwarded from Syntax | سینتکس (Mohammad Falahi)
درود خدمت سینتکسی های گرامی.
تیم سینتکس نیازمند فرانتاند دولوپر با تجربه با مشخصات ذکر شده در زیر میباشد:
- دارای روحیه تیمی
- مسلط به JS
- مسلط به ریسپانسیو/adaptive دیزاین
- مسلط به یکی از فریمورکهای NextJS یا nuxt
- آشنایی با یکی از کتابخونههای انیمیشن مانند GSAP
- تکنیک های بهینه سازی وب
- روحیه یادگیری بالا، خلاقیت و انعطافپذیری
در صورت تمایل به عضویت در تیم سینتکس به عنوان فرانتاند دولوپر، به آیدی زیر پیام دهید:
@FalahiDevPV
تیم سینتکس نیازمند فرانتاند دولوپر با تجربه با مشخصات ذکر شده در زیر میباشد:
- دارای روحیه تیمی
- مسلط به JS
- مسلط به ریسپانسیو/adaptive دیزاین
- مسلط به یکی از فریمورکهای NextJS یا nuxt
- آشنایی با یکی از کتابخونههای انیمیشن مانند GSAP
- تکنیک های بهینه سازی وب
- روحیه یادگیری بالا، خلاقیت و انعطافپذیری
در صورت تمایل به عضویت در تیم سینتکس به عنوان فرانتاند دولوپر، به آیدی زیر پیام دهید:
@FalahiDevPV
Forwarded from LearnPOV | لرن پی او وی
💎 بررسی tree shaking در جاوااسکریپت 💎
درواقع Tree Shaking در جاوااسکریپت یک تکنیک بهینهسازیه که کدهای استفاده نشده رو از باندل نهایی حذف میکنه و به طور خاص با ماژولهای ES6 کار میکنه که از دستورهای
با کاهش حجم باندل با حذف کدهای اضافی و استفادهنشده، حجم فایل نهایی کاهش پیدا میکنه و بارگذاری صفحات سریعتر میشه و همچنین باعث میشه تا منابع سیستم کمتر مصرف بشن.
نحوه کار Tree Shaking ⚒️
درواقع Tree shaking تنها با ماژولهای ES6 کار میکند، زیرا این ماژولها به طور ایستا وابستگیهای خود را مشخص میکنند ( برای درک بهتر این مقاله رو بخونید ). هنگامی که از کدهای
- Minification and Dead Code Elimination: tree shaking معمولاً همراه با ابزارهای minification مانند UglifyJS یا Terser استفاده میشود. این ابزارها به فشردهسازی کد و حذف کدهای مرده کمک میکنند، اما tree shaking فراتر از حذف کدهای مرده عمل میکند و کدهای وابسته به ماژولهای غیرضروری را نیز از بین میبرد.
برای اجرای tree shaking در Webpack، باید حالت production را فعال کنید تا Webpack کدهای غیرضروری را به طور خودکار حذف کند. این کار باعث میشود که باندل نهایی حاوی تنها کدهایی باشد که واقعاً در برنامه استفاده شدهاند.
### مثال:
در یک پروژه که از کتابخانههای بزرگ مانند lodash یا moment.js استفاده میشود، بدون tree shaking کل کتابخانه در باندل قرار میگیرد. اما با tree shaking، تنها توابعی که واقعاً استفاده شدهاند در باندل نهایی قرار میگیرند و بقیه حذف میشوند.
این تکنیک به ویژه برای پروژههای بزرگ و سنگین مفید است، زیرا میتواند تأثیر زیادی بر روی کارایی و حجم باندل داشته باشد
۰ابزارهای رایج:
Webpack: از نسخه 2 به بعد، Webpack از Tree Shaking پشتیبانی میکند و میتوان آن را به راحتی با تنظیم حالت تولید (production) فعال کرد.
Rollup: Rollup نیز یکی دیگر از ابزارهایی است که به طور خاص برای Tree Shaking بهینه شده است.
درواقع Tree Shaking در جاوااسکریپت یک تکنیک بهینهسازیه که کدهای استفاده نشده رو از باندل نهایی حذف میکنه و به طور خاص با ماژولهای ES6 کار میکنه که از دستورهای
import و export برای مدیریت وابستگیها استفاده میکنند.هدف اصلی tree shaking اینه که فقط کدی که واقعاً در برنامه استفاده میشود در باندل نهایی باقی بماند و کدهای اضافی حذف شوند 💥چه مزایایی داره Tree Shaking ؟ 🚀
با کاهش حجم باندل با حذف کدهای اضافی و استفادهنشده، حجم فایل نهایی کاهش پیدا میکنه و بارگذاری صفحات سریعتر میشه و همچنین باعث میشه تا منابع سیستم کمتر مصرف بشن.
نحوه کار Tree Shaking ⚒️
درواقع Tree shaking تنها با ماژولهای ES6 کار میکند، زیرا این ماژولها به طور ایستا وابستگیهای خود را مشخص میکنند ( برای درک بهتر این مقاله رو بخونید ). هنگامی که از کدهای
import و export استفاده میشود، ابزارهایی مانند Webpack میتونن بفهمند کدوم بخش از کد مورد استفاده قرار نمیگیره و آنها را حذف کنند.نکته ای که وجود داره اینه که جاوااسکریپت به تنهایی نمیتونه tree shaking رو فعال کنه و bundlerهایی مثل webpack و rollup انجام میشه !
- Minification and Dead Code Elimination: tree shaking معمولاً همراه با ابزارهای minification مانند UglifyJS یا Terser استفاده میشود. این ابزارها به فشردهسازی کد و حذف کدهای مرده کمک میکنند، اما tree shaking فراتر از حذف کدهای مرده عمل میکند و کدهای وابسته به ماژولهای غیرضروری را نیز از بین میبرد.
برای اجرای tree shaking در Webpack، باید حالت production را فعال کنید تا Webpack کدهای غیرضروری را به طور خودکار حذف کند. این کار باعث میشود که باندل نهایی حاوی تنها کدهایی باشد که واقعاً در برنامه استفاده شدهاند.
### مثال:
در یک پروژه که از کتابخانههای بزرگ مانند lodash یا moment.js استفاده میشود، بدون tree shaking کل کتابخانه در باندل قرار میگیرد. اما با tree shaking، تنها توابعی که واقعاً استفاده شدهاند در باندل نهایی قرار میگیرند و بقیه حذف میشوند.
این تکنیک به ویژه برای پروژههای بزرگ و سنگین مفید است، زیرا میتواند تأثیر زیادی بر روی کارایی و حجم باندل داشته باشد
۰ابزارهای رایج:
Webpack: از نسخه 2 به بعد، Webpack از Tree Shaking پشتیبانی میکند و میتوان آن را به راحتی با تنظیم حالت تولید (production) فعال کرد.
Rollup: Rollup نیز یکی دیگر از ابزارهایی است که به طور خاص برای Tree Shaking بهینه شده است.
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from LearnPOV | لرن پی او وی
امروز قراره تو پست جدید مبحث tree-shaking رو در جاوااسکریپت بررسی بکنیم و بببینیم چیه و به چه دردی میخوره
منتظرش باشید پست جدید ساعت ۵ و ۴۰ دقیقه منتشر میشه 🚀❤️
منتظرش باشید پست جدید ساعت ۵ و ۴۰ دقیقه منتشر میشه 🚀❤️
Forwarded from محتوای آزاد سهراب
کیدیای پلاسما ۶.۲ با شعار
عرضه شد.
🔗 https://kde.org/announcements/plasma/6/6.2.0/
توی این نسخه میتونید ترجمه های نصفه و نیمه من و بچههارو ببینید :))) البته داریم سعی میکنیم پلاسما رو کامل تر ترجمه کنیم.
@SohrabContents
«بیاید خلاق باشیم»
عرضه شد.
توی این نسخه میتونید ترجمه های نصفه و نیمه من و بچههارو ببینید :))) البته داریم سعی میکنیم پلاسما رو کامل تر ترجمه کنیم.
@SohrabContents
Please open Telegram to view this post
VIEW IN TELEGRAM
KDE Community
Plasma 6.2
Plasma becomes a friendlier, more accessible and smarter environment
Forwarded from ⚝
GitHub
GitHub - visioncortex/vtracer: Raster to Vector Graphics Converter
Raster to Vector Graphics Converter. Contribute to visioncortex/vtracer development by creating an account on GitHub.
visioncortex.org/vtracer
GitHub.com/visioncortex/vtracer
نرمافزار آزاد مبدّل تصاویر شطرنجی (raster) به تصاویر برداری (vector) در نسخههای خطّ فرمان، کتابخانهٔ راست، پایتون و همچنین برنامهٔ تحت وب:
#FLOSS #graphics #tool #vector #raster #معرفی
@amiria703_channel
GitHub.com/visioncortex/vtracer
نرمافزار آزاد مبدّل تصاویر شطرنجی (raster) به تصاویر برداری (vector) در نسخههای خطّ فرمان، کتابخانهٔ راست، پایتون و همچنین برنامهٔ تحت وب:
#FLOSS #graphics #tool #vector #raster #معرفی
@amiria703_channel
Forwarded from LearnPOV | لرن پی او وی
Forwarded from پروگرمرزمیم (Mehan Alavimajd)
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from LearnPOV | لرن پی او وی
Forwarded from GenX
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 معرفی کارگاه : Ideation & Tagline
🔹 در این کارگاه، محمدجواد ابوطالبی در مورد چگونگی پیدا کردن و ارزیابی ایدهها، گامهای اولیه برای درک نیازهای بازار، نحوه نوشتن تگلاین برای ایده، روشهای معرفی اون و همچنین ترندهای روز حوزه هوش مصنوعی مولد صحبت خواهد کرد.
🔹 این کارگاه به شما کمک میکنه تا اولین گامها رو برای کشف یک ایده مناسب در حوزه هوش مصنوعی مولد بردارید و به سوالاتتون در زمینه ایدهپردازی و ارزیابی اون پاسخ میده.
🗓 جمعه ۲۰ مهرماه | آنلاین
🔴 لینک شرکت در جلسه، روز پنجشنبه برای ثبتنام کنندگان ایمیل میشه
🌐 ثبت نام در کارگاههای جنیکس : genx.build
✅ Telegram | ✅ twitter | Linkedin |✅ Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from CleverDevs (Mammad)
یکی از بچه های ایرانی خفن تو حوزه هوش مصنوعی یه چنل یوتوب زده و آموزش های جالبی برای استفاده از هوش مصنوعی و ابزار های مربوط به اون تولید میکنه
اگه میخواید تو این حوزه هم چیزایی بلد باشید یه سر به یوتوبش بزنید
https://www.youtube.com/@AIPulse24
#ai
@CleverDevs - @CleverDevsGp
اگه میخواید تو این حوزه هم چیزایی بلد باشید یه سر به یوتوبش بزنید
https://www.youtube.com/@AIPulse24
#ai
@CleverDevs - @CleverDevsGp
Forwarded from IRCF | اینترنت آزاد برای همه
نمیدانم چرا وزیر ارتباطات بهجای واژههای گویا و آشنای سانسور و فیلترینگ که جایگاه ویژهای در فرهنگ ما دارند، از عبارت نامانوس «مدیریت هوشمند» استفاده میکند.
سانسور و فیلتر خیلی زیباتر هم هستند!
🔍 ircf.space
@ircfspace
سانسور و فیلتر خیلی زیباتر هم هستند!
🔍 ircf.space
@ircfspace
Forwarded from ⚝
تو دنیایی که نوبل «فیزیک» به پیشگام «هوش مصنوعی» داده میشه، حرفی از عدم ارتباط باد معده و شقیقه نزنید.
#fun #news #science
@amiria703_channel
#fun #news #science
@amiria703_channel