Dev Perfects – Telegram
Dev Perfects
41 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
فشرده سازی فایل ها چجوری اتفاق میوفته؟

شاید براتون سوال شده باشه که نرم افزار هایی مثل WinRAR چجوری فایل ها رو فشرده میکنن؟
خیلی ها بر این باورند که فشرده سازی فایل ها با حذف بیت ها اتفاق میوفته که کاملا غلطه
در صورتی که با حذف حتی یک بیت از فایل به طور کل فایل ناقص میسه و دیگه قابل استفاده نیست!

کلی روش و الگوریتم مختلف برای فشرده سازی فایل ها وجود داره اما یکی از پر استفاده ترین روش فشرده سازی فایل ها RLE (Run-Length Encoding) نام داره که با حذف عناصر تکراری فایل های فشرده تولید میکنه.
این الگوریتم با شمارش تعداد تکرار هر المان و ذخیره سازی تعداد اون + المان مربوطه حجم فایل ها رو کم میکنه!

اجازه بدید با مثال توضیح بدم:
مثلا فرض کنیم شما pdf یک کتاب 100 صفحه ای رو دارید و میخواهید این فایل رو فشرده کنید.
طبیعتا موارد تکراری توی فایل شما وجود داره.برای مثال در جاهای مختلف فایل شما کلمه "سلام" چند بار تکرار شده(برای مثال 3 بار) در اینجا این الگوریتم این 3 تا سلام رو تبدیل میکنه به "سلام×3"
نکته : (این عملیات فقط مختص pdf نیست و روی همه نوع فایلی کار میکنه)

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

@DevTwitter | <Farzad Ebrahimi/>
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
Media is too big
VIEW IN TELEGRAM
ماشین بازی آنلاین تحت وب، بزنید و لذت ببرید 😍🔥

شاید براتون سوال پیش بیاد که چجوری یه همچین وبسایتی رو ساختن با این کیفیت ⁉️

درواقع این وبسایت های با WebGL API مرور گر ایجاد شدن که میتونن مدل های سه بعدی رو رندر کنن و و شما به صورت تعاملی باهاشون کار بکنید، توی این پست کامل راجبش توضیح دادم میتونیم بخونید 🔻
https://news.1rj.ru/str/coolycode/651


سه مدل وسیله نقلیه و تنظیمات خیلی حالبی داره، البته توی فیلم صدا میوت بود ولی حتما خودتون تستش کنید 🤩👇

🌐 https://slowroads.io

#threejs #3D #WebGL

𝗖𝗛𝗔𝗡𝗡𝗘𝗟  |  𝗚𝗥𝗢𝗨𝗣

Forwarded from Sudoer (Morteza Bashsiz)
یکم موسیقی فاخر گوش بدیم
Forwarded from SoniaCircuit (Sony)
نظر‌ شخصی:

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

از یه دلیلی هم غلطه بخاطر اینکه همیشه پایه مفهوم مهندسی و معماری کامپیوتر مهم بوده اما باز هم نسبیه چون یه فرد میتونه خود اموز‌ هم اینارو طی کنه

بحث مهم دیگه ای که میاد وسط کانکشن سازیه که معمولا این فضا خیلی خوب توی دانشگاه توسط افراد پیاده میشه

ولی باز هم دانشگاه به دانشگاه فرق داره و باز هم این یه نظر نسبیه پس نمیشه گفت خوبه یا بده.
Forwarded from SoniaCircuit (Sony)
معمولا هدف افراد توی ایران از دانشگاه فرار کردنه ( از رفتن هم گذشته )

خودمم اگه ایران بودم قطعا با همین هدف رویکردی مثل ( تحصیل ) رو ادامه میدادم.
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۱۷۶۷

ای آنکه به جز شادی و جز نور نه ای
چون نعره زنم که از برم دور نه ای
هرچند نمک های جهان از لب تست
لیکن چکنم چو اندر این شور نه ای

#مولانا | گنجور
📍@iipoem
#5min_Rust

تفاوت Stack, Heap, Static در Rust:

اولین نکته اینه که خیلی از دوستان به اشتباه فکر می‌کنند که این ۳ مورد حافظه‌های متفاوتی هست و این مشکل از اینجا میاد که راجب سرعت صحبت می‌شه.

توی تصویر مثال بالا اگر دقت کنید؛ هر ۳ مورد داخل RAM هستند فقط ویژگی‌های مختلفی دارند که بهشون می‌پردازیم:
وقتی شما کد رو اجرا می‌کنید اول یک سری فضا به برخی موارد اختصاص داده می‌شه؛ برای مثال خود دستورالعمل‌های کد شما که توی تصویر سمت چپ Stack هستند؛ این بخش شامل static, global variable و ... هم میشه.
از مثال زدن data type ها پرهیز می‌کنم چون هنوز باهاشون آشنا نشدیم.
بعد از اینکار برای Rust یک فضای 8MB پشت سرهم درخواست داده می‌شه که این فضا بعنوان Stack اصلی توسط برنامه استفاده خواهد شد.
دیفالت 8mb هست برای ترد اصلی و 2mb برای تردهای دیگه توجه کنید که لزوما همون لحظه کل 8mb رزرو نخواهد شد اما برنامه شما تا 8mb دسترسی به استک داره و اگر بیشتر بشه stack overflow رخ میده و برنامه kill میشه.

با ویژگی‌های اصلی استک شروع کنیم و بعد به سراغ مثال بریم:
۱- سرعت؛ توی تصویر دقت کنید؛ یک بخشی بین stack, heap نوشتم Stack Pointer؛ یکی از رجیسترهای CPU وظیفه نگهداری آدرس شروع Stack رو به عهده می‌گیره و هموراه به آدرس انتهایی آخرین دیتای موجود در استک اشاره می‌کنه.

۲- هر نوع داده‌ای که می‌خواد داخل استک قرار بگیره باید سایز مشخصی داشته باشه. در زمان کامپایل باید مشخص بشه چقدر جا می‌خواد.

ترکیب دو مورد بالا باعث میشه که بتونیم خیلی سریع به دیتاهای روی Stack دسترسی بگیریم اما یک محدودیت هم هست؛ Stack مثل بشقاب چینی می‌مونه وقتی روی هم میچینی نمی‌‌تونی از آخر ی دونه رو بکشی بیرون؛ باید به ترتیب از بالاترین بشقاب برداری تا به پایینی (آخری برسی).

مورد بعدی Heap اما داستان متفاوتی داره؛ برخلاف Stack که خودش بصورت خودکار حافظه اختصاص میده و میگیره heap اینطوری نیست و هروقت به این حافظه نیاز داشته باشه باید به سیستم عامل بگه که یک همچین حافظه‌ای لازمه تا سیستم عامل اون میزان رو پیدا کنه و بهش بگه از اینجا به بعد رو می‌تونی استفاده کنی.

توی عکس بالا توی بخش heap خونه‌های قرمز بخش‌های از حافظه‌ هست که برای کارهای دیگه اختصاص داده شده و ما نمی‌تونیم دسترسی بگیریم؛ همین بررسی اینکه کجا رو به ما اختصاص بده باعث میشه سرعت این حافظه کندتر باشه.
پاک کردن داده از Heap هم توسط ownership, borrowing توی Rust مدیریت میشه که بعدا راجبش صحبت می‌کنیم.

توی پست بعدی راجب نمونه کد و جزئیاتش توی تصویر بالا صحبت خواهیم کرد.

پینوشت:
من سعی کردم خیلی ساده توضیح بدم تا کلیات و تفاوت‌های اصلی رو همه متوجه بشوند و از بحث راجب نحوه دقیق عملکرد در اینجا خودداری کردم (باشه برای آینده)
‏این آقای Dijkstra یه جمله‌ای داره که میگه علم کامپیوتر همانقدر در مورد کامپیوتر هاست که نجوم در مورد تلسکوپ هاست
خیلی جمله پر مغزیه

@DevTwitter | <وحید باقی/>
‏بک‌اند؟ چهار تا کد کپی پیست میکنی.
فرانت‌اند؟ چهار خط تو paint نقاشی میکنی.
سیس ادمین؟ چهار تا سیم به هم وصل میکنی.
مارکتینگ؟ ۴ تا استوری اینستاگرام میذاری.
پروداکت منیجر؟ چهار تا داک Word میسازی دیگه.
دیتا؟ ۴تا مدل لرن میکنی دیگه.‏
پزشک؟ ۴ تا پنی سیلین و دگزا میدی.
مهندسی شیمی؟ یه شیشه درست کردن این حرفا داره؟
مهندس هوافضا؟ خواهر زاده فلانی هم بلده با کاغذ هواپیما درست کنه.
معماری؟ ۴ تا مدل سه بعدی میذاری کنار هم.

@DevTwitter | <The Big Rad/>
Forwarded from a pessimistic researcher
On the cruelty of really teaching computing science

By Edsger Wybe Dijkstra

https://www.cs.utexas.edu/~EWD/ewd10xx/EWD1036.PDF

این مقاله با دست خط مرحوم دانشمند فقید دایکسترا نوشته شده
Forwarded from a pessimistic researcher
فراز هایی از سخنان Knuth درباره Dijkstra

I suspect that the first two people in history whose brains were perfectly adapted for computer science were Alan Turing (1912–1954) and Edsger Dijkstra (1930–2002). Thus it was a great privilege for me to have had many encounters with Edsger, beginning in the early 1960s.

متن کامل این صحبت ها را می توانید در فایل زیر بخوانید
Forwarded from a pessimistic researcher (Kc)
آقای دایکسترا سال ۱۹۶۵ با همین مقاله یک صفحه ای در مجله communicatios of the ACM میاد برای اولین بار مسئله ای به نام Mutual Exclusion رو در دنیای علم کامپیوتر مطرح میکنه.
بدون حتی یک ارجاع به مقاله ای دیگه. همین یک صفحه که دارید میبیند باعث شکل گیری یک دنیای جدید در علم تئوری همروندی شد و هنوز که هنوز دارن روش کار میکنن
حتی سال ۲۰۲۰ جایزه Dijkstra Prize رو به یک مقاله ای دادن که موضوعش Mutual Exclusion بود و توی کنفرانس PODC چاپ شد
Forwarded from a pessimistic researcher (Kc)
حالا الان میرم پایین هوا بخورم
اومدم بالا براتون یه کتاب میذارم کیف کنید
Forwarded from a pessimistic researcher (Kc)
انتشارات Springer سال ۲۰۰۱ اومد یه حرکت قشنگی زد و اینکه مقالاتی که تو حوزه نرم افزار خیلی کلیدی بودند و به نوعی هر کدومشون در یک دنیای جدید رو به رومون باز کردند و جمع کرد و با یک کیفیت خوب چاپ کرد. چون اکثر این مقالات مال سال هزار و نهصد و بوق هستند و ورژن با کیفیتی ندارند.
اگر بخوام به بعضی از مقالات مهمش اشاره کنم میتونم اینا رو اسم ببرم:

مقاله‌ی آقای Codd که بحث دیتابیس Relational رو مطرح کرد. مقاله آقای Fred Brooks که بحث ساختار یکی از مهم ترین OS های دنیا یعنی OS/360 رو مطرح کرد. دو تا مقاله از Dijkstra که یکیش همینی بود که تو پست بالایی گفتم و اون یکیش یه مقاله است در مورد اینکه دستور goto چقدر بولشت عه و نباید ازش استفاده کرد :)))
مقاله آقای Hoare که بحث Hoare Logic رو مطرح کرد. مقاله آقای Wirth که یکی از مهم ترین زبان های برنامه نویسی یعنی Pascal رو مطرح کرد.

همه اینایی که اسم بردم جایزه Turing هم بردند.

حتی مقاله آقای Gamma که بحث Design Pattern رو مطرح کرد هم هست.
Forwarded from a pessimistic researcher (Kc)
یادمه یه بار توی یه مصاحبه‌ای knuth گفت به نظرم از ابتدی تاریخ کلا دو نفر بودند که مغزشون برای کامپیوتری فکر کردن ساخته شده، یکی Turing و دیگری Dijkstra

ببینید دایکسترا وقتی میخواد یک مسئله رو توضیح بده چقدر با مخاطبش کشمش میکنه و سعی میکنه مقاله اش ذهن مخاطب رو باز کنه تا اینکه صرفا بخواد یه مقاله ای بنویسه و بگه من چقدر خفنم. و میدونه که مطلبی که میخواد در ادامه بگه برای مخاطبی که ذهنش خالیه ثقیله و برمیگرده میگه

We beg the challenged reader to stop here for a while and have a try himself
Forwarded from a pessimistic researcher (Kc)
به باور صاحب نظران اولین بار این مسئله را Dijkstra در سال ۶۵ مطرح کرد، اما اینکه در کجا اولین بار مطرح شد اختلاف است.

عده‌ای معتقدند که این مسئله برای اولین بار در مقاله‌ای که ایشان در سال ۶۵ با عنوان “Solution of a problem in concurrent programming control” در مجله‌ی Communications of the ACM چاپ کردند مطرح شد.

عده‌ای دیگر معتقدند که این مسئله اولین بار به عنوان یک تمرین کلاسی در سال ۶۵ توسط دایکسترا به دانشجویان کلاسش داده شد. مسئله‌ای که بعدها غولی دیگر به نام Tony hoare آن را مسئله‌ی Dinning Philosophers نامید. این مسئله در نوت‌های دایکسترا با شماره‌ی EWD123 آمده است.
نصفه ارسال شد؛ آپدیت میشه پست قبل