کامپیوتر و اُپن سورس(Computer & Open Source)

آموزش دروس رشته کامپیوتر - نرمافزار اشنایی باسخت افزار سیستم عامل لینوکس شبکه برنامه نویسی معرفی نرم افزار

کامپیوتر و اُپن سورس(Computer & Open Source)

آموزش دروس رشته کامپیوتر - نرمافزار اشنایی باسخت افزار سیستم عامل لینوکس شبکه برنامه نویسی معرفی نرم افزار

رزم رستم و ویروس (روی ویندوز)

با این ویندوز به رستم هم ضربه وارد کردند:wacko_tb:   واقعا باید آدم با نگاه به تاریخ و عبرت گرفتن از اون :hmm1_ee:.. مسیر درست را انتخاب کنه:smile1_ee:..این شعر را بخونید و علاوه بر اینکه حالشو میبرید عبرت هم بگیرید…:tongue1_tb:

دگرها شنیدستی این هم شنو

که اسفندیارش یکی disk داد
بگفتا به رستم که ای نیکزاد

در این disk باشد یکی file ناب
که بگرفتم از site افراسیاب

برو حال می کن بدین disk هان!
که هم نون و هم آب باشد در آن

تهمتن روان شد سوی خانه اش
شتابان به دیدار رایانه اش

چو آمد به نزد mini tower اش
بزد ضربه بر دکمه power اش

دگر صبر و آرام و طاقت نداشت
مران disk را در drive اش گذاشت

نکرد هیچ صبر و نداد هیچ لفت
یکی list از root دیسکت گرفت

در ان disk دیدش یکی file بود
بزد enter آنجا و اجرا نمود

کز ان یک demo گشت زان پس عیان
به فیلم و به موزیک و شرح­ و بیان

به ناگه چنان سیستمش کرد hang
که رستم در آن ماند مبهوت و منگ

چو رستم دگر باره reset نمود
همی کرد هنگ و همان شد که بود

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

چو تهمینه فریاد رستم شنود
بیامد که لیسانس رایانه بود

بدو گفت رستم همه مشکلش
وز ان disk و برنامه خوشگلش

چو رستم بدو داد قیچی و ریش
یکی bootable دیسک آورد پیش

یکی toolkit اندر آن disk بود
بر آورد آن را و اجرا نمود

همی گشت toolkit هارد اندرش
چو کودک که گردد پی مادرش

به ناگه یکی رمز virus یافت
پی حذف امضای ایشان شتافت

چو virus را نیک بشناختش
مر از boot sector بر انداختش

یکی ضربه زد بر سرش toolkit
که هر بایت ان گشت هشتاد bit

به خاک اندر افکند virus را
تهمتن به رایانه زد بوس را

چنین گفت تهمینه با شوهرش
که این بار بگذشت از پل خرش

فقط یه سوال… مگه به دخترا هم لیسانس میدند؟؟ یا مفهومی تر مگه دخترا هم از اینچیزا سر در میارند؟؟:wallbash_tb:؟  البته این شاید همون بحث دختر هم دخترای قدیم باشه…:grin1_ee:  چون شعر ماله ۴۵۰۰ سال پیش هست…  :shock_ee:

Mono چیست؟

به طور خلا‌صه در مورد عملکرد و کاربرد مونو می‌توان گفت که: مونو ابزاری برای کامپایل و ایجاد اسمبلی‌ها و برنامه‌های کاربردی نوشته شده با قابلیت‌های دات‌نت است و این امکان را می‌دهد تا یک کد یکتا بدون نیاز به بازنویسی یا کامپایل مجدد روی پلتفرم‌های مورد پشتیبانی (که در بالا‌ آمد) به راحتی و آسانی قابل اجرا باشد. می‌توان گفت که مونو عملکردی مشابه چهارچوب Common Language Infrastructure) CLI) دات‌نت مایکروسافت دارد؛ با این تفاوت که مونو چهارچوبی کلی‌تر و مجانی برای پلتفرم‌های گسترده‌تر فراهم می‌کند.

با این‌که تعداد زیادی از برنامه‌نویسان و توسعه‌دهندگان نرم‌افزار در سطح جهان به ابزارهای مبتنی بر ویندوز و دات‌نت عادت کرده‌اند،‌ زمان آن رسیده است بدانید که می‌توانید اسمبلی‌های دات‌نت را روی سکوهای Mac OSX ،Solaris ،AIX و تعداد زیادی از لینوکس‌ها کامپایل و اجرا کنید. در حالی که Cross-Platform (یا استقلا‌ل نسبت به سکوی کاری) بودن این چارچوب کاری (یعنی مونو) به برنامه‌هایی از قبیل Hello World محدود نشده است و می‌توانید به آسانی با مونو، اسمبلی‌های آماده تولید مبتنی بر ADO.NET،‌ فرم‌های ویندوز، ASP.NET و ... را ایجاد و اجرا کنید.

نصب Mono 
برای شروع کار در ویندوز، باید نسخه مخصوص ویندوز MONO را دانلود و نصب نمایید. پس از دریافت فایل Mono Installer for Windows آن را اجرا کنید و پروسه نصب را پی بگیرید. توجه داشته باشید که Mono هیچ تداخلی با Microsoft.NET یا MS Visual Studio از قبل نصب شده نخواهد داشت.

در زمان تهیه این مقاله، بهترین و آخرین نسخه عرضه شده مونو، 1.15 است. اگر بعد از نصب به دایرکتوری این نسخه از مونو مراجعه کنید، با تعداد زیادی از زیر پوشه‌ها از جمله etc ،contrib ،man ،share و ... مواجه خواهید شد. (که برای کاربران لینوکس آشناست) (شکل 1). شکل 1 ساختار پوشه مونو را نشان می‌دهد.

در این مقاله فقط با فولدرهای ‌bin/ (که حاوی بسیاری از ابزارهای مونو از جمله کامپایلر #C)، 
Global Asscmbly Cache: GAC lib\mono\gac چارچوب کاری مونو) سروکار خواهیم داشت.

چون اکثر ابزارهای مونو را از دایرکتوری ‌bin\ و از طریق خط فرمان اجرا خواهید کرد، لذا بهتر است آدرس آن را به متغیر محیطی Path سیستم‌عامل خود اضافه کنید. برای سهولت در کار، می‌توانید از خط فرمان MONO استفاده کنید. این ابزار می‌تواند به طور خودکار ابزارهای خط فرمانی را شناسایی کند وآن‌ها را به کار گیرد. آدرس این کنسول: Start>All Program >Mono For Windows> Applications حال برای اطمینان از صحت نصب، فرمان زیر را وارد کنید:

mono-- version

اگر همه کارها به درستی انجام شده باشد، جزئیات بسیاری مطابق آنچه در تصویر شماره 2 نشان داده شده است، نمایش داده خواهد شد. 

شکل 2

فهرست 1

کامپایلرهای Mono

مونو، همانند توزیع CLI مایکروسافت، حاوی تعدادی کامپایلر مدیریت شده است. این کامپایلر عبارتند از:
 
●‌‌ کامپایلرهای #mcs.exe : C و gmcs  
●‌‌‌کامپایلر BASIC مونو: mbas.exe
●‌‌‌کامپایلر زبان booc.exe :Boo 
●‌‌‌کامپایلرهای CIL مونو: IIasm.exe, ilasm.exe 

در این مقاله فقط از کامپایلرهای #C استفاده خواهیم کرد، اما در مورد کامپایلر بیسیک مونو باید گفت که یک مجموعه کامل و غنی از Visual Basic.NET است که با هدف ایجاد و توسعه یک زبان برنامه‌نویسیِ به آسانی قابل فهم برای آنان در دنیای لینوکس / یونیکس و Mas OSX عرضه شده است و همچنان در حال توسعه و بازبینی قرار دارد. Boo نیز یک زبان شی‌ء‌گرا از نوع ایستا است که بر مبنای Python نوشته شده است. برای آشنایی بیشتر با این کامپایلر به این سایت مراجعه کنید. llasm.exe و ilasm.exe نیز کامپایلرهای CIL مونو هستند که دومی از ساختارهای زبانی NET 2.0 پشتیبانی می‌نماید.
 

