۱۳۸۹/۰۲/۰۷

MATLAB و پردازنده‌های چند هسته‌ای (۲)

یاد آن روزهایی که با ماشین حساب fx 3600 برنامه می‌نوشتم و وقتی ماشین حساب برای اجرای یک برنامه ۲ دقیقه در کما فرو می‌رفت، به‌خیر. از اینکه می‌توانستم حسابی مشغولش کنم کیف می‌کردم.
حالا هم وقتی نمی‌توانم از تمام ظرفیت پردازشی سیستم -درحالیکه نیاز دارم- استفاده کنم اعصابم خرد می‌شود.
قبلاً در این پســـــت راجع به چگونگی استفاده از چند هستهٔ CPU در MATLAB مطلبی را نوشته بودم و گفته بودم:
ظاهراً نسخه‌های جدید MATLAB امکانات موازی سازی، محاسبات توزیع‌شده و چندنخی (Multithreading) خوبی دارند.
اون موقع هنوز نسخه جدید را نداشتم ولی به تازگی MATLAB نسخهٔ R2009a را نصب کرده‌ام که جعبه ابزار Parallel Computing را دارد. یک دستور اضافه شده در این نسخه، دستور parfor است که برای اجرای عملیات یک حلقه، به صورت همزمان بر روی چند هسته بکار می‌رود. نحوهٔ استفاده از آن هم همانند for است با یک سری محدودیت‌ها. به صورت موازی درآوردن یک الگوریتم نه همیشه شدنی و نه همیشه راحت است؛ لیکن MATLAB جدا از برخی محدودیت‌ها، کار را برای برنامه‌های Single Instruction Multiple Data یا SIMP، بسیار راحت کرده است. نحوهٔ استفاده از این دستور برای اجرای دستوراتی خاص روی چهار هسته در زیر آمده است:
matlabpool('open','local',4)
parfor i=1:4
statements
end

matlabpool('close')
اگر برنامه‌ای را به صورت معمول نوشته باشید و مثلاً ۷۰درصد اوقات سی‌پی‌یوی شما مشغول باشد و با دستورات فوق برنامهٔ خود را برای استفاده از چند هسته اصلاح نمایید، هر چهار هسته صددرصد مشغول بوده و سرعت بیشتری در حصول به نتیجه را شاهد خواهید بود؛ البته باز هم به شرطها و شروطها.
فعلاً به همین معرفی parfor بسنده می‌کنم؛ اشاءالله بعداً بیشتر خواهم گفت.

۱۳۸۹/۰۱/۱۹

آفرین به این مادر

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

پنجم:
پسر رفته ای آن جا درس بخوانی
یا دنبال این حرف ها باشی
اگر می خواهی دنبال این حرف ها باشی
داشتن یا نداشتن دکترا فرقی به حالت نمی کند
از راه حق خبری نیست
برگرد بیا خانه
شاید این جا یک زن گرفتی و مشغول به کار شدی
و دیگر دنبال این حرف ها نرفتی
بچه جان دنبال مسیر حق باش
...
هفتم:
no matter whhat
i love you
آفرین بر این مادر که این چنین در تربیت فرزند حساس است. آفرین بر این خانواده، پست مربوط به پدر ایشان نیز خواندنی است. کاش ما هم این چنین باشیم.
یاد صحبت‌های جناب حجت الاسلام نقویان (حفظه‌ الله تعالی) می‌افتم که تاکید فراوانی بر نقش خانواده دارند و هفته گذشته خودم یکی از مصادیق صحبت‌های ایشان را در قطار شاهد بودم. آنجا که از یکی از دو جوان همسفرم پرسیدم «تو چرا سیگار نمی‌کشی؟» و جواب داد: «مادرم راضی نیست». و این «مادرم راضی نیست» عین عبارت یکی از سخنرانی‌های حاج آقا نقویان است.

۱۳۸۹/۰۱/۱۵

فارسی کردن برچسب‌ها در فایلهای eps

بسیاری از ما ممکن است نمودارهای خود را با ابزاری مانند MATLAB و در قالب eps ذخیره نماییم. فارسی کردن برچسب نمودارهای با قالب eps یکی از معضلات تهیه مستندات فارسی و منجمله پایان‌نامه‌هاست.
برای رفع این مشکل من راه‌حلهایی را در این پســــــــت از تالار گفتگوی پارسی‌لاتک پیشنهاد نموده‌ام که آنها را در اینجا نیز ذکر می‌کنم:

۱- اگر فقط فایل eps را دارید: با استفاده از Eps2pgf که مثال و لینک دانلود آن در اینجــــــــــا هست، فایلهای eps خود را به pgf تبدیل نمایید و سپس در فایل تولید شده:
  • آنرا به یونیکد تبدیل نمایید (مثلاً با ++Notepad).
  • عبارات لاتین خود را با معادل فارسی آنها جایگزین نمایید.
  • pgfpicture، را با tikzpicture عوض کنید.
  • دستورات \textsf را حذف نموده و یا به textbf تغییر دهید.
