شنبه، آذر ۲۱، ۱۳۸۸

و روزی که من Seam یاد گرفتم...

امروز دومین روزی است که دارم کتاب Seam in Action یا به قول دوستان سیمین اکشن را می خوانم. قبلا هیچ گاه بیشتر از دیدن چند برنامه نمونه و تجربه قبلی JSF به درون Seam نرفته بودم و نیازی به یادگیری بیشتر حس نمی کردم. ولی این بار من باید یک برنامه جهنمی را تغییر دهم و چون نویسندگان این برنامه هیچ گونه دانشی در زمینه جاوا (J2EE و سایر موارد بماند) نداشته اند، کد برنامه بسیار ترسناک شده است.

تقریبا من در حال تعمیر یک بنای باستانی هستم که به هر دیوار آن کلنگ می زنم سقف روی سرم خراب می شود. نکته مثبت این پروژه این است که من بالاخره باید در مورد JSF و Seam بیشتر یاد بگیرم. در حین خواندن Seam in Action به پست The Law of Leaky Abstractions از بلاگ Joel Spolsky برخوردم. فکر می کنم کسی نمی تواند بهتر از Joel این حس را توصیف کند. این مقاله را حتما بخوانید. متاسفانه اشکال تکنولوژی هایی مثل JSF این است که سطح abstraction بالایی فراهم می کنند و درنتیجه با دانش 20 درصدی می توان 90 درصد کارها را انجام داد ولی برای حل 10 درصد باقیمانده باید با زیر و بم تکنولوژی آشنا شد و این کار در مورد JSF و Seam خیلی ساده نیست.

در ضمن طی این دو روز حس می کنم که تازه فهمیدم Seam همان Spring نیست که به جای XML از Annotation ها استفاده می کند. Seam در واقع اولین مدل Stateful برنامه های وب جاوایی است که می توانند از EJB استفاده نکند. (حداقل اولین برای من) و این خود یک paradigm shift بزرگ برای کسی است که همیشه در دنیای Stateless زندگی کرده است.
نوشتن یک برنامه با دید Stateless و استفاده از Seam هدر دادن وقت و هزینه است و عاقبت دردناکی دارد. برای استفاده از هر تکنولوژی باید با روح آن آشنا شد. به همه کسانی که دوست دارند از این تکنولوژی استفاده کنند خواندن کتاب Seam in Action را توصیه می کنم و در آخر هم جمله Joel Spolsky:

All non-trivial abstractions, to some degree, are leaky

جمعه، آذر ۲۰، ۱۳۸۸

The Cool Cat

The last Ubuntu was a disappointment to me. I hope the next one be better! The first alpha version of the next Ubuntu code named "Lucid Lynx" released yesterday. Lynxes are some kind of wild cats. I love cats. Take a look at these cats. Aren't they cool? ;)

پنجشنبه، آذر ۱۹، ۱۳۸۸

مرتب کردن فایل های mp3 با MusicBrainz Picard

اگر شما هم مثل من آلبوم های موسیقی خود را دانلود می کنید، حتما متوجه شده اید که برنامه های پخش موزیک با قابلیت مدیریت کتابخانه مثل RhythmBox، iTunes و Amarok، بسیاری از اسم آهنگ ها را درست نشان نمی دهند و در آن ها را در آلبوم های مختلف یا در یک گروه دسته بندی نشده قرار می دهند.
مشکل اینجاست که این برنامه ها اطلاعات (Tag) تگهای mp3 را می خوانند و به اسم فایل ها کاری ندارند. بعضی وقتها حتی اسم فایل ها هم درست نیست. برای داشتن یک کتابخانه آهنگ منظم باید اطلاعات تگ ها را پر کنید. برای این کار می توانید از برنامه ای به نام MusicBrainz Picard استفاده کنید. این برنامه به پایگاه داده MusicBrainz متصل می شود و با استفاده از اطلاعات فایل (مثلا md5) داده ها را گرفته و در تگ های mp3 ذخیره می کند. در مواردی هم که دقیقا این فایل پیدا نشود با استفاده از اسم فایل می توانید یک جستجوی دستی انجام داده و پس از پیدا کردن بهترین مورد اطلاعات را در فایل ذخیره کنید. Picard با استفاده از Python و qt4 نوشته شده است و می تواند در هر سه سیستم عامل ویندوز، لینوکس و مک اجرا شود. این برنامه در مخازن اوبونتو نیز موجود است. من در اینجا چند screenshot برای تکمیل یک آلبوم که به تازگی دانلود کرده ام را به شما نشان می دهم تا مراحل کار را ببینید. برای اطلاعات بیشتر در مورد استفاده های خاص از این برنامه به سایت برنامه مراجعه کنید. همچنین می توانید سوال های خود را در بخش نظرات بپرسید.
پس از نصب و بالا آمدن Picard ابتدا دو تغییر زیر را در Options-->Options انجام دهید تا اسم فایل های تگ شده در هنگام ذخیره بر اساس الگوی مشخص (شماره track و نام آهنگ ) تغییر کند:
و سپس "جابجایی فایل ها" را فعال کنید تا فایل های تگ شده در سلسله پوشه ها با نام گروه و آلبوم ذخیره شوند.
خوب من در اینجا یک آلبوم از Travis دارم که اطلاعات تگ های آن ناقص است و در پوشه ای به نام گروه و آلبوم ذخیره شده است.
این پوشه را به Picard اضافه می کنم.
سپس دکمه scan را می زنم تا عملیات تطبیق شروع شود. همانطور که در تصویر زیر می بینید آهنگ های من از دو آلبوم Travis گرفته شده اند (اسم آلبوم ها یکی است اما مدت زمان پخش آن متفاوت است). آهنگ های تطبیق داده شده با یک علامت سبز رنگ مشخص می شوند. اگر تطبیق کامل نباشد، رنگ این آیکون زرد یا قرمز خواهد بود.
خوشبختانه همه فایل ها پیدا شدند. در این مرحله اگر داده های تگ پیدا نشد، دکمه lookup را بزنید و در سایت MusicBranz دنبال تگ مورد نظر بگردید. اطلاعات بیشتر را در فروم و ویکی MusicBrainz پیدا کنید.
خوب در اینجا من فایل های تطبیق داده شده را ذخیره می کنم.
در شکل زیر می توانید ببینید که تگ فایل ها کامل شده است و به صورت منظم در محل مورد نظر ذخیره شده اند.

چقدر گیک هستید؟

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





چهارشنبه، آذر ۱۸، ۱۳۸۸

این هفته: Red Hat یا CentOS

پشتیبانی تجاری برای CentOS از طرف شرکت OpenLogic می تواند مشتریان بالقوه Red Hat را به آغوش توزیع آزاد لینوکس بکشاند. با این وجود مدل اشتراک و پشتیبانی Red Hat همانند گذشته برای بسیاری از شرکت ها یک برتری متقاعد کننده است.
یک خبر خوش برای کاربران CentOS – حداقل در ایالات متحده: برای پشتیبانی حرفه ای از کپی Red Hat، کاربران می توانند به OpenLogic مراجعه کنند. عرضه کننده رده محصولات اوپن سورس از برنامه های هماهنگ و گواهی شده (ویکو: بسیاری از شرکت ها برای آنکه به کاربران اطمینان دهند که محصولشان روی توزیع خاصی از لینوکس کار می کند یک گواهی برای آن اجرا روی آن توزیع صادر می کنند. از معروفترین این گواهی ها می توان به certification اجرا روی RHEL و SLES اشاره کرد)، این توزیع لینوکس را به سرپرستی پذیرفت. قرارداد سرویس دو سطحی یک دسترسی سریع برای پشتیبانی فنی را عرضه می کند. علاوه بر این، آنها کاربران را در مقابل هرگونه ادعای حقوقی اشخاص ثالث که ممکن است از استفاده CentOS پدید آید محافظت می کنند. با قیمت 500 دلار در سال برای یک سرور، این پشتیبانی باید برای شرکت های کوچک تر نیز قابل پرداخت باشد.
CentOS یک راه حل برای افرادی است که نمی خواهند از پایداری و نیرومندی Red Hat Linux Enterprise چشمپوشی کنند، با این حال علاقه ندارند خود را به مدل اشتراک Red Hat وابسته کنند. این موضوع می تواند به سادگی دلایل مالی داشته باشد، اما همچنین یک انتخاب برای کاربرانی است که خود دارای تخصص کافی برای تنظیم و نگهداری یک چنین سیستم لینوکسی هستند. CentOS از سورس RHEL ساخته می شود و از دید باینری با الگوی خود سازگار است. همچنین توسعه دهندگان آن همانند RHEL برای کاربران هفت سال بروزرسانی های امنیتی را فراهم می کنند. این یک دلیل قانع کننده برای مدیران سیستمی است که دوست ندارند هر دو سال یک بار سیستم خود را از نو برپا کنند.
CentOS تنها کپی Red Hat نیست. همچنین Scientific Linux نزد یک گروه متفاوت از مخاطبین محبوب است. OpenLogic نیز تنها سرویس دهنده ای نیست که برای CentOS پشتیبانی فراهم می کند. برای مثال در کشورهای آلمانی زبان Credativ شریک OpenLogic با مرکز پشتیبانی اوپن سورس خود این کار را انجام می دهد. اما Credativ هیچ گونه گارانتی در صورت وقوع ادعاهای حقوقی ارایه نمی دهد، کاری که OpenLogic انجام می دهد.
در ضمن Red Hat در مقابل پروژه هایی مثل CentOS و Scientific Linux خونسرد عمل می کند. حتی خبر عرضه پشتیبانی از طرف OpenLogic احتمالا تغییری در رویه Red Hat ایجاد نخواهد کرد. ارزش مدل اشتراک Red Hat ، آنگونه که خود کلاه قرمزی ها استدلال می کنند، خیلی در خود نرم افزار(که سورس آن به صورت آزاد در دسترس است) نیست، بلکه در قابلیت های مدیرتی مثل شبکه Red Hat، در حمایت از طرف خود تولید کننده و همچنین در گواهی Red Hat برای پلاتفرم های مشخص و برنامه عرضه شده توسط سایر شرکت هاست.
CentOS و شرکا به وضوح یک خلا را پر می کنند. هر کس که Red Hat برایش یک شماره بزرگ (گران) باشد، به گزینه های آزاد دیگر می چسبد. به علاوه این کپی ها دامنه مشتریان بالقوه Red Hat را افزایش می دهند: وقتی که نیاز به پشتیبانی افزایش یابد یا موضوع گواهیRed Hat در میان باشد، جابجایی از CentOS به RHEL به سادگی صورت می گیرد. اما همه کاربران عمده CentOS به مشتریان Red Hat تبدیل نخواهند شد. کسانی که پشتیبانی یا قابلیت های تجاری را نیاز ندارند، اما می خواهند از Red Hat روی بسیاری از سیستم ها استفاده کنند می توانند با CentOS در پول زیادی صرفه جویی کنند.
دقیقا همین جا روی دیگر سکه خود را نشان می دهد. نه تنها Reh Hat در توسعه کرنل نقش تعیین کننده ای بازی می کند، این توزیع کننده همچنین اسپانسر بسیاری از پروژه های اوپن سورس است – در این بین Fedora که پیشتاز عرضه ویژگی های جدید است – که در سیستم عامل آزاد جریان دارند. اگر به این دید نگاه کنیم تعداد کمتر مشتریان Red Hat به معنی پول کمتر برای نرم افزار آزاد و در نهایت نو آوری کمتر است.
به همین دلیل به طور مشخص همه مشتریان بزرگ و دارای تخصص کافی محصول با قیمت مناسب تر را انتخاب نمی کنند. به عنوان مثال آمازون به صورت مصصم برای سرورهای بیشمار خود از Reh Hat استفاده می کند و این کار را از یک مدت طولانی قبل انجام می دهد. فروشگاه آنلاین اجازه می دهد ازطریق سازمانی پول در پروژه های اوپن سورس جریان داشته باشد، حتی وقتی که در سایه تخصص خود آنچنان به پشتیبانی Red Hat وابسته نیست.
اما برای CentOS پشتیبانی از توزیع توسط OpenLogic به هر حال باعث گسترش شناخت از این محصول و این خود باعث افزایش کاربران و امکان استفاده می شود. در اکوسیستم بزرگ اوپن سورس برای همه فضا وجود دارد.

