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

ภาษาอาสาหลังงานรำลึกวันชาติ


  • แก้ข้อบกพร่องเรื่อง "การจองแปล" ที่เกิดจากชื่อฟอร์มที่ซ้ำกัน

  • เรียงบทความในหน้าแรก จากใหม่ไปเก่า

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

ลำดับบทความ/การลบบทความเก่า

เราสามารถปรับการลำดับแสดงบทความใหม่ได้มั้ยค่ะบทความที่เข้าไปใหม่อยู่บน รวมทั้สามารถแสดงวันที่ที่เพิ่มบทความนั้นเข้าไปได้มั้ยค่ะ

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

ปรึกษา..ปรึกษานะ

วันพุธที่ ๑๓ มิถุนายน พ.ศ. ๒๕๕๐

ลำดับความสำคัญ


เรามี issue ที่อาจจะต้องแก้ และขยายความสามารถ อยู่จำนวนหนึ่ง ซึ่งสามารถดูได้ที่ http://code.google.com/p/basaasa/issues/list ซึ่งผมจะทยอยทำไปทีละอย่าง แต่ว่า มี issue ไหน ที่อยากได้ก่อน issue ไหนที่อยากได้หลัง หรือเปล่าครับ?

ภาษาอาสา เมื่อวานนี้

เมื่อวานนี้ผม update date ภาษาอาสาที่เครื่อง server เรียบร้อยแล้ว ซึ่งมีความเปลี่ยนแปลง ดังต่อไปนี้
  1. ส่วนติดต่อผู้ใช้ภาษาไทย ซึ่งปรับปรุงโดย bact'
  2. ระบบจองแปล โดยระบุผู้จอง และ วันที่จะแปลเสร็จ

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

นำ Captcha ออกจากหน้า login

จากเสียงบ่นที่ว่า Captcha อ่านยากเหลือเกิน (ผมก็ว่างั้นหละ) ก็เลยเอาออกจากหน้า login ดีกว่า แต่ว่าในหน้า register ก็ยังมี Captcha อยู่ เพราะว่าคงไม่ค่อยมีใคร register บ่อยๆ :-P

ส่ง code เข้าเก็บไว้ที่ subversion repository ที่ http://code.google.com/p/basaasa/source เป็นเรียบร้อย

จะไป update code ใส่ใน theory.cpe.ku.ac.th ซะหน่อย ก็อ่าวเข้าไม่ได้อีกแล้ว T_T

ไม่เป็นไรอวด screen capture ไปพลางก่อนแล้วกัน

basa-asa screen capture

รวมลิงก์ ภาษา-อาสา

หน้าช่วยแปล "ภาษา-อาสา" อยู่ที่ http://theory.cpe.ku.ac.th/zooid/



แปลเสร็จแล้ว จะไปอยู่ที่ "ประชาไทฟุดฟิด" http://prachatai.com/english/



เว็บพัฒนา อยู่ที่ http://code.google.com/p/basaasa/



แจ้ง/ติดตามปัญหาการใช้งาน (แยกเป็นข้อ ๆ) ได้ที่ http://code.google.com/p/basaasa/



เว็บประชาไท http://prachatai.com/

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 ด้วย

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

การติดตาม bug และ feature ใหม่

เรามีเครื่องมีที่เรียกว่า Issue tracking ซึ่งแต่ก่อนใช้อยู่ที่ GNA แต่เห็นว่าใช้ยากเกินไป เลยย้ายมาอาศัย Google Code ผมว่าใช้ง่ายว่า GNA เยอะที่เดียว เข้าไปดูได้ที่ http://code.google.com/p/basaasa/issues/list

ผมก็พึ่งเคยใช้เหมือนกัน ก็อาจจะมีมั่วนิด ที่เห็นได้ตอนนี้คือ type ของ Issue

defect ก็คือ bug + และความผิดพลาดอื่นๆ เช่น "จองแปล" ไม่ได้ เป็นต้น

task ก็งานต่างๆ ที่ไม่ต้องแก้โปรแกรม เช่น "เขียนคู่มือ

Enhancement ก็เป็นการเพิ่มความสามารถใหม่ๆ เช่น การระบุคนจอง และเวลาที่คาดว่าจะแปลเสร็จ เป็นต้น

แต่ก็จะเห็นได้ว่าผมเลือกผิดๆ ไปเยอะเหมือนกัน :-P

การออกแบบหน้าจอ

หน้าจอเดิมเป็นแบบ 2 column ด้านนึงเป็นภาษาไทย ด้านนึงเป็น อังกฤษใช้เปล่า แต่ว่ามันแคบๆ กว้างๆ เกินไปชอบกล

ผมยังนึกไม่ออกว่าแก้ไงดี แต่ก็นึกอยู่ 3 อย่างคือ
  1. ใช้ frame แทน table น่าจะทำให้จัดขนาดเล็กใหญ่ได้ตามใจชอบ?

  2. สร้าง pop-up ออกมาอีกหน้าจอหนึ่ง เป็นหน้าจอสำหรับแปล




  3. พอกดแปลแล้วก็ link ไปหน้าแปลเลยโดยไม่ต้องแสดง source

