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

شاش

دیروزبرنامه 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 ذخیره می شوند.