2008/12/24

‫اولین تجربه با «پرل»

زبان پرل (Perl) در یکی از نرم افزارهایی که اخیرا مجبور به استفاده از آن شده‌ام یعنی OTRS و بعضی برنامه‌های معروف دیگر مثل Movable Type و PRTG استفاده شده است. این زبان در یونیکس و قاعدتا در لینوکس هم طرفداران زیادی دارد و در محیط‌های ویندوزی هم در کاربردهای سیستمی مثل مدیریت شبکه زبان پر استفاده‌ای است.

OTRS برای ارتباط با دیتابیس از طریق ODBC مشکلی پیدا کرده بود که برای درک مشکل آن مجبور شدم مقداری از مستندات «پرل» را بخوانم و اولین اسکریپتم را بر اساس راهنمای ذکر شده در اینجا ایجاد کرده و اجرا کنم. پکیج DBI کار ارتباط با دیتابیس را در پرل به عهده دارد. برای تکمیل این ارتباط به پکیج DBD-ODBC یا دیگر پکیج‌های DBD هم نیاز هست. من برای اجرای این اسکریپت یک دیتابیس در SQLEXPRESS ویندوزم ساخته و در ODBC یک Data Source به اسم otrs برای آن ایجاد کردم. این هم اسکریپت:

#!/usr/bin/perl  -w
use DBI;

my $dbh   = DBI->connect ("DBI:ODBC:otrs")
                           or die "Can't connect to database: $DBI::errstr\n";
#prepare the query
my $sth = $dbh->prepare("SELECT *  FROM users");
#execute the query
$sth->execute( );
## Retrieve the results of a row of data and print
print "\tQuery results:\n==============================================\n";
while ( my @row = $sth->fetchrow_array( ) )  {
         print "@row\n";
}
warn "Problem in retrieving results", $sth->errstr( ), "\n"
        if $sth->err( );
#disconnect  from database
$dbh->disconnect or warn "Disconnection error: $DBI::errstr\n";
print "done";
exit;

 

پ. ن. ۱: من برای اجرای این اسکریپت از ActivePerl استفاده کردم.
پ. ن. ۲: OTRS یک سیستم Help Desk کد باز است که قابلیت‌های ITIL را هم می‌توان به آن اضافه کرد.




2008/12/21

سازگارترین فونت‌های ممکن برای فارسی نویسی در کامپیوتر

این لیست حاوی ۵ سری فونت است که حداکثر سازگاری را با یونیکد و استانداردهای ملی ایران یعنی استاندارد ماتصا ۶۲۱۹ (ISIRI 6219) و استاندارد ماتصا ۹۱۴۷ (ISIRI 9147) را رعایت کرده‌اند. هر چند که بیشتر آنها در پیاده سازی صحیح بعضی کاراکترهای خاص مثل ممیز و علامت جدا کننده هزارتایی فارسی (عربی) مشکل داشته و همچنین در استفاده با بعضی نرم افزارها مثل MS SQL Server Reporting Services 2008 ایراد پیدا می‌کنند، ولی روی هم رفته در حال حاضر (آذر ماه ۱۳۸۷) از بهترین انتخاب‌های ممکن به شمار می‌روند.

لازم به ذکر است که برای تهیه این لیست فونت‌های دیگری از جمله فونت‌های سری بی برنا رایانه، فونت فارسی آزاد، فونت‌های عربی مایکروسافت و… هم مورد بررسی قرار گرفتند ولی به خاطر ناسازگاری‌های بیش از اندازه از این لیست حذف شدند.

  نام مجموعه نام بعضی فونت‌ها تعداد فونت‌ها تولید کننده لینک دانلود
۱ فارسی وب رویا، نازلی ۷ شرکت فارسی وب شریف لینک
۲ ایرماگ زر، یرموک ۱۷ انجمن کاربران ایرانی مکینتاش، ایرماگ لینک
۳ موسسه غیر انتفاعی sil شهرزاد، لطیف ۲ موسسه غیر انتفاعی SIL لینک
۴ شورای عالی اطلاع رسانی ایران نستعلیق ۱ شرکت داده ورزان هامون به سفارش شورای عالی اطلاع رسانی لینک
۵ مایکروسافت تاهوما، آریال ۳ تا یا بیشتر شرکت مایکروسافت ویندوز