ترجمه مقاله Die Woche: Red Hat oder CentOS

پنجشنبه، آذر ۰۵، ۱۳۸۸

باستان شناسی در نرم افزار از زبان Dave Thomas

همین الان episode شماره 148 از رادیوی مهندسی نرم افزار را گوش دادم و فقط می توانم بگویم wow! یک گفتگوی یک ساعته سرگرم کننده و فوق العاده آموزنده برای کسانی که به هر نحوی با کد درگیر هستند.
این episode را بشنوید و نظرات خود را در با من در میان بگذارید.

جمعه، آبان ۲۲، ۱۳۸۸

این هفته: گنوم 3.0 برای اولین بار زمانی که برگها می ریزند

[ heise.de یکی از سایت های محبوب من در زمینه اخبار IT است. یکی از بخش های این سایت که متاسفانه در بخش انگلیسی وجود ندارد مقالات هفتگی است که در مورد یکی از مباحث روز اوپن سورس نوشته می شود. از این به بعد هر هفته ترجمه این مقاله ها را با عنوان این هفته در وبلاگ قرار می دهم. این اولین تجربه من در ترجمه یک متن فنی از آلمانی به فارسی است بنابراین از دوستان عزیز تقاضا دارم که پیشنهاد ها و انتقاده های خود را از من دریغ ننمایند!
کشور آلمان یکی از کشورهای پیشرفته در زمینه اوپن سورس و نرم افزار آزاد است. برای مثال آلمان با 40 درصد بالا ترین درصد استفاده کنندگان فایرفاکس در کشورهای پیشرفته را به خود اختصاص داده است. امیدوارم این مقالات برای شما نیز مفید باشد ]

براستی نمی توان برنامه نویسان گنوم را (به خاطر اعلام زمان قبلی انتشار گنوم 3.0) عجول و بی فکر نامید. برای اینکه پایداری محیط دسکتاپ محبوب لینوکس را به خطر نیندازد، تیم انتشار گنوم تصمیم گرفت، نسخه 3.0 را برای اولین بار در پاییز بعدی منتشر کند.
هنگامیکه این هفته خبر تصمیم انتشار گنوم 3.0 در سپتامبر 2010 به طور رسمی اعلام شد، کمی نامید بودم. اما این خبر یک غافلگیری غیر قابل پیشبینی نبود. در واقع این تصمیم با شعار گنوم کاملا هماهنگ است: بهبود ظاهر دسکتاپ لینوکس به صورت پیوسته اما نه بطور خاص با سرعت زیاد صورت می گیرد.
رقیب گنوم، KDE روش کاملا متفاوتی دارد. هنگامیکه این پروژه تقریبا دو سال پیش با معرفی KDE 4 تغییرات اساسی اعمال کرد و محیط دسکتاپ خود را از نو چید، سر و صدا و اعتراض زیادی به راه انداخت. این موضوع پیش از هر چیز دیگر به این دلیل بود که سازندگان KDE، دسکتاپ جدید را به صورت یک محصول نیمه تمام به کاربران خود ارایه کردند. خود تغییرات اعمال شده در KDE 4 کمتر مشکل ساز بودند.
از KDE 4.0 - در واقع یک نسخه بتا که هنوز از بسیاری از بیماری های کودکان رنج می برد – تا KDE 4.3 کار زیادی انجام شده است. در این ضمن تقریبا همه کاربران KDE به سیستم جدید عادت کردند و هر روز به تعداد distro های متمرکز بر KDE که ورژن پایدار قبلی (KDE 3) را از مخازن خود حذف می کنند افزوده می شود.
انجام چنین کاری از گنوم غیر قابل تصور است. این که گنوم 3.0 با بسیاری تغییرات جدیدش را عرضه کنند بدون آنکه سیستم را با کامل و دقیق تست کرده باشند، با فلسفه گنوم سازگار نیست. بنابراین ویژگی های جدید و چشمگیر احتمالی نظیر Gnome Sell و Gnome Zeitgeist که از شش ماه پیش در دسترس هستند، برای یک مدت طولانی آماده نخواهند شد و احتمالا تا ماه مارس (نسخه جدید گنوم دو بار در سال، همواره در مارس و سپتامبر منتشر می شود) به مرحله بتا می رسند.
علاوه بر این Gnome Shell، یکی از چنان تغییراتی (به کلمات زیبای انگلیسی User Experience) است که تیم گنوم نمی خواهد قبل از آن که نتایج Usability-Test آن مثبت باشد آن را به کاربران عرضه کند. یک روش عاقلانه در دنیایی که نرم افزار به صورت نیمه پخته برای کاربران سرو می شود و کاربر به عنوان یک موش آزمایشگاهی به کار گرفته می شود.
همچنین این مساله که اینتل برای Clutter GUI-Toolkit - که همراه با Metacity پایه موتور جدید مدیریت پنجره ها Mutter در گنوم 3.0 است - تقاضای یک به اصطلاح copyright-assignment کرده است کمی کار را پیچیده کرده است. به طور کلی این موضوع فرمالیته است اما هنوز کاملا تکلیف آن روشن نشده است.
بنابراین گنوم 2.30 در مارس آینده می آید. با وجود اینکه بعضی سایت های خبری این را به عنوان یک تاخیر نشان دادند اما تیم انتشار گنوم امکان تاخیر را از ابتدا به حساب آورده بود. مدیر انتشار گنوم، وینسنت اونتس در یک مصاحبه در زمان انتشار گنوم 2.28 به طور واضح بیان کرده بود: "ما می خواهیم گنوم 3.0 را در مارس 2010 عرضه کنیم، اما وقتی این موضوع امکان پذیر نباشد با این موضوع که قرار را به سپتامبر 2010 به تعویق بیندازیم، مشکلی نداریم. وقتی مارس برای عرضه قابل تحقق نباشد، گنوم 3.0 در پاییز می آید."
برای کاربران اوبونتو این موضوع تفاوت بزرگی ایجاد نخواهد کرد. نسخه جدید اوبونتو 10.04 (Lucid Lynx) که برای آوریل 2010 برنامه ریزی شده است یک نسخه Long-Time-Support است که کمپانی مادر کانونیکال دوست ندارد آن را با نرم افزار خیلی جدید عرضه کند. بنابراین حتی اگر گنوم 3.0 در مارس آماده می شد تازه برای اولین بار در اوبونتو 10.10 که اکتبر 2010 می آید سر و کله اش پیدا خواهد شد.
در اوپن سوزه و فدورا، گنوم 3.0 اولین اجرای خود را در نسخه های 14 در فدورا و 12 در اوپن سوزه تجربه خواهد کرد. علاقه مندان به تست دسکتاپ جدید می توانند از هم اکنون نسخه در حال توسعه را از مخازن نصب کنند.

چهارشنبه، آبان ۲۰، ۱۳۸۸

رفع مشکل Eclipse در اوبونتو 9.10

