یادداشتهای بیت نیمسوز
یک وبلاگ دیگر از یک برنامه نویس دیگر
یک وبلاگ دیگر از یک برنامه نویس دیگر
خرداد ۱۳م
امروز درگیر یک کد بودم شبیه این :
<?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;
}
}
چقدر منو عذاب داد مطمئن باشید راست میگم و اصلا اغراق نیست!!!!!!
نظر شما چیه؟ این باگه؟ یا همینه که هست؟ باید گزارش بشه یا نه؟؟؟؟ کلا درسته که تبدیل روی ایندکس هم انجام بشه؟
– خیلی وقت بود ننوشته بودم :)چقدر دلم تنگ شده بود!!
– پی نوشت :نمیدونم چطوری اشتباهی :) نظرها رو بسته بودم. الان بازه دیگه ….
فروردین ۱۹م
یکی از مهمترین قسمتهای برنامه نویسی وب برای من اینه که صفحاتو درست و بدون مشکل از همون اول به صورت مرتب دربیارم و نه اینکه اول کدنویسی رو انجام بدم و بعد تازه بیام و یه دستی بکشم به خروجی…
منتها اینکار خیلی زمانگیر و گاهی هم اعصاب خورد کن میشه. چپ و راست کردن این div ها، تغییر دادن موقعیتشون، خصوصا اگه در حال طراحی یک سایت چند زبانه باشی که یکیش هم راست به چپه!
اوایل چند باری سعی کردم که با CSS خودم یه قالب کلی درست کنم، که موفق نبودم. یه دفعه که داشتم دنبال YAML: YAML Ain’t Markup Language میگشتم، به خاطر شباهت برخوردم به YAML : Yet Another Multicolumn Layout که تصمیم گرفتم تستش کنم ولی کلا ازش خوشم نیومد. زیادی شلوغش کرده بود و سربار زیادی رو به صفحه تحمیل میکرد.
به خاطر تجربه نسبتا ناخوشایندی که با YAML داشتم، تا یه مدت دنبال قالب کاری برای CSS نبودم، تا اینکه اتفاقی برخوردم به Blueprint: A CSS Framework و کلا نظرم عوض شد.
میتونید نسخه آخرشو از اینجا بگیرید یا اینکه از git استفاده کنید :
git clone https://github.com/joshuaclayton/blueprint-css.git
این یک CSS Framework خیلی سادست که در نهایت سادگی قابلیتهای فراوانی رو هم به شما میده. سیستمش هم سادست. با اضافه کردن یک (یا سه فایل در اصل که پایینتر توضیح میدم دربارشون ) میتونید از این فریم وورک استفاده کنید :
<!-- Framework CSS -->
<link rel="stylesheet" href="blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="blueprint/print.css" type="text/css" media="print">
<!--[if lt IE 8]><link rel="stylesheet" href="blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
فایل اولی screen.css فایل اصلیه. این فایل خودش در حقیقت تشکیل شده از چند قسمت که پایینتر دربارشون صحبت میکنم. فایل دوم، برای چاپ صفحه استفاده میشه و به شما این امکان رو میده که صفحات رو خیلی ساده بفرستید برای چاپ، بدون اینکه نیاز به کار خاصی باشه. اما سومی هم که طبق معمول، مربوط میشه به مشکلات IE خصوصا نسخ قدیمی که واقعا مکافات هستن.
در صورتی که دوست داشته باشید میتونید دو فایل دوم رو کنار بگذارید و چیزی رو هم روی مرورگرهای جدید از دست ندید به غیر از یک صفحه مناسب چاپ :) تصمیم با خودتونه.
فایل اصلی خودش ۴ قسمت بوده که توی پوشه src میتونید ببینیدشون، البته نیازی به بودن پوشه src در کار نهایی نیست، چون فایل screen.css حاوی همه قسمتها به صورت فشرده شده هست.
اولین قسمت فایل reset.css هست که من قبلا دربارش صحبت کردم و خودم هم چند نمونه رو معرفی کردم.
قسمت دوم typography.css هستش که حاوی یه سری کلاسهای مناسب برای فرمت دهی متن هست، کلاسهای برای کوچک یا بزرگ کردن، تغییر رنگ پسزمینه به زرد (highlight ) یا برای مخفی کردن (hide) و یه سری کلاس برای مشخص کردن متن (loud ) یا کم کردن تاثیر (quit).
قسمت سوم، در حقیقت سیستم جدول بندی رو برای صفحه ایجاد میکنه و اسمش هم grid.css هست. این سیستم به شما این امکان رو میده که با گذاشتن یه div با کلاس container (و البته showgrid برای نمایش جدول که در زمان طراحی خیلی کمک میکنه) یه سیستم ۹۵۰ پیکسلی داشته باشید که در وسط صفحه قرار میگیره و میتونه برای قرار دادن المنتها ازش استفاده بشه.
مثلا برای چنین شکلی :