2008/12/13

‫مقایسه روش‌های MSF Agile و MSF CMMI

توسعه نرم افزار این یک مقایسه سریع السیر بین این دو روش یا متودولوژی توسعه نرم افزار است که یکی از آنها در آخر کار بیشتر بررسی شده است. سریع السیر بودن یعنی این که ممکن است خیلی چیزها از قلم افتاده یا اشتباه کوچکی رخ داده باشد. از آنجا که وقت خیلی زیادی برای انجام این کار نداشته و فعلا تمرکزم بر روی خود برنامه نویسی و تکنولوژی‌های روز است بررسی چندان عمیقی انجام نداده و سعی کرده‌ام که کار را به طور خلاصه و نقل قول از سایت‌های دیگر انجام داده و صرفا نتیجه گیری کلی خودم را در پایان بیاورم. این نتیجه گیری تحت تاثیر دانسته‌ها و گرایش‌های قبلی من در این موضوع هم بوده است. در صورت تمایل به مطالعه دقیق‌تر، لینک‌ها را دنبال کنید. همان طور هم که قابل حدس است هر دوی این روش‌ها به قصد استفاده در Team Foundation Server بررسی شده‌اند.
  • هر دو Process نشات گرفته از MSF هستند و به طور مادرزاد در TFS قرار داده شده‌اند. هر چند که می‌توان پروسس‌های دیگری را به TFS اضافه و از آنها استفاده کرد.
  • CMMI فقط خاص نرم افزار نیست بلکه در خیلی از صنایع دیگر مثل تولیدات الکترونیکی هم استفاده می‌شود.
  • توضیحی در سایت برنامه نویس (agile خلاصه‌تر از CMMI است): http://barnamenevis.org/forum/showthread.php?t=92169
  • جدالی بر سر تعاریف مربوط به agile و rup در سایت برنامه نویس: http://barnamenevis.org/forum/showthread.php?t=59278
  • در این مقاله سایت برنامه نویس گفته شده که agile سرعت بیشتری دارد و در پروژه‌های زیر ۳۰ نفر خیلی بهتر از RUP عمل می‌کند: http://www.barnamenevis.org/forum/showthread.php?t=20625
  • ظاهرا در متودولوژی‌هایی مثل xp نیازی نیست که همه دیاگرام‌های یوام‌الی از قبل در بیاید. و عملا کار برنامه نویس و تحلیل‌گر و… با هم پیش می‌رود. علی الظاهر agile نام یک مجموعه از روش‌های توسعه سریع نرم افزار است که یکی از مثال‌هایش xp (و حتی شاید MSF for Agile) است. http://www.barnamenevis.org/forum/showthread.php?t=67708
  • در اینجا هم گفته شده که MSF Agile تنها روش Agile Software Development نیست بلکه می‌شود از SCRUM، XP، Crystal Clear و Lean هم استفاده کرد. همچنین معلوم است که MSF Agile و MSF CMMI تنها قالب‌های قابل استفاده در TFS نیستند، بلکه می‌توان از قالب‌هایی که اشخاص دیگر هم تهیه کرده‌اند استفاده کرد. مثلا از قالب‌های Agile مثل XP یا SCRUM: باز هم گفته شده که افراد تیم باید راجع به روش‌های Agile مطالعه کرده و آموزش ببینند. و این طور نیست که هر کس با TFS MSF Agile کار کرد یعنی Agile Software Development بلد است!http://blogs.neudesic.com/blogs/phil_scott/archive/2005/12/16/14.aspx
  • مقایسه توضیحات ویکی‌پدیا راجع به agile software development: http://en.wikipedia.org/wiki/Agile_software_development و CMMI: http://en.wikipedia.org/wiki/CMMI هم نشان می‌دهد که CMMI خیلی عمومی و جنرال است و در صنایع غیر نرم افزار هم کاربرد دارد. در حالی که Agile فقط برای مباحث توسعه نرم افزار و احتمالا صنایعی کاربرد دارد.
  • اینجا گفته شده که MSF Agile زیرمجموعه‌ای از MSF CMMI هست به عبارت دیگر هر چیزی که در MSF Agile وجود دارد در MSF CMMI هم وجود دارد یعنی این که MSF CMMI همان MSF Agile است ولی گسترده‌تر و بزرگ‌تر. باز هم آمده که MSF CMMI برای پروژ‌های بزرگ‌تر و طولانی‌تر کاربرد دارد و MSF Agile برای پروژه‌های بین ۳ تا ۱۰ نفره خوب است. در حالی که MSF CMMI برای یکی تیم اقلا ۲۰ نفره مناسب است.  http://social.msdn.microsoft.com/Forums/en-US/vstsmsf/thread/f8e3d872-d815-4be6-96ff-fdefdaad1b47/
  • مقایسه RUP و MSF در یک نوشته فارسی http://www.nfgp.com/Portals/0/Download/Comparing%20the%20Rational%20Unified%20Process%20(RUP)%20and%20Microsoft%20Solutions%20Framework%20(MSF).pdf
  • مقایسه CMMI و Agile که فرصت خواندن آن را نداشتم: http://somamos.blogfa.com/post-254.aspx
  • دو منبع تکمیلی:http://msdn.microsoft.com/en-us/library/ms400752(vs.80).aspx و http://msdn.microsoft.com/en-us/vsts2008/aa718795.aspx