اگر شما هم با Eclipse در اوبونتو کار می کنید حتما متوجه رفتارهای عجیب آن در اوبونتو 9.10 شده اید. هر دو نسخه 3.4 و 3.5 این مشکل را دارند که بعضی دکمه ها با کلیک ماوس کار نمی کنند (بدون این راه حل می توانید با Enter یا Space bar فرمان را به دکمه ها بفرستید). همچنین بعضی آیکون ها نمایش داده نمی شوند. علت استفاده کارمیک از GTK 2.18 است که به دلیل جدید بودن باعث به وجود آمدن این مشکلات شده است. یک راه حل این مشکل downgrade به GTK 2.16 است که در مخازن موجود نیست و باید از سورس کامپایل شود. خوشبختانه یک راه حل بسیار ساده برای حل این مشکل وجود دارد: قبل از اجرای Eclipse مقدار متغیر محیطی GDK_NATIVE_WINDOWS را به عدد یک set کنید.

مسلما راه های زیادی برای این کار وجود دارد. یکی از ساده ترین راه ها استفاده از اسکریپت زیر برای اجرای Eclipse است:
#!/bin/sh
export GDK_NATIVE_WINDOWS=1

./eclipse
این اسکریپت را در فولدر Eclipse قراردهید و برای اجرای Eclipse از آن استفاده کنید تا این مشکلات محو شوند!

سه‌شنبه، آبان ۱۹، ۱۳۸۸

Polite Exceptions

As you already know Java has two kinds of exceptions. Checked and unchecked. In the former version compiler complains about the possibility of something going wrong and forces you to handle the doomsday scenario! but unchecked exceptions are happening at runtime and .... Read the rest in a Java text book.

Last week I was working on JBoss, trying to get a DB2 connection from JBoss's connection pool and it threw an exception. It was really a very polite exception:
18:56:50,238 INFO [CachedConnectionManager] Closing a connection for you. Please close them yourself: org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5@1e120da
java.lang.Throwable: STACKTRACE
at org.jboss.resource.connectionmanager.CachedConnectionManager.registerConnection(CachedConnectionManager.java:290)
at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:423)
at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849)
at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)
....
It was the best exception of my life! It closed the connection for me and told me PLEASE close it yourself! :)

This post does not intend to be technical but if you encountered the same problem leave a comment here and I will tell you how I managed to solve it.

دوشنبه، آبان ۱۸، ۱۳۸۸

یک اصطلاح جالب از مارتین فاولر

دیروز مطلبی در مورد continuous integration در سایت مارتین فاولر می خواندم. مارتین فاولر یکی از خوش فکر ترین افراد حال حاضر دنیای نرم افزار است. خواندن مقاله های مارتین بسیار لذت بخش است. در حین خواندن این مقاله به پاراگراف زیر برخوردم که اصطلاح جالبی داشت و مطرح کردن آن خالی از لطف نیست:
The basic rule of thumb is that you should be able to walk up to the project with a virgin machine, do a checkout, and be able to fully build the system. Only a minimal amount of things should be on the virgin machine - usually things that are large, complicated to install, and stable.
یک ماشین virgin! راستش تا کنون من در مورد کامپیوتری که باهاش کار می کنم این گونه فکر نکرده بودم که زمانی virgin بوده است! یک بار سر یک پروژه JBoss درست کار نمی کرد. همکارم به من گفت که بیا یک JBoss نو نصب کنیم و عملیات را دوباره تکرار کنیم و کلی به اصطلاح JBoss نو خندیدیم ولی فکر نمی کردم که بشود اصلاح virgin را برای JBoss هم به کار برد!

بنا بر ارادتی که به برادر کچل فاولر دارم مراحل استفاده از یک ماشین (منظور نرم افزار نصب شده روی ماشین) از دید ایشان را تشریح می کنم.
  1. ماشین virgin است و خوب شما با نصب برنامه ها آن را از این حالت خارج می کنید!
  2. زندگی زناشویی شما با ماشین شروع می شود. گاهی برنامه ها به شما حال می دهند. گاهی مجبور می شوید از راه های دیگری عمل کنید تا امورات شما بگذرد! (مثلا استفاده از command line به جای gui) و خوب گاهی هم ممکن است جای شما و ماشین عوض شود و بخواهد مقداری با شما حال کند که معمولا زیاد می افتد.
  3. زمانی از دست این زندگی خسته می شود و درایو ها را فرمت می کنید و یک ساعت بعد یک ماشین virgin جدید خواهید داشت!
If life was that easy! ;)

و نکته مهم در مورد Continuous Integration و سیستم ساخت این است که بتوانید سریع ماشین را راه بیاندازید و به زندگی خود ادامه دهید!

شنبه، آبان ۱۶، ۱۳۸۸

چرا سوییچ به ویندوز 7 برای کاربران لینوکس ایده خوبی است

امروز چهارمین روز مهاجرت از اوبونتو به ویندوز 7 است و باید صادقانه بگویم که ویندوز جدید مایکروسافت را دوست دارم. من معمولا ایده ها و محصولات جدید (در دنیای نرم افزار) را امتحان می کنم. این کار یکی از بهترین ابزارها برای جلوگیری از طرفداری بی دلیل از یک محصول است. مسلما هیچ چیز کامل نیست ولی تغییر محیط اثرات مطلوبی دارد. عمل به جمله های زیر یکی از اهداف من در زندگی است:

People who have been deprogrammed more than once seem to be the most
rational. A single ideology conversion can change one fanaticism for another.
After a second conversion, people tend to get a sense that many whole
collections of ideas – contradicting each other – can seem equally true. This
makes people suspicious of such collections of ideas, and thus more resistant to
the effects of parasitic idea-organisms.
One way to help free your mind is to deliberately adopt a new Ideology,
then deliberately trade it for another.

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

تغییر محیط تنها دلیل من برای استفاده از ویندوز 7 نیست. علاوه بر اینکه در ویندوز می توانم با iTunes آیپادم را sync کنم و با Adobe Acrobat Pro فایل های PDF را Annotate کنم (دو مشکل اساسی من در اوبونتو) ویندوز جدید سیستم عامل فوق العاده ای است. در زیر لیست ویژگی های مورد علاقه من در ویندوز 7 آورده شده است:
  • سرعت و مصرف حافظه قابل قبول. ویندوز 7 روی لپ تاپ من که 2 سال از عمرش می گذرد نسبت به ویستا بسیار سریعتر بالا می آید و تقریبا نصف آن حافظه می گیرد. هر چند سرعت بالا آمدن Karmic Koala بهتر از 7 است اما Come on! سرعت 7 در مقابل امکاناتی که در نصب برنامه های مختلف به شما می دهد قابل قبول است. من ترجیح می دهم به جای 30 یک دقیقه صبر کنم اما برنامه های مورد نیازم را داشته باشم. علاوه بر این Hibernate هم اینجا کار می کند. (کارت گرافیک من Nvidia است و این ویژگی در لینوکس کار نمی کرد)
  • Taskbar جدید که ترکیبی از مدل قدیمی و dock در OS X است.
  • مدیریت شبکه ها در Notification Area که ساده تر شده است.
  • تنظیم ها و اخطارهای امنیتی ویستا یک فاجعه بود که خوب در 7 خبری از آنها نیست.
  • تم های جدید که wallpaper را اتوماتیک عوض می کنند. واقعا از ظاهر قهوه ای و کهنه گنوم خسته شده بودم ظاهر براق و ترکیب رنگ های 7 برایم جذاب است.
فعلا که همه چیز به خوبی کار می کند. سایر ابزارها هم که تفاوتی نکرده اند. بجای Rythmbox از iTunes استفاده می کنم. فایرفاکس، کروم و Eclipse هم که همان ابزازهای آشنای قدیمی هستند. در ضمن می توانم بازی هم بکنم (Silent Hill Home Coming)

به همه لینوکسی ها توصیه می کنم که:
Give yourself (and your open source ideology) a break and start using Windows 7! Maybe something good comes out of it! ;)

پنجشنبه، آبان ۰۷، ۱۳۸۸

مارک شاتلورث و تبعیض جنسیتی در کنفرانس لینوکس

اگر شما هم مثل من مشترک RSS سایت های خبری لینوکسی باشید حتما از موضوع صحبت بحث برانگیز مارک شاتلورث (Mark Shuttleworth) مطلع شده اید. پست های ماه اکتبر من همگی به بحث های غیرعملی اما مهم اختصاص داشتند، بنابراین تصمیم گرفتم این بار نیز در مورد موضوعی مشابه که ممکن است برای کاربران لینوکس فارسی زبان ناشناخته باشد بنویسم. امیدوارم در هفته آینده پست لاتک فارسی را اضافه کنم. در ضمن با اینکه تعداد زیادی در نظر سنجی نوع RSS شرکت نکردند، همه به جز خودم مایل به خواندن تمام پست در Google Reader خود هستند! به خاطر احترام به نظر دیگران (بخوانید چون نظر سنجی گذاشتم و می خواهم خودم را دموکراتیک نشان دهم) از این پس پست ها به صورت کامل دریافت می کنید. ولی فکر می کنم RSS خلاصه باعث می شود که دوستان مجبور شوند به صفحه پست بیایند و (شاید) در بحث مشارکت داشته باشند.

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

