تبليغاتX
برنامه نویس کوچولو

برنامه نویس کوچولو

یادداشتهای یه برنامه نویس خیلی ^ 100 کوچولو

شماره سی‌ام نشریه الکترونیک لینوکس منتشر شد

 شماره سی‌ام نشریه‌ی الکترونیک لینوکس «ایران‌تاکس» منتشر شد. این شماره نیز با همت نوسندگان محترم نشریه‌ی الکترونیکی ایران‌تاکس و لطف و توجه کاربران گنو/لینوکس ایران با مقالاتی جدید با شما خوانندگان همراه هستیم، مقالات این شماره به عبارت زیر هستند: فارسی نویسی در Qt، راهنمای پورت سریال – قسمت اول، انگیزش اقتصادی نرم‌افزار متن‌باز: از نگاه سرمایه‌گذاران - قسمت اول، آشنایی با هسته لینوکس - قسمت دوم ( مقدمات کاربردی)، نرم‌افزارهای متن‌باز برای SMEها، بهینه سازی وب سرور آپاچی
+ نوشته شده در  پنجشنبه دوازدهم مهر 1386ساعت 19:31  توسط علیرضا مسکین ملک  | 

مروری بر اتفاقات لینوکسی در سال 2007

بر اساس پیش گوییهایی که توسط تحلیلگران و دانشمندان صورت گرفته است به نظر می رسد سال 2007 برای لینوکس سال پرثمر و درخشانی باشد.

از آن جمله می توان به موارد زیر اشاره کرد:
لینوکس در 45 درصد از سرورهای جدید نصب خواهد شد
لینوکس در 6 درصد از میزکارها اجرا خواهد شد
لینوکس در 7 درصد از بازارهای تلفن جهانی برای خود جایی باز خواهد کرد.
در زیر به چند مورد از اتفاقات لینوکسی که شما می توانید از لینوکس و متن باز در سال 2007 انتظار داشته باشید اشاره می شود:
OpenOffice + Microsoft Office
شرکت ناول اعلام کرد که تمام برنامه های OpenOffice.org که بر پایه لینوکس هستند با قالب OpenOffice XML مایکروسافت سازگار خواهند بود و تا اواخر ژانویه این طرح کامل خواهد شد.
RedHat Enterprise Linux 5
انتظار طولانی برای RHEL5 در اوایل سال 2007 به پایان خواهد رسید و یکی از تولیدات مهم لینوکس به جهان معرفی خواهد شد. همچنین مجازی سازی در هسته این توزیع قرار خواهد داشت که با ساخت و ترکیب ابزار مجازی سازی Xen انجام خواهد شد.
Flash Player 9
انتظار می رود تا اوایل سال 2007 میلادی، Flash Player 9 برای لینوکس منتشر شود. نسخه Beta2 برای این ابزار در نوامبر منتشر خواهد شد.
LinuxWorld Expo 2007
نمایشگاه سالیانه لینوکس به نام LinuxWorld در سانفرانسیسکو در تاریخهای 6-9 آگوست برگزار خواهد شد.
Enemy Territory: Quake Wars
برای سرگرمی و بازی، بازی Enemy Territory: Quake Wars در 27 فوریه برای ماشینهای لینوکسی منتشر خواهد شد.
Novell BrainShare 2007
کنفرانس ارائه مدیران نت ور که از لینوکس استفاده می کنند در تاریخهای 18-23 ماه مارس در شهر SaltLake و در دانشگاه Utah برگزار خواهد شد و در آن ناول به بررسی زوزه و متن بازها خواهد پرداخت.
GLPv3
بنیاد آزادی نرم افزار انتظار دارد تا اولین نسخه تجدیدنظر شده مهم از مجوز عمومی GNU را منتشر کند. در حال حاضر در دومین نسخه منتشر شده آن پیشنهاد شده است که مقررات GPLv3 باعث مجادله و بحث در مورد مدیریت حقوق دیجیتالی (DRM=Digital Rights Management) می شود. GPLv3 اساسا خواستار این است که تمام موارد کاربردی Player تحت مجوز GPL قرار گیرند که شامل کد منبع برای مکانیزمهای DRM آنها نیز می شود.
LAMP Lovers Unite
سرور LAMP وقایع زیادی را از سر خواهد گذراند. از جمله:
کنفرانس MySQL در سانتاکلارا در تاریخهای 23-26 آوریل
کنفرانس ApacheCon Europe 2007 در آمستردام در تاریخهای 1-4 می
کنفرانس PHP Tek در شیکاگو در تاریخهای 16-18 می
لازم به ذکر است که LAMP عبارتست از: Linux, Apache, MySQL, PHP
Bon Chance, Tux
پارلمان فرانسه مهاجرت 1150 میزکار ویندوز با کامپیوترهای شخصی لینوکس را در ماه جون انجام خواهد داد. مرورگر فایرفاکس و نرم افزار OpenOffice از برنامه هایی هستند که دولت فرانسه در حال حاضر در کارهای روزانه از آنها بهره می برد.
برای مشاهده سایر موارد می توانید به آدرس منبع مراجعه کنید.
آدرس منبع:
http://www.networkworld.com/newsletters/linux/2007/0101linux2.html
+ نوشته شده در  پنجشنبه دوازدهم مهر 1386ساعت 19:29  توسط علیرضا مسکین ملک  | 