خلاصه این که با توجه به توضیحات و لینک‌های بالا و زیر ۲۰ نفر بودن تیم توسعه نرم افزار ما و اکثر قریب به اتفاق تیم‌های برنامه نویسی ایران و مبتذل شدن نام RUP در بین خیلی از هم سنگران، استفاده از یکی از متدولوژی‌ها (روش‌های) Agile توصیه می‌شود. از بین روش‌های توسعه نرم افزار چابک (Agile) هم با توجه به دم دست بودن مایکروسافت، ویژوال استودیو، TFS و علاقه و راحتی خیلی از تیم‌های ایرانی و خود ما، روش MSF Agile توصیه می‌گردد. امید آنکه بتوانم مطالعه کاملی راجع به این نکات کرده و بتوانم نرم افزار بهتری تولید کنم.
و حالا نکاتی راجع به خود Agile و MSF Agile:
  
پ. ن. ۱: ممکن است من مفاهیمی مثل پروسس، روش، متود، متودولوژی و temaplte را به خاطر کم آگاهی اشتباها به جای یکدیگر به کار برده باشم.
پ. ن. ۲: خیلی دوست بدانم که آیا هیچ جایی در ایران به طور واقعی و -نه خالی‌بندی- از روش‌های Agile برای توسعه نرم افزار استفاده کرده است یا نه.




2008/12/04

جدول مقایسه فونت‌های رایج فارسی

