2009/07/25

‭Understanding OTRS Stats (Reports)

rep Two kinds of stats exist: dynamic stats and static stats. Users are more familiar with dynamic stats. Many sample dynamic stats are installed into OTRS by default. For example “Tickets Overview” is one of these pre-installed reports. In a static stat you first select an object. Then you select two aspects or properties of the object. OTRS then creates a matrix and uses those 2 properties for rows and columns and uses count of corresponding row and column as each cell’s data. For example consider “Ticket” as an object and “Type” and “Queue” as its properties. Then the above mentioned matrix looks like following:
 
Queue/Type Incident Service Request Problem
Queue1    2 1 0
Queue2    1 3 2
Queue3 4 5 2
Raw    2 3 3
 

Using such a stat you can determine how many tickets of type “Problem” exists in queue “Queue1”. While defining a stat, you can set your restrictions on it.
In opposite of dynamic stats, there is static stats. A static stat does not use dynamic objects to generate reports; instead it uses system objects directly to generate a stat. This type of report is indeed a customized report because you must write a real Perl module to create such a stat. The Perl module must have certain sub-routines and all of sub-routines must return data in a certain format. These modules should be placed in “otrs/kernel/system/stats/static”. If you don’t place stat file in this path, you will never even see Static option while defining new stats or editing old stats. There are no default static stats in OTRS.
In the following please consider object “ITSMConfigItem” and its properties as an example for dynamic reports:

  1. Class
  2. Deployment State
  3. Incident State
  4. Hardware Module::Type
  5. Computer::Type
  6. Hardware Device::Type
  7. Location::Type
  8. Software::Type
  9. Software::License Type
  10. Creation Time
  11. Change Time

 

References:




2009/07/22

‫‫استاندارد ماتصا ۶۲۱۹ (ISIRI 6219)

isiri این استاندارد توسط موسسه استاندارد و تحقیقات صنعتی ایران (ماتصا) برای تعریف و یکسان‌سازی استفاده از حروف و الفبای فارسی در محیط کامپیوتر در اردیبهشت ۱۳۸۱ تدوین شده است. این استاندارد در حال حاضر (تیر ۱۳۸۸) جدیدترین استاندارد در این زمینه و جایگزین کلیه استانداردهای قدیمی‌تر ماتصا ۳۳۴۲، ماتصا ۲۹۰۰ و استانداردهای غیر رسمی ویندوز ۱۲۵۶، ایران سیستم، پانیذ و سایه است. ماتصا ۶۲۱۹ کاملا بر اساس یونیکد بوده و توسط گروهی از افراد متخصص و مسلط در این زمینه نگاشته شده است. مسائل مطرح شده در ماتصا ۶۲۱۹ از روز تدوین آن تاکنون مقبولیت روزافزونی داشته و روز به روز در نرم‌افزارهای بیشتری رعایت شده است. مثلا ً راحت‌تر شدن جستجو و مقایسه اطلاعات فارسی که توسط منابع مختلف ثبت شده، رفع مشکل انواع «ی» در فونت‌های مایکروسافت و بقیه، تمایز قطعی بین انواع «ی»ها و انواع «ک»ها، رواج گسترده زبان فارسی در محیط لینوکس و… همگی از ثمرات این استاندارد است.


به علت آن که در استاندارد یونیکد به ازای خیلی از حروف مثل «ی»، «ک»، «الف» و خیلی از اعداد و خیلی از نشانه‌ها و لیگاتورها تعداد زیادی کاراکتر یونیکد شبیه به هم وجود دارد، خیلی از افراد و کاربردها در استفاده از آنها دچار ابهام می‌شوند. مثلاً مطابق توضیحات بلوک عربی یونیکد حدود ده «ی» مختلف وجود دارد که استفاده از هر کدام فقط در استاندارد یک یا چند کشور مجاز است. مهم‌ترین موضوعی که ماتصا ۶۲۱۹ به آن پرداخته، مشخص کردن کاراکترهای مجاز و غیر مجاز برای خط/زبان فارسی در ایران است. مثلاً این استاندارد فقط حرف «ی» فارسی با کد U+06CC و «ئ» همزه‌دار با کد U+0626 را برای خط/زبان فارسی مجاز اعلام کرده است. موضوع مهم بعدی که ماتصا ۶۲۱۹ به آن می‌پردازد نحوه نمایش حروف و کلمات فارسی از دیدگاه چپ و راست چینی (و نه شکل قلم) است. این قواعد مشکلات مرتبط با به هم ریختگی حروف و کلمات فارسی به خصوص به هنگام استفاده همزمان با حروف و کلمات لاتین را حل می‌کند. ماتصا ۶۲۱۹، الگوریتم شماره ۹ یونیکد که به الگوریتم دو جهته معروف است را به عنوان مرجع و بخشی از خود معرفی کرده است.