کار با کامپایلرهای #C
mcs.exe اولین #C بود که برای پروژه مونو در نظر گرفته شد. این کامپایلر با 1.1#C مطابقت کامل دارد (در حقیقتmcs.exe با #C نوشته شده است) و همانند کامپایلر خط فرمان مایکروسافت یعنی (csc.exe) از response fileها پشتیبانی می‌کند. یعنی که می‌توانید با اضافه کردن فلگ‌های /target ،/out ،/reference و ... به ترتیب نوع اسمبلی، نام اسمبلی کامپایل شده و وابستگی‌های خارجی فهرست اسمبلی را برای کامپایلر تعیین کنید. می‌توانید تمام آپشن‌های قابل استفاده در mcs.exe را با دستور زیر مرور کنید:

 ؟- mcs.exe  

 gmcs.exe یا(genericmcs.exe) نسخه‌ای از mcs.exe است که از #C مخصوص NET 2.0 و ارجاع‌های کتابخانه‌های پایه‌ای کلا‌س مبتنی بر NET 2.0 پشتیبانی می‌کند. در حقیقت تفاوت این دو کامپایلر در اینجاست که mcs.exe به طور خودکار به Base Class Libraryهای مبتنی بر NET 1.1 مراجعه می‌کند، در صورتی که gmcs.exe به طور پیش‌فرض از Base Class Libraryهای مبتنی بر NET 2.0 به عنوان مرجع استفاده می‌نماید. با این حساب،gmcs.exe در آینده کامپایلر پیش‌فرض مونو خواهد شد و mcs.exe از دور خارج خواهد گردید.

ایجاد یک Code Library دات‌نت با Mono
برای آشنایی با مونو در عمل، از ایجاد یک کتابخانه که با نام Core LibDump.dll شروع می‌کنیم. این اسمبلی حاوی یک نوعِ تک کلا‌سه با نام CoreLib Dumper و دارای یک متد استاتیک با نام DumpTypeTo File است. این متد یک رشته که معرف یک نام معتبر از یک Type موجود درون mscorlib.dll را می‌گیرد و اطلا‌عات مرتبط با آن Type را به یک فایل محلی در هارددیسک منتقل می‌کند که کامل این برنامه در فهرست 1 آمده است. برای مثال، اگر پارامتر رشته‌ای ورودی به این متد System.Threading.Thread باشد، فایل خروجی System.Threading.Thread.txt نام خواهد داشت. با این‌که می‌توانید این برنامه را با واردکردن آرگومان‌های تعریفی به صورت مجزا کامپایل کنید،  این‌کار با استفاده از فایل‌های response ساده‌تر و راحت‌تر انجام می‌پذیرد. برای این کار، فایلی را با نامCorelibDumper.rsp در کنار فایل CoreLibDumper.cs ایجاد نمایید و مجموعه فرامین زیر را در آن وارد کنید:

target: library/
out: CorelibDumper.dll/
CoreLibDumper.cs

حال می‌توانید کتابخانه مذکور را با دستور زیر کامپایل کنید:
gmcs @corelibDumper.rsp‌

البته بدون فایل‌های rsp.* باید کامپایل را این‌گونه انجام می‌دادید:

gmcs/target: library out:Corelib/.Dumper.dll
Corelib Dumper.cs

