Docutils سیستمی برای تولید مستندات فایلهای پایتون است که قبلاً نیز به آن و Sphinx اشارهای داشتهام. به صورت مشابه RDoc سیستمی برای تولید خودکار مستندات از فایلهای Ruby است. استفاده از آن بسیار راحت است. کافیست توضیحات و مستندات فایلهای روبی خود را به صورت مناسب در داخل فایلهایتان بنگارید. یک فراخوانی RDoc در پوشه حاوی سورس فایلهای روبی شما، فایلهای HTML مربوطه را به صورت خودکار تولید خواهد کرد. لذت ببرید.
۱۳۸۹/۰۶/۱۲
مشکلی با OpenCV
در اجرای مثالهایی از OpenCV 2.0 در ویژوال استودیو که از تابع cvDestroyWindow استفاده شده بود با خطا مواجه میشدم و هر چه تلاش کردم به نتیجه نرسید تا اینکه OpenCV 2.1 را نصب کردم و مشکل برطرف شد.
۱۳۸۹/۰۵/۰۶
تجربهای با Sphinx
بروزرسانی صفخات وب یکی از معضلات من است. هر بار باید فایل HTML را باز نموده تغییراتی داده و آنرا آپلود نمایم. اگر فایل با میکروسافت ورد آماده شده باشد که حجم و متخلفات آن بسیار زیاد است. مدتی پیش برای آمادهسازی صفحه وب مربوط به دادهها و پیادهسازیهای یکی از مقالاتم ترجیح دادم که آنرا به صورت دستی آماده نمایم تا با ورد. به این ترتیب حجم فایل بسیار کم شد. برای قرار دادن جداول لاتک مقالهام هم یک اسکریپت SED نوشتم که کار بسی راحت شد.
در آن مورد کارم راه افتاد ولی این مشکل برای مستندسازی فایلهای یک پروژه وجود دارد. یکی از راههای انجام چنین کاری استفاده از reStructured Text و استفاده از ابزاری همچون Sphinx برای تبدیل آنها به HTML یا LaTeX است.
در جستو به این صفحه از سایت VanderLinden رسیدم که راهنمای خوبی در مورد تولید خودکار مستندات با استفاده از Mercurial, Sphinx, reStructured Text است. چون با راهنماییهای سایت مذکور به نتیجه رسیدم تصمیم گرفتم که آنرا در اینجا هم ذکر کنم. روش ذکر شده در آن در لینوکس است که من برخی مراحل را در اوبونتو چک کردم ولی تا آخر نرفتم. فقط یک نکته باید ذکر کنم که از آنجا که برخی از ملزومات اینکار در سورسفورج قرار دارد و نصب آنها در اوبونتو با مشکل مواجه میشود، باید آنها را جداگانه دانلود نمود و سپس نصب نمود. به نظرم بیشتر آنها با دستور خط فرمان python setup.py install نصب میشوند. فایلهای .eggهم با easy_install نصب میشوند. در ادامه به مراحل کار در ویندوز خواهیم پرداخت.
به فرض python روی سیستم شما نصب شده است.
نصب SPHINX، DOCUTILS و JINJA2
Sphinx، Docutils و Jinja2 را از سایتهای مربوطه دانلود و نصب نمایید.
نصب Mercurial
در مورد Mercurial قبلاً پستی داشتهام. آنرا نصب نمایید.
ایجاد یک مخزن
با دستور hg init mydox مخزنی به نام mydox ایجاد کنید. قرار است به محض commit کردن این مخزن، فایلهای HTMLی که بعداً ساخته میشوند به صورت خودکار و مبتنی بر فایلهای .rst بروزرسانی شوند. اکنون باید شاخه .hg را داشته باشید.
من برای تست mydox را در همان شاخه Sphinx ایجاد کردم.
پیکربندی SPHINX
با دستور python sphinx-quickstart پیکربندی انجام میپذیرد. برای نام پروژه، نام مؤلف و شماره نسخه مواردی را خودتان درنظر بگیرید؛ تنظیمات پیشفرض را قبول کنید و تا انتها ادامه دهید. اکنون باید شاخههای source,build ایجاد شده باشند.
ایجاد فایل RESTRUCTURED TEXT
فایل ReSTی که قرار است مثلاً به HTMLتبدیل شود را در شاخه source ایجاد نمایید. به فرض این فایل با نام first_doc.rst و با محتویات زیر است:
خودکارسازی تولید HTML در هنگام COMMIT
اگر خواسته باشیم در هنگام commit کردن تغییرات توسط Mercurial، به صورت خودکار فایلهای HTML بروزرسانی شوند باید از precommit hook در Mercurial استفاده نمود.
فایل mydox/.hg/hgrc را باز نمایید و خطوط زیر را به آن اضافه کنید (اگر این فایل نیست، ایجادش کنید):
که در آن MYDOXPATH مسیر شاخه mydox است.
فایل sphinxify_docs.bat را با محتویات زیر در شاخه mydox ایجاد کنید:
به عنوان یک نمونه سایت که از Sphinx استفاده کرده است، سری به سایت http://www.mathjax.org بزنید.در آن مورد کارم راه افتاد ولی این مشکل برای مستندسازی فایلهای یک پروژه وجود دارد. یکی از راههای انجام چنین کاری استفاده از reStructured Text و استفاده از ابزاری همچون Sphinx برای تبدیل آنها به HTML یا LaTeX است.
در جستو به این صفحه از سایت VanderLinden رسیدم که راهنمای خوبی در مورد تولید خودکار مستندات با استفاده از Mercurial, Sphinx, reStructured Text است. چون با راهنماییهای سایت مذکور به نتیجه رسیدم تصمیم گرفتم که آنرا در اینجا هم ذکر کنم. روش ذکر شده در آن در لینوکس است که من برخی مراحل را در اوبونتو چک کردم ولی تا آخر نرفتم. فقط یک نکته باید ذکر کنم که از آنجا که برخی از ملزومات اینکار در سورسفورج قرار دارد و نصب آنها در اوبونتو با مشکل مواجه میشود، باید آنها را جداگانه دانلود نمود و سپس نصب نمود. به نظرم بیشتر آنها با دستور خط فرمان python setup.py install نصب میشوند. فایلهای .eggهم با easy_install نصب میشوند. در ادامه به مراحل کار در ویندوز خواهیم پرداخت.
به فرض python روی سیستم شما نصب شده است.
نصب SPHINX، DOCUTILS و JINJA2
Sphinx، Docutils و Jinja2 را از سایتهای مربوطه دانلود و نصب نمایید.
نصب Mercurial
در مورد Mercurial قبلاً پستی داشتهام. آنرا نصب نمایید.
ایجاد یک مخزن
با دستور hg init mydox مخزنی به نام mydox ایجاد کنید. قرار است به محض commit کردن این مخزن، فایلهای HTMLی که بعداً ساخته میشوند به صورت خودکار و مبتنی بر فایلهای .rst بروزرسانی شوند. اکنون باید شاخه .hg را داشته باشید.
من برای تست mydox را در همان شاخه Sphinx ایجاد کردم.
پیکربندی SPHINX
با دستور python sphinx-quickstart پیکربندی انجام میپذیرد. برای نام پروژه، نام مؤلف و شماره نسخه مواردی را خودتان درنظر بگیرید؛ تنظیمات پیشفرض را قبول کنید و تا انتها ادامه دهید. اکنون باید شاخههای source,build ایجاد شده باشند.
ایجاد فایل RESTRUCTURED TEXT
فایل ReSTی که قرار است مثلاً به HTMLتبدیل شود را در شاخه source ایجاد نمایید. به فرض این فایل با نام first_doc.rst و با محتویات زیر است:
========================= This Is My First Document ========================= Yes, this is my first document. It's lame. Deal with it.اکنون با استفاده از دستور python ..\sphinx-build.py source/ docs میتوان خروجی HTML فایل rst. را در شاخه mydox/docs داشت.
خودکارسازی تولید HTML در هنگام COMMIT
اگر خواسته باشیم در هنگام commit کردن تغییرات توسط Mercurial، به صورت خودکار فایلهای HTML بروزرسانی شوند باید از precommit hook در Mercurial استفاده نمود.
فایل mydox/.hg/hgrc را باز نمایید و خطوط زیر را به آن اضافه کنید (اگر این فایل نیست، ایجادش کنید):
[hooks] precommit.sphinxify = MYDOXPATH\sphinxify_docs.bat
که در آن MYDOXPATH مسیر شاخه mydox است.
فایل sphinxify_docs.bat را با محتویات زیر در شاخه mydox ایجاد کنید:
cd MYDOXPATH
python ..\sphinx-build.py source/ docs/
حال اگر هر commitی در Mercurial انجام دهید، به شرطی که تغییری در فایلها داده باشید، HTML به صورت خودکار بروزرسانی خواهد شد:> hg ci -m "Initial commit"موارد دیگری هم در پست VanderLinden هست که میتوانید به آن مراجعه نمایید. برای خودم که خیلی جالب بود، امیدورام برای شما هم مفید باشد.
۱۳۸۹/۰۵/۰۴
میلاد حضرت صاحبالزمان (علیهالسلام) مبارک باد
از امام صادق علیه السّلام روایت شده که پدر بزرگوارشان در پاسخ کسی که از فضیلت شب نیمه شعبان از ایشان پرسیده بود فرمودند:
این شب برترین شب ها بعد از شب قدر است، خداوند در این شب فضلش را بر بندگان جاری می سازد و از منّت خویش گناهان آنان را می بخشد، پس تلاش کنید که در این شب به خدا نزدیک شوید. همانا این شب، شبی است که خداوند به وجود خود سوگند یاد کرده که در آن درخواست کننده ای را، مادام که درخواست گناه نداشته باشد، از درگاه خود نراند. این شب، شبی است که خداوند آن را برای ما خاندان قرار داده است، همچنان که شب قدر را برای پیامبر ما قرار داده است. پس بر دعا و ثنای بر خداوند تعالی بکوشید، که هر کس در این شب صد مرتبه خداوند را تسبیح گوید، صد مرتبه حمدش را بر زبان جاری سازد، صد مرتبه زبان به تکبیرش گشاید و صد مرتبه ذکر یگانگی (لا اله الا اللّه) او را به زبان آورد، خداوند از سر فضل و احسانی که بر بندگانش دارد، همه گناهانی را که او انجام داده بیامرزد و درخواست های دنیوی و اخروی او را برآورده سازد، چه درخواست هایی که بر خداوند اظهار کرده و چه درخواست هایی که اظهار نکرده و خداوند با علم خود بر آنها واقف است.
۱۳۸۹/۰۴/۱۷
کتابخانه جبرخطی Armadillo برای ++C
همانگونه که میدانید ++C کتابخانهٔ ریاضی قوی ندارد. Armadillo یک مجموعه توابع برای جبرخطی در ++C فراهم کرده است.
به همراه این کتابخانه مثالهایی هم هست که میتوان اجرا نمود و لذت برد. برای بسیاری از عملیات ماتریسی MATLAB معادلی هم در آرمادیلو وجود دارد. گرچه که به گفته سایت آن، نیازی به LAPACK,BLASS نیست و این دو فقط برای افزایش کارایی میتوانند در کنار آرمادیلو استفاده شوند، لیکن من در اجرای تابع solve آن با مشکل روبرو شدم که نیاز به LAPACK,BLASS داشت. روش رفع مشکل را در اینترنت نیافتم. خوشبختانه مشکل به صورتی که گفته خواهد شد قابل رفع است. اگر شما هم با چنین مشکلی مواجه شدید کافیست
به همراه این کتابخانه مثالهایی هم هست که میتوان اجرا نمود و لذت برد. برای بسیاری از عملیات ماتریسی MATLAB معادلی هم در آرمادیلو وجود دارد. گرچه که به گفته سایت آن، نیازی به LAPACK,BLASS نیست و این دو فقط برای افزایش کارایی میتوانند در کنار آرمادیلو استفاده شوند، لیکن من در اجرای تابع solve آن با مشکل روبرو شدم که نیاز به LAPACK,BLASS داشت. روش رفع مشکل را در اینترنت نیافتم. خوشبختانه مشکل به صورتی که گفته خواهد شد قابل رفع است. اگر شما هم با چنین مشکلی مواجه شدید کافیست
- LAPACK,BLASS را از اینجا دانلود نموده و فایلها را باز کنید.
- سپس مسیرهای LAPACK و BLASS را به مسیر مورد جستجوی لینکر اضافه نمایید. به عنوان مثال در Code::Blocks در Project->Build Options->Search Directories->Linker
- فایل lapack_win32.lib را در قسمت تنظیمات لینکراضافه کنید.
- فایل config.hpp در مسیر Armadillo PATH/include/armadillo_bits را باز نموده و دستور زیر را را از حالت انتخاب شده خارج نمایید:
#define ARMA_USE_LAPACK
۱۳۸۹/۰۴/۱۲
ابزار CImg برای پردازش تصویر
قبلاً در این پست راجع به نصب OpenCV که یک مجموعه از توابع متن باز برای پردازش تصویر است، مطلبی نوشته بودم. به جز OpenCV ابزارهای دیگری هم هستند که از جمله میتوان به CImg اشاره کرد. این مجموعه بسیار جمع و جور است و من در اجرای مثالهای آن در Code::Blocks مشکلی نداشتم. فقط یک نکته و آن اینکه در تنظیمات لینکر باید libgdi32.a را اضافه کنید وگرنه با خطای undefined reference to SetDIBitsToDevice@48 مواجه میشوید.
ضمناً با باز کردن تصاویر jpeg مشکل دارم و پیام خطایی مبنی بر یافت نشدن gm.exe در مسیر temp ویندوز دریافت میکنم که هنوز رفع نشده است ): یکی فهمید به من هم بگوید بیزحمت.
خودم فهمیدم: ظاهراً CImg برای کار به تصاویر jpeg به ImageMagick نیاز دارد.
۱۳۸۹/۰۳/۰۲
نسخهٔ ۲ افزونهٔ پیوست منتشر شد (Attachments 2.0)
قبلاً در این پست افزونهٔ پیوست را که برای سنجاق نمودن فایل به مطالب سیستم جوملا استفاده میشود معرفی کرده بودم. اخیراً آقای جاناتان کامرون نسخهٔ دیگری از آن با قابلیتهای جدید عرضه نمودهاند. این افزونه و فایلهای فارسی آن (برای جومفا) را میتوانید از اینجـــا دانلود نمایید. قابلیتهای اضافه شده به این نسخه به قرار زیرند:
Release 2.0 is major update. Attachments 2.0 has been significantly refactored and enhanced. It adds many new features and improvements including simplified installation, ability to "attach" URLs, improved options to control where attachments are displayed, files are saved in separate directories (no more prefixing!), more flexibility to "Who can see" and "Who can update" options, unicode handling in filenames, significant improvements in the adminstrative back end, and a new capability to add attachments to content items other than articles (with additional plugins).
خدایا شکرت که به ما نعمت اسلام رو دادی
عنوان این پست را از متن این پست آقای بازرگان گرفتهام که دقیقاً مرا به یاد دیدارم از معبد لانگهوآ (Long Hua) در جنوب غرب شانگهای انداخت که حدود دو سال پیش رفته بودم. گرچه که تا حالا بیشتر مطالب این وبلاگ مرتبط با کامپیوتر بوده است اما گذاشتن چنین مواردی خالی از لطف نیست.
مطابق قانون دانشکده مهندسی کامپیوتر دانشگاه علم و صنعت، هر دانشجوی دکترا برای داشتن مجوز دفاع باید حداقل دو مقالهٔ ISI و یک ارائه مقاله در خارج داشته باشد که من هم به کنفرانس Life System Modeling and Simulation برای ارائهٔ یکی از مقالاتم رفته بودم.
عکس زیر تصویر ورودی معبد را نشان میدهد که برای ورود باید بلیط میگرفتی .
مطابق قانون دانشکده مهندسی کامپیوتر دانشگاه علم و صنعت، هر دانشجوی دکترا برای داشتن مجوز دفاع باید حداقل دو مقالهٔ ISI و یک ارائه مقاله در خارج داشته باشد که من هم به کنفرانس Life System Modeling and Simulation برای ارائهٔ یکی از مقالاتم رفته بودم.
عکس زیر تصویر ورودی معبد را نشان میدهد که برای ورود باید بلیط میگرفتی .
آقای بازرگان اشاره کرده بودند که «... یه ذکرهایی می گفتن و چند تا رکوع می کردن...»، من از برخی حرکات زائرین معبد فیلمهایی گرفته بودم که دوتا را جهت تکمیل صحبت آقای بازرگان و دیدن دوستان در اینجا میگذارم:
این چند عکس زیر هم مربوط به داخل معبد است که در برخی از آنها نحوه عبادت آنها دیده میشود. با دیدن این صحنهها دقیقاً مانند آقای بازرگان باخود گفتم: «خدایا شکرت که به ما نعمت اسلام رو دادی»
اگر مایلید اطلاعات بیشتری در مورد برخی سنتهای چینیها در معابدشان داشته باشید پست فوقالذکر آقای بازرگان را ببینید.
۱۳۸۹/۰۲/۲۷
برنامه کنترل بازبینی Mercurial
در ابتدا سالروز شهادت حضرت فاطمهٔ زهرا (سلام الله علیها) را تسلیت عرض میکنم.
من مدتی است که از SVN برای نگهداری تاریخچه تغییرات برخی فایلهایم استفاده میکنم. قبلاً در این پست در مورد مشکل جابجايی Repository این برنامه نوشته بودم. اخیراً آقای خلیقی مرا با Mercurial که یک Revision Control Software توزیع شده است آشنا کرده است. SVN و Mercurial تفاوتهایی دارند که شاید مهمترین آن متمرکز بودن اولی و توزیع شده بودن دومی باشد. (برای مقایسهٔ برنامههای مختلف کنترل نسخه و منجمله این دو برنامه این صفحه از ویکیپدیا را ببینید).
در همین چند ساعتی که نصبش کردهام، از Mercurial بیشتر خوشم آمد، جدا از اینکه امکان کار با تکتک فایلها را میدهد و همچنین تفاوتهای نسخههای مختلف فایل نشان داده میشود، به سبب ماهیت توزیع شده بودن آن، مشکلی که در پست قبل گفته بودم در اینجا وجود ندارد. به راحتی میتوان با یک clone یک نسخه کامل از یک مجموعه را از هر جایی داشت.
و اما لینکهای دانلود: این Mercurial و این هم رابط گرافیکی آن.
همچنین سایت Bitbucket به صورت رایگان میزبان فایلهای شماست که دسترسی با فایلهایتان از هر جایی را میسر میسازد. به عنوان نمونه میتوانید فایلهای مربوط به استیلهای فارسی مراجع در زیپرشین را در این قسمت از Bitbucket ببینید.
یک توضیح مختصر برای شروع به کار:
اگر رابط کاربری آنرا هم نصب کرده باشید خیلی راحت است. روی شاخه محتوی فایلهای پروژهٔ خود (مثلا myProject) ، کلیک راست کرده، از منوی TortiseHG گزینه Create Repository Here را انتخب میکنید. حال فایلهایی از این شاخه که میخواهید کنترل شوند را انتخاب نموده، از گزینهها HD Add Files را انتخاب نموده و پس از آن Commit را انتخاب میکنید. یک توضیح (مثلا Initial Commit) نوشته و دکمه Commit را میزنید.
اکنون مخزن شما به صورت محلی آماده است.
داشتن سرور الزامی نیست. تاریخچه در خود شاخه نگهداری میشود.
یک کپی از مخزن را در هر جا و منجمله یک هارد اکسترنال نیز میتوانید داشته باشید.
کافیست TortoiseHG Clone را انتخاب و مسیرهای مبدأ و مقصد را مشخص کنید تا یک کپی در مقصد ایجاد شود.
اگر در مقصد فقط میخواهید یک کپی از مخزن (مثلا به عنوان پشتیبان) داشته باشید گزینه do not update the new working directory را انتخاب کنید. در این حالت فایلهای مخزن شما در مقصد باز نخواهند شد، اما قابل استراج هستند.
من مدتی است که از SVN برای نگهداری تاریخچه تغییرات برخی فایلهایم استفاده میکنم. قبلاً در این پست در مورد مشکل جابجايی Repository این برنامه نوشته بودم. اخیراً آقای خلیقی مرا با Mercurial که یک Revision Control Software توزیع شده است آشنا کرده است. SVN و Mercurial تفاوتهایی دارند که شاید مهمترین آن متمرکز بودن اولی و توزیع شده بودن دومی باشد. (برای مقایسهٔ برنامههای مختلف کنترل نسخه و منجمله این دو برنامه این صفحه از ویکیپدیا را ببینید).
در همین چند ساعتی که نصبش کردهام، از Mercurial بیشتر خوشم آمد، جدا از اینکه امکان کار با تکتک فایلها را میدهد و همچنین تفاوتهای نسخههای مختلف فایل نشان داده میشود، به سبب ماهیت توزیع شده بودن آن، مشکلی که در پست قبل گفته بودم در اینجا وجود ندارد. به راحتی میتوان با یک clone یک نسخه کامل از یک مجموعه را از هر جایی داشت.
و اما لینکهای دانلود: این Mercurial و این هم رابط گرافیکی آن.
همچنین سایت Bitbucket به صورت رایگان میزبان فایلهای شماست که دسترسی با فایلهایتان از هر جایی را میسر میسازد. به عنوان نمونه میتوانید فایلهای مربوط به استیلهای فارسی مراجع در زیپرشین را در این قسمت از Bitbucket ببینید.
یک توضیح مختصر برای شروع به کار:
اگر رابط کاربری آنرا هم نصب کرده باشید خیلی راحت است. روی شاخه محتوی فایلهای پروژهٔ خود (مثلا myProject) ، کلیک راست کرده، از منوی TortiseHG گزینه Create Repository Here را انتخب میکنید. حال فایلهایی از این شاخه که میخواهید کنترل شوند را انتخاب نموده، از گزینهها HD Add Files را انتخاب نموده و پس از آن Commit را انتخاب میکنید. یک توضیح (مثلا Initial Commit) نوشته و دکمه Commit را میزنید.
اکنون مخزن شما به صورت محلی آماده است.
پس از ایجاد حساب در bitbucket، یک مخزن مثلا با نام myProject ایجاد کنید.
روی شاخه myProject دستگاهتان کلیک راست کرده و HG Repository Explorer را انتخاب کنید. از منوی synchronize گزینه Configure path را انتخاب کنید. گزینه synchronize را انتخاب و دکمه Add را زده و مشخصات مخزن خود روی سایت را وارد کنید. حال دکمه سبز روبه بالا با یک خط بالاش (Push) را میزنید و فایلها به سایت متقل میشوند.
این همه دنگ و فنگ مربوط به اولین بار است. در سایر دفعات برای ارسال تغییرات به مخزن محلی کافیست Commit کنید و سپس برای ارسال تغییرات به سرور Push کنید.
اگر رابط کاربری را نصب نکردهاید با دستورات خط فرمان هم میشود این کار را کرد (به نقل از آقا سیدرضی):
به فرض حسابی در bitbucket ساختهاید؛ ابتدا در ترمینال دستور زیر را وارد کنید:روی شاخه myProject دستگاهتان کلیک راست کرده و HG Repository Explorer را انتخاب کنید. از منوی synchronize گزینه Configure path را انتخاب کنید. گزینه synchronize را انتخاب و دکمه Add را زده و مشخصات مخزن خود روی سایت را وارد کنید. حال دکمه سبز روبه بالا با یک خط بالاش (Push) را میزنید و فایلها به سایت متقل میشوند.
این همه دنگ و فنگ مربوط به اولین بار است. در سایر دفعات برای ارسال تغییرات به مخزن محلی کافیست Commit کنید و سپس برای ارسال تغییرات به سرور Push کنید.
اگر رابط کاربری را نصب نکردهاید با دستورات خط فرمان هم میشود این کار را کرد (به نقل از آقا سیدرضی):
hg clone http://bitbucket.org/youraccount/myProject
در پوشه جاری شما یک پوشه با نام myProject ایجاد میشود. حالا تمام فایلهای کار خود را در این پوشه جدید کپی کنید و دستورات زیر را در ترمینال اجرا کنید:
cd myProject
hg add
hg ci -m "your description for this commit (Initial Commit)"
hg push
داشتن سرور الزامی نیست. تاریخچه در خود شاخه نگهداری میشود.
یک کپی از مخزن را در هر جا و منجمله یک هارد اکسترنال نیز میتوانید داشته باشید.
کافیست TortoiseHG Clone را انتخاب و مسیرهای مبدأ و مقصد را مشخص کنید تا یک کپی در مقصد ایجاد شود.
اگر در مقصد فقط میخواهید یک کپی از مخزن (مثلا به عنوان پشتیبان) داشته باشید گزینه do not update the new working directory را انتخاب کنید. در این حالت فایلهای مخزن شما در مقصد باز نخواهند شد، اما قابل استراج هستند.
۱۳۸۹/۰۲/۲۴
جالب ترین خطای دید
با اینکه به خطای دید اعتقاد دارم ولی پذیرش اینکه در شکل روبرو دو مربع A,B همرنگ هستند برایم خیلی سخت بود و تا وقتی با نقاش ویندوز چک نکردم باورم نشد!!!
تصویر از وبلاگ آقای محمدی گرفته شده و در وبلاگ آقای فرهادی نیز به آن اشاره شده است.
برای خاطرجمع شدن به نظرات وبلاگ آقای محمدی یا این صفحـــه مراجعه فرمایید.
تصویر از وبلاگ آقای محمدی گرفته شده و در وبلاگ آقای فرهادی نیز به آن اشاره شده است.
برای خاطرجمع شدن به نظرات وبلاگ آقای محمدی یا این صفحـــه مراجعه فرمایید.
۱۳۸۹/۰۲/۰۷
MATLAB و پردازندههای چند هستهای (۲)
یاد آن روزهایی که با ماشین حساب fx 3600 برنامه مینوشتم و وقتی ماشین حساب برای اجرای یک برنامه ۲ دقیقه در کما فرو میرفت، بهخیر. از اینکه میتوانستم حسابی مشغولش کنم کیف میکردم.
حالا هم وقتی نمیتوانم از تمام ظرفیت پردازشی سیستم -درحالیکه نیاز دارم- استفاده کنم اعصابم خرد میشود.
قبلاً در این پســـــت راجع به چگونگی استفاده از چند هستهٔ CPU در MATLAB مطلبی را نوشته بودم و گفته بودم:
حالا هم وقتی نمیتوانم از تمام ظرفیت پردازشی سیستم -درحالیکه نیاز دارم- استفاده کنم اعصابم خرد میشود.
قبلاً در این پســـــت راجع به چگونگی استفاده از چند هستهٔ 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')
statements
end
matlabpool('close')
اگر برنامهای را به صورت معمول نوشته باشید و مثلاً ۷۰درصد اوقات سیپییوی شما مشغول باشد و با دستورات فوق برنامهٔ خود را برای استفاده از چند هسته اصلاح نمایید، هر چهار هسته صددرصد مشغول بوده و سرعت بیشتری در حصول به نتیجه را شاهد خواهید بود؛ البته باز هم به شرطها و شروطها.
فعلاً به همین معرفی parfor بسنده میکنم؛ اشاءالله بعداً بیشتر خواهم گفت.
فعلاً به همین معرفی parfor بسنده میکنم؛ اشاءالله بعداً بیشتر خواهم گفت.
۱۳۸۹/۰۱/۱۹
آفرین به این مادر
امروز از طریق آقا میلاد و با موضوع زیباترین دانشگاه دنیا با وبلاگ آقای بازرگان آشنا شدم. جدا از مطالبی که در وبلاگ آقای بازرگان هست، یک نکته برایم خیلی جالب بود و آن هم نظارت بر تربیت ایشان توسط مادرشان بود که با ملاحظهٔ مطالب سایت (مانند این پست و این نامهٔ جالب) متوجه میشویم که امری مستمر بوده و از بچگی تا الان که ظاهراً ایشان در فرانسه مشغول تحصیل میباشند ادامه دارد. و اما نکته اصلی: آقای بازرگان در قسمتی از وبلاگشان به مقولهٔ چندهمسری و زن و مرد در تبلیغات غرب پرداختهاند و در ذیل نظرات این پست، نقطه نظراتی از افراد مختلف و منجمله مادرایشان را شاهد هستیم. مادر ایشان با متانت نظرات خودشان را در خصوص موضوع و برخی نظرات دیگران بیان نمودهاند و در قسمتی خطاب به فرزندشان نوشتهاند:
یاد صحبتهای جناب حجت الاسلام نقویان (حفظه الله تعالی) میافتم که تاکید فراوانی بر نقش خانواده دارند و هفته گذشته خودم یکی از مصادیق صحبتهای ایشان را در قطار شاهد بودم. آنجا که از یکی از دو جوان همسفرم پرسیدم «تو چرا سیگار نمیکشی؟» و جواب داد: «مادرم راضی نیست». و این «مادرم راضی نیست» عین عبارت یکی از سخنرانیهای حاج آقا نقویان است.
چهارم:آفرین بر این مادر که این چنین در تربیت فرزند حساس است. آفرین بر این خانواده، پست مربوط به پدر ایشان نیز خواندنی است. کاش ما هم این چنین باشیم.
باز هم که زدی تو خاکی؟
پنجم:
پسر رفته ای آن جا درس بخوانی
یا دنبال این حرف ها باشی
اگر می خواهی دنبال این حرف ها باشی
داشتن یا نداشتن دکترا فرقی به حالت نمی کند
از راه حق خبری نیست
برگرد بیا خانه
شاید این جا یک زن گرفتی و مشغول به کار شدی
و دیگر دنبال این حرف ها نرفتی
بچه جان دنبال مسیر حق باش
...
هفتم:
no matter whhat
i love you
یاد صحبتهای جناب حجت الاسلام نقویان (حفظه الله تعالی) میافتم که تاکید فراوانی بر نقش خانواده دارند و هفته گذشته خودم یکی از مصادیق صحبتهای ایشان را در قطار شاهد بودم. آنجا که از یکی از دو جوان همسفرم پرسیدم «تو چرا سیگار نمیکشی؟» و جواب داد: «مادرم راضی نیست». و این «مادرم راضی نیست» عین عبارت یکی از سخنرانیهای حاج آقا نقویان است.
۱۳۸۹/۰۱/۱۵
فارسی کردن برچسبها در فایلهای eps
بسیاری از ما ممکن است نمودارهای خود را با ابزاری مانند MATLAB و در قالب eps ذخیره نماییم. فارسی کردن برچسب نمودارهای با قالب eps یکی از معضلات تهیه مستندات فارسی و منجمله پایاننامههاست.
برای رفع این مشکل من راهحلهایی را در این پســــــــت از تالار گفتگوی پارسیلاتک پیشنهاد نمودهام که آنها را در اینجا نیز ذکر میکنم:
۱- اگر فقط فایل eps را دارید: با استفاده از Eps2pgf که مثال و لینک دانلود آن در اینجــــــــــا هست، فایلهای eps خود را به pgf تبدیل نمایید و سپس در فایل تولید شده:
برچسب های شما در خروجی سند زیپرشین، فارسی خواهند بود.
۲- اگر MATLAB مولد eps شما بوده و میتوانید دوباره اجرا کنید، از matlab2tikz برای تولید خروجی tikz به جای eps استفاده کنید. البته برچسبها را باید خودتان فارسی کنید و نیاز به تغییر فایل matlab2tikz هم هست که من با اجازه صاحبش برای خودم تغییر دادهام که با نسخههای قدیم MATLAB کار کند، ولی با نسخههای جدید آن (۲۰۰۸ به بعد) ظاهراً مشکلی وجود ندارد.
۳- اگر با MATLAB یا برنامه دیگری eps را تولید کردهاید و قادر به اجرای مجدد هستید، به نحوی برنامه خود را تغییر دهید که مستقیماً کد tikz برای رسم نمودارها را تولید نماید و سپس از نمودارها در لاتک استفاده کنید. اگر برنامه شما توان تولید خروجی فارسی را داشته باشد که فبها وگرنه باید مثل بالا به صورت دستی عبارات لاتین را با معادل فارسی آنها جایگزین نمایید.
برای رفع این مشکل من راهحلهایی را در این پســــــــت از تالار گفتگوی پارسیلاتک پیشنهاد نمودهام که آنها را در اینجا نیز ذکر میکنم:
۱- اگر فقط فایل eps را دارید: با استفاده از Eps2pgf که مثال و لینک دانلود آن در اینجــــــــــا هست، فایلهای eps خود را به pgf تبدیل نمایید و سپس در فایل تولید شده:
- آنرا به یونیکد تبدیل نمایید (مثلاً با ++Notepad).
- عبارات لاتین خود را با معادل فارسی آنها جایگزین نمایید.
- pgfpicture، را با tikzpicture عوض کنید.
- دستورات \textsf را حذف نموده و یا به textbf تغییر دهید.
برچسب های شما در خروجی سند زیپرشین، فارسی خواهند بود.
۲- اگر MATLAB مولد eps شما بوده و میتوانید دوباره اجرا کنید، از matlab2tikz برای تولید خروجی tikz به جای eps استفاده کنید. البته برچسبها را باید خودتان فارسی کنید و نیاز به تغییر فایل matlab2tikz هم هست که من با اجازه صاحبش برای خودم تغییر دادهام که با نسخههای
۳- اگر با MATLAB یا برنامه دیگری eps را تولید کردهاید و قادر به اجرای مجدد هستید، به نحوی برنامه خود را تغییر دهید که مستقیماً کد tikz برای رسم نمودارها را تولید نماید و سپس از نمودارها در لاتک استفاده کنید. اگر برنامه شما توان تولید خروجی فارسی را داشته باشد که فبها وگرنه باید مثل بالا به صورت دستی عبارات لاتین را با معادل فارسی آنها جایگزین نمایید.
۱۳۸۹/۰۱/۰۷
چگونه در صفحات وب فرمول قرار دهیم؟
استفاده از تصویر فرمول، یک راه معمول برای درج فرمولها در صفحات وب است. سایتهای مختلفی هستند که دستورات لاتک فرمول موردنظر را از کاربر گرفته تصویر فرمول مربوطه را تولید و در اختیار ما قرار میدهند. این ســــایت یک نمونه جالب است که ابزاری هم برای درج دستور لاتک مورد نظر شبیه Equation Editor در میکروسافت ورد دارد که کار را برای کاربرانی که دستورات لاتک را نمیدانند بسی آسان نموده است.به عنوان نمونه تابع خطای زیر با استفاده از سایت مذکور و عبارت erf(x)=\frac{2}{\sqrt{\pi}}\int_0^xe^{-t^2}dt حاصل شده است:
مشکلی که چنین ابزاری دارند آن است که ارقام تولید شده توسط آنها انگلیسی است و نمیتوان از آنها برای تولید فرمول با ارقام فارسی استفاده کرد. اخیراً در سایت پارسیلاتک با استفاده از زیپرشین این امکان فراهم شده است و هر کسی میتواند با وارد کردن فرمول لاتک، تصویر آنرا با ارقام فارسی داشته باشد. تصویر زیر همان رابطه فوق را با ارقام فارسی نشان میدهد:
۱۳۸۸/۱۲/۲۲
سورس فورج و تحریم ایران
من فایلهای jsMath که برای نوشتن فرمولهای ریاضی در صفحات وب بکار میروند و در سورس فورج هستند را نیاز داشتم.
از آنجا که مدتی است سایت SourceForge -که یکی از وبسایتهای میزبان پروژههای آزاد است - ایران را تحریم کرده است، نمیتوانستم آنها را از آنجا دانلود کنم. آدرس لینک مستقیم را هم نداشتم که به گونهای دیگر اقدام کنم. با جستجو در اینترنت متوجه شدم فایلهای مورد نظر من در سایت ژاپنی سورس فورج هم وجود داشته و قابل دانلود است. همچنین از این Mirror نیز قابل برداشت است.
اما به نظر میرسد همه پروژههای سورسفورج از سایت ژاپنی قابل دانلود نیستند. راه حلی پیشنهادی من برای دریافت پروژههای روی سورس فورج به قرار زیر است:
پ.ن ۱. به تازگی از طریق آقا میلاد خواجوی متوجه شدم که راه حل بهتری هم هست:
از آنجا که مدتی است سایت SourceForge -که یکی از وبسایتهای میزبان پروژههای آزاد است - ایران را تحریم کرده است، نمیتوانستم آنها را از آنجا دانلود کنم. آدرس لینک مستقیم را هم نداشتم که به گونهای دیگر اقدام کنم. با جستجو در اینترنت متوجه شدم فایلهای مورد نظر من در سایت ژاپنی سورس فورج هم وجود داشته و قابل دانلود است. همچنین از این Mirror نیز قابل برداشت است.
اما به نظر میرسد همه پروژههای سورسفورج از سایت ژاپنی قابل دانلود نیستند. راه حلی پیشنهادی من برای دریافت پروژههای روی سورس فورج به قرار زیر است:
- نام پروژه دقیق موردنظر خود را از سایت اصلی سورس فورج استخراج کنید. مثلاً برای OpenCV، این نام opencvlibrary است.
- به این 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 -که مجموعهای از توابع متن باز پردازش تصویر هستند-روی اوبونتو، به نحوی که بتوان مثالهای داخلش را اجرا نمود باید مراحل زیر را طی کرد:
- بستههای مورد نیاز آنرا نصب نمود. با استفاده از دستور زیر این بستهها نصب میشوند:البته من فقط بستههای cmake و libgtk2.0-dev را نصب کردم.
# apt-get install libavformat-dev libgtk2.0-dev pkg-config cmake libswscale-dev bzip2
- OpenCV را از سایتش دانلود نماییم. چون ظاهراً سایت سورسفورج به ما سرویس نمیدهد، آنرا از سایتی چینی گرفتم. البته میتوان با wget آنرا به سایت دیگری کپی کرد.
$ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.0/OpenCV-2.0.0.tar.bz2
یا به این پست من در مورد سورسفورج و تحریم ایران مراجعه کنید. - سایر مراحل نصب به صورت کامل در اینجــــــــــــــــا توضیح داده شده است.
- برای کامپایل مثالها به صورت زیر عمل کنیم:
cd samples/c/
. build_all.sh
./facedetect
- برای کامپایل یک برنامه نمونه هم باید به صورت زیر عمل نمود:
g++ `pkg-config opencv --cflags --libs` image-conversion.c -o image-conversion
۱۳۸۸/۱۲/۱۷
ابزار مدیریت مراجع Mendeley
چند روز پیش با Mendeley که یک برنامه رایگان مدیریت مراجع است آشنا شدم. من از ابزارهای دیگر مدیریت مراجع که لیستی از آنها به همراه مقایسهٔ آنها را میتوانید در اینجــــــــــــــــــــا ببینید، استفاده نکردهام ولی از این خیلی خوشم آمد. چرا؟
- خیلی خوشدست است. یک فایل مقاله را با ماوس روی آن میکشی، اطلاعات آن را از خود مقاله در میآورد؛ اگر نشد با یک کلیک از اینترنت میگیرد.
- مشخصات مقاله برای ارجاع در مقاله را با قالبهای بسیار گوناگون، برای استفاده در Microsoft Wrod و یا LaTeX به راحتی در اختیار ما میگذارد (پشتیبانی از EndNote, BibTeX ).
- هم نسخه Desktop را دارد و هم میتوان یک حساب در سایتش داشت که به راحتی با هم Sync میشوند. لذا مراجع ما از روی اینترنت هم قابل دسترس است.
- امکان داشتن گروههای مختلف، مثل گروه مقالات تالیف شده توسط خودمان را به ما میدهد.
- لینک مقاله در روی دستگاه در کنار نام مقاله قرار میگیرد و میتوان مقاله را به سایتش هم آپلود نمود (حداکثر ۵۰۰ مگابایت)
- مقالات را میتوان بر اساس نام مؤلف، نام محل نشر و ... دستهبندی نمود.
- بروز رسانی مقالات در صفحه شخصی آدم کار پردردسری است که با استفاده از Mendeley این کار به راحتی - و البته در سایت آن - انجام میپذیرد. اگر دوست داشتید Profile مرا در Mendeley ببینید، به اینجــــــــــــــــــــا مراجعه کنید.
اشتراک در:
پستها (Atom)