جهانی سازی برنامه ها توسط GNU Gettextدر PHP

اکثر برنامه ها در زبان انگلیسی نوشته شده و مستند سازی می شود و انگلیسی در زمان اجرا از انها استفاده میشود در صورتی که اکثر مردم با زبان مادری خود راحتتند و ترجیح می دهند که از زبان مادری خود استفاده کنند.
این ابزار امکان استفاده از برنامه های چند زبانه را به برنامه نویسان خواهد داد , بدون اینکه برنامه نویس در گیر کار ترجمه یک پروژه شود
هنگام بحث در مورد پشتیبانی زبان اختصاصی در برنامه ها دو واژه بیشترین کاربرد رو دارن که عبارتند ار جهانی نمودن (internationalization ) و محلی سازی (localization .) که اغلب بجای این لغات از کلمات i18n و l10n اولی برای جهانی سازی و دومی برای محلی سازی استفاده می شود (حدث بزنید این کلمات چه ربطی به کلمات اصلی خود دارند!)
به طور خلاصه جهانی سازی عبارتند از اینکه یه بسته نرم افزاری فابلیت پشتیبانی زبانهای مختلف را داشته باشد و محلی سازی پیاده سازی یکی از زبانها در یک برنامه جهانی شده است .
محلی سازی علاوه بر ترجمه متون برنامه شامل فرمت نمایش تاریخ , اعداد , واحد پول و ... نیز هست
حالا ما تو این مقاله قصد معرفی یکی از این ابزارها به نام gnu gettext را داریم امیدوارم که مفید واقع بشه . البته تمام این مراحل در سیستم عامل لینوکس تست شده ولی می توانید با با مراجعه به آدرس http://www.gnu.org/software/gettext نسخه ویندوزی آنرا دانلود و از آن استفاده کنید.

فایلهای ترجمه
متنهایی که در برنامه می بایست ترجمه شود بایستی در فایلهایی با پسوند .po ذخیره شوند (po = portable object ) این فایلها قابل ویرایش هستند و هر متن قابل ترجمه را به ترجمه آن مرتبط میکند.
اگر برنامه شما از زبانهای زیادی پشتیبانی کند هر زبان دارای حداقل یک فایل po اختصاصی خود زبان هست . این فایلها را می توان بصورت دستی ایجاد کرد ویا از ابزارهایی برای اینکار استفاده کرد که در ادامه توضیح خواهم داد.
فایلهای با پسوند .mo که فایلهای non-portable هستند توسط برنامه خوانده می شوند . چند سیستم نیز قبلا ابزارهایی برای ایجاد فایل mo ایجاد کردند ولی gnu gettext از ابزار اختصاصی خود استفاده می کند و این فایلها با پسوند .mo ذخیره می شوند . توجه کنید این فایلها یعنی فایلهای mo توسط برنامه استفاده شده و فایلهای po را که شما و یا ابزار مورد استفاده شما ایجاد کرده باید توسط ابزاری به فایل mo تبدیل شود تا توسط برنامه قابل استفاده باشد.

فرمت فایلهای