در LinuxCon 2009 آخرین نطق اصلی با شاتلورث بود. بعد از خواندن این جوابیه به مارک درReader به موضوع علاقه مند شدم. مخصوصا اینکه این جوابیه از سوی مدیر سایت GeekFeminism (واقعا دوست دارم با چشم های خودم یکی از این گیک های فمینیست را ببینم) تنظیم شده بود. برای این که قضاوت بهتری از صحبت های مارک داشته باشم ویدیو صحبت را دانلود و مشاهده کردم. زمان صحبت ۵۵ دقیقه است و به نظر من ارایه عالی بود. نکته جالب دیگر محیط اجرای کنفرانس است. با اینکه پشت سر مارک اسم اسپانسر ها که هر کدام شرکت های بزرگی هستند نوشته شده بود (IBM, Intel, Dell) سالن اجرا خیلی حقیر به نظر می رسید و اکثر صندلی های سمت راست جلو خالی بودند. در ردیف های آخر هم یک سری گیک با شلوارک نشسته بودند! چون امسال ویدوهای کنفرانس Java One را هم دیده بودم باید بگویم که این دو کنفرانس قابل مقایسه نبودند! خالی از لطف نیست که نظر Cay Horstmann در مورد کنفرانس Oracle Open World را هم بشنویم:
"Yesterday, I wrote that Oracle OpenWorld seemed a bit bigger than Java One. Today when I saw the crowds during daytime I realized how naive I was. This is a HUGE conference, filling the main Moscone building, Moscone West, and two hotels."
راستش ارایه مارک بسیار خوب بود و من به عنوان یک الگوی خوب در مدیریت software release آن را به مدیر پروژه تیمم دادم تا ببیند بلکه کمی یاد بگیرد. ایده ها و روش های بیان شده بسیار مدرن بود مثل automated testing و خوب واقعا جای تعجب ندارد که چگونه اعضای تیم اوبونتو می توانند با این نظم مثال زدنی محصول خود را هر ۶ ماه یک بار ارایه کنند. به همه کسانی که به بحث مدیرت تولید نرم افزار علاقه مند هستم توصیه می کنم این ویدیو را ببینند.

خوب بعد از مقدمه طولانی بالا به اصل مطلب بپردازیم. مارک در حدود دقیقه ۳۵ ارایه جمله های زیر را می گوید که باعث رنجش فمینیست ها شده است:
"How many of you guys know Till [Kamppeter]... making sure that your printer, your mom's printer, my grandma's printer just work out of the box...if we can do the same with sound, if we can do the same with wi-fi, we can do the same for various other amazing subsystems that are going to come into the kernel...if we approach this from the perspective of saying "How do we make this just awesome for end users" then we'll have less trouble explaining to girls what we actually do."
خوب جمله بالا تنها بخشی از اتهامات مارک است. دو اتهام دیگر مارک استفاده از guys به جای people و mom, grandma است. می توانید همه صحبت های به اصطلاح تبعیض آمیز مارک را در این صفحه ببینید. راستش من به عنوان کسی که انگلیسی زبان دومش است وقتی صحبت ها را شنیدم اصلا متوجه نشدم که به کار بردن guys به جای people ممکن است تبعیض آمیز باشد و موقع گفتن جمله به اصطلاح تبعیض آمیز همراه بقیه جمعیت حاضر خندیدم! برخلاف فمینیست ها برداشت من از مارک یک آدم خیلی باحال و با انرژی بود که کمی هم شوخی چاشنی سخنرانی خود کرده بود. به هر حال این نویسنده فمینیست صحبت های به اصلاح تبعیض آمیز مارک را به عنوان چند تا مگس در سوپ توصیف کرده که کل سوپ را باید دور ریخت!

چند کامنت به این پست به نظر من جالب بودند:
"There is no fly in the soup... its just a little lump of pepper! Alas, not everyone has the same taste"

"As an American English speaker, I have a hard time taking the usage of the term 'guys' in the speech as anything other than a generic reference to a group of people, commonly used by both men and women.
People use the mom and grandma references all the time without them being labeled as a sexist comments."

"I think the only real sexist things he said were the opening joke and "explaining to girls" remark. The thing about mom and grandma is something that everyone on the net uses. It's just shorthand for clueless users. And "guys" is what I call everyone. In Spanish the male pronoun is used for groups of mixed sexes."

"Can't you see, this is a battle to keep one of the last bastions of male supremacy alive!
THEY corrupted our right to vote, work, go to war, they even try to rule us now (Germany has already fallen) ... erm YOU WITCH! (Though I suspect that people wont try to torture and burn you now ... ah the good old days )"

در مورد کامنت اول باید بگویم که بعضی ها متاسفانه اینقدر تو ایدولوژی احمقانه خود ذوب هستند که حتی یک شوخی به این باحالی را هم نمی گیرند و خوب ...
در مورد کامنت دوم نمی توانم نظر بدهم چون از تخصص من خارج است ولی منطقی به نظر می رسد.
در مورد نظر سوم هم به نظر من این مساله سکسیسم خیلی بی مزه شده و همراه با اسپرسو به صورت سمبل روشنفکری (پوشالی) در آمده است. من برای قبول یک مساله به مدرک نیاز دارم. اتفاقا چند روز پیش همین بحث سر کلاس زبان مطرح شده بود که آیا زن و مرد مساویند و .... استاد گرامی ما گفت که در رشته های هنری خانم ها پیشتاز هستند! من از استاد پرسیدم چند تا فیلم واقعا خوب دیده اید که کارگردان زن داشته باشند؟ گفت که زن ها در طول ۱۰۰ سال گذشته تحت فشار بوده اند و خوب فرصت ارایه نداشته اند! ببینید این جواب برای من دلیل کافی نیست. من به evidence نیاز دارم! اولا من نمی گویم که از نظر پتانسیل فکری زنان ضعیف تر از مردان هستند ولی با توجه به واقعیت های تاریخی و حالا هر چی اسمش را می گذارید هم اکنون در بعضی از رشته ها مردها پیشتاز هستند! (و البته در بسیاری از رشته ها نیز زنان عملکرد بهتری دارند)
یکی از جاهایی که این تفاوت مشهود است رشته های مربوط به علوم کامپیوتر است. در تیم کنونی نرم افزاری ما دختر وجود دارد و من به چشم خود دختری که بتواند برنامه بنویسد ندیده ام! (منظورم از برنامه Hello World نیست) البته مسلما این افراد وجود دارد اما تعدادشان کم است. این واقعیت دنیای امروز IT است. اگر ۲۰ سال دیگر این موضوع تغییر کرد من هم نظرم را عوض می کنم که تعداد مردان و زنان موفق در صنعت IT برابر است! حتی اگر مارک این مساله را جدی بیان کرده بود من با آن موافقت می کردم! ولی فکر می کنم که یک شوخی بود نه چیزی که بخواهد دختران را از لینوکس باز دارد.

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

یکشنبه، آبان ۰۳، ۱۳۸۸

و اندر احوالات اوپن سورس

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

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

خوب بعد از مقدمه بالا می رویم سر اصل مطلب. در پستی که امشب خواندم یک خبرنگار بی بی سی تجربیات خود را در مورد ۲۴ ساعت کار با اوبونتو در میان می گذارد. البته آدرس مربوط به سایت Tuxradar و در حقیقت یک جوابیه به این مقاله است. مقاله اصلی را در این آدرس ببینید. این جمله ها در این مقاله به نظرم بسیار جالب و تامل برانگیز هستند:
"whole sort of little community of enthusiasts building operating systems for absolutely nothing."

"So would I actively seek to install Ubuntu or any other Linux variant on a machine I already owned? To be frank, no, because it would not make my computing life any simpler and more pleasurable than it is now."
عمق فاجعه اینجاست که چنین موضوعی توسط خبرنگار یک رسانه اصلی مطرح می شود و خوب بسیاری از کاربران برای اولین بار اسم اوبونتو را از اینجا خواهند شنید و این کامنت ها نمی تواند کسی را به سمت لینوکس بیاورد. البته دوستان عزیز الان نوشته من را تصحیح می کنند که لینوکس اشتباه است و به جای آن بگویید گنو/لینوکس و عده ای هم خواهند گفت که لیاقت این ژورنالیست و مخاطبان احمقش همان ویندوز است.

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