با رعایت صحیح استاندارد ماتصا ۶۲۱۹:
۱- حرف «ى» بی‌نقطه نچسب عربی با کد U+0649 که متون فارسی را کاملاً به هم می‌ریزد از متون فارسی حذف می‌شود. از به هم ریختگی‌های خیلی آزار دهنده ایجاد شده توسط این نوع «ى» می‌توان به تیکه تیکه شدن کلمات حاوی «ی» در خیلی از موبایل‌های امروزی و خیلی از نرم‌افزارهای قدیمی ویندوز نام برد.
۲- به جای اعداد لاتین و یا حتی اعداد عربی، از اعداد فارسی استفاده می‌شود. این اعداد در ویندوزهایی که Regional Settings آنها تغییر پیدا کرده به صورت ظاهراً فارسی نمایش داده می‌شوند، ولی وقتی که به PDF تبدیل می‌شوند یا در محیط‌های دیگری از طریق وب دیده می‌شوند به همان صورت غلط لاتین دیده می‌شوند.
۳- جلوگیری از درهم‌ریختگی متون ترکیبی فارسی و انگلیسی در اکثر نرم‌افزارها و محیط‌های (Platform) امروزی. به عنوان مثال نمایش برعکس پرانتزها، جابجایی حروف نشانه‌ای مثل سمی‌کالن، نقطه و… حتی وقتی که کلمات کاملاً انگلیسی هستند و صرفاً در یک محیط دو زبانه (دو جهته یا Bidirectional) نمایش داده می‌شوند. ماتصا ۶۲۱۹ این کار را با استفاده از کاراکترهای ویژه الگوریتم شماره ۹ مثل RIGHT-TO-LEFT EMBEDDING انجام می‌دهد.
۴- یکسان سازی استفاده از علائم در خط و زبان فارسی. مثلاً در این استاندارد استفاده از دابل کوتیشن و تک کوتیشن رایج در متون انگلیسی ممنوع و به جای آنها، کاراکترهای «» که شبیه دو علامت کوچکتر یا بزرگتر به هم چسبیده هستند به عنوان «گیومه فارسی» معرفی شده است. در این استاندارد کاراکترهای مشخصی هم برای ممیز فارسی، جداکننده هزارگان فارسی و… در نظر گرفته شده است.

دریافت استاندارد

پ.ن.۱: حروف فارسی معرفی شده در یونیکد همگی بر اساس بلوک عربی هستند. دلیل آن هم این است که ما هیچ بلوک یا بخش واحدی در یونیکد برای خط فارسی یا دیگر خط/زبان‌های مبتنی بر عربی مثل اردو و کردی نداریم.
پ.ن.۲: برای انجام بعضی امور اولیه کار با متون یونیکد و استاندارد ماتصا ۶۲۱۹ ابزار کوچکی به نام «فردیس» وجود دارد که استفاده از آن در بعضی مواقع می‌تواند مفید باشد. این ابزار توسط بنده ایجاد شده است.
پ.ن.۳: استاندارد ماتصا ۶۲۱۹ کاری به چیدمان حروف فارسی در صفحه کلید ندارد. ولی خود استاندارد ماتصا ۹۱۴۷ که چیدمان حروف و علایم فارسی بر روی صفحه کلید کامپیوتر را معین می‌کند، بر اساس همین استاندارد ماتصا ۶۲۱۹ طراحی شده است.
پ.ن.۴: ماتصا ۶۲۱۹ مستقل از شکل نمایشی (Glyph) حروف است. مثلا نمی‌گوید آخر حرف «ف» چقدر باید به بالا کشیده شده باشد.