حین مهاجرت از MS SQL Server 2005 به نسخه 2008 متوجه شدیم که اشکالی در نمایش گزارشات در MS SQL Reporting Services وجود دارد. اکثر گزارشات بر اساس فونت‌های «سری بی شرکت برنا رایانه» ساخته شده بودند و حالا که آنها را با Reporting Services 2008 باز می‌کردیم حروف انگلیسی هم در rdl و هم در خروجی گزارشات ایراد داشته و به صورت مربع نشان داده می‌شدند. بعد از کمی بررسی مشخص شد که مشکل به خاطر این است که فونت‌‌های «سری بی برنا رایانه» الفبای انگلیسی را پیاده سازی نکرده‌اند. قبل از این‌ها هم مشکلاتی با این فونت و خیلی از فونت‌های رایج دیگر داشتیم مثل پیاده سازی غلط «ي» و «ك» و «ة» عربی و بعضی کاراکترهای خاص مورد نیاز مثل ممیز، درصد و جدا کننده هزارگان فارسی (عربی) و فارسی کردن غلط اعداد انگلیسی و غیره و غیره. همه این مشکلات ما را بر آن داشت تا عزم خود را جزم کرده و همه فونت‌های رایج و غیر رایج فارسی را در حد توان جمع کرده و یک مقایسه دقیق از آنها انجام دهیم خصوصا در زمینه بحث سازگاری با برنامه‌هایی مثل Reporting Services و دیگر برنامه‌هایی که از فونت‌ها انتظار دارند به غیر از کاراکترهای فارسی، کاراکترهای انگلیسی هم در فونت پیاده سازی شده باشد.
من برای این کار فونت‌های معروف «سری بی برنا رایانه» که تقریبا در هر ویندوزی پیدا می‌شود، فونت‌های «فارسی وب»، فونت‌های طراحی شده توسط «انجمن کاربران ایرانی اپل مکینتاش» یعنی «ایرماگ»، فونت‌های عربی «مایکروسافت»، فونت «ایران نستعلیق شورای عالی اطلاع رسانی»، فونت «فارسی آزاد»، فونت «دجاوو اوبونتو»، فونت‌های «موسسه غیر انتفاعی sil»، فونت‌های یونیکد مایکروسافت مثل تاهوما و بعضی فونت‌های متفرقه مثل «نصف» را مورد بررسی قرار داده و نتیجه را در جدول زیر خلاصه کردم. مبنای مقایسه و رتبه بندی فونت‌ها، سازگاری با استانداردهای ۶۲۱۹ و ۹۱۴۷ (که نسخه جدیدتر استاندارد ۲۹۰۱ است) و ابزار گزارش‌گیری مایکروسافت یعنی MS SQL Reporting Services بوده است. استانداردهای فوق الذکر آخرین و معتبرترین استانداردها موجود در زمینه فارسی نویسی در زمینه کامپیوتر هستند. همان طور که از جدول مقایسه پیداست عمده مشکل بر سر کاراکترهای خاص فارسی (عربی) مثل ممیز، اعداد، جدا کننده هزارتایی‌ها و علامت مخصوص ریال است. فونت‌هایی که عدم سازگاری آنها با استانداردهای فوق بیش از حد خاصی بوده از جدول مقایسه حذف شده‌اند یعنی اگر فونتی در این بررسی بوده ولی در جدول حاضر نیست به علت ناسازگاری بیش از حد آن بوده مثل فونت‌های «سری بی» و فونت «فارسی آزاد». البته با توجه به معیارهای استاندارد ۶۲۱۹ و ۹۱۴۷ و مشکلات مربوط به Reporting Services فقط ۴ فونت «ترافیک فارسی وب»، «تبریز ایرماگ»، «شهرزاد» و «لطیف» توانسته‌اند از این آزمون سربلند بیرون بیایند! دو فونت آخر توسط موسسه غیر انتفاعی sil تهیه شده‌اند.

جدول مقایسه فونت‌های رایج فارسی
نام رایج فونت نام فونت در مجموعه MS Office تولید کننده میزان پشتیبانی از سطوح ۱ و ۲ و ۳ صفحه کلید ۹۱۴۷ آیا امکان تایپ انگلیسی با همان فونت وجود دارد؟ آیا الفبا و حروف انگلیسی در خود فونت پیاده سازی شده است؟ با MS SQL Reporting Services 2008 سازگار است؟
۱ نازلی Nazli فارسی وب به جز کاراکترهای: U+FD3F و U+FD3E خیر بله بله
۲ ترافیک Terafik فارسی وب به طور کامل خیر بله بله
۳ رویا Roya فارسی وب به طور کامل خیر خیر خیر
۴ کودک Koodak فارسی وب به طور کامل خیر خیر خیر
۵ هما Homa فارسی وب به طور کامل خیر خیر خیر
۶ تیتر Titr فارسی وب به طور کامل خیر خیر خیر
۷ زر XB Zar ایرماگ به جز کاراکترهای: U+066C و U+FDFC که به شکل غیر استاندار پیاده سازی شده‌اند بله بله بله
۸ نیلوفر XB Niloofar ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۹ ریاض XB Riyaz ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۰ رویا XB Roya ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۱ شفیق XB Shafigh ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۲ شیراز XB Shiraz ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۳ ثلث XB Sols ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۴ تبریز XB Tabriz ایرماگ به طور کامل بله بله بله
۱۵ تیتر XB Titre ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۶ تیتر سایه‌دار XB Titre Shadow ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۷ یاقوت XB Yagut ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۸ یاس XB Yas ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۱۹ ترافیک XM Traffic ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۲۰ وحید XM Vahid ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۲۱ یرموک XM Yermook ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۲۲ وستا XP Vosta ایرماگ همه به جز U+066C که به شکل اشتباه پیاده سازی شده بله بله بله
۲۳ زیبا XP Ziba ایرماگ همه به جز U+066C و U+064A که به شکل اشتباه پیاده سازی شده بله بله بله
۲۴ نستعلیق IranNastaliq شورای عالی اطلاع رسانی همه به جز U+0643 و U+0670 و U+064A و U+2010 و U+FD3E و U+FD3F و U+0649 و U+0656 بله بله بله
۲۵ سگو Segoe UI مایکروسافت همه به جز: U+066B و U+066C و U+2010 و U+FD3E و U+FD3F بله بله بله
۲۶ تاهوما Tahoma مایکروسافت همه به جز: U+066C و U+066B و U+FDFC و U+2010 و U+FD3E و U+FD3F و U+0656 بله بله بله
۲۷ آریال Arial (Body CS) مایکروسافت همه به جز: U+066C و U+066B و U+FDFC و U+2010 و U+FD3E و U+FD3F و U+0656 بله بله بله
۲۸ تیتر بی B Titr برنا رایانه نا سازگاری خیلی زیادی دارد خیر خیر خیر
۲۹ شهرزاد Scheherazade موسسه غیر انتفاعی sil به طور کامل بله بله بله
۳۰ لطیف Lateef موسسه غیر انتفاعی sil به طور کامل بله بله بله