تخصیص یک نام قوی به CoreLib Dumper.dll 
مونو از ایجاد اسمبلی‌های نام قوی و به اشتراک‌گذاری شده در Global Assembly Cache) GAC) نیز پشتیبانی می‌کند. یعنی می‌توان کتابخانه‌ای را که ایجاد کرده‌اید، در GAC به صورت فراگیر به اشتراک بگذارید. برای ایجاد داده‌های کلیدی public/private، مونو از sn.exe (که کم و بیش مثل محصول مایکروسافتی هم نام خود عمل می‌کند) استفاده می‌نماید. برای مثال، دستور زیر یک فایل snk.* ایجاد می‌کند: (برای کسب اطلا‌عات بیشتر از فلگ ؟ - در پایان فرمان استفاده کنید).

sn/ k   myTest KeyPair.snk

حال برای این‌که به #C بگوییم از این کلید ایجاد‌شده برای تخصیص یک نام قوی به کتابخانه CoreLibDumper.dll  استفاده کند، باید فایل CoreLibDumper.rsp را به صورت زیر درآورید:

target: library/
out: CoreLibDumper.dll/
Keyfile: myTest KeyPair.snk/
CoreLibDumper.cs
حال با فرمان زیر، کتابخانه خود را دوباره کامپایل می‌کنیم:

gmcs @corelibDumper.rsp‌

مشاهده فهرست بروزرسانی‌شده با monodis.exe 
قبل از قرار دادن اسمبلی در GAC، در مورد monodis.exe (که عملکردی مشابه ildasm.exe مایکروسافت دارد) بدانید که می‌توانید با استفاده از آن، کُد CIL، فهرست کلی و انواع metadata برای یک اسمبلی مشخص را مشاهده کنید.

مثلا‌ً می‌خواهیم اطلا‌عات مربوط به اسمبلی نام قویِ جدیدی که ایجاد کرده‌ایم را با سوییچ assembly مشاهده کنیم. شکل 3 پاسخ به دستور زیر را نشان می‌دهد:

monodis-- assembly   CoreLibDumper.dll
همان‌طور که می‌بینید، فهرست کلی اسمبلی، حاوی کلیدی که در myTest keypair.snk ایجاد کردیم نیز می‌باشد.

شکل 3

شکل 4

نصب اسمبلی‌ها در GAC
 
حال که یک کتابخانه strong-name ایجاد کرده‌ایم، باید آن را توسط ابزار gacutil.exe در GAC نصب کنیم. همانند ابزار مشابه مایکروسافتی که به همین نام عرضه شده است، gacutil.exe برای نصب، uninstall و مرور اسمبلی‌های ساخته شده کاربر در GAC مورد استفاده قرار می‌گیرد. (توجه کنید که GAC در دایرکتوری
ProgramFiles\Mono\lib\mono\gac\... قرار دارد).

دستور زیر CoreLib Dumper.dll را به صورت یک اسمبلی به اشتراک‌گذاری شده در ماشین محلی در Global Assembly Cache نصب می‌کند. (از خط فرمان مونو برای این‌کار استفاده کنید):

gacutil- i   CoreLibDumper.dll

حال باید بتوانید یک پوشه جدید با نام CoreLibDumper در پوشه gac \...(مسیر اصلی این پوشه در بالا‌ ذکر شد) ببینید. شکل 4  این پوشه را در فولدر GAC نمایش می‌دهد.

ایجاد یک Console Application با مونو
بیایید یک کلا‌ینت ساده که آن را ConsoleClientApp.exe خواهیم نامید ایجاد کنیم. یک فایل جدید با نامConsoleClientApp.cs بسازید و کد آورده شده در فهرست 2 را در آن وارد کنید. 

 

فهرست 2


دقت کنید که متد () main از کاربر نام یک نوعِ کاملا‌ً تعریف شده را درخواست خواهد کرد. متد ()TypeDumper.DumpTypetofile نیز از نام وارد شده توسط کاربر برای بازیابی Type و ارسال اطلا‌عات آن به یک فایل متنی استفاده می‌کند. حال یک فایل ConsoleClient App.rsp ایجاد نمایید و کد زیر را در آن وارد کنید: (این فایل به Corelib Dumper.dll رجوع خواهد کرد.)