پس از آن فایل pgf را با input داخل محیط figure قرار دهید.
برچسب های شما در خروجی سند زی‌پرشین، فارسی خواهند بود.

۲- اگر MATLAB مولد eps شما بوده و می‌توانید دوباره اجرا کنید،‌ از matlab2tikz برای تولید خروجی tikz به جای eps استفاده کنید. البته برچسب‌ها را باید خودتان فارسی کنید و نیاز به تغییر فایل matlab2tikz هم هست که من با اجازه صاحبش برای خودم تغییر داده‌ام که با نسخه‌های قدیم MATLAB کار کند، ولی با نسخه‌های جدید آن (۲۰۰۸ به بعد) ظاهراً مشکلی وجود ندارد.

۳- اگر با MATLAB یا برنامه دیگری eps را تولید کرده‌اید و قادر به اجرای مجدد هستید، به نحوی برنامه خود را تغییر دهید که مستقیماً کد tikz برای رسم نمودارها را تولید نماید و سپس از نمودارها در لاتک استفاده کنید. اگر برنامه شما توان تولید خروجی فارسی را داشته باشد که فبها وگرنه باید مثل بالا به صورت دستی عبارات لاتین را با معادل فارسی آنها جایگزین نمایید.

۱۳۸۹/۰۱/۰۷

چگونه در صفحات وب فرمول قرار دهیم؟

استفاده از تصویر فرمول، یک راه معمول برای درج فرمولها در صفحات وب است. سایتهای مختلفی هستند که دستورات لاتک فرمول موردنظر را از کاربر گرفته تصویر فرمول مربوطه را تولید و در اختیار ما قرار می‌دهند. این ســــایت یک نمونه جالب است که ابزاری هم برای درج دستور لاتک مورد نظر شبیه Equation Editor در میکروسافت ورد دارد که کار را برای کاربرانی که دستورات لاتک را نمی‌دانند بسی آسان نموده است.به عنوان نمونه تابع خطای زیر با استفاده از سایت مذکور و عبارت erf(x)=\frac{2}{\sqrt{\pi}}\int_0^xe^{-t^2}dt حاصل شده است:
مشکلی که چنین ابزاری دارند آن است که ارقام تولید شده توسط آنها انگلیسی است و نمی‌توان از آنها برای تولید فرمول با ارقام فارسی استفاده کرد. اخیراً در سایت پارسی‌لاتک با استفاده از زی‌پرشین این امکان فراهم شده است و هر کسی می‌تواند با وارد کردن فرمول لاتک، تصویر آنرا با ارقام فارسی داشته باشد. تصویر زیر همان رابطه فوق را با ارقام فارسی نشان می‌دهد:


۱۳۸۸/۱۲/۲۲

سورس فورج و تحریم ایران

من فایلهای jsMath که برای نوشتن فرمولهای ریاضی در صفحات وب بکار می‌روند و در سورس فورج هستند را نیاز داشتم.
از آنجا که مدتی است سایت SourceForge -که یکی از وب‌سایتهای میزبان پروژه‌های آزاد است - ایران را تحریم کرده است، نمی‌توانستم آنها را از آنجا دانلود کنم. آدرس لینک مستقیم را هم نداشتم که به گونه‌ای دیگر اقدام کنم. با جستجو در اینترنت متوجه شدم فایلهای مورد نظر من در سایت ژاپنی سورس فورج هم وجود داشته و قابل دانلود است. همچنین از این Mirror نیز قابل برداشت است.

اما به نظر می‌رسد همه پروژه‌های سورس‌فورج از سایت ژاپنی قابل دانلود نیستند. راه حلی پیشنهادی من برای دریافت پروژه‌های روی سورس فورج به قرار زیر است:
  1. نام پروژه دقیق موردنظر خود را از سایت اصلی سورس فورج استخراج کنید. مثلاً برای OpenCV، این نام opencvlibrary است.
  2. به این Mirror سورس فورج مراجعه نموده و پوشه‌ای که شامل حرف اول نام پروژه است - در این مثال o - را انتخاب نموده و تا رسیدن به فایل‌های موردنظرتان پیش رفته و دانلود کنید.
البته این کار فقط بدرد استفاه کنندگان می‌خورد و افرادی که پروژه‌های خود را روی سورس فورج گذاشته‌اند می‌توانند از راه حل پیشنهادی سورس فورج که در اینجا قید شده است استفاده کنند و یا سایت دیگری را برگزینند.

