lab – Telegram
213 subscribers
367 photos
354 videos
21 files
324 links
ما اینجا میم میزاریم بینش پست آموزشی
Download Telegram
Forwarded from Bit Orbit 🪐 (Arya)
یه چیزی داریم به اسم 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
👌5
بزرگترین مسئله ای که موتور های جستجوی اوایل باهاش درگیر بودن، رنکینگ صفحات وب بوده. یاهو که اولین موتور جستجوی محبوب توی جهان بوده این مشکلو داشت و خیلی راحت آدمها میتونستن سایتشون رو بیارن توی نتیجه های برتر با ترفندایی مثل استفاده از یه عالمه کلید واژه با رنگ سفید و بکگراند سفید به شکلی که مشخص نباشه. و جالب اینجاست که با بوجود امدن ایده های رنکینگ همچنان مقاومت میکرد در برابر این قضیه، چون بر این عقیده بودن اگر کاربر زودتر جوابشو پیدا کنه کمتر تبلیغ میبینه.
2👌1
lore.kernel.org

سایت lore.kernel.org مثل یک "آرشیو وب" برای تمام ایمیل‌های مربوط به توسعه لینوکس و پروژه‌های مرتبطه.
حالا چرا نمیخان رباتا بهش سر نزنن؟
دلیلش اینه که بعضی شرکت‌های AI وب‌سایت‌ها رو به‌شدت اسکرپ می‌کنن (جمع‌آوری انبوه داده). این باعث فشار و حتی قطعی سایت میشه.
این روش برای مقابله، کاربرها رو مجبور می‌کنه یک Proof-of-Work (مثل Hashcash) انجام بدن. یعنی مرورگر یه کار محاسباتی کوچک انجام میده تا ثابت کنه "انسانی و معمولی" هستی، نه یک ربات اسکرپر عظیم.

برای کاربر عادی این بار خیلی کمه و حس نمی‌شه، اما برای اسکرپرهای انبوه خیلی گرون و سنگین میشه.

در ضمن بنظرم کیوت ترین are you a bot تا اینجا بود.
🌚1
Forwarded from Go Casts 🚀
مستند Python منتشر شد، پیشنهاد میکنم ببینید.

پایتون یکی از تاثیرگذارترین زبان های سه دهه گذشته بوده و احتمالا تاثیرگذارترین زبان چند سال یا دهه آینده باشه..

https://youtu.be/GfH4QL4VqJ0?si=cR5PFyhoq7kr7EhQ


@gocasts
🕊4
Media is too big
VIEW IN TELEGRAM
What resources help you get your team to the World Finals?

در حاشیه برگزاری icpc worldfinal معمولن یه گزارش کوتاه بامزه هم بیرون میاد. این منو یاد یدونه گزارش قدیمی ترشون انداخت.
🥰1
Forwarded from Lack of leak XD
This media is not supported in your browser
VIEW IN TELEGRAM
خیلیا توی پارتیشن بندی دیسک هاشون مشکل دارن، بعد دیدن این ویدیو مشکلتون به کل حل میشه


@lack_xd
🤣3🔥2
چطوری اسم گذاری کنیم داخل کد.

البته من بعد یک مدت دنبال کردن این پترن‌ها رسیدم به اسم‌های خیلی طولانی که طبق قوانین درسته ولی حس میکنم اشتباس :))))

https://youtu.be/-J3wNP6u5YU?si=VMlBQqu-gFR3noXv
2
امروز 13 سپتامبر و 256امین روز سال میلادی هست.
و برنامه نویسا تصمیم گرفتن همچین روزی رو به عنوان روز برنامه نویس در نظر بگیرن چون عدد مقدسیه.
یادمه یه چالشی یکبار تو همین روز حل کردم که یادم بیاد میگم چی بود الان یادم نیست
عکسو از ردیت کش رفتم
🔥3
lab
امروز 13 سپتامبر و 256امین روز سال میلادی هست. و برنامه نویسا تصمیم گرفتن همچین روزی رو به عنوان روز برنامه نویس در نظر بگیرن چون عدد مقدسیه. یادمه یه چالشی یکبار تو همین روز حل کردم که یادم بیاد میگم چی بود الان یادم نیست عکسو از ردیت کش رفتم
معما این بود:
"riddle_1": "40 49 55 32 60 32 52 42 51 43 53 41 32 124 124 32 40 56 42 50 32 61 61 32 52 42 52 41 32 38 38 32 33 40 51 43 51 32 61 61 32 54 41", "riddle_2": "33 98 32 63 32 33 98 32 58 32 98"

اگه دوست داشتید خودتون حل کنید همین متن کافیه و بقیه رو میتونید نبینید.

با یک متن ASCII-encoded رو بروییم که بعد از دیکد میرسیم به:

(17 < 4*3+5) || (8*2 == 4*4) && !(3+3 == 6)


و عبارت بعدی
!b ? !b : b


که اگه عبارت اول رو حل کنین false میشه و عبارت دوم رو اگه حل کنیم true میشه و جواب معما هست 01 (صفر و یک)
🔥1
پایین سمت راست
این مدت با بیلد کردن یک پروژه ای مشکل داشتم. مشکل این بود که لپ تاپ من خیلی زغالیه و این پروژه هم بیلد شدنش خیلی منابع میخاست. تایجایی پیش میرفت و بعد چون کل رمو اشغال میکرد سیستم عامل فریز میشد. اول امدم مصرف رمشو حین بیلد کردن محدود کنم ولی بازم مشکل وجود داشت. در آخر به گیت هاب اکشن ها رو آوردم و الان خیلی راحت سر هر push خودش پروژه رو بیلد میکنه و خیلی خیلی کار راه اندازه. خلاصه از گیتهاب اکشن ها غافل نشید.
👌2
lab
پایین سمت راست
شاید براتون سوال شده باشه که
/g/ - Technology
چیه؟ این بورد تکنولوژی سایت 4chan.org هست که خیلی فعاله و ارزش چک کردن داره
https://boards.4chan.org/g/
👌2