target: exe/
out: Console ClientApp.exe/
reference: CoreLibDumper.dll/
ConsoleClientApp.cs

حال برای ایجاد فایل اجرایی، کد بالا‌ را با دستور ذیل کامپایل می‌کنیم:

gmcs @consoleClinetApp.rsp‌
قبل از اجرای این برنامه، فایل CoreLibDumper.dll را که در دایرکتوری جاری فایل اجرایی کامپایل شده قرار دارد، به DontuseCoreLibDumper.dll تغییرنام دهید. دلیل این کار این است که شما اسمبلی خود را در GAC نصب کرده‌اید و در صورت رجوع به آن در طی اجرای برنامه‌، از کپی نصب شده در GAC استفاده خواهید کرد، نه نسخه محلی کتابخانه CoreLibDumper.dll.

پس از انجام مراحل بالا‌، حالا‌ می‌توانیم ConsoleClientApp.exe را در موتور زمان اجرای Mono با دستور زیر اجرا کنیم:

Mono  ConsoleClientApp.exe

اکنون، برای مثال System.Threading.Thread را وارد کنید. برنامه، Type مورد نظر را جست‌وجو می‌نماید و در نهایت یک فایل با نام System.Threading.Thread.tex ایجاد خواهد کرد که حاوی تعریف‌های metadata این نوع خواهد بود. شکل 5 محتویات فایل مذکور را نشان می‌دهد.
 
 

شکل 5


قبل از آن‌که به ایجاد برنامه‌های کاربردی مبتنی بر فرم‌های ویندوز بپردازیم، این آزمایش را انجام دهید: با استفاده ازWindows  Explorer، پوشه کاری خود را باز نمایید و سعی کنید با دوبار کلیک روی فایل ConsoleClientApp.exe، آن را اجرا کنید. همان طور که می‌بینید، این کار باعث رخ دادن FileNotFoundExeption خواهد شد. ممکن است تصور کنید این اتفاق به دلیل تغییر نام CoreLibDumper.dll افتاده است. اما باید بدانید که دلیل اصلی آن است که با دوبار کلیک روی این فایل، آن را از طریق Microsoft CLR اجرا خواهید کرد.

به یاد داشته باشید که برای اجرای برنامه‌ها تحت مونو، باید آن‌‌ها را توسط Mono.exe اجرا نمایید. در غیر این‌صورت، برنامه کاربردی از طریق Microsoft CLR (که از اسمبلی‌های اشتراکی نصب‌شده در Microsoft GAC و واقع در دایرکتوری Assembly\ استفاده می‌کند) اجرا خواهد گردید. در مواردی خاص ممکن است برنامه بدون مشکل اجرا گردد. در این حالت فقط می‌توانید از اسمبلی‌های NET. استفاده نمایید و در صورت رجوع به کتابخانه‌های ایجاد شده توسط خودتان، با FileNotFoundExeption مواجه خواهید شد.
 

ایجاد یک برنامه کاربردی بر مبنای فرم‌های ویندوز
قبل از ادامه کار، DontuseCoteLibDumper.dll را به همان نام قبلی یا CoreLibDumper.dll تغییر نام دهید. سپس یک فایل جدید #C ایجاد نمایید و آن را WinFormsClientApp.cs بنامید.

در این فایل دو type با استفاده از قابلیت‌های 2.0 #C تعریف شده و چند کلا‌س ایستا به همراه متدهای ناشناس به کار رفته‌اند که در فهرست 3 موجود است.
 

فهرست 3


باز هم مثل قبل، پیش از کامپایل یک فایل rsp.* با نام WinFormsClientApp.rsp ایجاد نمایید و فرامین زیر را در آن وارد کنید:

target: winexe/
out: WinFormsClientApp.exe/
reference: CoreLibDumper.dll/
reference: System.Windiws.Forms.dll/
reference: System.Drawing.dll/
WinFormsClientApp.cs

حال با فرمان زیر، پروژه را کامپایل کنید:
 
