5.6.14

ย้ายที่เก็บไฟล์หน้าเว็บไปไว้โฟวเดอร์อื่น บน Apache2 Mapping URLs to Filesystem Locations

imageปัจจุบันการมาของ 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 ดังรูป

CGridView: Render customized/complex datacolumns
เมื่อแสดงผล เราจะได้ตัวหนังสือสีแดง เมื่อค่าที่นำมาเปรียบเทียบมากกว่า 0

CGridView: Render customized/complex datacolumns

ลองนำไปประยุกต์ใช้กันดูนะครับ ขอให้สนุกกับ Yii Framework นะครับ

อ่านเพิ่มเติม...

19.12.13

yii-api-1.1.14.chm

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 จะเปลี่ยนไป

yiic shell

ต่อมาเราจะมาสร้าง controller สำเร็จรูปกันเลยครับ ด้วยคำสั่ง

controller [controller id] [action id]

ดังนั้น หากผมต้องการสร้าง controller id =  message และ action id ที่ชื่อ helloworl จะได้

yiic shell

ลองเช็คดูในโปรเจคใน Netbean เราจะเห็นไฟล์ถูกสร้างขึ้นมา

yii controller

ลองเรียกหน้าเว็บ 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 

Copy link ChartDirector

[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

Select ChartDirector library file version

ดังนั้น ผมต้องเข้าไปกำหนด 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 Demo

ขอให้สนุกกับ ChartDirector ครับ

อ่านเพิ่มเติม...
 

เกี่ยวกับฉัน(ไหมเนี้ย)

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

รายการบล๊อกอื่นๆ

  • Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error - วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Ard...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

  • https://youtube.com/devicesupport - https://youtube.com/devicesupport https://youtube.com/devicesupport http://m.youtube.com From: YouTube Help Views: 31198867 0 ratings Time: 03:56 More in ...
    1 year ago
  • MCP2200 with Visual C# 2010 express - ในบางครั้ง เรามีความจำเป็นต้องทำปุ่มกดพิเศษขึ้นมานอกเหนือจากการใช้แป้นจากคีย์บอร์ดคอมพิวเตอร์ปกติ เพื่อให้โปรแกรมที่เราเขียนขึ้นมาเองทำงานฟังก์ชั...
    2 years ago
  • Free Screen Capture โปรแกรมบันทึกหน้าจอ ฟรีๆ - หากเพื่อนๆ จะมองหาโปรแกรม ที่ไว้สำหรับบันทึกหน้าจอคอมพิวเตอร์ ไม่ว่าจะบันทึกในรูปของภาพนีิ่ง (Screen shot) หรือแบบบันทึกเป็นภาพเคลื่อนไหว ( screencas...
    2 years ago
  • EveryCircuit เรียนรู้วงจรอิเล็กทรอนิกส์ผ่านเว็บเอนิเมชั่น - สื่อการเรียนการสอนทุกวันนี้มีการพัฒนาไปมาก พอๆกับเทคโนโลยีที่พัฒนาเรื่อยๆ ทุกวันนี้เริ่มมีสื่อการเรียนการสอนหลายๆ ตัว พัฒนาบนเว็บแอพพลิเคชั่น ด้วยความสะด...
    2 years ago
  • SDW-SoftwareTimer Library (Tiny version) User's Guide - *SDW-SoftwareTimer Library (Tiny version) User's Guide* *บทนำ* บทความนี้เป็นบทความเฉพาะสำหรับคนที่ได้ผ่านการเรียนรู้การเขียนโปรแกรมไมโครคอนโทรลเลอร์โดยใช้ ...
    4 years ago

เหล่าบรรดา Blogger