PO
white-space
#  translator-comments
#. extracted-comments
#: reference...
#, flag...
#| msgid previous-untranslated-string
msgid "untranslated-string"
msgstr "translated-string"

در قسمت untranslated-string متن اصلی که اغلب به صورت انگلیسی هست نوشته شده و در قسمت translated-string ترجمه متن را نوشته و این کار را برای باقی جملات نیز تکرار می کنیم و این فایل را با پسوند .po ذخیره نمایید . شاید به نظراتان این کار سخت به نظر آید ولی یک راه ساده تر نیز وجود دارد واون استفاده از ابزار xgettext به صورت زیر است که تمامی رشته ها را در یک فایل ایجاد کند.

xgettext [option] [inputfile] ...
xgettext -L PHP -o fa_IR.po test.php

test.php نام فایل برنامه ما است که شامل متون قابل ترجمه است و فایل fa_IR.po فایلی است که این برنامه ایجاد می کند.
حالا شاید بپرسید که این ابزار از کجا بفهمد که چه رشته هایی باید ترجمه شده و چه رشته هایی نبایست. شما در برنامه خودتون هر کجا خواستید خروجی را چاپ کنید که اگر زبانی غیر از انگلیسی هم بو بتوان ان را ترجمه کرد از تابع gettext() و یا _() استفاده کنید ابزار تمامی رشته های داخل این دو تابع را گرفته و در داخل فایل . جمع می کند که شماید بایستی با باز کردن این فایلها توسط ویرایشگرهای ساده متن ویا ابزارهایی که برای اینکار موجود است ترجمه رشته ها را بنویسید.
به طور مثال این متن فایل test.php است که در بالا اشاره شد.

##test.php##

echo _(“ firstname”); // or gettext(“firstname”);
echo _(“Last name”);
printf(_(“My name is %s”),”Alireza meskin malek”);
?>

حال اگر دستور بالا را اجرا کنید برنامه فایلی به نام fa_IR.po ایجاد کرده که حاوی متن زیر است

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-08-04 14:44-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: test.php:2
msgid " firstname"
msgstr ""

#: test.php:3
msgid "Last name"
msgstr ""
#: test.php:4
#, php-format
msgid "My name is %s"
msgstr ""


حال شما باید متنهای ترجمه را در این فایل نوشته و ذخیره کنید متن این فایل بعد از تغییر

"Project-Id-Version: fa_IR\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-08-04 14:44-0600\n"
"PO-Revision-Date: 2007-08-04 14:47-0600\n"
"Last-Translator: root\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.php:2
msgid " firstname"
msgstr "نام "
#: test.php:3
msgid "Last name"
msgstr "نام خاونوادگی "

#: test.php:4
#, php-format
msgid "My name is %s"
msgstr "نام من   %s   است "


البته می توانید برای راحتی کار از ابزاری مثل Kbabel استفاده کنید.
حال برای تبدیل این فایل به فایلی با ‌پسوند .mo که قابل فهم توسط برنامه باشد از دستور زیر استفاده کنید:

msgfmt -f fa_IR.po -o test_msg.mo


