YouTube video
این ویدیو رو به شدت پیشنهاد میکنم ببینید. چیز جالبی که عملی نشون میده اینکه مراحل کامپایل رو چجوری میشه نگه داشت و چجوری میشه دوتا زبان رو عملن باهم دیگه کامپایل کرد و خب اتفاقی که میفته یکی رو تا قسمت اسمبلی کد میبری و بعد با اون یکی زبان کامپایل میکنی و نکته آخر هم اینکه gcc الان مخفف gnu compiler collection هست چون چندین زبات پشتیبانی میکنه.
این ویدیو رو به شدت پیشنهاد میکنم ببینید. چیز جالبی که عملی نشون میده اینکه مراحل کامپایل رو چجوری میشه نگه داشت و چجوری میشه دوتا زبان رو عملن باهم دیگه کامپایل کرد و خب اتفاقی که میفته یکی رو تا قسمت اسمبلی کد میبری و بعد با اون یکی زبان کامپایل میکنی و نکته آخر هم اینکه gcc الان مخفف gnu compiler collection هست چون چندین زبات پشتیبانی میکنه.
YouTube
Why Some Projects Use Multiple Programming Languages
This video was sponsored by Let's Get Rusty.
Visit https://letsgetrusty.com/start-with-jorge to find out more about their training. They’re laser-focused on Rust education and job placement.
In this video we cover how multiple compiled languages can be used…
Visit https://letsgetrusty.com/start-with-jorge to find out more about their training. They’re laser-focused on Rust education and job placement.
In this video we cover how multiple compiled languages can be used…
اول این پست رو بخونین:
https://news.1rj.ru/str/Linuxor/2505
لینوس توروالدز خیلی راحت بقیه رو تخریب میکنه و کدشون رو به چالش میکشه. این آقا کسیه که pull request داده و لینوس بهش گفته این چه وضعشه. ولی همه اینها به کنار سایت شخصیش در عین سادگی خیلی باحال بود.
https://www.dabbelt.com/~palmer/
https://news.1rj.ru/str/Linuxor/2505
لینوس توروالدز خیلی راحت بقیه رو تخریب میکنه و کدشون رو به چالش میکشه. این آقا کسیه که pull request داده و لینوس بهش گفته این چه وضعشه. ولی همه اینها به کنار سایت شخصیش در عین سادگی خیلی باحال بود.
https://www.dabbelt.com/~palmer/
به برنامه نویسی با کمک هوش مصنوعی میگن vibe coding یا کدنویسی حسی. یوتیوب سرچ کنید یه عالمه آموزش هم میتونید پیدا کنید راجبش😭
🥰1
Why your website should be under 14kB in size
قضیه از این قراره که وبسایتی که حجمش ۱۴ کیلوبایته خیلی از یه وبسایت ۱۵ کیلوبایتی سریع تره. که این به دلیل پروتکل tcp هست و کند بودنش تو فهمیدن اینکه چندتا پکت میتونه بفرسته در آن واحد. اینجارو هم پیشنهاد میکنم بخونید.
این ویدیو هم راجب همین موضوعه:
https://www.youtube.com/watch?v=ciNXbR5wvhU
تنها راه حل این نیست که کل وبسایتمون رو ۱۴ کیلوبایتی کنیم تا از این کندی فرار کنیم. فایل های html قابلیت استریم شدن دارن یعنی همزمان با دانلود توسط browser نشون داده میشند. و فرض کنیم سایتمون خیلی بزرگه، همینکه اولین ۱۴ کیلوبایت سایتمون با معنی باشه و browser چیزی برا نمایش داشته باشه از دیر لود شدن سایتمون به این دلیل فرار کردیم.
این سایت صفحه سرچ گوگل هست ولی با حجم یک کیلوبایت:
https://1kbgoogle.artemka1806.dev/
قضیه از این قراره که وبسایتی که حجمش ۱۴ کیلوبایته خیلی از یه وبسایت ۱۵ کیلوبایتی سریع تره. که این به دلیل پروتکل tcp هست و کند بودنش تو فهمیدن اینکه چندتا پکت میتونه بفرسته در آن واحد. اینجارو هم پیشنهاد میکنم بخونید.
این ویدیو هم راجب همین موضوعه:
https://www.youtube.com/watch?v=ciNXbR5wvhU
تنها راه حل این نیست که کل وبسایتمون رو ۱۴ کیلوبایتی کنیم تا از این کندی فرار کنیم. فایل های html قابلیت استریم شدن دارن یعنی همزمان با دانلود توسط browser نشون داده میشند. و فرض کنیم سایتمون خیلی بزرگه، همینکه اولین ۱۴ کیلوبایت سایتمون با معنی باشه و browser چیزی برا نمایش داشته باشه از دیر لود شدن سایتمون به این دلیل فرار کردیم.
این سایت صفحه سرچ گوگل هست ولی با حجم یک کیلوبایت:
https://1kbgoogle.artemka1806.dev/
🤓1
lab
برا مسائلی که توابع بازگشتی و dp نیازه، برا سریعتر کردن روند محاسبه، تکنیکی به کار میره به اسم memoization حرفش اینه که اگه قراره مقداری رو دوباره بهش نیاز داشته باشی یجا ذخیرش کن که نیاز نباشه دوباره حسابش کنی. مثال بارزش حساب کردن سری فیبوناچی هست. def fib(n…
برج هانوی
اولین بار معلممون سر کلاس این مسئله رو مطرح کرد. چون داشت یه تعداد از بچه هارو برا المپیاد دانشآموزی آماده میکرد بهش برخورده بود. اونجا برام جالب بود ولی نفهمیدم مسئله رو بعد هرچی جلو تر میرفتیم بیشتر فهمیدمش. دیگه سر کلاس ساختمان داده کامل بلدش بودم.
اولین بار معلممون سر کلاس این مسئله رو مطرح کرد. چون داشت یه تعداد از بچه هارو برا المپیاد دانشآموزی آماده میکرد بهش برخورده بود. اونجا برام جالب بود ولی نفهمیدم مسئله رو بعد هرچی جلو تر میرفتیم بیشتر فهمیدمش. دیگه سر کلاس ساختمان داده کامل بلدش بودم.
بر اساس یک افسانه هندی، توی معبدی به اسم برهما، ۶۴ دیسک طلایی روی سه ستون الماس وجود داره. راهبان باید این دیسکها رو طبق قوانین برج هانوی جابهجا کنن، و وقتی این کار تموم بشه، جهان به پایان میرسه! 😅
حالا اگه بخوای حساب کنیم:
برای n دیسک، تعداد حرکتها برابر با 2 به توان n منهی 1 هست.
پس برای ۶۴ دیسک:
2^{64} - 1 = 18,446,744,073,709,551,615
حتی اگه راهبها هر ثانیه یک حرکت کنن، تکمیل این کار بیش از ۵۸۰ میلیارد سال طول میکشه! (که خیلی بیشتر از سن فعلی کیهانه).
پس خیالت راحت، جهان به این زودیها تموم نمیشه. 😄
❤3🥰1
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 مگابایت.
همینکار رو مجدد تکرار کردم اما بجای استفاده از 0 از دیتای رندوم استفاده کردم، فایل زیپ هیچ تغییری نکرد.
باید بدونیم الگوریتم های زیپ مثل 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
GitHub
GitHub - iamtraction/ZOD: This is a decompression bomb (also known as zip of death or zip bomb) designed to crash or render useless…
This is a decompression bomb (also known as zip of death or zip bomb) designed to crash or render useless the program or system reading it. - iamtraction/ZOD
👌5
بزرگترین مسئله ای که موتور های جستجوی اوایل باهاش درگیر بودن، رنکینگ صفحات وب بوده. یاهو که اولین موتور جستجوی محبوب توی جهان بوده این مشکلو داشت و خیلی راحت آدمها میتونستن سایتشون رو بیارن توی نتیجه های برتر با ترفندایی مثل استفاده از یه عالمه کلید واژه با رنگ سفید و بکگراند سفید به شکلی که مشخص نباشه. و جالب اینجاست که با بوجود امدن ایده های رنکینگ همچنان مقاومت میکرد در برابر این قضیه، چون بر این عقیده بودن اگر کاربر زودتر جوابشو پیدا کنه کمتر تبلیغ میبینه.
❤2👌1
lore.kernel.org
سایت lore.kernel.org مثل یک "آرشیو وب" برای تمام ایمیلهای مربوط به توسعه لینوکس و پروژههای مرتبطه.
حالا چرا نمیخان رباتا بهش سر نزنن؟
دلیلش اینه که بعضی شرکتهای AI وبسایتها رو بهشدت اسکرپ میکنن (جمعآوری انبوه داده). این باعث فشار و حتی قطعی سایت میشه.
این روش برای مقابله، کاربرها رو مجبور میکنه یک Proof-of-Work (مثل Hashcash) انجام بدن. یعنی مرورگر یه کار محاسباتی کوچک انجام میده تا ثابت کنه "انسانی و معمولی" هستی، نه یک ربات اسکرپر عظیم.
برای کاربر عادی این بار خیلی کمه و حس نمیشه، اما برای اسکرپرهای انبوه خیلی گرون و سنگین میشه.
در ضمن بنظرم کیوت ترین are you a bot تا اینجا بود.
سایت 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
پایتون یکی از تاثیرگذارترین زبان های سه دهه گذشته بوده و احتمالا تاثیرگذارترین زبان چند سال یا دهه آینده باشه..
https://youtu.be/GfH4QL4VqJ0?si=cR5PFyhoq7kr7EhQ
@gocasts
YouTube
The Story of Python and how it took over the world | Python: The Documentary
This is the story of the world's most beloved programming language: Python. What began as a side project in Amsterdam during the 1990s became the software powering artificial intelligence, data science and some of the world’s biggest companies. But Python's…
🕊4
Media is too big
VIEW IN TELEGRAM
What resources help you get your team to the World Finals?
در حاشیه برگزاری icpc worldfinal معمولن یه گزارش کوتاه بامزه هم بیرون میاد. این منو یاد یدونه گزارش قدیمی ترشون انداخت.
در حاشیه برگزاری icpc worldfinal معمولن یه گزارش کوتاه بامزه هم بیرون میاد. این منو یاد یدونه گزارش قدیمی ترشون انداخت.
🥰1
lab
What resources help you get your team to the World Finals? در حاشیه برگزاری icpc worldfinal معمولن یه گزارش کوتاه بامزه هم بیرون میاد. این منو یاد یدونه گزارش قدیمی ترشون انداخت.
Media is too big
VIEW IN TELEGRAM
What's the favorite programming language for ICPC?
این یکی برا سال 2017 هست. آخر ویدیو ینفر میگه rust😂
این یکی برا سال 2017 هست. آخر ویدیو ینفر میگه rust😂
🥰2