چطور در کامندلاین لینوکس حرفه ای باشیم یا «لینوکس را درک کنیم»

سلام

من یه مدته که وبلاگ شما سر میزنم و بخش محبوبم تو وبلاگ شما «چرا گنولینوکس رو دوست دارمه».

حالا یه سوال برام پیش اومده:

«چطور اینقدر خوب با ترمینال کار میکنید؟»

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

استفاده روزمره از لینوکس مثل استفاده روزمره از ویندوز است و فرق چندانی نداره. یک فرمون به اسم ماوس دارین و یکسری منو و‌ آیکون که باهاش فایرفاکس و تاندربرد و چت و اینها رو اجرا می کنن و کار می کنین. ولی فرق لینوکس و ویندوز اینه که توی لینوکس هر وقت بخواین (یا وقتی مجبور بشین!) می تونین کاپوت رو بزنین بالا و برین سراغ موتور ماشین.

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

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

در لینوکس هم همینه. اگر شروع کنین به حفظ کردن تک تک دستورات و سوییچ ها و اینکه چطوری کار می کنن سریعا ذهنتون درگیر می شه با کلی چیز مهمل که توی هر کتاب و راهنمایی می شه پیداش کرد. کاری که برای حرفه ای شدن توی ترمینال باید کرد، درک سیستم است. من سعی می کنم توی بخش های زیر، مفهوم کلی سیستم عامل گنو/لینوکس رو توضیح بدهم. فراموش نکنین که گنو/لینوکس یک فلسفه هم هست و درست مثل ذن، روشن-شدگی توش باعث حرفه ای شدن ناگهانی آدم ها می شه. شاید کسی سال ها کار کنه و به روشنی نرسه و شاید کسی فقط با خوندن همین جمله که «گنو/لینوکس یک دید به دنیا است» درست مثل راهب بودایی که با تمرکز روی «صدای یک دست» یکهو به روشن شدگی می رسه، گنو/لینوکس رو درک کنه.

کوچک زیباست – اجزای تک منظوره ولی بسیار قوی

ضرب المثلی در دنیای برنامه نویسی هست که می گه «اگر می خواین یک تقویم بنویسین، لازم نیست براش ماشین حساب هم بنویسین». هر برنامه خوب دقیقا یک کار رو باید انجام بده ولی با قدرت و دقت. این درک بسیار مهمی از دنیای گنو/لینوکسه. گنو/لینوکس مثل یک جعبه ابزاره: پیچ گوشتی، گازانبر، فازمتر، چسب، متر، … توش هیچ وقت یک دستگاه مخصوص پیدا نمی کنین که فقط طراحی شده باشه برای «بیرون آوردن میخ از دیوار و بعد صاف کردنش و بعد زدن کمی رنگ به جای سوراخ» بلکه یک ابزار دارین برای بیرون آوردن میخ از دیوار و یک چکش که باید با یک سطح صاف ازش ابزاری برای میخ صاف کردن ابداع کنین و در نهایت یک قلم مو برای زدن کمی رنگ به جای میخ روی دیوار.

آماتورها اول کمی غمگین می شن از اینکه یک ابزار به اسم میخ-از-دیوار-دربیار-صافش-کن-جاش-رو-رنگ-کن ندارن و بعضی ها پز می دن که سیستم عاملشون چنین چیزی داره ولی قدرت لینوکس وقتی معلوم می شه که یکهو به جای میخ با یک پیچ توی دیوار طرف بشین. یک گنو/لینوکسی درک می کنه که اینبار به جای میخ-کش، کافیه پیچ گوشتی رو برداره و بقیه مراحل رو تکرار کنه در حالی که کسی که تا حالا از میخ-از-دیوار-دربیار-صافش-کن-جاش-رو-رنگ-کن استفاده می کرده باید خونه رو از اول نصب کنه تا دیگه روی دیوارش یک پیچ اضافی نباشه.

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

قابلیت وصل شدن اجزا به همدیگه

در بخش قبل گفتم که در گنو لینوکس ابزارهای مختلفی دارین که هر کدوم یک کار مستقل می کنن. این ابزارها ورودی و خروجی های استاندارد رو می گیرن. اگر هیچ چیز بهشون ندین احتمالا ورودی شون کیبورد خواهد بود و اگر هیچ چیز بهشون نگین، احتمالا خروجی شون نمایشگر کامپیوتر. اما گذاشتن یک علامت پایپ ساده ( | ) باعث می شه شما ورودی خروجی ها رو به هم لوله کشی کنین! مثلا wc تعداد کلمات یک متن رو می شمره. ls هم فایل های موجود رو نشون می ده. پس اگر من خروجی اولی رو لوله کشی کن به دومی و چنین چیزی بنویسم:

ls | wc

سیستم تعداد کلمات موجود در دستور اول (یعنی فایل های دایرکتوری جاری رو) نشونم خواهد داد. با اینکار شما می تونین تمام ابزارهای ریزی که داشتین رو یکی یکی به همدیگه وصل کنین. در مثال قبل شما با وصل کردن میخ-کش، چکش (کار روی سطح صاف)، قلم مو در اصل با کلی ابزار ریز یک ابزار ترکیبی ساختین که هر کدوم ورودی اش رو از خروجی قبلی می گیره. این یکی از برگ برنده های بسیار بزرگ لینوکسه.

همه چیز یا فایله یا پروسس

برای روشن-شدگی اینهم بسیار مهمه که در لینوکس برنامه ها همه بر اساس یک فلسفه نوشته شدن. رابط کاربری بر اساس یک فلسفه ایجاد شده و کلیت سیستم به یک شکل کار می کنه. مطلقا هر برنامه خوب لینوکس یکسری فایل تنظیم داره (که احتمالا توی etc/ و دایرکتوری ای به اسم همون برنامه است). تنظیمات همه از همونجا اعمال می شن و اگر می خواین چیزی رو تغییر بدین یا با یک برنامه بزرگتر (مثلا وب سرور) کاری رو بکنین که اصلا نمی دونین ممکنه یا نه، کافیه به دایرکتوری فایل های تنظیمات برین و فایل های تنظیمات و محتویاتشون رو چک کنین. معمولا اونجا راهنمایی های کافی پیدا می شن. این کاملا فرق داره با حالتی که برای تنظیم هر برنامه مجبور باشین توی منوها بچرخین و در بخش تنظیمات تب ها رو نگاه کنین. اکثرا برنامه های گرافیکی این رو هم دارن ولی در نهایت چیزی که مشخص می کنه برنامه چطور کار کنه ، اون فایل متنی تنظیمات است. در دنیای گنو/لینوکس هیچ چیز از چشم شما بیرون نیست و معمولا فایل تنظیمات حاوی هر چیز ممکن یک برنامه است.

ساختار فایل ها رو بشناسین

