یک وبلاگ دیگر از یک برنامه نویس دیگر
PHP
PHP ، انتخاب اول من برای برنامه نویسی وب
ربات مافیا – PHP
شهریور ۳۰م
بازی مافیا رو اولین بار وقتی دانشجو بودیم انجام دادم و متاسفانه چون توی فصل امتحانات بود و منم فارغ التحصیل زیاد قاطی قضیه نشدم :)
چند وقت پیش، دوست خوبم ایمان، سعی کرد بچه ها رو جمع کنه برای بازی تو Gtalk و همون موقع تصمیم گرفتم که این بازی رو به صورت یه ربات برای IRC پیاده سازی کنم. به عبارتی این ربات نقش خدا رو توی بازی انجام میده.
تو این بین، تجربه های جالبی هم داشتیم، تو همایش ZConf بازی رو به صورت حضوری انجام دادیم و بعد هم گویا ترکشهای این بازی به جشن اصفهان هم رسید و الی آخر!
اما ربات. تصمیم گرفتم که منتشرش کنم. قبلا هم راهنماشو نوشتم و حالا کد.
فقط یه لطفی کنید و اگه میخواید ازش استفاده کنید :
۱- خودتون دو تا Channel برای مافیا درست کنید اون اصلی ها رو که من ثبت کردم (##PMG و ##PMGMafais ) رو شما باید تغییر بدید. -module/mafia/MafiaGame.php-
۲-برای ربات هم یه اسم دیگه انتخاب کنید fzBot رو من ثبتش کردم :)
۳- همین دیگه خود دانید :) یادتون باشه این ربات فقط برای تفریح نوشته شده و من اصلا قصد انتشارشو یا حتی رسوندنش به این مرحله رو نداشتم، پس زیاد انتظار یه کد ایده آل نداشته باشید.
فعلا همین :) تا بعد که نسخه بعدیشو در بیارم، شاید یه تیپ دیگه و …
پ.ن : امروز تولد الیه. تولدت مبارک خانمی :)
و اینم Github : https://github.com/fzerorubigd/pmg
HipHop
تیر ۱۱م
– این فقط یه معرفی ساده یه پروژه است نه راهنمای کاملش.
یکی از معروفترین سایتهای فعلی، فیسبوکه و شکی در این نیست (نمیدونم با وجود گوگل پلاس وضع همینطوری میمونه یا نه؟). ولی این سایت همینجوری که تبدیل نشده به اینی که الان هست! یک تیم برنامه نویسی قدرتمند هم پشت این پروژه هست و چیزی که امروز میخوام معرفی کنم، دلیلی بر این مدعاست.
پروژه HipHop for PHP پروژه ای است که بر اساس نیازهای آنها -فیس بوکی ها- ساخته شده. پروژه ای که یه کار – به ظاهر – ساده انجام میده. خیلی ساده، کدهای PHP رو تبدیل میکنه به C++ و بعد اون رو کامپایل میکنه، در نهایت کل پروژه تبدیل میشه به یه فایل اجرایی تکی، که خودش یک وب سرور کامل هم هست.
اینجوری، سرعت اجرای کد به طرز کاملا محسوسی بالاتر میره و فشار اجرای مفسری PHP به شدت کم میشه . البته هنوز فایلهای استاتیک به صورت مجزا از این فایل وجود دارند ولی دیگه PHP وجود نداره، کد باینری واقعی هست. یه چیزی مثل vala که تبدیل میشه به C . مثل پروژه هایی که حتما دیدید و فایل PHP رو توی یک فایل اجرایی میچپونن هم نیست -مثلا این پروژه-.
این پروژه یه بازنویسی از کل کد PHP هستش نه یه پروژه مشتق شده از PHP. یه سری توابع از دست میرن (مثلا تابع eval) ولی در نهایت توابعی هم که از دست میرن جایگزین مناسبی دارن :) مثلا همین eval یه جورایی از دید من یه تابع خیلی خطرناک محسوب میشه و استفاده ازش احتیاط خیلی زیادی رو میطلبه!
این برنامه در کل ممکنه برای ما هم خیلی کاربردی نباشه چون به درد همه جا نمیخوره. کلا بعید میدونم به همین راحتی رو ویندوز کامپایل بشه! ولی گاهی وقتها میتونه کارتون رو راه بندازه،مثلا ما الان نیاز به یه وب سرویس داریم تو یه پروژه که روی سرورهای داخلی یه شرکت قراره نصب بشه و فقط یک ارتباط ساده رو با دیتابیس برقرار کنه و از طرفی نصب آپاچی و PHP هم یه جورایی از طرف مدیر شبکه منع شده -یه جور سرور radius هستش و میخوان سبک بمونه – خوب بهتر از HipHop چی میتونه به ما کمک کنه؟
حالا میرسیم به چگونگی استفاده از این به اصطلاح HipHop!
ادامه مطلب
رشته ها و آرایه ها PHP
خرداد ۱۳م
امروز درگیر یک کد بودم شبیه این :
<?php $string = "This is a string"; if (isset($string['default'])) echo $string['default'];
به نظر شما خروجیش چیه؟؟؟ یعنی اصلا چیزی باید چاپ بشه یا نه؟ من معتقدم که نباید چیزی چاپ بشه. یعنی شرط if اصلا درست نیست که بخواد برسه به echo ولی مساله مسخره اینه که isset میگه این ایندکس وجود داره و -برداشت شخصی من اینه که- PHP وقتی میخواد یه رشته رو باهاش به صورت آرایه ای برخورد کنه، اول ایندکس آرایه رو به صورت عدد درمیاره با اون قواعدی که خودش داره، ( قواعد استاندارد خودش ) بعد اون کاراکتر رو چاپ میکنه.
نتیجه خیلی غیر قابل تصور بود برای من!!!!!
حالا اگه بگم تا ۱ ساعت درگیر این مساله مسخره بودم و این کد :
foreach ($opts as $opt => $value)
{
if (isset($value['default']) )
{
$result[$opt] = $value['default'];
}
elseif (isset($value['type']))
{
$result[$opt] = '';
}
else
{
$result[$opt] = $value;
}
}
چقدر منو عذاب داد مطمئن باشید راست میگم و اصلا اغراق نیست!!!!!!
نظر شما چیه؟ این باگه؟ یا همینه که هست؟ باید گزارش بشه یا نه؟؟؟؟ کلا درسته که تبدیل روی ایندکس هم انجام بشه؟
– خیلی وقت بود ننوشته بودم :)چقدر دلم تنگ شده بود!!
– پی نوشت :نمیدونم چطوری اشتباهی :) نظرها رو بسته بودم. الان بازه دیگه ….
Zend_Translate و GnuGetText
بهمن ۱۴م
یکی از اصولی که سعی میکنم هنگام طراحی رعایت کنم، استفاده نکردن هرچه بیشتر!!! از زبان فارسیست. یعنی سعی میکنم تحت هیچ شرایطی توی کد حتی یک کلمه به زبانی غیر از انگلیسی، خصوصا فارسی ننویسم.
علت سادست، فارسی میتونه باعث مشکلات زیادی در زمان کد نویسی بشه خصوصا مشکلاتی که معمولا ویرایشگرهایی که من استفاده میکنم با این زبان دارن.
راه حل سادست، استفاده از سیستمهای مترجم، که من این وسط GnuGetText رو ترجیح میدم. اونم تازه اینکه مربوطه به گنو و منم تا گنو هست هیچ مشابهی رو استفاده نمیکنم، مهم نیست که چه امکاناتی ارایه میکنه!
توی این پست و پست بعدی قصد دارم در مورد این سیستم ترجمه و چگونگی اتصال اون با Zend Framework بنویسم. اول درمورد اینکه چطور این سیستم رو فعال کنیم و دوم اینکه چطور میشه قابلیتهاشو بیشتر کرد و یه سیستم ترجمه پویا هم ایجاد کرد خواهم نوشت.
اول از همه (معمولا تو bootstrap) باید یه شی ایجاد کنیم :
define('LANGUAGE','fa_IR');
$trans=new Zend_Translate("Zend_Translate_Adapter_Gettext",
"/path/to/language/".LANGUAGE.".mo",
LANGUAGE);
البته بستگی داره چه زبانی مد نظرتون باشه. به ازای هر زبان باید یه فایل با پسوند mo وجود داشته باشه (که مسیرش کاملش رو به عنوان آرگومان دوم به این سازنده فرستادیم.). حالا دو مساله پیش میاد. یکی اینکه چطور این فایل mo رو بسازیم. اینو میذارم برای یه کم پایینتر، مساله فعلا اینه که چطور از این شی که ساخته شده برای ترجمه استفاده کرد. ادامه مطلب
بازم PHP و نکات کوچیکش!
دی ۲م
یه پرسشنامه برای گرفتن چند تا برنامه نویس PHP طرح کرده بودم (بنا به خواست یه کارفرما). چند تا سوال در زمینه PHP هم پرسیده بودم، یکیش همون قضیه اولویت عملگرها بود و دقیقا کدی که اینجا هست رو پرسیده بودم خروجیش چی میشه، که هیچ کس درست جواب نداده بود. (برام زیاد دور از انتظار نبود.) یکی هم این قضیه اپراتورهای Identical بود که چند نفر درست جواب دادن ولی خیلی کم.
سوال دیگه ای هم که هیچ کس جواب نداده بود ( و یه کم هم عجیب بود برام! این دیگه سخت نیست که!! ) این بود که خروجی کد زیر چیه :
<?php
$x=0123;
if ($x==123)
echo "Equal";
else
echo "Not equal";
جالبه که حتی یه نفر از اینها (که چند تاییشون در حدی مدعی بودن که من با خودم گفتم دیگه باید برم غاز بچرونم!) این سوال رو جواب ندادن!
ادامه مطلب




