خانه‌ی سفید

نوشته‌های شخصی مجید در مورد همه چیز

خانه‌ی سفید

نوشته‌های شخصی مجید در مورد همه چیز

چرا گنو/لینوکس را دوست دارم

سایت سیتو (فروشنده CD و DVD نرم‌افزارهای آزاد از جمله تعداد بسیار زیادی از توزیع‌های گنو/لینوکس و البته هدیه‌های لینوکسی مثل ماوس‌پد و ...) یک مسابقه گذاشته با این عنوان: چرا گنو/لینوکس را دوست دارم.


و اما چرا گنو/لینوکس را دوست دارم:


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


۲. دائمی شدن مهاجرت: اشتباهی زدم ویندوزم را خراب کردم . این بهترین اتفاقی بود که می‌توانست برایم بیافتد.


۳. بعد از مهاجرت به گنو/لینوکس سعی کردم در حیطه تخصصی خودم نرم‌افزارهای آزاد را یاد بگیرم و با آن‌ها کار کنم. در حال حاضر تمامی محاسبات آمار و اقتصادسنجی خودم را با R انجام می‌دهم.


۴. و اما کاری که من با گنو/لینوکس به راحتی انجام دادم!


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

خوشبختانه مرکز آمار ایران داده‌های خام را (برخلاف بانک مرکزی) به شکل عمومی عرضه می‌کند و همه پژوهشگران می‌توانند با مراجعه به واحد فروش داده‌های این مرکز (خیابان فاطمی) آن‌ها را تهیه کنند.

داده‌های خام هر سال که مربوط به حدود ۱۰ الی ۲۰ هزار خانوار شهری و تقریبا در همین حدود خانوار روستایی است در تعداد زیادی جدول در یک فایل اکسس حدود ۲۰۰ مگابایتی عرضه می‌شود.

من می‌خواستم روی این داده‌ها توی R کار کنم. بهترین راه این بود که جداول اکسس را export کنم به فرمت CSV و در R از آنها استفاده کنم. مشکل اینجاست که در export کردن جداول اکسس هر بار فقط یک جدول را می‌تواند اکسپرت کرد! من فایل‌های اکسس ۲۸ سال را دارم. هر فایل هم بیش از ۲۰-۳۰ جدول دارد. این یعنی حدود ۵۰۰-۹۰۰ جدول برای export کردن!! و اینجاست که هر گیکی مطمئنا برنامه می‌نویسد!


برای استخراج جداول از فایل اکسس از ابزار نرم‌افزار آزاد mdbtools استفاده می‌کنم. و برنامه‌ای با دستورات bash نوشته‌ام که برای استخراج جداول و تر و تمیز کردن آن‌ها کافی است بنویسم:

m-extract-HEIS 88.mdb