حال روش استفاده از این فابل در برنامه
معمولا در نوشتن برنامه ها پوشه ای به نام locale ایجاد کرده و درون این پوشه برای هر یک از زبانهای که پشتیبانی می شود پوشه ای با کد دو رقمی زبان و کشور مثل (fa_IR ( ایجاد می کنیم و درون این هر یک از این پوشه ها پوشه ای به نام LC_MESSAGES ایجاد کرده و فایلهای .mo را درون این پوشه قرار می دهیم توجه کنید برای اجرا نیازی به فایلهای .po نیست .
پس ما هم برای تست یه پوشه ای به نام locale ایجاد و درون آن پوشه ای بنام fa_IR ایجاد کرده , درون این پوشه نیز پوشه ای به نام LC_MESSAGES ایجاد کرده که فایلهای ترجمه در این پوشه قرار می گیرند و فایل test_msg.mo را درون آن کپی می کنیم.
برای بهتر منوجه شدن مسیر این پوشه به صورت زیر است

project_folder/locale/fa_IR/LC_MESSAGES/test_msg.mo

حال به مهمترین نقطه کار یعنی قابلیت جهانی سازی برنامه میرسیم . در ابتدا شما باید php_gettext رو فعال کنید البته اگر فعال نباشد. برای اینکار در فایل php.ini ; (سمی کولن) را از جلوی extension=php_gettext.so برداشته و سرور را دوباره راه اندازی کنید.
در ابتدا تابع setlocale
این تابع برای مشخص کردن زبان مورد استفاده برنامه شما است . می توانید این مقدار را در فایلهای config خود ذخیره و از آن استفاده کنید در کد زیر با انتخاب زبان fa_IR برنامه متون را به زبان فارسی نمایش می دهد البته اگر فایلهای این زبان موجود باشد.

setlocale(LC_ALL, 'fa_IR');


تابع بعدی bindtextdomain که با این تابع مسیر و نام فایل رو مشخص می کنید به صورت زیر

bindtextdomain("test_msg", "./locale");


حال با این کار برنامه در مسیر ./locale/fa_IR/ LC_MESSAGES به دنبال فایلی به نام test_msg.mo می گردد.
در این تابع با مشخص کردن پارامتر دوم که مسیر جستجو برای فایلها ترجمه است برنامه از این پس هرکجا به ترجمه نیاز پیدا کند در پوشه locale به دنبال ان می گردد و پارامتر اول نام فایل ترجمه است که در مرحله قبل ایجاد کردیم .البته شما می توانید فایلهای مختلفی را ایجاد کنید و با این تابع مسیر هر کدام را معرفی کنید و با تابع textdomain فایل پیش فرض را انتخاب کنید که در این مثال همان test_msg است .
توجه کنید این کدها را می بایست در ابتدای فایل test.php قرار دهید که ما برای قابل فهم تر شدن مرحله قبل آنرا اکنون اضافه می کنیم محتویات این فایل بعد از تغیر به صورت زیر خواهد شد.

##test.php##

setlocale(LC_ALL, 'fa_IR');//defaule language

// Specify location of translation tables
bindtextdomain("test_msg", "./locale");

// Choose domain
textdomain("test_msg");

echo _(" firstname"); // or gettext("firstname");
echo _("Last name");

printf(_("My name is %s"),"Alireza meskin malek");
?>


حال اگر این فایل را اجرا کنید متنها را به صورت فارسی نمایش خواهد داد.
حال موردی را در نظر بگیرید که فایلهای زبان مورد نظر ایجاد نشده باشد در این صورت متنها به همان صورت انگلیسی که در متن برنامه نوشته شده نمایش داده خواهد شد . برای تست در کد بالا بجای fa_IR کلمه ar_AR را قرار دهید مشاهده می کنید که خروجی به صورت انگلیسی خواهد بود . البته می توانید مراحل بالا را برای متنهای عربی نیز تکرار کنید تا برنامه شما قابلیت نمایش جملات عربی را نیز داشته باشد.
البته شما بغیر از متن می توانید تاریخ واحد پولی را نیز تغییر دهید. که با جستجو در منوال می توانید به اطلاعات بیشتری دست بیابید.

+ نوشته شده در  پنجشنبه دوازدهم مهر 1386ساعت 16:12  توسط علیرضا مسکین ملک  | 

PHP EXE Compiler/Embedder

با این برنامه می تونید فایل اجرایی از برنامه php خودتون بسازید البته بیشتر برای PHP Gtk  استفاده میشه
یه نگاهی بیاندازید بد نیست.

Bambalam PHP EXE Compiler/Embedder
http://www.bambalam.se/bamcompile/
+ نوشته شده در  پنجشنبه دوازدهم مهر 1386ساعت 15:44  توسط علیرضا مسکین ملک  | 

ساخت Pdf فارسی توسط PHP

چند وقت پیش یه بحثی تو سایت مورد علاقه من   IranPHP.net شروع شده بود با این lموضوع .
که تونستم یه جوراییی این مشکل رو حل کنم لینک بحث و لینک برنامه رو قرار دادم شاید به دردتون بخوره

این از لینک بحث :
فارسی نویسی در UFPDF و تولید PDF فارسی با PHP

اینم از لینک فایل برنامه
http://xdownload.persiangig.com/API/Aplication/faPDF.zip

+ نوشته شده در  پنجشنبه دوازدهم مهر 1386ساعت 15:41  توسط علیرضا مسکین ملک  |