วันศุกร์ที่ 14 พฤษภาคม พ.ศ. 2553

ฟังก์ชั่น การทำงาน กับตัวอักษรของ PHP


ก็ห่างหายไปนานเลยนะเนี่ย กลับมาแล้วค๊าฟ Y Y วันนี้ได้ทำงานเกี่ยวกับ การใช้ฟังก์ชั่นต่างๆ ที่ทำงานเกี่ยว string เลยรวบรวมข้อมูลมาได้ เยอะพอควร เนื้อหาก็มีดังนี้ครับ

ฟังก์ชั่น การทำงาน
strlen() หาความยาวของข้อความ
strpos() หาตำแหน่งข้อความที่ค้นพบอยู่ในขณะนั้น
strrchr() ตัดข้อความจากตัวสุดท้ายที่พบจนถึงตัวท้ายสุด
str_repeat() แสดงข้อความซ้ำ ๆ ตามความต้องการ
strrev() เรียงสลับข้อความจากหลังไปหน้า
strrpos() หาต่ำแหน่งสุดท้ายที่ค้นพบ
strstr() ตัดข้อความบางส่วนตั้งแต่ตัวแรกที่ค้นพบจนถึงตัวสุดท้าย
strtolower() แปลงข้อความให้เป็นตัวพิมพ์เล็ก
strtoupder() แปลงข้อความให้เป้นตัวพิมพ์ใหญ่
str_replace() เปลี่ยนข้อความที่ค้นพบด้วยข้อความใหม่ที่ต้องการ
strtr() แปลงตัวอักษรที่แน่นอน
substr() ตัดตัวอักษรที่ต้องการใช้ออกมา
substr_replace() เปลี่ยนข้อความภายในส่วนของข้อความ
trim() ตัดช่องว่างด้านหน้าและด้านหลังข้อความ
ucfirst() เปลี่ยนตัวอักษรตัวแรกของข้อความให้เป็นตัวพิมพ์ใหญ่
ucwords() เปลี่ยนอักษรตัวแรกของแต่ละคำในข้อความ
stristr() ตัดข้อความบางส่วนตั้งแต่ตัวแรกที่พบจนถึงตัวสุดท้าย ทั้งตัวพิมพ์เลก็กและพิมพ์ใหญ่
strip_tags() ตัดแท็ก php และ Html ออกจากข้อความ
strchr() ตัดข้อความบางส่วนตั้งแต่ตัวแรกที่พบจนถึงตัวสุดท้าย
sprintf() ให้ค่าของข้อความที่มีรูปแบบ
similar_text() คำนวณความเหมือนระหว่าง 2 ข้อความ
setlocale() ปรับค่าข้อมูลท้องถิ่น
prinf() แสดงผลข้อความที่มีรูปแบบ
prin() แสดงผลข้อความ
parse_str() รับค่าข้อความใว้ในตัวแปร
Ord() แปลงตัวอักษรเป็นรหัส ASCII
ltrim() ตัดข้อความด้านหน้าข้อความออกไป
join() รวม Array เป็นข้อความ
implode() รวม Array เป็นข้อความ
htmlspecialchars() แสดงแท็ก Html
flush() เคลียร์บัฟฟอร์
eregi_replace() แทนที่ข้อความที่ค้นพบด้วยคำที่ต้องการ โดยไม่สนใจว่าจะเป็นตัวพิมพ์เล็กหรือใหญ่
ereg_replace() แทนที่ข้อความที่พบด้วยคำที่ต้องการ
explode() แยกข้อความโดยใช้เครื่องหมายแยก
echo() แสดงผลข้อความ
Chr() แปลงรหัส ASCII เป็นตัวอักษร
Chop() ตัดช่องว่างท้ายข้อความออกไป

วันพุธที่ 5 พฤษภาคม พ.ศ. 2553

ชนิดของตัวแปร