یا برای همه فایل‌هایم (که خوب کار روی چند گیگ فایل چند دقیقه‌ای هم طول می‌کشد!

m-extract-HEIS *.mdb


برنامه m-extract-HEIS را می‌توانید از گیست https://gist.github.com/4602610 دریافت کنید.


۵. مشارکت در دنیای نرم‌افزار آزاد

الف. من یک بار در فروم پارسی‌لاتک یک پیشنهادی داده بودم که بعدا این پیشنهاد توی فایل راهنمای استایل‌های فارسی بیب‌تک اومد و توش از من تشکر کرده بودند!!! الان اسم من توی هزاران هزار توزیع تک که روی کامپیوترهای کلی آدم توی دنیا نصب شده توی یه فایلی اون گوشه موشه‌ها دیده می‌شه!!!


ب. برای کارم نیاز به اجرای یک الگوریتم داشتم که یک بنده خدایی در فرانسه برایش یک بسته R نوشته بود. از این بسته استفاده می‌کردم تا اینکه متوجه شدم در یک شرایط خاص یک باگ داره. اگر من از نرم‌افزارهای غیر آزاد استفاده می‌کردم احتمالا نمی‌توانستم بفهمم مشکل از چیست و حتی اگر می‌فهمیدم نمی‌توانستم مشکل را حل کنم! ولی R نرم‌افزار آزاد هست و بسته مزبور با لایسنس GPL ارائه شده، پس من تونستم که متن توابعش رو بخونم، ایراد رو پیدا کنم و حتی پس از حل مشکل، امکانات بسته رو بیشتر کردم و یک بسته جدید نوشتم!!! الان این بسته تو نسخه ۰٫۸ هست و می‌خوام وقتی به اندازه کافی خوب بود بفرستمش CRAN تا هزاران هزار نفری که از R استفاده می‌کنند از بسته من هم بتوانند استفاده کنند.



آیا من دزدی نمی‌کنم؟

بعضی از دوستان فکر کرده‌اند این که نوشته‌ام دزدی نکنیم و این‌ها یعنی اینکه من الان همه‌ی کپی‌رایت دنیا را دارم رعایت می‌کنم!

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

نرم‌افزار هنوز هست چیزی که موقع نصب سریال دزدی برایش وارد می‌کنم (STATA) ....

ولی سعی‌ام این است که این‌ها کمتر شوند.

فکر نمی‌کنم این سعی کردن بد باشد!!

دزد نباشیم - مدیریت فایل‌های فشرده: برنامه‌ی 7-Zip

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

برنامه‌ی 7-ZIP برنامه‌ای است که قادر به خواندن اکثر فرمت‌های فشرده‌سازی از جمله RAR است هر چند نمی‌تواند خود به این فرمت فشرده‌سازی کند. توصیه‌ی من فشرده‌سازی به فرمت معمول ZIP است که تمام نرم‌افزارهای فشرده‌سازی آن را می‌شناسند.

تصویری از برنامه‌ی فشرده‌سازی 7-ZIP

7-ZIP را از اینجا دانلود کنید.

دزد نباشیم - دیکشنری StarDict

دیکشنری بابیلون که معرف حضور هست! خوبی‌اش چیست؟ اینکه می‌شود دیکشنری‌های مختلفی برایش نصب کرد! دردسر دزدی‌اش را که همه واردید؟ نگذارید به اینترنت وصل شود که می‌فهمد دزدیم و وای به حال‌مان می‌شود!


دیکشنری StarDict یک نرم‌افزار با لیسانس GPL است که خلاصه‌اش برای ما این می‌شود که استفاده‌اش برای ما رایگان است. این نرم‌افزار روی ویندوز و لینوکس قابل نصب است و فایل نصب‌ش را از این آدرس می‌توانید بگیرید: http://stardict.sourceforge.net/download.php


دیکشنری پیش‌فرض نصب شده WordNet است که واژه‌ها را به شکل جالبی به هم مرتبط می‌کند (همان طور که در شکل مشخص است).


دیکشنری‌های بسیار دیگری نیز می‌توانید برای این نرم‌افزار از آدرس http://stardict.sourceforge.net/Dictionaries.php بیابید. من حتی گویا یک جایی خواندم فایل‌های دیکشنری بابیلون را هم می‌توان به طریقی در این دیکشنری استفاده کرد. هر چند به نظرم با وجود این همه دیکشنری نیازی به این کار نباشد. دیکشنری‌هایی را که از سایت مذکور دانلود می‌کنید باید از حالت فشرده درآورده و سه فایل درونشان را تحت یک فولدر در داخل فولدر dic در جایی که نرم‌افزار نصب می‌شود کپی کنید. (یک چیزی مثل "C:\Program Files\StarDict\dic")


البته دیکشنری WordNet که خود به شکل پیش‌فرض نصب می‌شود خیلی کامل است.


تصویری از دیکشنری StarDict


دیکشنری‌های معروفی چون Oxford Advanced Learner's Dictionary، Longman Dictionary of Contemporary English و Merriam Webster 10th Dictionary نیز در بین دیکشنری‌های قابل نصب مشاهده می‌شوند که در صورت شکایت صاحبان حق کپی این کتب، دیگر قادر به دانلودشان نخواهیم بود.


* در شکل بالا واژه‌ی bill جستجو شده است که گره‌های متفاوتی برای معانی مختلف نشان داده می‌شود رنگ گره‌ها نقش ساختاری (فعل، اسم، صفت) را مشخص می‌سازند. من ماوس را روی گره مشترک با واژه‌ی note نگه داشته‌ام که همانطور که می‌دانید معنی مشترک این لغات که هر کدام معانی بسیاری دارند اسکناس بانکی است.