استفاده‌ی صحیح از توابع Checking

وقتی میخوایم وجود یا عدم وجود متغیر یا محتوا رو چک کنیم باید رفتار توابع و عملگرها رو بدونیم. سه مدل کلی برای چک کردن داریم: تابع empty، تابع isset و مدل boolean.

تابع isset فقط وقتی مقدار FALSE برمیگردونه که متغیر وجود نداشته باشه یا مقدارش برابر null باشه. پس برای چک کردن محتوا گزینه‌ی جالبی نیست. بیشترین کاربرد این تابع میتونه برای چک کردن آرایه‌ها باشه:


  1. if(isset($_GET['AHHP'])) {  
  2.     echo 'yes';  
  3. }  
  4. $name = isset($_POST['Boplo.ir']) ? 'YES' : 'NO';  
اگر آرایه رو قبل از استفاده چک نکنیم با خطای E_STRICT (یا E_WARNING؟) مواجه میشیم. برای چک کردن یک کلید میشه از تابع array_key_exists هم استفاده کرد.
تعداد پارامترهای تابع isset نامشخص هست و میشه همزمان چند تا متغیر رو چک کرد. در این حالت دو تا خط زیر یکسان هستند:

  1. $existence = isset($a$b$c);  
  2. $existence = isset($a) && isset($b) && isset($c);  

مدل boolean حالتی هست که معمولا در IF استفاده میشه مثل حالت زیر


  1. if$name )  
  2.     echo $name;  
در این مدل متغیر با FALSE و TRUE چک میشه و ما باید دقیقا بدونیم که یک متغیر چه مواقعی در برابر این آزمون FALSE یا TRUE میده!
در برابر این نوع چک، همیشه مقدار TRUE برمیگرده غیر از موارد زیر:

  1. // String  
  2. $str = "";  
  3.   
  4. // Integer  
  5. $int = 0;  
  6.   
  7. // Float  
  8. $float = 0.0;  
  9.   
  10. // Array  
  11. $arr = array();  
  12.   
  13. // NULL  
  14. $var  = null;  
  15.   
  16. // Boolean  
  17. $bool = false;  
متغیرهایی که تعریف نشده باشند هم NULL در نظر گرفته میشند.
اشیاء فقط زمانی TRUE هستند که حداقل یک مشخصه (Property) داشته باشند حتی با مقدار NULL.
  1. class Test1 {  
  2.     public function func1(){ }  
  3.     public function func2(){ }  
  4.     public function func3(){ }  
  5. }  
  6. $obj = new Test1;  
  7. if( !$obj ) {  
  8.     echo 'You will see this message!';  
  9. }  
  10. $obj->name = 'Amir Hossein';  
  11. if( !$obj ) {  
  12.     echo 'You will NOT see this message!';  
  13. }  
  14.   
  15.   
  16. class Test2 {  
  17.     public $name = null;  
  18. }  
  19. $obj = new Test2;  
  20. if( !$obj ) {  
  21.     echo 'You will NOT see this message!';  
  22. }  
توابع هم مقدار برگشتیشون چک میشه یا یکی از مدلهای بالاست یا هیچی نیست (void) که این حالت هم NULL در نظر گفته میشه.

تابع empty هم معکوس مدل boolean عمل میکنه.

در سایت PHP.net یک جدول خیلی کامل در این رابطه وجود داره که میتونه مفید باشه: Types Comparisons Table

یک نکته‌ی جانبی. گاهی لازمه که یک متغیر رو ابتدا به Boolean تبدیل کنیم و بعد چکش کنیم. برای این کار سه روش وجود داره:


  1. $str = 'Boplo.ir';  
  2. $bool1 = (bool) $str;  
  3. $bool2 = setType($str'bool');  
  4. $bool3 = !!$str

تبدیل HTML به قالب دروپال - قسمت اول

خیلی از پروژه ها نیازمند قالب خاص هستند در حالی که قالب های پیش فرض دروپال جواب گو نیستند و یا به اندازه ای پیچیده هستند که شما را گیج می کنند!می خواهم در چند پست به صورت گام به گام تبدیل یک فایل HTML  به قالب دروپال رو آموزش بدهم.
 
چند نکته که باید همین ابتدای کار در نظر داشته باشیم.
-----------
* از ابتدای به دنبال خلق قالب هایی باشید که خیلی خاص و چند منظوره و با چند تکنولوژی نیستند ، زیرا اگر به این مرحله نرسیم دچار مشکل می شویم! پس ساخت یک قالب حرفه ای را در هدف نهایی خود قرار می دهیم.
 
** اگر علم به طراحی HTML و CSS نداشته باشیم ، این آموزش خیلی مفید نیست و بازده مناسب را ندارد.پس بهتره اگر تا به حال فکر یادگیری HTML CSS نبوده اید ، از همین حالا شروع کنید.
 
***اگر بتوانید کار با ماژول Devel  و به خصوص Theme Developer  را یاد بگیرید خیلی خیلی (!) برای درک مفاهیم قالب دروپال جلو هستید.
 
 
 