2009/07/14

‫برنامه‌های من برای مهاجرت به FOSS

love foss اینجانب بعد از آن که به صف عشاق سینه‌چاک Open Source و FOSS پیوستم تصمیم گرفتم که به عنوان یک برنامه‌نویس و یک کاربر روزمره برنامه‌ای برای این مهاجرت بزرگ تدوین کنم. FOSS که گاهی اوقات آن را به نام Open Source هم می‌شناسند از یک طرف باعث می‌شود که کیفیت کار من به عنوان یک برنامه‌نویس افزایش یابد و از طرفی دیگر باعث کاهش عمده هزینه‌های (مالی/اخلاقی) نرم‌افزاری خودم و شرکت/اداره استخدام کننده‌ام می‌شود. درست است که ما در ایران هزینه‌ای بابت خرید یک نرم‌افزار خارجی نمی‌پردازیم ولی این کار به هر صورت غیر اخلاقی است و البته کار با نسخه‌های نایاب Crack هم دردسرهای فراوان خودش را دارد. البته فراموش نشود که عوض کردن عمده نرم‌افزارها و روش‌ها به نرم‌افزارهای آزاد کار چندان راحت و سریعی نیست. انجام این کار به صبر و حوصله زیاد و زمانی بین ۲ الی ۱۰ سال نیاز دارد. بنده برنامه این مهاجرت را اجالتاً به صورت یک لیست ۲۹تایی در آورده‌ام که در ادامه می‌آید:

مطالعاتی
۱- مطالعه چند کتاب در مورد FOSS و اجازه‌نامه‌های مرتبط با آن.
۲- مطالعه عمیق‌تر سی‌شارپ و مقایسه آن با جاوا به عنوان یکی از معروف‌ترین زبان‌های برنامه‌نویسی آزاد ولی مشابه سی‌شارپ.
۳- تمرکز بر روی روش‌ها و فناوری‌های برنامه‌نویسی بدون توجه خیلی زیاد به platform مثل ORMها و AJAX.
۴- مطالعه روش‌های SOA خصوصاً SCA به عنوان یک نمونه آزاد از معماری SOA.
۵- تمرکز بیشتر بر روی مسائلی که در همه Platformها کاربرد دارد مثل XML و XPath.
۶- تقویت هر چه بیشتر زبان انگلیسی به عنوان یک زبان بین‌المللی
۷- شناسایی Communityهای فعال برنامه‌نویسان آزاد سراسر دنیا.
۸- مطالعه استانداردهایی که مستقل از Platform هستند و سعی در اجرای دقیق آنها. اگر برنامه‌ای با استفاده از استانداردها و پروتکل‌های دقیق و درست نوشته شده باشد با دردسر کمتری در Platformهای دیگر اجرا می‌شود.
۹- نیم نگاهی به زبان‌های آزاد نوظهور مثل PHP و Ruby.
۱۰- آشنایی با دیگر فناوری‌ها و روش‌های رایج برنامه‌نویسی دنیای جاوا و استفاده از آنها در دات‌نت و سی‌شارپ.
۱۱- مطالعه Design Patternها. چون مهارتی است که در همه زبان‌های برنامه‌نویسی قابل استفاده است.
۱۲- هدف گرفتن زبان جاوا به عنوان زبان برنامه‌نویسی احتمالی بعدی.