در آخر هم نکته ای در مورد ایده های اوپن سورس و انتزاعی بودن آنها بگویم. به نظر من ساختن نرم افزارهای بزرگ مثل Eclipse یا OpenOffice به دلیل ماهیت خاصی که دارند بدون کمک شرکت های بزرگ ممکن نیست. بهترین محصولات اوپن سورس توسط کمپانی های بزرگی مثل IBM و Sun خدابیامرز عرضه و ساپورت می شوند و این روند هم ادامه خواهد داشت. گوگل هم اخیرا نشان داده که علاقه مند است در این زمینه فعالیت کند و فکر می کنم بعد از سالها تلاش Redhat، Novel و Canonical این گوگل خواهد بود که لینوکس را عمومی تر خواهد کرد. تنها راه متقاعد کردن سایر شرکت ها به عرضه محصولات در لینوکس این است که اعتماد عمومی به این سیستم عامل افزایش یابد و من واقعا ایده روشنی ندارم که چه زمانی این اتفاق خواهد افتاد.
It is as good as it gets :(

چهارشنبه، مهر ۲۲، ۱۳۸۸

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

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

در مقاله فوق کاربران بر اساس میزان توانایی در مهاجرت به لینوکس در دسته های زیر قرار داده شده اند.
  • مرورگران غیر جدی وب: تنها استفاده این کاربران از کامپیوتر، مرورگر وب و در برخی موارد کلاینت ایمیل است. معمولا این کاربران هیچ چیز از کامپیوتر نمی دانند و سوییچ به لینوکس برای این افراد ایده آل است:

    These people for the most part don’t understand how computers work, and don’t really have to. They’re probably perfect Linux candidates, without them even necessarily knowing WHAT Linux even is.

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

    These would be good candidates for Linux, as long as they can manage to find where their documents are on a Linux system, and if they TRULY don’t exchange documents with anyone else (most people actually DON’T)

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

    These people CAN be good Linux candidates, but only if whoever is setting it up for them does a lot of checking in advance to make sure their usage is as casual as it seems (and also that they aren’t in the sub-group needing “True” Office).

  • کاربرانی که دوست ندارند هر روز تنظیمات کامپیوتر را دستکاری کنند: این دسته از کاربران مقداری پیچیده تر از دسته های قبلی هستند. معمولا نرم افزار های مورد نیاز خود را نصب میکنند. یک آیپاد دارند و از iTunes استفاده می کنند. ممکن است بعضی از این افراد نیز کاربران حرفه ای آفیس یا فتوشاپ باشند. برای این افراد سوییچ به لینوکس ایده بدی است.

    These are often bad candidates for Linux, because they can be casual AND demanding in different ways as users. They want things to be easy, and yet always work. They should probably stick with Windows and Mac.

  • کاربران قوی: این دسته از کاربران متخصص به حساب نمی آیند اما معمولا اینقدر توانایی یا پشت کار دارند که بتوانند کارهای مورد نظر خود را در لینوکس انجام دهند. برای مثال وقتی می بینند که iTunes در لینوکس کار نمی کند به دنبال جایگزین می گردند و اگر جایگزینی موجود نباشد با Virtual Box یک ویندوز نصب می کنند. این افراد نیز کاندیدای مناسبی برای سوییچ هستند هر چند که با ویندوز یا مک کارها را آسانتر انجام می دهند!

    These people are good candidates for Linux in many cases, but might do better with Windows or even the Mac in others. The benefits of the Linux config would have to outweigh the ones of the Windows or Mac config, although they’d be flexible and adjust either way.

من تقریبا با اکثر نظرات نویسنده موافق هستم! مخصوصا در مورد دسته های اول تا سوم. برای مثال یک بار از یکی از دوستان (دختر - ۲۴ ساله - دانشجوی فوق لیسانس مهندسی شیمی) پرسیدم که از چه برنامه ای برای مرور وب استفاده می کنی. دیدم که سوالم خیلی نا مفهوم به نظر می رسد پرسیدم که چگونه به اینترنت دسترسی داری؟ گفت که دو بار روی آیکون اینترنت کلیک می کنم! منم پرسیدم آیکون اینترنت؟ گفت همون E آبیه دیگه!
برای چنین کاربرانی اصولا OS نقشی ندارد و اگر مثلا برایشان لینوکس نصب کنیم و بگوییم که آیکون اینترنت از این به بعد این روباه قرمزه است، به آسانی می توانند به کار خود ادامه دهند!

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

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

خوب من در کدام دسته قرار دارم؟ فکر می کنم که در دسته آخر که همان Power User ها هستند قرار دارم. دلیل سوییچ من به لینوکس سرعت افتضاح ویستا روی لپ تاپم در ۲ سال گذشته بوده است. در محیط کار هم از اوبونتو استفاده می کنم. هر چند از اوبونتو راضی هستم اما امیدوارم تا قبل از عید امسال یک Mac Book Pro بخرم!

جمعه، مهر ۰۳، ۱۳۸۸

شاش

دیروزبرنامه Empathy که قرار است در ورژن بعدی اوبونتو جای Pidgin را بگیرد را نصب کردم. پس از ورود به Google talk به یکی از بچه ها سلام کردم و شروع کردیم چت کردن و چون یک مدت است برای پاسداری از زبان فارسی از finglish نوشتن خود داری می کنم کیبورد را فارسی کردم و فارسی چت می کردیم.

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

پنجشنبه، مهر ۰۲، ۱۳۸۸

نوشتن رزومه انگلیسی با Latex

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

قصد من در این پست آموزش Latex نیست. اگر به دنبال یک مقاله آموزشی خوب در مورد Latex هستید Latex Made Easy و پس از آن مستندات موجود در بسته Texlive را ببینید.

اولین گام در استفاده از Latex نصب بسته های texlive است. متاسفانه نسخه texlive موجود در مخازن اوبونتو قدیمی است و بسیاری از الگوها و قالب های جدید تر را پشتیبانی نمی کند. نسخه جاری (۲۰۰۸) آن را می توانید از این آدرس دانلود کنید. متاسفانه حجم دانلود زیاد است!

پس از استخراج فایل iso از آرشیو دانلود شده آن را در یک شاخه mount کنید:
$ sudo mount -o loop texlive2008-20080822.iso ~/texlive/
سپس به شاخه ~/textlive رفته و فایل install-tl را اجرا کنید. پس از خاتمه عملیات، شاخه /usr/local/texlive/2008/bin/i386-linux/ را به PATH اضافه کنید تا فایل های اجرایی Latex از طریق ترمینال قابل دسترسی باشند. حال همه چیز برای نوشتن رزومه آماده است. به شاخه زیر بروید:
/usr/local/texlive/2008/texmf-dist/doc/latex/moderncv/examples/
خروجی Latex یک فایل pdf است. برای آنکه ببینید نتیجه کار شما چگونه خواهد شد فایل های template_en_casual_blue.pdf و template_en_classic_green.pdf را ببینید. moderncv اسم ماژولی است که از آن برای ساختن رزومه استفاده کردیم. این بسته دو قالب رسمی و غیر رسمی ارایه می کند که نتیجه آن را در فایل های pdf بالا دیدید. من قالب رسمی را بیشتر ترجیح می دهم.

حال فایل template_en.tex را در شاخه ~/Documents/resmue کپی کنید تا یک کپی از این فایل برای ویرایش داشته باشید. همچنین تصویر خود را با نام picture.jpg در کنار این فایل قرار دهید. فایل را با ویرایشگر متن مورد علاقه خود باز کنید و ویرایش کنید. توضیحات این فایل به اندازه کافی است و نیازی به توضیح چگونگی ویرایش آن نیست. فقط کافی است مقادیر مورد نظر را جایگزین کنید. برای مثال به جای John اسم خود را قرار دهید و مراقب باشید کلمه های کلیدی Latex (کلمه هایی که با \ شروع می شوند) را دستکاری نکنید. باز هم تاکید می کنم که امکانات Latex بسیار فراتر از ساختن رزومه است و اگر می خواهید با گرامر و ویژگی های آن آشنا شوید Latex Made Easy را ببینید.

پس از انجام تغییرات مورد نظر دستور زیر را در همان شاخه ~/Documents/resmue اجرا کنید:
$ pdflatex template_en.tex
با اجرای این دستور Latex فایل pdf خروجی را می سازد و شما می توانید رزومه خود را مشاهده کنید. همچنین ذکر این نکته ضروری است که texlive برای دو پلتفرم ویندوز و OS X نیز وجود دارد و کاربران آن سیستم ها نیز می توانند از آن استفاده کنند.

سه‌شنبه، شهریور ۳۱، ۱۳۸۸

استفاده از wget برای دانلود از اکانت پرمیوم rapidshare

متاسفانه برنامه های مدیریت دانلود در لینوکس اصلا با نمونه های مشابه در ویندوز قابل مقایسه نیستند. با اینکه DownThemAll در فایرفاکس و Flashget با wine می توانند تا حدی پاسخگوی نیازهای ما باشند اما به نظر من استفاده از wget هنوز نسبت به آنها برتری دارد. تنها مشکل wget عدم پشتیبانی از چندین اتصال همزمان است که البته با توجه به سرعت اینترنت من این ویژگی چندان نقشی بازی نمی کند و یک اتصال کفایت می کند. اگر به چندین اتصال همزمان نیاز دارید curl را تست کنید. این برنامه امکانات مشابهی مانند آنچه برای wget می آید برای دانلود از rapidshare دارد.

حال یک سوال مطرح می شود که چگونه می توان از سایت هایی شبیه rapidshare با premium account که از کوکی استفاده می کنند با wget دانلود کرد. پاسخ این سوال بسیار ساده است. شما باید به طریقی کوکی مربوطه را بدست آورید و همراه درخواست دانلود به سرور بفرستید. برای دریافت کوکی مربوطه دو راه وجود دارد:
  1. استفاده از wget: برای دریافت کوکی سایت rapidshare.com و ذخیره آن در فایلی به نام rapidshare در شاخه home دستور زیر را اجرا کنید. به جای USERNAME و PASSWORD مقادیر نظیر اکانت پرمیوم خود را قرار دهید.
    wget \
    --save-cookies ~/rapidshare \
    --post-data "login=USERNAME&password=PASSWORD" \
    -O - \
    https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi \
    > /dev/null

    \ ها در دستور بالا اجازه می دهند یک دستور bash را در چندین خط گسترش دهید. این دستور به wget می گوید که پس از پست اطلاعات ورود به آدرس مشخص شده، کوکی را در فایل rapidshare در شاخه home ذخیره کند. چون هدف شما در این دستور ذخیره کوکی و نه فرم login است، خروجی را به/dev/null فرستاده اید.

  2. استفاده از یک extension فایرفاکس به نام Export Domain Cookies که کوکی سایت جاری را استخراج کرده و آن را در مکان داده شده ذخیره می کند. برای اینکار این extension را نصب کرده و پس از ورود به سایت rapidshare کوکی را استخراج کنید.
حال برای دانلود از rapidshare دستور زیر را اجرا کنید:
wget --load-cookies ~/rapidshare
نکته: با استفاده از سوییچ -c می توانید دانلود متوقف شده را ادامه دهید. (wget -c)

دوشنبه، شهریور ۳۰، ۱۳۸۸

پروفایل های چندگانه فایرفاکس

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

برای مثال چون کار اصلی من توسعه برنامه های تحت وب است و متاسفانه پشتیبانی گوگل کروم از extension های خاص توسعه وب و زبان فارسی هنوز کامل نیست. مجبورم از فایرفاکس استفاده کنم،دو پروفایل زیر را ساخته ام.
  1. پروفایل dev مخصوص کارهای توسعه وب شامل Firebug و GWT. در ماه گذشته که با Flex کار می کردم این پروفایل شامل یک نسخه flash player با قابلیت debug نیز بود. همچنین برای جلوگیری از caching فایل های swf روی دیسک، caching فایرفاکس را غیر فعال کرده بودم.
  2. پروفایل default برای کارهای عادی شامل extension های Scrapbook، DownThemAll، ScribeFire، Gears، Cooliris و غیره.
علاوه بر بهبود عملکرد فایرفاکس این دسته بندی باعث یک جداسازی منطقی extension ها می شود.

پروفایل های فایرفاکس در لینوکس در شاخه .mozilla/firefox قرار دارند. اگر به این شاخه بروید یک پوشه با نام شبیه v8956ch8.default مشاهده می کنید. قسمت اول یک عدد رندم است که فایرفاکس به ابتدای نام پروفایل ها اضافه می کند و سپس نام پروفایل می آید. این پروفایل پیش فرضی است که فایرفاکس پس از اولین اجرا می سازد. شما می توانید نام و آدرس پروفایل ها را از طریق فایل profiles.ini که در .mozilla/firefox قرار دارد تغییر دهید.

برای ساختن یک پروفایل جدید فایرفاکس را با سوییچ -P اجرا کنید: (firefox -P) پس از آن یک پنجره محاوره ای باز می شود که به شما اجاز می دهد پروفایل ها را مدیریت کنید. همچنین می توانید در این پنجره مشخص کنید که فایرفاکس همواره در ابتدای اجرا، این پنجره را به شما نشان دهد تا بتوانید فایرفاکس را با پروفایل های مورد نظر را اجرا کنید. تنها نکته این است که شما نمی توانید در یک لحظه دو فایرفاکس با پروفایل های مجزا را اجرا کنید! البته شاید این کار نیز ممکن باشد و اگر یکی از دوستان در این مورد اطلاع دارد لطفا کامنت بگذارد.

سه‌شنبه، شهریور ۲۴، ۱۳۸۸

نصب فونت Tahoma در اوبونتو

همانطور که می دانید فونت های آشنای ویندوزی مثل Arial و Verdana در لینوکس وجود ندارند و هنگام مشاهده صفحات وب که از این فونت ها استفاده می کنند، لینوکس از یک فونت مشابه برای نمایش صفحات استفاده می کند. متاسفانه چون کاربران دسکتاپ لینوکس کمتر از یک درصد سهم کل سیستم عامل دسکتاپ را به خود اختصاص می دهند، معمولا طراحان وب اهمیتی به ما نمی دهند!
این مساله در مورد صفحه های فارسی حاد تر است. فونت های معادل لینوکسی برای زبان های لاتین خوب کار می کنند ولی چون اکثر طراحان و برنامه نویسان وب فارسی زبان موجودات نادانی (اگر ترجمه بهتری از کلمه ignorant دارید کامنت بگذارید) هستند (هر چند این موضوع در چند سال اخیر پیشرفت قابل ملاحضه ای داشته و ما به ندرت شاهد سایت هایی با قابلیت ActiveX یا جاوا اسکریپت خاص IE هستیم) و مخاطب خود را کاربران IE فرض می کنند و به عنوان یکی از اثرات جانبی (کمترین اثر این نوع طرز فکر)  طراحی وب سایت ها با ذهنیت فونت های مایکروسافتی صورت می گیرد و برای دیدن سایت ها آنگونه که طراحان آن در ذهن داشته اند باید این فونت های خاص را نصب کنید. (در موارد شدید شما سایت هایی را پیدا می کنید که به جای Unicode از یک Character set ویندوز عربی یا یک ActiveX Component استفاده می کنند و شما قادر به پست فرم ها در این سایت ها با مرورگری غیر از IE نیستید!)

یک بسته به نام msttcorefonts در مخازن اوبونتو وجود دارد که به صورت اتوماتیک فونت های مورد نیاز شما را نصب می کند.
# sudo apt-get install msttcorefonts
متاسفانه این بسته فونت Tahoma را به دلیل برخی مسایل licensing همراه ندارد و باز هم متاسفانه زبان فارسی در صفحات وب با فونت Tahoma به بهترین شکل ممکن دیده می شود (به همین دلیل از این فونت برای وبلاگ خودم استفاده کرده ام) و شما مجبور هستید این فونت را نصب کنید. برای این کار باید ابتدا فونت Tahoma را پیدا کنید. اگر به ویندوز دسترسی دارید این فونت را از پوشه Fonts ویندوز بردارید. راه دیگر دانلود مستقیم این فونت از سایت مایکروسافت از این لینک است.

اگر تصمیم گرفتید که فونت را از سایت مایکروسافت دانلود کنید، باید پس از آن با استفاده ابزار کمکی cabextract آن را باز کرده و فونت با پسوند ttf را بردارید. فونت را در شاخه زیر کپی کنید:
/usr/share/fonts/truetype/msttcorefonts
البته قابل ذکر است که من فرض کرده ام که شما بسته mscttcorefonts را نصب کرده اید و می خواهید فونت Tahoma را در کنار سایر اعضای خانواده سلطنتی قرار دهید. وگر نه می توانید یک پوشه دلخواه در پوشه truetype ساخته و فونت را آنجا قرار دهید! سپس دستور زیر را اجرا کنید تا فایل های اطلاعات cache  فونت ها دوباره ساخته شود:
# sudo fc-cache -fv
بعد از اجرای این دستور فونت Tahoma در فایرفاکس و سایر برنامه ها قابل استفاده است.

Leafpad جایگزینی مناسب برای Gedit

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

دو موضوع در مورد Gedit به نظر من آزار دهنده هستند. اولی سرعت اجرا و بالا آمدن Gedit است که روی لپ تاپ من حدود ۳ تا ۵ ثانیه طول می کشد و دومی فایل با پسوند ~ که gedit پس از ویرایش فایل می سازد.
من فکر می کنم هدف از برنامه Gedit یک ویرایشگر ساده متنی بوده است و نه یک محیط کامل توسعه. امکانات Tab، هایلات گرامر و plugin های متفاوت با اینکه یک محیط متوسط برای توسعه و ویرایش به وجود می آورند هنوز فاصله زیادی با یک محیط واقعی دارند. مثلا من ترجیح می دهم حتی برای کوچکترین ویرایش فایل های جاوا از Eclipse استفاده کنم تا Gedit.

مدتی که به Ruby و فریمورک Rails علاقه مند شده بودم (ادیتور محبوب برنامه نویسان این زبان Textmate است که تنها برای OS X موجود است) تصمیم گرفتم که عملکرد Gedit را تحت یک تست واقعی ببینم. متاسفانه کار کردن با Gedit در حد یک فاجعه بود و مرا مطئن کرد که این برنامه بدرد توسعه نمی خورد. Vim با Rails Plugin بهترین و موثرترین گزینه برای نوشتن برنامه های Ruby و Rail در Linux است.

پس از مدتی جستجو برنامه ای به اسم Leafpad را پیدا کردم که واسط گرافیکی بسیار ساده ای دارد (شبیه notepad در ویندوز) که برای استفاده در کارهای ساده ایده آل است. دو مشکل عنوان شده در مورد Gedit را ندارد. همچنین من آیکون این برنامه را دوست دارم! در زیر می توانید یک پیش نمایش از این برنامه را ببینید:


به عنوان آخرین توصیه می توانم بگویم استفاده از ابزار درست برای هر کار (Leafpad برای خواندن فایل های README و Vim برای برنامه های Rails) علاوه بر اینکه کارایی و خروجی شما را افزایش می دهد می تواند نشانه اعتراضی به برنامه هایی مثل Gedit باشد که با اضافه کردن ویژگی های بدردنخور برنامه را کندتر و استفاده از آن را پیچیده تر می کنند.

دوشنبه، شهریور ۲۳، ۱۳۸۸

نصب Tomcat به عنوان سرویس در ابونتو ۹.۰۴

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

تلاش اول:
من آخرین نسخه tomcat را دانلود کرده و آن را در شاخه /user/local/tomcat/ و برنامه وب wiki مورد نظر را در شاخه webapps قرار دادم. با اجرای وب سرور همه چیز خوب کار می کرد و برنامه قابل دسترسی بود. سپس از دوست همیشگی یعنی گوگل کمک گرفتم تا ببینم چگونه می توان Tomcat را به صورت یک سرویس درآورد.
برای مطلع شدن از جزییات این صفحه را ببینید: How to install tomcat 6 in Ubuntu
با این که تمام عملیات کاملا منطقی به نظر می رسد برای من کار نکرد و Tomcat همراه بالا آمدن اوبونتو آغاز نمی شد.

تلاش دوم:
پس از سعی و خطای فراوان و دستکاری ترتیب شروع Tomcat در Runlevel های مختلف من به این نتیجه رسیدم که مشکل از اسکریپت است. این اسکریپت دستور شروع Tomcat را اجرا نمی کرد. فایل log شروع Tomcat خالی بودند. پس از جستجو در مخازن اوبونتو متوجه شدم که هر دو نسخه 5.5  و 6 موجود هستند. خوشبختانه Tomcat هایی که در مخازن بودند هر دو اسکریپت startup داشتند و با شروع اوبونتو اجرا می شدند ولی من نتوانستم wiki را در آن deploy کنم. هیچ پیغام خطایی هم در فایل های log مشاهده نمی شد!

تلاش سوم:
پس از ۴ ساعت تلاش بی نتیجه به این نتیجه رسیدم که باید راه دیگری را انتخاب کنم. ایده از این صفحه شروع شد: Tomcat Setup و خوشبختانه موفقیت آمیز بود!
در شاخه tomcat/bin فایل jsvc.tar.gz وجود دارد که حاوی یک سری فایل native لینوکسی اجرای Tomcat به صورت Daemon است. راستش در مورد این که واقعا جمله قبلی چه معنی می دهد ایده خاصی ندارم! برای اجرای Tomcat از روش سوم دستورات زیر را اجرا کردم:

1. $ tar xvzf jsvc.tar.gz
2. $ cd jsvc-src
3. $ sudo apt-get install autoconf
4. $ autoconf
5. $ ./configure --with-java=/usr/lib/jvm/java-6-sun
6. $ make
7. $ cp jsvc ../

فکر می کنم دستورات بالا واضح باشند. خط سوم برنامه ای به نام autoconf را نصب می کند که فایل پیکربندی را می سازد. اگر این برنامه را روی سیستم خود دارید نیازی به اجرای این خط نیست. خط پنجم دستور پیکربندی است که آرگومان with-java آن مکان ماشین مجازی جاوا را نشان می دهد. خط هفتم در واقع فایل کامپایل شده را در شاخه بالاتر که bin است قرار می دهد.

بعد از اجرای این مراحل اسکریپت زیر را در شاخه /etc/init.d با نام tomcat ذخیره کنید:
#!/bin/sh

JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_HOME=/usr/local/tomcat
DAEMON_HOME=/usr/local/tomcat/bin
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS="-Xmx512m -XX:PermSize=256m"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$DAEMON_HOME/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

case "$1" in
  start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile $CATALINA_HOME/logs/catalina.err \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    ;;

  stop)
    #
    # Stop Tomcat
    #
    PID=`cat /var/run/jsvc.pid`
    kill $PID
    ;;

  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac


به قسمت اول اسکریپت که متغیر ها تعریف شده اند توجه کنید. این مقادیر را با توجه به مکان Tomcat و جاوا خود تغییر دهید. تا این مرحله همه چیز آماده است. حالا باید به اوبونتو بگویید که سرویس tomcat که به تازگی آن را نوشته ایم را همراه بالا آمدن اوبونتو اجرا کند:
# sudo update-rc.d tomcat defaults
از این پس همراه با بالا آمدن اوبونتو Tomcat شروع به کار می کند. همانطور که از اسکریپت نیز مشخص است فایل های log در
$CATALINA_HOME/logs/catalina.out و $CATALINA_HOME/logs/catalina.err ذخیره می شوند.

سه‌شنبه، مرداد ۲۰، ۱۳۸۸

کروم در لینوکس

هر چند هنوز مرورگر وب گوگل برای لینوکس به طور رسمی عرضه نشده ولی شما می توانید نسخه آزمایشی کروم را در اوبونتو خود نصب کنید و مدتی سرگرم باشید. Chrome اسم مرورگر گوگل است و Chromium پروژه و محصول open source است که کروم بر اساس آن ساخته می شود. برای نصب نسخه اصلی کروم فایل deb زیر را دانلود کنید: google-chrome-unstable_current_i386.deb

