Bit Orbit 🪐 – Telegram
Bit Orbit 🪐
372 subscribers
100 photos
10 videos
45 files
300 links
Talking about world of bit and bytes.
Download Telegram
رادیو رو اپدیت کردم،‌ تنها یه فیچر بدرد بخور بهش اضافه کردم که بشه آهنگی که داره پلی میشه رو دانلود کرد.
و خب چون هدفم از این سایت این بود که خیلی ساده باشه، دکمه دانلود رو توی منو کناریش گذاشتم که صفحه‌ش شلوغ نشه.
👍42🔥1
یه چیزی داریم به اسم zip bomb مثلا فایل zip.42 که کلا 42 کیلوبایت هست اما وقتی اکسترکت بشه حجمش به 4.5 پتابایت می‌رسه. ولی چطوری؟
باید بدونیم الگوریتم های زیپ مثل DEFLATE چطوری کار می‌کنند.

الگوریتم های زیب وقتی میخان یه چیزی رو زیپ کنند، داده های تکراری رو حذف می‌کنند،
حالا فرض کنید که این داده‌های تکراری دقیقا کل فایل باشه،
مثلا فایلی با سایز 4.5 پتابایت فقط پر شده از 0
حالا اگه این فایل زیپ بشه چقدر میشه حجمش؟

یه جدولی داخل فایل های زیپ هست به اسم dictionary
این جدول به یک داده‌ی تکراری پوینت می‌کنه
مثلا بجای اینکه چهار ترابایت 0 رو نگه‌داره
به هر جایی که قراره 0 باشه اشاره می‌کنه،

اما به این سادگی نیست، چرا؟ چون اصلا منطقی نیست داخل جدول یه کاراکتر بذاری و بعد داخل دیتا به این کاراکتر اشاره کنی، اینطوری حجم خود فایل بیشتر هم میشه.
پس این الگوریتم چطوری کار می‌کنه؟

میاد و با مجموعه‌ای/توالی از داده‌های تکراری کار می‌کنه.
مثلا وقتی یک توالی داده مثل 00001111 داشته باشیم، الگوریتم همه این رو یکجایی ذخیره می‌کنه و هرجایی که دقیقا همین دیتا تکرار شده باشه،‌ یه پوینتر می‌ذاره.

حالا ما یه محدودیتی داریم، اینکه ما داریم می‌گیم 4.5 پتابایت داده‌های تکراری 0 قراره کنار هم باشن
خب این بازم منطقی نیست که بیای و توی دیکشنری همه این 0 ها رو بذاری و بگی اینا یکجا تکرار شده
و یا اینکه بگی ما یه 0 داریم و بقیه فایل همش از این 0 ساخته شده!

الگوریتم میاد و هر 258 بایت که متوالی تکرار شدن رو داخل جدول می‌ذاره
بعد می‌بینه که خب 258 بایت بعدی هم که همونه! پس یه اشاره‌گر(پوینتر) می‌ذاره کنار اشاره‌گر قبلی، و بعد دوباره همین روند رو باید برای 4.5 پتابایت دیتا انجام بده!
اینطوری به اندازه چند ترابایت ما پوینتر درست کردیم :))

پس zip bomb چطوری درست شد؟
خیلی ساده یکبار یک فایل زیپ مثلا 1 گیگ ساخته شد، بعد این فایل چند بار دیگه کپی شد و اون کپی ها زیپ شدن
این روند اینقدر ادامه پیدا می‌کنه تا یه فایل زیپ داشته باشیم که کلی فایل زیپ دیگه داخلش باشه(recursive)
وقتی برنامه‌ای بخاد فایل رو اکسترکت کنه،‌ هر فایل زیپ دیگه‌ای هم داخل باشه اکسترکت می‌کنه.



من یه امتحانی کردم، با dd یک فایل 10 گیگ ساختم که همه از 0 پر شده بود.
بعد با الگوریتم lzma زیپ کردم، فایل نهایی شد 100 مگابایت.