gmcs @winformsClientApp.rsp

در صورتی که برنامه کامپایل شده را با mono.exe اجرا کنید، چیزی مشابه شکل 6 مشاهده خواهید کرد.

 
 

 

شکل 6

 

جمع‌بندی
تا اینجا چیز جدیدی در مورد NET. یا #C مطرح نشد و تأکید ما در این مقاله طرز شروع کار با مونو بود. با این‌که در طی این مقاله چند برنامه کاربردی ساده با مونو ایجاد کردیم، اما اهمیت مونو در جایی واضح‌تر می‌شود که به شکل 7 دقت کنید. این تصویر همان برنامه مبتنی بر Windows Forms را در حال اجرا در لینوکس Suse نمایش می‌دهد.

شکل 7


نتیجه این‌که می‌توانید دقیقاً همان  کد ‌#C که در این مقاله با آن آشنا شدید را در لینوکس (یا هر سیستم‌عاملی که توسط مونو پشتیبانی می‌شود) به راحتی کامپایل یا اجرا کنید. در حقیقت، می‌توانید اسمبلی‌هایتان (که فرضاً در Win 32  ایجاد شده‌اند) را به یک سیستم‌عامل جدید کپی نمایید و آن‌ها را مستقیماً و بدون نیاز به کامپایل مجدد یا ایجاد تغییرات در کد، اجرا کنید. تنها کار لا‌زم، استفاده از mono.exe است.

برای آشنایی بیشتر با مونو و افزیش توانایی‌های خود در این زمینه، می‌توانید به راهنمایِ همراه مونو که Mono Doc خوانده می‌شود، مراجعه کنید. این راهنما، حاوی اطلا‌عات مفیدی در مورد کتابخانه‌های پایه‌ای کلا‌س مونو و زبان برنامه‌‌نویسی #C است. این ابزار از طریق Start < All Programs < Mono for Windows< Applications  قابل دسترسی است.

شکل 8 نمایی از Mono Doc را نمایش می‌دهد. البته در طی گشت‌وگذار در طی Mono Doc با مدخل‌های ناکامل زیادی روبه‌رو خواهید شد؛ چراکه راهنماهای کلا‌س‌های پایه‌ای مونو توسط Community مونو تهیه شده و در حقیقت شما نیز می‌توانید در تهیه و توسعه این راهنما سهیم باشید.

 

شکل 8

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

دلیل ترک لینوکس چیست؟

اشخاص زیادی را دیدم که گنو/لینوکس را ترک کردند و از آن متنفر شدند و دیگر به سمتش بازنگشتند، اما دلیل این کار چیست ؟ چرا این طور می‌شود ؟ پس چرا من از لینوکس زده نمی‌شوم ؟ چرا کسان دیگر این گونه نیستند ؟ چرا ما لینوکس را دوست داریم ؟ چرا از آن طرفداری می‌کنیم ؟ و چرا های دیگر ….

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

اگر شخصی واقعا بخواهد گنو/لینوکس را به عنوان سیستم عامل اصلی خودش تبدیل کند هر طور که شده با هر سختی‌ای این کار را انجام خواهد داد و بهانه‌ای برایش نمی‌آورد. کسانی که دلایلی برای ترک لینوکس می‌آورند به
نظر من تنبلی آن اشخاصه و می‌خواهند کارشان را توجیه کنند، من به عقاید و انتخاب دیگران احترام می‌گذارم و هر کسی مختاره که خودش سیستم عاملش را انتخاب کنه ولی این رو می‌گم که چرا وقتی نمی‌توانید با لینوکس درست و حسابی کنار بیاید آن را در انظار عمومی بد جلوه می‌دهید و چرا قبول نمی‌کنید که مشکل اصلی خود شما و تنبلیتان است؟

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

