PDA

View Full Version : مقاله: نکات و اصول مهم در برنامه نویسی(2#)



Yousha
شنبه 18 آبان 1387, 21:21 عصر
حذف شد..........

sama01
یک شنبه 19 آبان 1387, 00:04 صبح
دست شما درد نکنه. فقط به تر نبود این نکات را در ادامه‌ی فکات قبلی اضافه می‌کردید؟
این طوری هر کسی میاد یک تاپیک باز می‌کنه چند نکته می‌نویسه. پیدا کردن نکات در n تاپیک کمی نامناسب است.
این طور نیست؟

zoghal
یک شنبه 19 آبان 1387, 00:24 صبح
لطفا در مورد 8 توضیح میدید، من نفهمیدم کدومش استاندارد تر هست.

اما در مورد 11، به نظرم باید کنترل داشت. اما اگر تعداد ورودی ها زیاد باشه، مقداری سخت میشه، آیا شما کلاس یا کدی سراغ دارید که این کنترل ها رو برای برنامه نویس آسون کنه؟


اگر هم نرم افزارتون قابلیت تغییر Template/Theme رو داره، در آخر خروجی HTML یا همون Echo، از دستور
@exti('');

این exit در این مورد که توضیح دادید چه کار خاصی رو انجام میده؟

و در مورد 14 هم توضیح بدید که چرا اصلا باید از <noscript> استفاده کنیم اون هم در فایل های خالی اپ تی ام ال

Yousha
یک شنبه 19 آبان 1387, 10:21 صبح
دست شما درد نکنه. فقط به تر نبود این نکات را در ادامه‌ی فکات قبلی اضافه می‌کردید؟
این طوری هر کسی میاد یک تاپیک باز می‌کنه چند نکته می‌نویسه. پیدا کردن نکات در n تاپیک کمی نامناسب است.
این طور نیست؟

من هم موافقم. ولی مبحث قبلی همین موضوع طولانی شده و سخت میشه پیداش کرد و نظر داد.
با سرپرست این بخش باید صحبت بشه، تا یه مبحث ثابت از Link های اینجور مقالات توش قرار بدن.


لطفا در مورد 8 توضیح میدید، من نفهمیدم کدومش استاندارد تر هست.

خودوتن فکر می کنید کدوم؟
قطعاً
<input name="InpTxt_Username" type="text" value="" maxlength="15" size="15" id="InpTxt_Username">
و

width: 250px; height: auto; overflow: hidden;
و

$_Request['FormName']

پست 11 هم اگر منظورتو کلاس هست، آره.
اون Exit هم معلومه دیگه چیکار مینه. بعد از خط نمایش(یا خروجی) HTML، همه چیز رو Terminate/پاک می کنه.

پست 14 هم همینطور. از تزریق/Embed متن و تگ جلوگیری می کنه.

vahid4134
یک شنبه 19 آبان 1387, 10:22 صبح
نکات بسیار زیاد که پر از مطالب مفید و یک مقدار عیب بود
در مورد نکته اول بهتره بگیم که از sqllite برای دیتابیس های بزرگ استفاده نکنید نه اینکه در پروژه های بزرگ استفاده نکنید. در پروژهای بزرگ هم کاربر داره
اما در مورد


حتی سرعت برخی دستوراتی که در بسته Standard هستش از دستورات موجود در بسته PCRE خیلی بیشتره! نمونش: سرعت عمل str_replace نسبت به preg_replace، دقیقاً 20% بیشتره(با مثال هم ثابت میکنم).

کاری رو که بشه با توابع ساده و رشته ای انجام داد رو بهتره با اونها انجام داد در غیر این صورت از توابعی که با عبارات با قاعده کار می کنند (اینطوری صحیحتر هست)
در مورد نکته 6 هم درسته هم غلط. درستیش اینه که خوب کپسوله سازی داره درست انجام میشه اما غلط این هست که سرعت یک مقدار میاد پایین. در کتاب php power programming به این نکته اشاره شده که php جاوا نیست آبجکتها کند هستند . دلیلش هم توی کتاب گفته شده
نکته 15 هم بازم میگم اشتباه هست.
ببینید هر کدوم برای خودش مزایایی داره و معایبی. معایب دلیل نمیشه مزایا رو نادیده گرفت. بسته های pear بسته های استانداردی هستند. خیلی از کتابها شما رو به استفاده از بسته های pear تشویق می کنند. درسته سرعت خیلی مهم هست اما خوانایی و قابلیت develop از سرعت مهمتر هست. اگر قرار باشه از اینها استفاده نشه و به صورت رویه ای کد نویسی بشه که پس develop کجا رفت (البته اگر به جای بسته db از اکسشن pdo استفاده بشه بهتر هست)

از بقیه مطالب مفیدت هم ممنون

yaqubian
یک شنبه 19 آبان 1387, 11:52 صبح
دوست عزیز
من هم کاملا با نظرات آقا وحید موافقم.
موفق باشید

Yousha
یک شنبه 19 آبان 1387, 11:57 صبح
کاری رو که بشه با توابع ساده و رشته ای انجام داد رو بهتره با اونها انجام داد در غیر این صورت از توابعی که با عبارات با قاعده کار می کنند (اینطوری صحیحتر هست).

خوب اینکه معلومه.


در مورد نکته اول بهتره بگیم که از sqllite برای دیتابیس های بزرگ استفاده نکنید نه اینکه در پروژه های بزرگ استفاده نکنید. در پروژهای بزرگ هم کاربر داره.

برای این نوشتم پروژه های سنگین که مفهومش قابل درک باشه. شاید فکر می کردند که Databaseی بزرگه که پر از سطر و ستون و جدول باشه(با داده های سبک).
تشکر.

zoghal
یک شنبه 19 آبان 1387, 12:51 عصر
مرسی میشه در مورد 11 کلاس رو نام ببرید یا لینکی ارائه بدید

Yousha
یک شنبه 19 آبان 1387, 14:51 عصر
مرسی میشه در مورد 11 کلاس رو نام ببرید یا لینکی ارائه بدید

اگر خودتون میتونید بنویسید بهتره، نه که در گوگل جستجو کنید:
(کامل ترینشو Download کنید.)
http://www.google.com/search?hl=en&q=PHP+template+class&btnG=Google+Search&aq=f&oq=

Placebo
یک شنبه 19 آبان 1387, 22:33 عصر
معلومه که حالیته !

zoghal
دوشنبه 20 آبان 1387, 00:58 صبح
اگر خودتون میتونید بنویسید بهتره، نه که در گوگل جستجو کنید:
(کامل ترینشو Download کنید.)
http://www.google.com/search?hl=en&q=PHP+template+class&btnG=Google+Search&aq=f&oq=
من کلاس تمپلیت انجین نمی خوام از این که پور هست و من واسه خودم نوشتم،

یک کلاس که معتبر بودن و صحیح بودن مقادیر $_get , $_post رو چک کنه

Yousha
دوشنبه 20 آبان 1387, 09:36 صبح
من کلاس تمپلیت انجین نمی خوام از این که پور هست و من واسه خودم نوشتم،
یک کلاس که معتبر بودن و صحیح بودن مقادیر $_get , $_post رو چک کنه.

درسته. من منظورتونو متوجه نشدم. برای این کار که به کلاس نیاز نیست. یه تابع هم می تونه باشه. 1-2 رو بصبری می نویسمش برات، خودمم لازم دارم.

zoghal
دوشنبه 20 آبان 1387, 17:58 عصر
مرسی منتظریم

musiox
دوشنبه 20 آبان 1387, 20:07 عصر
استاندارد و اصول و طبیعت یه چیزیو رعایت نمی کنیم

فکر نکنم این ربطی به برنامه نویس داشته باشه :


- هرگز از SQLite برای پروژه های سنگین استفاده نکنید(از اسمش هم معلومه)!
شاید SQLite نقات قوت زیادی داشته باشه(از جمله مستقل بودن)، ولی در رابطه با نرم افزارهای سبک!
در نرم افزارهای سنگین،
اولیش: عدم نیاز به پردازش سرور! در ظاهر یه نقطه قوت هست، ولی نداشتن پردازش سرور، مجموعه ای از مشکلات بزرگ و خطرناکی رو بهمراه داره: قفل فایل، مسایل همزمانی، مشکلات حافظه، نداشتن کش Query، مشکلات باینری، مشکلات سرریز شدن(Overflow) داده های سنگین و مشکلات مقیاسی هنگام برخورد با توده عظیمی از اطلاعات!!
دومیش: باینری نا امن! SQLite اطلاعات باینری رو نمیتونه Handle کنه. برای Insert کردن داده از نوع باینری، ابتدا باید آنرا Encode کنید. بهمین شکل باید تا آخر، پس از یک Select، داده رو هی Encode/Decode کنید.
سومیش: همه جداول را قفل می کنه! اکثر پایگاه های داده جداول انفرادی(یا حتی سطر ها) رو در حین اتجام عملیات قفل می کنند، اما SQLite خفنه و بخاطر کاربردش، همه پایگاه داده رو در حین عملیات قفل میکنه :متعجب:. که این Read/Write همزمان رو بسیار کند میکنه! و مشکلات عمده و بزرگ دیگه ای از این قبیل رو بهمراش میاره!
پس هرگز از SQLite برای پروژه های سنگین استفاده نکنید!

البته از باب اصول.

Yousha
دوشنبه 20 آبان 1387, 21:48 عصر
استاندارد و اصول و طبیعت یه چیزیو رعایت نمی کنیم.

فکر نکنم این ربطی به برنامه نویس داشته باشه.

فکر بکن چون داره.
طبیعتش یعنی(مثلاً) همین چیزایی که نوشتم. در صورتی که از قبل تعریف شده و کاربردش مشخصه ولی استفاده نمیشه. خیلی ها فکر میکنن چیزی بیش از ایناست...

Yousha
سه شنبه 05 آذر 1387, 12:24 عصر
عزیز چند روزی کاری برام پیش اومد، نتونستم بیام. :چشمک:
خودم از همین توابع استفاده می کنم. فقط این سه شرط وسط رو بصورت باز و آزاد استفاده می کردم.

تایید Reffer:

function _Is_Valid_HTTP_Refer()
{
$_Str_ReferringURL= (string)$_SERVER['HTTP_REFERER'];
$_Str_Host= (string)$_SERVER['HTTP_HOST'];
unset($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']);
if(strlen($_Str_ReferringURL) >= 2000 || strlen($_Str_Host) >= 255 || trim($_SERVER['REMOTE_ADDR']) == '' || ($_SERVER['REQUEST_METHOD'] != 'GET' && $_SERVER['REQUEST_METHOD'] != 'POST')): return((boolean)false);
endif;
$_Int_ValidLength= @strlen((string)'http://' . $_Str_Host . '/');
return(@substr($_Str_ReferringURL, 0, $_Int_ValidLength)) ? (boolean)true : (boolean)false;
}

پاکسازی ورودی:

function _Clean_Input($Str_Input, $Str_Type= 'all', $Int_MaximumLength, $Bln_IsConnection= true)
{
if(strlen((string)$Str_Input) > $Int_MaximumLength): return((boolean)false);
endif;

if($Str_Type == 'alnum')
{
if(ctype_alnum($Str_Input)): $Str_Input= (string)@preg_replace('/[^a-zA-Z0-9]/i', '', $Str_Input);
else: return((boolean)false);
endif;
}
elseif($Str_Type == 'numeric')
{
if(is_numeric($Str_Input)): $Str_Input= (integer)@preg_replace('/[^0-9]/i', '', $Str_Input);
else: return((boolean)false);
endif;
}
elseif($Str_Type == 'alphabetic')
{
if(ctype_alpha($Str_Input)): $Str_Input= (string)@preg_replace('/[^a-zA-Z]/i', '', $Str_Input);
else: return((boolean)false);
endif;
};

if($Bln_IsConnection)
{
if(get_magic_quotes_gpc()): function_exists('mysql_real_escape_string') ? @stripslashes(@mysql_real_escape_string($Str_Input )) : @stripslashes(@mysql_escape_string($Str_Input));
else: function_exists('mysql_real_escape_string') ? @addslashes(@mysql_real_escape_string($Str_Input)) : @addslashes(@mysql_escape_string($Str_Input));
endif;
};

unset($Str_Type, $Int_MaximumLength, $Bln_IsConnection);
return(@strip_tags($Str_Input));
}

موفق باشید.

sobhangh
یک شنبه 29 آبان 1390, 23:37 عصر
13 تا هست اما شما توضیح 14 رو نوشتی
توی قسمت اولت هم 9 رو حذف کرده بودیی
می شه لطفا اونها رو دوباره بگذارید