แสดงบทความที่มีป้ายกำกับ Basa-Asa แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Basa-Asa แสดงบทความทั้งหมด

วันจันทร์ที่ ๙ กรกฎาคม พ.ศ. ๒๕๕๐

Basa-Asa validation

ก่อนหน้านี้เรามีปัญหาว่ามีบทความว่างๆ อยู่ http://code.google.com/p/basaasa/issues/detail?id=2 ล่าสุดผมพยายามจะแก้ปัญหานี้โดยเพิ่มส่วน validation เข้าไปในโปรแกรม ถ้าหากว่ากด save โดยที่ body หรือ title ว่างๆ อยู่ โปรแกรมจะยังไม่จัดเก็บข้อมูล แต่จะขอให้กรอกข้อมูลให้ครบก่อน

การใส่ validation ใน CakePHP ก็ง่ายๆ แต่ว่าผมพึ่งทำเป็น สมมุติว่าเราจะแก้ model ของ Article ก็แก้ไฟล์ app/models/article.php แล้วก็เพิ่ม $validate เขาไปใน class Article

class Article extends AppModel
{
var $validate = array("title" => VALID_NOT_EMPTY,
"body" => VALID_NOT_EMPTY);
....
....
....
}

แบบนี้เป็นต้น

วันเสาร์ที่ ๙ มิถุนายน พ.ศ. ๒๕๕๐

How to install Basa-Asa

ยังไม่มี stable release เราก็เลยต้อง check out จาก Subversion

$ svn checkout http://basaasa.googlecode.com/svn/trunk/ basaasa
A basaasa/trunk
A basaasa/basa
A basaasa/basa/app
.... (ยาว)

(แต่ถ้าได้แบบ

$ svn

-bash: svn: command not found

ก็อาจจะเป็นไปได้ว่ายังไม่ได้ลง subversion ก็สามารถหาดาวน์โหลดมาลงได้ทั่วไป)

เสร็จเราก็จะได้โฟลเดอร์ชื่อ basaasa ออกมา
ใน basaasa ก็จะมีโฟลเดอร์ชื่อ basa อยู่ข้างในอีกที

ขั้นตอนต่อไปก็คือ ย้าย basa ไปไว้ในโฟลเดอร์สำหรับเว็บ
ถ้าเป็น Debian หรือ Ubuntu ก็อยู่ที่ /var/www
ถ้าเป็น Windows ก็อาจจะเป็น c:\inetpub\wwwroot

$ mv basaasa/basa /var/www

ถ้าย้ายไม่ได้ก็ต้องแก้ permission หรือว่าสั่ง sudo อะไรก็ว่ากันไป

ย้ายไปแล้ว พอเปิดเว็บ เช่น http://localhost/basa ก็ควรจะมีหน้าจอของ
Basa-Asa ขึ้นแล้ว แต่ว่าจะมี error message บอกว่าหาฐานข้อมูลไม่เจอ
หรือว่า เขียนไฟล์ไม่ได้เป็นต้น แต่ถ้าเปิดไม่ขึ้นเลยก็ต้องลองดู
Apache แล้วว่ารันอยู่หรือเปล่า

basa-asa screenshot

ขั้นตอนต่อไปคือการตั้งค่าฐานข้อมูล (โดยที่เราสมมุติว่าใช้ MySQL
ได้อยู่แล้ว และ username คือ root)

ก่อนอื่นย้ายไปโฟลเดอร์ที่ Basa-Asa อยู่ก่อน

$ cd /var/www/basa

แล้วก็สร้างฐานข้อมูล

$ mysql -uroot -e 'create database basa;'

$ mysql -uroot basa < mysql.sql

แล้วก็ต้องแก้ไขไฟล์ของ CakePHP นิดหน่อย

$ vim app/config/database.php

เราก็ไปแก้พวกนี้ (ได้แก่ host, login, password) ให้ตรงกับในเครื่องเรา

var $default =
array('driver' => 'mysql',

'connect' => 'mysql_connect',

'host' => '127.0.0.1',

'login' => 'root',

'password' => '',

'database' => 'basa',

'prefix' => 'basa_');


หมดขั้นตอนของฐานข้อมูลแล้ว ก็แก้ file permission เล็กน้อย

$ chown -R www-data app/tmp

เพื่อที่ Apache จะได้มาเขียน log ไฟล์ cache ฯลฯ​ได้ แน่นอนเครื่องต่างๆ
อาจจะไม่ได้ใช้ username ชื่อ www-data หมด แต่ www-data นี่ของ Debian

เท่านี้มันก็น่าจะเริ่มใช้แล้ว ขาดแต่ยังไม่มี user และ group
เราก็เข้าไปใน MySQLl

$ mysql -uroot basa
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 151
Server version: 5.0.37 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

ที่ prompt ของ MySQL เราก็เพิ่ม group ได้

mysql> insert into zooid_groups(id,name) values(1,'Admin');
Query OK, 1 row affected (0.09 sec)

mysql> insert into zooid_groups(id,name) values(2,'Translator');
Query OK, 1 row affected (0.09 sec)

จากนั้นก็ user แต่ user เพิ่ม admin คนเดียวก็พอ

insert into zooid_users(username, password, group_id) values ('root', md5('yourpassword'), 1);
Query OK, 1 row affected, 2 warnings (0.36 sec)

เสร็จแล้ว (ผมลืมอะไรไปหรือเปล่า?) สำหรับ Apache และ PHP ต้องลง mod_rewrite และ php-gd ด้วย

วันศุกร์ที่ ๘ มิถุนายน พ.ศ. ๒๕๕๐

CakePHP: Logging for debugging

หลังจากที่ผมนั่งงงมาตั้งนานว่า ถ้าอยากจะ debug CakePHP โดยการเก็บ log
ไว้จะทำอย่างไร ยกตัวอย่างเช่น เวลาผมจะดูว่า ใครพยายามจะ แก้ไข article
บ้างก็ต้องเข้า log ใน ArticlesController::edit

วิธีการก็ง่ายๆ เพียงแต่ใส่ code แบบข้างล่างเข้าไปก็จะเกิดการเขียน log
ขึ้นที่ app/tmp/logs/debug.log

$this->log("ทดสอบ", LOG_DEBUG);

แต่ว่าแบบนี้มันก็ไม่มี username ใช่ปะก็แก้ง่ายๆ

$this->log("พยายามแก้ไขโดย " . $this->getUsername() , LOG_DEBUG);

แล้วก็แอบเอา log มาเปิดให้ดูนึดนึง (ในเครื่องผมนะ)

2007-06-08 15:06:42 Debug: พยายามแก้ไขโดย vee10
2007-06-08 15:07:17 Debug: พยายามแก้ไขโดย anonymous
ว่าแล้วก็ commit code เข้า SVN ที่ http://code.google.com/p/basaasa
ซะเลย :-P