Forwarded from Geek Alerts
تقریبا همه شرکتهای اروپایی (۹۸٪) تو سال ۲۰۲۴ یه نفوذ داده از طریق شخص ثالث رو تجربه کردن.
یعنی هر سازمانی یه شرکت شریک داشته که اطلاعاتش درز کرده و فقط ۱۸٪ از شرکتها تو سال گذشته نفوذ مستقیم رو گزارش کردن.
تیم SecurityScorecard اومده روی ۱۰۰ شرکت برتر اروپا فاکتورهایی مثل امنیت شبکه، آلودگی بدافزار، امنیت نقاط پایانی، سرعت انتشار وصلهها، امنیت اپلیکیشن و سلامت DNS رو تحلیل کرده. میگه که حملونقل امنترین بخش بوده و هیچ شرکتی امتیاز پایین نداشته.
در طرف دیگه، صنعت انرژی قرار داره که ۷۵٪ از سازمانها امتیاز C یا پایینتر (A بهترین و F بدترینه) گرفتن. علاوه بر این، یه چهارم (۲۵٪) نفوذ مستقیم رو گزارش کردن.
گزارش شده که شرکتهای اسکاندیناوی، بریتانیایی و آلمانی امنترین بودن، در حالی که فرانسه بیشترین نرخ نفوذ رو داشته.
techradar
@geekalerts
یعنی هر سازمانی یه شرکت شریک داشته که اطلاعاتش درز کرده و فقط ۱۸٪ از شرکتها تو سال گذشته نفوذ مستقیم رو گزارش کردن.
تیم SecurityScorecard اومده روی ۱۰۰ شرکت برتر اروپا فاکتورهایی مثل امنیت شبکه، آلودگی بدافزار، امنیت نقاط پایانی، سرعت انتشار وصلهها، امنیت اپلیکیشن و سلامت DNS رو تحلیل کرده. میگه که حملونقل امنترین بخش بوده و هیچ شرکتی امتیاز پایین نداشته.
در طرف دیگه، صنعت انرژی قرار داره که ۷۵٪ از سازمانها امتیاز C یا پایینتر (A بهترین و F بدترینه) گرفتن. علاوه بر این، یه چهارم (۲۵٪) نفوذ مستقیم رو گزارش کردن.
گزارش شده که شرکتهای اسکاندیناوی، بریتانیایی و آلمانی امنترین بودن، در حالی که فرانسه بیشترین نرخ نفوذ رو داشته.
techradar
@geekalerts
Forwarded from LearnPOV | لرن پی او وی
شما هم هر وقت نتتون قطع میشه و تصمیم میگیرید خیلی جدی Dino ( دایناسور ) بازی کنید همون لحظه نتتون وصل میشه یا فقط من اینجوریم ؟ :))😂
🚀 @coolycode
Forwarded from DevTwitter | توییت برنامه نویسی
اگر از Socks به عنوان پروکسی استفاده میکنید
میدانید که نرم افزارهای زیادی اجازه استفاده از Socks را به صورت
socks5://[yourip]:[yourport]
نمیدن و نیازه شما http پروکسی داشته باشید gost
github.com/ginuerzh/gost
کارش همینه
@DevTwitter | <MehrdadLinux/>
میدانید که نرم افزارهای زیادی اجازه استفاده از Socks را به صورت
socks5://[yourip]:[yourport]
نمیدن و نیازه شما http پروکسی داشته باشید gost
github.com/ginuerzh/gost
کارش همینه
@DevTwitter | <MehrdadLinux/>
Forwarded from Ninja Learn | نینجا لرن
خب خب خب Sentry چیه؟ 🔍
اگه برنامه نویسی میکنی احتمالاً این سناریو برات آشناست:
کلی وقت میذاری، کد مینویسی، تست میکنی، همهچی درست کار میکنه. ولی وقتی میدی دست کاربر، یهو یه ارور عجیب غریب میاد که اصلاً نمیدونی از کجا دراومده اینجاست که Sentry وارد بازی میشه.
ـSentry چیه اصلاً؟
ـSentry یه ابزار خطایاب (Error Tracking) که کمک میکنه باگها و خطاهای پروژهت رو همون لحظهای که اتفاق میفتن، پیدا کنی.
این ابزار نهتنها ارورها رو جمعآوری میکنه، بلکه یه گزارش دقیق و کامل ازشون میده؛ از جزئیات خطا گرفته تا شرایطی که باعث شده ارور پیش بیاد.
فرض کن یه باگ تو اپلیکیشن ته که اصلاً قابل پیشبینی نبوده. بهجای اینکه کاربر بیاد غر بزنه یا خودت بری تو لاگها دنبال مشکل بگردی، Sentry خودش ارور رو تشخیص میده و گزارشش رو مستقیم برات میفرسته.
چرا Sentry محبوبه؟ 🌟
1⃣ گزارش ارور دقیق و کاربردی 🛠️
2⃣ پشتیبانی از پلتفرمهای مختلف 📱
3⃣ دستهبندی ارورها 🗂️
4⃣ هشدار و نوتیفیکیشن 🔔
5⃣ـ Release Tracking 🚀
6⃣ـPerformance Monitoring ⚡
چطور از Sentry استفاده کنیم؟
ثبتنام کن:
تو سایت Sentry.io یه اکانت بساز. نسخه رایگانش برای شروع کافیه.
نصب کن:
ـSDK مخصوص زبان پروژهت رو نصب کن. مثلاً برای Django این دستور کافیه:
تنظیمش کن:
با چند خط کد ساده Sentry رو به پروژه وصل کن:
ارورها رو مدیریت کن:
حالا هر اروری اتفاق بیفته، مستقیم تو داشبورد Sentry میره.
چند نکته مهم:
نسخه رایگان Sentry محدودیت داره (مثلاً تعداد ارورهای ماهانه). برای پروژههای بزرگ باید پلنهای پولیش رو بگیری.
میتونی از مستندات رسمی کمک بگیری تا تنظیمات حرفهایتر انجام بدی.
جمعبندی ✍
اگه میخوای ارورهای پروژهت رو حرفهای مدیریت کنی و حتی قبل از اینکه کاربر بفهمه، خودت رفعشون کنی، Sentry بهترین انتخابه. هم راحت نصب میشه، هم کلی قابلیت خفن داره.
تا حالا از Sentry استفاده کردی؟ نظرت چیه؟ 👀
➖➖➖➖➖➖➖➖➖
اگه برنامه نویسی میکنی احتمالاً این سناریو برات آشناست:
کلی وقت میذاری، کد مینویسی، تست میکنی، همهچی درست کار میکنه. ولی وقتی میدی دست کاربر، یهو یه ارور عجیب غریب میاد که اصلاً نمیدونی از کجا دراومده اینجاست که Sentry وارد بازی میشه.
ـSentry چیه اصلاً؟
ـSentry یه ابزار خطایاب (Error Tracking) که کمک میکنه باگها و خطاهای پروژهت رو همون لحظهای که اتفاق میفتن، پیدا کنی.
این ابزار نهتنها ارورها رو جمعآوری میکنه، بلکه یه گزارش دقیق و کامل ازشون میده؛ از جزئیات خطا گرفته تا شرایطی که باعث شده ارور پیش بیاد.
فرض کن یه باگ تو اپلیکیشن ته که اصلاً قابل پیشبینی نبوده. بهجای اینکه کاربر بیاد غر بزنه یا خودت بری تو لاگها دنبال مشکل بگردی، Sentry خودش ارور رو تشخیص میده و گزارشش رو مستقیم برات میفرسته.
چرا Sentry محبوبه؟ 🌟
1⃣ گزارش ارور دقیق و کاربردی 🛠️
وقتی یه ارور اتفاق میفته، Sentry دقیقاً بهت میگه مشکل کجاست. جزئیاتی مثل:
فایل و خط کدی که ارور داده
نوع خطا (Exception)
اطلاعات مرورگر یا دستگاه کاربر
وضعیت سرور (مثلاً رم و CPU)
حتی مراحل درخواست کاربر تا لحظهای که ارور رخ داده
2⃣ پشتیبانی از پلتفرمهای مختلف 📱
هرچی فکرش رو بکنی، Sentry ساپورتش میکنه.
Backend: Python (جنگو، فلاسک و ...)، Node.js
Frontend: React، Vue.js
Mobile: اندروید و iOS
DevOps: Docker، Kubernetes
3⃣ دستهبندی ارورها 🗂️
وقتی تعداد ارورها زیاد بشه، Sentry اونا رو گروهبندی میکنه. مثلاً یه باگ اگه صد بار اتفاق بیفته، همشون رو زیر یه گزارش میذاره که بتونی راحت مدیریت کنی.
4⃣ هشدار و نوتیفیکیشن 🔔
به محض اینکه یه ارور جدید اتفاق بیفته، سریع بهت خبر میده. از ایمیل گرفته تا Slack یا حتی پیامک.
5⃣ـ Release Tracking 🚀
یه قابلیت جالبش اینه که میتونی ارورها رو به نسخههای پروژت وصل کنی و بفهمی کدوم تغییرات باعث مشکل شده.
6⃣ـPerformance Monitoring ⚡
علاوه بر ارورها، میتونی بفهمی اپلیکیشن کجاها کنده.
چطور از Sentry استفاده کنیم؟
ثبتنام کن:
تو سایت Sentry.io یه اکانت بساز. نسخه رایگانش برای شروع کافیه.
نصب کن:
ـSDK مخصوص زبان پروژهت رو نصب کن. مثلاً برای Django این دستور کافیه:
pip install sentry-sdk
تنظیمش کن:
با چند خط کد ساده Sentry رو به پروژه وصل کن:
import sentry_sdk
sentry_sdk.init(
dsn="لینک DSN که Sentry میده",
traces_sample_rate=1.0
)
ارورها رو مدیریت کن:
حالا هر اروری اتفاق بیفته، مستقیم تو داشبورد Sentry میره.
چند نکته مهم:
نسخه رایگان Sentry محدودیت داره (مثلاً تعداد ارورهای ماهانه). برای پروژههای بزرگ باید پلنهای پولیش رو بگیری.
میتونی از مستندات رسمی کمک بگیری تا تنظیمات حرفهایتر انجام بدی.
جمعبندی ✍
اگه میخوای ارورهای پروژهت رو حرفهای مدیریت کنی و حتی قبل از اینکه کاربر بفهمه، خودت رفعشون کنی، Sentry بهترین انتخابه. هم راحت نصب میشه، هم کلی قابلیت خفن داره.
تا حالا از Sentry استفاده کردی؟ نظرت چیه؟ 👀
#programming #python #sentry
➖➖➖➖➖➖➖➖➖
🔆 CHANNEL | GROUP
Sentry
Application Performance Monitoring & Error Tracking Software
Application performance monitoring for developers & software teams to see errors clearer, solve issues faster & continue learning continuously. Get started at sentry.io.
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
درود دوستان
اینو یکی از بچهها داره روش کار میکنه، گفتم اینجا هم اطلاعرسانی کنم
پیام ایشون:
من یه پنل برای هیستریا۲ نوشتم که با خود هسته هیستریا۲ کار میکنه آدرس گیت هاب:
https://github.com/ReturnFI/Hysteria2
اگر رفیقای فرانت کار دوست داشتن و علاقه ای داشتن من دنبال اینم یه webui بالا بیارم یه سری cli براش نوشتم که اینجا میتونید آموزش مطالعه کنید
https://github.com/ReturnFI/Hysteria2/blob/main/core/README.md
اگر کسی علاقه ای داشت که پنل سمت وبش بنویسه خوشحال میشم باهاش همکاری کنم
دمتون گرم❤️
اینو یکی از بچهها داره روش کار میکنه، گفتم اینجا هم اطلاعرسانی کنم
پیام ایشون:
من یه پنل برای هیستریا۲ نوشتم که با خود هسته هیستریا۲ کار میکنه آدرس گیت هاب:
https://github.com/ReturnFI/Hysteria2
اگر رفیقای فرانت کار دوست داشتن و علاقه ای داشتن من دنبال اینم یه webui بالا بیارم یه سری cli براش نوشتم که اینجا میتونید آموزش مطالعه کنید
https://github.com/ReturnFI/Hysteria2/blob/main/core/README.md
اگر کسی علاقه ای داشت که پنل سمت وبش بنویسه خوشحال میشم باهاش همکاری کنم
دمتون گرم❤️
GitHub
GitHub - ReturnFI/Blitz: A comprehensive management panel for Hysteria2 proxy server with advanced features and user management…
A comprehensive management panel for Hysteria2 proxy server with advanced features and user management capabilities. - ReturnFI/Blitz
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
سناریو شماره ۴ - مشکل در پرفورمنس یک پروسس بخاطر max_open_files
توی این ویدیو یه پروسس داریم که به مشکل محدودیت فایلهای باز میخوره و نمیتونه پرفورمنس خوبی رو از خودش نشون بده با اینکه منابع سختافزاری مناسبی داره
https://youtu.be/FmfadhnWyiY
توی این ویدیو یه پروسس داریم که به مشکل محدودیت فایلهای باز میخوره و نمیتونه پرفورمنس خوبی رو از خودش نشون بده با اینکه منابع سختافزاری مناسبی داره
https://youtu.be/FmfadhnWyiY
Forwarded from Ninja Learn | نینجا لرن
میخوام شروع کنم درمورد golang هم پست بزارم
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
درود
این سناریو و دو سناریوهای بعدی (شماره ۵ و ۶) خیلی بهم مربوط هستند و مطالب باحالی رو گفتم
از دست ندید
این سناریو و دو سناریوهای بعدی (شماره ۵ و ۶) خیلی بهم مربوط هستند و مطالب باحالی رو گفتم
از دست ندید
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
درود دوستان
اینم یکی از بچه ها زحمتش رو کشیده گفتم جالبه اگه منتشر بشه
اینم آیدی تلگرامش
@ReturnWasHere
پیام ایشون:
من یه پنل برای هیستریا۲ نوشتم که با خود هسته هیستریا۲ کار میکنه آدرس گیت هاب:
https://github.com/ReturnFI/Hysteria2
اگر رفیقای فرانت کار دوست داشتن و علاقه ای داشتن من دنبال اینم یه webui بالا بیارم یه سری cli براش نوشتم که اینجا میتونید آموزش مطالعه کنید
https://github.com/ReturnFI/Hysteria2/blob/main/core/README.md
اگر کسی علاقه ای داشت که پنل سمت وبش بنویسه خوشحال میشم باهاش همکاری کنم
دمتون گرم❤️
اینم یکی از بچه ها زحمتش رو کشیده گفتم جالبه اگه منتشر بشه
اینم آیدی تلگرامش
@ReturnWasHere
پیام ایشون:
من یه پنل برای هیستریا۲ نوشتم که با خود هسته هیستریا۲ کار میکنه آدرس گیت هاب:
https://github.com/ReturnFI/Hysteria2
اگر رفیقای فرانت کار دوست داشتن و علاقه ای داشتن من دنبال اینم یه webui بالا بیارم یه سری cli براش نوشتم که اینجا میتونید آموزش مطالعه کنید
https://github.com/ReturnFI/Hysteria2/blob/main/core/README.md
اگر کسی علاقه ای داشت که پنل سمت وبش بنویسه خوشحال میشم باهاش همکاری کنم
دمتون گرم❤️
GitHub
GitHub - ReturnFI/Blitz: A comprehensive management panel for Hysteria2 proxy server with advanced features and user management…
A comprehensive management panel for Hysteria2 proxy server with advanced features and user management capabilities. - ReturnFI/Blitz
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
ببینید یک ابزارِ کوچک اما کاربردی چقدر میتونه کارها رو ساده کنه. با pasteasfile میتونید محتوایِ کلیپبورد رو در قالبِ یک فایل پیست کنید. کاش ویندوز این قابلیت رو به صورتِ built-in میداشت. لذت بردم.
pasteasfile.org
@DevTwitter | <Ayub Kokabi/>
pasteasfile.org
@DevTwitter | <Ayub Kokabi/>
Forwarded from Linuxor ?
Forwarded from DevTwitter | توییت برنامه نویسی
میخواهید برای مصاحبه DevOps آماده بشید ؟
مجموعه ای از سوالات مصاحبه DevOps
interview.devopscommunity.in
@DevTwitter | <MehrdadLinux/>
مجموعه ای از سوالات مصاحبه DevOps
interview.devopscommunity.in
@DevTwitter | <MehrdadLinux/>
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 دوره آموزش حرفه ای طراحی قالب فروشگاهی بر پایه ووکامرس در تاریخ ۱۴۰۳/۱۰/۲۰ منتشر خواهد شد.
تا آخر دی ماه تخفیف ۸۰ درصدی فعال است.
https://rayium.ir/?p=1247
#ووکامرس
@TheRaymondDev
تا آخر دی ماه تخفیف ۸۰ درصدی فعال است.
https://rayium.ir/?p=1247
#ووکامرس
@TheRaymondDev
Forwarded from DevAcademy
اگه دولوپر اوپن سورس هستین یا پروژه هاتون پابلیک هست برین تو این لینک و کارنامه یکسال اخیرتون رو در گیت هاب ببینید.
https://git-wrapped.com/
💻@DevAcaademy
💬@DevAcademyGroup
https://git-wrapped.com/
💻@DevAcaademy
💬@DevAcademyGroup
Forwarded from متخصص وردپرس | پوینا
منابع انسانی دیجیکالا: مهمترین دلیل خروج از دیجیکالا در ۱۴۰۲ مهاجرت بوده است
مدیر منابع انسانی دیجیکالا :
ما چالشهای زیادی برای نگهداشت نیروی انسانی در دپارتمان تکتولوژی دیجیکالا داشتیم و پارسال نرخ خروج ما ۲۰ درصد بوده است.
۳۷ درصد دلیل خروج از دیجیکالا در سال ۱۴۰۲ مهاجرت از کشور بوده است.
۳۵ درصد افراد به دلیل پیدا کردن موقعیت شغلی بهتر این سازمان را ترک کردهاند.
۴۰ درصد از افرادی که سازمان را ترک کردهاند در بازه سنی بین ۲۱ تا ۲۵ سال قرار داشتند.
----------
به ناپلئون خبر دادند در جنگ پیروز شدیم
ناپلئون پرسید چقدر تلفات دادیم؟
گفتند ۶۰ درصد از نیروهامون کشته شدند
ناپلئون گفت یک بار دیگر پیروز شویم نابود میشویم
حالا هم دو سال دیگه بگذره دیجی کالا هیچ نیرویی نداره
@poinair
مدیر منابع انسانی دیجیکالا :
ما چالشهای زیادی برای نگهداشت نیروی انسانی در دپارتمان تکتولوژی دیجیکالا داشتیم و پارسال نرخ خروج ما ۲۰ درصد بوده است.
۳۷ درصد دلیل خروج از دیجیکالا در سال ۱۴۰۲ مهاجرت از کشور بوده است.
۳۵ درصد افراد به دلیل پیدا کردن موقعیت شغلی بهتر این سازمان را ترک کردهاند.
۴۰ درصد از افرادی که سازمان را ترک کردهاند در بازه سنی بین ۲۱ تا ۲۵ سال قرار داشتند.
----------
به ناپلئون خبر دادند در جنگ پیروز شدیم
ناپلئون پرسید چقدر تلفات دادیم؟
گفتند ۶۰ درصد از نیروهامون کشته شدند
ناپلئون گفت یک بار دیگر پیروز شویم نابود میشویم
حالا هم دو سال دیگه بگذره دیجی کالا هیچ نیرویی نداره
@poinair
Forwarded from Gopher Academy
اگه یه میلیون کار داشته باشی و بخوای همزمان اجراشون کنی، ولی فقط 8 تا CPU داری، چهجوری بهینهترین حالت رو پیدا میکنی؟
تو گولنگ، گوروتینها خیلی سبک هستن. میتونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمیصرفه حافظه رو با صدها هزار گوروتین که همزمان نمیتونن اجرا بشن، هدر بدی.
یه راه خفن برای کنترل این داستان استفاده از Semaphore هست که میتونی تعداد گوروتینهای در حال اجرا رو محدود کنی.
حالا چطور کار میکنه؟
1. یه کانال با ظرفیت مشخص (N) درست میکنی که این ظرفیت میشه تعداد گوروتینهای همزمانی که میخوای اجرا بشه.
2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر میکنی.
3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد توکن رو برمیگردونه.
4. اگه توکن نباشه گوروتین منتظر میمونه تا یکی آزاد بشه.
این تصویر یه مثال ساده با N=2 هست.
| <Mohammad Abdorrahmani/>
➖➖➖➖➖➖➖➖
https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
تو گولنگ، گوروتینها خیلی سبک هستن. میتونی هزار تا، ده هزار تا، یا حتی بیشتر گوروتین همزمان اجرا کنی. ولی وقتی تعداد کارهات خیلی زیاده (مثلاً یه میلیون)، دیگه تعداد CPUها محدودیت اصلی میشه و نمیصرفه حافظه رو با صدها هزار گوروتین که همزمان نمیتونن اجرا بشن، هدر بدی.
یه راه خفن برای کنترل این داستان استفاده از Semaphore هست که میتونی تعداد گوروتینهای در حال اجرا رو محدود کنی.
حالا چطور کار میکنه؟
1. یه کانال با ظرفیت مشخص (N) درست میکنی که این ظرفیت میشه تعداد گوروتینهای همزمانی که میخوای اجرا بشه.
2. کانال رو با N تا "توکن" (هرچیزی مثل عدد) پر میکنی.
3. هر گوروتین قبل از اجرا باید یه توکن از کانال بگیره و وقتی کارش تموم شد توکن رو برمیگردونه.
4. اگه توکن نباشه گوروتین منتظر میمونه تا یکی آزاد بشه.
این تصویر یه مثال ساده با N=2 هست.
| <Mohammad Abdorrahmani/>
➖➖➖➖➖➖➖➖
https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
❤1
Forwarded from Python Hints
Mac Users: If you're struggling to optimize your workflow, don’t worry—you have plenty of money to waste. Just buy a newer Mac instead!
Windows Users: Before searching for a real IDE, you might want to get yourself a real operating system.
#موقت
Windows Users: Before searching for a real IDE, you might want to get yourself a real operating system.
#موقت
Forwarded from Agora (Alireza Azadi)
این رو هم مستقیم میذارم که باشه:
A Philosophy of Software Design, 2nd Edition
John K. Ousterhout
“The extreme of the “classes should be small” approach is a syndrome I call classitis, which stems from the mistaken view that “classes are good, so more classes are better.” In systems suffering from classitis, developers are encouraged to minimize the amount of functionality in each new class: if you want more functionality, introduce more classes. Classitis may result in classes that are individually simple, but it increases the complexity of the overall system. Small classes don’t contribute much functionality, so there have to be a lot of them, each with its own interface. These interfaces accumulate to create tremendous complexity at the system level. Small classes also result in a verbose programming style, due to the boilerplate required for each class.”
A Philosophy of Software Design, 2nd Edition
John K. Ousterhout
Forwarded from Agora (Alireza Azadi)
بهبه
رسیدیم به اونجایی که من خیلی دوسش دارم.
توی فصل چهارم کتاب، میاد و راجعبه طراحی modular صحبت میکنه و ادامه میده تا میرسه به طبقهبندی ماژولها به deep و shallow.
هرکدوم رو این طور تعریف میکنه:
و تعریفی که از shallow moduleها میده اینه:
و مثال extremeی هم براش میزنه اینه:
و خلاصه میگه این shallow module چیز کثافتیه و بده و فلان چون که این خودش پیچیدگی رو میبره بالا:
تا اینجا مقدمهایه تا برسه بر کوتاه کردن. کوتاه کردن کلاس، شکوندن تابع. میاد و یک اسمی هم روی این مرض میذاره: Classitis
میگه، برنامهنویسها عموماً فکر میکنند و اینطور یادگرفتند که اینها باید کلاسها و تابعهاشون رو بشکونن به واحدهای کوچیکتر. مثلا اگر طول تابع از n خط (۱۰ خط) بیشتر شد، این باید شکسته بشه به چند تا تابع و فلان و اینطوری خیال میکنند که پیچیدگی رو کم کردن.
ولی اینجا دقیقا همونجاییه که دارن اتفاقا پیچیدگی رو بالاتر میبرند. چرا که تعداد ماژولهایی که کار کمی میکنند و به نسبت interface های پیچیده دارن رو بیشتر میکنند. یا به عبارتی، از deep moduleها میکاهند و به shallow module ها میافزایند.
من فکر میکردم که این ماجرا بدیهی باشه ولی هرچی رفتم جلوتر بیشتر زدن تو سرمون که اینطور بنویسیم. اینطور خوبه. کوتاه و کوچیکه که خوبه. ولی خب در عمل میدیدم که همهچیز وقتی بعد از یک مدت به نسبت قابل توجهی وقفه برمیگشتم به اون چه که نوشته بودم، برام فهمش به نسبت پیچیده تر بود. حالا میبینم که اونقدرها هم بی راه فکر نمیکردم و این باعث خوشحالیمه.
رسیدیم به اونجایی که من خیلی دوسش دارم.
توی فصل چهارم کتاب، میاد و راجعبه طراحی modular صحبت میکنه و ادامه میده تا میرسه به طبقهبندی ماژولها به deep و shallow.
هرکدوم رو این طور تعریف میکنه:
“Deep modules are those that provide powerful functionality yet have simple interfaces.”
و تعریفی که از shallow moduleها میده اینه:
“a shallow module is one whose interface is relatively complex in comparison to the functionality that it provides.”
و مثال extremeی هم براش میزنه اینه:
private void addNullValueForAttribute(String attribute) {
data.put(attribute, null);
}
و خلاصه میگه این shallow module چیز کثافتیه و بده و فلان چون که این خودش پیچیدگی رو میبره بالا:
“The method offers no abstraction, since all of its functionality is visible through its interface. ”
تا اینجا مقدمهایه تا برسه بر کوتاه کردن. کوتاه کردن کلاس، شکوندن تابع. میاد و یک اسمی هم روی این مرض میذاره: Classitis
میگه، برنامهنویسها عموماً فکر میکنند و اینطور یادگرفتند که اینها باید کلاسها و تابعهاشون رو بشکونن به واحدهای کوچیکتر. مثلا اگر طول تابع از n خط (۱۰ خط) بیشتر شد، این باید شکسته بشه به چند تا تابع و فلان و اینطوری خیال میکنند که پیچیدگی رو کم کردن.
ولی اینجا دقیقا همونجاییه که دارن اتفاقا پیچیدگی رو بالاتر میبرند. چرا که تعداد ماژولهایی که کار کمی میکنند و به نسبت interface های پیچیده دارن رو بیشتر میکنند. یا به عبارتی، از deep moduleها میکاهند و به shallow module ها میافزایند.
من فکر میکردم که این ماجرا بدیهی باشه ولی هرچی رفتم جلوتر بیشتر زدن تو سرمون که اینطور بنویسیم. اینطور خوبه. کوتاه و کوچیکه که خوبه. ولی خب در عمل میدیدم که همهچیز وقتی بعد از یک مدت به نسبت قابل توجهی وقفه برمیگشتم به اون چه که نوشته بودم، برام فهمش به نسبت پیچیده تر بود. حالا میبینم که اونقدرها هم بی راه فکر نمیکردم و این باعث خوشحالیمه.
Forwarded from Laravel News
Laravel News 2024 Recap https://laravel-news.com/laravel-news-2024-recap
Laravel News
Laravel News 2024 Recap - Laravel News
I've hand-picked some of the biggest stories at Laravel News in 2024. This year was massive, with our new Laravel Creator Spotlight series and huge announcements from Laravel like Laravel Cloud, Inertia.js 2.0, and more!
Forwarded from ASafaeirad
Rolldown 1-beta.1 is out
https://github.com/rolldown/rolldown/releases/tag/v1.0.0-beta.1
https://rolldown.rs/
#rolldown #news
https://github.com/rolldown/rolldown/releases/tag/v1.0.0-beta.1
https://rolldown.rs/
#rolldown #news
GitHub
Release v1.0.0-beta.1 · rolldown/rolldown
New updated docs now is available at https://rolldown.rs/guide.
What's Changed
feat: support jsx false and preserve by @underfin in #3176
chore(rolldown): oxc v0.42.0 by @Boshen in #3175
chore...
What's Changed
feat: support jsx false and preserve by @underfin in #3176
chore(rolldown): oxc v0.42.0 by @Boshen in #3175
chore...