🤝 تنها قشری که ممکنه یهو بی دلیل چند هفته نباشن، برنامه نویسان
👍15😁1
چند هفته پیش مقاله ای خوندم راجب انتقال اطلاعات با پروتوکل ICMP و ساختن فیلترشکن باهاش. برام تهه خفن بازی بود، تا اینکه این خبر رو امروز خوندم ...
😐 هکر ها بدافزار هارا در DNS ذخیره میکنند.
فرض کن یه برنامه مخرب نصب میکنی روی گوشیت. اون برنامه هیچ رفتار مشکوکی از خودش نشون نمیده و حتی جوری رفتار میکنه که انگار از اینترنتت استفاده ای نمیکنه؛ در عین حال داره با درخواست های DNS، یه بدافزار رو روی گوشیت آپلود میکنه!!!
این ترفند نزدیک به یک دهه پیش رواج پیدا کرده بود، اما قابل تشخیص بود؛ اما امروزه با اومدن TLS روی DNS و رمزنگاری بدافزار ها، این روش دیگه قابل شناسایی نیست و به راحتی میتونن ازش استفاده کنن.
چجوری کار میکنه؟ پست بعدی ...
@CodingLovers_OFF
😐 هکر ها بدافزار هارا در DNS ذخیره میکنند.
فرض کن یه برنامه مخرب نصب میکنی روی گوشیت. اون برنامه هیچ رفتار مشکوکی از خودش نشون نمیده و حتی جوری رفتار میکنه که انگار از اینترنتت استفاده ای نمیکنه؛ در عین حال داره با درخواست های DNS، یه بدافزار رو روی گوشیت آپلود میکنه!!!
این ترفند نزدیک به یک دهه پیش رواج پیدا کرده بود، اما قابل تشخیص بود؛ اما امروزه با اومدن TLS روی DNS و رمزنگاری بدافزار ها، این روش دیگه قابل شناسایی نیست و به راحتی میتونن ازش استفاده کنن.
چجوری کار میکنه؟ پست بعدی ...
@CodingLovers_OFF
Coding Lovers
چند هفته پیش مقاله ای خوندم راجب انتقال اطلاعات با پروتوکل ICMP و ساختن فیلترشکن باهاش. برام تهه خفن بازی بود، تا اینکه این خبر رو امروز خوندم ... 😐 هکر ها بدافزار هارا در DNS ذخیره میکنند. فرض کن یه برنامه مخرب نصب میکنی روی گوشیت. اون برنامه هیچ رفتار مشکوکی…
هکرها در حال استفاده از یک روش جدید برای پنهان کردن بدافزارها هستند: قرار دادن آنها در رکوردهای DNS. این رکوردهای سیستم نام دامنه، که آدرسهای IP را به نام دامنه نگاشت میکنند، اغلب توسط ابزارهای امنیتی به دقت بررسی نمیشوند و همین امر آنها را به نقطه کوری برای دفاع سایبری تبدیل میکند.
چرا رکوردهای DNS؟
1. دور زدن دفاع: با پنهان کردن کد مخرب در رکوردهای DNS، بدافزارها میتوانند بدون نیاز به دانلود از وبسایتهای مشکوک یا پیوست شدن به ایمیلها (که معمولاً توسط آنتیویروسها قرنطینه میشوند) به سیستمها منتقل شوند.
2. ترافیک نظارت نشده: برخلاف ترافیک وب و ایمیل که به شدت تحت نظارت است، درخواستهای DNS معمولاً کمتر بازرسی میشوند، و این یک فرصت عالی برای مهاجمان ایجاد میکند.
چگونگی انجام این کار: مورد "Joke Screenmate"
محققان DomainTools اخیراً مشاهده کردهاند که این تکنیک برای میزبانی یک فایل باینری مخرب از بدافزار "Joke Screenmate" استفاده شده است. مراحل کلی به این صورت است:
1. تبدیل به هگزادسیمال: فایل باینری بدافزار به فرمت هگزادسیمال (hexadecimal) تبدیل میشود.
2. تقسیم به بخشهای کوچک: کد هگزادسیمال به صدها بخش کوچک تقسیم میشود.
3. پنهانسازی در TXT Record: هر بخش در TXT Record یک زیردامنه مختلف پنهان میشود. TXT Record بخشی از رکورد DNS است که میتواند متن دلخواه را ذخیره کند.
4. بازسازی و اجرا: مهاجمی که به شبکه نفوذ کرده است، میتواند با استفاده از درخواستهای DNS عادی، این بخشها را بازیابی کرده، آنها را دوباره سرهمبندی کند و به فرمت باینری بازگرداند تا بدافزار اجرا شود.
چالشهای پیش رو
* رمزگذاری DNS: با گسترش استفاده از DNS over HTTPS (DoH) و DNS over TLS (DoT)، که ترافیک DNS را رمزگذاری میکنند، تشخیص این فعالیتهای مخرب دشوارتر خواهد شد، مگر اینکه سازمانها دارای راهحلهای DNS درون شبکهای خود باشند.
* نقطه ضعف قدیمی، روش جدید: هرچند سوءاستفاده از رکوردهای DNS برای میزبانی اسکریپتهای PowerShell مخرب برای تقریباً یک دهه شناخته شده است، اما روش پنهان کردن کد باینری به صورت هگزادسیمال در رکوردهای TXT، یک تکنیک کمتر شناخته شده و جدیدتر است.
@CodingLovers_OFF
چرا رکوردهای DNS؟
1. دور زدن دفاع: با پنهان کردن کد مخرب در رکوردهای DNS، بدافزارها میتوانند بدون نیاز به دانلود از وبسایتهای مشکوک یا پیوست شدن به ایمیلها (که معمولاً توسط آنتیویروسها قرنطینه میشوند) به سیستمها منتقل شوند.
2. ترافیک نظارت نشده: برخلاف ترافیک وب و ایمیل که به شدت تحت نظارت است، درخواستهای DNS معمولاً کمتر بازرسی میشوند، و این یک فرصت عالی برای مهاجمان ایجاد میکند.
چگونگی انجام این کار: مورد "Joke Screenmate"
محققان DomainTools اخیراً مشاهده کردهاند که این تکنیک برای میزبانی یک فایل باینری مخرب از بدافزار "Joke Screenmate" استفاده شده است. مراحل کلی به این صورت است:
1. تبدیل به هگزادسیمال: فایل باینری بدافزار به فرمت هگزادسیمال (hexadecimal) تبدیل میشود.
2. تقسیم به بخشهای کوچک: کد هگزادسیمال به صدها بخش کوچک تقسیم میشود.
3. پنهانسازی در TXT Record: هر بخش در TXT Record یک زیردامنه مختلف پنهان میشود. TXT Record بخشی از رکورد DNS است که میتواند متن دلخواه را ذخیره کند.
4. بازسازی و اجرا: مهاجمی که به شبکه نفوذ کرده است، میتواند با استفاده از درخواستهای DNS عادی، این بخشها را بازیابی کرده، آنها را دوباره سرهمبندی کند و به فرمت باینری بازگرداند تا بدافزار اجرا شود.
چالشهای پیش رو
* رمزگذاری DNS: با گسترش استفاده از DNS over HTTPS (DoH) و DNS over TLS (DoT)، که ترافیک DNS را رمزگذاری میکنند، تشخیص این فعالیتهای مخرب دشوارتر خواهد شد، مگر اینکه سازمانها دارای راهحلهای DNS درون شبکهای خود باشند.
* نقطه ضعف قدیمی، روش جدید: هرچند سوءاستفاده از رکوردهای DNS برای میزبانی اسکریپتهای PowerShell مخرب برای تقریباً یک دهه شناخته شده است، اما روش پنهان کردن کد باینری به صورت هگزادسیمال در رکوردهای TXT، یک تکنیک کمتر شناخته شده و جدیدتر است.
@CodingLovers_OFF
👍6❤3🔥2
هک کردن سخته نه؟ بعضی وقت ها نه!
بعضی وقت ها فقط کافیه با بخش خدمات فناوری اطلاعات یک شرکت تماس بگیری، و بگی یکی از کارمند های شرکت هستی و باید پسورد ها و اطلاعات امنیتی رو ریست کنی؛ اوناهم بدون تایید هویت، اطلاعات رو بهت میدن!
حالا کافیه وارد سیستم بشی و باج افزار نصب کنی :)
شرکت Clorox در سال 2023 به همین شکل هک شد و 380 میلیون دلار خسارت دید ...
Source
@CodingLovers_OFF
بعضی وقت ها فقط کافیه با بخش خدمات فناوری اطلاعات یک شرکت تماس بگیری، و بگی یکی از کارمند های شرکت هستی و باید پسورد ها و اطلاعات امنیتی رو ریست کنی؛ اوناهم بدون تایید هویت، اطلاعات رو بهت میدن!
حالا کافیه وارد سیستم بشی و باج افزار نصب کنی :)
شرکت Clorox در سال 2023 به همین شکل هک شد و 380 میلیون دلار خسارت دید ...
Source
@CodingLovers_OFF
🤣19👍2
Coding Lovers
کیا تا الان با Prisma داخل JS کار کردن؟
این کتابخونه یه کتابخونه خفن ORM هست که توی js خیلی معروفه.
برای زبان هایی مثل python و golang و rust هم کتابخونهش موجوده، و هسته اصلیش با زبان Rust نوشته شده که سرعت رو خیلی بالا میبره.
درواقع از هر ORMیی توی پایتون سریعتره و قویتر
و خبر بد، به طول کامل پروژه رو متوقف کرده و فقط داره روی TypeScript کار میکنه و در حرکتی کاملا غیرمنطقی داره هسته رو از Rust میبره روی TypeScript
برای زبان هایی مثل python و golang و rust هم کتابخونهش موجوده، و هسته اصلیش با زبان Rust نوشته شده که سرعت رو خیلی بالا میبره.
درواقع از هر ORMیی توی پایتون سریعتره و قویتر
و خبر بد، به طول کامل پروژه رو متوقف کرده و فقط داره روی TypeScript کار میکنه و در حرکتی کاملا غیرمنطقی داره هسته رو از Rust میبره روی TypeScript
🤣12❤1😢1
بزودی با کلی پست خفن برمیگردم
خیلی شلوغم این چند وقت
تایتل هاشونو اماده کردم
خیلی شلوغم این چند وقت
تایتل هاشونو اماده کردم
🔥9😢2❤1
دیتابیس PostgreSQL و MySQL: کدوم رو باید استفاده کنم؟
هرجا دنبال این بگردی فقط یه جمله میشنوی "بستگی داره" و چیز جدیدی پیدا نمیکنی؛ داخل این پست میخوام بگم چجوری انتخاب کنی
بیاید اول فرق های مهم و کلیشون رو ببینیم
دیتابیس PostgreSQL:
- فقط ۲۰ تا ۳۰ مگابایت رم اولیه نیاز داره.
- توزیع دیتابیس روی چند سرور خیلی راحته ولی سرعتش کمتره.
- ویژگی هایی بشدت زیادی داره. حتی یه زبان اختصاصی خودش هم داره.
- توی عملیات های write کردن قویتر از read عمل میکنه.
- قدرت بیشتری توی مدیریت همزمانی داره.
- کاستومایز خاصی نیاز نداره.
- حجم تقریبا بیشتری از mysql روی دیسک میگیره ( با یسری کاستومایز حل میشه )
دیتابیس MySQL:
- حداقل به ۳۰۰ مگابایت رم اولیه نیاز داره ( با کاستومایز کردن به ۲۰۰ مگابایت میرسه )
- برای توزیع دیتابیس دهن سرویس میکنه ولی سرعتش بیشتره. ( با یسری ابزار میشه یکم راحتش کرد )
- ویژگی های کمتری ساپورت میکنه.
- توی عملیات های Read خیلی بهتر عمل میکنه.
- توی همزمانی همچی گردن خودته
چجوری انتخاب کنیم؟
اگه به هرکدوم جواب بله دادی، یعنی PostgreSQL بهتره برات:
- اطلاعات حجیم و پیچیده داری؟
- پروژت شامل دادههای جغرافیایی، آرایهها، یا ساختارهای پیچیده مثل JSON هست؟
- همزمانی و مدیریت race condition ها برات مهمه؟ مثلا یهویی پول کسی race condition نخوره
کمپانی ها
هر کمپانی بزرگی رو نگاه کنی که داره از MySQL استفاده میکنه، هیچکدوم از موتور های استاندارد MySQL رو نپسندیدن و خودشون موتور اختصاصی خودشونو برای MySQL طراحی کردن مثل Uber و Meta ( البته که دلیل بر بدرد نخور بودن موتور هاش نیست، بلکه منظور اینه به کاستومایز زیادی نیاز داره )
در عوض هرکدوم که دارن از PostgreSQL استفاده میکنن، نیاز به کاستومایز خاصی نداشتن ( نهایت از یسری اکستنشن استفاده کردن ) مثل کلاودفلر
@CodingLovers_OFF
هرجا دنبال این بگردی فقط یه جمله میشنوی "بستگی داره" و چیز جدیدی پیدا نمیکنی؛ داخل این پست میخوام بگم چجوری انتخاب کنی
بیاید اول فرق های مهم و کلیشون رو ببینیم
دیتابیس PostgreSQL:
- فقط ۲۰ تا ۳۰ مگابایت رم اولیه نیاز داره.
- توزیع دیتابیس روی چند سرور خیلی راحته ولی سرعتش کمتره.
- ویژگی هایی بشدت زیادی داره. حتی یه زبان اختصاصی خودش هم داره.
- توی عملیات های write کردن قویتر از read عمل میکنه.
- قدرت بیشتری توی مدیریت همزمانی داره.
- کاستومایز خاصی نیاز نداره.
- حجم تقریبا بیشتری از mysql روی دیسک میگیره ( با یسری کاستومایز حل میشه )
دیتابیس MySQL:
- حداقل به ۳۰۰ مگابایت رم اولیه نیاز داره ( با کاستومایز کردن به ۲۰۰ مگابایت میرسه )
- برای توزیع دیتابیس دهن سرویس میکنه ولی سرعتش بیشتره. ( با یسری ابزار میشه یکم راحتش کرد )
- ویژگی های کمتری ساپورت میکنه.
- توی عملیات های Read خیلی بهتر عمل میکنه.
- توی همزمانی همچی گردن خودته
چجوری انتخاب کنیم؟
اگه به هرکدوم جواب بله دادی، یعنی PostgreSQL بهتره برات:
- اطلاعات حجیم و پیچیده داری؟
- پروژت شامل دادههای جغرافیایی، آرایهها، یا ساختارهای پیچیده مثل JSON هست؟
- همزمانی و مدیریت race condition ها برات مهمه؟ مثلا یهویی پول کسی race condition نخوره
کمپانی ها
هر کمپانی بزرگی رو نگاه کنی که داره از MySQL استفاده میکنه، هیچکدوم از موتور های استاندارد MySQL رو نپسندیدن و خودشون موتور اختصاصی خودشونو برای MySQL طراحی کردن مثل Uber و Meta ( البته که دلیل بر بدرد نخور بودن موتور هاش نیست، بلکه منظور اینه به کاستومایز زیادی نیاز داره )
در عوض هرکدوم که دارن از PostgreSQL استفاده میکنن، نیاز به کاستومایز خاصی نداشتن ( نهایت از یسری اکستنشن استفاده کردن ) مثل کلاودفلر
@CodingLovers_OFF
🔥7❤3👍1🤣1
🔥 جایگزینی برای تمام پکیج منیجر های پایتون و venv ها
ابزار uv که توی اوایل سال 2024 معرفی شده به طور کلی کارایی پروژه های پایتونی رو متحول کرده :)
❓️ حالا چی هست؟
یک ابزاری هست که با زبان Rust نوشته شده که میتونه به طور کامل یک پروژه پایتونی رو مدیریت کنه و هرکارط که به ذهنت برسه رو انجام میده. ( ۱۰۰ برابر سریعتر از pip کار میکنه )
🚀 قدرت همزمانی و نصب سریع
تصور کن پروژهای با دهها یا حتی صدها وابستگی (dependency) داری. با استفاده از UV، زمان انتظار برای راهاندازی پروژه که قبلاً ممکن بود چندین دقیقه طول بکشه، حالا به چند ثانیه کاهش پیدا میکنه!
📦 خودش venv میسازه برات
خودش با سرعتی باور نکردنی میتونه virtual environment بسازه و مدیریتش کنه.
⭐️ جایگزین pyenv
به طور کامل کارشو انجام میده و برات تمام environment variables های پروژت رو مدیریت میکنه.
🧨 چند پایتون یکجا
باهاش میتونی همزمان چند ورژن python رو نصب کنی و داشته باشی بدونه اینکه توی پایتون اصلی سیستمت اختلال ایجاد کنه.
✨️ و کلی ویژگی دیگه که ارزش امتحان داره: بیشتر بخوانید
@CodingLovers_OFF
ابزار uv که توی اوایل سال 2024 معرفی شده به طور کلی کارایی پروژه های پایتونی رو متحول کرده :)
❓️ حالا چی هست؟
یک ابزاری هست که با زبان Rust نوشته شده که میتونه به طور کامل یک پروژه پایتونی رو مدیریت کنه و هرکارط که به ذهنت برسه رو انجام میده. ( ۱۰۰ برابر سریعتر از pip کار میکنه )
🚀 قدرت همزمانی و نصب سریع
تصور کن پروژهای با دهها یا حتی صدها وابستگی (dependency) داری. با استفاده از UV، زمان انتظار برای راهاندازی پروژه که قبلاً ممکن بود چندین دقیقه طول بکشه، حالا به چند ثانیه کاهش پیدا میکنه!
📦 خودش venv میسازه برات
خودش با سرعتی باور نکردنی میتونه virtual environment بسازه و مدیریتش کنه.
⭐️ جایگزین pyenv
به طور کامل کارشو انجام میده و برات تمام environment variables های پروژت رو مدیریت میکنه.
🧨 چند پایتون یکجا
باهاش میتونی همزمان چند ورژن python رو نصب کنی و داشته باشی بدونه اینکه توی پایتون اصلی سیستمت اختلال ایجاد کنه.
✨️ و کلی ویژگی دیگه که ارزش امتحان داره: بیشتر بخوانید
@CodingLovers_OFF
❤6👍1👎1
👎4❤2
Coding Lovers
از sqlalchemy استفاده میکنین؟
خیلی سوال کردین برای جایگزین
خواستم بگم هیچ جایگزینی با این همه اپشن و قدرت نداریم
درحال حاضر بهترین ORM همینه
چیزایی مثل TortoiseOrm هم هستن که سرعتشون کمی بیشتره، اما خب اپشن های کمی دارن
سازنده FastAPI هم پیشنهادش SQLAlchemy بوده
خواستم بگم هیچ جایگزینی با این همه اپشن و قدرت نداریم
درحال حاضر بهترین ORM همینه
چیزایی مثل TortoiseOrm هم هستن که سرعتشون کمی بیشتره، اما خب اپشن های کمی دارن
سازنده FastAPI هم پیشنهادش SQLAlchemy بوده
❤7
دیگه ایرانسل اینقدر پررو شده داره تهدید میکنه
خبر پخش شده:
جمله ای که گفته:
حالا اومدن عقب نشینی کنن بدبخت نشن ( به قولی تکذیب کنن ):
خدایی با این کیفیت داغون، قطعی های موقتی ۲۰ دقیقه ایعه همین الانشون، چجوری واقعا روشون میشه :/
#تحریم_ایرانسل
خبر پخش شده:
اینترنت باید ۷۰ درصد گران شود! اگر گران نشود در طول روز ۳ ساعت اینترنت قطع می شود!
جمله ای که گفته:
اگر تعرفه اینترنت افزایش پیدا نکند، باید منتظر قطعیهای موقت روزانه اینترنت باشیم.
حالا اومدن عقب نشینی کنن بدبخت نشن ( به قولی تکذیب کنن ):
شرکت اپراتور «ایرانسل» با انتشار بیانیهای، اعلام کرد که برداشت «تهدید به قطع روزانه اینترنت» از صحبتهای اخیر «علیرضا رفیعی»، یک تفسیر نادرست رسانهای است.
با وجود قطعی روزانه برق و عدم امکان سرمایهگذاری در حوزه تأمین باتری، حفاظت و توسعه شبکه، به طور قهری با نبود برق، اینترنت نیز قطع میشود. افزایش تعرفه، تنها راهحل مشکل برق نیست؛ اما به سرمایهگذاری کمک میکند.
خدایی با این کیفیت داغون، قطعی های موقتی ۲۰ دقیقه ایعه همین الانشون، چجوری واقعا روشون میشه :/
#تحریم_ایرانسل
🤣20❤2👍1😢1
🚀 تفاوت Redis و Memcached
هردو سیستمی برای ذخیره کردن اطلاعات روی مموری هستن که برای کش کردن اطلاعات تکراری و پرکاربرد استفاده میشن.
ولی باز هم کلی تفاوت اساسی دارن.
✨️ ویژگی های memcached
- فقط و فقط استرینگ به شکل key-value نگه میداره
- فقط روی مموری نگه میداره و اگه سرور ریستارت شه، اطلاعات میپرن.
- از قابلیت multi threading پشتیبانی میکنه، یعنی همزمان میتونه به درخواستا جواب بده که باعث میشه سرعت خیلی بالاتری توی همزمانی داشته باشه
- چندین نوع دیتا رو نگه میداره
- حواسش هست حتی اگه سرور خاموش هم بشه، اطلاعات رو روی دیسک نگه میداره ( و احتمالش هست اطلاعات کمی قدیمی یا ناقص باشن، بستگی به کانفیگ شدنش داره )
- نمیتونه مالتی تردینگ باشه و درخواستارو دونه دونه جواب میده
- کلی قابلیت خفن داره مثل real time، session management، و ...
🏢 چه سازمان هایی از memcached استفاده میکنن؟ ( طبق گفته خودشون )
فیس بوک: برای کاهش تعداد درخواست به دیتابیس
توییتر: برای اطلاعات کاربران، یا توییت های تکراری
ویکیپدیا: برای صفحاتی که زیاد دیده میشن
ردیت: برای نگهداری اطلاعات موقتی
یوتیوب: برای نگهداری متادیتا ویدیو ها
🏢 چه سازمان هایی از redis استفاده میکنن؟ ( طبق گفته خودشون )
توییتر: برای ذخیره تایملاین های کاربران، داده های درلحظه
گیتهاب: برای مدیریت صف های پسزمینه
اینستاگرام: برای نگهداری داده های مربوط به فیدهای خبری
پینترست: برای کمتر کردن درخواست به دیتابیس
استکاورفلو: فقط گفته استفاده میکنه، معلوم نیس دقیقا برای چی
🔥 @CodingLovers_OFF
هردو سیستمی برای ذخیره کردن اطلاعات روی مموری هستن که برای کش کردن اطلاعات تکراری و پرکاربرد استفاده میشن.
ولی باز هم کلی تفاوت اساسی دارن.
✨️ ویژگی های memcached
- فقط و فقط استرینگ به شکل key-value نگه میداره
- فقط روی مموری نگه میداره و اگه سرور ریستارت شه، اطلاعات میپرن.
- از قابلیت multi threading پشتیبانی میکنه، یعنی همزمان میتونه به درخواستا جواب بده که باعث میشه سرعت خیلی بالاتری توی همزمانی داشته باشه
قابلیت خاصی نداره، مثل یه دیکشنری رفتار میکنه، ساختار های خاصی که داره باعث شده سرعت بشدت بشدت بالایی داشته باشه و درعین حال نسبت به کاربردی که داره، رم مناسبی مصرف میکنه📦 ویژگی های redis
- چندین نوع دیتا رو نگه میداره
- حواسش هست حتی اگه سرور خاموش هم بشه، اطلاعات رو روی دیسک نگه میداره ( و احتمالش هست اطلاعات کمی قدیمی یا ناقص باشن، بستگی به کانفیگ شدنش داره )
- نمیتونه مالتی تردینگ باشه و درخواستارو دونه دونه جواب میده
- کلی قابلیت خفن داره مثل real time، session management، و ...
واقعا یه کش پر از قابلیتعه، باهاش هر الگوریتم کشی که بخواید میتونید بسازید، و کلی نوع داده رو مدیریت کنید.
🏢 چه سازمان هایی از memcached استفاده میکنن؟ ( طبق گفته خودشون )
فیس بوک: برای کاهش تعداد درخواست به دیتابیس
توییتر: برای اطلاعات کاربران، یا توییت های تکراری
ویکیپدیا: برای صفحاتی که زیاد دیده میشن
ردیت: برای نگهداری اطلاعات موقتی
یوتیوب: برای نگهداری متادیتا ویدیو ها
🏢 چه سازمان هایی از redis استفاده میکنن؟ ( طبق گفته خودشون )
توییتر: برای ذخیره تایملاین های کاربران، داده های درلحظه
گیتهاب: برای مدیریت صف های پسزمینه
اینستاگرام: برای نگهداری داده های مربوط به فیدهای خبری
پینترست: برای کمتر کردن درخواست به دیتابیس
استکاورفلو: فقط گفته استفاده میکنه، معلوم نیس دقیقا برای چی
🔥 @CodingLovers_OFF
❤5👍2😢1
رفتم گیتهابم بعد یه مدت
یهو اینو دیدم، سیگنال میدادیم وقتی مد نبود🌟
۲۶ هزار بود اون موقع
https://github.com/AmirofficiaI
یهو اینو دیدم، سیگنال میدادیم وقتی مد نبود
۲۶ هزار بود اون موقع
https://github.com/AmirofficiaI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤2
Coding Lovers
🔥 جایگزینی برای تمام پکیج منیجر های پایتون و venv ها ابزار uv که توی اوایل سال 2024 معرفی شده به طور کلی کارایی پروژه های پایتونی رو متحول کرده :) ❓️ حالا چی هست؟ یک ابزاری هست که با زبان Rust نوشته شده که میتونه به طور کامل یک پروژه پایتونی رو مدیریت کنه…
📦 ابزار مدیریت پروژه رسمی پایتون
قبلا درمورد uv که از بهترین هاست گفتیم، حالا بهتره یکم راجب ابزار رسمی خود پایتون حرف بزنیم.
🛠 ابزار hatch
یه ابزار مدرن و جدید برای مدیریت پروژه های پایتون هست که توسط خود pypi تایید شده و حتی داکیومنت hatch رو خود pypi با سابدامین در اختیار همه قرار داده.
هدف از این ابزار این بوده که وابستگی شما به چندین ابزار مختلف برای مدیریت پروژه رو از بین ببره.
براتون:
- پروژه هایی با ساختار های پیشنهادی خود پایتون خلق میکنه
کار pip رو انجام میده و همه پکیج هارو مدیریت میکنه
- کار venv رو انجام میده
- کار pytest رو انجام میده ( ولی خب ضعیف تره )
- بهتون برای انتشار لایبرری در pypi کمک میکنه
🚀 فرق با UV
ابزار hatch با پایتون نوشته شده و uv با Rust.
سرعت کمتری نسبت به uv داره.
ابزار uv چیزی فراتر از یک مدیریت پروژه هست و امکانات بیشتری با سرعت بیشتری میده، اما در عین حال یادگیریش خیلی سخت تره ( البته که مثل hatch کار pytest رو انجام نمیده ).
از uv برای پروژه های استفاده میکنن که سرعت CI/CD اهمیت زیادی داره.
@CodingLovers_OFF 🔥
قبلا درمورد uv که از بهترین هاست گفتیم، حالا بهتره یکم راجب ابزار رسمی خود پایتون حرف بزنیم.
🛠 ابزار hatch
یه ابزار مدرن و جدید برای مدیریت پروژه های پایتون هست که توسط خود pypi تایید شده و حتی داکیومنت hatch رو خود pypi با سابدامین در اختیار همه قرار داده.
هدف از این ابزار این بوده که وابستگی شما به چندین ابزار مختلف برای مدیریت پروژه رو از بین ببره.
براتون:
- پروژه هایی با ساختار های پیشنهادی خود پایتون خلق میکنه
کار pip رو انجام میده و همه پکیج هارو مدیریت میکنه
- کار venv رو انجام میده
- کار pytest رو انجام میده ( ولی خب ضعیف تره )
- بهتون برای انتشار لایبرری در pypi کمک میکنه
🚀 فرق با UV
ابزار hatch با پایتون نوشته شده و uv با Rust.
سرعت کمتری نسبت به uv داره.
ابزار uv چیزی فراتر از یک مدیریت پروژه هست و امکانات بیشتری با سرعت بیشتری میده، اما در عین حال یادگیریش خیلی سخت تره ( البته که مثل hatch کار pytest رو انجام نمیده ).
از uv برای پروژه های استفاده میکنن که سرعت CI/CD اهمیت زیادی داره.
@CodingLovers_OFF 🔥
👍5🤣3❤1
Coding Lovers
یکم بریم تو دل چیز هایی که کمتر بهشون توجه میشه :)
Soft Delete در مدیریت دیتابیس
برای متوجه شدن Soft delete اول باید یه نگاهی به مفهوم Hard Delete بندازیم.
کلمه ای رو تصور کنید — Hard Delete یعنی حذف کردن و پاک کردن اون کلمه به شکل کامل. ولی از اون طرف، Soft Delete یعنی قرار دادن اون کلمه در جایی به نام "دور انداخته شده". حذف شده، اما همچنان هست اگر نیازش داشته باشی.
توی دیتابیس، Hard Delete یعنی حذف کامل یک دیتا به شکل کلی اما Soft delete یعنی قرار دادنش به عنوان "حذف شده".
✨️ چرا مهمه؟
- جلوگیری از اشتباهات: یهویی اشتباهی دیتای مهمی از دیتابیس پاک بشه. با Soft Delete میتونی برش گردونی
- قانون: بسیاری از صنعت ها و شغل ها هستن که قوانینشون شمارو موظف میکنه هیچ دیتایی نباید پاک شه و تمام اطلاعات باید نگهداری بشن. خصوصا وقتی داخل ایران هستی، یکی میتونه بی دلیل ازت شکایت دروغ بکنه؛ اگه دیتا رو پاک کرده باشی هیچ مدرکی برای دفاع نداری
- حسابرسی: توی بیزینس های بزرگ، معمولا اطلاعات حذف شده هم ارزش پیدا میکنن و برای بررسی و پیشرفت مهم هستن ( خصوصا توی حسابداری و حسابرسی )
❓️ روش ها
روش های ساده ای هست که خیلی راحت به ذهن میان.
برای اطلاعات میتونید سطری به نام is_deleted در نظر بگیرید
یا میتونید برای دقیق تر شدن اطلاعات، تاریخ بزنید deleted_at
و ...
🚀 تاثیر در بهینه بودن دیتابیس
این روش در مراحل اول خیلی میتونه به سرعت کمک کنه، چون بجای DELETE کردن، شما از UPDATE استفاده میکنید و این سرعت رو بالا میبره. اما سرعت SELECT کردن شما رو به مرور زمان با بالا رفتن اطلاعات کاهش میده.
برای حفظ کردن سرعت، باید اطلاعات قدیمی رو به شکلی آرشیو کنید و از اطلاعات اصلی جدا کنید ( و یا حتی اطلاعاتی که میدونید بدرد نمیخورن رو Hard delete کنید )
@CodingLovers_OFF 🔥
برای متوجه شدن Soft delete اول باید یه نگاهی به مفهوم Hard Delete بندازیم.
کلمه ای رو تصور کنید — Hard Delete یعنی حذف کردن و پاک کردن اون کلمه به شکل کامل. ولی از اون طرف، Soft Delete یعنی قرار دادن اون کلمه در جایی به نام "دور انداخته شده". حذف شده، اما همچنان هست اگر نیازش داشته باشی.
توی دیتابیس، Hard Delete یعنی حذف کامل یک دیتا به شکل کلی اما Soft delete یعنی قرار دادنش به عنوان "حذف شده".
✨️ چرا مهمه؟
- جلوگیری از اشتباهات: یهویی اشتباهی دیتای مهمی از دیتابیس پاک بشه. با Soft Delete میتونی برش گردونی
- قانون: بسیاری از صنعت ها و شغل ها هستن که قوانینشون شمارو موظف میکنه هیچ دیتایی نباید پاک شه و تمام اطلاعات باید نگهداری بشن. خصوصا وقتی داخل ایران هستی، یکی میتونه بی دلیل ازت شکایت دروغ بکنه؛ اگه دیتا رو پاک کرده باشی هیچ مدرکی برای دفاع نداری
- حسابرسی: توی بیزینس های بزرگ، معمولا اطلاعات حذف شده هم ارزش پیدا میکنن و برای بررسی و پیشرفت مهم هستن ( خصوصا توی حسابداری و حسابرسی )
❓️ روش ها
روش های ساده ای هست که خیلی راحت به ذهن میان.
برای اطلاعات میتونید سطری به نام is_deleted در نظر بگیرید
یا میتونید برای دقیق تر شدن اطلاعات، تاریخ بزنید deleted_at
و ...
🚀 تاثیر در بهینه بودن دیتابیس
این روش در مراحل اول خیلی میتونه به سرعت کمک کنه، چون بجای DELETE کردن، شما از UPDATE استفاده میکنید و این سرعت رو بالا میبره. اما سرعت SELECT کردن شما رو به مرور زمان با بالا رفتن اطلاعات کاهش میده.
برای حفظ کردن سرعت، باید اطلاعات قدیمی رو به شکلی آرشیو کنید و از اطلاعات اصلی جدا کنید ( و یا حتی اطلاعاتی که میدونید بدرد نمیخورن رو Hard delete کنید )
@CodingLovers_OFF 🔥
❤4
Coding Lovers
Soft Delete در مدیریت دیتابیس برای متوجه شدن Soft delete اول باید یه نگاهی به مفهوم Hard Delete بندازیم. کلمه ای رو تصور کنید — Hard Delete یعنی حذف کردن و پاک کردن اون کلمه به شکل کامل. ولی از اون طرف، Soft Delete یعنی قرار دادن اون کلمه در جایی به نام "دور…
حالا در مقابل روش Soft delete، استراتژیی هست برای نگه داشتن اطلاعات حذف شده.
توی شرکت ها، اسناد قدیمی و بدرد نخور رو میریزن کجا؟ آرشیو
روش آرشیو در مدیریت دیتابیس
فرض کنید کتابخانه ای رو مدیریت میکنین. اگر بخواید کتابی را دور بندازید، میشه Hard Delete. اگه بخواید کتاب های قدیمی رو همونجا در قفسه ای به نام "حذف شده ها" بچینید، میشه Soft Delete، و اما اگه بخواید بفرستید به مکانی مثل انبار، میشه آرشیو کردن.
در روش Hard Delete، کتاب کاملا از دست رفته و قابل برگشت نیست، پس بحثی راجبش نداریم.
در روش Soft Delete، به مرور زمان کتابخونه شما تبدیل به انباریی از کتاب های حذف شده میشه. پیدا کردن کتاب های جدید سخت تر و سخت تر میشه.
در روش آرشیو، همه چیز مرتب و منظم در جای خودش قرار داره.
❓️ روش ها
چندین روش وجود داره بسته به راهی که میرید. آخرین راهی که من استفاده کردم این بوده:
بخشی (یک schema) به نام archive توی دیتابیس ساختم، تیبل هارو به همون ساختار اصلی ( گاهی با کمی تفاوت ) در archive ساختم.
با استفاده از قابلیت TRIGGER در دیتابیس ها، عملکرد های Delete رو شنود کردم و اینجوری هروقت اطلاعاتی در بخش اصلی دیتابیس حذف شد، خودکار اون اطلاعات ریخته میشن توی archive.
پ.ن: این روش زیاد مورد پسند نیست و توی بیزینس های بزرگ، از چند تا سرور مختلف استفاده میکنن، ولی خب برای من کافی بود.
🚀 تاثیر در بهینه بودن دیتابیس
باعث میشه عملکرد های DELETE سرعت خیلی پایینی پیدا میکنن و ممکنه زمانبر بشن، اما در عین حال سرعت SELECT و UPDATE رو در بالاترین حالت خودش حفظ میکنه. همچنین همیشه فضای اصلی و تیبل های اصلی کم حجم و تمیز میمونن.
@CodingLovers_OFF 🔥
توی شرکت ها، اسناد قدیمی و بدرد نخور رو میریزن کجا؟ آرشیو
روش آرشیو در مدیریت دیتابیس
فرض کنید کتابخانه ای رو مدیریت میکنین. اگر بخواید کتابی را دور بندازید، میشه Hard Delete. اگه بخواید کتاب های قدیمی رو همونجا در قفسه ای به نام "حذف شده ها" بچینید، میشه Soft Delete، و اما اگه بخواید بفرستید به مکانی مثل انبار، میشه آرشیو کردن.
در روش Hard Delete، کتاب کاملا از دست رفته و قابل برگشت نیست، پس بحثی راجبش نداریم.
در روش Soft Delete، به مرور زمان کتابخونه شما تبدیل به انباریی از کتاب های حذف شده میشه. پیدا کردن کتاب های جدید سخت تر و سخت تر میشه.
در روش آرشیو، همه چیز مرتب و منظم در جای خودش قرار داره.
❓️ روش ها
چندین روش وجود داره بسته به راهی که میرید. آخرین راهی که من استفاده کردم این بوده:
بخشی (یک schema) به نام archive توی دیتابیس ساختم، تیبل هارو به همون ساختار اصلی ( گاهی با کمی تفاوت ) در archive ساختم.
با استفاده از قابلیت TRIGGER در دیتابیس ها، عملکرد های Delete رو شنود کردم و اینجوری هروقت اطلاعاتی در بخش اصلی دیتابیس حذف شد، خودکار اون اطلاعات ریخته میشن توی archive.
پ.ن: این روش زیاد مورد پسند نیست و توی بیزینس های بزرگ، از چند تا سرور مختلف استفاده میکنن، ولی خب برای من کافی بود.
🚀 تاثیر در بهینه بودن دیتابیس
باعث میشه عملکرد های DELETE سرعت خیلی پایینی پیدا میکنن و ممکنه زمانبر بشن، اما در عین حال سرعت SELECT و UPDATE رو در بالاترین حالت خودش حفظ میکنه. همچنین همیشه فضای اصلی و تیبل های اصلی کم حجم و تمیز میمونن.
@CodingLovers_OFF 🔥
❤4👍3