با توجه به این که دانلود نرم افزار از سرورهای گوگل با IP های ایران مقدور نیست از یک برنامه پروکسی اضافه کنید. بعد از نصب این بسته، مخزن کروم به لیست مخازن اوبونتو اضافه می شود و شما می توانید از بروزرسانی های کروم مطلع شوید ولی متاسفانه برای دریافت فایل های آپدید هم باید apt-get یا synaptic را با پروکسی اجرا کنید.
با توجه به این مشکلات من تصمیم گرفتم از Chromium استفاده کنم. Chromium در Launchpad's PPA موجود است:
برای نصب برنامه از PPA پست قبلی من را ببینید: نصب برنامه ها از Launchpad's PPA
مشکل این روش این است که تقریبا هر روز یک build جدید موجود است و اگر بخواهید بروز بمانید هر روز باید حدود ۱۸ مگابایت دانلود کنید!

کروم نسبت به فایرفاکس بسیار سریعتر بالا می آید و به نظر من سرعت لود صفحه ها هم در آن بهتر است! البته باید نتایج یک تست دقیق را دید تا بتوان در این مورد نظر داد. صفحات فارسی در کروم درست نمایش داده نمی شوند و سیستم extension کروم هنوز راه اندازی نشده است. بنابراین هنوز کروم برای کار روزمره در لینوکس آماده نیست ولی تست آن تجربه جالبی است.

برای فعال سازی Flash Player در کروم ابتدا plugin را در پوشه کروم کپی کنید:
sudo cp /usr/lib/flashplugin-installer/libflashplayer.so
/usr/lib/chromium-browser/plugins
سپس کروم را با سویچ زیر اجرا کنید:
chromium-browser --enable-plugins
همچنین گوگل تعدادی تم زیبا برای کروم آماده کرده است. می توانید آنها را تست کنید.
options-->Personal Stuff--->Themes--->Get Themes
به نظر می رسد با میزان تلاشی که گوگل روی مرورگر خود انجام می دهد و ابتکاری که در همه زمینه ها از گوگل دیده ایم باید منتظر کامل شدن کروم و در نهایت مهاجرت از فایرفاکس به کروم بود.

Bring everything online!

Since I don't intend to maintain the pprogrammer blog anymore I've decided to write in both English and Farsi languages here.
Also I was very busy during last week and I was not able to update my blog. I hope to be more active during this week.