วันนี้ว่างๆ เลยไปลองหาข้อมูลเกี่ยวกับชนิดตัวแปรมาดูเล่นๆ ก็มีเนื้อหาประมาณนี้ครับ

VARCHAR (ย่อมาจาก Variable Character Field อ่านว่า วาร์คาร์ หรือ วาร์ชาร์) หมายถึงกลุ่มข้อมูลตัวอักขระที่ไม่สามารถระบุความยาวได้ คำนี้มักใช้เป็นชนิดข้อมูลในระบบจัดการฐานข้อมูล ชนิดข้อมูลประเภท varchar สามารถเก็บข้อมูลตัวอักขระขนาดเท่าใดก็ได้ที่ไม่เกินความยาวที่จำกัดไว้ การจำกัดความยาวก็แตกต่างกันออกไปในแต่ละฐานข้อมูล

TINYINT : สำหรับเก็บข้อมูลชนิดตัวเลขที่มีขนาด 8 บิต ข้อมูลประเภทนี้เราสามารถกำหนดเพิ่มเติมในส่วนของ "แอตทริบิวต์" ได้ว่าจะเลือกเป็น

TEXT : สำหรับเก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่สามารถเก็บได้มากขึ้น โดยสูงสุดคือ 65,535 ตัวอักษร หรือ 64KB เหมาะสำหรับเก็บข้อมูลพวกเนื้อหาต่างๆ ที่ยาวๆ

DATE : สำหรับเก็บข้อมูลประเภทวันที่ โดยเก็บได้จาก 1 มกราคม ค.ศ. 1000 ถึง 31 ธันวาคม ค.ศ. 9999 โดยจะแสดงผลในรูปแบบ YYYY-MM-DD

SMALLINT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 16 บิต จึงสามารถเก็บค่าได้ตั้งแต่ -32768 ถึง 32767 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 65535 (ในกรณี UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT

MEDIUMINT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 24 บิต นั่นก็หมายความว่าสามารถเก็บข้อมูลตัวเลขได้ตั้งแต่ -8388608 ไปจนถึง 8388607 (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 16777215 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ TINYINT

INT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 32 บิต หรือสามารถเก็บข้อมูลได้ตั้งแต่ -2147483648 ไปจนถึง 2147483647 ครับ (ในกรณีแบบคิดเครื่องหมาย) หรือ 0 ถึง 4294967295 (ในกรณีที่เป็น UNSIGNED หรือไม่คิดเครื่องหมาย) ซึ่งสามารถเลือก Attribute เป็น UNSIGNED และ UNSIGNED ZEROFILL ได้เช่นเดียวกับ

TINYINTBIGINT : สำหรับเก็บข้อมูลประเภทตัวเลขที่มีขนาด 64 บิต สามารถเก็บข้อมูลได้ตั้งแต่ -9223372036854775808 ไปจนถึง 9223372036854775807 เลยทีเดียว (แบบคิดเครื่องหมาย)

FLOAT[(M,D)] : ที่กล่าวถึงไปทั้งหมด ในตระกูล INT นั้นจะเป็นเลขจำนวนเต็ม หากเราบันทึกข้อมูลที่มีเศษทศนิยม มันจะถูกปัดทันที ดังนั้นหากต้องการจะเก็บค่าที่เป็นเลขทศนิยม ต้องเลือกชนิดขอฟิลด์เป็น FLOAT โดยจะเก็บข้อมูลแบบ 32 บิต

DOUBLE[(M,D)] : สำหรับเก็บข้อมูลประเภทตัวเลขทศนิยม เช่นเดียวกับ FLOAT แต่มีขนาดเป็น 64 บิต สามารถเก็บได้ตั้งแต่ -1.7976931348623157E+308 ถึง -2.2250738585072014E-308, 0 และ 2.2250738585072014E-308 ถึง 1.7976931348623157E+308

DECIMAL[(M,D)] : สำหรับเก็บข้อมูลประเภทตัวเลขทศนิยม เช่นเดียวกับ FLOAT แต่ใช้กับข้อมูลที่ต้องการความละเอียดและถูกต้องของข้อมูลสูง

DATETIME : สำหรับเก็บข้อมูลประเภทวันที่ และเวลา โดยจะเก็บได้ตั้งแต่ 1 มกราคม ค.ศ. 1000 เวลา 00:00:00 ไปจนถึง 31 ธันวาคม ค.ศ. 9999 เวลา 23:59:59 โดยรูปแบบการแสดงผล เวลาที่ทำการสืบค้น (query) ออกมา จะเป็น YYYY-MM-DD HH:MM:SS

TIMESTAMP[(M)] : สำหรับเก็บข้อมูลประเภทวันที่ และเวลาเช่นกัน แต่จะเก็บในรูปแบบของ YYYYMMDDHHMMSS หรือ YYMMDDHHMMSS หรือ YYYYMMDD หรือ YYMMDD แล้วแต่ว่าจะระบุค่า M เป็น 14, 12, 8

TIME : สำหรับเก็บข้อมูลประเภทเวลา มีค่าได้ตั้งแต่ -838:59:59 ไปจนถึง 838:59:59 โดยจะแสดงผลออกมาในรูปแบบ HH:MM:SS

YEAR[(2/4)] : สำหรับเก็บข้อมูลประเภทปี ในรูปแบบ YYYY หรือ YY แล้วแต่ว่าจะเลือก 2 หรือ 4 (หากไม่ระบุ จะถือว่าเป็น 4 หลัก) โดยหากเลือกเป็น 4 หลัก จะเก็บค่าได้ตั้งแต่ ค.ศ. 1901 ถึง 2155 แต่หากเป็น 2 หลัก จะเก็บตั้งแต่ ค.ศ. 1970 ถึง 2069

CHAR : สำหรับเก็บข้อมูลประเภทตัวอักษร แบบที่ถูกจำกัดความกว้างเอาไว้คือ 255 ตัวอักษร ไม่สามารถปรับเปลี่ยนได้เหมือนกับ VARCHAR หากทำการสืบค้นโดยเรียงตามลำดับ

TINYBLOB : สำหรับเก็บข้อมูลประเภทไบนารี ได้แก่ ไฟล์ข้อมูลต่างๆ, ไฟล์รูปภาพ, ไฟล์มัลติมีเดีย เป็นต้น คือไฟล์อะไรก็ตามที่อัพโหลดผ่านฟอร์มอัพโหลดไฟล์ในภาษา HTML โดย TINYBLOB นั้นจะมีเนื้อที่ให้เก็บข้อมูลได้ 256 ไบต์


TINYTEXT : ในกรณีที่ข้อความยาวๆ หรือต้องการที่จะค้นหาข้อความ โดยอาศัยฟีเจอร์ FULL TEXT SEARCH ของ MySQL เราอาจจะเลือกที่จะไม่เก็บข้อมูลลงในฟิลด์ประเภท VARCHAR ที่มีข้อจำกัดแค่ 256 ตัวอักษร แต่เราจะเก็บลงฟิลด์ประเภท TEXT แทน โดย TINYTEXT นี้ จะสามารถเก็บข้อมูลได้ 256 ตัวอักษร

BLOB : สำหรับเก็บข้อมูลประเภทไบนารี เช่นเดียวกับ TINYBLOB แต่สามารถเก็บข้อมูลได้ 64KBM

EDIUMBLOB : สำหรับเก็บข้อมูลประเภทไบนารี เช่นเดียวกับ TINYBLOB แต่เก็บข้อมูลได้ 16MB

MEDIUMTEXT : เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 16,777,215 ตัวอักษร

LONGBLOB : สำหรับเก็บข้อมูลประเภทไบนารี เช่นเดียวกับ TINYBLOB แต่เก็บข้อมูลได้ 4GB

LONGTEXT : เก็บข้อมูลประเภทตัวอักษร เช่นเดียวกับ TINYTEXT แต่เก็บข้อมูลได้ 4,294,967,295 ตัวอักษร

SET : สำหรับเก็บข้อมูลที่เป็นกลุ่มของข้อมูลที่ยอมให้เลือกได้ 1 ค่าหรือหลายๆ ค่า ซึ่งสามารถกำหนดได้ถึง 64 ค่า

ENUM(Enumeration) >> หมายถึงเซตของข้อมูลชุดหนึ่งที่มีจำนวนสมาชิกที่กำหนดไว้แน่นอนและทราบค่าทุกตัว ซึ่งมักจะเป็นข้อมูลที่มีลักษณะคงที่

BINARYระบบเลขที่มีสัญลักษณ์เพียงสองตัวคือ 0 (ศูนย์) กับ 1 (หนึ่ง) บางครั้งอาจหมายถึงการที่มีโอกาสเลือกได้เพียง 2 ทาง เช่น ปิดกับเปิด, ไม่ใช่กับใช่, เท็จกับจริง, ซ้ายกับขวา เป็นต้น

BOOL คือข้อมูลที่มีค่าเป็นจริง (True) หรือเท็จ (False)

VARBINARY คือ มีลักษณะการเก็บคล้าย Varcha คือการเก็บข้อมูลตามที่รับมาจริงเท่านั้น มีขนาดสูงสุดมากถึง 8000 ไบต์


จากที่ดูๆๆ แล้วที่เอามาใช้จริงๆ คงไม่กี่ตัวนัก เพราะบางตัวไม่เหมาะกับงานเล็กๆ ที่ทำอยู่ หากเลือกใช้ผิดอาจจะทำให้เปลืองพื้นที่การเก็บข้อมูล

วันพฤหัสบดีที่ 29 เมษายน พ.ศ. 2553

twitter oauth

      วันนี้จะแนะนำใหนรู้จักกับ  Twitter Oauth ครับ คือเป็นส่วนหนึ่งตัวหนึ่งของ Twitter API ที่ช่วยให้เราสามารถเชื่อต่อ Application ของเรากับเจ้าตัว Twitter ได้ เช่นเราสร้างแอพถ่ายรูปแล้วอยากให้รูปไปโผล่บน Tweet  ของเรา ก็จะเชื่อมผ่าน Twitter Oauth  โดยจะมีการยืนยันตัวตนเพื่อรักษาความปลอดภัย โดยวิธีการสร้างง่ายมากครับ เพราะปัจจุบันมีนักพัฒนาได้เขียนเป็นไลบลารี่ไว้อยู่แล้ว  เราสามารถมาพัฒนาต่อในรูปแบบต่างๆได้เลยครับ
      ในปัจจุบันนั้น Oauth ไม่ได้มีเฉพาะ Twitter  ทางเว็บไซต์ที่เป็นโซเชียลเว็บส่วนมากก็จะมีเจ้า Oauth กันทั้งนั้น เช่น facebook ที่เราใช้เชื่อมต่อเล่นเกมส์ต่างๆกับบัญชีของเรา Google ,Hotmail ฯลฯ มีเยอะเลย สนใจตัวไหนต้องลองศึกษาเพิ่มเติมเอา แต่แนวทางการเขียนก็คงไม่ต่างกันมากครับ

ป.ล. ทิ้งท้ายด้วยลิ้งค์ Developers ของ Twitter ครับผม
https://dev.twitter.com/docs/auth/oauth

วันอังคารที่ 6 เมษายน พ.ศ. 2553

ฝึกงานวันที่ 12 การเขียน requirement

สำหรับวันนี้ได้เขียนความต้องการของระบบนะครับทำให้ได้รู้หลักในการคิดเพิ่มขึ้นก็ขอพุูดอย่างคร่าวๆ
1 การเก็บข้อมูลจากรู้ค้าควรเก็บใ้ห้ละเอียดเพื่อเมื่อเรานำมาวิเคราะห์จะได้มีเนื้อหาครบถ้วน
2. การวิเคราะห์ข้อมูลควรแตกงานเป็นงานย่อยเพื่อสะดวกในการจัดการงาน
3. วางแผนการทำงานโดยให้นึกถึงเวลาที่มีด้วย เพราะอาจทำให้เราต้องทำงานหนักขึ้นโดยที่เราไม่ได้อะไรเลย
4. หากว่างานที่รับมามีมาก แต่ เวลาที่ทำจริงๆมีน้อย ให้ทำงานที่ได้ในช่วงเวลานั้นให้เสร็จแล้วก็บอกกับเจ้าของงาน
ไปเลยว่างานที่ยังไม่ได้ทำ ทำไมไม่เสร็จ เพราะ เวลามันมีไม่พอนั่นเอง
5. ตัดงานที่ไม่ใช่งานหลักออกไปก่อน ให้วิเคราะห์ดูว่างานไหนที่จำเป็น ให้ทำงานนั้นให้เสร็จก่อน

หากทำได้ประมาณนี้รับรองว่างานไม่มีท่วมหัวแน่ๆครับ

วันจันทร์ที่ 5 เมษายน พ.ศ. 2553

ฝึกงานวันที่ 11 คำสั่งแสดงผล ใน PHP

สำหรับวันนี้ได้ใช้ฟังก์ชั่นที่เกี่ยวกับการดึงข้อมูลมาใน PHP มาแสดงนะครับ โดยมีอยู่ตัวนึงที่น่าสนใจ คือ
var_dump คำสั่งตัวนี้จสามารถดึงข้อมูลในตัวแปรมาแสดงได้ โดยไม่คำนึงถึงชนิดประเถทของตัวแปร
เหมาะกับการทำงานแบบไดนามิคส์และไม่มีการประกาศประเภทข้อมูลให้ตัวแปรอย่างชัดเจน หมายความว่าจะไม่ทราบประเภทข้อมูลปัจจุบันที่แน่นอน ฟังก์ชัน var_dump แสดงประเภทและค่าของตัวแปรในผลลัพธ์ สำหรับข้อความ var_dump ให้จำนวนตัวอักษรในข้อความ

print_r ฟังก์ชัน print_r คล้ายกับ var_dump แต่สร้างผลลัพธ์ที่อ่านได้ง่าย print_r ให้มีการเพิ่มค่าตัวเลือก(เรียกว่า พารามิเตอร์) ที่บอกให้ฟังก์ชันนี้ส่งออกผลลัพธ์เป็นข้อความแทนที่การส่งผลลัพธ์ออกไป

var_exportฟังก์ชันแสดงผลสุดท้ายคือ ฟังก์ชัน var_export ที่คล้ายกับ var_dump มาก ยกเว้นผลลัพธ์ได้รับการนำเสนอค่าของข้อมูลแบบคำสั่ง PH

วันศุกร์ที่ 2 เมษายน พ.ศ. 2553

ฝึกงานวันที่ 10 drupal 7


l
วันี้เรามาทำความรู้จักกับดรูปาลกันนะครับ

ดรูปาล (Drupal) เป็นระบบจัดการเนื้อหาเว็บ (Content Management System) แบบโอเพนซอร์ส เริ่มต้นพัฒนาโดย Dries Buytaertในภายหลังดรูปาลมีจุดเด่นในเรื่องสถาปัตยกรรมภายในที่ยืดหยุ่น ชื่อ Drupal นั้นเป็นการสะกดภาษาดัทช์คำว่า druppel ด้วยภาษาอังกฤษ ความหมายของ druppel นั้นแปลว่า drop (หยดน้ำ) ซึ่งมีที่มาจากเว็บไซต์แรกที่ใช้ Drupal คือ drop.org

ข้อดีของดรูปาลนะครับ
ติดตั้งง่าย
Drupal มาพร้อมกับตัวติดตั้ง (Installer) ที่ใช้งานได้ง่ายโดยไม่จำเป็นต้องมีความรู้ทางเทคนิคมากนัก เพียงแค่สร้างฐานข้อมูลและย้ายไฟล์ Drupal ไปบนเซิร์ฟเวอร์ งานที่เหลือนั้นตัวติดตั้งของ Drupal จะช่วยจัดการให้ทั้งหมด

URL อ่านง่าย
Drupal มาพร้อมกับความสามารถในการสร้าง URL ที่เหมาะสมกับ search engine ในตัว สร้างเว็บด้วย Drupal แล้วคุณอาจตกใจว่าเว็บของคุณมีอันดับดีอย่างที่ไม่เคยคิดมาก่อน


พร้อมสำหรับบล็อกและเว็บบอร์ด
Drupal เป็น CMS ที่ออกแบบมาเพื่อเว็บชุมชนขนาดใหญ่เป็นเป้าหมายหลัก Drupal จึงมีรวมส่วนของเว็บบล็อกและเว็บบอร์ดมาให้ในตัวโดยไม่ต้องติดตั้งอะไรเพิ่ม เติม แค่ลง Drupal สมาชิกในเว็บไซต์ของคุณสามารถเขียนบล็อกส่วนตัว และสนทนาผ่านเว็บบอร์ดได้ทันที

RSS Feed ในตัว
ปัจจุบัน RSS หรือ Feed ได้รับความนิยมมาก ผู้อ่านสามารถสมัครสมาชิก RSS เพื่อติดตามข่าวสารอย่างสะดวกและอัตโนมัติ ความสามารถด้าน RSS ถูกรวมเข้ามาใน Drupal ไม่ว่าคุณจะสร้างเนื้อหาแบบใดในเว็บไซต์ก็ตาม Drupal จะสร้าง RSS Feed ให้คุณโดยอัตโนมัติ เป็นการอำนวยความสะดวกใหักับผู้เยี่ยมชมเว็บของคุ

lDigg this - อำนวยความสะดวกให้ผู้ใช้ส่งเรื่องบนเว็บของคุณไปยัง Digg และ social bookmark อื่นๆ
lAdSense - หารายได้เข้าเว็บ ผ่านโฆษณาของ Google AdSense ซึ่งติดตั้งผ่านหน้าเว็บได้สะดวก
lGoogle map - เชื่อมข้อมูลเว็บไซต์เข้ากับแผนที่ Google Maps
lUbercart - ระบบอีคอมเมิร์ซครบวงจร
lXML Sitemap- ส่งข้อมูลเว็บไซต์ไปยัง search engine อย่างอัตโนมัติ เพื่อเพิ่มอันดับในผลค้นหา
l

วันจันทร์ที่ 29 มีนาคม พ.ศ. 2553

ฝึกงานวันที่ 6 testing

unit testing -มีลักษณะเป็นประเภท white box เป็นหน่วยที่เล็กที่สุดของโปรแกรม อาจจะเป็นพวก class ย่อยๆ เมธอดย่อยๆ

integration testing - คือเอา unit แต่ละตัวมาต่อๆกัน แล้ว test เพื่อทดสอบ การทำงานในแบบต่างๆ

functional testing - คือนำ integrated component มารวมแล้วทดสอบตามรายการ functionality ขั้นนี้มักจะเป็น black box

system testing - อันนี้จะมี flow มากขึ้น คือทดสอบทั้งระบบ เพื่อทดสอบการทำงานโดยรวม

acceptance testing - อันนี้ถ้าทดสอบไม่ผ่านก็ไม่ต้องเอาเงินครับ คือทดสอบกับความพอใจของลูกค้านั่นเอง