تمرینی - عملی
۱۳- مشارکت در چند پروژه کدباز مثل کایوهوگا، اکالیپتوس و NHibernate
۱۴- با Source Controlهای بیشتری کار کنم. فقط MS Source Safe کافی نیست. باید آنهایی که بین بقیه برنامه‌نویسان رایج است را هم بشناسم.
۱۵- با سایت‌های نگهداری پروژه‌های FOSS مثل SourceForge و CodePlex بیشتر آشنا شوم.
۱۶- سعی در استقلال از IDE با کمک برنامه‌های خط فرمانی چون csc.exe
۱۷- با ابزارهای IssueTracker مثل JIRA و آن چه که در دل سایت‌ها و نرم‌افزارهایی مثل SourceForge، CodePlex و MS TFS به اسم Work Item یا چیزهای دیگری وجود دارند هم آشنا شوم.
۱۸- نیم نگاهی به Apache Web Server به عنوان یک Web Server آزاد که حتی می‌تواند ASP.NET را هم اجرا کند.
۱۹- تطبیق برنامه‌های تحت وب فعلی به نحوی که به جز IE در Firefox هم اجرا شوند. به این طریق می‌توان برنامه‌های فعلی را از طریق لینوکس هم اجرا کرد.
۲۰- برنامه‌هایی که می‌نویسم را حتی‌الامکان تحت وب پیاده‌سازی کنم نه به صورت Desktop زیر که اصولاً Desktop یعنی Cross-Dependent.

ابزارها – فناوری‌ها
۲۱- استفاده از MySql به جای MS Sql Server
۲۲- استفاده از NHibernate به جای LINQ و ADO
۲۳- استفاده از log4net به جای Entlib
۲۴- استفاده از Nant برای Build پروژه‌ها (در جهت استقلال از VS)
۲۵ - استفاده از Lucene.NET به عنوان موتور جستجو.

کاربردهای روزمره
۲۶- استفاده از Firefox و Chrome به جای IE. چون هر دو FOSS و Cross-Platform هستند.
۲۷- استفاده از Thunderbird به جای Outlook Express.
۲۸- تمرینات گهگاهی با لینوکس، لازم نیست فوراً ویندوز را کنار بگذارم.
۲۹- هر جا که بین یک نرم‌افزار FOSS و یک نرم‌افزار غیر FOSS حق انتخاب داشتم، از معادل FOSS یک نرم‌افزار استفاده کنم. مثلاً به جای DAP از FDM استفاده کنم، یا به جای Windows Media Player از VLC Player استفاده کنم.




2009/07/06

‫حرکت به سمت FOSS

mig1 برای خیلی از افراد که از ۱۲ سالگی با DOS و  Windows کرک شده خو گرفته‌اند حرکت به سمت Free/Open Source Software کار چندان راحتی نیست. سال‌ها کار و برنامه‌نویسی در platform ویندوز کاری نیست که بشود در عرض چند ماه آن را کنار گذاشت. حال اگر ما هم بخواهیم مهاجرتمان را به سمت FOSS آغاز کنیم چه باید کرد؟ روش من به عنوان یک توسعه‌دهنده نرم افزار (برنامه‌نویس) این است که کاربران کامپیوتر را به ۴ دسته تقسیم کرده و هر کدام را جداگانه بررسی کنم. این دسته‌ها عبارتند از:

۱- کاربران روزمره
۲- کاربران اداری
۳- برنامه‌نویس‌ها
۴- کاربران خاص‌منظوره

 

۱- کاربران روزمره
افرادی هستند که از نرم‌افزارهای رایج و معمولی برای انجام کارهای شخصی یا اداری روزمره‌شان استفاده می‌کنند. این نرم‌افزارها عمدتا شامل ویندوز، مجموعه Office، نرم‌افزارهای جانبی مثل نرم‌افزارهای پخش موسیقی، نرم‌افزارهای کار با اینترنت، رایت CD/DVD و… می‌شوند. این گروه از افراد در مهاجرت به FOSS کمترین دردسر را خواهند داشت. چون همه نرم‌افزارهای مورد استفاده آنها معادل FOSS دارند و اتفاقاً همه آنها خیلی هم شبیه به نسخه ویندوزی‌شان هستند. تنها زحمتی که افراد این دسته باید بکشند کمی تغییر عادت و مختصری یادگیری نرم‌افزار جدید است.