ببینید :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Example</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="blueprint/print.css" type="text/css" media="print">
<!--[if lt IE 8]><link rel="stylesheet" href="blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
</head>
<div class="container showgrid">
<div id="head" class="span-24" style="background-color : red;"><h1>This is an example</h1></div>
<div id="navigation" class="span-4" style="background-color : blue;">
<ul>
<li>Navigation menu</li>
<li>Navigation menu</li>
<li>Navigation menu</li>
<li>Navigation menu</li>
<li>Navigation menu</li>
<li>Navigation menu</li>
</ul>
</div>
<div id="body" class="span-20 last" style="background-color : yellow;">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</p>
</div>
<div id="footer" class="span-24" style="background-color : gray; text-align: center;">
Copyright © 2011
</div>
</div>
<body>
</body>
</html>
قسمتهای style که مربوط به رنگ پسزمینه میشه رو کلا در نظر نگیرید اونها رو فقط گذاشتم که ناحیه ها از هم مجزا بشن. دیگه نیازی به سر و کله زدن با float و این جور چیزها نیست. این فریم ورک با ارایه یه سری کلاس آماده به شما اجازه میده که صفحه بندی مورد نظرتونو انجام بدید.
ادامه مطلب
فروردین ۱م
اول از همه سال نو مبارک. شروع دهه هم هست :) اینم مبارک باشه و اینکه دهه خوبی! داشته باشید.
یه چند وقتی هست که اینجا ننوشتم و امروز تصمیم گرفتم که بنویسم دست کم به بهونه تبریک سال نو. دلیل ننوشتنم هم این نیست که مثلا خسته شدم یا قصد دارم که دیگه ننویسم، مشکلیه که دیگران درست کردن.
جایی که من ازش هاست رو خریدم، بدون اجازه هاست منو ورداشتن اوردن توی ایران، حالا هم پیله کردن که مشخصاتتو بده، کپی شناسنامه و این چیزها. من کلا فعالیت سیاسی نداشته و ندارم و نخواهم داشت. کل عشق من برنامه نویسیه ولی اینکه یهو برگردن و بگن مشخصاتتو بده چیزیه که من باهاش کنار نمیام. بودن هاست داخل ایران هم که نگو! کل سرویسها هاپولی (بیتا تازه یاد گرفته نمیدونم از کی ولی زیاد میگه هاپولی!) شدن. توییترم که فیدشو اینجا گذاشته بودم کلا غیر فعال شده. اصولا هر چیز وابسته به توییتر از بین رفته :( حالا هم که فید گودرم دود شده رفته هوا! باقی سرویسها هم که هیچ!. امروزم رفتم تو وب مستر تولز میبینم کلی خطای Timeout هست!! کلا گند زده شده به زحمت این چند وقته! اینه که تصمیم گرفتم ننویسم تا عید بشه :) یه کم وقتم آزاد بشه و بتونم منتقل کنم این وبلاگ رو که دست کم، حالا که دخترم (بیتا) توی یه جای آزاد نیست، این یکی یه جای آزاد باشه، گرچه این آزادی فقط یه توهمه………
سال نو مبارک….
اسفند ۶م
وقتی داشتم پست بی اسم رو مینوشتم قاطی کرده بودم. به شدت. طوری که حتی با خودم هم سر دعوا داشتم. اصلا هیچ منظور خاصی نداشتم، و وقتی نظرات دوستان رو خوندم، دوستانی که بیشترشونو حتی نمیشناختم، تازه به این نتیجه رسیدم که نوشتن این وبلاگ برای من لازمه! از این به بعد سعی میکنم هر جا احساس کردم تو یه وبلاگ باید نظر بدم، ختی اگه یک درصد، اینکار رو انجام بدم. خنده داره ولی اصلا فکر نمیکردم این نظرات بتونه تاثیر بذاره و وقت خوندنشون، و دست کم تا یه مدت بعد آرومم کنه.
پست بعدیش، در حقیقت قبلترها نوشته بودمش، معمولا وقتی نوشته چند قسمتی دارم سعی میکنم اول کامل بنویسمش بعد منتشرش کنم. اینه که زمانبندیش میکنم برای یه زمان نسبتا دور، تا قسمتهای بعدیش هم که آماده شد با هم منتشر بشن. منتها این دفعه قسمت دومش تو زمانی که مد نظرم بود آماده نشد.
مادرم خدا رو شکر، خیلی حالش بهتره و این بیشتر از اون چیزی که حتی فکرشو میکردم برام با ارزشه. هرگز اینقدر نترسیده بودم کسی رو از دست بدم…. نتیجه گیری منطقیش اینه که الان یه چند وقتی هست که کوچکترین فرصتی که پیدا میکنم میرم سراغ دوستهام، کسایی که خیلی وقته ازشون بیخبرم، فامیل و کسانی که فقط سالی یه بار میدیدمشون. دلم نمیخواد وقتی یه اتفاقی افتاد فقط به خاطر اون اتفاق ببینمشون، خیلی هم دوست دارم که دیگران هم در مقابل همین کار رو برای من انجام بدن…..
به هر حال یه چند وقتی هست دارم یه کتاب آماده میکنم. هنوز زوده دربارش حرف بزنم، قبلا قصدم این بود که به صورت چاپی منتشرش کنم که الان کلا نظرم عوض شده و میخوام تو فضای مجازی و به صورت رایگان منتشرش کنم.(اگه به انتشار رسید میگم چرا این تصمیم رو گرفتم) اینه که کمتر وقت میکنم به وبلاگ برسم. ولی این فقط یه مدته، من به همین سادگی دست از وبلاگ نویسی نمیکشم :)
– واقعا ممنون. فقط همین!
بهمن ۱۴م
یکی از اصولی که سعی میکنم هنگام طراحی رعایت کنم، استفاده نکردن هرچه بیشتر!!! از زبان فارسیست. یعنی سعی میکنم تحت هیچ شرایطی توی کد حتی یک کلمه به زبانی غیر از انگلیسی، خصوصا فارسی ننویسم.
علت سادست، فارسی میتونه باعث مشکلات زیادی در زمان کد نویسی بشه خصوصا مشکلاتی که معمولا ویرایشگرهایی که من استفاده میکنم با این زبان دارن.
راه حل سادست، استفاده از سیستمهای مترجم، که من این وسط GnuGetText رو ترجیح میدم. اونم تازه اینکه مربوطه به گنو و منم تا گنو هست هیچ مشابهی رو استفاده نمیکنم، مهم نیست که چه امکاناتی ارایه میکنه!
توی این پست و پست بعدی قصد دارم در مورد این سیستم ترجمه و چگونگی اتصال اون با Zend Framework بنویسم. اول درمورد اینکه چطور این سیستم رو فعال کنیم و دوم اینکه چطور میشه قابلیتهاشو بیشتر کرد و یه سیستم ترجمه پویا هم ایجاد کرد خواهم نوشت.
اول از همه (معمولا تو bootstrap) باید یه شی ایجاد کنیم :
define('LANGUAGE','fa_IR');
$trans=new Zend_Translate("Zend_Translate_Adapter_Gettext",
"/path/to/language/".LANGUAGE.".mo",
LANGUAGE);
البته بستگی داره چه زبانی مد نظرتون باشه. به ازای هر زبان باید یه فایل با پسوند mo وجود داشته باشه (که مسیرش کاملش رو به عنوان آرگومان دوم به این سازنده فرستادیم.). حالا دو مساله پیش میاد. یکی اینکه چطور این فایل mo رو بسازیم. اینو میذارم برای یه کم پایینتر، مساله فعلا اینه که چطور از این شی که ساخته شده برای ترجمه استفاده کرد. ادامه مطلب