For the first time in my Ubuntu life I had to reinstall it! :( Unfortunately Operating Systems sometimes crash so terrible that you have to install everything from the ground up. I have installed it from a USB drive and it took me just 10 min to get a fresh new Jaunty up and running! So far so good but I went through the headache of installing my favorite programs!

In moments like this I think having some sort of online OS is very desirable (I believe Google intends to offer a full online solution in coming years). I want all my configurations and settings be on some sort of online service that can be easily synchronised with Ubuntu. For example the sources.list file which contains all my repositories is a good candidate for this service. But as I know there is no such service available yet :(
This time I stored the PPA's repositories and their keys in my Google Docs account. I will need them later. I hope this process get automated.

But fortunately there is a decent way for Firefox extension management. Mozilla add-on website now offers a new (At least new for me) feature called collections. All you have to do is to register an account and start making collections. I believe the main purpose of this feature is sharing your collections with friends (Aren't we living in Web 2.0 era?) This feature was such a relief for me. As a side effect I made a personal collection for myself. You can see my collection here: My collection
After Ubuntu installed successfully I lead Firefox to my personal collection page and clicked on the extensions to be installed. One restart after I had all my beloved extensions :)

If you have such optimism in laziness ;) share your ideas about these kind of automation here! The question is how you install and configure everything after a fresh Ubuntu install.

جمعه، مرداد ۰۲، ۱۳۸۸

مجموعه تم های Bisigi برای گنوم در اوبونتو

اگر از تم های استاندارد اوبونتو خسته شده اید می توانید مجموعه تم های Bisigi را امتحان کنید. این مجموعه شامل ۱۰ تم بسیار جذاب است و مدتی شما را سرگرم نگه می دارد. من الان تم Balanzan از این مجموعه را استفاده می کنم. خوشبختانه PPA این پروژه در Launchpad وجود دارد و شما می توانید به آسانی این تم ها را نصب کنید:
PPA for Bisigi
نکته بعدی این است که Wallpaper و آیکون ها همراه تم ها نصب می شوند و شما دردسر پیدا کردن آیکون ها از سایتی مثل gnome-look را نخواهید داشت.
برای اطلاعات بیشتر در مورد نصب بسته ها از PPA این پست را ببینید:
نصب برنامه از Launchpad's PPA

برای دیدن تم ها به این صفحه بروید: Bisigi

برای نصب همه تم ها از دستور زیر را بنویسید:
$sudo apt-get install zgegblog-themes

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

AquaDreams: sudo apt-get install aquadreams-theme
Ubuntu Sunrise: sudo apt-get install ubuntu-sunrise-theme
Bamboo-Zen: sudo apt-getinstall bamboo-zen-theme
Step into Freedom: sudo apt-get install step-into-freedom-theme
Tropical: sudo apt-get install tropical-theme
Exotic: sudo apt-get install exotic-theme
Balanzan: sudo apt-get install balanzan-theme
Wild Shine: sudo apt-get install wild-shine-theme
Infinity: sudo apt-get install infinity-theme
Showtime: sudo apt-get install showtime-theme

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

استفاده از ابزارها و نکته های خاص، کارکردن با ترمینال را در لینوکس ساده و حتی مفرح می کند. در این پست من یک ابزار و سه نکته را آورده ام که باعث بازدهی بیشتر من در کار با ترمینال می شود.

استفاده از Guake

Guake یک ترمینال drop-down برای گنوم است. یکی از مزیت های Guake این است که همیشه در پانل بالای گنوم قرار می گیرد و با فشاردادن کلید F12 نشان داده می شود. برای مثال فرض کنید در حال دیدن یک سایت در فایرفاکس هستید و می خواهید دستوری را که در صفحه دیده اید اجرا کنید. F12 را فشار می دهید تا Guake ظاهر شود. سپس در پنجره جاری یا با زدن Ctrl+Shit+T یک tab جدید ایجاد کرده و دستور را اجرا می کنید.
همچنین با زدن F11 پنجره Guake تمام صفحه را می گیرد که برای کارهای ترمینالی بسیار مطلوب است. نسخه آخر Guake در مخازن اوبونتو موجود نیست (نسخه ۰.۴). می توانید فایل deb نسخه آخر را از سایت getdeb دریافت کنید. بعد از نصب Guake می توانید خصوصیات آن مثل میزان شفافیت صفحه ترمینال را در بخش تنظیمات تغییر دهید.

اجرای آخرین دستوربا !!
فرض کنید یک دستور را اجرا کرده اید و می خواهید آن را دوباره اجرا کنید. در خط فرمان بنویسید !! تا دستور قبلی اجرا شود. ممکن است بپرسید که با کلید بالا هم می توان این کار را انجام داد. !! در واقع جایگزین دستور قبلی می شود و شما می توانید کارهای جالبی با آن انجام دهید. برای مثال یکی از مشکلات من این است که معمولا فراموش می کنم که sudo را بنویسم:
$ apt-get install vlc
برای حل این مشکل کافی است من بنویسم:
$ sudo !!

اجرای آخرین دستور مورد نظر با !
فرض کنید که دستور زیر را اجرا کرده اید:
$wget http://wickoo.blogspot.com/

و پس از آن چندین دستور دیگر را اجرا کرده اید و حال می خواهید یک بار دیگر همین دستور wget را اجرا کنید. راه متداول جستجوی bash history است:
$history | grep wget

با این کار شما لیستی از دستورات wget را می بینید و می توانید دستور مورد نظر را کپی کرده و دوباره اجرا کنید. اما راه حل ساده تر استفاده از دستور زیر است:
$ !wget
این دستور آخرین دستوری که با wget شروع شده باشد را اجرا می کند.

جستجوی bash history با Ctrl + R
دو نکته قبل شکل ساده شده ای از این دستور هستند. اجرای آخرین دستور و اجرای آخرین دستور مورد نظر. حال فرض کنید که شما می خواهید دستور wget قبل از آخرین wget را دوباره اجرا کنید. برای اینکار بزنید Ctrl + R تا علامت جستجو ظاهر شود:
(reverse-i-search)`':

سپس با نوشتن اولین حروف مثلا wg شما دستور را می بینید. اگر این دستور مورد نظر شما نیست دوباره Ctrl + R را فشار دهید تا دستور قبلی که با wg شروع می شده را پیدا کنید. سپس Tab را بزنید تا اگر خواستید دستور را ویرایش کرده در نهایت اجرا کنید!

سه‌شنبه، تیر ۳۰، ۱۳۸۸

GoldenDict بهترین دیکشنری لینوکس

اگر فکر می کنید Stardict بهترین دیکشنری لینوکس است اشتباه می کنید! و من به شما توصیه می کنم Goldendict را امتحان کنید. نگاهی به وب سایت این پروژه بیندازید: Goldendict website

نکات قوت Goldendict:
  • بزرگترین نقطه قوت Goldndict پشتیبانی آن از فایل های BGL بابیلون است. به عبارت دیگر شما می توانید از دیکشنری های موجود بابیلون استفاده کنید. برای مثال این عکس را ببینید که من از یک دیکشنری انگلیسی به فارسی بابیلون در Goldendict استفاده کرده ام.
  • Goldendict از فرمت فایل های Stardict هم پشتیبانی می کند.
  • مد pop-up که اجازه می دهد با انتخاب متن در هرجای صفحه آن را ترجمه کنید خیلی خوب کار می کند.
  • با استفاده از Goldendict می توانید از Wikipedia و سایر مراجع آنلاین نیز استفاده کنید. Goldendict از Webkit برای رندر کردن صفحات وب استفاده می کند.
نکات ضعف Goldendict:
  • Goldendict با استفاده از کتابخانه qt نوشته شده است و شکل برنامه های native گنوم که با GTK نوشته می شوند را ندارد! و مثل سایر برنامه های qt مثل Lyx موقع تغییر اندازه پنجره مقداری متن به هم می ریزد و باید صبر کنید. البته این مشکل کاملا شخصی است و ممکن است شما با برنامه های qt مشکل نداشته باشید. اگر از KDE استفاده می کنید به شما قول می دهم که Goldendict یکی از بهترین چیزهایی است که در زندگی لینوکسی شما اتفاق افتاده است!
  • چون این برنامه در مخازن اوبونتو و PPA وجود ندارد نصب این برنامه دردسر دارد. من سورس این برنامه را در اوبونتو ۹.۰۴ کامپایل کردم و از آن استفاده می کنم. اگر می خواهید از سورس این برنامه استفاده کنید این بسته را دانلود:
    goldendict-0.9.0-src-x11.tar.bz2
    شما احتمالا به کتابخانه های زیر نیز نیاز دارید که می توانید آنها را با apt-get نصب کنید.
libvorbis-dev
zlib1g-dev
libzip-dev
libhunspell-dev
x11proto-record-dev
libqt4-dev
libxtst-dev
بعد از نصب کتابخانه ها دستورات زیر را بنویسید تا سورس کامپایل و نصب شود:
$qmake
$make
$sudo make install


چند نکته:
  • همانطور که قبلا هم گفتم این برنامه با استفاده از qt نوشته شده است و برای کامپایل آن به libqt4-dev نیاز دارید. نسخه qt باید 4.5 یا بالاتر باشد. نسخه libqt4-dev موجود در مخزن اوبونتو ۸.۱۰ قدیمی است و برنامه کامپایل نمی شود.
  • بعد از نصب برنامه دکمه F3 را بزنید تا بتوانید پوشه های حاوی فایل های دیکشنری را به Goldendict اضافه کنید و سپس دکمه Rescan Now را بزنید تا دیکشنری ها اضافه شوند.
  • ممکن است پسوند بعضی از فایل های دیکشنری دانلود شده بابیلون exe باشد. این فایل ها را با استفاده از برنامه 7z باز کنید و فایل BGL را بردارید. برای نصب 7z دستور زیر را اجرا کنید:
$sudo apt-get install p7zip-full

مسابقه طراحی بهترین ایده Tab مرورگر

در مسابقه Mozilla Labs Design Challenge Summer 2009، موزیلا یک سوال مطرح کرده بود که چگونه می توانیم چندین وب سایت مختلف را در داخل یک پنجره مرورگر باز کرده و آن ها را مدیریت کنیم. از ۱۲۸ راه حل ارسال شده، چهار راه حل در بخش های "به عنوان بهترین در کلاس" و یکی به عنوان "انتخاب کاربران" برگزیده شدند.

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









مارتین پلی در بخش اجرا با ایده "گروه های Tab آبشاری" که Tab ها را به صورت عمودی در گروه هایی در سمت چپ مرورگرروی هم قرار می دهد، برنده شد.






راه حل موج (Wave) جایزه بهترین مدل تعامل انسان و کامپیوتر را بدست آورد. در این راه حل یک پیشنما از Tab ها در بالای صفحه نشان داده می شود. این ایده مرا به یاد dock در Mac OS X می اندازد.







در بخش بهترین برای تولید (کدام ایده را می توان آسان تر برای کاربر نهایی تولید کرد) راه حل "FaviTabs" برنده شد. FaviTabs صفحات را توسط Favicon ها (آیکون های کوچکی که کنار نوار آدرس نمایش داده می شوند و معمولا لوگو سایت هستند) با امکاناتی مثل کشو ها و گروه ها مدیریت می کند.





و در نهایت CubeZilla برنده جایزه انتخاب کاربران شد.


برای دیدن گزارش کامل و ویدیو های نمایشی لینک زیر را ببینید:

دوشنبه، تیر ۲۹، ۱۳۸۸

نصب برنامه ها از Launchpad's PPA

Launchpad چیست؟
Launchpad یک وب سایت (برنامه تحت وب) برای توسعه نرم افزارهای اوپن سورس است که توسط شرکت کانونیکال (پشتیبان اوبونتو) نگهداری می شود و توسعه می یابد. Launchpad شامل Source Repository، Bug Tracker و سایر ابزارهای توسعه نرم افزار است. برای اطلاعات بیشتر لینک مقابل را ببینید: Launchpad

PPA چیست؟
PPA یا Personal Package Archives یک سرویس Launchpad است که به اشخاص و تیم ها اجازه می دهد سورس برنامه های اوبونتو را آپلود کنند و بسته های باینری برای اوبونتو بسازند. PPA به هر پروژه یک APT Repository می دهد که کلاینت ها می توانند از طریق Synaptic یا apt-get آخرین نسخه را دریافت کنند. بسته های PPA به طور رسمی از طرف اوبونتو پشتیبانی نمی شوند. برای اطلاعات بیشتر لینک مقابل را ببینید: PPA

چرا برنامه ها را از Launchpad's PPA نصب کنیم؟
من می توانم دو دلیل برای این کار ذکر کنم. دلیل اول این است که ممکن است برنامه مورد نظر شما در مخازن رسمی اوبونتو موجود نباشد. استفاده از PPA بسیار آسان تر از کامپایل و نصب برنامه ها از فایل های سورس است. دلیل دوم این است که ممکن است نسخه جدید برنامه ها در مخازن رسمی موجود نباشد. برای مثال نسخه کنونی Open Office در مخزن اوبونتو 3.01 است ولی نسخه جدید 3.1 در PPA موجود است.

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

بعد از پیدا کردن صفحه مورد نظر باید مخزن مربوط به نسخه اوبونتو خود را به انتهای فایل مخازن اضافه کنیم:
/etc/apt/sources.list
در مورد VLC این دو خط را به فایل اضافه می کنیم. (برای این کار اجازه دسترسی root نیاز است.)





سپس کلید این مخزن را اضافه می کنیم تا اوبونتو بتواند صحت بسته ها را چک کند. برای این کار در صفحه PPA دنبال کلمه
Signing key بگردید. قسمت بعد از / کلید مورد نظر شماست. پس از پیدا کردن کلید دستور زیر را اجرا کنید:




sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7613768D
سپس دستورات زیر را اجرا کنید تا آخرین نسخه VLC را نصب کنید:
$sudo apt-get update
$sudo apt-get upgrade

از این پس با هربار بروزرسانی سیستم مخازن PPA اضافه شده نیز چک می شوند و اگر نسخه جدیدی اضافه شده باشد، شما از این بروزرسانی باخبر می شوید و می توانید با دستور sudo apt-get upgrade آخرین نسخه برنامه را دریافت کنید.