۲- کاربران اداری
منظور از کاربران اداری، افرادی هستند که از کامپیوتر برای انجام امور اصلی ادارات و سازمان‌ها استفاده می‌کنند. یعنی امور حسابداری، کارگزینی، پرسنلی و… یک اداره/کارخانه را از طریق کامپیوتر انجام می‌دهند. نرم‌افزارهای مورد استفاده این دسته عمدتاً نرم‌افزارهای تولید داخل و سفارش مشتری (Customized) هستند. این طور نرم‌افزارها امروزه عمدتاً به دو دسته Client و Server تقسیم می‌شوند. در Server بخش‌های اصلی برنامه قرار دارد. هر چند که گاهی اوقات این «بخش‌های اصلی» به صرفاً یک SQL Server تقلیل پیدا می‌کند. نرم‌افزار کلاینت هم به آن بخش از نرم‌افزار گفته می‌شود که در کامپیوتر کاربران نهایی مورد بهره‌برداری قرار می‌گیرد. مهاجرت دادن همه این نرم‌افزارها به FOSS را نمی‌توان ناگهانی انجام داد. این کار به زمانی طولانی (به عقیده شخصی من) در حد ۱۰ الی ۲۰ سال نیاز دارد. دلیلش هم این است که هنوز هم می‌شود در بعضی ادارات و سازمان‌ها برنامه‌های FoxPro را دید!
به علت مقاومت ادارات و کارمندان آنها در برابر تغییر باید مهاجرت را در مرحله به مرحله انجام داد. نخستین گام به عقیده من تبدیل بخش کلاینت همین نرم‌افزارهای موجود از تحت ویندوز (Desktop) به تحت وب (Web Application) است. با این کار کلاینت‌ها از قید سیستم عامل آزاد می‌شوند. آنها می‌توانند به راحتی ویندوزها را پاک کرده و جای آنها Linux نصب کنند. چون کاربران کارشان را فقط از طریق مرورگر انجام خواهند داد.
گام دوم، مهاجرت آن بخشی از نرم‌افزارهای Server است که به عنوان سرویس‌دهنده هسته اصلی برنامه عمل می‌کنند. بیشتر وقت‌ها MS SQL Server و IIS هستند که این نقش را بازی می‌کنند. عوض کردن این تیکه در هسته اصلی نرم‌افزار در بیشتر موارد اگر برنامه به شیوه‌ای چندان غیر معمول نوشته نشده باشد، کار چندان سختی نیست. مثلاً خیلی وقت‌ها به راحتی می‌توان از My SQL به جای MS SQL Server یا از Apache (با نصب یک mod مخصوص) به جای IIS استفاده کرد.
گام آخر در این مهاجرت مربوط به برنامه اصلی است. منظور از برنامه همان برنامه‌ای است که توسط پیمانکار به سفارش کارفرما نوشته شده است. در مورد این هسته اجبار خیلی زیادی برای تعویض و ارتقا وجود ندارد. همین که زبان برنامه‌نویسی مورد استفاده، در platform مورد نظر قابل اجرا باشد کفایت می‌کند. در واقع ملاحظات این بخش بیشتر به برنامه‌نویس‌های آن برمی‌گردد. اگر آنها بتوانند برنامه را طوری بنویسند که در یک platform آزاد قابل اجرا باشد مثلاً حتی اگر زبان مورد استفاده آنها ‭C#‬ است تا وقتی که می‌توانند از MONO در اجرای آن استفاده کنند مشکل خاصی وجود ندارد. البته بهتر است برنامه‌نویسان محترم و شرکت‌های استخدام کننده آرام آرام خود را به زبان‌هایی عادت دهند که در محیط‌های FOSS هم به راحتی قابل اجرا باشد مثل JAVA و PHP.
هنوز دو مسئله دیگر در مورد کاربران اداری وجود دارد. اول آن که کابران اداری عموماً کاربران روزمره (دسته اول) هم محسوب می‌شوند. پس همه موارد مطرح شده برای کاربران روزمره، برای کاربران اداری هم مصداق دارد. ثانیاً کاربران اداری خیلی به شبکه‌های ویندوزی و امکانات آن وابسته هستند. آنها هر روز از File Sharing ویندوز و چاپگرهای share شده تحت شبکه استفاده زیادی می‌کنند. بنابراین باید فکری هم به حال این موضوع کرد. برای file sharing به عنوان یک راه اولیه ولی استاندارد که بین platformهای مختلف به راحتی قابل استفاده باشد راه حل ftp پیشنهاد می‌گردد که البته ظاهراً امنیت بیشتری هم نسبت به file sharing ویندوز دارد.