ขอคำแนะนำหน่อยนะครับ อาจจะมีท่าอื่นอีกหรือเปล่า? หรือว่าท่าไหนจะดี?

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

วันพฤหัสบดีที่ ๗ มิถุนายน พ.ศ. ๒๕๕๐

ปัญหาจากคน ram ต่ำ

ปัญหาที่เราเจอเพิ่มเติมจากที่ใช้นะคะ
  • เราคิดว่าช่อง translation เล็กไป ตอนที่ต้อง copy ข้อความจากที่มีการแปลเสร็จแล้วมาใช้งาน มันติด ช่องบทความภาษาไทยมาด้วย
(ไม่รู้อันนี้เป็นปัญหาฉลาดน้อยของ user แบบเรารึเปล่า...ฮ่าๆ)
  • ไม่รู้ว่าสามารถเพิ่มฟังค์ชั่นให้อัพโหลดเป็นไฟล์ได้มั้ยค่ะ
  • การจองแปลน่าจะสามารถบอกได้ว่าจองโดยใคร คาดว่าจะแปลเสร็จเมื่อไหร่..อิอิ(แบบคนที่ต้องคอยตามเอางานมาลงจะได้พอรู้อนาคต)
  • เรายังใช้งานในถังแบบแบบงงๆนิดหน่อย เช่น พอคลิก detail เปิดมาแล้ว จะปิด หรือจะไปดูที่บทความอื่นต่อ ก็ยังเงอะงะ ทุกวันนี้ใช้วิธว่าก็คลิกไปที่ Home เพื่อเป็นการปิดและดู list articles อื่นๆ (ไม่รู้ว่าคนอื่นเจอปัยหานี้มั้ย เราเป็นพวกหลงทางง่าย ป้ายบอกทางไปจะช่วยเรามากทีเดียว แต่ไม่รู้จะทำให้รกรุงรังเกินไปรึเปล่า

ที่นี้เป็นคำถามนะค่ะ

อยากรู้ว่าได้กำหนดให้ user แต่ละระดับทำอะไรได้บ้าง แค่ไหน
การ add หรือ delete ทำได้ทุกคนมั้ย

มีเรื่องบ่นจากผู้ใช้งานที่อาจจะสายตาไม่ค่อยดี อันเนื่องมาจากวัย ฮ่าๆ ว่า human verification อ่านยากมากๆ
พิมพ์ผิดกันไปหลายครั้ง

สุดท้ายเรื่องบ่นตัวเองรับปากวีร์ไว้ว่าจะเขียน ข้อความให้วีร์ ก็ยังทำไม่เสร็จเลย
ขอโทษนะคะ..จะพยายามทำให้ คืนนี้ ย้ำ คืนนี้

จิ๋ว

paragraph

มีอาสาสมัครแปล แจ้งมาว่า
พอแปลเสร็จแล้ว เมื่อโพสตคำ์แปลไป
ปรากฏว่าตัวหนังสือติดกัน ไม่มีย่อหน้าเลย

:D วีร์สู้ๆ

"ภาษา-อาสา" วันนี้

ฺBlog นี้สร้างขึ้นมาเพื่อรายงาน + รับความคิดเห็น + รับข้อเสนอใหม่ๆ สำหรับ โครงการ ภาษาอาสา

วันนี้ตามที่พี่จิ๋วได้เจ้งปัญหา ที่ผมจำได้ตร่าวๆ 2 อย่างคือ
  1. ไม่สามารถจองแปลได้
  2. มีบทความบางบทความส่งมาแล้ว ดูเหมือนไม่สำเร็จ จึงเกรงว่าอาจจะมีบทความหาย หรือว่าคำแปลหายไป จึงอยากให้ตรวจสอบปูมดู
ปัญหาข้อแรก เกิดจากตั้งไว้ว่า คนที่จะจองได้ต้องเป็น admin แต่ว่าที่ก่อนหน้านี้ใช้ได้ เกิดจาก การตรวจสอบสิทธิผู้ใช้ทำงานผิดพลาด ผมก็เลยสร้าง method ใหม่ชื่อ status_update เพิ่มขึ้นมาให้ ArticlesController แล้วกำหนดไว้ ใช้ได้ในกลุ่มนักแปล ก็เป็นอันเสร็จเรียบร้อย ในอนาคตคิดว่าปัญหาแบบนี้น่าจะน้อยลงถ้ามีการใช้ Unit testing

ปัญหาข้อที่ 2 ผมก็ยังมองไม่ออกว่าเกิดขึ้นได้อย่างไร แต่ก็จะลองสร้าง debug log ดู ว่ามีใครสร้างบทความบ้าง และมีใครสร้างสำเร็จไม่สำเร็จบ้าง แต่ว่ายังทำไม่เสร็จ