بایگانی برچسب: s

راهنمای شروع و پیشرفت و حرفه ای شدن در زبان برنامه نویسی پایتون

سوالی که خیلی زیاد از من پرسید می شه که اینه که «کدوم زبان برنامه نویسی رو یاد بگیرم؟» یا «چجوری زبان فلان رو یاد بگیرم؟» و موارد مشابه. این مطلب تصورش اینه که شما پایتون رو انتخاب کردین و علاقمند هستین توش پیش برین. انتظار قبل از اون دو تا لینک قبلی رو خونده باشین و بدونین که واقعا علاقمند هستین پایتون رو یاد بگیرین و بدونین که‌آدم ها به شیوه‌های مختلفی چیز یاد می گیرن و یک راهنمای کلی برای همه نداریم. اگر با اینها اوکی هستین بیاین یادگیری پایتون رو شروع کنیم.

شروع ایده اصلی

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

در این مرحله اگر از یک زبان برنامه نویسی دیگه میاین و در حال حاضر زبون خودتون رو بلدین، پیشنهاد می کنم به شکل عمومی دنبال python tutorial بگردین و چند تا رو باز کنین و اونی که دوست دارین رو کامل بخونین. اینجوری خیلی زود سینتکس جذاب پایتون رو یاد می گیرین و می تونین برین مرحله بعدی.