پ.ن ۱. به تازگی از طریق آقا میلاد خواجوی متوجه شدم که راه حل بهتری هم هست:
پیوند دانلودی را وارد این صفحه کنید، بهتون یک پیوند جدید برای بارگیری ارائه میده .
پ.ن.۲. راه حل دیگری هم آقای سیدرضی علوی زاده پیشنهاد کرده‌اند که از روش من ساده‌تر است:
یک روش هم این است که در صفحه دانلود قبل از اینکه صفحه تحریم نمایش داده شود لینک نوشته "direct link" را کپی کنید مثلا در مورد LaTeXDraw داریم:
http://downloads.sourceforge.net/project/latexdraw/latexdraw/2.0.8/LaTeXDraw2.0.8.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flatexdraw%2F&ts=1283179490&use_mirror=space
حالا در این لینک بجای "downloads" در ابتدای لینک عبارتی مثلا mesh.dl را اضافه کنید که mesh نام یکی از mirrorهای sourceforge است.
بعنوان مثال لینک بالا تبدیل می‌شود به:
http://mesh.dl.sourceforge.net/project/latexdraw/latexdraw/2.0.8/LaTeXDraw2.0.8.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flatexdraw%2F&ts=1283179490&use_mirror=space
و البته تر و تمیزتر آن به شکل زیر است:
http://mesh.dl.sourceforge.net/project/latexdraw/latexdraw/2.0.8/LaTeXDraw2.0.8.zip

۱۳۸۸/۱۲/۲۰

نصب OpenCV روی اوبونتو

برای نصب OpenCV -که مجموعه‌ای از توابع متن باز پردازش تصویر هستند-روی اوبونتو، به نحوی که بتوان مثالهای داخلش را اجرا نمود باید مراحل زیر را طی کرد:
  1. بسته‌های مورد نیاز آنرا نصب نمود. با استفاده از دستور زیر این بسته‌ها نصب می‌شوند:
    # apt-get install libavformat-dev libgtk2.0-dev pkg-config cmake libswscale-dev bzip2
    البته من فقط بسته‌های cmake و libgtk2.0-dev را نصب کردم.
  2. OpenCV را از سایتش دانلود نماییم. چون ظاهراً سایت سورس‌فورج به ما سرویس نمی‌دهد، آنرا از سایتی چینی گرفتم. البته می‌توان با wget آنرا به سایت دیگری کپی کرد.
    $ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.0/OpenCV-2.0.0.tar.bz2
    یا به این پست من در مورد سورس‌فورج و تحریم ایران مراجعه کنید.
  3. سایر مراحل نصب به صورت کامل در اینجــــــــــــــــا توضیح داده شده است.
  4. برای کامپایل مثالها به صورت زیر عمل کنیم:
    cd samples/c/
    . build_all.sh
    ./facedetect
  5. برای کامپایل یک برنامه نمونه هم باید به صورت زیر عمل نمود:
    g++ `pkg-config opencv --cflags --libs` image-conversion.c -o image-conversion

۱۳۸۸/۱۲/۱۷

ابزار مدیریت مراجع Mendeley


چند روز پیش با Mendeley که یک برنامه رایگان مدیریت مراجع است آشنا شدم. من از ابزارهای دیگر مدیریت مراجع که لیستی از آنها به همراه مقایسهٔ آنها را می‌توانید در اینجــــــــــــــــــــا ببینید، استفاده نکرده‌ام ولی از این خیلی خوشم آمد. چرا؟
  1. خیلی خوش‌دست است. یک فایل مقاله را با ماوس روی آن می‌کشی، اطلاعات آن را از خود مقاله در می‌آورد؛ اگر نشد با یک کلیک از اینترنت می‌گیرد.
  2. مشخصات مقاله برای ارجاع در مقاله را با قالب‌های بسیار گوناگون، برای استفاده در Microsoft Wrod و یا LaTeX به راحتی در اختیار ما می‌گذارد (پشتیبانی از EndNote, BibTeX ).
  3. هم نسخه Desktop را دارد و هم می‌توان یک حساب در سایتش داشت که به راحتی با هم Sync می‌شوند. لذا مراجع ما از روی اینترنت هم قابل دسترس است.
  4. امکان داشتن گروههای مختلف، مثل گروه مقالات تالیف شده توسط خودمان را به ما می‌دهد.
  5. لینک مقاله در روی دستگاه در کنار نام مقاله قرار می‌گیرد و می‌توان مقاله را به سایتش هم آپلود نمود (حداکثر ۵۰۰ مگابایت)
  6. مقالات را می‌توان بر اساس نام مؤلف، نام محل نشر و ... دسته‌بندی نمود.
  7. بروز رسانی مقالات در صفحه شخصی آدم کار پردردسری است که با استفاده از Mendeley این کار به راحتی - و البته در سایت آن - انجام می‌پذیرد. اگر دوست داشتید Profile مرا در Mendeley ببینید، به اینجــــــــــــــــــــا مراجعه کنید.
برای دیدن سایر ویژگیهای این نرم‌افزار به جز سایت آن، ویکی‌پدیا را هم ملاحظه فرمایید.