
مشکلی با OpenCV
در اجرای مثالهایی از OpenCV 2.0 در ویژوال استودیو که از تابع cvDestroyWindow استفاده شده بود با خطا مواجه میشدم و هر چه تلاش کردم به نتیجه نرسید تا اینکه OpenCV 2.1 را نصب کردم و مشکل برطرف شد.
در اجرای مثالهایی از OpenCV 2.0 در ویژوال استودیو که از تابع cvDestroyWindow استفاده شده بود با خطا مواجه میشدم و هر چه تلاش کردم به نتیجه نرسید تا اینکه OpenCV 2.1 را نصب کردم و مشکل برطرف شد.
نصب 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 ایجاد کنید:
حال اگر هر commitی در Mercurial انجام دهید، به شرطی که تغییری در فایلها داده باشید، HTML به صورت خودکار بروزرسانی خواهد شد:
> hg ci -m "Initial commit"
موارد دیگری هم در پست VanderLinden هست که میتوانید به آن مراجعه نمایید. برای خودم که خیلی جالب بود، امیدورام برای شما هم مفید باشد.
به عنوان یک نمونه سایت که از Sphinx استفاده کرده است، سری به سایت http://www.mathjax.org بزنید.
از امام صادق علیه السّلام روایت شده که پدر بزرگوارشان در پاسخ کسی که از فضیلت شب نیمه شعبان از ایشان پرسیده بود فرمودند:
این شب برترین شب ها بعد از شب قدر است، خداوند در این شب فضلش را بر بندگان جاری می سازد و از منّت خویش گناهان آنان را می بخشد، پس تلاش کنید که در این شب به خدا نزدیک شوید. همانا این شب، شبی است که خداوند به وجود خود سوگند یاد کرده که در آن درخواست کننده ای را، مادام که درخواست گناه نداشته باشد، از درگاه خود نراند. این شب، شبی است که خداوند آن را برای ما خاندان قرار داده است، همچنان که شب قدر را برای پیامبر ما قرار داده است. پس بر دعا و ثنای بر خداوند تعالی بکوشید، که هر کس در این شب صد مرتبه خداوند را تسبیح گوید، صد مرتبه حمدش را بر زبان جاری سازد، صد مرتبه زبان به تکبیرش گشاید و صد مرتبه ذکر یگانگی (لا اله الا اللّه) او را به زبان آورد، خداوند از سر فضل و احسانی که بر بندگانش دارد، همه گناهانی را که او انجام داده بیامرزد و درخواست های دنیوی و اخروی او را برآورده سازد، چه درخواست هایی که بر خداوند اظهار کرده و چه درخواست هایی که اظهار نکرده و خداوند با علم خود بر آنها واقف است.
به همراه این کتابخانه مثالهایی هم هست که میتوان اجرا نمود و لذت برد. برای بسیاری از عملیات ماتریسی MATLAB معادلی هم در آرمادیلو وجود دارد. گرچه که به گفته سایت آن، نیازی به LAPACK,BLASS نیست و این دو فقط برای افزایش کارایی میتوانند در کنار آرمادیلو استفاده شوند، لیکن من در اجرای تابع solve آن با مشکل روبرو شدم که نیاز به LAPACK,BLASS داشت. روش رفع مشکل را در اینترنت نیافتم. خوشبختانه مشکل به صورتی که گفته خواهد شد قابل رفع است. اگر شما هم با چنین مشکلی مواجه شدید کافیست
قبلاً در این پست راجع به نصب OpenCV که یک مجموعه از توابع متن باز برای پردازش تصویر است، مطلبی نوشته بودم. به جز OpenCV ابزارهای دیگری هم هستند که از جمله میتوان به CImg اشاره کرد. این مجموعه بسیار جمع و جور است و من در اجرای مثالهای آن در Code::Blocks مشکلی نداشتم. فقط یک نکته و آن اینکه در تنظیمات لینکر باید libgdi32.a را اضافه کنید وگرنه با خطای undefined reference to SetDIBitsToDevice@48 مواجه میشوید.
ضمناً با باز کردن تصاویر jpeg مشکل دارم و پیام خطایی مبنی بر یافت نشدن gm.exe در مسیر temp ویندوز دریافت میکنم که هنوز رفع نشده است ): یکی فهمید به من هم بگوید بیزحمت.
خودم فهمیدم: ظاهراً CImg برای کار به تصاویر jpeg به ImageMagick نیاز دارد.
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).
آقای بازرگان اشاره کرده بودند که «… یه ذکرهایی می گفتن و چند تا رکوع می کردن…»، من از برخی حرکات زائرین معبد فیلمهایی گرفته بودم که یکی از آنها را جهت تکمیل صحبت آقای بازرگان و دیدن دوستان در اینجا میگذارم:
این چند عکس زیر هم مربوط به داخل معبد است که در برخی از آنها نحوه عبادت آنها دیده میشود. با دیدن این صحنهها دقیقاً مانند آقای بازرگان باخود گفتم: «خدایا شکرت که به ما نعمت اسلام رو دادی»
![]() |
|
![]() |
اگر مایلید اطلاعات بیشتری در مورد برخی سنتهای چینیها در معابدشان داشته باشید پست فوقالذکر آقای بازرگان را ببینید.
و اما لینکهای دانلود: این Mercurial و این هم رابط گرافیکی آن.
همچنین سایت Bitbucket به صورت رایگان میزبان فایلهای شماست که دسترسی با فایلهایتان از هر جایی را میسر میسازد. به عنوان نمونه میتوانید فایلهای مربوط به استیلهای فارسی مراجع در زیپرشین را در این قسمت از Bitbucket ببینید.
یک توضیح مختصر برای شروع به کار:
اگر رابط کاربری آنرا هم نصب کرده باشید خیلی راحت است. روی شاخه محتوی فایلهای پروژهٔ خود (مثلا myProject) ، کلیک راست کرده، از منوی TortiseHG گزینه Create Repository Here را انتخب میکنید. حال فایلهایی از این شاخه که میخواهید کنترل شوند را انتخاب نموده، از گزینهها HD Add Files را انتخاب نموده و پس از آن Commit را انتخاب میکنید. یک توضیح (مثلا Initial Commit) نوشته و دکمه Commit را میزنید.
اکنون مخزن شما به صورت محلی آماده است.
این همه دنگ و فنگ مربوط به اولین بار است. در سایر دفعات برای ارسال تغییرات به مخزن محلی کافیست Commit کنید و سپس برای ارسال تغییرات به سرور Push کنید.
اگر رابط کاربری را نصب نکردهاید با دستورات خط فرمان هم میشود این کار را کرد (به نقل از آقا سیدرضی):
به فرض حسابی در bitbucket ساختهاید؛ ابتدا در ترمینال دستور زیر را وارد کنید:
hg clone http://bitbucket.org/youraccount/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 را انتخاب کنید. در این حالت فایلهای مخزن شما در مقصد باز نخواهند شد، اما قابل استراج هستند.
ظاهراً نسخههای جدید MATLAB امکانات موازی سازی، محاسبات توزیعشده و چندنخی (Multithreading) خوبی دارند.
اون موقع هنوز نسخه جدید را نداشتم ولی به تازگی MATLAB نسخهٔ R2009a را نصب کردهام که جعبه ابزار Parallel Computing را دارد. یک دستور اضافه شده در این نسخه، دستور parfor است که برای اجرای عملیات یک حلقه، به صورت همزمان بر روی چند هسته بکار میرود. نحوهٔ استفاده از آن هم همانند for است با یک سری محدودیتها. به صورت موازی درآوردن یک الگوریتم نه همیشه شدنی و نه همیشه راحت است؛ لیکن MATLAB جدا از برخی محدودیتها، کار را برای برنامههای Single Instruction Multiple Data یا SIMP، بسیار راحت کرده است. نحوهٔ استفاده از این دستور برای اجرای دستوراتی خاص روی چهار هسته در زیر آمده است: