Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
🔰دستورات کمتر دیده شده در لینوکس : سری هفدهم:
🔰به منظور حفظ حریم خصوصی privacy in linux و محافظت سیستم در برابر روش جمعآوری و تحلیل دادهها ا telemetry data collection میتوانید دو مورد زیر را انجام بدهید:
ابتدا بررسی و پیدا کردن اسم ماژول وب کم و میکروفن:
🔸غیرفعال کردن وبکم:
این دستور ماژول مربوط به وبکم را از کرنل حذف میکند و وبکم غیرفعال میشود.
🔸برای فعالسازی وب کم
🔸غیرفعال کردن میکروفون:
این دستور ماژول مربوط به میکروفن را از کرنل حذف میکند و میکروفن غیرفعال میشود.
🔸برای فعالسازی مجدد میکروفون:
——————————————-
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
حمایت از کانال-donate
https://zarinp.al/learninghive.ir
🔰به منظور حفظ حریم خصوصی privacy in linux و محافظت سیستم در برابر روش جمعآوری و تحلیل دادهها ا telemetry data collection میتوانید دو مورد زیر را انجام بدهید:
ابتدا بررسی و پیدا کردن اسم ماژول وب کم و میکروفن:
sudo lsmod | grep uvc
sudo lsmod | grep snd
🔸غیرفعال کردن وبکم:
این دستور ماژول مربوط به وبکم را از کرنل حذف میکند و وبکم غیرفعال میشود.
sudo modprobe -r uvcvideo
🔸برای فعالسازی وب کم
sudo modprobe uvcvideo
🔸غیرفعال کردن میکروفون:
این دستور ماژول مربوط به میکروفن را از کرنل حذف میکند و میکروفن غیرفعال میشود.
mixer set Capture nocap
lsmod | grep snd_hda_intel
🔸برای فعالسازی مجدد میکروفون:
amixer set Capture cap
sudo modprobe snd_hda_intel
——————————————-
نویسنده: حسین سیلانی
منبع : کانال لینوکسی: لینوکس تی ان تی
@linuxtnt
حمایت از کانال-donate
https://zarinp.al/learninghive.ir
Forwarded from DevTwitter | توییت برنامه نویسی
رندرینگ در Next.js
در دنیای توسعه وب، یکی از دلایل محبوبیت Next.js نحوه مدیریت فرآیندهای رندرینگ است. این
فریمورک انعطافپذیری زیادی در ارائه انواع مختلف رندرینگ برای بهینهسازی عملکرد و تجربه کاربری فراهم میکند. در ادامه به انواع رندرینگ در Next.js میپردازیم:
رندرینگ سمت سرور (SSR) - Server Side Rendering:
در این روش، صفحه وب در سمت سرور رندر شده و به صورت HTML کامل به مرورگر کاربر ارسال میشود. این نوع رندرینگ برای سئو (SEO) و دسترسی سریع به محتوای اولیه بسیار موثر است.
رندرینگ سمت کاربر - کلاینت (CSR) - Client Side Rendering:
در CSR، صفحه ابتدا به صورت یک فایل HTML خالی ارسال میشود و جاوا اسکریپت در مرورگر بارگذاری شده و محتوای پویا را ایجاد میکند. این نوع رندرینگ برای اپلیکیشنهای تکصفحهای (SPA) که تعاملات زیادی دارند، مناسب است.
رندرینگ استاتیک (SSG) - Static Site Generation:
در این روش، صفحات به صورت استاتیک و در زمان ساخت (build time) تولید میشوند و به کاربران ارائه میگردند. این نوع رندرینگ بسیار سریع و مناسب برای محتوای ثابت است.
رندرینگ هیبریدی (ISR) - Incremental Static Regeneration:
ترکیبی از رندرینگ استاتیک و دینامیک است که به شما اجازه میدهد صفحاتی را به صورت استاتیک ایجاد کنید و بعداً بدون نیاز به بازسازی کل سایت، آنها را بهروزرسانی کنید. این روش برای بهبود عملکرد در سایتهای پویا مفید است.
Next.js با پشتیبانی از این انواع مختلف رندرینگ، انعطاف و سرعت بالایی برای ایجاد اپلیکیشنهای وب پیشرفته فراهم میکند.
@DevTwitter | <Mohsen Abbasi/>
در دنیای توسعه وب، یکی از دلایل محبوبیت Next.js نحوه مدیریت فرآیندهای رندرینگ است. این
فریمورک انعطافپذیری زیادی در ارائه انواع مختلف رندرینگ برای بهینهسازی عملکرد و تجربه کاربری فراهم میکند. در ادامه به انواع رندرینگ در Next.js میپردازیم:
رندرینگ سمت سرور (SSR) - Server Side Rendering:
در این روش، صفحه وب در سمت سرور رندر شده و به صورت HTML کامل به مرورگر کاربر ارسال میشود. این نوع رندرینگ برای سئو (SEO) و دسترسی سریع به محتوای اولیه بسیار موثر است.
رندرینگ سمت کاربر - کلاینت (CSR) - Client Side Rendering:
در CSR، صفحه ابتدا به صورت یک فایل HTML خالی ارسال میشود و جاوا اسکریپت در مرورگر بارگذاری شده و محتوای پویا را ایجاد میکند. این نوع رندرینگ برای اپلیکیشنهای تکصفحهای (SPA) که تعاملات زیادی دارند، مناسب است.
رندرینگ استاتیک (SSG) - Static Site Generation:
در این روش، صفحات به صورت استاتیک و در زمان ساخت (build time) تولید میشوند و به کاربران ارائه میگردند. این نوع رندرینگ بسیار سریع و مناسب برای محتوای ثابت است.
رندرینگ هیبریدی (ISR) - Incremental Static Regeneration:
ترکیبی از رندرینگ استاتیک و دینامیک است که به شما اجازه میدهد صفحاتی را به صورت استاتیک ایجاد کنید و بعداً بدون نیاز به بازسازی کل سایت، آنها را بهروزرسانی کنید. این روش برای بهبود عملکرد در سایتهای پویا مفید است.
Next.js با پشتیبانی از این انواع مختلف رندرینگ، انعطاف و سرعت بالایی برای ایجاد اپلیکیشنهای وب پیشرفته فراهم میکند.
@DevTwitter | <Mohsen Abbasi/>
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy Raymond)
🔶 جذب سرمایه ۶٫۶ میلیارد دلاری پردردسر OpenAI
شرکت OpenAI با چالش بزرگی دستوپنجه نرم میکند، زیرا این شرکت باید طی دو سال آینده به سوددهی برسد؛ وگرنه امکان دارد مجبور به بازگرداندن سرمایه به سرمایهگذاران شود. در چنین سناریویی احتمال درگیریهای حقوقی وجود دارد.
#خبر
@TheRaymondDev
شرکت OpenAI با چالش بزرگی دستوپنجه نرم میکند، زیرا این شرکت باید طی دو سال آینده به سوددهی برسد؛ وگرنه امکان دارد مجبور به بازگرداندن سرمایه به سرمایهگذاران شود. در چنین سناریویی احتمال درگیریهای حقوقی وجود دارد.
#خبر
@TheRaymondDev
Business Insider
There's a catch in OpenAI's $6.6 billion funding deal that no one is talking about
OpenAI reportedly has to become a for-profit entity in two years or give back investor money from its funding round. It could be tricky, lawyers say.
Forwarded from Bardiaism
کیوت ۶.۸ که LTS یا Long time support هست منتشر شد
🔹 مهمترین تغییرات این نسخه پشتیبانی arm روی همه پلتفرمها هست. با کامل شدن این امکان کیوت ۶.۸ میتونه علاوه بر مک و لینوکس که قبلا پشتیبانی میشد، روی ویندوز arm هم کامپایل بشه.
🔹 علاوه بر اون پشتیبانی از Apple Vision Pro و Meta Quest 3 و یک سری دستگاه دیگه هم بهش اضافه شده که میتونید برنامههاتونو به این دستگاهها هم پورت کنید.
🔹 همینطور برای نسخههای آخر اندروید، مک و آیاواس بهینه شده تا بهتر روی این سیستمعاملها کار کنه و با آخرین امکاناتشون هماهنگ باشه.
🔹 از طرفی در این نسخه امکاناتی اضافه شده که شما میتونید فریمورک رو موقع کامپایل طوری کامپایل کنید که حجم کمتری بگیره و استفاده از منابعش کمتر بشه (احتمالا با حذف قابلیتهایی که نیاز ندارید)
🔹 ماژول QtGraph هم تغییراتی داشته تا پشتیبانی از دادههای سهبعدی رو بصورت کامل پشتیبانی کنه.
🔹 ماژول Multimedia تغییراتی برای بهبود عملکرد و همینطور API داشته و از طرفی روی لینوکس پشتیبانی از Wayland به کلاسهایی مثل QScreenCapture اضافه شده.
🔹 به ماژول Qt Quick افکتها و امکانات بیشتری برای برای کار با SVG ها اضافه شده.
از طرفی روی Qt Quick Controls بهینهسازیها و تغییراتی اعمال شده که با کامپیوترهای دسکتاپ هماهنگی بیشتری داشته باشه.
ناگفته نمونه که از مشکلات بزرگ Qt Quick همیشه این بوده که برای کار با دستگاههای تاچ بخصوص اندروید و آیاواس طراحی شده و روی دسکتاپها مثل Widget ها هیچوقت نتونست به اون عملکرد ایدهآلش برسه. برای همین تو هر نسخهی جدید که منتشر میشه Qt تغییرات و بهینهسازیهای زیادی برای Qt Quick در جهت بهبود عملکرد روی دسکتاپها اعمال میکنه.
🔹 ماژول جدیدی به Qt اضافه شده تحت نام XR Module. من باهاش کار نکردم و خیلی در موردش نخوندم، ولی بصورت کلی برای کار و پشتیبانی از دیوایسهای VR و XR هست و بنظر میاد کیوت هم تصمیم گرفته به سمت این دیوایسها بره و پشتیبانی از این دیوایسهارو به فریمورکش اضافه کنه. احتمالا باید ماژول جذابی باشه.
🔹 بهینهسازیهای نمایشی در Qt Quick 3D جهت بهبود نمایش سایهها و متریالها انجام شده.
🔹 به ماژول Network قابلیتی اضافه شده که دیگه میتونه روی local socket (منظور localhost نیست) ریکوئستهای http ارسال کنه که باید امکان جالبی باشه.
از طرفی قابلیت send DNS over TLS به این ماژول اضافه شده و ابزارهای Qt GRPC و Qt Protobuf هم که قبلا پشتیبانی میشدن، پشتیبانیشون کامل شده و تمامی امکاناتشون تو این نسخه پشتیبانی میشه.
به علاوه یک سری بهینهسازیهای عملکردی.
🔹 در ماژول Core هم تغییراتی اعمال شده مثل اضافه شدن کلاس QChronoTimer که از std::chrono بخ عنوان بکاندش اضافه میکنه.
همچنین کلاسهای QString و QByteArray و QList و QHash بهینهسازیهایی داشتند.
همینطور برای اونها که روی اندروید کدهاشونو میخوان اجرا کنن سری کلاسهایی تحت عنوان QtJniTypes اضافه شده که بهشون کمک میکنه راحتتر از دادههای جاوایی و اندرویدی توی کدهاشون استفاده کنن.
🔹 ماژولهای دیگه مثل Qt Gui و Qt SQL و Qt WebEngine و ... بهینهسازیها و تغییرات جزییتر داشتند که بصورت کامل میتونید توی release note نسخه بخونید:
https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.8.0/release-note.md
لینک خبر انتشار:
https://www.qt.io/blog/qt-6.8-released
@Bardiaism
🔹 مهمترین تغییرات این نسخه پشتیبانی arm روی همه پلتفرمها هست. با کامل شدن این امکان کیوت ۶.۸ میتونه علاوه بر مک و لینوکس که قبلا پشتیبانی میشد، روی ویندوز arm هم کامپایل بشه.
🔹 علاوه بر اون پشتیبانی از Apple Vision Pro و Meta Quest 3 و یک سری دستگاه دیگه هم بهش اضافه شده که میتونید برنامههاتونو به این دستگاهها هم پورت کنید.
🔹 همینطور برای نسخههای آخر اندروید، مک و آیاواس بهینه شده تا بهتر روی این سیستمعاملها کار کنه و با آخرین امکاناتشون هماهنگ باشه.
🔹 از طرفی در این نسخه امکاناتی اضافه شده که شما میتونید فریمورک رو موقع کامپایل طوری کامپایل کنید که حجم کمتری بگیره و استفاده از منابعش کمتر بشه (احتمالا با حذف قابلیتهایی که نیاز ندارید)
🔹 ماژول QtGraph هم تغییراتی داشته تا پشتیبانی از دادههای سهبعدی رو بصورت کامل پشتیبانی کنه.
🔹 ماژول Multimedia تغییراتی برای بهبود عملکرد و همینطور API داشته و از طرفی روی لینوکس پشتیبانی از Wayland به کلاسهایی مثل QScreenCapture اضافه شده.
🔹 به ماژول Qt Quick افکتها و امکانات بیشتری برای برای کار با SVG ها اضافه شده.
از طرفی روی Qt Quick Controls بهینهسازیها و تغییراتی اعمال شده که با کامپیوترهای دسکتاپ هماهنگی بیشتری داشته باشه.
ناگفته نمونه که از مشکلات بزرگ Qt Quick همیشه این بوده که برای کار با دستگاههای تاچ بخصوص اندروید و آیاواس طراحی شده و روی دسکتاپها مثل Widget ها هیچوقت نتونست به اون عملکرد ایدهآلش برسه. برای همین تو هر نسخهی جدید که منتشر میشه Qt تغییرات و بهینهسازیهای زیادی برای Qt Quick در جهت بهبود عملکرد روی دسکتاپها اعمال میکنه.
🔹 ماژول جدیدی به Qt اضافه شده تحت نام XR Module. من باهاش کار نکردم و خیلی در موردش نخوندم، ولی بصورت کلی برای کار و پشتیبانی از دیوایسهای VR و XR هست و بنظر میاد کیوت هم تصمیم گرفته به سمت این دیوایسها بره و پشتیبانی از این دیوایسهارو به فریمورکش اضافه کنه. احتمالا باید ماژول جذابی باشه.
🔹 بهینهسازیهای نمایشی در Qt Quick 3D جهت بهبود نمایش سایهها و متریالها انجام شده.
🔹 به ماژول Network قابلیتی اضافه شده که دیگه میتونه روی local socket (منظور localhost نیست) ریکوئستهای http ارسال کنه که باید امکان جالبی باشه.
از طرفی قابلیت send DNS over TLS به این ماژول اضافه شده و ابزارهای Qt GRPC و Qt Protobuf هم که قبلا پشتیبانی میشدن، پشتیبانیشون کامل شده و تمامی امکاناتشون تو این نسخه پشتیبانی میشه.
به علاوه یک سری بهینهسازیهای عملکردی.
🔹 در ماژول Core هم تغییراتی اعمال شده مثل اضافه شدن کلاس QChronoTimer که از std::chrono بخ عنوان بکاندش اضافه میکنه.
همچنین کلاسهای QString و QByteArray و QList و QHash بهینهسازیهایی داشتند.
همینطور برای اونها که روی اندروید کدهاشونو میخوان اجرا کنن سری کلاسهایی تحت عنوان QtJniTypes اضافه شده که بهشون کمک میکنه راحتتر از دادههای جاوایی و اندرویدی توی کدهاشون استفاده کنن.
🔹 ماژولهای دیگه مثل Qt Gui و Qt SQL و Qt WebEngine و ... بهینهسازیها و تغییرات جزییتر داشتند که بصورت کامل میتونید توی release note نسخه بخونید:
https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.8.0/release-note.md
لینک خبر انتشار:
https://www.qt.io/blog/qt-6.8-released
@Bardiaism
www.qt.io
Qt 6.8 LTS Released!
Qt 6.8 is now available, packed with support for new desktop, mobile, and embedded platforms, and exciting new features to meet the needs of demanding applications.
Forwarded from Gopher Academy
🔵 عنوان مقاله
Cryptography in Go: AES Encryption
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته، بخش نهایی از سه بخشی از کتاب جان در مورد زبان برنامهنویسی Go و رمزنگاری است. در این بخش، خوانندگان با چالشهایی در خصوص رمزگذاری و رمزگشایی با استفاده از الگوریتم AES در Go روبرو میشوند. جان در ادامه پاسخها و توضیحات مفصلی در رابطه با این مسائل ارائه داده است. این مقاله نه تنها برای فراگیران جدید که میخواهند نحوه استفاده از AES در Go را یاد بگیرند مفید است بلکه به کاربران مجرب نیز کمک میکند تا درک عمیقتری از مفاهیم پیشرفته در رمزنگاری داشته باشند. ارائه مثالهای کد و توضیحات جان به شکلی عملی و کاربردی به بهبود مهارتهای برنامهنویسی خوانندگان کمک میکند.
🟣لینک مقاله:
https://golangweekly.com/link/159856/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Cryptography in Go: AES Encryption
🟢 خلاصه مقاله:
مقالهای که مورد بررسی قرار گرفته، بخش نهایی از سه بخشی از کتاب جان در مورد زبان برنامهنویسی Go و رمزنگاری است. در این بخش، خوانندگان با چالشهایی در خصوص رمزگذاری و رمزگشایی با استفاده از الگوریتم AES در Go روبرو میشوند. جان در ادامه پاسخها و توضیحات مفصلی در رابطه با این مسائل ارائه داده است. این مقاله نه تنها برای فراگیران جدید که میخواهند نحوه استفاده از AES در Go را یاد بگیرند مفید است بلکه به کاربران مجرب نیز کمک میکند تا درک عمیقتری از مفاهیم پیشرفته در رمزنگاری داشته باشند. ارائه مثالهای کد و توضیحات جان به شکلی عملی و کاربردی به بهبود مهارتهای برنامهنویسی خوانندگان کمک میکند.
🟣لینک مقاله:
https://golangweekly.com/link/159856/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Bitfield Consulting
Encrypting with AES — Bitfield Consulting
AES is an amazing, state-of-the-art encryption system, and it’s built right in to Go as part of the standard library. It’s also incredibly easy to use. Let’s see how!
Forwarded from a pessimistic researcher (Kc)
البته من یک اشتباهی کردم و آقای Herbert A. Simon اولین کسی بودن که هم تورینگ بردن و هم نوبل. ولی ایشون نوبل شون تو اقتصاد بود!
Forwarded from Meitix
سر این قضیه layout و این داستانا مثل اینکه خوده maintainer های go مشکل جدی با این ریپو ها دارن. کامنش روی ریپو ببینید:
https://github.com/golang-standards/project-layout/issues/117
https://github.com/golang-standards/project-layout/issues/117
GitHub
this is not a standard Go project layout · Issue #117 · golang-standards/project-layout
The README makes clear that this is not official, but even the claim "it is a set of common historical and emerging project layout patterns in the Go ecosystem" is not accurate. For examp...
Forwarded from DevTwitter | توییت برنامه نویسی
الگوهای ماکروسرویس که هر مهندس نرمافزار باید بدونه. این الگوها کمک میکنن سیستمهای نرمافزاری مقاوم در برابر خطا و قابل نگهداری طراحی کنید
https://blog.amigoscode.com/p/mircroservices-best-practices
@DevTwitter | <Mohammad Roshandelpoor/>
https://blog.amigoscode.com/p/mircroservices-best-practices
@DevTwitter | <Mohammad Roshandelpoor/>
Forwarded from a pessimistic researcher (Kc)
" پر Cite ترین مقاله لمپورت"
بخش دوم
—————————————————
پس این مزخرفی که این دو نفر گفتن قابل پیاده سازی نبود و دلیلش هم اینه که رابطه بین Event ها از نوع Totally Order نیست بلکه از نوع Partially Order هستش.
یعنی این که ممکنه ما دو تا Event داشته باشیم که به هیچ عنوان نتونیم بگیم کدومشون اول رخ دادن.
این دید رو آقای لمپورت از قضیه نسبیت خاص انیشتن داشتن.
در آخر آقای لمپورت میاد الگوریتم اون دو نفر رو بر اساس تئوری ای که الان بهتون توضیح دادم اصلاح میکنن و نوع درستی از اون الگوریتم رو به ما معرفی میکنن.
خیلی این مقاله قشنگه. این مقاله میاد خیلی درست و دقیق مفهوم زمان رو توی سیستم های همروند و توزیع شده به ما توضیح میده. خیلی دقیق میاد توضیح میده که ما به چه سیستمی میگیم Distributed و چه زمان میگیم دو تا Event دارن به طور Concurrent اجرا میشن.
خلاصه خوندنش برای کسانی که میخوان وارد حوزه هایی بشن که سر و کارشون با زمان هستش مستحبه.
توی این مقاله آقای لمپورت برای درک بهتر قضیه نسبیت خاص دو تا مرجع معرفی میکنه که یکیش نظر من رو خیلی به خودش جلب کرد.
یکی از این مراجع خیلی با دید ریاضی فیزیک نوشته شده که من اصلا نمی فهممش و براتونم میذارم و شما هم نمی فهمیدش.
ولی اون یکی مرجع سعی کرده نسبیت خاص رو به جای توضیح فرمال و ریاضیاتیک. با توضیح یک داستان به طور تصویری بهمون حالی کنه که خیلی قشنگه و بخونید میفهمید و براتون میذارم :)))))
در آخر یه نکته دیگه هم بگم در مورد این مقاله. آقای Jim Gray که قبل تر ها توی یک پستی تحت عنوان ملوان گمشده معرفیشون کردم یه روز به لمپورت میگه:
هر کس که مقاله ات رو میخونه یکی از این دو نظر رو داره : یا میگیه خیلی بدیهی بود یا میگه یک شاهکار به تمام معناست.
لمپورت هم بهش گفته که : با دسته اول نمی تونم بحث کنم و با دسته دومم حوصله بحث کردن ندارم :)))))
نظر من رو بخواید هر دوشه :))))
یه نکته جالب دیگه هم اینکه لمپورت میگه من با هرکسی که در باره این مقاله صحبت میکنم در مورد State Machine توی مقاله صحبت میکنم و اونا هم میگن مگه مقاله ات State Machine داشت اصلا :)))))
به طوریکه خود لمپورت میگه من خودم شک میکنم و میرم مقاله ام رو از اول میخونم
خلاصه همین دیگه
تموم شد :)))
بخش دوم
—————————————————
پس این مزخرفی که این دو نفر گفتن قابل پیاده سازی نبود و دلیلش هم اینه که رابطه بین Event ها از نوع Totally Order نیست بلکه از نوع Partially Order هستش.
یعنی این که ممکنه ما دو تا Event داشته باشیم که به هیچ عنوان نتونیم بگیم کدومشون اول رخ دادن.
این دید رو آقای لمپورت از قضیه نسبیت خاص انیشتن داشتن.
در آخر آقای لمپورت میاد الگوریتم اون دو نفر رو بر اساس تئوری ای که الان بهتون توضیح دادم اصلاح میکنن و نوع درستی از اون الگوریتم رو به ما معرفی میکنن.
خیلی این مقاله قشنگه. این مقاله میاد خیلی درست و دقیق مفهوم زمان رو توی سیستم های همروند و توزیع شده به ما توضیح میده. خیلی دقیق میاد توضیح میده که ما به چه سیستمی میگیم Distributed و چه زمان میگیم دو تا Event دارن به طور Concurrent اجرا میشن.
خلاصه خوندنش برای کسانی که میخوان وارد حوزه هایی بشن که سر و کارشون با زمان هستش مستحبه.
توی این مقاله آقای لمپورت برای درک بهتر قضیه نسبیت خاص دو تا مرجع معرفی میکنه که یکیش نظر من رو خیلی به خودش جلب کرد.
یکی از این مراجع خیلی با دید ریاضی فیزیک نوشته شده که من اصلا نمی فهممش و براتونم میذارم و شما هم نمی فهمیدش.
ولی اون یکی مرجع سعی کرده نسبیت خاص رو به جای توضیح فرمال و ریاضیاتیک. با توضیح یک داستان به طور تصویری بهمون حالی کنه که خیلی قشنگه و بخونید میفهمید و براتون میذارم :)))))
در آخر یه نکته دیگه هم بگم در مورد این مقاله. آقای Jim Gray که قبل تر ها توی یک پستی تحت عنوان ملوان گمشده معرفیشون کردم یه روز به لمپورت میگه:
هر کس که مقاله ات رو میخونه یکی از این دو نظر رو داره : یا میگیه خیلی بدیهی بود یا میگه یک شاهکار به تمام معناست.
لمپورت هم بهش گفته که : با دسته اول نمی تونم بحث کنم و با دسته دومم حوصله بحث کردن ندارم :)))))
نظر من رو بخواید هر دوشه :))))
یه نکته جالب دیگه هم اینکه لمپورت میگه من با هرکسی که در باره این مقاله صحبت میکنم در مورد State Machine توی مقاله صحبت میکنم و اونا هم میگن مگه مقاله ات State Machine داشت اصلا :)))))
به طوریکه خود لمپورت میگه من خودم شک میکنم و میرم مقاله ام رو از اول میخونم
خلاصه همین دیگه
تموم شد :)))
Forwarded from a pessimistic researcher (Kc)
در راستای دهن کجی Nobel Foundation به جامعهی آکادمیک فیزیک، توصیه میکنم اگر سال دیگه هم حوصله نداشتید کارای بنیادی فیزیکدانان رو بررسی کنید و یا خواستید تاپیک رو از ML تغییر بدید، یک نگاهی به این مقالهی آقای لمپورت بندازید :) ایشون توی این مقاله تفسیرشون رو از نحوهی تعاملات پراسسها در یک محیط توزیعشده، بر اساس نسبیت خاص تعریف میکنند و ادعای رابطهی Totally ordered بین تعاملات پراسسها رو رد میکنن. همین نظریه، تبدیل به پایهی نظریهی سیستمهای توزیع شده میشه! از طرفی، علاوه بر ML، بلاکچین هم هنوز هایپش بالاست و میتونید توی پوستر بزنید :
"for foundational discoveries and inventions that enable blockchain with consensus algorithm"
راستی ما یک بار توی کانال در قالب یک پستی با عنوان "پر cite ترین مقالهی لمپورت" راجع به این مقاله صحبت کردیم. توصیه میکنم بخونید حتما :)
"for foundational discoveries and inventions that enable blockchain with consensus algorithm"
راستی ما یک بار توی کانال در قالب یک پستی با عنوان "پر cite ترین مقالهی لمپورت" راجع به این مقاله صحبت کردیم. توصیه میکنم بخونید حتما :)
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 | توییت برنامه نویسی