نوشته‌های ترمینالی
2.63K subscribers
424 photos
12 videos
32 files
2.25K links
Download Telegram
نمونه استفاده، مثلا من اینجا از ۲۱۱ گیگ پارتیشن اصلیم، ۱۷ درصد معادل ۳۳ گیگ رو پر کردم.
https://itsfoss.com/aur-arch-linux/
این aur جزو چیز های دوست داشتنیِ آرچه، ولی نمیشه پیشنهادش داد به کسی چون با ریسک خودتونه همه چی.
به هر حال من دوستش دارم و زیاد ازش استفاده می‌کنم.
شاید شنیده باشید که توی لینوکس همه چی فایله، می‌خوام یه مقدار بازش کنم و به یه سری سوالامون جواب داده بشه.

توی لینوکس همه‌چیز فایله یا به صورت دقیق‌تر همه‌چیز رابطی به شکل فایل دارد. این همه‌چیز یعنی چی دقیقا؟ منظور دیسوایس‌های متصل به سیستم مثل موس و کیبورد، تنظیمات انجام شده روی سیستم و ...
چه فایده یا اهمیتی داره؟ فایده‌ش اینه که اگر بخوایم با یک دیوایس کار کنیم با همون دستورات کار با فایل و خوندن و نوشتن فایلی که بلدیم می‌تونیم کار کنیم و لازم نیست کار متفاوت و عجیبی کنیم. مثال معروفش اینه که برای اینکه اطلاعات پردازنده رو دربیاریم، یه فایل برای اینکار داریم به نام
/proc/cpuinfo
و اگر محتویاتش رو بخونیم، اطلاعات پردازنده رو درمی‌آریم.
همچنین برای مموری، به
/proc/meminfo
دسترسی داریم.

این فایل‌ها توی چند تا پوشه هستند مثلا دیوایس‌ها توی پوشه dev/ هستند، اطلاعات کرنل و داستان‌های زمان اجرا مثلا پروسس‌های باز توی proc و sys هستند.

آیا هاردها هم خودشون فایل هستن؟
بله! توی پوشه dev یه سری فایل مربوط به دیسک‌ها و پارتیشن ها داریم که مثلا
/dev/sda
میشه هارد اول
و مثلا
/dev/sda1
میشه اولین پارتیشن روی هارد اول

آیا فایل‌ها روی سیستم جا گرفتن؟
فایل های معمولی که روی سیستم جا گرفتن مثلا فایل های پوشه هوم کاربر و فایل های binary اجرایی و غیره ولی فایل های خاص مثل پوشه /dev و /proc و /sys اصولا روی هارد نیستن و زمانی که به محتواشون نیاز باشه کرنل اون رو هندل می‌کنه. (البته در مورد dev یه چیزایی هم گویا روی هارد نوشته می‌شه ولی ایده اصلی همونه که گفتم)

آیا کار با این فایل‌ها سربار IO داره؟
بیایید برای جواب دقیق‌تر به این سوال روند کار رو ببینیم، فرض کنیم یه برنامه سی داریم که می‌خواد از پوشه proc، فایل cpuinfo رو بخونه. برای این خوندن باید به کرنل درخواست بده، تا اینجا مشابه خوندن فایل از روی دیسک هست. اما کرنل می‌بینه که فایلی که خواستیم یه پارتیشن mount شده از روی دیسک نیست، بلکه یه فایل از نوع proc هست، پس میاد اطلاعاتی که لازم داره رو می‌سازه و به عنوان محتویات فایل نشون می‌ده. پس سربار از نظر صدا کردن توابع کرنل داره ولی سربار خوندن دیسک رو نداره.

در این بین یه سری دیوایس خاص هم وجود دارند که این دیوایس‌ها وجود خارجی ندارند.
مثلا dev/zero/ یه فایله که هرمقدار ازش بخونید بهتون 0 بر می‌گردونه. لازم به ذکره که نمی‌تونید همه‌ی فایل رو بخونید چون تموم نمی‌شه فقط می‌تونید بر اساس نیاز با یه ابزاری (مثلا head) خط های اولش رو (به اون اندازه که نیاز دارید) بخونید.

۲ تا فایل هم برای تولید random داریم که dev/random/ و dev/urandom/ هستند که فرقشون اینه که اگر عدد رندومی وجود نداشته باشه random همچنان عدد شبه رندوم می ده ولی urandom به صورت blocking صبر می‌کنه تا عدد رندوم تولید بشه. (در مورد تولید عدد رندوم و آنتروپی می‌تونید بخونید.)


اما فایل محبوبم:
/dev/null
این فایل چیزی خروجی نمی‌ده در عوض شما می‌تونید چیز‌هایی که لازم ندارید رو داخل این فایل بریزید مثلا می‌تونید خروجی دستوری که رو که نمی‌خواید نمایش داده بشه با دستور
ls > /dev/null
بریزید دور.
(برای اینکه stderr هم بریزید دستور
ls > /dev/null 2>&1
رو بزنید)


منابع:
https://unix.stackexchange.com/questions/119648/redirecting-to-dev-null
https://unix.stackexchange.com/questions/324209/when-to-use-dev-random-vs-dev-urandom
https://unix.stackexchange.com/questions/188886/what-is-in-dev-proc-and-sys
https://en.wikipedia.org/wiki/Everything_is_a_file
👍1
همینقدر ساده
سرعت دانلود منفی هم ببینید :)‌
Either write something worth reading or do something worth writing.
    - Benjamin Franklin
یه سایته که خیلی منطقی در مورد این مشکل اعداد ممیز شناور توضیح داده :))
https://0.30000000000000004.com/
خب این مطلبم منتشر شد:)))

https://javacup.ir/dont-use-float/
زبان C خوبی‌های مختلفی داره، ولی به نظر من کار با رشته‌ٔ آسان جزوشان نیست!
اگر بخواهیم رشته در C ورودی بگیریم چه راه‌هایی وجود دارد و کدام توصیه می‌شود؟
https://vrgl.ir/ejdUl
معرفی مختصر مفید elm
https://guide.elm-lang.org/

منم اضافه کنم که باهاش فرانت میزنن و به js کامپایل میشه و فانکشناله و زیباست.
چرا -Werror دوست شما نیست؟
https://embeddedartistry.com/blog/2017/05/22/werror-is-not-your-friend/

اشاره می‌کنه که درسته که عادت خیلی خوبیه که warning ها رو نادیده نگیریم ولی اینکه توی buildمون این رو داشته باشیم باعث میشه با تغییر نسخه کامپایلر از یه سیستم به سیستم دیگه یا با اپدیت کردن سرور، دیگه برنامه کامپایل نشه که مسخره به نظر می‌رسه.