29.5.23
Test AMR Fleet Management program
10.7.22
16.9.20
RT ToolBox3 Standard version 1.70Y
5.6.14
ย้ายที่เก็บไฟล์หน้าเว็บไปไว้โฟวเดอร์อื่น บน Apache2 Mapping URLs to Filesystem Locations
ปัจจุบันการมาของ cloud storage ได้เข้ามาให้บริการกับผู้ใช้งานเยอะแยะมากมาย หลากหลายเจ้าให้เลือกใช้ ผมก็เป็นคนหนึ่งเหมือนกันที่ชอบใช้ ไม่ว่าจะเป็น Copy.com , Dropbox , OneDrive หรือแม้กระทั่ง Google Drive ทีนี้ ผมก็มีความคิดว่า หากเราย้าย folder เก็บไฟล์หน้าเว็บเพจมาไว้ที่ folder drive เหล่านี้ ก็จะทำให้เรา สามารถที่จะทำการ sync ไฟล์หน้าเว็บที่เป็นซอร์สโค๊ด เอาไว้ทำงานต่อที่บ้่าน หรือที่ไหนๆ ก็ได้
จริงๆ แล้วใน apache2 ที่เป็นโปรแกรมสำหรับทำให้คอมพิวเตอร์ของเราให้กลายเป็น web server ที่ให้บริการเกี่ยวกับข้อมูลข่าวสารผ่านหน้า web browser จะระบุที่เก็บไฟล์ของซอร์สโค๊ดไว้ที่ DocumentRoot อยู่แล้ว เช่น ถ้า DocumentRoot /var/www/html แสดงว่าเราต้องเก็บไฟล์ที่เป็นโค๊ดไว้ที่ /var/www/html ซึ่งจะทำให้เราสามารถเรียกไฟล์ที่อยู่ในโฟวเดอร์นั้นที่ URL ผ่านหน้าเว็บได้ เช่น
http://www.example.com/fish/guppies.html
แสดงว่ามี โฟล์เดอร์ชื่อ fish อยู่ภายใน /var/www/html และมีไฟล์ guppies.html แสดงข้อมูลให้ client ที่เรียกมันได้เห็น เอาหล่ะ มาเข้าเรื่องดีกว่า
ถ้าผมมี folder ที่แยกย่อยต่างหาก ไม่อยากเอาโค๊ดตัวเองไปปนใน /var/www/html ถ้าเป็นใน windows เราก็สามารถกำหนดให้แตกต่างได้เช่น ผมเก็บไว้ที่ Drive D:\Copy\WebApp ผมก็แค่ ไปเพิ่มคำสั่งต่อไปนี้ในไฟล์ httpd.conf ดังนี้
กำหนด ชื่อเล่นมันก่อน ในที่นี้ผมกำหนด
Alias /WebApp/ "D:/Copy/WebApp/"
<Directory "D:/Copy/WebApp">
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ระวังเรื่องเครื่องหมาย “ และจำนวน / ด้วยนะครับ ต้องให้เป็นไปตามรูป
จากนั้น Restart Apache 1 รอบ แล้วทดลองนำไฟล์หน้าเว็บ ไม่ว่าจะเป็น html หรือ php ไปวางไว้ที่ D:\Copy\WebApp แล้วเรียกชื่อไฟล์นั้น เช่น ผมเอาไฟล์ hello.php ไปวางไว้ที่ D:\Copy\WebApp\hello.php จากนั้นเรียกไฟล์ผ่าน URL ดังนี้
http://localhost/WebApp/hello.php ก็จะปรากฏหน้าหน้าเว็บที่เราเขียนไว้ใน hello.php
เพียงเท่านี้เราก็จะได้เก็บไฟล์โค๊ดไว้ที่ cloud storage ซึ่งจะทำให้เราสามารถกลับมาทำงานต่อที่บ้านได้อย่างไม่มีปัญหาครับ
ขอให้สนุกกับการเขียนเว็บนะครับ
7.3.14
Yii CGridView: Render customized
ถ้าต้องการเปลี่ยนการแสดงผลแค่บาง Cell ใน GridView table ใน Yii Framework วันนี้ ลองเอาวิธีที่ผมลองนำวิธีจาก
CGridView: Render customized/complex datacolumns มาใช้ดูครับ
จากโจทย์ที่ต้องการ คือผมต้องการเปลี่ยนสีของตัวหนังสือที่อยู่ใน Cell ของช่องข้อมูลที่ต้องการ โดยจะทำการเปรียบเทียบ หากข้อมูลในช่องนั้น มีค่ามากกว่า 0 ให้ทำการเปลี่ยนสีฟอนต์ของตัวหนังสือให้เป็นสีแดง ดังรูป
อันดับแรกให้ทำการเพิ่ม function ใน Class ใน Controller ก่อน ในที่นี้ ผมทำการเพิ่ม function renderGridCell ใน QuizController เพื่อให้ส่วนของ View ทำการเรียก renderGridCell ไปใช้งาน
protected function renderGridCell($data)
{
//var_dump($data);
if($data["cnt"]>0){
echo '<font color="red">'.$data["cnt"].'</font>';
} else {
echo $data["cnt"];
}
}
ในส่วนของ View ที่ Widget bootstrap.widgets.TbGridView ผมทำการเรียกใช้ renderGridCell ดังรูป
เมื่อแสดงผล เราจะได้ตัวหนังสือสีแดง เมื่อค่าที่นำมาเปรียบเทียบมากกว่า 0
ลองนำไปประยุกต์ใช้กันดูนะครับ ขอให้สนุกกับ Yii Framework นะครับ
19.12.13
yii-api-1.1.14.chm
ผมมักชอบที่จะเปิดอ่านคู่มือ หรือ help จากไฟล์ CHM ซะมากกว่า ด้วยเหตุผลที่ว่า มันค้นหาคำที่เราป้อนได้ง่าย และรวดเร็วกว่า นอกจากนั้น ไฟล์ CHM ยังพกพาง่าย และไม่ใหญ่จนเกินไป ซึ่งเสียดายเพียงอย่างเดียว มันไม่สามารถ take note ลงบนไฟล์ ได้เหมือนไฟล์ pdf
วันนี้ ผมได้ลองนำ Yii API 1.1.14 class reference ซึ่งเดิมทีของ Yii official เขาทำไว้เป็น html ไฟล์ แต่ ด้วยความที่มันค้นหาคำ หรือ keyword mี่เราต้องการได้ยาก ผมจึงนำมาแปลงเป็น chm file ซะเลย ทำเสร็จแล้วก็เลยเอามาแชร์เพื่อนๆ หามีบางท่านกำลังเล่นกับ Yii framework เหมือนกับผม
เวอร์ชั่นที่นำมาแปลงนั้น เป็นเวอร์ชั่น 1.1.14 ซึ่งต่อจากเวอร์ชั่นนี้ ก็เป็นเวอร์ชั่น 2.0 ซึ่งผมก็ยังไม่ได้ลอง เพราะยังไม่เข้าใจมันเท่าไหร่ และเวอร์ชั่น 1.1.14 ก็ยังเป็นเวอร์ชั่นที่ stable อยู่ ก็เลยยังไม่คิดที่จะเปลี่ยน
ใครสนใจ Yii framework ก็ดาวน์โหลด yii-api-1.1.14.chm ไปติดเครื่องไว้นะครับ เอาไว้ดำคำสั่งเวลาเขียนโค๊ด
11.10.13
One comand make Yii Controller
หลังจากเราติดตั้ง Yii framework ไปเรียบร้อยแล้ว สิ่งที่เราต้องทดลองทำเป็นอย่างแรก คือ สร้าง Controller ด้วยของเราเอง
ในการที่จะแสดงหน้าเพจ สักหนัาหนึ่งบน Yii Framework เราจะต้องสร้างไฟล์ที่เป็น controller หลังจากนั้น ก็กำหนด method ที่เป็น action เพื่อทำงานอะไรสักอย่าง จากนั้น ก็ส่งผลลัพธ์ไปแสดงที่ view
หากเราจะสร้างเอง ก็สามารถทำได้ แต่ จะต้องทำตามที่ Yii เขากำหนดมา นั่นก็คือ
สร้างไฟล์ controller โดยชื่อนำหน้าไฟล์ XXXcontroller.php จะเป็น controller id ในที่นี้คือ XXX และต้องสร้างไฟล์ไว้ใน /protected/controllers/
จากนั้นเขียน method ภายในไฟล์นี้ โดย method ต้องมีชื่อรูปแบบ public function actionYYY(){......} ซึ่ง YYY คือ action id
จากนั้นจะต้องไปสร้่างไฟล์ที่เอาไว้แสดงผล หรือ render ข้อมูล ในที่นี้ผมเรียกว่า view file ก็แล้วกัน โดยจะต้องมีชื่อสอดคล้องกับที่กำหนดใน method render และจะต้องสร้างไว้ใน folder ที่ชื่อเดียวกันกับ Controller id (ในที่นี้คือ XXX)ที่อยู่ภายในโฟวเดอร์ /views/ อีกที ดังนั้น จะได้ path folder /views/XXX นั่นเอง
สรุปว่าใน actionYYY จะเป็นรูปแบบนี้
public function actionYYY()
{
this->render('ชื่อ view file')
}
เวลาที่เราเรียกใช้งาน ก็จะเป็นรูปแบบนี้
http://localhost/myweb/index.php?r=XXX/YYY
โดยที่
r หมายถึง route หรือเส้นทางที่จะเป็นตัวบอกให้ controller เข้ามารับงานไปทำ
XXX คือชื่อ Controller id
YYY คือชื่อ action id
ซึ่งทั้งหมดนี้ เป็นขั้นตอนพื้นฐานเพื่อให้ได้หน้าเว็บ 1 หน้า ดูเหมือนจะเยอะ แต่ในแง่การพัฒนา และบำรุงรักษาโค๊ด ผมว่า Yii framework เขาทำไว้ดีแหละ
ประเด็นของหัวข้อนี้ ผมอยากจะบอกว่า มีวิธีในการสร้างหน้าเว็บบน Yii ได้เร็ว กว่าการสร้่างไฟล์ทั้งสอง สามไฟล์ โดยมีรูปแบบตามที่ผมได้บอกไว้แล้วข้างต้น ด้วยการใช้ Yiic.bat ครับ (สำหรับ Linux เราจะใช้ไฟล์ Yiic.php) ซึ่งจะทำกันบน command line console ครับ
อันดับแรกก็เปิด command line console ของเราก่อน แล้วก็เข้าไปที่ directory ทีเก็บโปรเจค yii ของเรา ในที่นี้ สมมติว่าชื่อ train ผมเก็บไว้ที่ D:\www\
cd D:\www\train
พอเราเข้าไปแล้ว ก็ให้เรียก yiic.bat ที่อยู่ใน /framework/ ภายใต้ yii directory ที่เก็บ framework ในที่นี้ ผมเก็บไว้ที่ yii-1.1.14
D:\www\train>D:\www\yii-1.1.14\framework\yiic shell
เราจะอยู่ใน shell ของ yii สังเกตว่า prompt จะเปลี่ยนไป
ต่อมาเราจะมาสร้าง controller สำเร็จรูปกันเลยครับ ด้วยคำสั่ง
controller [controller id] [action id]
ดังนั้น หากผมต้องการสร้าง controller id = message และ action id ที่ชื่อ helloworl จะได้
ลองเช็คดูในโปรเจคใน Netbean เราจะเห็นไฟล์ถูกสร้างขึ้นมา
ลองเรียกหน้าเว็บ http://localhost/train/index.php?r=message/helloworld ดูครับ
มันจะง่าย และชัวร์กว่า วิธีสร้างเอง นอกจาำกนี้ยังสามารถสร้าง model form module อื่นๆ ได้อีก ลองพิมพ์ help ที่ shell ของมันครับ
13.3.13
How to install ChartDirector on Linux Server
สำหรับการติดตั้ง php ChartDirector บน Linux Server มีขั้นตอนดังนี้
หลังจากเราได้ทำการ login ผ่าน ssh เข้าไปที่ web server ของเราแล้ว ให้เข้าไปที่ directory web root ของเราก่อน ในที่นี้ server ผม มี web root directory อยู่ที่ /var/www/html
[root@host lib]#cd /var/www/html
(ไม่ต้องพิมพ์ [root@host lib]# นะ)
จากนั้น ทำการดาวน์โหลดไฟล์ที่ถูกบีบอัดจากเว็บของ advsofteng.com ที่เก็บ ChartDirector ผมใช้วิธีก๊อปปี้ลิ้งค์จากหน้าเว็บ แล้วดาวน์โหลดด้วยคำสั่ง wget
[root@host html]# wget http://download2.advsofteng.com/chartdir_php_linux.tar.gz
รอสักครู่ (ใช้เวลาแปรผกผันตามความแรงของอินเตอร์เนตของเรา)
ซึ่งน่าจะได้ไฟล์ chartdir_php_linux.tar.gz อยู่ในโฟวเดอร์ที่เราอยู่ตอนนี้ (นั่นก็คือ /var/www/html )
แตกไฟล์ ด้วยคำสั่ง
[root@host lib]#gunzip chartdir_php_linux.tar.gz
แล้วตามด้วย
[root@host html]# tar xvf chartdir_php_linux.tar
ทีนี้ เราต้องก๊อปปี้ไฟล์ไลบรารี่ของ ChartDirector ไปไว้ที่ extension ไดเรกทอรี่ของ linux แต่ก่อนจะก๊อปปี้ไฟล์ไลบรารี่เหล่านั้น ต้องทำการเข็คก่อนว่า php มองเห็น extension ไดเรกทอรี่ของ linux อยู่ที่ไหน ด้วยคำสั่ง
[root@host html]# php -r "phpinfo();" | grep extension_dir
จะได้
extension_dir => /usr/lib/php/modules/ => /usr/lib/php/modules/
sqlite3.extension_dir => no value => no value
[root@host html]#
ผมได้คำตอบว่า อยู่ที่ /usr/lib/php/modules/
ผมทำการก๊อปปี้ไฟล์ที่อยู่ในโฟวเดอร์ ChartDirector/lib/ ทั้งหมดไปไว้ที่ /usr/lib/php/modules/
[root@host html]# cp -R ChartDirector/lib/* /usr/lib/php/modules/.
จากนั้น จะต้องทำการกำหนดให้ php เรียกไฟล์ไลบรารี่ให้ตรงกับเวอร์ชั่นของ php ซึ่งเราต้องทำการเช็คเวอร์ชั่น php ของเราก่อน ด้วยคำสั่ง php -v
[root@host modules]# php -v
PHP 5.3.3 (cli) (built: Jul 3 2012 16:40:30)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
ของผมเวอร์ชั่น 5.3.3 ซึ่งถ้าดูตามคู่มือของ ChartDirector แล้ว ผมจะต้องทำการกำหนดให้ php เรียก phpchartdir530.dll
ดังนั้น ผมต้องเข้าไปกำหนด extensionไฟล์ ใน php.ini ซึ่งใน linux จะเก็บไฟล์นี้ไว้ที่ /etc/php.ini
เข้าไปแก้ไขไฟล์นี้ด้วยคำสั่ง
[root@host html]# vim /etc/php.ini
มองหาบรรทัด extension_dir="/usr/lib/php/modules/"
แล้วเพิ่มบรรทัด extension="phpchartdir530.dll" ต่อท้ายบรรทัดดังกล่าว
ทำการบันทึกไฟล์ php.ini
ทำการรีสตาร์ทเซอร์วิส apache เพื่อให้การกำหนดค่าของเรามีผล (บังคับใช้) ด้วยคำสั่ง /etc/init.d/httpd restart
[root@host html]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@host html]#
ถ้าไม่มี Error ใดๆ ก็น่าจะสำเร็จ ให้ลองเปิดตัวอย่าง ChartDirector ของเรา ผ่านหน้าเว็บบราวเซอร์
http://ชื่อhostของเรา/ChartDirector/phpdemo/ น่าจะปรากฏตัวอย่างกราฟให้เราเห็น
ขอให้สนุกกับ ChartDirector ครับ
19.12.12
Multi Tabbed PUTTY
หลายๆ คนที่ต้องเกี่ยวข้องกับ Server Linux หรือต้องดูแลเครื่องคอมพิวเตอร์ที่ติดตั้ง Linux คงจะคุ้นเคยกับเครื่องมือตัวหนึ่งที่ชื่อ Putty ซึ่งเป็นโปรแกรมเล็กๆ ที่เอาไว้สำหรับเป็นหน้าต่างในการติดต่อสื่อสารกับคอมพิวเตอร์เครื่องอื่นๆ ที่เปิด Port 22 telnet ไว้ ผมก็คนหนึ่งเหมือนกันที่ใช้โปรแกรม Putty บ่อยๆ แทบจะบอกว่า ทุกครั้งที่ติดตั้งลงวินโดวน์ใหม่ ผมจะต้องดาวน์โหลดโปรแกรม putty นี้ มาไว้ติดเครื่องอยู่เสมอ เพราะความที่มันใช้งานง่าย และมีความจำเป็นเมื่อจะต้อง telnet เข้าไปที่เครื่่องที่ติดตั้ง linux ไว้ และเปิดพอร์ต 22 ไว้
ก็มีหลายครั้งที่จะต้องเปิดหน้าต่างโปรแกรม putty มากกว่า 1 หน้าต่างในการรีโมทเข้าไปที่เครื่องคอมพิวเตอร์ปลายทาง ซึ่งบางทีเราก็เปิดหน้าต่างหนึ่งสำหรับเฝ้ามอง log message ไปพร้อมกับการแก้ไข คอนฟิค หรือกระทำการบางอย่างกับคอมพิวเตอร์เครื่องนั้น ไปพร้อมๆ กัน ซึ่งถ้าจอ คอมพิวเตอร์ของเราใหญ่พอ ที่จะเปิดหลายๆ หน้าต่าง และจัดเรียงซ้อนกันไปมา คงไม่ใช่ปัญหา แต่ ถ้าจอคอมพิวเตอร์ของเพื่อนๆ มันไม่ได้ใหญ่ขนาดนั้นหล่ะก็ มองหาโปรแกรมอื่นๆ ที่ปรับแต่งได้มากกว่า Putty ธรรมดาเหอะๆ
โปรแกรม MTPutty หรือ Multi-tabbed Putty คือโปรแกรมที่ถูกพัฒนาด้วย win32 ให้ทำการซ้อนหน้าต่างโปรแกรม putty อีกทีหนึ่ง ให้สามารถจัดเรียงกันแบบไหนก็ได้ ตามใจ ซึ่งช่วยให้หน้าต่างโปรแกรม putty ของเรา ถูกยึดไว้ในหน้าต่างเดียวกัน สะดวกต่อการใช้งานมากๆ
จริงๆ แล้ว โปรแกรม MTPutty ไม่ได้ทำหน้าที่เหมือนโปรแกรม Putty เลย เพียงแต่มันทำหน้าที่เสริม คือ ให้หน้าต่างโปรแกรม putty สามารถเปิดได้หลายๆ หน้าต่าง แต่ให้อยู่ใน ฟอร์มของหน้าต่างหลักเท่านั้นเอง นั่นก็หมายความว่า ก่อนใช้งานโปรแกรม MTPutty นั้น เพื่อนๆ ต้องมีโปรแกรม Putty ติดตั้งอยู่ก่อนแล้ว และเมื่อทำการเรียกโปรแกรม MTPutty ในครั้งแรก โปรแกรมจะถามหาโปรแกรม Putty (ในกรณีที่มันหาไม่เจอ ถ้าไม่ได้อยู่ที่โฟวเดอร์เดียวกัน) เพื่อทำการเรียกค่าต่างๆ ที่เราเคยตั้งค่าไว้ที่โปรแกรม Putty มาเป็นค่าเริ่มต้นการใช้งานโปรแกรม MTPutty นั่นเอง
ลองไปใช้งานกันดูครับ ผมเห็นว่าสะดวกดี จึงมาแนะนำให้เพื่อนๆ ลองเอาไปใช้งานกันดู ฟรี ครับ
7.12.12
Getting started Yii Framework เอากับเขาบ้าง
ช่วงนี้ ศึกษาหลายศาสตร์เหลือเกิน web programming , linux programming , Embedded System ก็เอา ปนเป กันไปหมด ตามประสา คนชอบศึกษา แต่ไม่ได้เอาทำมาหากินเป็นเรื่องเป็นราวเท่าไหร่
จริงๆ ผมก็เขียน PHP มาหลายปีแหละ ตอนที่เขียนแรกๆ ผมก็ยังวนลูปไม่เป็นเลย จะปริ้นท์ตาราง table ทีหนึ่ง ก็ hard code เลย ทำที่ละ row ที่ละ column ต้องสารภาพ ว่าทำแบบนั้นจริงๆ พอเริ่มเขียนมาเรื่อยๆ ก็ไม่ไหวแหละ ก็ต้องมาวนลูปเอา เพราะความที่มันทำแบบวิธีเก่าๆ ไม่ไหว มาถึงตอนนี้ ผมก็ว่าการเขียนโค๊ดที่ต้องคอย Include เอา Header.php , footer.php , menu.php เข้ามา ผมว่ามันก็น่าเบื่อไม่ใช่น้อย และก็อีกเช่นเคย ความอดทนของผมก็เริ่มหมดไป ในที่สุดต้องหาวิธีที่มันง่ายกว่านี้หน่อย
ผมเคยพยายามที่จะลองใช้ tool ที่ gen template ให้ แต่ก็ไม่ไหว ไม่ถนัดเอาเสียเลย จนมาเร็วๆ นี้ ได้ยินชื่อของ Framework ตัวหนึ่งที่เค้าว่ากันว่า ช่วยให้งานของเรามีระบบมากขึ้น และสามารถขจัดปัญหาเรื่องการต้องมา maintenance โค๊ดในอนาคตได้ดีเลย เพราะมันเป็นการแยกส่วนของการ coding และการ design ออกจากกัน ซึ่งนั่นแหละเป็นสิ่งที่ผมตามหามานาน (หลังจากที่พยายามทำเองมาหลายครั้ง แต่ก็เละทุกครั้ง T_T )
Yii Framework เป็น PHP Framework ตัวหนึ่งในหลายๆ Framework ที่ช่วยให้นักพัฒนาโปรแกรม PHP สามารถทำงานได้อย่างสะดวก ภายใต้รูปแบบการพัฒนาโปรแกรมตามแบบฉบับของ Yii Framework ซึ่งออกแบบให้ Framework ทำงานแบบ MVC โดยแยกส่วนของการออกแบบ Design และ การ Coding ออกจากกัน นอกจากนี้ ยังทำให้ผู้ที่มาพัฒนาต่อนั้น ไม่เกิดความสับสนกับสไตล์ของแต่ละคน เพราะว่า ผู้ที่ใช้ Yii Framework จะต้องทำตามรูปแบบ Framework ตัวนี้ วางเอาไว้ ซึ่งทำให้เกิดทิศทางในการพัฒนาระบบใหญ่ๆ ไปในทิศทางเดียวกัน
Yii Framework เป็น Framework ที่ได้รับการจัดอันดับให้เป็น Framework อันดับหนึ่ง หลายปีซ้อน นั่นแหละทำให้ผม สนใจที่จะศึกษา Framework ตัวนี้ และหาหนทางที่จะนำมันมาใช้กับงานปัจจุบันของผมให้จงได้ เพราะผมทนไม่ได้กับการเขียนโค๊ดแบบเดิมๆ ของผมอีกต่อไปแล้ว :P
มาเริ่มกันเลยดีกว่า
- ก็เริ่มจากดาวน์โหลดโค๊ด จาก http://www.yiiframework.com/download/ เลือกเวอร์ชั่นที่ stable แล้ว
- แตกไฟล์ออก ใน webroot folder ของเรา (ซึ่งของผมเก็บไว้ที่ C:\AppServ\www ) จะเปลี่ยนชื่อโฟล์เดอร์หรือเปล่า ก็ตามแต่ใจ
- ทดลองเรียก http://localhost/yiiRoot/requirements/ เพื่อเช็คความพร้อมของระบบของเรา ซึ่งน่าจะไม่มี Failed สีแดงเกิดขึ้น
- สร้างเว็บโปรเจคของเราด้วย command line ครับ ผมเรียกคำสั่ง C:\AppServ\www>php yiiRoot\framework\yiic webapp myweb
- ผมได้โปรเจค myweb เก็บไว้ที่ webroot
- ทดสอบเรียกโปรเจคของเรา http://localhost/myweb/
สำเร็จแหละ ต่อไปก็เริ่มลุยกับโปรเจคได้เลย อ่าน manual , tutorial , แล้วก็ศึกษาเรื่อง OOP และ Array ของ PHP ให้ชำชอง
แล้วพบกันใหม่ครับ
26.9.12
JustGage : JavaScript plugin for animating gauges
JustGage เป็น จาวาสคริปไลบรารี เล็กๆ ที่ใช้ในการสร้างภาพ เกจวัด แบบแอนนิเมชั่น สามารถแสดงค่าแบบมีการเคลื่อนไหวได้ โดยพื้นฐานของจาวาสคริปต์ตัวนี้ เค้าพัฒนาต่อยอดจาก Raphaël library ซึ่งมีความสามารถในการสร้างภาพเวกเตอร์บนหน้าเว็บ ด้วยจาวาสคริปต์
JustGage จะสร้างภาพแบบ SVG โดยภาพแบบ SVG นั้น สามารถแสดงผลได้ทุกบราวเซอร์ ไม่ว่าจะเป็น IE6+, Chrome , FireFox , Safari, Opera, Android และอื่นๆ อีกมากมาย
วิธีการนำไปใช้งาน
- ทำการดึงไฟล์ไลบรารี JustGage กับ Raphaël เข้ามาในเว็บเพจโค๊ด
- ทำการสร้าง div tag ที่มี id
- เรียก 'justGate({id,value})'
ค่อนข้างจะง่ายสำหรับการติดตั้ง แต่ ถ้าเรื่องของการปรับแต่ง ก็ขอให้ดูที่ตัว Demo ของเค้านะครับ
ดาวน์โหลด JustGage Library คลิก
20.9.12
Microsoft technical forums for thai ของจริงรึเนี้ย!!!
พอดี ผมได้รับเมล์จากไมโครซอร์ฟ ซึ่งคงเป็นเมล์ ที่ส่งให้กับหลายๆ คน เป็นเมล์สำรวจความคิดเห็นหน่ะครับ แต่ อย่างหนึ่งที่เพิ่มเติมมาในเมล์ และเห็นว่า เป็นเมล์ที่มีประโยชน์กับเพื่อนๆ และคนไทยหลายคน ก็เลยอยากจะเอามาแชร์ ก็คือ ทางไมโครซอร์ฟได้จัดทำฟอร์รั่ม หรือเว็บบอร์ดถาม-ตอบ ปัญหาเทคนิค เกี่ยวกับผลิตภัณฑ์ของไมโครซอร์ฟ อาทิ เช่น ถามตอบ โปรแกรม Visual Studio หรือ เว็บเรียนรู้เทคโนโลยีของไมโครซอร์ฟ โดยทั้งหมดนี้ ตอบคำถาม หรืออธิบายด้วยผู้ชำนาญด้านไอที ของทางไมโครซอร์ฟ ซึ่งเป็นคนไทย ด้วยกัน นับว่าเป็นการเปิดตลาดของโปรแกรมเมอร์หน้าใหม่ของเมืองไทย เลยก็ว่าได้
คุณต้องการ การสนับสนุนและช่วยแก้ปัญหาด้านเทคนิค เป็นภาษาไทย: ถามคำถามด้านเทคนิคเป็นภาษาไทย โดยไม่เสียค่าใช้จ่าย เพียงตั้งกระทู้ถามในฟอรัม TechNet Thai Forums สำหรับ IT Professional และ MSDN Thai Forums สำหรับ Developer เรามีทีมวิศวกรผู้เชี่ยวชาญที่จะช่วยหาคำตอบที่ถูกต้องให้ในเวลาอันรวดเร็ว อีกทั้งบทความเทคนิคที่น่าสนใจและคำถามที่พบบ่อยในฟอรัมอีกด้วย นอกจากนี้ คุณยังสามารถติดตามข่าว
อัพเดตด้านเทคนิคผ่าน ติดตามที่นี่ได้อีกช่องทางหนึ่ง
คุณต้องการข้อมูลเรื่องลิขสิทธิ์
เรียนรู้เรื่องลิขสิทธิ์ของไมโครซอฟท์ แบบสนุกๆ ผ่านการ์ตูนซีรี่ส์ ที่จะช่วยอธิบาย
ให้เข้าใจได้ง่ายยิ่งขึ้น และท่านสามารถศึกษาข้อมูลเรื่องลิขสิทธิ์เพิ่มเติมได้ที่เว็บไซต์
ข้อมูลลิขสิทธิ์ไมโครซอฟท์ประเทศไทย
ไมโครซอฟท์ได้เตรียมข้อมูลและแหล่งเรียนรู้สำหรับเทคโนโลยีใหม่ ๆ ในหลากหลายรูปแบบได้ฟรีไม่ว่าจะเป็น e-book ( Free ebook: Introducing Windows Server 2012 (RTM Edition), TechNet Video หรือ Microsoft Virtual Academy(MVA) ซึ่งเป็นระบบ e-learning ที่คุณลงทะเบียนเรียนได้ฟรีเช่นกัน โดยคุณสามารถเลือกสาขาที่คุณสนใจอย่างเช่น Windows Server 2012 Technical Overview หรือ Windows Server 2012: Server Virtualization ยังมีอีกหลายหัวข้อที่น่าสนใจรอคุณ นอกจากนั้นเรายังได้เตรียมงานสัมนาที่จัดโดยบริษัทไมโครซอฟท์ ประเทศไทยอย่าง Tech Days หรืองานสัมนาที่ได้จัดร่วมกันกับชุมชนชาวไอทีต่าง ๆ ตลอดทั้งปีซึ่งท่านสามารถติดตามได้จากhttp://blogs.technet.com/b/thailand/
คุณต้องการข้อมูลใหม่ๆ ที่จะช่วยคุณเลือกโซลูชั่นสำหรับงานไอทีของคุณ: เว็บไชต์และจดหมายข่าวรายเดือน TechNet ภาษาไทย และ MSDN ภาษาไทย
เป็นแหล่งอัพเดตเทคโนโลยีใหม่ซึ่งได้รับคะแนนความพึงพอใจสูงจากการสำรวจ
ครั้งก่อน คุณจะพบกับบทความที่คุณสามารถนำไปใช้อ้างอิงการแนะนำเครื่องมือใหม่ๆ
เช่น Hyper-V ที่ช่วยให้คุณทำเวอร์ชวลเซิร์ฟเวอร์ได้ทันที และข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมาย
16.8.12
VIM tutorial online
ใครที่เคยใช้ Linux ต้องเคยใช้ VIM หรือโปรแกรม text editor ของ Linux แน่ๆ อย่างน้อยก็ครั้งหนึ่งแหละ ไม่ใช่เรื่องง่ายเลย ที่เราจะใช้ VIM ในครั้งแรกอย่างเข้าใจ เพราะ ตัวโปรแกรมเองไม่ได้ออกแบบมาเพื่อผู้ใช้ที่คุ้นเคยกับวินโควน์เลย แม้แต่น้อย ทำให้มือใหม่ หลายๆคน ต้องเลิกรา มองหาโปรแกรม text ediotr ตัวอื่น แทน บางครั้งก็ต้องหันไปใช้ text editor ทีอยู่บน graphic mode แทน (แต่ถ้าเรา telnet เข้าไปที่เครื่อง ก็หนีไม่พ้นที่จะต้องทำผ่าน VIM ) แต่ คนที่เซียน linux เค้าไม่ทำอย่างนั้น VIM จึงเป็นเหมือนโปรแกรมที่บอกได้ว่า เราคุ้นเคยกับ linux มากน้อยแค่ไหน
วันนี้ ผมมี tutorial online เรื่องการใช้ VIM มาฝากเพื่อนๆ ครับ แนะนำว่า มือใหม่ และมือสมัครเล่น ไปลองฝึกให้คุ้นเคยกันซะ มีประโยชน์แน่ๆ Linux หากินได้ตลอดครับ โดยเฉพาะทุกวันนี้ มีบอร์ด Embedded ที่มี linux ฝังมาด้วยแล้ว จำเป็นเลยครับ VIM นี่แหละ
มาลองเล่นกันครับ คลิก
10.11.11
Jquery UI framework installation ไม่ได้ยากเลย
หลังจากที่หายไปพักใหญ่ๆ กับงานทางด้านเว็บแอพพลิเคชั่น ผมก็รู้สึกเหมือนจะถูกเทตโนโลยีทิ้ง ไปซะไกล ต้องมานั่งไล่ตามกันพักใหญ่ ที่หายไป ก็ไม่ได้ห่างหายไปไหนหรอกครับ กำลังคร่ำเคร่งอยู่กับ ไมโครคอนโทรลเลอร์ อยู่ พอกลับมาได้ทำโปรเจค เกี่ยวกับเว็บอีกครั้ง ผมต้องตะลึง กับหลายๆ framework ที่มีอยู่มากมาย ต่างพากัน แสดงความสามารถตัวเอง กันอย่างเต็มที่
วันนี้ ผมมองหา Framework ดีๆ ที่จะมาช่วยให้งานของผม มีลูกเล่นมากขึ้น ตอนแรก ก็กะว่าจะลองใช้ Kendo framework แต่ดูแล้ว เหมือนจะไม่ฟรี ก็เลยมองหาตัวอื่น จนมาเจอกับ Jquery UI นี่แหละ
Jquery UI หรือ Jquery User Interface เป็นตัวที่ใช้รูปแบบไวยกรณ์ของ Jquery นั่นแหละ แต่ เค้าได้สร้างลูกเล่นที่เป็น library เอาไว้ให้เราดึงเอามาใช้ เพื่อใช้ในการตอบโต้ ลาก วาง ย่อ ขยาย ซ่อน หรือแสดง สิ่งต่างๆ บนหน้าเว็บได้ตามต้องการ หรือเพื่อลดภาระให้กับ server ก่อนที่เราจะทำการส่งค่า การร้องขอ ให้ server กระทำอะไรบางอย่างให้เรา ซึ่งถ้าใครเข้าใจ Jquery ดีอยู่แล้ว เรื่องนี้ ก็ไม่ใช่เรื่องง่ายเลยครับ แต่ผม เพิ่งศึกษามาได้ สอง สาม วัน ยังต้องอีกนาน ที่จะเข้าใจ มันได้ทั้งหมด
วันนี้ เรามาติดตั้ง Jquery กันก่อนครับ เริ่มจาก
- ทำการเลือก Theme หรือ สีของ component เพื่อให้เข้ากับหน้าเว็บของเราก่อน หรือถ้าเพื่อนๆ ชอบสีไหน ก็เลือกโหลดมาได้เลยครับ คลิก ก็ edit ให้ได้สีตามใจ หรือเลือกโหลดจาก Theme ที่เค้าสร้างไว้ให้ก็ได้ครับ
- หลังจาก download มาแล้ว ให้แตกไฟล์ออกเลยครับ แล้วเปลี่ยนย่อชื่อ folder ให้มันสั้นๆ ก็พอ เอาไปไว้ที่ C:\AppServ\www ในที่นี้ ผมเก็บไฟล์ที่ได้จากการแตก zip ไฟล์ที่ดาวน์โหลดมาไว้ที่ โฟล์เดอร์ jquery ครับ
- ในที่นี้ ผมได้สร้าง folder ชื่อ test แล้วข้างใน มีไฟล์ที่ชื่อ index.php เพื่อทำการทดสอบดึง Jquery UI framework เข้ามาทำงานด้วย ขั้นตอนต่อไป เราจะทำการเรียกไฟล์ไลบรารี เข้ามานะครับ
- เพื่อป้องกันความผิดพลาด เราจะใช้วิธีการก๊อปปี้ เอาเลย โดยให้เข้าไปที่ folder jquery ของเรา แล้วเปิดไฟล์ index.html แล้วทำการก๊อปปี้ บรรทัดประมาณที่ 6-8 ตามรูปด้านล่างเลยครับ
- นำไปใส่ที่ ส่วน <header> ของไฟล์ index.php ที่อยู่ในโพล์เดอร์ test ที่เราได้สร้างโค๊ด html ที่จำเป็นไว้ แล้วทำการแก้ไขโค๊ดที่เราก๊อปปี้ มานิดหน่อย เนื่องจาก folder jquery ไม่ได้อยู่ภายใน folder test ของเรา
*** เพื่อนๆ เห็นความแตกต่างไหมครับ ลองสังเกตดีๆ ผมเพิ่ม ../jquery/ เข้าไป เห็นไหมครับ
- ที่นี้ เราจะมาลองสร้าง datepicker กันครับ นั่นก็คือปฏิทิน นั่นเองครับ โดยเราจะให้ datepicker ปรากฏทุกครั้งที่มีการคลิกในช่อง input text อันดับแรก เราจะต้องทำการ initial ด้วยการเพิ่มโค๊ด ที่เป็น java script เข้าไปก่อน โดยวางไว้ในส่วนของ header
- ทำการแก้ไขที่ส่วน selector ให้ตรงกับ id ของ DOM ที่เราอ้างอิงไปถึง (ในตอนต่อๆ ไป เราค่อยมาดูเรื่อง selector และการตั้งค่าอื่นๆ กันครับ)
- ทดลองรันไฟล์ http://localhost/test/index.php แล้วคลิกที่ช่อง input text จะปรากฏปฏิทิน ขึ้นมาให้เรา เลือกวันที่
เห็นไหมหล่ะครับ ไม่ได้ยากเลยใช่ไหมครับ แบบนี้ รับรอง ทำให้งานของเรา เสร็จไว และมีลูกเล่น ไม่น่าเบื่อ แน่นอนครับ เดี๋ยวเราจะค่อยๆ มาเจาะลึกลงไป เดี๋ยวขอตัวไปอ่านเพิ่มเติมก่อนครับ ถ้าคนไหน ยังทำไม่ได้ ลองไล่ๆ กลับไปลองดูอีกทีครับ อยากศึกษาเพิ่มเติม ก็ลองดู demo ครับ ยังมีอีกหลายตัวที่น่าสนใจ
ในระหว่างที่กำลังเขียนบทความนี้ ข้างนอก เค้ากำลังจุดพลุ จุดประทัด เนื่องจากเป็นวันลอยกระทง ในสถานการณ์ ที่บ้างส่วนของประเทศไทย โดยเฉพาะกรุงเทพฯ กำลังโดนมหาอุทกภัย ครั้งร้ายแรงที่สุดกำลังถาโถมเข้าใส่คนกรุงฯ แต่ เราคนไทย ก็ยังร่าเริงกันได้บ้าง นั่นเป็นเพราะ เป็นนิสัยของคนไทย ที่เป็นคนชอบความสนุก ก็จริงนะ ไม่รู้จะทุกข์ไปทำไม แต่ในคืนนี้ ผมก็ยังไม่คิดที่จะออกไปลอยกระทง เหมือนๆ 10 ปีก่อน ผมคิดว่า ถ้าเราจะแสดงความเคารพ พระแม่คงคาแล้ว เราก็ไม่ควรจะเอาอะไร ส่งลงไปที่แม่น้ำ ลำคลอง อีก เราควรจะกระทำในทางตรงกันข้ามมากกว่า ด้วยการรณรงค์ ให้วันนี้ เป็นวันที่ทุกคน ควรที่จะเก็บขยะ เศษปฏิกูล หรือขุดลอก คูคลอง ดีกว่า แต่ก็อย่างว่าหล่ะครับ จะเปลี่ยนแปลงสิ่งที่คน ยึดถือ กันมา มันเป็นเรื่องที่ไม่ง่ายเลยทีเดียว
3.11.11
Android VDO tutorial from TESA
ห่างหายไปนานพอสมควรครับ พอดีติดภาระกิจหลายอย่าง ทั้งมินิโปรเจค ทั้งงานประจำ แล้วก็งานที่มหาลัย ซึ่งในขณะนี้ ก็ยังไม่ค่อยว่างเท่าไหร่ ช่วงนี้ ไม่มีข่าวไหนจะดังไปกว่า มวลน้ำก้อนมหึมา กำลังถาโถม เข้าใส่กรุงเทพฯ ซึ่งหลีกเลี่ยงไม่ได้เลย แต่ เราสามารถที่จะบรรเทา เบาบางลงได้ ถ้าเมื่อ ปี2538 เราทำตามคำแนะนำของพระบาทสมเด็จพระเจ้าอยู่หัวของเรา ที่พระองค์ทรงพระราชทานไว้เมื่อ ปี2538 ในครั้งนั้น น้ำก็ท่วมกรุงเทพฯ เหมือนกัน แต่ ด้วยพระปรีชาสามารถ ทำให้ในครั้งนั้น คนกรุงเทพ ไม่ได้รับผลกระทบรุนแรงเท่าครั้งนี้
วันนี้ ผมได้นำเอา VDO สอนการเขียนโปรแกรมบนระบบปฎิบัติการ Android ซึ่งเป็น VDO ที่ทำ Work shop ของ TESA ซึ่งมีอยู่ด้วยกันหลายตอน มาฝากเพื่อนๆ ครับ หวังว่า เพื่อนๆ จะได้รับความรู้ในการเขียนโปรแกรม บนระบบปฎิบัติการ Android
หวังว่า เพื่อนๆ คงได้รับความรู้ ไม่มากก็น้อย นะครับ เดี๋ยวพบกันใหม่ครับ ถ้ามีไรดีๆ ผมจะกลับมาแบ่งปันใหม่
31.5.11
PHP command line ช่วยงานได้เยอะ
ช่วงนี้ ผมแทบไม่ได้เข้ามาอัพเดทบล๊อกนี้เท่าไหร่ เพราะกำลังง่วนอยู่กับการศึกษาไมโครคอนโทรลเลอร์ ผมว่ามันสนุกดี แล้วก็จับต้องได้ด้วย ติดตามกันได้ที่นี่ครับ www.123microcontroller.com
วันนี้ ผมเอาเทคนิคดีๆ ที่ผมใช้อยู่เป็นประจำในที่ทำงาน เนื่องจากงานของผม ในบางครั้งจะต้องยุ่งเกี่ยวกับการดึงดาต้าจาก Oracle เพื่อนำมาประกอบการพิจารณาทางสถิติอะไรบางอย่าง ผมมักจะเลือกที่จะใช้ภาษา PHP ที่ผมถนัดอยู่แล้ว เป็นตัวกลางในการติดต่อกับดาต้าเบส Oracle จริงๆ เราสามารถใช้ภาษา SQL สั่งคิวรี่ ข้อมูลจาก Oracle ผ่านโปรแกรม SQL Plus ได้ แต่ในบางครั้งข้อมูลที่เราต้องการดึงมานั้น มีการเชื่อมโยงข้อมูลต่างตารางกัน แล้วยังจะมีการคำนวณหรือกรองข้อมูลที่ไม่ต้องการออก หรือในบางครั้งอาจจะต้องมีการเปรียบเทียบข้อมูลทั้งหมดในแต่ละรอบก่อน แล้วจึงค่อยแสดงค่า ถ้าจะให้ทำการวนลูปด้วยภาษา SQL บอกได้คำเดียวว่ายาก (โดยเฉพาะ ผมก็ไม่เคยทำได้สักที)
ที่พูดมาทั้งหมดก็อยากจะบอกว่า ในบางครั้งการใช้ภาษาสคริปต์อย่างเช่น PHP ในการประมวลผลข้อมูล มันจะเป็นการง่ายกว่า การมานั่งเขียนภาษา SQL เพื่อให้ได้คำตอบที่ต้องการในการคิวรี ข้อมูลภายในครั้งเดียว แต่ภาษา SQL ก็ยังเป็นส่วนที่จำเป็นอยู่ดี ไม่สามารถทิ้งไปได้ แต่เราจะใช้ในการดึงข้อมูลดิบ แล้วทำการส่งต่อให้ PHP ทำการประมวลผลต่อไป ซึ่งถ้าใครถนัด PHP อยู่แล้ว จะทำให้มองภาพของการไหลของข้อมูลออกได้อย่างง่ายดาย
จริงๆ ผมน่าจะเขียนเรื่องการ config PHP ให้ติดต่อกับฐานข้อมูล Oracle ก่อนนะ แต่ในเมื่อเกริ่นนำไว้แล้ว ก็เลยกะว่า เอาไว้เขียนวันหลังแล้วกัน เพราะมี plan จะเขียนเรื่องนี้ ให้เพื่อนที่ทำงานดูอยู่แล้วหล่ะ
กลับมาเรื่องที่ตั้งใจจะนำเสนอกันดีกว่า ในกรณี ผมต้องการให้ script ของผมทำงานเป็นเวลา โดยตั้งเวลาผ่านโปรแกรม system scheduler ซึ่งผมใช้เป็นประจำในการกำหนดให้สคริปต์ผมทำงานตามเวลาที่ตั้งไว้
ในส่วนของการใช้งานโปรแกรมนี้ ก็ไม่มีไรมาก ตามรูปเลยครับ แต่ส่วนสำคัญอยู่ตรงที่ parameter ครับ ผมขออธิบายก่อนดังนี้ เนื่องจากในสคริปต์นี้ ผมต้องการที่จะเขียนครั้งเดียว แต่สามารถทำงานได้หลายเงื่อนไข ผมจึงออกแบบให้โปรแกรมเป็นกลางๆ ไว้ก่อน โดยให้สามารถเปลี่ยนเงือนไขภายในได้จาก Argument ที่ผมส่งเข้าไปตามรูป แต่ในกรณีที่เพื่อนๆ ออกแบบสคริปต์ให้ทำงานแค่อย่างเดียวก็อาจจะไม่จำเป็นจะต้องทำการส่ง Argument เข้าไปเหมือนผมก็ได้ แล้ภายในสคริปต์ก็จะแตกต่างไปจากของผมด้วยเช่นกัน
ในการทำอย่างนี้ เมื่อโปรแกรมเราถูก Execute เมื่อเวลาได้ถูกกำหนดตามที่เราต้องการ สคริปต์จะถูกสั่งให้ทำงานผ่านหน้าต่าง dos โดยจะทำงานเป็นแบบ text mode แต่ก็ใช่ว่าโปรแกรมของเราจะดูด้อยค่าเหมือนหน้าต่างโปรแกรมทีกำลังรันอยู่เลย กลับกัน มันกลับมีพลังในการทำงานอย่างดีเยี่ยมต่างหาก เพราะเพื่อนๆ สามารถสั่งให้สคริปต์ทำการเขียนผลลัพธ์ลง text file หรือจะเป็นนำค่าที่ได้ย้ายไปเก็บค่าในดาต้าเบส MySQLอีกทีหนึ่งก็สามารถทำได้เช่นกัน ทั้งนี่ ขึ้นอยู่กับประสบการณ์ของแต่ละคนครับ
เรามาดูตัวอย่างสคริปต์นี้กันครับ
มันเป็นตัวอย่างง่ายๆ เพื่อให้เพื่อนๆ ได้ทดลองกันก่อน เพื่อให้ได้เห็นผลลัพธ์ ก่อนการนำไปประยุกต์ใช้งานครับ ผลลัพธ์ที่ได้ก็คือ
จะเห็นว่า argc[0] ตัวแรกจะเป็นชื่อไฟล์ที่เราสั่งให้ทำงาน ส่วน argument ที่เราส่งเข้าไปในสคริปต์จะเริ่มต้นที่ argc[1] ถ้าเรามี argument ที่มากกว่า 1 ตัว เราก็จะได้ argc[2].. argc[3]…argc[n] ไปเรื่อยๆ เพื่อนๆ ลองคิดต่อดูสิครับ ว่าโปรแกรมเราจะยืดหยุ่นขนาดไหน โดยที่เราสามารถส่งค่าเข้าไปโดยผ่านทาง command line ต่อๆเข้าไปได้อย่างนี้
ถ้าใครจะไม่ใช้โปรแกรม sytem scheduler แต่เพื่อนๆ อยากรันที่ dos prompt เลยก็ได้นะครับ ก็ทำเหมือนกัน ไม่ได้ต่างกันเลยครับ เราก็สามารถ execute สคริปต์ของเราผ่าน command line ได้เช่นกันครับ
ลองๆ นำไปประยุกต์ใช้งานกันดูครับ แล้วเจอกันใหม่ในตอนหน้าครับ สวัสดีครับ
12.2.11
เริ่มต้นกับแอฟง่ายๆก่อน : Simple Android Application
หลังจากสาวน้อย อธิบายให้ป๋าฟังเรื่องการติดตั้ง Android SDK ให้ป๋าฟังแล้ว ถึงเวลาที่สาวน้อย จะแสดงให้เห็นว่า Application ที่เขียนขึ้น มันจะไปทำงานบนมือถือได้ยังงัย โดยสาวน้อย จะแสดงให้ป๋าเห็น บน Emulator โดยหล่อนก็คาดหวังว่า ป๋าจะ get สักที ว่าไอ้ app บน android มันหน้าตาเป็นยังงัย ก่อนที่เธอจะลากตาแก่ ไปเลือก Android แจ่มๆ สักเครือง (ใคร งง กลับไปอ่าน คลิก)
ขั้นตอนอย่างหยาบๆ กับ android application อย่างง่ายๆ
- สร้าง Android Virtual Device (AVD) ก่อนเลย โดยไปที่เมนู Eclipe เลือก Window > Android SDK and AVD Manager.
- เลือก Virtual Devices ทางซ้าย
- คลิกNew. จะปรากฏ Create New AVD dialog
- ตั้งชื่อ AVD เช่น "my_avd".
- เลือก Target ให้เวอร์ชั่นตรงกับที่เราจะสร้างโปรแกรมให้ไปทำงานบน platform เวอร์ชั้นไหน ในที่นี้ ผมเลือก Android SDK 2.1
- ที่เหลือ ไม่ต้องใส่ค่า
- คลิก Create AVD.
- แล้ว Start Emulator จากปุ่ม Start
ปล่อยให้ Emulator โหลดหน้าต่าง Emulator ขึ้นมา มันจะใช้เวลาพอสมควร เราไม่ต้องไปสนใจ ให้ไปสร้างโปรเจคง่ายๆ กันต่อเลย
- จากเมนู Eclipe เลือก File > New > Project.
- เลือก "Android Project" แล้วคลิก Next.
- เติมค่าเหล่านี้ลงไป ตามช่องต่างๆ
- Project name: HelloAndroid
- Application name: Hello, Android
- Package name: com.example.helloandroid (or your own private namespace)
- Create Activity: HelloAndroid
- คลิก Finish
- ทำการ Modified โค๊ดที่ได้จากการสร้างโปรเจค
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
- ทำการรัน save แล้ว run application ไปที่เมนู Run > Run.
- เลือก "Android Application".
- รอดูผลที่หน้าต่าง Emulator
- จบ App แรก ดีใจโครตๆ
- คนเขียน เหนื่อย U_U
ผมพยายามอัดคลิปวีดีโอ การสร้าง Android Application อย่างง่ายๆ เพื่อให้เพื่อนๆ ได้ลองไปเล่นกัน หวังว่า คงสนุกกับการสร้าง Application นะครับ น้องๆ คนไหน ยังไม่มีรายได้ ก็อย่าไปรบกวนพ่อแม่ นะครับ รู้ว่าขอเงินไป ได้แน่นอน แต่เราไม่รู้หรอกว่า ท่านยอมลำบาก เพื่อให้ลูกสบาย ท่านทำได้เสมอ ก็อยากให้เขียนให้เก่งๆ ก่อน แล้วถ้าเกิดฝีมือเข้าขั้น มีแนวโน้มทำรายได้ ให้เราจริงๆ ค่อยไปกู้เงินมาซื้อ นะครับ
11.2.11
หนูอยากได้ Android ค่า : Android SDK Installation
ณ โรงแรมม่านรูดแห่งหนึ่ง หลังจากเสร็จสิ้นภาระกิจแล้ว สาวน้อย นอนเบียดอยู่ข้างตาแก่พุงพลุ้ย ที่กำลังสูบบุหรี่อยู่ (มีภาพ sensor ที่ปากนิดนึง) แล้วสาวน้อย ก็พูดด้วยน้ำเสียงออดอ้อนขึ้นมาว่า
สาวน้อย : ป๋าขา ป๋าขา หนูอยากได้มือถือ เครื่องใหม่สักเครื่องหน่ะค่ะ
ป๋า : ก็ป๋า ซื้อให้แล้วนี่ค่ะ
สาวน้อย : หนูอยากได้ เครื่องที่ มี Android หน่ะค่ะ
ป๋า (ทำหน้า งงๆ ไรว่ะแอนดรอยด์) : หนูจะเอามาทำไร ค่ะ
สาวน้อย : หนูจะมาเขียน App คะป๋า
ป๋า : >_< เชี้ยไรว่ะ App (งง หนักเข้าไปอีก)
อย่าว่าแต่ป๋าเลยครับ ผมเองก็ งง เหมือนกัน ไรว่ะ แอนดรอยด์ มันกินได้ไหม เด็กบ้านนอกอย่างฉันต้องมีไหมอ่ะ ตำรวจจะจับไหม ไม่รู้เหมือนกัน เอาว่ะ เนตก็มี ไปกลัวอะไร search มันเข้าไปกูเกิ้ล ได้ความมาว่า
Android มันเป็นชื่อของระบบปฏิบัติการที่ทาง Google พี่แกใจดี้ ใจดี สร้างขึ้นมาเพื่อเป็นระบบปฏิบัติการของมือถือ โดยได้พัฒนามาจาก Linux ใครที่เคยเล่น Linux มาก่อนจะเข้าใจ ในการจัดการ process ของ Linux ว่าแตกต่างจาก Windows ยังงัย โดยกูเกิ้ลร่วมกันพัฒนา OS Android กับบริษัททำมือถือยักษใหญ่ ในตอนนั้น ได้แก่ อิงก์, ที-โมบาย, เอชทีซี, ควอลคอมม์ และ โมโตโรลา และได้เปิดโอกาสให้นักพัฒนาอิสระ โหลดตัว Android SDK ไปพัฒนา Application (ซึ่งใช้ JAVA เป็นหลัก) เพื่อมาใช้บนระบบปฏิบัติการนี้
ด้วยความเอื้อเฟื้อ ต่อการพัฒนา Application นักพัฒนา สามารถที่จะพัฒนา Application ต่างๆ บนคอมพิวเตอร์ของเราได้ก่อน ก่อนที่จะนำไปติดตั้งลงบนมือถือ โดยทำการจำลองโปรแกรมของเราผ่าน Android Emulator ทำให้เกิดการพัฒนา Application สำหรับ Android ขึ้นอย่างมากมาย นอกจากนี้ Application ที่พัฒนาขึ้นมา เราสามารถโหลดมาใช้ได้ฟรีๆ
อย่ารอช้า หากเพื่อนๆ อยากมี applicartion ที่อยากให้ชาวบ้านเค้าไปโหลดไปใช้ หากยังไม่มีมือถือ Android เหมือนผม U_U ก็เล่น Emulator ไปก่อนหล่ะกัน ว่าแล้ว เราก็มาติดตั้ง Android SDK กันก่อน
ขั้นตอนการติดตั้ง Android SDK
- ให้เรา โหลด ตัว Android SDK http://developer.android.com/sdk/index.html เค้าแนะนำ installer_r09-windows.exe (Recommended)
- โหลด Eclipe classic หรือตัวอื่นๆ ถ้าชอบ http://www.eclipse.org/downloads/ ในที่นี้เค้าแนะนำ
- Eclipse IDE for Java Developers
- Eclipse Classic (versions 3.5.1 and higher)
- Eclipse IDE for Java EE Developers
- โหลดตัว JDK ของ JAVA ด้วย ไม่โหลดตอนนี้ เดี๋ยวมันก็ถามหาอยู่ดี ลำพัง JRE เอาไม่อยู่ ต้องโหลด JDK ด้วย
- แตกไฟล์ Eclipe ไปไว้ที่ไหนก็ได้ drive D: ก็ได้ แล้ว เรียก Eclipe.exe ขึ้นมา
- ติดตั้ง Adroid SDK ดับเบิ้ลคลิกที่ไฟล์ installer_r09-windows.exe พอติดตั้งเสร็จ มันจะถามให้รัน Android SDK and AVD manager ไหม ก็รันไปเลย
- ขั้นตอนนี้ มันจะติดตั้ง package ไม่รู้ไรหนักหนา ขี้เกียจอ่าน เลือกมันหมดเลยหล่ะกัน โปรแกรมจะทำการดาวน์โหลดจากอินเตอร์เนต นานมากๆ ไปอาบน้ำรอได้เลย
- กลับมาอีกที ยังไม่เสร็จอีก *_*
- พอติดตั้งเสร็จ ให้เปิด Eclipe ขึ้นมา แล้วไปที่ เมนู Help > Install New Software....
- คลิกปุ่ม Add
- ตั้งชื่อ เป็น "ADT Plugin" ในช่อง Name แล้วใส่ URL
https://dl-ssl.google.com/android/eclipse/ ในช่อง Location
- คลิก OK , Next , Next แล้วก็ Finish
- ติดตั้งเสร็จ มันจะ restart Eclipe หนึ่งดอก
- ถึงเวลาที่เราต้อง config ตัว ADT Plugin สำหรับ คนที่ใช้ Eclipe IDE เป็นตัวพัฒนา App (มัดมือชก ตัวอื่นไม่รู้ทำงัย) กันสักหน่อย
- ไปที่ Window > Preferences...
- เลือก Android จากเมนู ทางขวา
- มองหา SDK Location แล้ว Browse หา SDK library ซึ่งน่าจะอยู่ที่ C:\Program Files\Android
- คลิก Apply แล้ว OK
- เหนื่อย(ว่ะ)
ผมพยายามทำ Clip VDO สอนการติดตั้ง Android SDK แต่เนี่องจากมันใช้เวลานานพอสมควร ผมจึงทำการบันทึกไป หยุดไป ภาพอาจจะไม่ต่อเนื่อง ก็พยายามดูๆ เอาหล่ะกัน อัดกันสดๆ ก็แบบนี้แหละ
อยากเห็น App ไทย ไป App นอกบ้าง ผมว่า ก็คงมีแหละ ที่ App ของคนไทยที่มีคนโหลดไปเล่นกัน พอดี ไม่ค่อยได้ติดตามมากนัก เพราะ มือถือก็ยังไม่มี รอผู้ใจดี มีเงินเหลือ ซื้อให้สักเครือง ใครถูกหวย ก็ซื้อให้มั่งนะ อยากลองๆๆ ^_^
ตอนหน้า เรามาเขียน Android Application ง่ายๆ แล้วลองรัน ใน Emulator ดูกันครับ ว่ามันจะเป็นยังงัย
9.2.11
variables naming : ว่าด้วยเรื่องการตั้งชื่อตัวแปร
ไม่ว่าคุณจะเขียนโปรแกรมคอมพิวเตอร์ด้วยภาษาใดๆ ก็ตาม อย่างหนึ่งที่ต้องทำ อย่างหลีกเลี่ยงไม่ได้ นั่นก็คือ คุณต้องทำการจองหน่วยความจำสำหรับเก็บข้อมูล และไม่ว่าภาษาคอมพิวเตอร์ที่คุณกำลังเขียนอยู่นั้น จะต้องทำการประกาศตัวแปร ก่อนหรือไม่ก็ตามก่อนนำไปใช้งาน เราก็จำเป็นที่จะต้องทำการสร้างตัวแปรขึ้นมา โดยการประกาศชื่อตัวแปร เพื่อให้ตัวแปรภาษาเข้าใจ ว่านี่ คือส่วนของตัวแปรที่เก็บข้อมูลที่เราได้ประกาศขึ้นมาเอง และแน่นอนว่า ตัวแปร ไม่ได้มีแค่ตัวเดียวอย่างแน่นอน การที่เราจะต้องการประกาศตัวแปรหลายๆ ตัว เราก็จำเป็นจะต้อง ตั้งชื่อให้กับตัวแปร ที่เราประกาศไว้ เพื่อไม่ให้เกิดความสับสน และเพื่อให้ง่ายต่อการไล่ดูโค๊ดในภายหลัง เราจะต้องมีเทคนิคที่ดี ในการตั้งชื่อตัวแปร ให้อ่านทำความเข้าใจได้ง่าย และให้เกิดความสวยงาม
เกริ่นมาซะยาว จริงๆ วันนี้ ผมตั้งใจ จะเล่าเรื่องสไตล์ในการตั้งชื่อตัวแปร ไม่ใช่ว่าเค้านึกอยากจะตั้งอย่างไร ก็ได้ ก็จริงอยู่ที่เราสามารถตั้งชื่อตัวแปรอย่างไรก็ได้ ตามใจฉัน เพราะฉันเป็นคนเขียนโปรแกรมนี้ขึ้นมา ขออย่างเดียว อย่าไปซ้ำกับคำสงวนแค่นั้นพอ แต่เพื่อนๆ ทราบไหมว่า การตั้งชื่อตัวแปร จริงๆ แล้วเค้ามีธรรมเนียมปฏิบัติกันอยู่ (คำว่า ธรรมเนียม แปลว่า ถ้าเราไม่ทำตาม ก็ไม่ผิดกฏ) เรามาดูกันว่า มีอะไรบ้าง
ธรรมเนียมปฏิบัติที่มีประโยชน์มากอย่างหนึ่ง ในการตั้งชื่อตัวแปร ที่ใช้กันอยู่ทั่วไปนั่นก็คือ การระบุชนิดของตัวแปร เข้าไปในชื่อของตัวแปรด้วย รูปแบบการประกาศแบบนี้ เราเรียกว่า “Hungarian Notation”
ในการประกาศตัวแปร แบบฮังกาเรียน นั้น จะมีการเพิ่มตัวอักษรพิมพ์เล็กนำหน้าชื่อตัวแปร เพื่อเป็นการบ่งบอกถึงชนิดของตัวแปร ตัวอย่างเช่น
-
bBusy: boolean -
chInitial: char -
cApples: count of items -
dwLightYears: double word (systems) -
fBusy: boolean (flag) -
nSize: integer (systems) or count (application) -
iSize: integer (systems) or index (application) -
fpPrice: floating-point -
dbPi: double (systems) -
pFoo: pointer -
rgStudents: array, or range -
szLastName: zero-terminated string -
u32Identifier: unsigned 32-bit integer (systems) -
stTime: clock time structure -
fnFunction: function name
นั่นเป็นการนำตัวย่อของชนิดข้อมูลมานำหน้าชื่อตัวแปร เพราะหลังจากที่ตัวแปรเหล่านี้เข้าไปอยู่ในโค๊ดยาวๆ แล้วคุณอาจจะเกิดปัญหาว่า จำไม่ได้ว่าตัวแปรตัวนี้ ถูกประกาศไว้เก็บข้อมูลชนิดใดกันแน่ ตัวอย่างที่ยกให้เห็นนี้ เป็นชื่อตัวแปรที่มีความยาวไม่มากนัก มักนิยมเป็นคำๆ แต่ถ้าเราต้องการสื่อความหมายของตัวแปร ด้วยคำที่ยาวกว่านี้หล่ะ บางทียาวเป็นวลี เราจะตั้งชื่ออย่างไร
ธรรมเนียมในการตั้งชื่อตัวแปรยาวๆ ก็ยังมีให้เห็น สอง รูปแบบหลักๆ ก็คือ แบบแรกเป็นการใช้ตัวอักษรพิมพ์ใหญ่ที่ต้นคำ แล้วเขียนติดกันไปเลย และเมื่อผสมกับรูปแบบฮังกาเรียนเข้าไปด้วย ก็จะต้องเขียนอักษรย่อบ่งบอกชนิดตัวแปรไว้ข้างหน้าด้วย ตัวอย่างเช่น
int iCountStudent;
ส่วนอีกรูปแบบหนึ่งก็คือ การใช้ตัวอักษรพิมพ์เล็กทั้งหมด แล้วใช้ขีดล่าง (under score) คั่นระหว่างคำ โดยเมื่อใช้กับรูปแบบฮังกาเรียนแล้ว ก็จะเขียนอักษรย่อกำกับไว้ข้างท้าย ตัวอย่างเช่น
char *record_primary_key_p;
ทั้งสองรูปแบบนี้ เห็นได้เยอะมาก แต่ไม่ว่าคุณจะเลือกการประกาศชื่อตัวแปร แบบไหนก็ตาม ก็ขอให้คุณยึดหลักแบบนั้น ไว้ทั้งโปรแกรม แต่อย่างไรก็ดี หากคุณไม่แน่ใจว่าจะเลือกใช้รูปแบบไหนดี ตัวเลือกหนึ่งที่ช่วยให้คุณตัวสินใจได้ง่ายขึ้น นั่นก็คือ ให้คุณสังเกตที่ไลบรารี ของภาษาที่เราเลือกใช้ แล้วก็จงใช้ตามหลักของภาษานั้น เหตุผลก็เพราะว่า จะทำให้โค๊ดโปรแกรมของคุณ ดูเป็นเนื้อเดียวกัน
ไม่ว่าคุณจะเลือกรูปแบบไหน อาจจะต้องมีการตกลงกันในทีมก่อน เพื่อให้รูปแบบการเขียนโปรแกรมไปในทิศทางเดียวกัน แต่สุดท้ายแล้ว คุณก็จะได้สไตล์การเขียนที่เป็นรูปแบบของคุณเอง สไตล์การพูดแต่ละคนไม่เหมือนกันฉันใด สไตล์การเขียนโปรแกรมก็ย่อมไม่เหมือนก้นฉันนั้น แต่เราก็พูดภาษาเดียวกัน ครับ