گروهی دیگر می‌گویند که نرم‌افزارهای تحت این سیستم عامل بسیار اندک‌اند و به ویندوز نمی‌رسند، این درست! ولی تا ۹۰٪ معادل برای نرم‌افزار های ویندوزی در لینوکس و نرم‌افزار های آزاد یافت می‌شود که به اندازه و یا حتی بیشتر از معادل غیر آزاد خود (ویندوزی) کارایی دارند و اکثرا رایگان هستند و بدون پرداخت هزینه‌ای قابل استفاده‌اند،‌ این نیز بهانه است چون فکر می‌کنند یافتن برنامه‌ها کار مشکلی است یا اگر باشند کارایی ندارند ولی من به عنوان یک گنو/لینوکسی می‌گم نرم‌افزارهای ویندوز کم و دستیابی با آن‌ها مشکله (این را وقتی وارد گنو/لینوکس شدید متوجه خواهید شد).

وقتی به عده‌ای می‌گویی که لینوکس از نظر امنیت از ویندوز جلو تره و ویروسی به آن صورت برایش نوشته نشده می‌گویند: نه‌خیر این دلیلش نیست که لینوکس از نظر امنیت قوی‌تره بلکه کاربران کمی دارد به همین دلیل ویروس یا بدافزاری برای آن وجود نداره. این افراد چون نمی‌دانند که هسته (Kernel) لینوکس طوری نوشته و پایه ریزی شده که هر بدافزار و ویروسی نتواند به سادگی وارد process های سیستم شود و یا به فایل‌های سیستمی و غیره آسیب برسانند و System را از کار بیندازند این دید را دارند.

بخشی دیگر از کاربران این ذهنیت را از نرم‌افزارهای اپن‌سورس (Open Source) دارند که از امنیت و کیفیت پایینی برخوردارند. این طرز فکر بسیار بسیار غلط هست، شما خودتان قضاوت کنید ویندوز که کاملا حفاظت شده، کدبسته (Closed-Source) و غیر رایگان می‌باشد امنیت بسیار بالایی داره ؟ البته با کمی جستجو می‌شود به این نکته پی‌برد که بالاترین ضریب امنیتی را نرم‌افزارهای کد باز دارا می‌باشند آن هم دلیلش این هست که کد منبع آن در اختیار همگان است این همه آدم (هکر، دکتر، مهندس، نخبه و ….) در سراسر جهان به آن دسترسی دارند که در پیشرفت و توسعه‌ی آن دارای نقش موثری هستند و این باعث شده به محض این که حفره یا باگی (BUG) در نرم‌افزار دیده شد این مشکل در بازه‌ی زمانی بسیار کوتاه Patch شود چیزی که در نرم‌افزارهای کد بسته باگ‌های موجود ممکنه تا چند ماه هم وصله نشوند، نمونش اینترنت اکسپلورر هرچند پیشرفت‌های خوبی داشته ولی خیلی دیر به دیر به روز و Patch می‌شود. حالا تعداد میلیونی Developer های گنو/لینوکس را با برنامه نویسان Microsoft مقایسه کنید.

هدف از نوشتن این مطلب این بود که بگم اگر شما از لینوکس متنفری و نتوانستی ازش خوب استفاده کنی لطفا دیگران را از استفاده‌ی از آن نترسان و به عبارتی برایش اسم نگذار، تاکید من به تحقیق و جستجو در بالا به خاطر این است که نباید هیچ کاری را بدون تحقیق انجام داد برای هر کاری، نه فقط برای مهاجرت به لینوکس، ممکنه کسی بخواهد از از مکینتاش بره به ویندوز (البته تقریبا غیر ممکنه) باید تحقیق کنه یک سری مسائلی رو مد نظر داشته باشه که مثلا اگه رفتم ویندوز فلان محدودیت را دارم و فلان امکانات را هم دارم… اینه که تحقیق و جستجو فراموش نشود!

  • اگر قصد مهاجرت به لینوکس را داری به نکات زیر توجه داشته باش:

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

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

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

″ آزادی را دوست دارم برای این لینوکس را انتخاب کردم

love_tux.jpg