۳- برنامه‌نویس‌ها
مهاجرت این دسته سخت‌تر از بقیه انجام می‌شود چون باید موارد زیادی در نظر گرفته شود از جمله:
۳-۱- تغییر احتمالی زبان برنامه‌نویسی. مثلاً دلفی یا VB.NET یا در لینوکس وجود ندارند یا به طور ضعیفی پشتیبانی می‌شوند.
۳-۲- IDE (محیط توسعه و برنامه‌نویسی): بیشتر برنامه‌نویسان به خصوص آنها که از ویندوز می‌آیند به شدت به IDE وابسته هستند. حتی اگر IDE مشابهی در محیط مقصد وجود داشته باشد معلوم نیست که همین امکانات را داشته باشد یا نه و حتی هیچ تضمینی وجود ندارد که عادت‌های کاربرانش از جمله shortcutها را حفظ کرده باشد. به عنوان مثال معلوم نیست که MONO تحت لینوکس همان عادات و امکانات Visual Studio تحت ویندوز را داشته باشد یا نه.
۳-۳- ابزارهای کمکی اصلی مثل Database و Web Server: خوشبختانه هم در ویندوز و هم در لینوکس، Database و Web Serverهای قدرتمند و معروفی وجود دارند. در مورد Database اگر بعضی موارد از قبل رعایت شده باشد، مسئله انتقال اطلاعات و برنامه‌های قبلی و یادگیری خود برنامه‌نویسان راحت انجام می‌پذیرد. مثلا این که از دستورات استاندارد SQL که در همه جا پیاده سازی شده استفاده شود نه از آن دستوراتی که فقط در یک محصول خاص پیاده‌سازی شده است و یا استفاده از روش و ابزارهایی که نرم‌افزار را مستقل از Database می‌کند استفاده شود مثل OR-Mapperهایی مثل Nhibernate. در مورد Web Serverها باید گشت و گشت تا Add-inهایی که پشیبانی زبان مورد نظر را به Web Server اضافه می‌کند پیدا کرد. مثلاً برای IIS می‌شود Add-inهایی برای اجرای Perl و PHP پیدا کرد و قاعدتاً برای Web-Serverهایی مثل Apache هم باید بشود Add-inهای مشابهی پیدا کرد. مثلا می‌توان از Mod_AspDotNet برای اجرای صفحات ASP.NET در Apache استفاده کرد.
۳-۴- موارد متفرقه: گاهی اوقات مواردی وجود دارد که نمی‌دانیم در platform جدید چطور می‌شود با آنها کار کرد. مثل نحوه مسیردهی فایل‌ها، حق دسترسی‌ها، ارتباط با سخت‌افزار و… در چنین اوقاتی به نظر من باید هر مورد را جداگانه بررسی کرده و برایش راه حل ارائه کرد.

۴- کاربران خاص منظوره
تنها وجه تمایز کاربران خاص منظور نرم‌افزارهایی هستند که مورد استفاده قرار می‌دهند. مثلاً Photoshop، Autocad، Mathlab، CATIA یا هر کدام از نرم‌افزارهای دیگری که در زمینه عکاسی، ریاضی، عمران، صنایع، فیزیک، شیمی، برق، پزشکی، انیمیشن، طراحی و غیره مورد استفاده قرار می‌گیرد. استفاده این افراد از کامپیوتر مختص به همین کاربرد خاص‌شان است. متاسفانه به نظر می‌رسد این طور نرم‌افزارها در بیشتر موارد هیچ معادلی در GNU/LINUX ندارند و کاربر مجبور است به خاطر کاربرد خاصش برای همیشه در ویندوز بماند.

 

مطالعه بیشتر: