robust adaptive dynamic programming for optimal nonlinear control design

Dynamic Vision for Perception and Control of Motion ppt

Dynamic Vision for Perception and Control of Motion ppt

Ngày tải lên : 05/03/2014, 15:20
... Ernst Dieter Dynamic vision for perception and control of motion 1. Compu ter vision - Industrial applic ations 2. Optical detect ors 3. Motor vehicles - Automatic control 4. Adaptive control systems I. ... from gaze control can be measured conventionally on the platform and are assumed known, error-free. So, there is no new unknown variable for active gaze control; however, the transformations ... Behavioral Capabilities for Locomotion 72 3.4.1 The General Model: Control Degrees of Freedom 73 3.4.2 Control Variables for Ground Vehicles 75 3.4.3 Basic Modes of Control Defining Skills...
  • 490
  • 534
  • 0
Báo cáo khoa học: "Dynamic Programming for Linear-Time Incremental Parsing" pptx

Báo cáo khoa học: "Dynamic Programming for Linear-Time Incremental Parsing" pptx

Ngày tải lên : 17/03/2014, 00:20
... track. Dynamic programming turns out to be a great fit for early updating (see Section 4.3 for details). 3 Dynamic Programming (DP) 3.1 Merging Equivalent States The key observation for dynamic programming is ... 02-21 for training, 22 for development, and 23 for testing. Both DP and non-DP parsers use the same feature templates in Table 1. For Secs. 4.1-4.2, we use a baseline model trained with non-DP for ... Sweden, 11-16 July 2010. c 2010 Association for Computational Linguistics Dynamic Programming for Linear-Time Incremental Parsing Liang Huang USC Information Sciences Institute 4676 Admiralty...
  • 10
  • 362
  • 0
Báo cáo khoa học: "Adding Syntax to Dynamic Programming for Aligning Comparable Texts for the Generation of Paraphrases" potx

Báo cáo khoa học: "Adding Syntax to Dynamic Programming for Aligning Comparable Texts for the Generation of Paraphrases" potx

Ngày tải lên : 31/03/2014, 01:20
... 747–754, Sydney, July 2006. c 2006 Association for Computational Linguistics Adding Syntax to Dynamic Programming for Aligning Comparable Texts for the Generation of Paraphrases Siwei Shen , ... and N respectively. This matrix is constructed through dynamic programming as shown in Figure 3. if if max otherwise Figure 3: Dynamic programming in computing MLED of two sentences of length ... successfully used syntactic informa- tion to guide alignments. In this paper, we describe an algorithm for incorporat- ing syntactic features in the alignment pro- cess for non-parallel texts with...
  • 8
  • 430
  • 0
Báo cáo khoa học: "Dynamic programming for parsing and estimation of stochastic unification-based grammars∗" pot

Báo cáo khoa học: "Dynamic programming for parsing and estimation of stochastic unification-based grammars∗" pot

Ngày tải lên : 31/03/2014, 06:20
... well. Dynamic programming techniques have been applied to log-linear models before. Lafferty et al. (2001) mention that dynamic programming can be used to compute the statistics required for conditional ... subset of the variables X. There are dynamic programming algorithms for calculating all of these quantities, but for reasons of space we only describe an algorithm for finding the maximum value of ... representations, the statistics required for parsing and estimation are the kinds of quantities that dynamic programming algorithms for graphical models can perform. Since neither Maxwell and Ka- plan’s...
  • 8
  • 397
  • 0
PHP programming dynamic web for everybody

PHP programming dynamic web for everybody

Ngày tải lên : 17/10/2013, 10:15
... Th í d ụ sau m ở t ậ p tin v à in t ừ ng d ò ng: Th í d ụ tr ê n s ẽ t ạ o l ỗ i: Warning: Warning: Warning: Warning: Supplied Supplied Supplied Supplied argument argument argument argument is is is is not not not not a a a a valid valid valid valid File-Handle File-Handle File-Handle File-Handle resource resource resource resource in in in in C:\Inetpub\wwwroot\tst.php C:\Inetpub\wwwroot\tst.php C:\Inetpub\wwwroot\tst.php C:\Inetpub\wwwroot\tst.php on on on on line line line line 4. 4. 4. 4. <? printf printf printf printf ( "%d occurrences of %s found." , count ( $truyvan ), $search_term ); ?> <? print print print print count ( $truyvan ) . "occurrences of $search_term found." ; ?> <? $fp = @ fopen ( 'vanban.txt' , 'r' ) or die ( 'Khong the mo file vanban.txt' ); while ( $line = @ fgets ( "$fp" , 1024 )) // Loi { print $line ; } @ fclose ( "$fp" ) // Loi or die ( 'Khong the dong vanban.txt' ); ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 4 4 4 4 Dormitory 204.B5 18:20 PM April 7, 2006 // In ra tuoi ca nhan print "$idx years old \n <br> \n " ; } / / Ket thuc ma PHP ? > 1. 1. 1. 1. Bao Bao Bao Bao nhi nhi nhi nhi ê ê ê ê u u u u ghi ghi ghi ghi ch ch ch ch ú ú ú ú th th th th ì ì ì ì đủ đủ đủ đủ ? ? ? ? Nhi ế u đế n m ứ c n à o, đ i ề u đó tu ỳ thu ộ c ng â n s á ch c ủ a b ạ n, v à o ch í nh s á ch c ủ a c ô ng ty v à v à o độ ph ứ c t ạ p c ủ a ch ươ ng tr ì nh. Tuy nhi ê n, c ũ ng c ó m ộ t v à i g ợ i ý cho b ạ n  Lu ô n c ó m ộ t m ô t ả ng ắ n v ề m ụ c đí ch c ủ a h à m ngay tr ướ c đị nh ngh ĩ a c ủ a h à m đó  Th ê m ghi ch ú v à o nh ữ ng ch ỗ c ó th ể b ị hack, ho ặ c nh ữ ng ch ỗ t ưở ng r ằ ng sai nh ư ng l ạ i ch ạ y đú ng  N ế u m ộ t đ o ạ n m ã n à o đó c ó th ể g â y nh ầ m l ẫ n, h ã y th ê m m ộ t í t ghi ch ú v ề m ụ c đí ch c ủ a đ o ạ n đó . Sau n à y b ạ n s ẽ th ấ y đượ c l ợ i í ch c ủ a n ó  D ù ng m ộ t ki ể u ghi ch ú nh ấ t qu á n, /* /* /* /* */ */ */ */ ho ặ c l à // // // // (tr (tr (tr (tr á á á á nh nh nh nh d d d d ù ù ù ù ng ng ng ng #) #) #) #) D ướ i đâ y l à m ộ t th í d ụ v ề ghi ch ú t ố t: <? // Random_Numbers.lib // Generate different types of random numbers. mt_srand ((double) microtime ()* 1000000 ); // mixed random_element(array elements[, array weights]) // Extract a random element from elements. Weights is // the relative probability that each element will be // selected. function random_element ( $elements , $weights =array()) { // There must be exactly the same amount of elements as // there are weights for this algorithm to work properly if ( count ( $weights ) == count ( $elements )) { foreach ( $elements as $element ) { foreach ( $weights as $idx ) { // Note: we don't use $idx, since we // don't want to override elements. $randomAr [] = $element ; } } } else { $randomAr = $elements ; } $random_element = mt_rand ( 0 , count ( $randomAr )- 1 ); return $randomAr [ $random_element ]; } ?> 18. 18. 18. 18. Nhi Nhi Nhi Nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n, n, n, n, t t t t ố ố ố ố n n n n nhi nhi nhi nhi ề ề ề ề u u u u th th th th ờ ờ ờ ờ i i i i gian gian gian gian C ó v à i ng ườ i b ị á m ả nh b ở i bi ế n trung gian. T ô i kh ô ng th ể hi ể u n ổ i t ạ i sao ai đó c ó th ể vi ế t nh ư th ế n à y: PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 8 8 8 8 Dormitory 204.B5 18:20 PM April 7, 2006  Kh ô ng s á ng s ủ a v à d ễ d à ng b ằ ng h ệ th ố ng m ẫ u (template system)  C ầ n m ộ t í t ki ế n th ứ c PHP để s ử a m ẫ u 2. 2. 2. 2. H H H H ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng khu khu khu khu ô ô ô ô n n n n m m m m ẫ ẫ ẫ ẫ u u u u M ộ t c á ch kh á c để t á ch bi ệ t kh á ch ch ủ l à d ù ng h ệ th ố ng khu ô n m ẫ u. Ngh ĩ a l à , c ó m ộ t s ố đá nh d ấ u n ộ i dung sau đó d ù ng ch ươ ng tr ì nh ph â n t í ch, thay th ế c á c đá nh d ấ u đó b ằ ng th ô ng tin c ầ n thi ế t. Th í d ụ , b ạ n c ó th ể t ạ o m ộ t t ậ p tin nh ư th ế n à y: Sau đó c ó th ể vi ế t ch ươ ng tr ì nh ph â n t á ch t ậ p tin, thay th ế c á c th ô ng tin trong d ấ u c á ch %% b ằ ng c á c th ô ng tin th í ch h ợ p. Ghi ch ú : m ộ t l ớ p h ỗ tr ợ h ệ th ố ng khu ô n m ẫ u kh á t ố t l à l ớ p FastTemplate, c ó ở www.thewebmasters.net 2.1. 2.1. 2.1. 2.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m c c c c ủ ủ ủ ủ a a a a h h h h ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng khu khu khu khu ô ô ô ô n n n n m m m m ẫ ẫ ẫ ẫ u u u u  R ấ t trong s á ng  Kh ô ng c ầ n ki ế n th ứ c PHP để s ử a khu ô n m ẫ u 2.2. 2.2. 2.2. 2.2. Nh Nh Nh Nh ượ ượ ượ ượ c c c c đ đ đ đ i i i i ể ể ể ể m m m m  Ch ậ m h ơ n, b ạ n c ầ n ph â n t á ch t ậ p tin khu ô n m ẫ u, sau đó xu ấ t ra  Vi ệ c hi ệ n th ự c ph ứ c t ạ p h ơ n 15. 15. 15. 15. D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i C ó nhi ề u ng ườ i c ứ d ù ng m ã i c á c m ã v à th ư vi ệ n l ỗ i th ờ i. Th í d ụ nh ư h ọ đã vi ế t m ộ t h à m d ù ng ở PHP 2, v à v ẫ n c ò n d ù ng n ó ở PHP 4, m ặ c d ù m ộ t h à m c ó c ù ng m ụ c đí ch nh ư th ế đã đượ c th ê m v à o ở PHP 3 D ù ng c á c c ấ u tr ú c l ỗ i th ờ i c ó th ể l à m ch ậ m ch ươ ng tr ì nh c ủ a b ạ n, c ũ ng nh ư l à m cho n ó tr ở n ê n kh ó hi ể u. Ng ườ i đọ c c á c ch ươ ng tr ì nh c ủ a b ạ n c ó th ể kh ô ng quen v ớ i c á c h à m l ỗ i th ờ i c ủ a PHP. Tuy nhi ê n, khi ph á t hi ệ n m ộ t đ o ạ n m ã l ạ c h ậ u, b ạ n đừ ng ngh ĩ r ằ ng c ầ n ph ả i thay th ế n ó . Ch ỉ c ầ n ch ắ c ch ắ n r ằ ng b ạ n s ẽ kh ô ng d ù ng n ó cho c á c ch ươ ng tr ì nh vi ế t trong t ươ ng lai. M ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i, m à nhi ề u ng ườ i c ó v ẻ c ố n ắ m l ấ y, l à c ú ph á p beginControlStructure beginControlStructure beginControlStructure beginControlStructure endControlStructure endControlStructure endControlStructure endControlStructure ; HTML HTML HTML HTML < html > < head > < title >%%PAGE_TITLE%%< /title > < /head > < body %%BODY_PROPERTIES%% > < h1 >%%PAGE_TITLE%%< /h1 > < table border =" 0 " cellpadding=" 0 " cellspacing=" 0 "> < tr > < td width =" 25% ">%%PAGE_LINKS%%< /td > < td >%%PAGE_CONTENT%%< /td > < /tr > < /table > < /body > < /html > <? PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 10 10 10 10 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 2 – L Ỗ I NGHI Ê M TR Ọ NG             14. 14. 14. 14. Kh Kh Kh Kh ô ô ô ô ng ng ng ng tu tu tu tu â â â â n n n n th th th th ủ ủ ủ ủ c c c c á á á á c c c c quy quy quy quy ướ ướ ướ ướ c c c c đặ đặ đặ đặ t t t t t t t t ê ê ê ê n n n n M ộ t trong nh ữ ng l ỗ i nghi ê m tr ọ ng m à ng ườ i l ậ p tr ì nh c ó th ể ph ạ m ph ả i l à đị nh ngh ĩ a m ộ t quy ướ c đặ t t ê n t ồ i. T ô i đã ti ế p qu ả n nhi ề u d ự á n m à trong đó t ô i ph ả i b ỏ ra r ấ t nhi ề u th ờ i gi ờ ch ỉ để hi ể u ch ươ ng tr ì nh, do l ậ p tr ì nh vi ê n đặ t t ê n c á c bi ế n l à $fred v à $barney thay cho $email v à $name. T ô i đ ang đề c ậ p đế n m ộ t d ự á n m à ng ườ i l ậ p tr ì nh c ũ đã quy ế t đị nh đư a v à o to à n b ộ ch ươ ng tr ì nh m ộ t ki ể u đặ t t ê n k ì l ạ (a Flinstones naming theme), kh ô ng ph ả i t ô i đù a đâ u. C á ch b ạ n đặ t t ê n bi ế n v à h à m l à trung t â m c ủ a vi ệ c x â y d ự ng m ộ t ch ươ ng tr ì nh d ễ đọ c. C ó nhi ề u l ậ p tr ì nh vi ê n ph ạ m l ỗ i khi đặ t t ê n bi ế n v à h à m m à n ó :  qu á d à i ho ặ c qu á ng ắ n  kh ô ng li ê n quan đế n ng ữ c ả nh  kh ô ng để ý đế n c á ch-vi ế t-ph â n-bi ệ t (case sensitivity)  ng ă n c ả n kh ả n ă ng d ễ đọ c ( đặ c bi ệ t l à c á c h à m) 1. 1. 1. 1. Đặ Đặ Đặ Đặ t t t t t t t t ê ê ê ê n n n n bi bi bi bi ế ế ế ế n n n n 1.1. 1.1. 1.1. 1.1. C C C C á á á á ch ch ch ch vi vi vi vi ế ế ế ế t t t t ph ph ph ph â â â â n n n n bi bi bi bi ệ ệ ệ ệ t t t t Trong PHP, t ê n bi ế n c ó c á ch vi ế t ph â n bi ệ t, ngh ĩ a l à $user v à $User l à ho à n to à n kh á c nhau. V à i ng ườ i d ù ng l ợ i d ụ ng đ i ể m n à y để đặ t c á c bi ê n c ù ng t ê n nh ư ng kh á c c á ch vi ế t. Đâ y l à m ộ t th ó i quen t ồ i t ệ . C á ch vi ế t kh ô ng bao gi ờ n ê n d ù ng để ph â n bi ệ t c á c bi ế n kh á c nhau. M ỗ i t ê n bi ế n, trong c ù ng t ầ m v ự c (scope), n ê n c ó l à tuy ệ t đố i duy nh ấ t. 1.2. 1.2. 1.2. 1.2. T T T T ê ê ê ê n n n n qu qu qu qu á á á á ng ng ng ng ắ ắ ắ ắ n n n n Nhi ề u ng ườ i s ử d ụ ng nh ữ ng ch ữ vi ế t t ắ t đầ u (cryptic acronym) b í ẩ n cho c á c bi ế n c ủ a h ọ , để r ồ i sau n à y h ố i ti ế c v ì qu ê n m ấ t h ọ đã mu ố n á m ch ỉ đ i ề u g ì khi đó . T ê n bi ế n n ê n m ô t ả n ộ i dung n ó (s ẽ ) ch ứ a, d ù ng nguy ê n t ừ ho ặ c nh ữ ng ch ữ vi ế t t ắ t c ó th ể hi ể u đượ c . 1.3. 1.3. 1.3. 1.3. T T T T ê ê ê ê n n n n qu qu qu qu á á á á d d d d à à à à i i i i Ở kh í a c ạ nh kh á c, v à i ng ườ i l ạ i s ử d ụ ng t ê n bi ế n qu á d à i. N ó i chung, t ê n bi ế n kh ô ng n ê n d à i qu á hai t ừ . Hai t ừ c ó th ể đượ c t á ch bi ệ t b ằ ng d ấ u ph â n c á ch "_" ho ặ c l à vi ế t hoa ch ữ đầ u c ủ a t ừ th ứ hai. 1.4. 1.4. 1.4. 1.4. Th Th Th Th ó ó ó ó i i i i quen quen quen quen t t t t ố ố ố ố t t t t D ướ i đâ y l à nh ữ ng th í d ụ t ố t v ề t ê n bi ế n $username = 'phanthanhkieu' ; $password = 'bimat' ; $teachers = array ( 'Sadlon' , 'Lane' , 'Patterson' , 'Perry' , 'Sandler' , 'Mendick' , 'Zung' ); foreach ( $teachers as $teacher ); PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 21 21 21 21 Dormitory 204.B5 18:20 PM April 7, 2006 1.2. 1.2. 1.2. 1.2. T T T T ạ ạ ạ ạ o o o o m m m m ộ ộ ộ ộ t t t t tr tr tr tr ì ì ì ì nh nh nh nh t t t t ự ự ự ự t t t t ê ê ê ê n n n n v v v v à à à à lu lu lu lu ô ô ô ô n n n n tu tu tu tu â â â â n n n n th th th th ủ ủ ủ ủ M ộ t trong nh ữ ng v ấ n đề ch í nh trong b ấ t c ứ m ộ t d ự á n l ớ n n à o l à s ự xung độ t v ề t ê n. C á c l ớ p c ó th ể ph â n đ o ạ n t ê n. Do đó , c á c l ớ p kh á c nhau c ó th ể :  Đượ c g á n m ộ t thu ộ c t í nh v ớ i t ê n gi ố ng nhau  Ch ứ a c á c ph ươ ng th ứ c v ớ i t ê n gi ố ng nhau Th í d ụ , l ớ p Phillips v à l ớ p Normal c ó th ể c ù ng c ó ph ươ ng th ứ c t ê n screwdriver. N ó i chung, tr ướ c khi b ắ t đầ u m ộ t d ự á n l ớ n n à o, b ạ n n ê n c ó m ộ t tr ì nh t ự t ê n cho m ọ i th ứ , c ụ th ể l à c á ch b ạ n t á ch c á c bi ế n to à n c ụ c ra c á c bi ế n th ô ng th ườ ng, c á ch đị nh ngh ĩ a h à m trong th ư vi ệ n v.v. 1.3. 1.3. 1.3. 1.3. Nh Nh Nh Nh ó ó ó ó m m m m c c c c á á á á c c c c ý ý ý ý ni ni ni ni ệ ệ ệ ệ m m m m chung chung chung chung v v v v à à à à o o o o m m m m ộ ộ ộ ộ t t t t t t t t ậ ậ ậ ậ p p p p tin tin tin tin Nh ó m c á c h à m API t ươ ng t ự v à o chung m ộ t t ậ p tin c ũ ng gi ố ng nh ư nh ó m c á c ph ươ ng th ứ c t ươ ng t ự v à o m ộ t l ớ p. C ố g ắ ng t ưở ng t ượ ng m ỗ i t ậ p tin b ạ n t ạ o l à m ộ t l ớ p, m ỗ i h à m trong đó l à m ộ t ph ươ ng th ứ c. B ằ ng c á ch n à y, c á c h à m c ủ a b ạ n s ẽ c ó đị nh ngh ĩ a v à c ấ u tr ú c s á ng s ủ a . Th í d ụ , b ạ n c ó th ể mu ố n nh ó m m ọ i h à m li ê n quan đế n truy c ậ p CSDL v à o m ộ t t ậ p tin DB.php. 2. 2. 2. 2. H H H H Đ Đ Đ Đ T, T, T, T, gi gi gi gi ố ố ố ố ng ng ng ng m m m m ọ ọ ọ ọ i i i i th th th th ứ ứ ứ ứ , , , , t t t t ố ố ố ố t t t t khi khi khi khi c c c c ó ó ó ó đ đ đ đ i i i i ề ề ề ề u u u u độ độ độ độ Để t ô i l à m s á ng t ỏ m ộ t vi ệ c. T ô i kh ô ng ph ả i đ ang c ố bi ệ n h ộ để b ạ n t ừ b ỏ h ẳ n H Đ T trong PHP. Đú ng ra, t ô i ch ỉ đ ang c ố c ả nh b á o b ạ n đừ ng n ê n d ù ng PHP nh ư Java hay C++, n ơ i m à H Đ T c ó th ể d ù ng tho ả i m á i. H ã y c ẩ n th ậ n đá nh gi á l ợ i v à h ạ i tr ướ c khi b ạ n d ù ng m ộ t ti ế p c ậ n H Đ T v ớ i PHP. 10. 10. 10. 10. D D D D ù ù ù ù ng ng ng ng nh nh nh nh ầ ầ ầ ầ m m m m Bi Bi Bi Bi ể ể ể ể u u u u th th th th ứ ứ ứ ứ c c c c Ch Ch Ch Ch í í í í nh nh nh nh quy quy quy quy Bi ể u th ứ c ch í nh quy (Regular expressions) l à c ô ng c ụ m ạ nh để t ì m v à t ổ ch ứ c d ữ li ệ u, nh ư l à ki ể m đị nh đị a ch ỉ e-mail ho ặ c ki ể m tra m ộ t URL. Tuy nhi ê n, n ó ch ậ m h ơ n c á c c ô ng c ụ c ủ a PHP trong m ộ t s ố t á c v ụ đơ n gi ả n. Th í d ụ , n ế u b ạ n mu ố n vi ế t hoa to à n b ộ m ô t chu ỗ i, m ộ t l í nh m ớ i c ủ a PHP c ó th ể l à m nh ư sau: <?php $URL = "http://www.php.net" ; $fp = @ fopen ( $URL , "r" ); if (! $fp ) { die ( "Cannot open website $URL!" ); } while ( $line = @ fgets ( $fp , 1024 )) { $data .= $line ; } @ fclose ( $fp ) or warn ( "Cannot close website handle, $URL" ); $data = ereg_replace ( "[a-z]" , "[A-Z]" , $data ); print $data ; ?> Tuy nhi ê n, s ẽ ph í th ờ i gian khi b ạ n d ù ng h à m ereg_replace() (ch ậ m h ơ n) để l à m c ô ng vi ệ c m à strtoupper() (nhanh h ơ n) c ó th ể th ự c hi ệ n t ố t h ơ n. $data = strtoupper ( $data ); N ó i chung, b ạ n lu ô n c ố g ắ ng d ù ng c á c thay th ế đơ n gi ả n c ủ a bi ể u th ứ c ch í nh quy v ì n ó s ẽ l à m t ă ng kh á nhi ề u t ố c độ ch ươ ng tr ì nh. PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 22 22 22 22 Dormitory 204.B5 18:20 PM April 7, 2006 1. 1. 1. 1. C C C C á á á á c c c c h h h h à à à à m m m m c c c c ầ ầ ầ ầ n n n n bi bi bi bi ế ế ế ế t t t t C ó v à i h à m r ấ t thi ế t y ế u để ti ế t ki ệ m th ờ i gian thi h à nh ch ươ ng tr ì nh khi d ù ng thay cho bi ể u th ứ c ch í nh quy. D ướ i đâ y l à danh s á ch c á c h à m thi ế t y ế u đó : strtoupper(); strtolower(); ucfirst(); strtr(); str_replace(); trim(); explode(); implode(); substr(); strcmp() N ế u b ạ n thay th ế c á c bi ể u th ứ c ch í nh quy c ủ a b ạ n b ằ ng c á c h à m tr ê n, b ạ n c ó th ể tr ô ng đợ i m ộ t s ự nh ả y v ọ t v ề hi ệ u n ă ng, đặ c bi ệ t khi b ạ n l à m vi ệ c v ớ i c á c chu ỗ i l ớ n. 9. 9. 9. 9. L L L L ậ ậ ậ ậ p p p p tr tr tr tr ì ì ì ì nh nh nh nh PHP PHP PHP PHP nh nh nh nh ư ư ư ư c c c c á á á á c c c c ng ng ng ng ô ô ô ô n n n n ng ng ng ng ữ ữ ữ ữ kh kh kh kh á á á á c c c c Nhi ề u ng ườ i b ắ t đầ u PHP sau khi đã thu ầ n th ụ c m ộ t ng ô n ng ữ kh á c nh ư Perl, C, Java hay ASP . L à m nh ư v ậ y, h ọ c ũ ng mang theo nh ữ ng m ô h ì nh m à c ó th ể kh ô ng lu ô n lu ô n đượ c d ù ng b ở i PHP. Kh ô ng may thay, v à i c á nh â n trong s ố h à y kh ô ng ch ị u b ỏ th ờ i gian để h ọ c c á ch l ậ p tr ì nh PHP theo c á ch ph ù h ợ p v ớ i PHP. Thay v à o đó , h ọ th í ch PHP ho ạ t độ ng v ớ i c á c í t kh á i ni ệ m m ớ i c à ng t ố t Khi b ạ n l ậ p tr ì nh PHP nh ư l à trong c á c ng ô n ng ữ kh á c, n ó th ườ ng d ẫ n đế n vi ệ c l à m ch ươ ng tr ì nh ch ậ m h ơ n v à kh ó b ả o tr ì m ã . B ạ n s ẽ th ườ ng th ấ y h ọ ph ạ m v à o m ộ t trong c á c l ỗ i sau: Perl Perl Perl Perl "1 "1 "1 "1 d d d d ò ò ò ò ng" ng" ng" ng" PHP l à m ộ t ng ô n ng ữ kh ô ng th ự c s ự t ố i ư u cho c á ch ti ế p c ậ n 1 d ò ng khi vi ế t ch ươ ng tr ì nh . Thay v à o đó , n ó m ở r ộ ng c á c t ậ p h à m ph ứ c t ạ p v à c á c bi ể u th ứ c ch í nh quy theo m ộ t đị nh d ạ ng c ó c ấ p b ậ c h ơ n M M M M ã ã ã ã l l l l ệ ệ ệ ệ nh nh nh nh Perl Perl Perl Perl while (<STDIN>) { @_ = split /:/; $quotes{shift} = shift; } print map { "$_: ", reverse split //,$quotes->{$_},"\n";} keys %quotes; M M M M ã ã ã ã l l l l ệ ệ ệ ệ nh nh nh nh PHP) PHP) PHP) PHP) <?php $fp = @ fopen ( 'php://stdin' , 'r' ); if (! $fp ) { die ( 'Cannot open STDIN' ); } while ( $line = @ fgets ( $fp , 1024 )) { list( $name , $quote ) = explode ( ':' , $line ); $quotes [ $name ] = $quote ; } foreach ( $quotes as $name => $quote ) { print "$name: " ; print implode ( " " , array_reverse ( preg_split ( '//' , $quote ))); print "\n" ; } @ fclose ( $fp ); ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 9 9 9 9 Dormitory 204.B5 18:20 PM April 7, 2006 Đâ y l à m ộ t th ó i quen x ấ u v ì  N ó kh ô ng đượ c d ù ng r ộ ng r ã i, cho n ê n nhi ề u ng ườ i h ọ c s ẽ b ị l ẫ n l ộ n gi ữ a hai c ú ph á p  N ó kh ô ng t ươ ng th í ch v ớ i ng ô n ng ữ kh á c, ngh ĩ a l à n ó tr ở n ê n kh ó đọ c đố i v ớ i nh ữ ng ng ườ i trong giai đ o ạ n qu á độ (m ớ i chuy ể n t ừ m ộ t ng ô n ng ữ n à o đó sang PHP)  Quan tr ọ ng nh ấ t, l à m ộ t ng à y n à o đó t í nh n ă ng n à y s ẽ b ị xo á x ổ , b ắ t bu ộ c b ạ n ph ả i vi ế t l ạ i to à n b ộ m ã c ó d ù ng n ó . D ấ u ngo ặ c nh ọ n lu ô n lu ô n l à m ộ t ph ầ n c ủ a ng ô n ng ữ PHP. Ở tr ê n ch ỉ l à m ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i. N ó c ò n nhi ề u n ữ a. Nh ư m ộ t quy t ắ c, b ạ n n ê n theo nh ữ ng c á c vi ế t trong t à i li ệ u PHP. H ầ u h ế t n ó đượ c c ậ p nh ậ t m ớ i. N ó c ũ ng d ù ng c á c h à m m ớ i nh ấ t c ủ a PHP trong th í d ụ c ủ a m ì nh. N ê n th ườ ng xuy ê n ki ể m tra t à i li ệ u khi b ạ n c ó ý mu ố n m ở r ộ ng t í nh n ă ng n à o đó c ủ a PHP. Theo c á ch n à y, b ạ n s ẽ kh ô ng ph ả i vi ế t l ạ i c á c h à m c ó s ẵ n. T T T T ổ ổ ổ ổ ng ng ng ng k k k k ế ế ế ế t t t t Trong b à i n à y b ạ n đã đ i qua 7 tr ê n t ổ ng s ố 21 l ỗ i m à l ậ p tr ì nh vi ê n PHP m ắ c ph ả i. Nh ữ ng l ỗ i gi á o khoa n à y bao g ồ m:     S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai h h h h à à à à m m m m printf() printf() printf() printf()     Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a     Thi Thi Thi Thi ế ế ế ế u u u u t t t t à à à à i i i i li li li li ệ ệ ệ ệ u u u u trong trong trong trong m m m m ã ã ã ã ngu ngu ngu ngu ồ ồ ồ ồ n n n n     D D D D ù ù ù ù ng ng ng ng qu qu qu qu á á á á nhi nhi nhi nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n n n n t t t t ạ ạ ạ ạ m m m m     Vi Vi Vi Vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n     Kh Kh Kh Kh ô ô ô ô ng ng ng ng t t t t á á á á ch ch ch ch bi bi bi bi ệ ệ ệ ệ t t t t ph ph ph ph ầ ầ ầ ầ n n n n kh kh kh kh á á á á ch/ch ch/ch ch/ch ch/ch ủ ủ ủ ủ     D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i // Bad/Outdated Practice while ( 1 ): print "5" ; if ( $idx ++ == 5 ): break; endif; endwhile; // Better Practice // (the code could be optimized though) while ( 1 ) { print "5" ; if ( $idx ++ == 5 ) { break; } } ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 19 19 19 19 Dormitory 204.B5 18:20 PM April 7, 2006 Trong th í d ụ d ướ i, set_error_handler() đượ c d ù ng để ch ỉ đị nh h à m error_handler() l à b ộ qu ả n l í l ỗ i m ặ c đị nh. Khi m ộ t l ỗ i x ả y ra, error_handler() đượ c g ọ i v à h à m PHP error_log() đượ c d ù ng để ghi l ỗ i v à o t ậ p tin error_file. N ế u m à l ỗ i thu ộ c lo ạ i E_ERROR, ch ú ng ta s ẽ tho á t ch ươ ng tr ì nh v à in th ô ng b á o l ỗ i. <?php // void error_handler(string type, string message, string file, int line) // Custom error handler, set by the set_error_handler() // function. function error_handler ( $type , $message , $file = __FILE__ , $line = __LINE__ ) { error_log ( "$message, $file, $line" , 3 , 'error_file' ); if ( $type & E_ERROR ) { print 'An error occurred, it has been logged and it will be addressed.' ; exit; } } set_error_handler ( 'error_handler' ); ?> 11. 11. 11. 11. L L L L ạ ạ ạ ạ m m m m d d d d ụ ụ ụ ụ ng ng ng ng H H H H ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng (H (H (H (H Đ Đ Đ Đ T) T) T) T) M ô h ì nh h ướ ng đố i t ượ ng l à m ộ t kh á i ni ệ m tuy ệ t v ờ i. N ó c ó r ấ t nhi ề u l ợ i đ i ể m, m à đá ng ch ú ý nh ấ t l à kh ả n ă ng d ù ng l ạ i m ã d ễ d à ng. Tuy nhi ê , theo nh ư ch ú ng ta đượ c hi ể u: PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T. M ặ c d ù PHP c ó m ộ t s ự h ỗ tr ợ đầ y đủ v ề H Đ T, n ó kh ô ng hi ệ u qu ả l ẫ n kh ô ng kh ô n ngoan n ế u d ù ng t í nh n ă ng H Đ T c ủ a n ó khi b ạ n c ó c á c h à m kh á c để đạ t đượ c c ù ng k ế t qu ả . L í do l à s ự h ỗ tr ợ H Đ T c ủ a PHP kh ô ng đượ c ph á t tri ể n m ạ nh. Trong khi c ó h ầ u h ế t c á c ph ầ n t ử ch í nh y ế u, PHP v ẫ n c ò n thi ế u v à i t í nh n ă ng cao c ấ p (nh ư c á c kh á i ni ệ m protected, private) m à m ộ t ng ô n ng ữ H Đ T th ự c s ự (th í d ụ nh ư C++ , Java) ph ả i c ó . C á c m ã h ỗ tr ợ H Đ T c ủ a PHP kh ô ng đượ c tinh ch ỉ nh v à c ũ ng kh ô ng hi ệ u qu ả . Ngh ĩ a l à n ế u b ạ n d ù ng m ô h ì nh H Đ T trong PHP, b ạ n c ó th ể l à m ch ậ m ch ươ ng tr ì nh đá ng k ể . N ó i chung, m ộ t ứ ng d ụ ng d ù ng H Đ T s ẽ ch ậ m đ i, c ũ ng nh ư l à b ạ n d ù ng eval() th ì s ẽ ch ậ m h ơ n l à d ù ng m ã b ì nh th ườ ng. Để minh ho ạ đầ y đủ h ơ n vi ệ c H Đ T c ó g ì đó kh ô ng t ố t, t ô i đã t ừ ng ph ả i d ù ng nh ữ ng t í nh n ă ng v à kh á i ni ệ m cao c ấ p c ủ a PHP, m ộ t v à i trong s ố đó th ậ m ch í ch ư a c ó t à i li ệ u ch ỉ d ẫ n. 1. 1. 1. 1. Ch Ch Ch Ch ú ú ú ú ng ng ng ng ta ta ta ta c c c c ó ó ó ó th th th th ể ể ể ể l l l l à à à à m m m m g g g g ì ì ì ì m m m m à à à à kh kh kh kh ô ô ô ô ng ng ng ng c c c c ầ ầ ầ ầ n n n n H H H H Đ Đ Đ Đ T? T? T? T? N ế u b ạ n chuy ể n sang PHP t ừ c á c ng ô n ng ữ nh ư Java hay C++ (n ơ i b ạ n b ạ n th ự c s ự kh ô ng th ể t ạ o c á c ch ươ ng tr ì nh ph ứ c t ạ p m à kh ô ng d ù ng c á c t í nh n ă ng H Đ T), vi ệ c b ỏ qua kh ả n ă ng H Đ T c ủ a PHP c ó th ể s ẽ kh ó kh ă n. D ù sao, t ô i v ẫ n c ó th ể tr ấ n an b ạ n l à c á c ch ươ ng t r ì nh r ấ t m ạ nh c ó th ể đượ c vi ế t m à kh ô ng d ù ng m ấ t c ứ kh á i ni ệ m v à m ô h ì nh H Đ T n à o (PHP đượ c vi ế t b ằ ng C, ng ô n ng ữ kh ô ng h ỗ tr ợ H Đ T). Để d à nh cho nh ữ ng ai kh ô ng quen v ớ i k ĩ n ă ng phi-H Đ T, d ướ i đâ y l à v à i k ĩ thu ậ t để t ạ o ch ươ ng tr ì nh c ó t í nh k ế t d í nh v à d ễ m ở r ộ ng m à kh ô ng d ù ng m ô h ì nh H Đ T: PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 23 23 23 23 Dormitory 204.B5 18:20 PM April 7, 2006 Kh Kh Kh Kh ô ô ô ô ng ng ng ng d d d d ù ù ù ù ng ng ng ng c c c c á á á á c c c c h h h h à à à à m m m m s s s s ẵ ẵ ẵ ẵ n n n n c c c c ó ó ó ó Nhi ề u l ậ p tr ì nh vi ê n PHP c ó n ề n t ả ng C c ó v ẻ kh ô ng nh ậ n ra r ằ ng PHP cung c ấ p nhi ề u h à m s ẵ n c ó gi ú p thay th ế c á c đ o ạ n m ã d à i. N ế u b ạ n đế n v ớ i PHP t ừ C, t ô i khuy ê n b ạ n n ê n đọ c qua t à i li ệ u tr ướ c khi vi ế t m ộ t kh ố i l ệ nh để xem PHP c ó s ẵ n h à m n à o gi ú p cu ộ c s ố n g c ủ a b ạ n d ễ d à ng h ơ n kh ô ng. Đổ Đổ Đổ Đổ i i i i t t t t ê ê ê ê n n n n c c c c á á á á c c c c h h h h à à à à m m m m PHP PHP PHP PHP đã đã đã đã c c c c ó ó ó ó T ô i đã th ấ y ng ườ i ta đổ i t ê n c á c h à m đã c ó c ủ a PHP ch ỉ để gi ú p h ọ d ễ nh ớ h ơ n. Đ i ề u n à y kh ô ng ch ỉ l à m ch ậ m ch ươ ng tr ì nh, m à l à m cho đ o ạ n m ã kh ó đọ c h ơ n. D D D D ù ù ù ù ng ng ng ng h h h h ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng qu qu qu qu á á á á m m m m ứ ứ ứ ứ c c c c PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T, d ù n ó cung c ấ p c á c t í nh n ă ng H Đ T. B ạ n c ầ n lu ô n nh ậ n th ứ c r ằ ng H Đ T trong PHP s ẽ l à m ch ậ m đá ng k ể ch ươ ng tr ì nh. 1. 1. 1. 1. L L L L ấ ấ ấ ấ y y y y th th th th ô ô ô ô ng ng ng ng tin tin tin tin ở ở ở ở đâ đâ đâ đâ u? u? u? u? May m ắ n l à c ó r ấ t nhi ề u th ô ng tin v ề vi ệ c l à m th ế n à o để l ậ p tr ì nh PHP. V à i n ơ i t ố t nh ấ t l à  Zend.com b ả n g ố c c ủ a b à i vi ế t n à y l à ở đó  Professional PHP m ộ t trong nh ữ ng s á ch to à n di ệ n t ố t nh ấ t v ề PHP, t ố t cho c ả l ậ p tr ì nh vi ê n v à kh ô ng-l ậ p tr ì nh vi ê n.  Web Application Development with PHP M ộ t quy ể n s á ch tuy ệ t v ờ i d ạ y b ạ n c ả c á ch ph á t tri ể n web l ẫ n v à i t í nh n ă ng cao c ấ p c ủ a PHP. Bao g ồ m c á c t à i li ệ u ch í nh th ứ c v ề Zend API.  The PHP Developer's Cookbook M ộ t quy ể n s á ch thi ê n v ề l ờ i gi ả i đá p cho c á c v ấ n đề g ặ p ph ả i trong PHP (do tui - Sterling Hughes - vi ế t c ù ng Andrei Zmievski) 8. 8. 8. 8. Kh Kh Kh Kh ô ô ô ô ng ng ng ng nh nh nh nh ậ ậ ậ ậ n n n n th th th th ứ ứ ứ ứ c c c c đầ đầ đầ đầ y y y y đủ đủ đủ đủ v v v v ề ề ề ề b b b b ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t Nh ữ ng ng ườ i d ù ng kh ô ng ph ả i l ú c n à o c ũ ng l à m vi ệ c v ớ i h ệ th ố ng c ủ a ch ú ng ta. V ớ i t ư c á ch l à l ậ p tr ì nh vi ê n, tr á ch nhi ệ m c ủ a ch ú ng ta l à thi ế t k ế m ộ t h ệ th ố ng an to à n, d ễ ch ị u c ó th ể l à m vi ệ c đượ c chung v ớ i l ỗ i c ủ a ng ườ i d ù ng. Khi thi ế t k ế h ệ th ố ng, b ạ n ph ả i đặ t m ì nh v à o v ị tr í ng ườ i d ù ng. Xem x é t nh ữ ng ch ỗ h ọ c ó th ể g ặ p l ỗ i v à t ì m ki ế m nh ữ ng l ỗ h ổ ng b ả o m ậ t ti ề m t à ng. R ồ i b ạ n thi ế t k ế ch ươ ng tr ì nh c ó kh ả n ă ng s ử a ch ữ a l ỗ i n à y v à l ấ p c á c l ỗ h ổ ng b ả o m ậ t. M ộ t đ i ề u kh á c c ũ ng quan tr ọ ng l à : d ù x ả y ra h ư h ỏ ng hay h ệ th ố ng b ị t ấ n c ô ng l à do l ỗ i c ủ a ng ườ i d ù ng, ch í nh b ạ n l à ng ườ i ch ị u tr á ch nhi ệ m n ế u b ạ n đã vi ế t ch ươ ng tr ì nh c ó nhi ề u l ỗ i hay thi ế u nh ữ ng b ướ c ki ể m tra c ầ n thi ế t d ẫ n đế n h ỏ ng d ữ li ệ u. Th í d ụ , t ô i đã th ấ y nhi ề u ch ươ ng tr ì nh kh ô ng d ù ng h à m đã c ó c ủ a PHP mail() v ố n an to à n m à l ạ i đ i d ù ng sendmail th ô ng qua popen() . N ó c ó th ể d ẫ n đế n nhi ề u l ỗ h ổ ng b ả o m ậ t (th í d ụ nh ư /etc/passwd đượ c g ử i đế n ng ườ i d ù ng cu ố i). C ó v à i n ơ i th ườ ng x ả y ra c á c s ự c ố v ề b ả o m ậ t, ho ặ c ti ề m n ă ng g â y ra h ỏ ng d ữ li ệ u r ấ t l ớ n:  Th ự c hi ệ n l ờ i g ọ i h ệ th ố ng. T ô i kh ô ng c ó c á ch n à o di ễ n t ả đượ c m ứ c độ nguy hi ể m c ủ a v ấ n đề n à y. Lu ô n đả m b ả o r ằ ng m ọ i d ữ li ệ u ng ườ i d ù ng đư a v à o l à an to à n tr ướ c khi chuy ể n n ó cho m ộ t l ờ i g ọ i h ệ th ố ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN NG NG NG NG ƯỜ ƯỜ ƯỜ ƯỜ I I I I D D D D Ù Ù Ù Ù NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T C C C C Á Á Á Á CH CH CH CH M M M M Ù Ù Ù Ù QU QU QU QU Á Á Á Á NG NG NG NG KHI KHI KHI KHI ĐƯ ĐƯ ĐƯ ĐƯ A A A A D D D D Ữ Ữ Ữ Ữ LI LI LI LI Ệ Ệ Ệ Ệ U U U U C C C C Ủ Ủ Ủ Ủ A A A A H H H H Ọ Ọ Ọ Ọ V V V V À À À À O O O O L L L L Ờ Ờ Ờ Ờ I I I I G G G G Ọ Ọ Ọ Ọ I I I I H H H H Ệ Ệ Ệ Ệ TH TH TH TH Ố Ố Ố Ố NG NG NG NG M M M M À À À À KH KH KH KH Ô Ô Ô Ô NG NG NG NG KI KI KI KI Ể Ể Ể Ể M M M M TRA TRA TRA TRA TR TR TR TR ƯỚ ƯỚ ƯỚ ƯỚ C C C C .  Khi đă ng k í ng ườ i d ù ng. N ế u b ạ n tr ô ng mong c ó k ế t qu ả ch í nh x á c, lu ô n ki ể m tra v à đả m b ả o b ả n đă ng k í đượ c ki ể m tra nh ữ ng ch ỗ c ầ n thi ế t. Tr ướ c ti ê n, c ó nhi ề u c á ch để ki ể m tra m ộ t đị a ch ỉ e-mail h ợ p l ệ . H ơ n n ữ a, b ạ n n ê n ki ể m tra tu ổ i c ủ a ng ườ i d ù ng c ó n ằ m trong ph ạ m vi th í ch h ợ p kh ô ng. V ớ i m ộ t s ự suy r ộ ng, b ạ n c ó PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 14 14 14 14 Dormitory 204.B5 18:20 PM April 7, 2006 1.4. 1.4. 1.4. 1.4. Khi Khi Khi Khi m m m m à à à à DBMS DBMS DBMS DBMS c c c c ủ ủ ủ ủ a a a a b b b b ạ ạ ạ ạ n n n n kh kh kh kh ô ô ô ô ng ng ng ng h h h h ỗ ỗ ỗ ỗ tr tr tr tr ợ ợ ợ ợ sql_num_row() sql_num_row() sql_num_row() sql_num_row() V à i DBMS c ó th ể kh ô ng h ỗ tr ợ h à m sql_num_row(). T ô i xin chia s ẻ v ớ i b ạ n n ế u DBMS c ủ a b ạ n l à m ộ t trong s ố đó . B ạ n s ẽ ph ả i t ì m trong k ế t qu ả r ỗ ng b ằ ng c á ch l ấ y d ò ng. Tuy nhi ê n, trong tr ườ ng h ợ p n à y, n ó n ê n d ù ng m ộ t bi ế n boolean nh ư sau: <?php $timthay = false ; while ( $mautin = sql_fetch_array ( $truyvan )){ $timthay = true ; } if (! $timthay ){ print "Loi!" ; } ?> 1.5. 1.5. 1.5. 1.5. L L L L ấ ấ ấ ấ y y y y k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả : : : : h h h h ã ã ã ã y y y y ch ch ch ch ọ ọ ọ ọ n n n n c c c c á á á á ch ch ch ch c c c c ó ó ó ó í í í í ch ch ch ch V ấ n đề th ứ hai trong đ o ạ n m ã n à y l à n ó d ù ng sql_fetch_row() để l ấ y t ậ p k ế t qu ả . H à m sql_fetch_row() ch ỉ tr ả v ề m ả ng đá nh ch ỉ s ố , trong khi đó sql_fetch_array() tr ả v ề m ả ng đá nh ch ỉ s ố v à m ả ng d ù ng chu ỗ i. $mautin = sql_fetch_array ( $truyvan ); print $mautin [ 1 ]; // Cot thu 2 print $mautin [ name ]; // Ten cot Ch Ch Ch Ch ú ú ú ú ý ý ý ý : : : : C ó nhi ề u quy ướ c kh á c nhau v ề vi ệ c d ù ng d ấ u nh á y khi th ê m m ộ t đố i s ố ki ể u chu ỗ i. Trong th í d ụ v ề t ê n c ộ t ở tr ê n, v à su ố t b à i vi ế t n à y, n ó s ẽ đượ c b ỏ . T ừ quan đ i ể m c ủ a nh à ph á t tri ể n, h à m n à o c ó l ợ i h ơ n? M ả ng d ù ng chu ỗ i gi ú p cho ng ườ i đọ c hi ể u đượ c b ạ n đ ang l ấ y c á i g ì ch ỉ th ô ng qua vi ệ c đọ c m ã , nh ư th í d ụ đú ng d ướ i đâ y: <?php if ( sql_num_rows ( $truyvan )<= 0 ) { print "Mot loi da xay ra: Khong co mau tin nao!" ; exit; } while ( $mautin = sql_fetch_array ( $truyvan )) { print "$mautin[name]: $mautin[phone_number]\n<br>\n" ; } ?> 1.6. 1.6. 1.6. 1.6. Khi Khi Khi Khi n n n n à à à à o o o o sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) n n n n ê ê ê ê n n n n đượ đượ đượ đượ c c c c d d d d ù ù ù ù ng ng ng ng T ô i kh ô ng th ự c s ự l à fan c ủ a the sql_fetch_row(). Tuy nhi ê n, c ó m ộ t t ì nh hu ố ng m à d ù ng n ó kh ô ng gi ả m kh ả n ă ng d ễ đọ c: khi ng ườ i d ù ng đị nh ngh ĩ a c â u truy v ấ n. C á c th í d ụ cho đế n l ú c n à y đề u đề c ậ p đế n nh ữ ng c â u truy v ấ n đượ c bi ế t tr ướ c. Đô i khi b ạ n để cho ng ườ i d ù ng t ự đị nh ngh ĩ a c â u truy v ấ n. Tr ườ ng h ợ p n à y b ạ n s ẽ kh ô ng bi ế t c á c c ộ t trong k ế t qu ả . Do đó , d ù ng h à m sql_fetch_row() k è m v ớ i count() s ẽ x ử l í hi ệ u qu ả c á c c ộ t trong m ộ t h à ng: <?php for ( $i = 0 ; $i < count ( $mautin ); $i ++){ print "Column" . ( $i + 1 ). $mautin [ $i ]. "\n<BR>\n" ; } ?> 2. 2. 2. 2. D D D D ù ù ù ù ng ng ng ng sai sai sai sai SQL: SQL: SQL: SQL: kh kh kh kh ô ô ô ô ng ng ng ng l l l l ấ ấ ấ ấ y y y y nh nh nh nh ữ ữ ữ ữ ng ng ng ng g g g g ì ì ì ì b b b b ạ ạ ạ ạ n n n n c c c c ầ ầ ầ ầ n n n n PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 24 24 24 24 Dormitory 204.B5 18:20 PM April 7, 2006 th ể kh ẳ ng đị nh kh á ch ắ c ch ắ n r ằ ng kh ô ng c ó m ộ t ng ườ i 200 tu ổ i n à o c ó kh ả n ă ng d ù ng m á y vi t í nh.  Khi ch ấ p nh ậ n th ẻ t í n d ụ ng. M ộ t s ố l ậ p tr ì nh vi ê n ch ỉ d ù ng nh ữ ng thu ậ t to á n đơ n gi ả n m à c ó th ể d ễ d à ng b ị đá nh l ừ a khi th ự c hi ệ n ki ế m tra th ẻ t í n d ụ ng. Ch ỉ ch ấ p nh ậ n th ẻ c ủ a c á c c ô ng ty l ớ n để ki ể m tra t í nh h ợ p l ệ c ủ a s ố th ẻ tr ướ c khi ch ấ p nh ậ n th ẻ c ủ a ng ườ i d ù ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN T T T T ƯỞ ƯỞ ƯỞ ƯỞ NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T THU THU THU THU Ậ Ậ Ậ Ậ T T T T TO TO TO TO Á Á Á Á N N N N 1. 1. 1. 1. B B B B ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t c c c c ủ ủ ủ ủ a a a a l l l l ờ ờ ờ ờ i i i i g g g g ọ ọ ọ ọ i i i i h h h h ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng M ỗ i khi b ạ n đư a d ữ li ệ u c ủ a ng ườ i d ù ng v à o l ờ i g ọ i h ệ th ố ng, b ạ n c ầ n t ỉ nh t á o ki ể m tra d ữ li ệ u đó . Đả m b ả o r ằ ng kh ô ng c ó g ì nguy hi ể m n ằ m trong d ữ li ệ u đó c ó th ể l ừ a ph ỉ nh h ệ th ố ng th ự c hi ệ n nh ữ ng l ệ nh kh ô ng mong mu ố n. PHP cung c ấ p m ộ t h à m l à m đ i ề u đó : EscapeShellCmd() B ấ t c ứ khi n à o b ạ n chuy ể n m ộ t l ệ nh c ó ch ứ a d ữ li ệ u nh ạ y c ả m, tr ố n tho á t d ữ li ệ u đó b ằ ng h à m EscapeShellCmd EscapeShellCmd EscapeShellCmd EscapeShellCmd (): Tr ố n tho á t (escaping) d ữ li ệ u c ó ngh ĩ a l à th ê m d ấ u s ổ ng ượ c (backslash \) tr ướ c k í t ự c ó th ể l ừ a ph ì nh h ệ th ố ng (ch í nh x á c l à c á c k í t ự #&;?'\"|*?~<>^()[]{}$\\\x0A\xFF ). M M M M ã ã ã ã HTML HTML HTML HTML < html > < head > < title >Name Lookup< /title > < /head > < body > < h1 >Name Lookup< /h1 > <?php if ($name) { system (EscapeShellCmd ("lookup $name")); print " nn"; } ?> < form action =" <[color=blue]?php print $PHP_SELF; ?>[/color] " method=" GET "> Enter a name to lookup: < input type =" text " name=" name "> < input type =" submit " value=" Lookup Name "> < /form > < /body > < /html > D ù EscapeShellCmd() l à m ộ t h à m t ố t để ki ể m tra l ệ nh, b ạ n v ẫ n n ê n th ử v à th ự c hi ệ n c á c ki ể m tra đặ c th ù ph ụ thu ộ c v à o lo ạ i d ữ li ệ u. H à m EscapeShellCmd() s ẽ kh ô ng ki ể m tra t í nh đú ng đắ n c ủ a d ữ li ệ u đượ c đệ tr ì nh, n ó s ẽ ch ỉ ng ă n c ả n ng ườ i d ù ng l à m c á c vi ệ c k h ô ng đượ c ph é p. 1.1. 1.1. 1.1. 1.1. Đ Đ Đ Đ i i i i xa xa xa xa h h h h ơ ơ ơ ơ n n n n m m m m ộ ộ ộ ộ t t t t b b b b ướ ướ ướ ướ c c c c Nh ư m ộ t quy lu ậ t, n ê n ki ể m tra c á c k í t ự đượ c ph é p h ơ n l à ki ể m c á c k í t ự kh ô ng đượ c ph é p . Th í d ụ , đả m b ả o r ằ ng $name ch ỉ ch ứ a c á c k í t ự ch ữ v à s ố (alphanumeric characters). B ằ ng c á ch n à y, r ấ t kh ó để khai th á c l ỗ h ổ ng trong h ệ th ố ng c ủ a b ạ n. 2. 2. 2. 2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra đị đị đị đị a a a a ch ch ch ch ỉ ỉ ỉ ỉ e-mail e-mail e-mail e-mail M ộ t trong nh ữ ng h ì nh th ứ c ki ể m tra ph ổ bi ế n nh ấ t l à xem m ộ t đị a ch ỉ e-mail c ó h ợ p l ệ kh ô ng. M ấ y tay m ớ i v à o ngh ề s ẽ ch ỉ d ù ng c á c bi ể u th ứ c ch í nh quy (m à h ọ l ượ m đượ c trong PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 5 5 5 5 Dormitory 204.B5 18:20 PM April 7, 2006 T ạ i sao ph ả i d ù ng bi ế n trung gian? N ó kh ô ng c ầ n thi ế t R ủ i thay, c ó v ẻ nh ư r ấ t nhi ề u ng ườ i kh ó b ỏ đượ c th ó i quen x ấ u n à y. Bi ế n t ạ m l à m ch ậ m th ờ i gian thi h à nh ch ươ ng t ì nh c ủ a b ạ n. T ố t h ơ n l à n ê n b ỏ qua đó v à g ộ p c á c l ờ i g ọ i h à m v ớ i nhau. Nh ữ ng ng ườ i d ù ng bi ế n t ạ m th ườ ng l à m ch ươ ng c ủ a h ọ ch ạ y ch ậ m đế n 25%. M ộ t l í do kh á c để tr á nh c ó qu á nhi ề u bi ế n t ạ m l à v ì tr ô ng n ó kh ô ng đượ c đẹ p m ắ t. Trong hai th í d ụ tr ê n, th í d ụ n à o s ú c t í ch h ơ n? Th í d ụ n à o l à m con m ắ t d ễ ch ị u h ơ n? D ù ng qu á nhi ề u bi ế n t ạ m c ó th ể d ẫ n đế n m ã ch ươ ng tr ì nh kh ó đọ c v à kh ô ng s ú c t í ch. 1. 1. 1. 1. L L L L ợ ợ ợ ợ i i i i đ đ đ đ i i i i ể ể ể ể m m m m c c c c ủ ủ ủ ủ a a a a d d d d ù ù ù ù ng ng ng ng bi bi bi bi ế ế ế ế n n n n t t t t ạ ạ ạ ạ m m m m C á c bi ế n t ạ m c ó l ợ i trong vi ệ c thay th ế c á c h à m hay bi ể u th ứ c d à i l ê th ê . N ó c ó vai tr ò nh ư b í danh gi ả . Đ i ề u n à y đặ c bi ệ t đú ng khi b ạ n d ù ng m ộ t h à m hay bi ể u th ứ c nhi ề u l ầ n. Xem x é t th í d ụ đâ y, n ó kh ô ng d ù ng nhi ề u bi ế n h ơ n m ứ c t ố i thi ể u N ộ i dung trong h à m implode() d à i v à do đó kh ó đọ c. D ù ng m ộ t ho ặ c nhi ề u bi ế n t ạ m c ó th ể gi ú p ch ú ng ta: 2. 2. 2. 2. C C C C á á á á c c c c lu lu lu lu ậ ậ ậ ậ t t t t chung chung chung chung c c c c ủ ủ ủ ủ a a a a ng ng ng ng ó ó ó ó n n n n tay tay tay tay c c c c á á á á i i i i Khi quy ế t đị nh c ó d ù ng bi ế n t ạ m ho ặ c kh ô ng, b ạ n n ê n suy ngh ĩ v ề 2 c â u h ỏ i:  B ạ n c ó d ù ng bi ế n đó í t nh ấ t hai l ầ n?  T í nh đọ c đượ c c ủ a m ã c ó t ă ng đá ng k ể kh ô ng? N ế u í t nh ấ t m ộ t c â u tr ả l ờ i l à c ó , th ì n ê n d ù ng bi ế n t ạ m. C ò n kh ô ng, v ứ t n ó đ i v à t ổ h ợ p c á c h à m l ạ i (n ế u c ầ n). 17. 17. 17. 17. Vi Vi Vi Vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n M ộ t s ố n ơ i ph ổ bi ế n m ã ngu ồ n c á c script PHP ch ủ tr ươ ng đổ i t ê n c á c h à m s ẵ n c ó để t ạ o s ự d ễ d à ng cho c á c l ậ p tr ì nh vi ê n chuy ể n t ừ VB sang. Th í d ụ : <? $tmp = date ( "F d, h:i a" ); /* ie January 3, 2:30 pm */ print $tmp ; ?> <? print date ( "F d, h:i a" ); ?> // string reverse_characters(string str) // Reverse all of the characters in a string. function reverse_characters ( $str ) { return implode ( "" , array_reverse ( preg_split ( "//" , $str ))); } // string reverse_characters(string str) // Reverse all of the characters in a string. function reverse_characters ( $str ) { $characters = preg_split ( "//" , $str ); $characters = array_reverse ( $characters ); return implode ( "" , $characters ); } <? function len ( $str ) { PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 1 1 1 1 Dormitory 204.B5 18:20 PM April 7, 2006 à i vi ế t n à y d à nh cho nh ữ ng l ậ p tr ì nh vi ê n PHP quan t â m đế n vi ệ c tr á nh nh ữ ng l ỗ i th ườ ng g ặ p khi s ử d ụ ng PHP. Ng ườ i đọ c ph ả i bi ế t c á c c ú ph á p c ủ a PHP, v à n ê n bi ế t c ô ng d ụ ng c ủ a c á c h à m trong PHP. M ộ t trong nh ữ ng đ i ể m m ạ nh nh ấ t c ủ a PHP v ô t ì nh tr ở th à nh m ộ t trong nh ữ ng đ i ể m y ế u nh ấ t c ủ a n ó : t t t t í í í í nh nh nh nh d d d d ễ ễ ễ ễ s s s s ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng . Nhi ế u ng ườ i ch ọ n PHP v ì t í nh d ễ s ử d ụ ng, đã kh ô ng nh ậ n ra r ằ ng: s ử d ụ ng đú ng PHP PHP PHP PHP c c c c ò ò ò ò n n n n kh kh kh kh ó ó ó ó h h h h ơ ơ ơ ơ n n n n c c c c á á á á c c c c ng ng ng ng ô ô ô ô n n n n ng ng ng ng ữ ữ ữ ữ kh kh kh kh á á á á c c c c . Trong lo ạ t b à i n à y s ẽ l ầ n l ượ t n ê u ra 21 l ỗ i, t ừ nh ữ ng sai l ầ m gi á o khoa (l à m script tr ở n ê n ch ậ m v à kh ó qu ả n l í ) đế n nh ữ ng sai l ầ m ch ế t ng ườ i - c ó th ể xem l à ngu ồ n g ố c c ủ a nh ữ ng sai l ầ m s ơ đẳ ng. PH Ầ N 1: 7 L Ỗ I GI Á O KHOA    21. 21. 21. 21. S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng printf() printf() printf() printf() kh kh kh kh ô ô ô ô ng ng ng ng th th th th í í í í ch ch ch ch h h h h ợ ợ ợ ợ p p p p H à m printf() d ù ng để in d ữ li ệ u c ó đị nh d ạ ng N ó c ó th ể đượ c d ù ng, th í d ụ , khi b ạ n m ộ t in m ộ t s ố ki ể u double v ớ i 2 s ố l ẻ , ho ặ c trong b ấ t k ì t ì nh hu ố ng n à o b ạ n mu ố n thay đổ i đị nh d ạ ng tr ướ c khi in. Th í d ụ d ướ i đâ y minh ho ạ c á ch d ù ng đú ng c ủ a printf(): đị nh d ạ ng s ố Pi v ớ i độ ch í nh x á c theo ý mu ố n M M M M ã ã ã ã l l l l ệ ệ ệ ệ nh nh nh nh (PHP) <? /* The three faces of Π */ printf ( "Pi is: %.2f\n<br>\n" , M_PI ); printf ( "Pi is also: %.3f\n<br>\n" , M_PI ); printf ( "Pi is also: %.4f\n<br>\n" , M_PI ); ?> Ch Ch Ch Ch ú ú ú ú ý ý ý ý . . . . T ô i đã t ừ ng g ặ p nh ữ ng ng ườ i s ợ d ù ng printf(), thay v à o đó l ạ i d ù ng nh ữ ng h à m đị nh d ạ ng t ự vi ế t, d à i đế n 30- 40 d ò ng, trong đ i m ộ t c â u printf() c ó th ể l à m m ọ i th ứ anh ta mong mu ố n. Nhi ế u l ậ p tr ì nh vi ê n d ù ng sai printf(): in c á c bi ế n, c á c gi á tr ị tr ả v ề c ủ a h à m ho ặ c th ỉ nh tho ả ng, ch ỉ l à d ữ li ệ u th ô ng th ườ ng. Th ườ ng x ả y ra trong hai t ì nh hu ố ng:  C â u l ệ nh print() th í ch h ợ p h ơ n  Hi ể n th ị gi á tr ị tr ả v ề c ủ a m ộ t h à m 1. 1. 1. 1. Khi Khi Khi Khi n n n n à à à à o o o o print() print() print() print() th th th th í í í í ch ch ch ch h h h h ợ ợ ợ ợ p p p p h h h h ơ ơ ơ ơ n? n? n? n? C á c l ậ p tr ì nh vi ê n th ườ ng s ử d ụ ng printf() trong khi ch ỉ print() l à đủ . X é t th í d ụ sau: <? $name = 'Nguyen Anh Khoa' ; $nghenghiep = 'Sinh vien' ; $diachi = 'Phong 204.B5 – KTX – DHSP Dong Thap' ; $email = 'khoa_computer2004@yahoo.com' ; printf ( "Ten cua tui la: %s\n<br>\n Hien dang la: %s, %s\n<br>\n Lien he voi toi qua Email: %s\n<br>\n" , $name , $nghenghiep , $diachi , $email ); ?> H à m print() print() print() print() c ó th ể d ù ng thay cho printf() nh ư sau: B PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 12 12 12 12 Dormitory 204.B5 18:20 PM April 7, 2006 S ự l ấ y m ẫ u kh ô ng ch í nh x á c l à m ộ t th í d ụ hay v ề v ấ n đề n à y. V à i ng ườ i vi ế t l ệ nh kh ô ng d à nh th ờ i gian để ngh ĩ th ấ u đá o. Đú ng l à kh ô ng ch ỉ c ó duy nh ấ t m ộ t c á ch “đú ng ” để l ấ y m ẫ u d ữ li ệ u, nh ư ng n ó c ó r ấ t nhi ề u c á ch kh ô ng đú ng. Ph ầ n n à y bao g ồ m c á c ch ủ đề :  Á p d ụ ng sai c á c h à m v ề CSDL  D ù ng sai SQL: kh ô ng l ấ y nh ữ ng th ứ b ạ n c ầ n  D ù ng PHP để s ắ p x ế p k ế t qu ả 1. 1. 1. 1. D D D D ù ù ù ù ng ng ng ng sai sai sai sai c c c c á á á á c c c c h h h h à à à à m m m m CSDL CSDL CSDL CSDL M ộ t đ o ạ n m ã PHP đã d ù ng c ú ph á p sau để l ấ y k ế t qu ả t ừ CSDL (presented below using a generalized set of SQL functions): if (!( $mautin = sql_fetch_row ( $truyvan ))) { print "Mot loi xay ra: Khong tim thay mau tin nao!" ; exit; } do { print "$mautin[0]: $mautin[1]\n<br>\n" ; } while ( $mautin = sql_fetch_row ( $truyvan )); Ch Ch Ch Ch ú ú ú ú ý ý ý ý : : : : Ở tr ê n, v à c á c th í d ụ sau n ữ a, $truyvan di ễ n t ả handle ho ặ c pointer đế n m ộ t t ậ p k ế t qu ả truy v ấ n ... PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 25 25 25 25 Dormitory 204.B5 18:20 PM April 7, 2006 m ộ t nh ó m th ư t í n, hay trong m ộ t kho m ã ngu ồ n n à o đó ). Tuy nhi ê n, m ộ t bi ể u th ứ c ch í nh quy kh ô ng đủ n ế u b ạ n mu ố n c ó k ế t qu ả ch í nh x á c. C ó v à i c á ch an to à n h ơ n m à b ạ n c ó th ể d ù ng: 2.1. 2.1. 2.1. 2.1. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra k k k k ế ế ế ế t t t t n n n n ố ố ố ố i i i i (socket (socket (socket (socket validation) validation) validation) validation) M ộ t c á ch để ki ể m đị nh đị a ch ỉ e-mail m à kh ô ng qu ấ y r ầ y tr ự c ti ế p đế n ng ườ i d ù ng l à t ạ o m ộ t k ế t n ố i đế n server nh ậ n đượ c trong đị a ch ỉ e-mail, sau đó t ì m t ê n đă ng k í c ủ a h ọ . 2.1.1. 2.1.1. 2.1.1. 2.1.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m  Kh ô ng g â y b ấ t ti ệ n cho ng ườ i d ù ng v ì n ó đượ c ti ế n h à nh trong su ố t.  Ph á t hi ệ n nhi ề u đị a ch ỉ ma m à bi ể u th ứ c ch í nh quy kh ô ng bi ế t (nh ư l à joe@fgsdh.com). 2.1.2. 2.1.2. 2.1.2. 2.1.2. Khuy Khuy Khuy Khuy ế ế ế ế t t t t đ đ đ đ i i i i ể ể ể ể m m m m  Kh ô ng ph á t hi ệ n đượ c đị a ch ỉ b ị đá nh c ắ p. Th í d ụ , n ế u John Doe đư a đị a ch ỉ e- mail c ủ a t ô i (phanthanhkieu@php.net), m ọ i th ứ v ẫ n ti ế n h à nh b ì nh th ườ ng, d ù n ó l à đị a ch ỉ c ủ a t ô i ch ứ kh ô ng ph ả i c ủ a h ắ n ta.  Ki ể m tra ch ậ m h ơ n bi ể u th ứ c ch í nh quy.  Mail server c ủ a ng ườ i d ù ng c ó th ể t ạ m ng ư ng ho ạ t độ ng trong th ờ i gian ng ắ n, l à m cho m ộ t đị a ch ỉ e-mail h ợ p l ệ b ị t ừ ch ố i 2.2. 2.2. 2.2. 2.2. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra t t t t ươ ươ ươ ươ ng ng ng ng t t t t á á á á c c c c M ộ t c á ch kh á c để ki ể m đị nh đị a ch ỉ e-mail l à g ử i m ộ t kho á đặ c bi ệ t đế n h ộ p th ư ng ườ i d ù ng, v à b ắ t h ọ nh ậ p kho á đó để ti ế p t ụ c. Đ i ề u n à y đả m b ả o r ằ ng kh ô ng nh ữ ng đị a ch ỉ e-mail l à h ợ p l ệ , m à ng ườ i d ù ng c ó quy ề n truy xu ấ t v à o đị a ch ỉ đó . 2.2.1. 2.2.1. 2.2.1. 2.2.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m  L à c á ch t ố t nh ấ t để ki ể m tra ng ườ i d ù ng c ó m ộ t đị a ch ỉ e-mail h ợ p l ệ 2.2.2. 2.2.2. 2.2.2. 2.2.2. Khuy Khuy Khuy Khuy ế ế ế ế t t t t đ đ đ đ i i i i ể ể ể ể m m m m  Đò i h ỏ i ng ườ i d ù ng ph ả i ti ế n h à nh th ê m b ướ c ph ụ . Đ i ề u n à y qu ấ y r ầ y m ấ y ng ườ i c ó ý đị nh l à m phi ề n b ạ n.  Gi ố ng nh ư m ọ i c á ch kh á c, n ó kh ô ng đả m b ả o đượ c ch ố ng- đá nh-l ừ a. Ng ườ i d ù ng c ó th ể t ạ o m ộ t đị a ch ỉ t ạ m ở Hotmail hay Netaddress v à sau PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 11 11 11 11 Dormitory 204.B5 18:20 PM April 7, 2006 1.5. 1.5. 1.5. 1.5. Th Th Th Th ó ó ó ó i i i i quen quen quen quen x x x x ấ ấ ấ ấ u u u u D ướ i đâ y l à nh ữ ng th í d ụ (ph ó ng đạ i) v ề nh ữ ng t ê n bi ế n t ồ i $username_cua_csdl = 'SINHVIEN' ; $guMbi = 'bimat' ; // for the $password $tentruocdo_cua_giaovien = array ( 'Sadlon' , 'Lane' , 'Patterson' , 'Perry' , 'Sandler' , 'Mendick' , 'Zung' ); foreach ( $tentruocdo_cua_giaovien as $TeaChER ); 2. 2. 2. 2. Đặ Đặ Đặ Đặ t t t t t t t t ê ê ê ê n n n n h h h h à à à à m m m m M ọ i kh á i ni ệ m á p d ụ ng cho t ê n bi ế n c ũ ng á p d ụ ng cho đặ t t ê n h à m. Tuy nhi ê n, ng ữ ph á p đó ng vai tr ò đặ c bi ệ t trong c á c h à m. C á c h à m PHP, đị nh ngh ĩ a s ẵ n ho ặ c do ng ườ i d ù ng đị nh ngh ĩ a, l à kh ô ng-ph â n-bi ệ t-c á ch- vi ế t (not case sensitive) 2.1. 2.1. 2.1. 2.1. D D D D ù ù ù ù ng ng ng ng độ độ độ độ ng ng ng ng t t t t ừ ừ ừ ừ H à m c ủ a PHP t ươ ng đươ ng v ớ i m ộ t độ ng t ừ khi n ó i. T ê n h à m, do đó , n ê n đượ c h ướ ng h à nh độ ng (action oriented). N ó c ũ ng n ê n đượ c d ù ng ở th ì hi ệ n t ạ i. Th í d ụ , b ạ n c ó m ộ t h à m t ạ o m ộ t s ố ng ẫ u nhi ê n v ớ i ph â n b ố Gausse (a gaussian random number), b ạ n n ê n đặ t t ê n n ó l à generate_gaussian_rand(). Ch ú ý c á c s ử d ụ ng độ ng t ừ h à nh độ ng trong t ê n h à m. N ó s ẽ đặ t h à m v à o ng ữ c ả nh th í ch h ợ p <?php list ( $num1 , $num2 ) = generate_gaussian_rand (); list ( $num3 , $num4 ) = generate_gaussian_rand (); ?> Để so s á nh, h ã y xem th í d ụ : <?php list ( $num1 , $num2 ) = gaussian_rand_generator (); list ( $num1 , $num2 ) = gaussian_rand_generator (); ?> B ạ n c ó th ấ y s ự kh á c bi ệ t? Th í d ụ th ứ hai s ử d ụ ng danh t ừ , m ặ c d ù v ẫ n chuy ể n t ả i đượ c m ụ c ti ê u c ủ a h à m, nh ư ng n ó ng ă n ng ườ i ta đọ c m ộ t c á ch tr ô i ch ả y. H ã y s ử d ụ ng độ ng t ừ ! 13. 13. 13. 13. Kh Kh Kh Kh ô ô ô ô ng ng ng ng suy suy suy suy ngh ngh ngh ngh ĩ ĩ ĩ ĩ th th th th ấ ấ ấ ấ u u u u đá đá đá đá o: o: o: o: CSDL CSDL CSDL CSDL & & & & SQL SQL SQL SQL S ố c á ch ng ườ i ta truy c ậ p c ơ s ở d ữ li ệ u (CSDL - database) v à l ấ y k ế t qu ả nhi ề u đế n m ứ c th ự c s ự ng ạ c nhi ê n. Nh ữ ng th í d ụ t ô i đã g ặ p bao g ồ m nh ữ ng t ổ h ợ p l ệ nh if v à v ò ng l ặ p do ... while, c á c c â u g ọ i nhi ề u l ầ n, v à c á c h à m sql_result() trong v ò ng for. Nh ữ ng ng ườ i n à y c ó ngh ĩ h ọ đ ang l à m g ì kh ô ng? Vi ệ c vi ế t c á c m ã tr ậ t-ho ặ c-tr ú ng (hit-or-miss code) ch ứ ng minh s ự thi ế u t ậ p trung. Nh ữ ng c á nh â n đó x á c đị nh n ỗ l ự c c ủ a h ọ d ù ng để ho à n th à nh c ô ng vi ệ c h ơ n l à để ho à n th à nh đú ng c ô ng vi ệ c, k ế t qu ả l à l à m cho c á c ô ng ch ủ qu ă ng th ờ i gian v à ti ề n b ạ c ra đườ ng. PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 26 26 26 26 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 3: 7 L Ỗ I CH Ế T NG ƯỜ I    7. 7. 7. 7. Ch Ch Ch Ch é é é é p p p p v v v v à à à à d d d d á á á á n: n: n: n: kh kh kh kh ô ô ô ô ng ng ng ng ph ph ph ph ả ả ả ả i i i i h h h h ướ ướ ướ ướ ng ng ng ng đ đ đ đ i i i i t t t t ố ố ố ố t t t t T ô i đã g ặ p nhi ề u tay l ậ p tr ì nh m ớ i v à o ngh ề đ i ch é p nh ữ ng đ o ạ n m ã (th í d ụ nh ư l à ki ể m tra đị a ch ỉ e-mail, g ử i e-mail, l ấ y gi á tr ị t ừ form để so ạ n e-mail). H ọ th ườ ng d á n ch ú ng v à o ch ươ ng tr ì nh c ủ a m ì nh v à r ồ i k ế t qu ả l à m ộ t đố ng nh ữ ng c â u l ệ nh g ử i form kh ô ng an to à n. D ù r ằ ng m ộ t đ o ạ n m ã ch ạ y đượ c trong nh ữ ng đ i ề u ki ệ n t ố i ư u, n ó th ườ ng g ặ p l ỗ i trong b ấ t k ì s ự ki ể m tra "m ã t ố t" n à o C ô ng vi ệ c ch ắ p v á s ẽ kh kh kh kh ô ô ô ô ng ng ng ng c ó c á c ư u đ i ể m sau:  M M M M ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng đượ đượ đượ đượ c: c: c: c: đ o ạ n m ã tr ô ng nh ư c á c m ả nh ri ê ng r ẽ r á p v á v à o nhau. N ế u nh ờ m ộ t l ậ p tr ì nh vi ê n c ó kinh nghi ệ m s ử a ch ươ ng tr ì nh c ủ a b ạ n, h ọ th ườ ng th í ch vi ế t l ạ i to à n b ộ Đ o ạ n m ã kh ô ng đọ c đượ c s ẽ kh ô ng m ở r ộ ng đượ c.  An An An An to to to to à à à à n: n: n: n: b ạ n c ó th ể đ ang ch é p m ã c ủ a ng ườ i kh á c v à o ch ươ ng tr ì nh c ủ a m ì nh m à l ạ i kh ô ng hi ể u r õ r à ng đ o ạ n m ã đó . H ã y t ưở ng t ưở ng xem. N ế u đ o ạ n m ã đó c ó m ộ t l ỗ i l à m xo á to à n b ộ đĩ a c ủ a b ạ n H ơ n n ữ a, c ù ng m ộ t đ o ạ n m ã th ì t í nh an to à n kh ô ng gi ố ng nhau tr ê n c á c h ệ th ố ng kh á c nhau. Cu ố i c ù ng, ch ươ ng tr ì nh c ủ a b ạ n s ẽ k ế th ừ a l ỗ i c ủ a ng ườ i kh á c.  Nhanh: Nhanh: Nhanh: Nhanh: khi c ắ t d á n c á c đ o ạ n m ã , k ế t qu ả th ườ ng s ẽ ch ạ y kh ô ng nhanh, v ì ch ú ng kh ô ng c ó m ộ t ti ế n tr ì nh chung h ợ p l í ( đâ y l à đ i ề u quan tr ọ ng nh ấ t khi vi ế t c á c ch ươ ng tr ì nh nhanh) 1. 1. 1. 1. L L L L à à à à m m m m đú đú đú đú ng ng ng ng ph ph ph ph ươ ươ ươ ươ ng ng ng ng ph ph ph ph á á á á p: p: p: p: t t t t ì ì ì ì m m m m hi hi hi hi ể ể ể ể u u u u tr tr tr tr ướ ướ ướ ướ c, c, c, c, sao sao sao sao ch ch ch ch é é é é p p p p sau sau sau sau Nghi ê n c ứ u m ã c ủ a ng ườ i kh á c k ĩ l ưỡ ng tr ướ c khi sao ch é p. Ph â n t í ch xem n ó l à m g ì . Ch ỉ khi n à o đ o ạ n m ã ấ y đọ c đượ c , nh ấ t qu á n v ớ i logic ch ươ ng tr ì nh c ủ a b ạ n, v à kh ô ng c ó l ỗ i, th ì m ớ i n ê n sao ch é p n ó . Ti ế n h à nh l ú c n à y s ẽ gi ú p b ạ n ch ỉ nh s ử a n ó ph ù h ợ p v ớ i c á c ph ầ n c ò n l ạ i c ủ a ch ươ ng tr ì nh m ộ t c á ch tho ả i m á i h ơ n. 2. 2. 2. 2. C C C C á á á á c c c c th th th th ư ư ư ư vi vi vi vi ệ ệ ệ ệ n n n n r r r r ấ ấ ấ ấ t t t t t t t t ố ố ố ố t t t t Ch ỉ d ù ng c á c th ư vi ệ n PHP t ừ c á c ngu ồ n tin c ậ y nh ư PEAR ho ặ c kho c á c l ớ p c ủ a PHP (PHP Classes Repository). V ớ i c á c g ó i API c ó s ẵ n, vi ệ c d ù ng c á c h à m c ủ a n ó c ũ ng kh ô ng th à nh v ấ n đề . Th ự c ra, n ế u b ạ n t ì m đượ c m ộ t th ư vi ệ n vi ế t s ẵ n b ở i m ộ t ngu ồ n tin c ậ y, th ì th ườ ng n ó s ẽ l à m ộ t l ự a ch ọ n t ố t để d ù ng cho ch ươ ng tr ì nh (thay v ì t ự vi ế t l ấ y). 6. 6. 6. 6. Kh Kh Kh Kh ô ô ô ô ng ng ng ng c c c c ó ó ó ó đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i ( ( ( ( guidelines ) ) ) ) cho cho cho cho đồ đồ đồ đồ á á á á n n n n M ộ t l ầ n khi t ô i m ớ i b ắ t đầ u l ậ p tr ì nh, t ô i l à m vi ệ c tr ê n m ộ t đồ á n kh á c ơ b ả n (v ớ i Perl) c ù ng 3 l ậ p t ì nh vi ê n kh á c. V ì t ô i c ò n tr ẻ (v à kh ô ng ph ả i tr ưở ng nh ó m), ch ú ng t ô i kh ô ng c ó đườ ng l ố i vi ế t m ã cho đồ á n. M ỗ i ng ườ i đượ c giao m ộ t ph ầ n c ô ng vi ệ c, v à l à m ri ê ng r ẽ . Khi ch ú ng t ô i nh ậ p chung l ạ i để ch ạ y ch ươ ng tr ì nh cu ố i c ù ng, m ỗ i ph ầ n c ủ a đồ á n nh ì n kh á c h ẳ n nhau PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 2 2 2 2 Dormitory 204.B5 18:20 PM April 7, 2006 print print print print "Ten cua tui la: $name \n \n \n \n <br> \n \n \n \n Hien dang la: $nghenghiep, $diachi \n \n \n \n <br> \n \n \n \n Lien he voi toi qua Email: $email \n \n \n \n <br> \n \n \n \n " ; ; ; ; Khi kh ô ng c ầ n đị nh d ạ ng s ử li ệ u, d ù ng print() thay cho printf() c ó nh ữ ng l ợ i í ch sau:  Thi Thi Thi Thi h h h h à à à à nh nh nh nh nhanh nhanh nhanh nhanh h h h h ơ ơ ơ ơ n: n: n: n: h à m printf() đị nh d ạ ng d ữ li ệ u c ủ a b ạ n tr ướ c khi hi ể n th ị , n ó s ẽ ch ậ m h ơ n print() ho ặ c echo()  M M M M ã ã ã ã s s s s á á á á ng ng ng ng s s s s ủ ủ ủ ủ a: a: a: a: h ã y xem, d ù ng h à m printf() s ẽ l à m cho ng ườ i đọ c h ơ i b ị l ẫ n l ộ n (t ấ t nhi ê n tr ừ khi h ọ c ó n ề n t ả ng C). N ó đò i h ỏ i ki ế n th ứ c v ề c ú ph á p printf() (th í d ụ , %s thay cho chu ỗ i c ò n %d l à s ố ) v à v ề ki ể u bi ế n 2. 2. 2. 2. D D D D ù ù ù ù ng ng ng ng printf() printf() printf() printf() để để để để xu xu xu xu ấ ấ ấ ấ t t t t d d d d ữ ữ ữ ữ li li li li ệ ệ ệ ệ u u u u tr tr tr tr ả ả ả ả v v v v ề ề ề ề t t t t ừ ừ ừ ừ g g g g ọ ọ ọ ọ i i i i h h h h à à à à m m m m M ộ t l ỗ i th ườ ng g ặ p kh á c l à d ù n printf() để xu ấ t d ữ li ệ u tr ả v ề t ừ g ọ i h à m, th í d ụ nh ư h à m đế m d ướ i đâ y: Khi xu ấ t gi á tr ị do h à m tr ả v ề , to á n t ử . n ê n d ù ng để n ố i trong print(), nh ư d ướ i đâ y: D ù ng to á n t ử . nhanh h ơ n vi ệ c d ù ng printf() 20. 20. 20. 20. Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a (semantics) (semantics) (semantics) (semantics) Nhi ề u l ậ p tr ì nh vi ê n s ử d ụ ng PHP m à kh ô ng bi ế t đế n nh ữ ng đ i ể m tinh t ế c ủ a ng ô n ng ữ n à y. M ộ t trong nh ữ ng đ i ể m đó l à s ự kh á c nhau gi ữ a c ú ph á p (syntax) v à ng ữ ngh ĩ a (semantics).  C C C C ú ú ú ú ph ph ph ph á á á á p: p: p: p: nh ữ ng quy t ắ c đị nh ngh ĩ a m ộ t ph ầ n t ử . Th í d ụ : d ấ u $ để tr ướ c d ù ng đị nh ngh ĩ a bi ế n, d ù ng d ấ u () v à c á c tham s ố đị nh ngh ĩ a m ộ t h à m...
  • 27
  • 302
  • 0
Tài liệu PHP programming dynamic web for ewreybody pptx

Tài liệu PHP programming dynamic web for ewreybody pptx

Ngày tải lên : 13/12/2013, 02:16
... while, c á c c â u g ọ i nhi ề u l ầ n, v à c á c h à m sql_result() trong v ò ng for. Nh ữ ng ng ườ i n à y c ó ngh ĩ h ọ đ ang l à m g ì kh ô ng? Vi ệ c vi ế t c á c m ã tr ậ t-ho ặ c-tr ú ng (hit-or-miss code) ch ứ ng minh s ự thi ế u t ậ p trung. Nh ữ ng c á nh â n đó x á c đị nh n ỗ l ự c c ủ a h ọ d ù ng để ho à n th à nh c ô ng vi ệ c h ơ n l à để ho à n th à nh đú ng c ô ng vi ệ c, k ế t qu ả l à l à m cho c á c ô ng ch ủ qu ă ng th ờ i gian v à ti ề n b ạ c ra đườ ng. PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 8 8 8 8 Dormitory 204.B5 18:20 PM April 7, 2006  Kh ô ng s á ng s ủ a v à d ễ d à ng b ằ ng h ệ th ố ng m ẫ u (template system)  C ầ n m ộ t í t ki ế n th ứ c PHP để s ử a m ẫ u 2. 2. 2. 2. H H H H ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng khu khu khu khu ô ô ô ô n n n n m m m m ẫ ẫ ẫ ẫ u u u u M ộ t c á ch kh á c để t á ch bi ệ t kh á ch ch ủ l à d ù ng h ệ th ố ng khu ô n m ẫ u. Ngh ĩ a l à , c ó m ộ t s ố đá nh d ấ u n ộ i dung sau đó d ù ng ch ươ ng tr ì nh ph â n t í ch, thay th ế c á c đá nh d ấ u đó b ằ ng th ô ng tin c ầ n thi ế t. Th í d ụ , b ạ n c ó th ể t ạ o m ộ t t ậ p tin nh ư th ế n à y: Sau đó c ó th ể vi ế t ch ươ ng tr ì nh ph â n t á ch t ậ p tin, thay th ế c á c th ô ng tin trong d ấ u c á ch %% b ằ ng c á c th ô ng tin th í ch h ợ p. Ghi ch ú : m ộ t l ớ p h ỗ tr ợ h ệ th ố ng khu ô n m ẫ u kh á t ố t l à l ớ p FastTemplate, c ó ở www.thewebmasters.net 2.1. 2.1. 2.1. 2.1. Ư Ư Ư Ư u u u u đ đ đ đ i i i i ể ể ể ể m m m m c c c c ủ ủ ủ ủ a a a a h h h h ệ ệ ệ ệ th th th th ố ố ố ố ng ng ng ng khu khu khu khu ô ô ô ô n n n n m m m m ẫ ẫ ẫ ẫ u u u u  R ấ t trong s á ng  Kh ô ng c ầ n ki ế n th ứ c PHP để s ử a khu ô n m ẫ u 2.2. 2.2. 2.2. 2.2. Nh Nh Nh Nh ượ ượ ượ ượ c c c c đ đ đ đ i i i i ể ể ể ể m m m m  Ch ậ m h ơ n, b ạ n c ầ n ph â n t á ch t ậ p tin khu ô n m ẫ u, sau đó xu ấ t ra  Vi ệ c hi ệ n th ự c ph ứ c t ạ p h ơ n 15. 15. 15. 15. D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i C ó nhi ề u ng ườ i c ứ d ù ng m ã i c á c m ã v à th ư vi ệ n l ỗ i th ờ i. Th í d ụ nh ư h ọ đã vi ế t m ộ t h à m d ù ng ở PHP 2, v à v ẫ n c ò n d ù ng n ó ở PHP 4, m ặ c d ù m ộ t h à m c ó c ù ng m ụ c đí ch nh ư th ế đã đượ c th ê m v à o ở PHP 3 D ù ng c á c c ấ u tr ú c l ỗ i th ờ i c ó th ể l à m ch ậ m ch ươ ng tr ì nh c ủ a b ạ n, c ũ ng nh ư l à m cho n ó tr ở n ê n kh ó hi ể u. Ng ườ i đọ c c á c ch ươ ng tr ì nh c ủ a b ạ n c ó th ể kh ô ng quen v ớ i c á c h à m l ỗ i th ờ i c ủ a PHP. Tuy nhi ê n, khi ph á t hi ệ n m ộ t đ o ạ n m ã l ạ c h ậ u, b ạ n đừ ng ngh ĩ r ằ ng c ầ n ph ả i thay th ế n ó . Ch ỉ c ầ n ch ắ c ch ắ n r ằ ng b ạ n s ẽ kh ô ng d ù ng n ó cho c á c ch ươ ng tr ì nh vi ế t trong t ươ ng lai. M ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i, m à nhi ề u ng ườ i c ó v ẻ c ố n ắ m l ấ y, l à c ú ph á p beginControlStructure beginControlStructure beginControlStructure beginControlStructure endControlStructure endControlStructure endControlStructure endControlStructure ; HTML HTML HTML HTML < html > < head > < title >%%PAGE_TITLE%%< /title > < /head > < body %%BODY_PROPERTIES%% > < h1 >%%PAGE_TITLE%%< /h1 > < table border =" 0 " cellpadding=" 0 " cellspacing=" 0 "> < tr > < td width =" 25% ">%%PAGE_LINKS%%< /td > < td >%%PAGE_CONTENT%%< /td > < /tr > < /table > < /body > < /html > <? PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 14 14 14 14 Dormitory 204.B5 18:20 PM April 7, 2006 1.4. 1.4. 1.4. 1.4. Khi Khi Khi Khi m m m m à à à à DBMS DBMS DBMS DBMS c c c c ủ ủ ủ ủ a a a a b b b b ạ ạ ạ ạ n n n n kh kh kh kh ô ô ô ô ng ng ng ng h h h h ỗ ỗ ỗ ỗ tr tr tr tr ợ ợ ợ ợ sql_num_row() sql_num_row() sql_num_row() sql_num_row() V à i DBMS c ó th ể kh ô ng h ỗ tr ợ h à m sql_num_row(). T ô i xin chia s ẻ v ớ i b ạ n n ế u DBMS c ủ a b ạ n l à m ộ t trong s ố đó . B ạ n s ẽ ph ả i t ì m trong k ế t qu ả r ỗ ng b ằ ng c á ch l ấ y d ò ng. Tuy nhi ê n, trong tr ườ ng h ợ p n à y, n ó n ê n d ù ng m ộ t bi ế n boolean nh ư sau: <?php $timthay = false ; while ( $mautin = sql_fetch_array ( $truyvan )){ $timthay = true ; } if (! $timthay ){ print "Loi!" ; } ?> 1.5. 1.5. 1.5. 1.5. L L L L ấ ấ ấ ấ y y y y k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả : : : : h h h h ã ã ã ã y y y y ch ch ch ch ọ ọ ọ ọ n n n n c c c c á á á á ch ch ch ch c c c c ó ó ó ó í í í í ch ch ch ch V ấ n đề th ứ hai trong đ o ạ n m ã n à y l à n ó d ù ng sql_fetch_row() để l ấ y t ậ p k ế t qu ả . H à m sql_fetch_row() ch ỉ tr ả v ề m ả ng đá nh ch ỉ s ố , trong khi đó sql_fetch_array() tr ả v ề m ả ng đá nh ch ỉ s ố v à m ả ng d ù ng chu ỗ i. $mautin = sql_fetch_array ( $truyvan ); print $mautin [ 1 ]; // Cot thu 2 print $mautin [ name ]; // Ten cot Ch Ch Ch Ch ú ú ú ú ý ý ý ý : : : : C ó nhi ề u quy ướ c kh á c nhau v ề vi ệ c d ù ng d ấ u nh á y khi th ê m m ộ t đố i s ố ki ể u chu ỗ i. Trong th í d ụ v ề t ê n c ộ t ở tr ê n, v à su ố t b à i vi ế t n à y, n ó s ẽ đượ c b ỏ . T ừ quan đ i ể m c ủ a nh à ph á t tri ể n, h à m n à o c ó l ợ i h ơ n? M ả ng d ù ng chu ỗ i gi ú p cho ng ườ i đọ c hi ể u đượ c b ạ n đ ang l ấ y c á i g ì ch ỉ th ô ng qua vi ệ c đọ c m ã , nh ư th í d ụ đú ng d ướ i đâ y: <?php if ( sql_num_rows ( $truyvan )<= 0 ) { print "Mot loi da xay ra: Khong co mau tin nao!" ; exit; } while ( $mautin = sql_fetch_array ( $truyvan )) { print "$mautin[name]: $mautin[phone_number]\n<br>\n" ; } ?> 1.6. 1.6. 1.6. 1.6. Khi Khi Khi Khi n n n n à à à à o o o o sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) sql_fetch_row($truyvan) n n n n ê ê ê ê n n n n đượ đượ đượ đượ c c c c d d d d ù ù ù ù ng ng ng ng T ô i kh ô ng th ự c s ự l à fan c ủ a the sql_fetch_row(). Tuy nhi ê n, c ó m ộ t t ì nh hu ố ng m à d ù ng n ó kh ô ng gi ả m kh ả n ă ng d ễ đọ c: khi ng ườ i d ù ng đị nh ngh ĩ a c â u truy v ấ n. C á c th í d ụ cho đế n l ú c n à y đề u đề c ậ p đế n nh ữ ng c â u truy v ấ n đượ c bi ế t tr ướ c. Đô i khi b ạ n để cho ng ườ i d ù ng t ự đị nh ngh ĩ a c â u truy v ấ n. Tr ườ ng h ợ p n à y b ạ n s ẽ kh ô ng bi ế t c á c c ộ t trong k ế t qu ả . Do đó , d ù ng h à m sql_fetch_row() k è m v ớ i count() s ẽ x ử l í hi ệ u qu ả c á c c ộ t trong m ộ t h à ng: <?php for ( $i = 0 ; $i < count ( $mautin ); $i ++){ print "Column" . ( $i + 1 ). $mautin [ $i ]. "\n<BR>\n" ; } ?> 2. 2. 2. 2. D D D D ù ù ù ù ng ng ng ng sai sai sai sai SQL: SQL: SQL: SQL: kh kh kh kh ô ô ô ô ng ng ng ng l l l l ấ ấ ấ ấ y y y y nh nh nh nh ữ ữ ữ ữ ng ng ng ng g g g g ì ì ì ì b b b b ạ ạ ạ ạ n n n n c c c c ầ ầ ầ ầ n n n n PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 15 15 15 15 Dormitory 204.B5 18:20 PM April 7, 2006 Nh ư l à v ấ n đề c ủ a th ự c h à nh, đơ n gi ả n l à s ẽ sai l ầ m khi d ù ng PHP x ử l í m ọ i d ò ng c ủ a CSDL. T ô i đã b ắ t g ặ p ng ườ i ta d ù ng PHP để ch ạ y m ộ t ch ươ ng tr ì nh t ì m ki ế m đơ n gi ả n tr ê n 2MB d ữ li ệ u v à t ự h ỏ i t ạ i sao c á i ng ô n ng ữ n à y ch ạ y l â u th ế . L ấ y 2MB d ữ li ệ u t ừ CSDL c ó th ể l à m b ạ n ch ờ m ã i m ã i. Ng ô n ng ữ truy v ấ n chu ẩ n ( Standard Standard Standard Standard Query Query Query Query Language Language Language Language - - - - SQL SQL SQL SQL ) đượ c thi ế t k ế đặ c bi ệ t để truy v ấ n v à l ấ y d ữ li ệ u t ừ c á c b ả ng c ủ a b ạ n. Ý t ưở ng l à d ù ng n ó để l ọ c d ữ li ệ u kh ô ng c ầ n thi ế t, để l ạ i c á c th ô ng tin li ê n quan cho PHP x ử l í . N ế u b ạ n l ấ y nhi ề u d ữ li ệ u h ơ n c ầ n thi ế t, đó l à d ấ u hi ệ u ch ắ c ch ắ n r ằ ng m ã SQL đ ang d ù ng ch ư a đượ c t ố i ư u ho á . 2.1. 2.1. 2.1. 2.1. M M M M ệ ệ ệ ệ nh nh nh nh đề đề đề đề WHERE WHERE WHERE WHERE M ộ t th í d ụ kinh đ i ể n v ề s ự hi ể u qu ả c ủ a SQL li ê n quan đế n m ệ nh đề where. Đ o ạ n m ã sau s ẽ l ấ y c á c k ế t qu ả v à in ra t ê n v à m ã sinh vi ê n c ủ a sinh vi ê n c ó MASV='511203008' : <?php include ( “ includes/taptinketnoi.inc ” ) ; $strsql = "SELECT MASV, HOTEN FROM SINHVIEN" ; $truyvan = @ sql_query ( $strsql , $ketnoi ); if (! $truyvan ) { die ( sprintf ( "LOI: [%d]: %s" , sql_errno (), sql_error ())); } if (@ sql_num_rows ( $truyvan ) <= 0 ) { die ( "Khong ket qua tim duoc tu CSDL!" ); } while ( $mautin = @ sql_fetch_array ( $truyvan )){ if ( $mautin [ MASV ] == “ 511203008 ” ) { print "MASV: $mautin[MASV]\n<br>\n" ; print "Ho ten: $mautin[HOTEN]\n<br>\n" ; break; } } ?> Đ o ạ n m ã tr ê n ch ư a đượ c t ố i ư u: ch ú ng ta đ ang d ù ng PHP để t ì m ki ế m trong to à n b ộ CSDL! N ế u nh ư đ i ề u n à y kh ô ng quan tr ọ ng đố i v ớ i c á c CSDL nh ỏ , khi k í ch th ướ c CSDL t ă ng l ê n b ạ n s ẽ c ả m th ấ y m ộ t c ú đấ m n ặ ng n ề v ề hi ệ u n ă ng. L ờ i gi ả i r ấ t đơ n gi ả n: s ử a c â u SQL để ch ứ a m ệ nh đề WHERE: $strsql = "SELECT * FROM SINHVIEN" ; $strsql .= " WHERE MASV='511203008'" ; PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 23 23 23 23 Dormitory 204.B5 18:20 PM April 7, 2006 Kh Kh Kh Kh ô ô ô ô ng ng ng ng d d d d ù ù ù ù ng ng ng ng c c c c á á á á c c c c h h h h à à à à m m m m s s s s ẵ ẵ ẵ ẵ n n n n c c c c ó ó ó ó Nhi ề u l ậ p tr ì nh vi ê n PHP c ó n ề n t ả ng C c ó v ẻ kh ô ng nh ậ n ra r ằ ng PHP cung c ấ p nhi ề u h à m s ẵ n c ó gi ú p thay th ế c á c đ o ạ n m ã d à i. N ế u b ạ n đế n v ớ i PHP t ừ C, t ô i khuy ê n b ạ n n ê n đọ c qua t à i li ệ u tr ướ c khi vi ế t m ộ t kh ố i l ệ nh để xem PHP c ó s ẵ n h à m n à o gi ú p cu ộ c s ố n g c ủ a b ạ n d ễ d à ng h ơ n kh ô ng. Đổ Đổ Đổ Đổ i i i i t t t t ê ê ê ê n n n n c c c c á á á á c c c c h h h h à à à à m m m m PHP PHP PHP PHP đã đã đã đã c c c c ó ó ó ó T ô i đã th ấ y ng ườ i ta đổ i t ê n c á c h à m đã c ó c ủ a PHP ch ỉ để gi ú p h ọ d ễ nh ớ h ơ n. Đ i ề u n à y kh ô ng ch ỉ l à m ch ậ m ch ươ ng tr ì nh, m à l à m cho đ o ạ n m ã kh ó đọ c h ơ n. D D D D ù ù ù ù ng ng ng ng h h h h ướ ướ ướ ướ ng ng ng ng đố đố đố đố i i i i t t t t ượ ượ ượ ượ ng ng ng ng qu qu qu qu á á á á m m m m ứ ứ ứ ứ c c c c PHP kh ô ng ph ả i l à m ộ t ng ô n ng ữ H Đ T, d ù n ó cung c ấ p c á c t í nh n ă ng H Đ T. B ạ n c ầ n lu ô n nh ậ n th ứ c r ằ ng H Đ T trong PHP s ẽ l à m ch ậ m đá ng k ể ch ươ ng tr ì nh. 1. 1. 1. 1. L L L L ấ ấ ấ ấ y y y y th th th th ô ô ô ô ng ng ng ng tin tin tin tin ở ở ở ở đâ đâ đâ đâ u? u? u? u? May m ắ n l à c ó r ấ t nhi ề u th ô ng tin v ề vi ệ c l à m th ế n à o để l ậ p tr ì nh PHP. V à i n ơ i t ố t nh ấ t l à  Zend.com b ả n g ố c c ủ a b à i vi ế t n à y l à ở đó  Professional PHP m ộ t trong nh ữ ng s á ch to à n di ệ n t ố t nh ấ t v ề PHP, t ố t cho c ả l ậ p tr ì nh vi ê n v à kh ô ng-l ậ p tr ì nh vi ê n.  Web Application Development with PHP M ộ t quy ể n s á ch tuy ệ t v ờ i d ạ y b ạ n c ả c á ch ph á t tri ể n web l ẫ n v à i t í nh n ă ng cao c ấ p c ủ a PHP. Bao g ồ m c á c t à i li ệ u ch í nh th ứ c v ề Zend API.  The PHP Developer's Cookbook M ộ t quy ể n s á ch thi ê n v ề l ờ i gi ả i đá p cho c á c v ấ n đề g ặ p ph ả i trong PHP (do tui - Sterling Hughes - vi ế t c ù ng Andrei Zmievski) 8. 8. 8. 8. Kh Kh Kh Kh ô ô ô ô ng ng ng ng nh nh nh nh ậ ậ ậ ậ n n n n th th th th ứ ứ ứ ứ c c c c đầ đầ đầ đầ y y y y đủ đủ đủ đủ v v v v ề ề ề ề b b b b ả ả ả ả o o o o m m m m ậ ậ ậ ậ t t t t Nh ữ ng ng ườ i d ù ng kh ô ng ph ả i l ú c n à o c ũ ng l à m vi ệ c v ớ i h ệ th ố ng c ủ a ch ú ng ta. V ớ i t ư c á ch l à l ậ p tr ì nh vi ê n, tr á ch nhi ệ m c ủ a ch ú ng ta l à thi ế t k ế m ộ t h ệ th ố ng an to à n, d ễ ch ị u c ó th ể l à m vi ệ c đượ c chung v ớ i l ỗ i c ủ a ng ườ i d ù ng. Khi thi ế t k ế h ệ th ố ng, b ạ n ph ả i đặ t m ì nh v à o v ị tr í ng ườ i d ù ng. Xem x é t nh ữ ng ch ỗ h ọ c ó th ể g ặ p l ỗ i v à t ì m ki ế m nh ữ ng l ỗ h ổ ng b ả o m ậ t ti ề m t à ng. R ồ i b ạ n thi ế t k ế ch ươ ng tr ì nh c ó kh ả n ă ng s ử a ch ữ a l ỗ i n à y v à l ấ p c á c l ỗ h ổ ng b ả o m ậ t. M ộ t đ i ề u kh á c c ũ ng quan tr ọ ng l à : d ù x ả y ra h ư h ỏ ng hay h ệ th ố ng b ị t ấ n c ô ng l à do l ỗ i c ủ a ng ườ i d ù ng, ch í nh b ạ n l à ng ườ i ch ị u tr á ch nhi ệ m n ế u b ạ n đã vi ế t ch ươ ng tr ì nh c ó nhi ề u l ỗ i hay thi ế u nh ữ ng b ướ c ki ể m tra c ầ n thi ế t d ẫ n đế n h ỏ ng d ữ li ệ u. Th í d ụ , t ô i đã th ấ y nhi ề u ch ươ ng tr ì nh kh ô ng d ù ng h à m đã c ó c ủ a PHP mail() v ố n an to à n m à l ạ i đ i d ù ng sendmail th ô ng qua popen() . N ó c ó th ể d ẫ n đế n nhi ề u l ỗ h ổ ng b ả o m ậ t (th í d ụ nh ư /etc/passwd đượ c g ử i đế n ng ườ i d ù ng cu ố i). C ó v à i n ơ i th ườ ng x ả y ra c á c s ự c ố v ề b ả o m ậ t, ho ặ c ti ề m n ă ng g â y ra h ỏ ng d ữ li ệ u r ấ t l ớ n:  Th ự c hi ệ n l ờ i g ọ i h ệ th ố ng. T ô i kh ô ng c ó c á ch n à o di ễ n t ả đượ c m ứ c độ nguy hi ể m c ủ a v ấ n đề n à y. Lu ô n đả m b ả o r ằ ng m ọ i d ữ li ệ u ng ườ i d ù ng đư a v à o l à an to à n tr ướ c khi chuy ể n n ó cho m ộ t l ờ i g ọ i h ệ th ố ng. ĐỪ ĐỪ ĐỪ ĐỪ NG NG NG NG BAO BAO BAO BAO GI GI GI GI Ờ Ờ Ờ Ờ TIN TIN TIN TIN NG NG NG NG ƯỜ ƯỜ ƯỜ ƯỜ I I I I D D D D Ù Ù Ù Ù NG NG NG NG M M M M Ộ Ộ Ộ Ộ T T T T C C C C Á Á Á Á CH CH CH CH M M M M Ù Ù Ù Ù QU QU QU QU Á Á Á Á NG NG NG NG KHI KHI KHI KHI ĐƯ ĐƯ ĐƯ ĐƯ A A A A D D D D Ữ Ữ Ữ Ữ LI LI LI LI Ệ Ệ Ệ Ệ U U U U C C C C Ủ Ủ Ủ Ủ A A A A H H H H Ọ Ọ Ọ Ọ V V V V À À À À O O O O L L L L Ờ Ờ Ờ Ờ I I I I G G G G Ọ Ọ Ọ Ọ I I I I H H H H Ệ Ệ Ệ Ệ TH TH TH TH Ố Ố Ố Ố NG NG NG NG M M M M À À À À KH KH KH KH Ô Ô Ô Ô NG NG NG NG KI KI KI KI Ể Ể Ể Ể M M M M TRA TRA TRA TRA TR TR TR TR ƯỚ ƯỚ ƯỚ ƯỚ C C C C .  Khi đă ng k í ng ườ i d ù ng. N ế u b ạ n tr ô ng mong c ó k ế t qu ả ch í nh x á c, lu ô n ki ể m tra v à đả m b ả o b ả n đă ng k í đượ c ki ể m tra nh ữ ng ch ỗ c ầ n thi ế t. Tr ướ c ti ê n, c ó nhi ề u c á ch để ki ể m tra m ộ t đị a ch ỉ e-mail h ợ p l ệ . H ơ n n ữ a, b ạ n n ê n ki ể m tra tu ổ i c ủ a ng ườ i d ù ng c ó n ằ m trong ph ạ m vi th í ch h ợ p kh ô ng. V ớ i m ộ t s ự suy r ộ ng, b ạ n c ó ... PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 26 26 26 26 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 3: 7 L Ỗ I CH Ế T NG ƯỜ I    7. 7. 7. 7. Ch Ch Ch Ch é é é é p p p p v v v v à à à à d d d d á á á á n: n: n: n: kh kh kh kh ô ô ô ô ng ng ng ng ph ph ph ph ả ả ả ả i i i i h h h h ướ ướ ướ ướ ng ng ng ng đ đ đ đ i i i i t t t t ố ố ố ố t t t t T ô i đã g ặ p nhi ề u tay l ậ p tr ì nh m ớ i v à o ngh ề đ i ch é p nh ữ ng đ o ạ n m ã (th í d ụ nh ư l à ki ể m tra đị a ch ỉ e-mail, g ử i e-mail, l ấ y gi á tr ị t ừ form để so ạ n e-mail). H ọ th ườ ng d á n ch ú ng v à o ch ươ ng tr ì nh c ủ a m ì nh v à r ồ i k ế t qu ả l à m ộ t đố ng nh ữ ng c â u l ệ nh g ử i form kh ô ng an to à n. D ù r ằ ng m ộ t đ o ạ n m ã ch ạ y đượ c trong nh ữ ng đ i ề u ki ệ n t ố i ư u, n ó th ườ ng g ặ p l ỗ i trong b ấ t k ì s ự ki ể m tra "m ã t ố t" n à o C ô ng vi ệ c ch ắ p v á s ẽ kh kh kh kh ô ô ô ô ng ng ng ng c ó c á c ư u đ i ể m sau:  M M M M ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng đượ đượ đượ đượ c: c: c: c: đ o ạ n m ã tr ô ng nh ư c á c m ả nh ri ê ng r ẽ r á p v á v à o nhau. N ế u nh ờ m ộ t l ậ p tr ì nh vi ê n c ó kinh nghi ệ m s ử a ch ươ ng tr ì nh c ủ a b ạ n, h ọ th ườ ng th í ch vi ế t l ạ i to à n b ộ Đ o ạ n m ã kh ô ng đọ c đượ c s ẽ kh ô ng m ở r ộ ng đượ c.  An An An An to to to to à à à à n: n: n: n: b ạ n c ó th ể đ ang ch é p m ã c ủ a ng ườ i kh á c v à o ch ươ ng tr ì nh c ủ a m ì nh m à l ạ i kh ô ng hi ể u r õ r à ng đ o ạ n m ã đó . H ã y t ưở ng t ưở ng xem. N ế u đ o ạ n m ã đó c ó m ộ t l ỗ i l à m xo á to à n b ộ đĩ a c ủ a b ạ n H ơ n n ữ a, c ù ng m ộ t đ o ạ n m ã th ì t í nh an to à n kh ô ng gi ố ng nhau tr ê n c á c h ệ th ố ng kh á c nhau. Cu ố i c ù ng, ch ươ ng tr ì nh c ủ a b ạ n s ẽ k ế th ừ a l ỗ i c ủ a ng ườ i kh á c.  Nhanh: Nhanh: Nhanh: Nhanh: khi c ắ t d á n c á c đ o ạ n m ã , k ế t qu ả th ườ ng s ẽ ch ạ y kh ô ng nhanh, v ì ch ú ng kh ô ng c ó m ộ t ti ế n tr ì nh chung h ợ p l í ( đâ y l à đ i ề u quan tr ọ ng nh ấ t khi vi ế t c á c ch ươ ng tr ì nh nhanh) 1. 1. 1. 1. L L L L à à à à m m m m đú đú đú đú ng ng ng ng ph ph ph ph ươ ươ ươ ươ ng ng ng ng ph ph ph ph á á á á p: p: p: p: t t t t ì ì ì ì m m m m hi hi hi hi ể ể ể ể u u u u tr tr tr tr ướ ướ ướ ướ c, c, c, c, sao sao sao sao ch ch ch ch é é é é p p p p sau sau sau sau Nghi ê n c ứ u m ã c ủ a ng ườ i kh á c k ĩ l ưỡ ng tr ướ c khi sao ch é p. Ph â n t í ch xem n ó l à m g ì . Ch ỉ khi n à o đ o ạ n m ã ấ y đọ c đượ c , nh ấ t qu á n v ớ i logic ch ươ ng tr ì nh c ủ a b ạ n, v à kh ô ng c ó l ỗ i, th ì m ớ i n ê n sao ch é p n ó . Ti ế n h à nh l ú c n à y s ẽ gi ú p b ạ n ch ỉ nh s ử a n ó ph ù h ợ p v ớ i c á c ph ầ n c ò n l ạ i c ủ a ch ươ ng tr ì nh m ộ t c á ch tho ả i m á i h ơ n. 2. 2. 2. 2. C C C C á á á á c c c c th th th th ư ư ư ư vi vi vi vi ệ ệ ệ ệ n n n n r r r r ấ ấ ấ ấ t t t t t t t t ố ố ố ố t t t t Ch ỉ d ù ng c á c th ư vi ệ n PHP t ừ c á c ngu ồ n tin c ậ y nh ư PEAR ho ặ c kho c á c l ớ p c ủ a PHP (PHP Classes Repository). V ớ i c á c g ó i API c ó s ẵ n, vi ệ c d ù ng c á c h à m c ủ a n ó c ũ ng kh ô ng th à nh v ấ n đề . Th ự c ra, n ế u b ạ n t ì m đượ c m ộ t th ư vi ệ n vi ế t s ẵ n b ở i m ộ t ngu ồ n tin c ậ y, th ì th ườ ng n ó s ẽ l à m ộ t l ự a ch ọ n t ố t để d ù ng cho ch ươ ng tr ì nh (thay v ì t ự vi ế t l ấ y). 6. 6. 6. 6. Kh Kh Kh Kh ô ô ô ô ng ng ng ng c c c c ó ó ó ó đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i ( ( ( ( guidelines ) ) ) ) cho cho cho cho đồ đồ đồ đồ á á á á n n n n M ộ t l ầ n khi t ô i m ớ i b ắ t đầ u l ậ p tr ì nh, t ô i l à m vi ệ c tr ê n m ộ t đồ á n kh á c ơ b ả n (v ớ i Perl) c ù ng 3 l ậ p t ì nh vi ê n kh á c. V ì t ô i c ò n tr ẻ (v à kh ô ng ph ả i tr ưở ng nh ó m), ch ú ng t ô i kh ô ng c ó đườ ng l ố i vi ế t m ã cho đồ á n. M ỗ i ng ườ i đượ c giao m ộ t ph ầ n c ô ng vi ệ c, v à l à m ri ê ng r ẽ . Khi ch ú ng t ô i nh ậ p chung l ạ i để ch ạ y ch ươ ng tr ì nh cu ố i c ù ng, m ỗ i ph ầ n c ủ a đồ á n nh ì n kh á c h ẳ n nhau PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 27 27 27 27 Dormitory 204.B5 18:20 PM April 7, 2006 1. 1. 1. 1. M M M M ộ ộ ộ ộ t t t t th th th th í í í í d d d d ụ ụ ụ ụ m m m m ẫ ẫ ẫ ẫ u u u u v v v v ề ề ề ề đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i 5. 5. 5. 5. Kh Kh Kh Kh ô ô ô ô ng ng ng ng xem xem xem xem x x x x é é é é t t t t l l l l ạ ạ ạ ạ i i i i m m m m ã ã ã ã 4. 4. 4. 4. V V V V á á á á l l l l ỗ ỗ ỗ ỗ i i i i khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 3. 3. 3. 3. Kh Kh Kh Kh ô ô ô ô ng ng ng ng quan quan quan quan t t t t â â â â m m m m đế đế đế đế n n n n ng ng ng ng ườ ườ ườ ườ i i i i d d d d ù ù ù ù ng ng ng ng khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 2. 2. 2. 2. Kh Kh Kh Kh ô ô ô ô ng ng ng ng theo theo theo theo s s s s á á á á t t t t k k k k ế ế ế ế ho ho ho ho ạ ạ ạ ạ ch ch ch ch c c c c ủ ủ ủ ủ a a a a đồ đồ đồ đồ á á á á n n n n 1. 1. 1. 1. Ph Ph Ph Ph í í í í th th th th ờ ờ ờ ờ i i i i gian gian gian gian PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 9 9 9 9 Dormitory 204.B5 18:20 PM April 7, 2006 Đâ y l à m ộ t th ó i quen x ấ u v ì  N ó kh ô ng đượ c d ù ng r ộ ng r ã i, cho n ê n nhi ề u ng ườ i h ọ c s ẽ b ị l ẫ n l ộ n gi ữ a hai c ú ph á p  N ó kh ô ng t ươ ng th í ch v ớ i ng ô n ng ữ kh á c, ngh ĩ a l à n ó tr ở n ê n kh ó đọ c đố i v ớ i nh ữ ng ng ườ i trong giai đ o ạ n qu á độ (m ớ i chuy ể n t ừ m ộ t ng ô n ng ữ n à o đó sang PHP)  Quan tr ọ ng nh ấ t, l à m ộ t ng à y n à o đó t í nh n ă ng n à y s ẽ b ị xo á x ổ , b ắ t bu ộ c b ạ n ph ả i vi ế t l ạ i to à n b ộ m ã c ó d ù ng n ó . D ấ u ngo ặ c nh ọ n lu ô n lu ô n l à m ộ t ph ầ n c ủ a ng ô n ng ữ PHP. Ở tr ê n ch ỉ l à m ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i. N ó c ò n nhi ề u n ữ a. Nh ư m ộ t quy t ắ c, b ạ n n ê n theo nh ữ ng c á c vi ế t trong t à i li ệ u PHP. H ầ u h ế t n ó đượ c c ậ p nh ậ t m ớ i. N ó c ũ ng d ù ng c á c h à m m ớ i nh ấ t c ủ a PHP trong th í d ụ c ủ a m ì nh. N ê n th ườ ng xuy ê n ki ể m tra t à i li ệ u khi b ạ n c ó ý mu ố n m ở r ộ ng t í nh n ă ng n à o đó c ủ a PHP. Theo c á ch n à y, b ạ n s ẽ kh ô ng ph ả i vi ế t l ạ i c á c h à m c ó s ẵ n. T T T T ổ ổ ổ ổ ng ng ng ng k k k k ế ế ế ế t t t t Trong b à i n à y b ạ n đã đ i qua 7 tr ê n t ổ ng s ố 21 l ỗ i m à l ậ p tr ì nh vi ê n PHP m ắ c ph ả i. Nh ữ ng l ỗ i gi á o khoa n à y bao g ồ m:     S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai h h h h à à à à m m m m printf() printf() printf() printf()     Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a     Thi Thi Thi Thi ế ế ế ế u u u u t t t t à à à à i i i i li li li li ệ ệ ệ ệ u u u u trong trong trong trong m m m m ã ã ã ã ngu ngu ngu ngu ồ ồ ồ ồ n n n n     D D D D ù ù ù ù ng ng ng ng qu qu qu qu á á á á nhi nhi nhi nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n n n n t t t t ạ ạ ạ ạ m m m m     Vi Vi Vi Vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n     Kh Kh Kh Kh ô ô ô ô ng ng ng ng t t t t á á á á ch ch ch ch bi bi bi bi ệ ệ ệ ệ t t t t ph ph ph ph ầ ầ ầ ầ n n n n kh kh kh kh á á á á ch/ch ch/ch ch/ch ch/ch ủ ủ ủ ủ     D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i // Bad/Outdated Practice while ( 1 ): print "5" ; if ( $idx ++ == 5 ): break; endif; endwhile; // Better Practice // (the code could be optimized though) while ( 1 ) { print "5" ; if ( $idx ++ == 5 ) { break; } } ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 17 17 17 17 Dormitory 204.B5 18:20 PM April 7, 2006  Ki ể m tra k ế t qu ả l ờ i g ọ i h à m  Ki ể m tra k ế t qu ả l ờ i g ọ i h ệ th ố ng  Đặ t m ứ c error_reporting l à E_ALL trong t ậ p tin php.ini 1.1. 1.1. 1.1. 1.1. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả l l l l ờ ờ ờ ờ i i i i g g g g ọ ọ ọ ọ i i i i h h h h à à à à m m m m M ỗ i khi b ạ n g ọ i m ộ t h à m l à m thay đổ i nhi ề u d ữ li ệ u, lu ô n ki ể m tra để đả m b ả o r ằ ng k ế t qu ả tr ả v ề trong ph ạ m vi gi á tr ị đượ c ch ấ p nh ậ n (a range of allowable values). Trong th í d ụ d ướ i đâ y, m ộ t l ỗ i illegal division by zero sinh ra trong l ầ n l ặ p th ứ 6 c ủ a v ò ng for ($i đượ c t ă ng l ê n 1 trong khi $j b ị gi ả m đ i 1). V à o l ầ n th ứ 6, khi đó $i = $j = 0. <?php mt_srand ((double) microtime () * 10000000 ); function do_math ( $a , $b ) { return (( $a - $b ) * 2 ) / mt_rand (); } for ( $i = 5 , $j = - 5 ; $i > - 5 ; $i ... PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 26 26 26 26 Dormitory 204.B5 18:20 PM April 7, 2006 PH Ầ N 3: 7 L Ỗ I CH Ế T NG ƯỜ I    7. 7. 7. 7. Ch Ch Ch Ch é é é é p p p p v v v v à à à à d d d d á á á á n: n: n: n: kh kh kh kh ô ô ô ô ng ng ng ng ph ph ph ph ả ả ả ả i i i i h h h h ướ ướ ướ ướ ng ng ng ng đ đ đ đ i i i i t t t t ố ố ố ố t t t t T ô i đã g ặ p nhi ề u tay l ậ p tr ì nh m ớ i v à o ngh ề đ i ch é p nh ữ ng đ o ạ n m ã (th í d ụ nh ư l à ki ể m tra đị a ch ỉ e-mail, g ử i e-mail, l ấ y gi á tr ị t ừ form để so ạ n e-mail). H ọ th ườ ng d á n ch ú ng v à o ch ươ ng tr ì nh c ủ a m ì nh v à r ồ i k ế t qu ả l à m ộ t đố ng nh ữ ng c â u l ệ nh g ử i form kh ô ng an to à n. D ù r ằ ng m ộ t đ o ạ n m ã ch ạ y đượ c trong nh ữ ng đ i ề u ki ệ n t ố i ư u, n ó th ườ ng g ặ p l ỗ i trong b ấ t k ì s ự ki ể m tra "m ã t ố t" n à o C ô ng vi ệ c ch ắ p v á s ẽ kh kh kh kh ô ô ô ô ng ng ng ng c ó c á c ư u đ i ể m sau:  M M M M ở ở ở ở r r r r ộ ộ ộ ộ ng ng ng ng đượ đượ đượ đượ c: c: c: c: đ o ạ n m ã tr ô ng nh ư c á c m ả nh ri ê ng r ẽ r á p v á v à o nhau. N ế u nh ờ m ộ t l ậ p tr ì nh vi ê n c ó kinh nghi ệ m s ử a ch ươ ng tr ì nh c ủ a b ạ n, h ọ th ườ ng th í ch vi ế t l ạ i to à n b ộ Đ o ạ n m ã kh ô ng đọ c đượ c s ẽ kh ô ng m ở r ộ ng đượ c.  An An An An to to to to à à à à n: n: n: n: b ạ n c ó th ể đ ang ch é p m ã c ủ a ng ườ i kh á c v à o ch ươ ng tr ì nh c ủ a m ì nh m à l ạ i kh ô ng hi ể u r õ r à ng đ o ạ n m ã đó . H ã y t ưở ng t ưở ng xem. N ế u đ o ạ n m ã đó c ó m ộ t l ỗ i l à m xo á to à n b ộ đĩ a c ủ a b ạ n H ơ n n ữ a, c ù ng m ộ t đ o ạ n m ã th ì t í nh an to à n kh ô ng gi ố ng nhau tr ê n c á c h ệ th ố ng kh á c nhau. Cu ố i c ù ng, ch ươ ng tr ì nh c ủ a b ạ n s ẽ k ế th ừ a l ỗ i c ủ a ng ườ i kh á c.  Nhanh: Nhanh: Nhanh: Nhanh: khi c ắ t d á n c á c đ o ạ n m ã , k ế t qu ả th ườ ng s ẽ ch ạ y kh ô ng nhanh, v ì ch ú ng kh ô ng c ó m ộ t ti ế n tr ì nh chung h ợ p l í ( đâ y l à đ i ề u quan tr ọ ng nh ấ t khi vi ế t c á c ch ươ ng tr ì nh nhanh) 1. 1. 1. 1. L L L L à à à à m m m m đú đú đú đú ng ng ng ng ph ph ph ph ươ ươ ươ ươ ng ng ng ng ph ph ph ph á á á á p: p: p: p: t t t t ì ì ì ì m m m m hi hi hi hi ể ể ể ể u u u u tr tr tr tr ướ ướ ướ ướ c, c, c, c, sao sao sao sao ch ch ch ch é é é é p p p p sau sau sau sau Nghi ê n c ứ u m ã c ủ a ng ườ i kh á c k ĩ l ưỡ ng tr ướ c khi sao ch é p. Ph â n t í ch xem n ó l à m g ì . Ch ỉ khi n à o đ o ạ n m ã ấ y đọ c đượ c , nh ấ t qu á n v ớ i logic ch ươ ng tr ì nh c ủ a b ạ n, v à kh ô ng c ó l ỗ i, th ì m ớ i n ê n sao ch é p n ó . Ti ế n h à nh l ú c n à y s ẽ gi ú p b ạ n ch ỉ nh s ử a n ó ph ù h ợ p v ớ i c á c ph ầ n c ò n l ạ i c ủ a ch ươ ng tr ì nh m ộ t c á ch tho ả i m á i h ơ n. 2. 2. 2. 2. C C C C á á á á c c c c th th th th ư ư ư ư vi vi vi vi ệ ệ ệ ệ n n n n r r r r ấ ấ ấ ấ t t t t t t t t ố ố ố ố t t t t Ch ỉ d ù ng c á c th ư vi ệ n PHP t ừ c á c ngu ồ n tin c ậ y nh ư PEAR ho ặ c kho c á c l ớ p c ủ a PHP (PHP Classes Repository). V ớ i c á c g ó i API c ó s ẵ n, vi ệ c d ù ng c á c h à m c ủ a n ó c ũ ng kh ô ng th à nh v ấ n đề . Th ự c ra, n ế u b ạ n t ì m đượ c m ộ t th ư vi ệ n vi ế t s ẵ n b ở i m ộ t ngu ồ n tin c ậ y, th ì th ườ ng n ó s ẽ l à m ộ t l ự a ch ọ n t ố t để d ù ng cho ch ươ ng tr ì nh (thay v ì t ự vi ế t l ấ y). 6. 6. 6. 6. Kh Kh Kh Kh ô ô ô ô ng ng ng ng c c c c ó ó ó ó đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i ( ( ( ( guidelines ) ) ) ) cho cho cho cho đồ đồ đồ đồ á á á á n n n n M ộ t l ầ n khi t ô i m ớ i b ắ t đầ u l ậ p tr ì nh, t ô i l à m vi ệ c tr ê n m ộ t đồ á n kh á c ơ b ả n (v ớ i Perl) c ù ng 3 l ậ p t ì nh vi ê n kh á c. V ì t ô i c ò n tr ẻ (v à kh ô ng ph ả i tr ưở ng nh ó m), ch ú ng t ô i kh ô ng c ó đườ ng l ố i vi ế t m ã cho đồ á n. M ỗ i ng ườ i đượ c giao m ộ t ph ầ n c ô ng vi ệ c, v à l à m ri ê ng r ẽ . Khi ch ú ng t ô i nh ậ p chung l ạ i để ch ạ y ch ươ ng tr ì nh cu ố i c ù ng, m ỗ i ph ầ n c ủ a đồ á n nh ì n kh á c h ẳ n nhau PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 27 27 27 27 Dormitory 204.B5 18:20 PM April 7, 2006 1. 1. 1. 1. M M M M ộ ộ ộ ộ t t t t th th th th í í í í d d d d ụ ụ ụ ụ m m m m ẫ ẫ ẫ ẫ u u u u v v v v ề ề ề ề đườ đườ đườ đườ ng ng ng ng l l l l ố ố ố ố i i i i 5. 5. 5. 5. Kh Kh Kh Kh ô ô ô ô ng ng ng ng xem xem xem xem x x x x é é é é t t t t l l l l ạ ạ ạ ạ i i i i m m m m ã ã ã ã 4. 4. 4. 4. V V V V á á á á l l l l ỗ ỗ ỗ ỗ i i i i khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 3. 3. 3. 3. Kh Kh Kh Kh ô ô ô ô ng ng ng ng quan quan quan quan t t t t â â â â m m m m đế đế đế đế n n n n ng ng ng ng ườ ườ ườ ườ i i i i d d d d ù ù ù ù ng ng ng ng khi khi khi khi thi thi thi thi ế ế ế ế t t t t k k k k ế ế ế ế 2. 2. 2. 2. Kh Kh Kh Kh ô ô ô ô ng ng ng ng theo theo theo theo s s s s á á á á t t t t k k k k ế ế ế ế ho ho ho ho ạ ạ ạ ạ ch ch ch ch c c c c ủ ủ ủ ủ a a a a đồ đồ đồ đồ á á á á n n n n 1. 1. 1. 1. Ph Ph Ph Ph í í í í th th th th ờ ờ ờ ờ i i i i gian gian gian gian PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 9 9 9 9 Dormitory 204.B5 18:20 PM April 7, 2006 Đâ y l à m ộ t th ó i quen x ấ u v ì  N ó kh ô ng đượ c d ù ng r ộ ng r ã i, cho n ê n nhi ề u ng ườ i h ọ c s ẽ b ị l ẫ n l ộ n gi ữ a hai c ú ph á p  N ó kh ô ng t ươ ng th í ch v ớ i ng ô n ng ữ kh á c, ngh ĩ a l à n ó tr ở n ê n kh ó đọ c đố i v ớ i nh ữ ng ng ườ i trong giai đ o ạ n qu á độ (m ớ i chuy ể n t ừ m ộ t ng ô n ng ữ n à o đó sang PHP)  Quan tr ọ ng nh ấ t, l à m ộ t ng à y n à o đó t í nh n ă ng n à y s ẽ b ị xo á x ổ , b ắ t bu ộ c b ạ n ph ả i vi ế t l ạ i to à n b ộ m ã c ó d ù ng n ó . D ấ u ngo ặ c nh ọ n lu ô n lu ô n l à m ộ t ph ầ n c ủ a ng ô n ng ữ PHP. Ở tr ê n ch ỉ l à m ộ t th í d ụ v ề c ấ u tr ú c l ỗ i th ờ i. N ó c ò n nhi ề u n ữ a. Nh ư m ộ t quy t ắ c, b ạ n n ê n theo nh ữ ng c á c vi ế t trong t à i li ệ u PHP. H ầ u h ế t n ó đượ c c ậ p nh ậ t m ớ i. N ó c ũ ng d ù ng c á c h à m m ớ i nh ấ t c ủ a PHP trong th í d ụ c ủ a m ì nh. N ê n th ườ ng xuy ê n ki ể m tra t à i li ệ u khi b ạ n c ó ý mu ố n m ở r ộ ng t í nh n ă ng n à o đó c ủ a PHP. Theo c á ch n à y, b ạ n s ẽ kh ô ng ph ả i vi ế t l ạ i c á c h à m c ó s ẵ n. T T T T ổ ổ ổ ổ ng ng ng ng k k k k ế ế ế ế t t t t Trong b à i n à y b ạ n đã đ i qua 7 tr ê n t ổ ng s ố 21 l ỗ i m à l ậ p tr ì nh vi ê n PHP m ắ c ph ả i. Nh ữ ng l ỗ i gi á o khoa n à y bao g ồ m:     S S S S ử ử ử ử d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai h h h h à à à à m m m m printf() printf() printf() printf()     Á Á Á Á p p p p d d d d ụ ụ ụ ụ ng ng ng ng sai sai sai sai ng ng ng ng ữ ữ ữ ữ ngh ngh ngh ngh ĩ ĩ ĩ ĩ a a a a     Thi Thi Thi Thi ế ế ế ế u u u u t t t t à à à à i i i i li li li li ệ ệ ệ ệ u u u u trong trong trong trong m m m m ã ã ã ã ngu ngu ngu ngu ồ ồ ồ ồ n n n n     D D D D ù ù ù ù ng ng ng ng qu qu qu qu á á á á nhi nhi nhi nhi ề ề ề ề u u u u bi bi bi bi ế ế ế ế n n n n t t t t ạ ạ ạ ạ m m m m     Vi Vi Vi Vi ế ế ế ế t t t t l l l l ạ ạ ạ ạ i i i i c c c c á á á á c c c c h h h h à à à à m m m m c c c c ó ó ó ó s s s s ẵ ẵ ẵ ẵ n n n n     Kh Kh Kh Kh ô ô ô ô ng ng ng ng t t t t á á á á ch ch ch ch bi bi bi bi ệ ệ ệ ệ t t t t ph ph ph ph ầ ầ ầ ầ n n n n kh kh kh kh á á á á ch/ch ch/ch ch/ch ch/ch ủ ủ ủ ủ     D D D D ù ù ù ù ng ng ng ng c c c c á á á á c c c c c c c c ấ ấ ấ ấ u u u u tr tr tr tr ú ú ú ú c c c c l l l l ỗ ỗ ỗ ỗ i i i i th th th th ờ ờ ờ ờ i i i i // Bad/Outdated Practice while ( 1 ): print "5" ; if ( $idx ++ == 5 ): break; endif; endwhile; // Better Practice // (the code could be optimized though) while ( 1 ) { print "5" ; if ( $idx ++ == 5 ) { break; } } ?> PHP programming dynamic web for ewreybody 21 Fatal errors in programming with PHP – Collect from writ t ing of Sterling Hughes NGUYEN ANH KHOA – Class 27K0A – Department Of Information Technology 17 17 17 17 Dormitory 204.B5 18:20 PM April 7, 2006  Ki ể m tra k ế t qu ả l ờ i g ọ i h à m  Ki ể m tra k ế t qu ả l ờ i g ọ i h ệ th ố ng  Đặ t m ứ c error_reporting l à E_ALL trong t ậ p tin php.ini 1.1. 1.1. 1.1. 1.1. Ki Ki Ki Ki ể ể ể ể m m m m tra tra tra tra k k k k ế ế ế ế t t t t qu qu qu qu ả ả ả ả l l l l ờ ờ ờ ờ i i i i g g g g ọ ọ ọ ọ i i i i h h h h à à à à m m m m M ỗ i khi b ạ n g ọ i m ộ t h à m l à m thay đổ i nhi ề u d ữ li ệ u, lu ô n ki ể m tra để đả m b ả o r ằ ng k ế t qu ả tr ả v ề trong ph ạ m vi gi á tr ị đượ c ch ấ p nh ậ n (a range of allowable values). Trong th í d ụ d ướ i đâ y, m ộ t l ỗ i illegal division by zero sinh ra trong l ầ n l ặ p th ứ 6 c ủ a v ò ng for ($i đượ c t ă ng l ê n 1 trong khi $j b ị gi ả m đ i 1). V à o l ầ n th ứ 6, khi đó $i = $j = 0. <?php mt_srand ((double) microtime () * 10000000 ); function do_math ( $a , $b ) { return (( $a - $b ) * 2 ) / mt_rand (); } for ( $i = 5 , $j = - 5 ; $i > - 5 ; $i ...
  • 27
  • 592
  • 0
A dynamic programming algorithm for RNA structure

A dynamic programming algorithm for RNA structure

Ngày tải lên : 12/01/2014, 22:07
... admittedly high). Having an optimal dynamic programming algorithm will enable extending other dynamic programming based methods that rigorously explore the confor- mationalspaceforRNAfolding(McCaskill,1990; Bonhoefferetal.,1993)topseudoknottedstruc- tures. Apart ... a givenRNAstructure(Freieretal.,1986;Serra& Turner,1995).TheZukeralgorithm,implemented intheprogramsMFOLD(Zuker,1989a)and ViennaRNA(Schusteretal.,1994),isanef®cient dynamic programming algorithm for identifying the globally minimal energy structure for a sequence, as de®ned by such a thermodynamic model(Zuker&Stiegler,1981;Zuker&Sankoff, 1984;Sankoff,1985).TheZukeralgorithmrequires O(N 3 ) ... Underwood, R. C. & Haussler, D. 2064 RNA Pseudoknot Prediction by Dynamic Programming A Dynamic Programming Algorithm for RNA Structure Prediction Including Pseudoknots ElenaRivasandSeanR.Eddy* Department...
  • 16
  • 688
  • 0
Đề tài "The blow-up dynamic and upper bound on the blow-up rate for critical nonlinear Schr¨odinger equation " pot

Đề tài "The blow-up dynamic and upper bound on the blow-up rate for critical nonlinear Schr¨odinger equation " pot

Ngày tải lên : 29/03/2014, 07:20
... nonlinear dynamic ensures T<+∞. Note that for E(u 0 ) < 0, this last fact is unknown for critical KdV (and it is unclear whether it would be true). Note moreover that the result holds for ... and lower bounds for blow-up rate for the critical generalized KdV equation, Ann. of Math. 155 (2002), 235–280. [15] ——— , Blow-up in finite time and dynamics of blow-up solutions for the L 2 -critical generalized ... waves in nonlinear media, Sov. Phys. JETP 34 (1972), 62–69. (Received December 13, 2001) Annals of Mathematics The blow-up dynamic and upper bound on the blow-up rate for critical nonlinear...
  • 67
  • 345
  • 0
Báo cáo khoa học: "Optimal Multi-Paragraph Text Segmentation by Dynamic Programming" pdf

Báo cáo khoa học: "Optimal Multi-Paragraph Text Segmentation by Dynamic Programming" pdf

Ngày tải lên : 31/03/2014, 04:20
... article, we presented a method for detect- ing fragment boundaries in text. The fragmentation method is based on dynamic programming and is guaranteed to give an optimal solution with respect ... The Transformation, Analysis, and Retrieval of lnfor- mation by Computer. Addison-Wesley, Reading, MA, USA. R. Wilkinson and J. Zobel. 1995. Comparison of fragmentation schemes for document ... linkprev[j]; ) return(B);/* set of chosen fragment boundaries */ Figure 1: The dynamic programming algorithm for fragment boundary detection. of the second paragraph as a separate fragment....
  • 3
  • 173
  • 0
Báo cáo hóa học: " Influence of the training set on the accuracy of surface EMG classification in dynamic contractions for the control of multifunction prostheses" potx

Báo cáo hóa học: " Influence of the training set on the accuracy of surface EMG classification in dynamic contractions for the control of multifunction prostheses" potx

Ngày tải lên : 19/06/2014, 08:20
... recognition for multifunction myoelectric hand control. IEEE/ASME Transactions on Mechatronics. 12(Suppl 3):282–290 (2007) 12. K Englehart, B Hudgins, A robust, real-time control scheme for multifunction ... remains a challenge for the ongoing studies along with propor- tional and simultaneous control. Conclusions The dynamic portions of EMG signals are important for real myocontrol systems and thus ... dete- riorates when more dynamic data are included in the training set. The OVR mode for SVM creates a bound- ary for each class separating it from all the others. Including the dynamic portion in...
  • 9
  • 472
  • 0
Báo cáo hóa học: " Research Article Solvability and Algorithms for Functional Equations Originating from Dynamic Programming" pptx

Báo cáo hóa học: " Research Article Solvability and Algorithms for Functional Equations Originating from Dynamic Programming" pptx

Ngày tải lên : 21/06/2014, 05:20
... theory of dynamic programming. I. Functions of points and point transformations,” Transactions of the American Mathematical Society, vol. 80, pp. 51–71, 1955. 3 R. Bellman, Dynamic Programming, ... referees for pointing out some printing errors. This study was supported by research funds from Dong-A University. References 1 S. A. Belbas, Dynamic programming and maximum principle for discrete ... equations arising in dynamic programming, ” Applied Mathematics and Mechanics, vol. 12, no. 1, pp. 31–37, 1991 Chinese. 21 C L. Wang, “The principle and models of dynamic programming. II,” Journal...
  • 30
  • 434
  • 0
báo cáo hóa học:" Research Article On Properties of Solutions for Two Functional Equations Arising in Dynamic Programming" pdf

báo cáo hóa học:" Research Article On Properties of Solutions for Two Functional Equations Arising in Dynamic Programming" pdf

Ngày tải lên : 21/06/2014, 11:20
... equations in dynamic programming, ” Aequationes Mathematicae, vol. 17, no. 1, pp. 1–18, 1978. 5 R. Bellman and M. Roosta, “A technique for the reduction of dimensionality in dynamic programming, ” ... Dynamic Programming, Princeton University Press, Princeton, NJ, USA, 1957. 2 R. Bellman, Methods of Nonlinear Analysis, vol. 2, Academic Press, New York, NY, USA, 1973. 3 S. A. Belbas, Dynamic ... theorems for functional equations arising in dynamic programming, ” Journal of Mathematical Analysis and Applications, vol. 98, no. 2, pp. 348–362, 1984. 8 Z. Liu, “Existence theorems of solutions for...
  • 19
  • 224
  • 0

Xem thêm