Wednesday, November 05, 2014

دانشسرای پویش

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

جهت استفاده از مطالب دانشسرا به این آدرس مراجعه فرمایید.

Saturday, June 28, 2014

Libtool: Library version info

سلام

چنانچه در محیط لینوکس از ابزارهای Auto همچون Autoconf و Automake جهت خودکار کردن فرآیند تولید خود استفاده میکنید، لازم است از قاعده تعریف شماره ویرایش (Version) کتابخانه‌ها در libtool آگاه بوده و شیوه ویرایش گذاری خود را با آن مطابقت دهید.
شیوه تعریف شماره ویرایش برای کتابخانه فرضی test به این شرح است:

libtest_la_LDFLAGS= -version-info c:r:a

c: نشانگر Current به معنای شماره ویرایش فعلی رابط (Interface)  کتابخانه است.
r: به معنای شماره revision یا شماره بازبینی است
a: نشانگر age یا نسل است.

نحوه انجام تغییرات در اعداد از یک ویرایش به ویرایش دیگر به این شکل است:
  1. چنانچه کتابخانه نسبت به کتابخانه قبلی تغییری در رابط (Interface) ندارد و صرفا نحوه پیاده‌سازی تغییر کرده و یا باگی رفع شده است، عدد r یکی اضافه میشود.
  2. در غیر اینصورت در تمامی موارد r صفر میشود و عدد c یکی اضافه میشود و برای a دو احتمال وجود دارد
    1. چنانچه رابط کتابخانه تغییر کرده است اما با ویرایش قبلی سازگار است (پشتیبانی میکند) عدد a یکی اضافه میشود.
    2. چنانچه رابط کتابخانه به شکلی تغییر کرده که ویرایش قبلی را پشتیبانی نمیکند، عدد a به صفر تغییر میکند
با این فرمول، هنگامی که کتابخانه‌ای به صورت c.r.a ویرایش گذاری شود، بدین معنا است که تمامی Interfaceهای از ویرایش c-a تا c را پشتیبانی میکند. کتابخانه حاصل از این ویرایش به این شکل نامگذاری خواهد شد:
libtest.so.$((c - a).a.r

تلفیق با شیوه major.minor.micro

با توجه به اینکه عادتی در ویرایش گذاری برنامه‌ها با ترکیب سه عدد major.minor.micro‌ وجود دارد، میتوان با فرمول زیر بین این دو استاندارد مطابقت ایجاد کرد:
c = major + minor
r = micro
a = minor
شروط حاکم بر نحوه تغییر این اعداد به این شکل است:
  1. چنانچه کتابخانه نسبت به کتابخانه قبلی تغییر رابط ندارد، و صرفا نحوه پیاده‌سازی تغییر کرده است و یا اینکه باگی رفع شده است، عدد micro یک عدد اضافه میشود.
  2. چنانچه رابط کتابخانه تغییر کرده است اما با ویرایش قبلی سازگاری دارد (عدم تغییر در پارامترهای ورودی و یا هر گونه تغییر ساختاری دیگر)، و صرفا مواردی به رابط اضافه شده است، عدد minor یک عدد اضافه میشود و عدد micro صفر میشود.
  3. چنانچه تغییرات در رابط کتابخانه با ویرایش قبلی سازگاری ندارد، عدد major یک عدد اضافه میشود و اعداد micro و minor صفر میشوند.

Sunday, March 30, 2014

GFS2 unformat helper tool

سلام

در دنیای کار با اطلاعات حجیم شاید بدترین خبری که میتواند به مدیر آی.تی برسد فرمت (سهوی یا عمدی) مجدد دیسک حاوی اطلاعات حیاتی است. به هر حال این خبر نسبتا وحشتناک در واپسین روزهای سال ۱۳۹۲ به ما رسید.

ما نیز تمامی توان فنی و تجارب چندین ساله در فضای متن‌باز خود را بسیج کردیم و در نهایت موفق شدیم، به یاری خدا و خوش اقبالیهایی که نصیب ما شد، اطلاعات با حجم نزدیک به ۲ ترابایت را، بدون از دست دادن حتی یک بیت، بازیابی کنیم.

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

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

موفق باشید

Wednesday, March 12, 2014

C++, Occurance of "__cxa_call_unexpected" in back-trace

قابلیتی در ++C با نام Exception Definition این امکان را برای برنامه‌نویس فراهم میکند تا انواع Exceptionهایی را که تابع میتواند Throw کند برای کامپایلر مشخص کند.
نحوه استفاده از این قابلیت به این شرح است:
int x() throw (ex1, ex2, ...)

در این وضعیت چنانچه تابع Exceptionی غیر از موارد مشخص شده را رها کند، سیستم یک Exception از جنس std::unexpected را ایجاد میکند. که این موضوع در BackTrace با عبارت __cxa_call_unexpected قابل تشخیص است.

راه حل این موضوع درج Exception تعریف نشده در بلاک تعریف و یا حذف کامل قسمت Definition میباشد.

Wednesday, February 26, 2014

حدیثی زیبا از حضرت محمد

سلام

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

          امروز و فردا کردن در کارها          
  پيامبر صلى‏الله‏عليه‏و‏آله : :  
   
  وَيلٌ لِصُنّاعِ اُمَّتي مِنَ اليَومِ وغَدا  
   
  واى به حال صنعت گران امّت من ، از اين كه در كار مردم امروز و فردا كنند  
   
  وسائل الشيعه ، ح ۱۲ ، ص ۳۱۰ .

مناسبتهاي روز:
روز بزرگداشت خواجه نصيرالدين طوسى ـ روز مهندسى