dd if=/dev/zero of=./data bs=100M count=100
tar --lzma -cvf data.lzma.tar ./data


همینکار رو مجدد تکرار کردم اما بجای استفاده از 0 از دیتای رندوم استفاده کردم،‌ فایل زیپ هیچ تغییری نکرد.
dd if=/dev/random of=./data bs=100M count=100
tar --lzma -cvf data.lzma.tar ./data
👍53🔥1
Forwarded from The Machine
موج تغییرات مسکن از ۲۳ خرداد (تحلیل پلتفرم دیوار):

https://divarrealstatesinthesedays.netlify.app

از 23 خرداد تا الان اتفاقات زیادی افتاده، تو چند روز اخیر تعداد آگهی‌های منتشر شده و فروش مسکن به شدت زیاد شده، اینجا می‌تونید یه کم روی نمودار این تحلیل ها رو بررسی کنید، هنوز جای کار داره خیلی ولی خب برای فعلا...

یکی از جذاب‌ترین کارهایی بود که امتحانش کرده بودم، اگه نظری دارین خوشحال میشم بگین.
حقیقتا فهمیدن آمار و اعداد و نمایش اون ها به شیوه درست کار بسی سخت ولی سودمندی هست.

(فعلا حالت سمپل دیتا که بیش از ۴۰۰۰ تا آگهی هستن رو Scrape می‌کنه و تحلیلش رو نشون میده روی Sample data کلیک کنید و بعد آنالیز، بعدا حالت آپلود فایل هم قرار می‌دم که اتومات و بروز تر بشه)
👍5👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
یه سرویس برای systemd درست کرده بودم که سه کار رو باید همزمان انجام می‌داد.
برای مثال
while true; do
sleep 3 &
sleep 5 &
sleep 9 &
done


اتفاقی که افتاد این بود که وقتی این کد ران می‌شد، همون تایم systemd می‌گفت برنامه کارش تموم شد و سرویس exit می‌شد.
بعد از چند روز فهمیدم که مشکل دقیقا همون & آخر هر دستور هست، اینکه برنامه بره توی بکگراند رو نیاز داشتم،
سه دستور هر کدومشون یه loop بینهایت بودن ولی systemd فکر می‌کرد کارشون تموم شده.
متوجه شدم که یک دستوری داریم به اسم wait
باعث میشه که هیچی exit نشه تا آخرین پروسه‌های تو بکگراند کارشون تموم بشه. توی مورد من هیچوقت تموم نمی‌شد.
11
This media is not supported in your browser
VIEW IN TELEGRAM
این TUIOS خیلی جالب بود،
توی ترمینال می‌تونی یکسری window هایی درست کنی و روی هر کدوم یکسری کامند خاص ران کنی،
شبیه i3 هست ولی کلا توی ترمیناله.

https://github.com/Gaurav-Gosain/tuios
3❤‍🔥1
یکی از اقداماتی که برای سرویس‌های پروداکشن لازمه ‌Replication هست.
اگر فرض کنیم شما یک API نوشتین که از دیتابیس استفاده می‌کنه، برای اینکه سرویس API سریع تر بشه و خب bottleneck(گلوگاه) رو حذف کنیم،
ما سرویس‌ api رو روی چند سرور اجرا می‌کنیم، اینطوری با یک load balancer جلوی api، می‌تونیم ترافیک رو تقسیم کنیم بین سرویس‌ها.
اما خب خود دیتابیس می‌تونه bottleneck باشه. راهکار چیه؟ اینکه بتونیم بر اساس نیازمندی پروژه یکی از انواع HA کردن‌ها رو برای دیتابیس انتخاب کنیم.
توی این پست دیتابیس Postgresql رو باهم HA می‌کنیم.
4
Bit Orbit 🪐
یه فایل داریم توی مسیر ~/.ssh/config فایده‌ش برای تایمیه که کلی سرور رو باید مدیریت کنی و حفظ کردن ای‌پی و یورز های سرور‌ها خیلی اذیت کننده‌س. از طرفی بازم یه ابزاری هست به اسم sshs که این رو هم راحت‌تر می‌کنه و یه TUI بر اساس اون کانفیگ برات میسازه. ساختار…
من ابزار‌های ترمینالی رو ترجیح می‌دم به کار کردن با GUI. توی این پست چند ابزار برای مدیریت کردن سرور‌های ssh رو معرفی کردم ولی در آخر sshs که از همه برام جذاب‌تر هست رو معرفی کردم و یکم توضیح دادم که چطور من ازش استفاده می‌کنم.


https://wiregeek.ir/p/%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%D9%87%D8%A7%DB%8C-%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%DA%A9%D8%A7%D9%86%DA%A9%D8%B4%D9%86-ssh/
3
https://github.com/besoeasy/file-drop


این یه ابزار خیلی جالبه که امروز بهش برخوردم.
با این ابزار شما فایل‌هاتون رو با IPFS از طریق سیستم خودتون شیر می‌کنید،
پشت NAT که باشین بازم کار می‌کنه،
فقط باید حتما انلاین بمونید و یا یک نود دیگه‌ای دیتا رو کامل دانلود کرده باشه و seed بشه.
به هرحال ابزار‌‌های p2p خیلی جذابن.
4
اگه مثل من خودتون رو توی وضعیتی دیدین که باید سایز دیسک یک سرور رو بدون ریبوت کردن اون افزایش بدین،
احتمالا این پست می‌تونه کمک باشه.
فقط یکم ترسناکه + ابزار هایی مثل LVM قبل از رخ دادن این وضعیت(کلا موقع نصب اولیه سرور) هم هستند،
البته XFS هم که یک فایل سیستم هست با روش خیلی جالبی می‌تونه دیسک رو افزایش بده،
از اون جالب‌تر بکاپ گرفتن توی xfs از دیسک هست که واقعا هوشمندانه‌ست.
2🔥1
این سایت رو دوست داشتم.
برای نصب ابزار هایی که دوست دارین، اول distro خودتون رو انتخاب می‌کنید
بعد ابزار‌ها رو انتخاب می‌کنید.
مراحل نصب رو در قالب یک کامند بهتون میده.
4
Bit Orbit 🪐
این سایت رو دوست داشتم. برای نصب ابزار هایی که دوست دارین، اول distro خودتون رو انتخاب می‌کنید بعد ابزار‌ها رو انتخاب می‌کنید. مراحل نصب رو در قالب یک کامند بهتون میده.
از اونجایی که همه چیز یا تحریمه یا فیلتر، و خب تغییر dns هم با این حجم از تحریم فایده‌ای نداره،
این پروژه‌ی جالبیه که می‌تونید v2ray رو روی سرورتون فعال کنید و فیلترینگ رو دور بزنید(یا تحریم)
یه خوبیش اینه که وقتی فعال میشه ترافیک خروجی رو فقط از تانل عبور میده و برای همین دسترسی ssh به سرور قطع نمیشه :)
اگه با داکر ران می‌کنید از این کامند استفاده کنید که دسترسی کامل رو بگیره و خب اگه از proxy راحت تر هستید و سرورتون پشت nat نیست و به اینترنت دسترسی نداره،
با ip private یه سرور دیگه‌ای که توی یک شبکه‌ست با سرورتون و پشت nat هم هست، اینو می‌تونید ران کنید و پورت های socks و http رو توی proxychains یا توی خود apt ست کنید.




docker run -d \
--restart=always \
--privileged \
--network=host \
--name v2raya \
-e V2RAYA_LOG_FILE=/tmp/v2raya.log \
-v /lib/modules:/lib/modules:ro \
-v /etc/resolv.conf:/etc/resolv.conf \
-v /etc/v2raya:/etc/v2raya \
mzz2017/v2raya