نکته: بعضی ها در اولین برخورد با پایتون با یک سورپریز بزرگ روبرو می شن: پایتون از { و } برای مشخص کردن بلوک ها استفاده نمی کنه و به راحتی از اسپیس یا تب برای اینکار کمک میگیره. گفته می شه اولین شروع هر کس که از زبان دیگه اومده به پایتون، با یک فرار همراهه و بار دوم احوالپرسی از پایتون است که عاشق این زبون ساده و کم ادعا می شه (:

پنج نکته برای دوری

جان سونمز پنج نکته رو می گه که باید ازش دوری کنین و یکی از اصلی ترین مراجع این مطلب هم اونو تکرار می کنه و من کی باشم که تکرارشون نکنم؟

  1. کتاب ها رو از اول تا آخر نخونین. در شروع کتاب ها رو از اول تا آخر نخونین. ما بخش کمی از کتاب ها رو یادمون می مونه و فقط کتاب خوندن بخش زیادی از انرژی شما رو می گیره. کتاب مال وقتی است که شما موضوعات رو بلدین و می خواین توش عمیق بشین.
  2. بدون برنامه تو بحث شیرجه نزنین. آدم ها رو به دلایل مختلف جو می گیره. یکهو می خوان خدای چیزی بشن و یک عالمه کتاب دانلود می کنن و شایدم دو تا ادیتور برنامه نویسی و عضو یکسری کانال و فروم و میلینگ لیست می شن و هی چیز می خونن و فیلم می‌بینن. این اشتیاق معمولا به همین سرعت هم فروکش می‌کنه. بدونین برای چی وارد بحث شدین و می خواین به کجا برسین و می خواین باهاش چیکار کنین.
  3. حوزه خودتون رو مشخص کنین. دنیا وسیعه! حتی برنامه نویسی هم خیلی وسیعه و شاید براتون جالب باشه که حتی پایتون هم خیلی وسیعه! بهتره شما بدونین در چه حوزه ای می خواین کار کنین و از اون شروع به یادگیری کنین. اگر می خواین اپ تحت وب درست کنین لازم نیست با numpy شروع کنین و اگر می خواین محاسبات انجام بدین شروع کردن یا اصرار روی scikit اشتباهه. از یک جا شروع کنین و توش پیش برین.
  4. دو (یا بیشتر!) چیز رو همزمان یاد نگیرین. این اشتباه با مورد ۲ شباهت‌هایی داره. آدم ها یکهو می خوان «هکر» بشن و شروع می کنن شبکه و سیستم عامل و برنامه نویسی و انگلیسی و آلمانی و روسی و نقد فیلم و ادبیات کلاسیک رو با هم خوندن و یاد گرفتن. از یک جا شروع کنین و وقتی در حد معقولی پیش رفتین برین سراغ چیز بعدی. این مساله حتی داخل پایتون هم صدق می کنه. اگر دارین جنگو یاد می گیرین نیازی نیست همزمان شروع به خوندن فلسک هم بکنین. یکی رو پیش برین در حد معقول و بعد فرصت برای بعدی هست.
  5. بدون تجربه کردن پیش نرین. بعضی چیزها برای آدم ها لذت بخشه. من از دیدن فیلم بازی شطرنج خیلی خوشم می یاد و در نتیجه شش ماه فیلم دیدم بدون اینکه بازی کنم؛ هیچ پیشرفتی هم نداشتم. حتما حین تئوری با عمل هم برخورد داشته باشین.

شروع عملی پایتون

این مساله ممکنه با بخش اول که عنوانش «شروع اصلی» بود پیش بره. برای اینکار لازمه اول پایتون رو نصب کنین و چند برنامه خیلی خیلی ساده باهاش بنویسین. راه انداختن محیط توسعه یکی از قدم های مهم در یادگرفتن است؛ و اتفاقا گاهی سخت. خودتون رو با محیط کامندلاین و خط فرمان پایتون عادت بدین.

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

در این سطح بازم می تونین چیزهایی مثل «یاد گرفتن پایتون از راه سخت» رو جلوتون بذارین یا مجموعه ای از سوالات پروژه اویلر که براتون جالب و معقوله رو حل کنین. حتما خوبه سری به جامعه پایتون هم بزنین که بسیار مهربونن. مثلا خوندن ذن پایتون بسیار توصیه می شه تا فلسفه پشت پایتون براتون روشن‌تر بشه. یادتون باشه هنوز دستتون داره گرم می شه ولی خیلی زود وقتشه که برنامه نویسی رو برای خودتون واقعی کنین.

یک پروزه عملی بردارین

حالا باید تا حدی بدونین که کجا ایستادین و دنبال چی هستین. اگر دنبال وب هستین یک پروژه عملی برای خودتون تعریف کنین و با چیزی مثل جنگو شروعش کنین. درگیر اسم و اینها نباشین. پروژه رو تعریف و شروع کنین. شاید خیلی زود پاکش کردین! اصلا مهم نیست. مثلا یک سیستم رای گیری آنلاین. یا سیستم حسابداری شخصی. یا دفترچه تلفن دوستاتون. یا فهرست کتاب ها و اینکه چی خوندین و چی قرض دادین یا هر چیز دیگه یا یه سیستم وبلاگ شخصی یا صورت غذاهایی که پختین و روش پختش. شایدم یک برنامه مخصوص تنظیم کردن قرار ملاقات. موضوع خیلی مهم نیست. مهم اینه که خیلی زود چیزهایی که یاد میگیرین به شکل عملی در یک جایی استفاده بشه. اگر با جنگو کار می کنین کتاب Two Scoops of Django توصیه می‌شه. من خودم اخیرا به توصیه خودتون اینو خوندم و خوب بود برام. در این مرحله چیزهایی که یاد می گیرین رو نسبتا عمیق کنین. حوزه شما مشخص شده و باید حرفه ای تر بشین توش. اگر مثلا یادگیری ماشینی رو برداشتین یک مساله واقعی تعریف کنین و سعی کنین قدم به قدم حلش کنین. شاید مثلا تشخیص سگ از گربه قدم اول باشه و تشخیص طبقه بندی یک وبلاگ قدم دوم. شایدم علاقمند به یک اپلیکیشن دسکتاپ باشین. بازم امکانش هست. مهم اینه که حوزه خودتون رو کشف کنین و بدونین که در کدوم خط دارین پیش می رین.

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

حالا عمیق بشین

شما درک از زبان دارین و می تونین باهاش کار کنین درسته؟ حالا وقتشه که حرفه ای بشین و بهتر از هر کس زبان رو درک کنین. حداقل بهتر از ۸۰٪ آدم‌های دیگه. این بخش‌ها مهمترین اجزای داکیومنتهای رسمی پایتون هستن برای خونده شدن توسط کسی که می خواد زبان رو به تسخیر خودش در بیاره: 1, 2, 3, 4, 5, 6.1, 6.2, 26.4 و 27.3.

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

پیشرفت کنین

حالا شما یک برنامه نویس کاملا قابل قبول هستین ولی هنوز می تونین بهتر بشین. مورد ۵ رو یادتون باشه و کارهای عملی دیگه ای رو شروع کنین. به کد بقیه نگاه کنین مثلا پروژه بستون و اونها رو بهتر کنین یا بهشون فیچر اضافه کنین. اینطوری برای خودتون رزومه می سازین. البته به جای اون پروژه می تونین سراغ کارهای آدم های حرفه هم برین، مثلا تمام کارهای دیوید بیزلی یا کدهای کنت ریز (مثلا به tablib نگاه کنین) پروژه های مفید برای عموم رو شروع کنین و پیش ببرین و البته هر جا که گیج می شین شروع کنین به یادداشت کردن چند تا سر فصل اصلی و بعد سرچ و خوندن در موردشون. یادتون باشه که داکیومنت های خود پایتون واقعا فوق العاده هستن. و حالا وقت خوندن کتاب هم شده:

  • کتاب Fluent Python
  • کتاب Effective Python

نکته پایانی

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

منابعی برای نگاه کردن

کتاب‌های مقدماتی برای شروع به مطالعه جامعه شناسی

خیلی از ما با کامپیوتر شروع می کنیم و توی دنیاش غرق می‌شیم. خود من زمانی افتخار می کردم که با کسی در رابطه نیستم، اخبار رو نمی خونم، دنیا برام مهم نیست و فقط دنیای هک و کامپیوترها برام جذابن. این حالت دور از ذهن نیست. خب یک دنیای جدید و بزرگ داریم که توش همه کاره هستیم و پیش می ریم و معلومه که غرق شدن توش لذت بخشه.

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

چرا جامعه شناسی

جامعه شناسی علم خوبی برای خوندن است. اولا تلاشی مستمر برای جواب دادن به سوال های کلی در مورد جهان در عین حال دارای روش‌های علمی تجربی و فلسفه. همچنین جذابیت خاص جامعه شناسی در ایران – حداقل سال ۸۱ که من رفتم سراغش – این بود که در فوق لیسانس از اسلامی شدن نسبتا در امان مونده بود. دو واحد خنده دار با عنوان «جامعه شناسان مسلمان» داشتیم که به کلیت رشته صدمه خاصی نمی‌زد.

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

جامعه شناس چیا می دونه؟

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

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

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

اما برای هر یک از این دو حوزه بهترین کتاب‌ها برای شروع چیا هستن؟

منبع مطالعه حوزه‌های جامعه شناسی

احتمالا اصلی‌ترین کتاب برای مطالعه «حوزه‌های جامعه شناسی» و شاید کتابی که اگر کسی فقط دنبال یک کتاب باشه باید اونو بخونه این کتاب است:

gidenz

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

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

منابع نظریات جامعه شناسی

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

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

برای مطالعه نظریات کلاسیک یکی از بهترین گزینه‌ها این کتاب است:

solasi

زندگی و اندیشه بزرگان جامعه شناسی
نوشته لوییس کوزر
ترجمه محسن ثلاثی

این کتاب از کنت تا مانهایم رو بررسی می‌کنه و بعد از اون فرمون مطالعه رو می‌دین دست این کتاب:

1

نظریه جامعه شناسی در دوران معاصر
نوشته جورج ریتزر
نشر: علمی (1394)

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

ادامه راه

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

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

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

بازم هستین؟! آفرین که جدی گرفتین.. حالا که جدی هستین اینم مهمه: معمولا کسانی که با کلمات عجیب و قلمبه سلمبه حرف می زنین کسانی هستن که … اونجوری نباشین (: در واقع قشنگی/جذابیت/اعجاب حرف شما به عنوان یک جامعه شناس نباید به پیچیدگی ظاهری اش باشه بلکه باید به انسجام خوب درونی و اتصال محکمش به جهان بیرون باشه.

چطوری لینوکس رو شروع کنیم و توش پیش بریم

از سری: راهنمای شروع

auto-startup-linux-644x250

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

آشنایی اولیه

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

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

کمی ور رفتن با لینوکس

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

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

مشارکت در جامعه

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

لینوکس دسکتاپ برای آدم های شاد

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

پروژه های پیشنهادی در این سطح می‌تونن اینها باشن:
– درست کردن یک توزیع شخصی با استفاده از ابزارهای ریمسترینگ مثلا اوبونتو
– تست کردن چند توزیع لینوکس مرسوم و ور رفتن با اونها، مثلا اوبونتو، فدورا، کوبونتو و مینت

مدیریت سیستم مقدماتی

برای یک مدیر سیستم دوره ای وجود داره به اسم الپیک که در سطح اول چیزهای خیلی زیادی از زندگی روزمره یک مدیر سیستم رو به شما نشون می ده. من یک کتاب آزاد هم در این مورد دارم که اینجاست و همچنین یک مجموعه رایگان فیلم که کل دوره امتحان ۱۰۱ و ۱۰۲ رو توضیح می ده. این مجموعه احتمالا می تونه باعث بشه شما به راحتی امتحان الپیک ۱ رو پاس کنین و مدرک مدیریت رو بگیرین. هرچند که گرفتن این مدرک اجباری نیست (: خیلی ها هستن که مسائل رو بلدن بدون اینکه ۳۰۰ دلار پول مدرک پنج ساله رو داده باشن. به هرحال داشتن مدرک بهتر از نداشتنش است ولی فکر نکنین گرفتن مدرک تضمین شغل است یا مشخص کننده حقوق. در نهایت سواد و تلاش شما است که با شانستون همراه می شه و وضعیت شما رو مشخص می کنه.

در این مرحله می‌شه این پیشنهادها رو برای تمرین مطرح کرد:
– نصب و کار جدی با توزیع‌های کمی غیرمرسوم مثل آرچ یا جنتو
– راه اندازی وب سرور روی کامپیوتر شخصی یا به شکل بهتر نصب یک وردپرس روی کامپیوتر لوکال

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

پیش‌تر رفتن از الپیک ۱

در واقع وقتی به اینجا رسیدین تا حد زیادی می تونین راه خودتون رو پیدا کنین. معلومه که یک قدم استاندارد خوندن الپیک ۲ از کتاب های مرجعش است. از نظر من خیلی خوبه که شروع کنین به امتحان کردن چند لینوکس مرسوم (مثل سنت او اس و دبیان و اوبونتو سرور) و یادگیری جدی تر اونها. همچنین مهمه که از اینجا به بعد وارد لایه‌های عمیق تر بشین. همونطور که بالاتر گفتم اگر در این مرحله هر چیزی دیدین که در موردش دقیق نمی دونستین، با فرصت جدیدی برای حرفه ای شدن روبرو هستین. مثلا اگر درمورد exim شنیدین،‌ خیلی خوشحال باشین چون موضوع جدیدی دارین که در موردش سرچ کنین و چیز یاد بگیرین یا اگر جایی دیدین که از globbing حرف زده شاید واقعا چیز جدیدی باشه یا اسم واقعی چیزی که شما همین حالا هم بلدینش – شاید هم نصف و نیمه! در این مرحله باید هی زیر پای خودتون رو محکم کنین و مطمئن بشین چیزی که می دونین رو واقعا می‌دونین.

یک ایده هم انجام پروژه‌هایی مثل اینها است:

  • راه اندازی یک وب سرور خونگی برای خودتون (سطح بعدی:‌بشه از اینترنت هم بهش وصل شد)
  • ساخت سرتیفیکت های ssl
  • درست کردن یک فایل سرور که همه بتونن باهاش فایل جابجا کنن
  • درک کردن کامل selinux
  • نصب پروژه های بزرگ مثل owncloud، docker، دیتابیس‌های جدید مثل مونگو، هدوپ، … و کار کردن با اونها برای آزمایش اینکه چطوری کار می کنن و نصب می شن
  • نصب لینوکس روی دیوایس های غیر پی سی کلاسیک که ساده ترینش چیزهایی مثل رزبری پای ها هستن و پیچیده‌تر ها مثل گوشی‌ها و تبلت‌ها
  • کار با لینوکس های خاص منظوره مثل clearOS

در چنین مرحله ای لازمه شما درک خوبی از شبکه داشته باشین، منطقا باید در حد +Network بلد باشین و اگر می خواین واقعا فرق کنین CCNA خونده باشین.

قدم‌های بعدی

سایت‌های آموزشی زیادی وجود دارن که آموزش های مرتبط مختلفی دارن. می تونین توی جاهایی مثل یوداسیتی و کورسرا دوره‌های فنی مرتبط بگذرونین یا مدهای روز مثل بیگ دیتا رو چک کنین و در مورد Virtualization و جزییات پروتکل‌های مختلف چیزهای متنوع یاد بگیرین.

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


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