*****این که فایل HTML را از کجا آورده اید مهم نیست ولی سعی کنید قالب HTML  شما طراحی Div  باشدو از Table  استفاده نشده باشد.حتی المقدور قالب انتخابی شما ساده باشد.
 
****** سعی کنید با افزونه FireBug  بر روی فایر فاکس اشنایی پیدا کنید که عصای دست هر طراح وب است.
----------
 
بسم الله ...
 
قالب دروپال در کمترین حالت از دوفایل page.tpl.php  و فایل .info  در یک پوشه به نام قالب قرار دارد.
ما نیاز داریم که با ساختار قالب های دروپال آشنا بشویم...
 
----> دروپال برای استفاده از قسمت های مختلف ابتدا به پوشه قالب سایت مراجعه می کند و بعد اگر فایل مورد نظر آن قسمت وجود نداشت به فایل های پیش فرض خود دروپال مراجعه می کند. این به این معناست که شما می توانید فایل page.tpl.php  ر هم نداشته باشید که در این صورت دروپال از فایل های پیش فرض استفاده می کند. (نگران نباشید این موضوع را بعدا مو شکافانه بررسی می کنیم)<------
 
--- فایل (ThemeName).info
 
این فایل حاوی نام قالب ، ورژن قالب ، نسخه دروپالی که روی آن پیاده سازی شده ، تصویر دمو قالب ، فایل های CSSو JavaScript و region های معرفی شده در page.tpl.php.
 
(region) : مکان هایی هستند که به شما اجازه می دهند که بلاک های خودتان را در آن ناحیه قرار بدهید.
 
--- فایل page.tpl.php
 
این فایل همان فایل HTML  شماست که با اضافه شدن کدهای php  و تغییر نام ، به page.tpl.php  تبدیل می شوند.
شما در این فایل اجازه خواهید داد به جای اینکه محتوای استاتیک در صفحه باشد ، دروپال با استفاده از بلاک های شما این کار را به صورت دینامیک انجام دهد.
 
اگر بخواهم مثال ساده بزنم ، به جای اینکه در Head صفحه و در Title  اسم صفحه را دستی بنویسید با نوشتن کد <?php print $head_title ?> (و یا چیزی شبیه این ) دروپال برای شما اسم صفحه را مشخص می کند.
 
و یا اینکه با نوشتن کد  
در جای مناسب و معرفی ان در فایل .info  اجازه می دهید بلاک ها در آن قسمت قرار بگیرند .
 
به نظر من تا همین جا برای قسمت اول کافی است و با مفاهیم اولیه قالب آشنا شدیم.
 
سعی من بر این است که هر 10روز یک قسمت از این سری مطالب را تکمیل کنم.
 
توصیه من این است کمی در سایت های آموزشی بچرخیم و در مورد قالب دروپال اطلاعات کسب کیم.البته بد نیست (بلکه خیلی خوبه ) چندتا از قالب های دروپال را بررسی کنیم.
 
اگر سوالی هست در قسمت نظرات مطرح کنید تا دوستان به کمک شما بشتابند !
 
غلط هایی املا و تایپی را هم نادیده بگیرید :)
 
موفق باشید

بدست آوردن نسخه لینوکس و 64 بیت یا 32 بیت بودن و نسخه‌ی کرنل

برای بدست آوردن نسخه‌ی کرنل و اطلاعات آن کافی است دستور زیر را استفاده کنیم:

uname -a

که خروجی شبیه زیر تولید می کند:

Linux Machine-Name 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

برای بدست آوردن نسخه ی لینوکس:

cat /etc/issue

و یا برای توزیع های مبتنی بر redhat:

tail /etc/redhat-release

که خروجی شبیه زیر تولید می کند:

Ubuntu 11.10 \n \l

همچنین برای بدست آوردن 32 بیت یا 64 بیت بودن لینوکس از دستور زیر استفاده می کنیم

arch

که خروجی شبیه زیر تولید می کند:

i686 (برای 32 بیت) و یا x86_64 (برای 64 بیت)

ریست کردن root در mysql

ابتدا mysql را stop می کنیم و سپس آن را در حالت safe راه اندازی می کنیم. در این حالت، می توان بدون داشتن پسورد root در mysql لاگین کرد:

service mysqld stop

mysqld_safe --skip-grant-tables &

سپس باید با اکانت root در Mysql لاگین کنیم. نیازی به پسورد نخواهد بود:

mysql -u root -p

دیتابیس mysql را انتخاب می کنیم و سپس با یک دستور SQL پسورد root را از درون جدول user تغییر می دهیم. در عبارت زیر، به جای My Password از پسورد مورد نظر استفاده می کنیم







use mysql
UPDATE mysql.user SET password=PASSWORD('My Password') WHERE user='root';
FLUSH PRIVILEGES;

quit

اکنون پسورد root ریست شده است. کافی است از حالت safe خارج شویم و Mysql را در حالت عادی راه اندازی کنیم.


killall -9 mysqld_safe
killall -9 mysqld
 
/sbin/service mysqld start