جلسه دوم یا بهتره بگم جلسه هفته دوم در دو روز انجام شد، علتش هم این بود که یه عده از بچهها گفتن نمیتونن پنجشنبه بیان، ما هم چون هم تعداد خیلی زیاد نبود هم اوائل کار لاگ هست، گفتیم چه اشکال داره، هم پنجشنبه میریم هم جمعه :) اینجا گزارش هر دو روز رو یکجا مینویسم.
یه توضیح هم بدم راجع به لحن نوشتهها، من سعی میکنم زیاد کلمات ثقیل به کار نبرم و خیلی هم کتابی ننویسم اینجا، چون حس میکنم طولانی میشه و خوندنش هم خسته کننده، بنابراین اگه میبینید از فعل و فاعل درست استفاده نکردم به بزرگی خودتون ببخشید :)
جلسه با رفع مشکل چند تا از دوستان شروع شد، یکی از بچهها دنبال دیکشنری میگشت که بهش GoldenDict پیشنهاد شد، نرمافزاریه که میشه روش از Glossary های Babylon که زمانی توی ایران خیلی محبوب بود استفاده کرد. سوالاتی هم راجع به چگونگی انجام بعضی کارها شد و راهنماییهایی هم شد.
متاسفانه جلسه باز به سمتی رفت که من و خیلیا دوست نداشتیم، اونم بحث کلیشهای ویندوز بهتره یا لینوکس! اوپنسورس بودن خوبه یا بده! که خب هم بحثیه که تکراریه هم حوصله سر بر برای شنوندگان. ولی خب چه میشه کرد. ایشالا از این بحثها کمتر بشه!
اما نکتهای بود تو این موضوع که دوست دارم اینجا هم بنویسم، عدهای از بچهها فکر میکنن موفقیت به پولدار بودن یه شرکتِ درصورتی که باید دید هدف شرکتها چیه! من اگه میخوام گوگل و داکداکگو (موتور جستجوی متنباز جایگزین خوبی برای گوگل) رو مقایسه کنم باید ببینم هدف این ۲ چیه! گوگل از سرچهای من و شما استفاده میکنه، ما رو میشناسه، از این مزیتش استفاده میکنه و تبیلغات میکنه برای دیگران و پول در میاره، خب، حالا آیا ما میتونیم نتیجه بگیریم که اگه موتور جستجویی نتونه به اطلاعات مردم دسترسی داشته باشه که از طریقش پول در بیاره، موتور موفقی نیست؟؟
قطعا نمیتونیم، موتوری مثل داکداکگو هدفش اینه که موتور جستجویی ارائه بده، دقیقا برای اون افرادی که نمیخوان توسط گوگل یا هرجای دیگهای رصد بشن! این موضوع که نمیتونه از این طریق پول در بیاره هیچ تأثیری روی قدرت موتورش و نحوه پیشرفتش نداره، داکداکگو به خاطر متنباز بودن، همون طوری قدرتش زیاد میشه که لینوکس و سایر نمونههای متنباز دیگه قدرتمند شدند، یعنی از طریق جامعه کاربری (Community). من موتور جستجوی مشابه سیآراکس رو هم دوست دارم :)
سوالی که برای دوستان مطرح شد راجع به مخازن نرمافزاری لینوکس، و اینکه چرا همه چیز رو از مخازن دانلود کنیم، چرا مثل ویندوز یک فایل Setup نداریم که به صورت دستی نرمافزار رو نصب کنیم. سوال مشابهی توی جلسه روز جمعه هم پرسیده شد. توضیح مفصلی دادم اینجا هم یکبار دیگه مینویسم ایشالا که خسته نمیشید :)
اول ببینیم مخازن نرمافزاری چیهستن. مخازن یا همون Repository ها منابعی عظیم از نرمافزارهای مورد نیاز شما در لینوکس هستند. که هر توزیع متناسب با معماری خودش، تعداد زیادی نرمافزار در مخازنی قرار میده تا کاربراش از اونا با اطمینان استفاده کنن.
چرا میگم با اطمینان؟ چون تا بستهای از نظر امنیتی چک نشده باشه در مخازن قرار نمیگیره، از طرفی بعد از دانلود شدن از طرف کاربر مدیر بسته امضا یا همون hash بسته رو با مخزن چک میکنه، و بعد از اطمینان از صحت بسته دانلود شده اقدام به نصب اون میکنه، دقت کنید که در فرایند رمزگذاری اگر حتی یک بیت از دادهها تغییر کنه، مقدار بهدست اومده از الگوریتم رمزگذاری به کلی متفاوت خواهد بود، پس درصورت صحت، بسته دقیقا همان بستهی درون مخزن است، بدون یک بیت کم یا زیاد، درحالی که در ویندوز شما ممکن بود فایل setup رو از دوستتون بگیرید یا هر سایت غیرمطمئنی دانلود کنید، که ممکن بود اون فایل اصلا چیزی که میخواستید نباشه، ویروس باشه، یا فایل اصلی باشه بهعلاوه کد اضافهای که بهش اضافه شده تا هرکاری که دوست داشت با سیستم شما انجام بده، یا هر مشکل دیگه ای، حتی اگر از جای مطمئن فایل رو دانلود کنید، ممکنه یک ویروس قبل از نصب فایل شما رو آلوده کنه!
برای توضیح مزیت بعدی استفاده از مخازن، باید موضوعی رو توضیح بدم، اونم کتابخانه مرکزی لینوکسه! برای توضیح مثال سادهای میزنم تا راحت فهمیده بشه، زیاد بهش ایراد نگیرید :)
فرض کنیم من یک برنامهنویس ویندوز هستم و دارم برنامهای مینویسم که قراره از صفحهکلید چیزی رو بخونه، خب من هیچوقت خودم قسمت خواندن از صفحهکلید رو نمینویسم توی برنامم، از توابع کتابخونه ای که برای این کار قبلا نوشته شده استفاده میکنم و تمرکزم رو میذارم روی برنامهی خودم در انتها هم اون کتابخونه رو همراه برنامم به کاربر میدم تا کنار نرمافزار من بذارش تا درست کار کنه (در فرایند نصب خود به خود داخل Program Files کنار فایل های برنامه من قرار میگیره) ، کاری که همه میکنن، حالا این کار برای هر کار دیگهای هم ممکنه پیش بیاد مثل استفاده از انواع کتابخونههای گرافیکی و غیره.
موضوعی که هست اینه که فقط من به این کتابخونه نیاز ندارم، بقیه توسعهدهندهها هم ازشون استفاده میکنن و کنار نرمافزارشون به کاربر میدن، این میشه که توی ویندوز هر نرمافزار میشه چند گیگابایت! و هر کدوم کلی فضا از کاربر میگیرن! چون چیزای تکراری کنار هر نرمافزاری قرار گرفتن!
مشکل دیگه وقتیه که برای اون کتابخونه مثلا یه آپدیت بیاد، به هر دلیلی، امنیتی، کارکردی، رفع باگ، هر چیزی. بعد از آپدیت شدن اون کتابخونه، من به عنوان کاربر باید منتظر توسعهدهندههای نرمافزارهام بمونم تا برای نرمافزارهاشون آپدیت بدن تا مشکلات من حل بشه! جدا از اینکه ممکنه آپدیت ندن! من باید تک تک نرمافزارها رو آپ آپدیت کنم، و داخل ویندوز هیچ چیزی نیست که به من بگه این نرمافزار ها رو باید آپدیت کنی! خود کاربر باید یا به سایت اون نرمافزار سر بزنه یا اگه توسعهدهنده خیلی دوسش داشته باشه، وقتی وارد برنامه شد بگه به کاربر که من رو آپدیت کن!
در لینوکس کتابخونهها همه در یک مکان نگهداری میشن، من بهش میگم کتابخانه مرکزی، من اگر توسعهدهنده برنامه برای لینوکس باشم، داخل برنامم مینویسم که من برای اجرا به کتابخونهی خوندن از کیبورد و چند تا کتابخونهی دیگه نیاز دارم، و برنامم رو مینویسم. مدیر بسته در زمان نصب بستهی من، چک میکنه که آیا این کتابخونهها در کتابخانه مرکزی وجود دارند یا نه، اگر نبودند، اونا رو نصب میکنه، اگه هم بودن که چه بهتر، دانلود کمتری داریم! :)
حالا در سناریوی آپدیت شدن کتابخونه، من فقط کتابخونه مورد نظر رو آپدیت میکنم و هر نرمافزاری از اون استفاده میکرده دیگه مشکل قبلی رو نداره، چیز دیگهای که باید بهش دقت کنید اینه که من به عنوان توسعهدهنده کتابخونه رو کنار نرمافزارم نگذاشتم! پس حجم نرمافزارم خیلی کمتر شد، کاربر هم چندین بار یک فایل تکراری رو روی هاردش قرار نداد! شاید بگید یه ایراد الکی به ویندوز گرفتم که کاربر باید چک کنه برای نرمافزار آپدیت اومده یا نه، اینجا اما کاربر قرار نیست چک کنه برای کتابخونه آپدیت اومده یا نه، مدیر بسته در صورت رخ دادن این مورد، به کاربر گزارش میده که باید آپدیت کنه!
مورد بعدی که میخوام بهش اشاره کنم اینه که برای آپدیت کردن همهی پکیجهای نرمافزارهای داخل سیستم، که شامل بسته های خود سیستمعامل هم هست، خیلی ساده میشه از طریق رابطهای گرافیکی یا با استفاده از خط فرمان اقدام کرد، چون همه نرمافزارها در مخازن هستن و مدیر بسته به راحتی این کار رو انجام میده. کاری که در ویندوز نشدنیه و باید به سایت ارائهدهنده نرمافزارتون مراجعه کنید، یا از داخل خود نرمافزار اقدام به آپدیت کنید. جالب اینکه در لینوکس شما حتی اگر کرنل رو هم آپدیت کنید نیازی به Restart ندارید! :)
در خط فرمان، سیستمهای دبیانی مثل دبیان، اوبونتو، مینت و... کافیه این دستورات رو بزنن تا همه برنامههای سیستمشون آپدیت بشن:
sudo apt update
sudo apt upgrade
در سیستمهای ردهتی (rpmی) یا هر چیز دیگهای که صداشون میکنید، مثل فدورا، سنت او اس و...
sudo dnf update
sudo dnf upgrade
در سیستمهای آرچی مثل آرچلینوکس، مانجارو و...
sudo pacman -Syu
تفاوت در دستورات فقط به خاطر تفاوت در مدیر بستههاست!
مزیت آخری که من الان به ذهنم میرسه اینه که فرایند نصب یه بسته جدید بسیار ساده میشه و گاها نیازی به جستجو هم نیست.برای مثال نصب پخشکننده VLC روی سیستمهای مختلف به این سادگیه:
در خط فرمان، سیستمهای دبیانی مثل دبیان، اوبونتو، مینت و...
sudo apt install vlc
در سیستمهای ردهتی (rpmی) یا هر چیز دیگهای که صداشون میکنید، مثل فدورا، سنت او اس و...
sudo dnf install vlc
در سیستمهای آرچی مثل آرچلینوکس، مانجارو و...
sudo pacman -S vlc
کاری که برای انجامش در ویندوز نیاز به مرورگر اینترنت، جستجو برای نرمافزار، دانلود، اجرای setup و چندین next زدن داشت!
البته در لینوکس هم میتونید به جای خط فرمان از رابطهای گرافیکی مثل Software Center اوبونتو یا مدیر بسته Synaptic استفاده کنید.
پس به طور خلاصه، استفاده از مدیر بسته این مزایا رو داره:
۱. امنیت و اطمینان از صحت بستهها
۲. کم شدن حجم برنامهها به علت استفاده از کتابخانه مرکزی و رفع نیاز به کتابخونهها از طریق مدیر بسته
۳. سادگی آپدیت کردن همهی نرمافزارهای موجود در سیستم
۴. سادهشدن کار نصب بسته جدید
موضوع بعدی که انجام شد نصب لینوکس برای چند تا از دوستانمون بود که امیدوارم به زودی باهاش راه بیوفتن :) مشکلی که اکثر کسایی که دیدم جدیدا لینوکس نصب میکنن دارن، در نحوه پارتیشنبندی و مشکل با پارتیشنهای MBR و تنظیمات UEFI هست که چون این بحث خیلی طولانی شد یک پست جداگانه به زودی قرار میدم که این موضوع رو هم توضیح داده باشم خدمت همه، همینطور توضیحی که در راه برگشت راجع به پسوند فایل ها در لینوکس دادم رو هم قرار می دم.
یه نکته لازمه بگم که در جلسه هم مطرح کردم و اونم اینه که اگر مشکل عمومی داشته باشید، احتمال این که کسی رو در لاگ یا هرجای دیگه پیدا کنید که مشکل شما رو داره خیلی زیاده، مثلا اگه مشکل با لیبرهآفیس هست، خیلیها از لیبرهآفیس استفاده میکنن و ممکنه تجربه مشترک داشته باشن، جستجو راجع بهش هم راحت تره چون یه چیز مشخص و همگانیه تقریبا، اما مثلا اگر من با بلوتوث لپتاپم یا با وایرلس لپتاپم مشکل دارم، این احتمال مشکل مشابه کم میشه، چون مدل بلوتوث یا وایرلس لپتاپ من و شما و سازنده و نحوه کارکردشون فرق دارن! پس بهترین راه در این موارد سرچ کردن دقیق، با مدل دستگاه و یا متن دقیق ارور، و این که چکار کردی که اینجوری شد؟ چه کارایی کردی جواب نداده، سیستم مورد استفاده و ورژنش و ... است و نباید انتظار داشت درون لاگ حتما یک نفر جواب سوال رو داره و همینطور نباید انتظار داشت مشکل با یک کلیک یا یک دستور حل بشه، گاهی مشکلات عمیقتر و پیچیدهتر هستند.
در آخر توصیهای که به همه میکنم اینه که از مشکلات نترسید، سعی کنید سرچ کنید برای حل مشکلتون، سعی کنید مشکلتون رو حل کنید چون اینجا ویندوز نیست که پاکش کنید دوباره نصبش کنید! اگه مشکلتون رو خودتون حل کنید در حین حل مشکل کلی چیز یاد میگیرد! سعی کنید زبان انگلیسیتون رو قوی کنید یا به یه حد معقولی برسونید، چون اگه انگلیسی جستجو کنید زودتر به نتیجه میرسید. از خط فرمان هم نترسید، خط فرمان میتونه بهترین دوستتون باشه!
تاریخ: ۱۳۹۵/۰۴/۲۴ و ۱۳۹۵/۰۴/۲۵
مکان: اراک - خیابان شهید رجایی (ملک) - خیابان جنت - پارک جنت
خوش و خرم و سلامت باشید :)