فایل های لینوکس به شکل اتفاقی توی دایرکتوری ها پخش نشدن (: یک نظم کاملا منطقی طبق یک استاندارد رعایت شده و این باعث می شه شما در مواجهه با ناشناخته ترین سوال هم یک سرنخ برای شروع داشته باشین. به این جدول نگاه کنید:

حالا فرض کنید به من بگن که لازمه تغییراتی توی سرویس privoxy بدم و مثلا بهش بگم که به جای 8123 از این به بعد روی پورت 8111 گوش بده. چه می کنم؟ جدول بالا می گه همه تنظیمات توی etc هستن. پس می رم اونجا. اوجنا یک دایرکتوری پیدا می کنم به اسم privoxy و اون تو یک فایل هست به اسم config! چی از این منطقی تر؟ توش رو نگاه می کنم و خط به خطش توضیح داره. یک جا هم نوشته:

تنظیمات پریوکسی

پس کافیه این خط رو ادیت کنم و عدد جدید رو بنویسم و بعد سرویس پرویوکسی رو حتی اگر ندونم چیه، مثل هر سرویس دیگه ری استارت کنم تا تنظیمات جدیدش رو بخونه:

/etc/init.d/privoxy restart

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

توانایی خوندن راهنماها

یکی دیگه از قدرت های لینوکس راهنماهای بسیار دقیقش هستن. گنو/لینوکس یک سیستم عامل آزاده یعنی اگر حوصله اش رو داشته باشین می تونین حتی کد منبع برنامه ها رو هم بخونین تا به اندازه برنامه نویسش بدونین که چیکار میکنه. ما که حوصله اینکارها رو نداریم پس بهترین چیز برامون manها است. هر دستوری یک man داره. می تونم بزنم :

man privoxy

تا یک توضیح کامل در مورد این دستور / سرویس / موضوع بهم داده بشه. اول در یک پارگراف در این مورد که این دستور دقیقا چیکار می کنه و بعد کلی جزییات در مورد شیوه استفاده و در آخر هم اینکه کی اینو نوشته و بعدش هم حرف هایی مثل اینکه چه فایل های تنظیماتی برای این دستور هست و غیره.

این بهترین و کاملتر مرجع گنو/لینوکسه. اگر بتونین man فایل ها رو بخونین یعنی تقریبا هر کاری در گنو/لینوکس هست رو با حوصله و وقت می تونین انجام بدین. نباید ازش بترسین و باید شجاع باشین. پیشنهاد می کنم برای شروع به من فایل دستور ساده ای مثل wc نگاه کنین و با حوصله اونو بخونین تا بفهمین کجاش چی می گه و در دفعات بعدی راحت باشین.

در ضمن اینترنت، فروم ها، آی آر سی و غیره هم هستن. همینطور کتاب و هر چیز دیگه. ولی یادتون باشه که شما قراره «چگونگی پیدا کردن جواب» رو یاد بگیرن و نه اینکه برین به سراغ حفظ کردن همه جواب ها!

مثلا در مثال قبلی اگر من بخوام به جای تعداد کلمات فقط تعداد خط ها رو ببینم، می دونم که دستوری دارم به اسم wc که احتمالا اینو داره پس باید بتونم man wc رو نگاه کنم و کشف کنم که چه سوییچی فقط تعداد خط ها رو بهم نشون می ده.

همه کار قبلا انجام شده

این هم بسیار مهمه! اگر شما دارین کاری می کنین که هیچ کس دیگه توی دنیا نکرده احتمالا باید مشغول کار خیلی خیلی خفنی باشین. قبلا آدم ها دستورها رو به هم چسبوندن، فاصله رو از یک متن حذف کردن، عکس ها رو کنار هم چیدن، با چند تا عکس یک تصویر متحرک ساختن، تعداد تکرار یک عبارت در یک جمله رو شمردن و … اگر هیچ ایده ای ندارین که کاری رو باید چطور انجام بدین، سرچ کنین. به راحتی کشف می شه. گنو/لینوکسی ها زیاد می نویسن.. در اصل جامعه با جامعه معنی داره. مشکلاتی که خودتون حل کردین رو هم یک جایی توی اینترنت بنویسین. کپی پیست نکنین چون هیچ ارزشی نداره و حتی اگر مدتی ده بیست نفر رو گول بزنه که حرفه ای هستین، در طولانی مدت باعث می شه خودتون هیچ چیز یاد نگیرین اما شدیدا توصیه می کنم یک جایی توی اینترنت کشفیات شخصی خودتون رو بنویسین تا به درد بقیه ای که سرچ می کنن هم بخوره.

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

از انگلیسی نترسین

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

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

  • Wahid

    مطلب فوق العاده ای هست خسته نباشی.
    فقط «به این جدول نگاه کنید:» جدول جا افتاده!

    • جادی

      اوه بله متاسفانه جا افتاده بود. الان اضافه کردم. کلا این مطلب آماده انتشار نبود ولی دیدم حالاکه رادیو نیست بزنم بره (:

  • با اینکه با گنو/لینوکس کار نکردم ولی بخش محبوب منم “چرا گنولینوکس رو دوست دارمه” هست , مخصوصا ویندوز لینوکس نیست قسمت سومش رو
    آقا آرزو دارم همیشه موفق و سلامت باشی

    • جادی

      لطف داری و ممنونم (:

  • جادی جان دستت درد نکنه و خسته نباشی.
    این مطلب رو برای یک دوست طرفدار ویندوز میفرستم. باشد که به راه راست هدایت شود… :)

    • جادی

      سایت من عالیه طراحی اش (: ساده و مرتب (: مشکلش چیه؟

  • soos

    یکی از ارزوهام اینه که بتونم خودم مشکلاتم رو تو لینوکس حل کنم

  • مبین

    اگه ممکنه در مورد ریکامپایل و بیلدِ دوباره هم یه پست بنویس مهندس

  • امید

    مطلب جالبی بود مخصوصا مقایسه گنو/لینوکس با مکتب ذن و بودا کلی حال کردم با این روشن شدگی:)
    مرسی

  • Masiha

    ممنون، خیلی خوب نوشتی
    لطفا مطالب آموزشی درباره لینوکس رو ادامه بده

  • محمد

    برای اینکه از لینوکس سر در بیاریم لازمه زبانهای مثل سی رو یاد بگیریم؟

    • Wahid

      اگه می خوای توی سورس کد ها دست ببری باید به زبانی که برنامه باهاش نوشته شده آشنایی داشته باشی.
      خوب بیشتر برنامه های با C و C++ نوشته می شن ولی perl و python هم طرفدارای خیلی زیادی داره.
      ولی جواب خلاصه میشه «نه!»
      کلاً بستگی به عمقی کاری که می خوای انجام بدی داره!

  • محمد

    واقعا عالی بود. دستتون درد نکنه.

  • مرسی جادی جان.

  • fresh

    آقا عالی بود.ایولا….روحیم رو دو چندان کردی!!!!!

  • fresh

    راستی در مورد خوندن man
    چیزی که به ذهنم میرسه اینه که میتونید از وبسایت dik.ir بهره ببرین!خیلی خوبه.تلفظ بیش تر کلمات رو هم داره.و البته بقیه دیکشنری ها!اماکلا!

  • fresh

    آقا جادی به این متن نگاه کن:
    The kernel’s scheduler takes care of dividing processes in time. Your operating system also has to divide them in space

    خوب من اینطور معنی میکنم انگار یه حالیه:

    زمان بند کرنل از تقسیم کردن فرایندها(پردازش ها) در زمان مراقبت میکنه، سیستم عامل شما هم چنین باید اون ها رو در فضا تقسیم کنه(؟).

    ترجمه درستش چجوری میشه؟به نظرت کجای کار من تو ترجمه کردن ایراد داره؟

    • جادی

      خب نکته اول اینکه که یک چیز رو نمی شه بدون دو تا چیز ترجمه کردن:

      ۱- سر و ته
      ۲- فهمیدن

      برای ترجمه یک چیز اول مترجم باید بفهمه طرف داره چی می گه. الان در متن بالا به نظر من درست متوجه منظور طرف نشدی و فقط سعی کردی با گذاشتن لغت های «هم معنی» خلاص شی از جریان (: در ضمن سر و ته جریان هم گم شده و مثلا من نمی دونم اصلا این درباره چیه و space باید کجا معنی بده. در ضمن جمله هم کامل نیست.

      معنی این عبارت اینه که احتمالا سیستم عامل باید دارای یک زمانبند کرنل باشه که بتونه پروسس های مختلف رو در زمان های مختلف تقسیم کنه. یا به عبارت دیگه وقت سی پی یو رو بین فرایندهای مختلف تقسیم / تسهیم کنه و در عین حال اونها رو باید در فضاهای مختلفی [از حافظه] هم قرار بده تا اطلاعاتشون روی همدیگه نیافته. اگر معنی این باشه می تونیم این رو ترجمه کنیم:

      «واحد زمان‌بندی کرنل مسوولیت تقسیم پروسه‌ها در زمان را بر عهده دارد. سیستم عامل شما همچنین باید پروسه‌ها را در فضاهای مختلفی هم اجرا کند [تا روی هم نیافتند]. »

  • علی بهجتی

    بعضی از فایل های کانفیگ هم در اینجاست :
    /usr/lib/etc

  • Sharez

    این هم سایت جالبیه! انجام کارها با ترمینال و فقط یک خط Bash! :))
    خیلی با نمک و آموزنده است.

    http://www.bashoneliners.com

  • Mahdi

    سلام
    لینک صفحه دوم سایت درست کار نمی‌کنه. http://jadi.net/page/2
    لطفاً مشکل رو برطرف کن.

    • جادی

      عجب عجب این دیگه چطوری خراب شده؟ (: سعی می کنم درستش کنم. امروز که عینک نیاوردم. امیدوارم فردا

      • مصطفی محمدی

        جادی ازت خواهش می کنم، یعنی این تن، در حالی که منتظره با اینترنت ذغالی ایران صفحه گوگل رو بالا بیاره، بمیره!
        بیا و یه دست به سر روی این وب سایت ات بکش، والا وب سایت استالمن هم از وبسایت تو بهتره. این چه رسمیه که کوزه گر باید از تو جوب آب، آب بخوره؟ D:

  • fresh

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

  • fresh

    ابتدا معذرت میخوام بخاطر کامنت های پشت سر هم.
    جادی به نظرت برا فهم متن ها بهتره ترجمشون رو روی یه کاغذ برا خودم بنویسم یا خودم رو عادت بدم در هنگام خوندن بفهمم؟

  • fresh

    بازم سویالی دیگر با عرض معذرت
    On modern machines, each of the 128 ASCII characters is the low seven bits of an octet or 8-bit byte; octets are packed into memory words so that (for example) a six-character string only takes up two memory words

    خوب سیوال اینه :چرا یک کلمه که 6 تا کاراکتر داره فقط دو تا memory word میگیره.اصلا من نفهمیدم منظورش از memory word چی هست؟اگر منظورش بایته که کلا 6 تا کاراکتر 6 تا بایت میخوان.اگر منطورش 32 بیت و 64 بییت هست میشه گفت چون اینا 48 بیت جا میخوان اگر کامپیوترم 32 بیتی باشه 2 تا مموری ورد میخواد.اما بازم فکر نکنم منظورش این باشه!نه؟

  • +1 به پستی که نوشتی.
    یه ایراد جزیی تو جدولی پارتیشن ها بود، که البته غلط بسیار مصطلحی هم هست. پارتیشن usr/ یا Unix System Resources در کل محل قرار گرفتن فایل های اجرایی، libraryهای مشترک و .. در کل یه سری فایل های غیر سیستم عاملیه. و اصولا *یوزر* تلفظ کردنش غلطه و بلکه باید *یو اس آر* خونده بشه. البته این غلط از زمانی مونده که قبلترها از این پارتیشن برای قراردادن home/ یوزرها استفاده می کردن.
    http://en.wikipedia.org/wiki/Unix_directory_structure

  • احسان

    سلام و درود خدمت جادی عزیز

    جادی جان، دغدغه آزادی را به جان ما انداختی و الان این دغدغه مایه مشکل شده! دستمان به دامنت که این مشکل را حل کنی! D:

    آیا تبلت آزاد موجود در بازار داریم؟
    وضعیت ipad که مشخص است و نیاز به بحث ندارد. تبلتهای androidی هم مثل گلسی تب و آرکاس هم که تنها چیزی که براشون مهم نیست، همین آزادی کاربر و احترام به فلسفه گنو هست.

    حالا چه کنیم؟

    از وقتی که میگذاری واقعا تشکر میکنم :-)

  • خیلی عالی بود این مطلب! به هرکی خواستم کامند لاین یاد بدم، نتونستم این فلسفه رو تو ذهن‌اش جا بندازم! هیچ وقت هم مطلب خوبی نمی‌شناختم که معرفی کنم بره بخونه خودش.

    از این به بعد یه لینک فوق‌العاده دارم که این آدم‌ها رو ارجاع بدم بهش! (:

  • محمد

    نظرتون در مورد این حرف چیه:
    اگر شما ردهت را فرابگیرید، ردهت را آموخته‌اید و اگر شما اسلکور را فرابگیرید لینوکس را آموخته اید

    • جادی

      خب این جمله تبلیغاتی اسکلور است. درست هم نیست. کسی با کار کردن با یک دیسترو لینوکس یاد نمی گیره. در ضمن «لینوکس» فقط هسته است دیگه (: اما بله. کار کردن با اسکلور دید بهتری از جریانات زیر سیستم عامل می ده تا کار کردن با ردهت. ولی واقعیت اینه که در دنیای واقعی کار کردن (مثلا روی یک سرور وب) رو بهتر می شه با کار کردن با ردهت یا دبیان مقایسه کرد تا کار کردن توی اسلکور. اسلکور جزو معدود توزیع هایی است که من هیچ وقت تست نکردم‌(:

      به هرحال کار کردن با هر چیزی خوبه (: اسلکور هم شکی نیست که از همه قدیمی تره، از تقریبا همه بیشتر تلاش می کنه به فلسفه های یونیکسی پایبند بمونه و پایداری و اینها براش مهمه (:

  • Saeed Jvd

    ﺟﺎﺩﯼ ﺟﺎﻥ ﺍﮔﺮ ﺧﻮﺍﺳﺘﯽ ﺩﺭ ﻣﻮﺭﺩ ﺍﻳﻦ ﻣﻄﻠﺐ ﺗﻮ ﺭﺍﺩﻳﻮ ﮔﻴﮏ ﺑﻌﺪﯼ ﺻﺤﺒﺖ ﮐﻦ::
    http://gsm.ir/news/showNews.action;jsessionid=E95D927E1D576D03E1EE106429764999.B?_id=20306

  • موبد

    @fresh:
    «زمان بند کرنل تقسیم زمان برای پردازش ها رو به عهده می گیره، سیستم عامل شما باید تقسیم فضا رو به عهده بگیره.»

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

    البته ببخشید من خودمو قاطی کردما

  • بیخیال

    جادی این رو بخون..من به عنوان یه ایرانی بعد خوندنش میخواستم گریه کنم:
    http://www.nytimes.com/2012/06/21/opinion/21kristof-persian.html?_r=1

  • fresh

    آقا موبد اگر از چیزی که ترجمه میکنم سر در میاوردم که نمیخوندمش..در موردانگلیسی باید بگم دامنه لغاتم زیاد بالا نیست اما اصولا مشکلی ندارم.

  • fresh

    دوستان من یه سیوال دیگه برام پیش اومده که میخواستم بپرسم.متشکر میشک اگر جواب بدین:

    من داشتم در مورد tcp/ ip میخوندم و متوجه شدم که tcp یه قرارداد برای ارتباط بین برنامه های کامپیوتری توی شبکه هستش.یعنی یه پروتکل برای ارتباط بین برنامه های کامپیوتری…

    گفته شده که tcp باعث اشغال شدن یه خط کامپیوتری میشه.tcp اطلاعات رو به پاکت های آی پی قسمت و بعد در طرف دیگر اون ها رو به هم متصل میکنه)اولین سیوال:اصلا این تی سی پی مگه برنامه هست که این کار ها رو میکنه؟یا استاندارده که برنامه ها با توجه به اون این کارارو میکنن؟)

    خوب و گفته میشه آی پی خط ارتباطی رو اشغال نمیکنه و پاکت های آی پی رو راهنمایی میکنه تا به مقصد برسن.

    خوب بالاخره با ارتباط tcp/ip خط ارتباطی اشغال میشه؟

    • $

      tcp/ip یه استاندارد هست.

      مثل استاندارد فرضا نامه نگاری بین سازمان ها (این یه مثال هست که متوجه مطلب بشی)
      (مهم نیست چه سازمانی نامه می فرسته .مهم اینه که نامه رو بر اساس اون استاندارد بفرسته تا برای طرف مقابل (که اونجا هم مهم نیست چه سازمانی نامه رو می گیره) قابل فهم باشه)

      ip دقیقا معادل ادرس خونه هست برای کامپیوتر (این فقط و فقط و فقط یه مثال هست که موضوع برات جا باشه )
      فرضا خونتون یه ادرسی داره ؟؟ خوب . ip هم آدرس کامپیوتر تو توی شبکه هستش .
      (وارد جزئیاتش نمی شم دیگه )

      ببین منظور از اشغال شدن خط رو متوجه نشدم . اگه منظور اشغال شدن خطوط ارتباطی مثل دایل آپ اینا ست که فکر نکنم منظورت این باشه !!

      اگه منظورت این هست که خط ارتباطی بین دو کامپیوتر آشغال می شه . اره درسته .(البته برای چند میلیونم ثانیه )

      اوصولا تو کانکشن های tcp کامپیوتر روی خط بصورت random می نویسه و منتظر تاییدیه می شه .(تاییده یه بسته از طرف مقابل هست که اگه رسید به طرف مقابل کامپیوتر مقصد اون رو برای کامپیوتر مبدا می فرسته که . “بله من بسته رو گرفتم”)

      اگه اطلاعاتی تخریب بشه (هرچند گفتم کل زمانی که اطلاعات نوشته می شه و می رسه چند میلیونم ثانیه نیست )
      یعنی مثلا تو یه شبکه ی داخلی همزمان دو کامپیوتر روی خط بنویسن . اون وقت اطلاعات قابل فهم نیست برای هیچ کامپیوتری .. در اون صورت بسته ی تاییدیه هم برگشت داده نمیشه . دوباره یه مدت صبر میکنمه(چند هزارم ثانیه) دوباره می نویسه اطلاعات رو !!

      تو کانکشن های udp بحث فرق میکنه .اونجا چون تخریب اطلاعات و نرسیدنشون مهم نیست . بسته ی تاییدیه ای برگشت داده نمیشه . و ممکنه بین چند میلیون بسته چند تا بسته به مفصد نرسه !!

      (عذر میخوام یه کم توضیحاتم بهم ریخته بود . امیدوارم بدردت بخوره)

      —————————————-

      جادی من دارم یه مقاله مفصل درمورد اینکه “چگونه برنامه نویس/هکر شدن رو شروع کنیم” می نویسم.
      چون خودم بشدت از شروع اشتباه ضربه خوردم و زمانم به هدر رفته . تجربه های خوبی دارم برای به اشتراک گذاشتم . برات میلش میزنم . نظرت رو بگی درموردش (پس فردا یا روز بعدش دیگه حتما میل زدمش )

    • $

      The kernel’s scheduler takes care of dividing processes in time. Your operating system also has to divide them in space

      داری درمورد os develop تحقیق میکنی ؟؟
      چون این مربوط به فرآیند زمان بند کرنل هست که زمان اجرایی برای هرپروسس رو تنظیم میکنه(بر اساس اولویت و مدیریت منابع و… ).

      On modern machines, each of the 128 ASCII characters is the low seven bits of an octet or 8-bit byte; octets are packed into memory words so that (for example) a six-character string only takes up two memory words

      memory work
      اینجا منظورش
      Word هستش
      هر بایت که یه بایته
      هر word دو بایته
      هر dword چهار بایته
      هر qword هشت بایت هستش

      ولی word یه تعریف اساسی و پایه ای تر هم داره (تعریف بالایی در حالت عموم بود . ولی تعریف کلی نبود):
      the common definition of word is the native operation size of the processor
      یعنی تو یه ماشین 32 بیتی . یه word 32 بیت هستش !!
      تو یه ماشین 64 بیتی یه word ؛ 64 بیت هستش !!

      حالا من متوجه یه چیزی نشدم تو این متنی که نوشتی ولی حالا دوستان راهنمایی خواهند کرد این چیزی که من از متنت فهمیدم:

      نوشته تو ماشین های مدرن برای ذخیره هر کارکتر اسکی 7 بیت جا لازم هست . این 7 بیت ، هفت بیت کم ارزش از یه بایت هست .(اگه این جمله رو متوجه نشدی اینطوری فکر کن که اون هفت بیت رو از طرف راست بر میداره . یعنی اون بیتی که با ست شدنش 128 میاد رو عدد،اون آزاده و بهش نیازی نداره اینجا ).

      a six-character string only takes up two memory words
      این رو من نفهمیدم . یعنی اینکه درست در نمیاد .
      نوشته برای ذخیره 6 کاراکتر . به دو word احتیاج داریم . اگه word به معنای 16 بیت (backward compatible) در نظر بگیرم این درست نیست و جمله اشتباهه .
      مگر اینکه ماشین طرف 24 بیتی بوده . یا ماشینش 32 بیتی بوده و word رو در معنای 32 بیتیش استفاده کرده .

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

      موفق باشی

  • $

    برای نمونه هم مثلا این ساختار 24 بیتی داره :

    http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=DSP56303

  • fresh

    $ بسیار مشتکر .آخر کسی که اینم مقالرو نوشته اریک ایموند هست بعید میبینم اشتباهی کرده باشه!ولی در هر صورت باید مشخص میکرده منظورش از ورد کدوم هست!باز هم متشکر از کمکی که بهم کردین!

  • احمد

    من میخوام یه کامپیوتر جمع کنم به عنوان مدیاسنتر ازش استفاده کنم و مصرف انرژی اون برام خیلی مهمه.
    میشه با لینوکس کاری کرد که مصرف انرژی اون نسبت به ویندوز پایین تر باشه؟ اگه آره تا چه حد پایین تره؟

  • امین

    تو ویندوز یک امکانی هست به نام PowerShell با اون میشه خیلی کارهایی که در خط فرمان لینوکس انجام می دهید رو در ویندوز انجام بدید. مثلا یک قابلیت پایپ که در این مطلب بهش اشاره شد، اینجا هست http://www.techotopia.com/index.php/Windows_PowerShell_1.0_Pipes_and_Redirection

  • mASOUD

    در این مورد Cygwin هم ممکنه براتون جالب باشه. تقریبا توی ویندوز یه محیط سازگار با POSIX براتون فراهم می کنه. کلی از نرم افزار های معروف آزاد هم بهش پورت شدن.

    http://www.cygwin.com
    http://en.wikipedia.org/wiki/Cygwin

  • سلام، جادی بد نیست کمی راجع به ذن و فلسفش بنویسی.. یا حداقل برای پیرو شدن منبع معرفی کنی. ممنون:)

  • Pingback: یک ادمین لینوکس چه مهارت هایی لازم داره یا چطوری در لینوکس حرفه ای بشیم | کیبرد آزاد()

  • سیاوش

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

    • jadijadi

      سلام. اگر منظور دایرکتوری بندی است که در سری های الپیک یک ویدئو در این مورده