جدول معرفی بعضی کاراکترهای یونیکد که در این متن به آنها اشاره شده است
کد نام رایج فارسی نام یونیکدی شکل بر اساس استاندارد یونیکد نسخه ۵٫۱
۱ U+0643 حرف «ك» عربی که نباید در متون فارسی استفاده شود. ARABIC LETTER KAF image
۲ U+0649 حرف عربی «ى» بی‌نقطه ARABIC LETTER ALEF MAKSURA image
۳ U+064A حرف «ي» عربی که نباید در متون فارسی استفاده شود. ARABIC LETTER YEH image
۴ U+0656 الف مقصوره پایین فارسی ARABIC SUBSCRIPT ALEF image
۵ U+066B ممیز مخصوص عربی (فارسی) که شبیه «اسلش» است نه ممیز و کامای انگلیسی یا فارسی ARABIC DECIMAL SEPERATOR image
۶ U+066C جدا کننده هزارگان عربی (فارسی) که بر خلاف تصور بالای خط نوشتن می‌نشیند نه پایین آن ARABIC THOUSANDS SEPERATOR image
۷ U+0670 الف مقصوره فارسی ARABIC LETTER SUPERSCRIPT ALEF image
۸ U+2010 این کاراکتر جایگزین دقیق‌تر کاراکتر خط تیره است HYPHEN hyphen
۹ U+FD3E پرانتز تزیینی چپ ORNATE LEFT PARENTHESIS ornate_left_parenthesis
۱۰ U+FD3F پرانتز تزیینی راست ORNATE RIGHT PARENTHESIS ornate_right_parenthesis
۱۱ U+FDFC علامت مخصوص «ریال» RIAL SIGN rial_sign

منابع و مراجع
۱ ISIRI 6219 نسخه نهایی استاندارد تبادل و شیوه‌ی نمایش اطلاعات فارسی بر اساس یونی‌کد
۲ استاندارد ISIRI 9147 چیدمان حروف و علائم فارسی بر صفحه کلید رایانه که جایگزین استاندارد قدیمی‌تر ۲۹۰۱ شد
۳ Unicode Arabic Range: 0600-06FF بر اساس نسخه ۵٫۱ یونیکد
۴ شرکت فارسی وب شریف
۵ http://www.fileformat.info/index.htm
۶ موسسه استاندارد و تحقیقات صنعتی ایران
۷ ایرماگ، انجمن کاربران ایرانی مکینتاش
۸ شرکت برنا رایانه
۹ پروژه فونت فارسی آزاد
۱۰ شورای عالی اطلاع رسانی سفارش دهنده فونت ایران نستعلیق
۱۱ موسسه غیر انتفاعی sil

با تشکر از
شرکت فراکنش به خاطر حمایت از پروژه زمان‌بر استانداردسازی
ناصر حاجلو به خاطر بررسی مشکلات Reporting Services
کلیه کسانی که مشکلات این مقایسه را اعلام می‌کنند
کلیه علاقه‌مندان به بهبود وضعیت خط و زبان فارسی در محیط کامپیوتر و اینترنت

پ. ن.: دو فونت «موسسه sil» به جدول مقایسه‌ها اضافه شد.