جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
نکات و اصول مهم در برنامه نويسي(2)
-(2 Body) 
نکات و اصول مهم در برنامه نويسي(2)
Visitor 337
Category: دنياي فن آوري
1- هرگز از SQLite براي نرم افزارهاي سنگين استفاده نکنيد!
شايد SQLite نقات قوت زيادي داشته باشه(از جمله مستقل بودن)، ولي در رابطه با نرم افزارهاي سبک!
در نرم افزارهاي سنگين،
اوليش: عدم نياز به پردازش سرور! در ظاهر يه نقطه قوت هست، ولي نداشتن پردازش سرور، مجموعه اي از مشکلات بزرگ و خطرناکي رو بهمراه داره: از قبيل قفل فايل، مسايل همزماني، مشکلات حافظه، نداشتن کش Query، مشکلات باينري، مشکلات سرريز(Overflow) شدن داده هاي سنگين و مشکلات مقياسي هنگام برخورد با توده عظيمي از اطلاعات!
دوميش: باينري نا امن! SQLite اطلاعات باينري رو نميتونه Handle کنه. براي Insert کردن داده از نوع باينري، ابتدا بايد آنرا Encode کنيد. بهمين شکل بايد تا آخر، پس از يک Select، داده رو هي Encode/Decode کنيد!
سوميش: همه جداول را قفل مي کنه! اکثر پايگاه هاي داده جداول انفرادي(يا حتي سطر ها) رو در حين انجام عمليات قفل مي کنند، اما SQLite همه پايگاه داده رو در حين عمليات قفل ميکنه. که اين Read/Write همزمان رو بسيار کند ميکنه! و مشکلات عمده و بزرگ ديگه اي از اين قبيل رو بهمراش مياره!
پس هرگز از SQLite براي نرم افزار هاي سنگين(با داده هاي سنگين) استفاده نکنيد.
2- بعد از هر بار استفاده از متغيرها، آرايه ها، شي ها، کلاس ها و غيره... اگر ديگر مقدار آنرا آدرسي دهي نمي کنيد اون رو خنثي(آزاد) کنيد. با اين کار سرعت عمل حافظه و پردازش اطلاعات و امنيت اطلاعات رو بالا مي بريد(اين امر در مورد ديگر زبانهاي برنامه نويسي هم صدق مي کنه).
در PHP:
با دستور ()unset.
يا
با قرار دادن مقابل null.
مخصوصاً درخواستهاي HTTP رو! مثل $_GET, $_POST, $_REQUEST. اين طوري از Steal شدن مقاديرشون هم جلوگيري ميشه(تا حد زيادي).
3- اگر به قاعده هاي توابع موجود در بسته PCRE مسلط نيستيد يا به صحت قواعدتون شک داريد براي فيلتر کردن وروديها/خروجيها استفاده نکنيد. اينها توابعي بسيار دقيق در عين حال خيلي حساس هستند. از توابع خود بسته Standard استفاده کنيد. بهينه تر هم هست(اگر نيازي به قواعد نداريد).
حتي سرعت برخي توابعي که در بسته Standard هستش از توابع موجود در بسته PCRE خيلي بيشتره! نمونش: سرعت عمل تابع str_replace نسبت به تابع preg_replace، تقريباً 20% بيشتره.
4- در زبانهاي برنامه نويسي استاندارد(به غير از VB و...) وقتي شما دستوري رو مي نويسيد و اجرا مي کنيد، حافظه پايان اون دستور رو ; يا همون نقطه ويرگول مي دونه و يکي از ريز دلايلي که باعث شد استاندارد معرفي بشن همينه.
عدم رعايتش باعث: کندي در پردازش، سردرگمي در بررسي اوليه صحت دستورات، اشغال فضاي حافظه(غير قابل تخليه)، بروز خطا(در نرم افزارهاي سنگين) و از اين قبيل هستش!
مثال صحيح(تکرار):
PHP Code:

if($_X) 

}; 
for($_X; ...) 

}; 
if($_X): ... 
endif; 
for($_X; ...): ... 
endfor; 
switch(yyyyy)
{
case xxxxx: ...
break;
};
class X 

}; 
و 
... 

5- حتاامکان همه پارامترها، مقادير، دستورات و غيره... رو تعريف کنيد و بحالت پيش فرض رهاش نکنيد تا خرابکار(خارج از نرم افزار) سو استفاده و تعريفش نکنه!
6- اگر بيش از 3-4 تابع داريد که در يک زمينه فعاليت مي کنن همه رو در يک کلاس قرار بديد. هم ايمنيش بيشتره(براحتي فراخوني نميشه)، هم Handling کردنش و هم قدرت پيمايشش. من خودم قبلاً به دليل سرعت بيشتر تابع، شايد تا 5 تابع رو هم کلاس نمي کردم مگر اينه توابع سنگيني بوده باشن. ولي از وقتي از شامپو کلاس استفاده مي کنم(ريزش موهام 2 برابر شده، خيلي خوبه) کارمم تميز تر شده :wink:.
7- قبل از استفاده از کلاس، تابع و بسته از وجودش مطلع بشيد. حتماً حتماً حتماً!
مثال صحيح:
PHP Code:

if(!extension_loaded('mysql')): exit('Extension MySQL not loaded.'); 
endif; 
...
if(function_exists('mysql_real_escape_string')): mysql_real_escape_string(...); 
else: mysql_escape_string(...); 
endif;
...
و...
if(function_exists('settype')): settype($Str_Input, 'string');
else: (string)$Str_Input;
endif;
و... 

8- الفباي کد نويسي ايستا!
بين(صحيح):
Code:

<input name="InpTxt_Username" type="text" value="" maxlength="15" size="15" id="InpTxt_Username">

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image