वीर

12 เมษายน 2008

แปลง .doc เป็น .odt บน Ubuntu ผ่าน command line interface

Filed under: Uncategorized — वीर @ 5:09 pm
Tags: , , , , , , , , ,

แบบที่เขียนยาวๆ ดีๆ เป็นภาษาไทยสามารถเข้าไปดูได้ที่ http://www.biolawcom.de/blog/628 หรือภาษาอังกฤษก็มี http://dag.wieers.com/home-made/unoconv/

ผมและเพื่อนพยายามจะแปลงไฟล์จาก .doc ไปเป็น .อื่นๆ อีกมากมาย แต่ก็หาโปรแกรมไม่ค่อยได้. ถ้าทำทีละไฟล์ สองไฟล์ ก็เปิด OpenOffice.org มาแล้วก็เปิดไฟล์ .doc แล้ว save as เป็น .odt ก็ง่ายๆ. แต่ว่าถ้ามีสัก 10-20 ไฟล์ไรงี้ก็คงไม่ไหว. หรืออยากจะให้มันถูกเรียกผ่าน cron หรือเว็บ ใช้ command line ก็คงดีกว่า. มาเจอ unoconv ตรงกับความต้องการมากๆ. สามารถแปลงแบบ

unoconv -f odt titi.doc

แล้วก็ได้ titi.odt ออกมาเลย

แต่ว่าต้องไปเรียก soffice ให้ run ค้างไว้ก่อน แบบนี้

soffice -headless

ใส่ -headless เข้าไปพวก user interface ทั้งหลายก็จะไม่ออกมา ทำตัวเป็น daemon (service) ไปประมาณนั้น

แต่ถ้าใช้ Ubuntu 7.10 ก็มีปัญหานิดๆ เพราะไม่มี package unoconv วิธีแก้ก็คือเอาของ Ubuntu 8.04 มาลง. ผมเอา source package ของ Ubuntu 8.04 มา rebuild. ถ้าเอา package ที่ build มาแล้วมาลงเลยไม่รู้ใช้ได้เปล่า :-P. หรือถ้าใช้ Ubuntu 8.04 หรือ Debian lenny อยู่แล้วก็สั่ง aptitude install unoconv ได้เลย

ข้อมูล battery บน Ubuntu 7.10

Filed under: Uncategorized — वीर @ 1:21 pm
Tags: , , , ,

ระบบอื่นก็อาจจะดูได้เหมือนกัน … ผมไม่รู้. รู้แต่ว่าเปิดดูใน Ubuntu 7.10 แล้วประทับใจ

10 เมษายน 2008

OO.o 3 beta cannot display Thai text properly when …

Filed under: Uncategorized — वीर @ 5:33 am
Tags: , , , , , , , ,

Open Office.org 3 beta cannot display Thai text properly when it was zoomed in.

25 เมษายน 2008

No space left

Filed under: Uncategorized — वीर @ 4:07 am
Tags: , , , , , , , ,

เวลาไม่มีที่ใน harddisk ใช้แล้ว ไม่รู้ว่าจะลบหรือย้ายอะไรไปเก็บดี. บน Ubuntu 7.10 (GNOME) มีเครื่องช่วยอย่างน่ารักทีเดียว.

แสดงออกมาให้เห็นเลยว่าอะไรใช้พื้นที่เท่าไหร่ คลิกขวาแล้วย้ายลงถังขยะ หรือเปิดดูได้เลยชอบมากๆ. โปรแกรมแบบนี้บน platform อื่นก็มีเหมือนกันกระมัง แต่ชอบ Ubuntu ที่ว่าไม่ต้องตามหามาลงยาก. แบบนี้เรียก out of the box ใช่เปล่า?

22 เมษายน 2008

ใช้ CakePHP จาก command line interface (terminal, console, etc.)

ใน CakePHP เราสามารถสั่งคำสังต่างใน shell ได้อยู่แล้ว เช่น ./cake bake (ต้องเข้า cd เข้าไปใน folder cake/console ก่อน) ที่มีไว้สร้าง controller, view และอื่นๆ อันโนมัติ.

มากไปกว่านั้นเรายังสร้างคำสั่งบน shell แบบนี้ขึ้นมาให้เองได้ง่ายๆ อีกด้วย. ในกรณีผมต้องการสร้าง shell ขึ้นมาเพื่อ encode password เพื่อใช้กับ AuthComponent ซึ่งจำเป็นต้องใช้ค่า Security.salt ใน app/config/core.php มาคำนวณด้วย ซึ่งแต่ละ app (project) สามารถแตกต่างกันได้. อย่างไรก็ตามเราไม่ต้องเขียนรายละเอียดเอง เพียงแต่เรียก function ชื่อ password จาก AuthComponent. ผมก็เลยเขียน encode.php ไว้ใน /app/vendors/shells แบบข้างล่าง.

< ?php
uses ('controller'.DS.'components'.DS.'auth');

class EncodeShell extends Shell {
    function main() {
        $auth = new AuthComponent();
        echo $auth->password($this->args[0]);
    }
}
?>

เวลาจะเรียกใช้งานก็ cd เข้าไปใน folder cake/console แล้วก็เรียก ./cake encode <password ที่ต้องการ encode>

อ้างอิง

  1. http://cakebaker.42dh.com/2007/05/07/writing-a-custom-cakephp-console-script/
  2. http://api.cakephp.org/1.2/cake_8php-source.html

21 เมษายน 2008

เริ่มต้นกับ CakePHP

Filed under: Uncategorized — वीर @ 7:00 pm
Tags: , , , , , , , ,

ผมเขียน entry นี้เพื่อที่จะเป็น tuturial เบื้องต้นให้กับ entry เกี่ยวกับ Access control list อีกที โดยดัดแปลง เพิ่มต้มมาจาก http://blog.vee-u.com/2008/02/23/cakephp_acl/ มาเป็นส่วนมาก

เริ่มจากเราไป download CakePHP 1.2.6311B มาจาก http://cakeforge.org/frs/download.php/595/cake_1.2.0.6311-beta.tar.bz2 แล้วก็เอาแกะหีบห่อด้วยคำสั่ง tar xjvf cake_1.2.0.6311-beta.tar.bz2 เราก็จะได้ folder (directory) ชื่อ cake_1.2.0.6311-beta ขึ้นมา. เพื่อที่จะได้เข้าไปใช้ง่ายๆ เราก็สามารถเปลี่ยนชื่อ folder ก่อนได้ เช่น เปลี่ยนไปเป็นชื่อ my_project ด้วยคำสั่ง mv cake_1.2.0.6311-beta my_project เป็นต้น.

เวลาลง CakePHP แล้วต้องเปลี่ยนค่า Salt คืออะไรก็ไม่รู้อะใน app/config/core.php


Configure::write('Security.salt', 'เปลี่ยนค่าตรงนี้'); 

แล้วก็ตั้งค่า database ใน app/config/database.php แต่ว่าทีแรกไม่มีไฟล์ database.php เราก็ copy มาจาก database.php.default  (ด้วยคำสั่ง cp app/config/database.php.default app/config/database.php) ได้เลย แล้วก็แก้ค่าข้างในเอา. ถ้าไม่มี database ก็อาจจะไปสร้างรอไว้ก่อน เช่น สร้าง database ด้วยคำสั่ง mysql -umyuser -pmypassword -e ‘create database my_project’ เป็นต้น


class DATABASE_CONFIG {
   var $default = array(
     'driver' => 'mysql',
     'persistent' => false,
     'host' => 'localhost',
     'port' => '',
     'login' => 'ชื่อผู้ใช้ของ database',
     'password' => 'password',
     'database' => 'ชื่อ database',
     'schema' => '',
     'prefix' => '',
     'encoding' => ''
   );
   ...
}

จากนั้นถ้าจะใช้ acl ก็ต้องแบบแก้ source code นิดหน่อย ที่ดูแล้วคงเป็น bug (ที่ผม CakePHP ที่ผมนำมาใช้เป็น beta version ด้วย) แก้แบบไม่ยากไปตามเว็บนี้ http://seeknstrike.net/archives/20
เพียงแต่ใส่ uses(’string’) เข้าไปในบรรทัดล่างจาก uses(’set’) ในไฟล์
cake/libs/model/datasources/dbo_source.php ตามนี้


uses('set');
uses('string'); // เพิ่มเข้าไป

ตอนนี้ code ส่วน CakePHP ก็พร้อมแล้ว. แต่ว่า Apache กับ Ubuntu ก็ต้องแก้ๆ หน่อย. ปกติ mod_rewrite ที่จำเป็นสำหรับ CakePHP มากๆ ไม่ได้ถูก enable มาให้แต่แรกเราก็เลยต้องไปแก้. วิธีแก้สามารถอ่านเพิ่มเติมได้ที่ blog entry http://bact.blogspot.com/2008/04/enable-modrewrite-in-apache.html ของ bact. อย่างไรก็ตามผมก็จะเขียนสั้นๆ เท่าที่ผมเข้าใจไว้ด้วย.

เริ่มจากสั่ง sudo a2enmod rewrite

a2enmod เป็นคำสั่งของ Debian ที่ Ubuntu ก็รับมาด้วย เอาไว้แก้ configuration ให้ Apache เรียก mod_rewrite ขั้นตอนต่อไปก็แก้ไฟล์  /etc/apache2/sites-enabled/000-default ใน tag  <Directory /var/www/> …. </Directory> มีอยู่บรรทัดนึงเขียนว่า  AllowOverride None เราก็ไปแก้เป็น AllowOverride All เสีย. เพื่อที่ CakePHP จะได้ควบคุม mod_rewrite จากไฟล์ .htaccess ได้. หลังจากนั้นก็ restart Apache ด้วยคำสั่ง sudo /etc/init.d/apache restart ก็น่าจะพอใช้ได้.

หลังจากนั้นก็ย้าย my_project เข้าไปใน /var/www ( ด้วยคำสั่ง mv my_project /var/www ). และแก้ folder ของ tmp เสียหน่อย ด้วยคำสั่ง sudo chown -R www-data:www-data /var/www/my_project/app/tmp

เท่านี้ก็น่าจะพอเปิดเว็บดูได้แล้ว โดยเข้าไปดูที่ url: http://localhost/my_project ได้เลย

ถ้าไม่มีข้อความเตือนความผิดพลาด ก็เป็นสัญญาณบอกแล้วว่าพร้อมที่จะเริ่มใช้ CakePHP ในขั้นต่อไปแล้ว ;-).

ป.ล. entry หายไปซะงั้นงงเลย T_T ต้องกลับมา post ใหม่

10 เมษายน 2008

อ่านไฟล์ UTF-8 ด้วย libicu และภาษา C

Filed under: Uncategorized — वीर @ 5:33 pm
Tags: , , , , , , ,

ICU เป็น library สำหรับจัดการเกี่ยวกับข้อความภาษาต่างๆ นานา โดยเฉพาะที่เก็บโดยใช้ Unicode ในภาษา C, C++ และ Java. ผมก็ด้อมๆ มองอยู่นานแล้วก็ยังไม่ค่อยได้ลองใช้เท่าไหร่. พอดีวันนี้อยากอ่านไฟล์ข้อความที่เข้ารหัสไว้แบบ UTF-8 แต่ว่าพออ่านมาแล้วอยากจะแปลงเป็น UCS-4 หรือ UCS-2 ก็ได้. จะเขียนทั้งหมดก็พอมี source code เก่าเอามา reuse ได้. แต่มันก็คงไม่สนุกลองใช้ ICU ดูบ้างดีกว่า. โปรแกรมข้างล่างนี่ก็จะพิมพ์มีรหัส unicode (ในแบบเลขฐาน 16) ของอักษรแต่ละตัวมาให้ดู. สมมุติว่าไฟล์ชื่อ playu.c นะ.


#include <stdio .h>
#include <stdlib .h>
#include <unicode /ustdio.h>
int
main()
{
#define   BUF_SIZE   4096
    UFILE *fp;
    UChar buf[BUF_SIZE];
    int read_size;

   
    if((fp = u_fopen("thai_utf8.txt", "r", NULL, "UTF-8")) == NULL) {
        printf("Cannot open file\n");
        exit(EXIT_FAILURE);
    }
    while((read_size = u_file_read(buf, BUF_SIZE, fp)) > 0) {
        int i;
        for(i = 0; i < read_size; i++)
            printf("0x%04X\n", buf[i]);
    }
    u_fclose(fp);
    return EXIT_SUCCESS;
}

เวลาจะ build ก็สั่งแบบนี้

gcc -Wall -g -licuio playu.c

ก็จะได้ a.out ออกมา

สมมุติอีกนิดว่าในไฟล์ thai_utf8.txt มีอักษรเขียนว่า ก์ แล้วก็ขึ้นบรรทัดใหม่

พอ run a.out ก็ได้จะผลแบบข้างล่าง

$ ./a.out
0×0E01
0×0E4C
0×000A
$

ทีแรกนึกว่าจะใช้ยากดูแบบนี้ก็คล้ายๆ ใช้ libc ธรรมดาดี ชอบๆ :-).

8 เมษายน 2008

เลือกว่าจะเปิด service อะไรบ้างตอน startup บน Ubuntu และ Debian

Filed under: Uncategorized — वीर @ 4:22 pm
Tags: , , , , , , , ,

ทีแรกก็ลงโปรแกรมชื่อ sysv-rc-conf ด้วยคำสั่ง sudo aptitude install sysv-rc-conf แล้วก็เรียกมันขึ้นมาด้วยคำสั่ง sudo sysv-rc-conf

แล้วก็ไปเลือกได้แล้วว่าจะให้อะไรเปิดปิดบ้าง

เวลาเลือกกด arrow key และ spacebar พอเลือกเสร็จแล้วกด q

อ้างอิง

2 เมษายน 2008

ubuntuhcl.org: เว็บ share ประสบการณ์ ด้าน Hardware ของชาว Ubuntu

Filed under: Uncategorized — वीर @ 4:12 am
Tags: , , , , , , ,

เว็บ share ประสบการณ์ ด้าน Hardware ของชาว Ubuntu. ประสบการณ์นี้ก็ประมาณว่า ใช้เครื่องรุ่นไหนบ้าง. รุ่นไหนใช้กับ Ubuntu รุ่นไหนได้ ถ้าไม่ได้มีวิธีแก้ไขอย่างไร ฯลฯ.

ผมไปสมัครไปละ … น่าผิดหวังนิดๆ ที่ใช้ OpenID ไม่ได้. แต่ก็ไม่ได้กรอกอะไรมากมาย.    นอกจาก UbuntuHCL มีลักษณะรวมศูนย์ซึ่งน่าจะทำให้ ค้นหาข้อมูลง่ายแล้ว. เวลา post review ก็ยังมี list ให้เลือกเลยว่าจะ review hardware แบบไหน ใช้ ubuntu version ไหน. ทำแบบนี้ในเรื่องเฉพาะทาง ข้อมูลก็น่าจะสะอาดครบถ้วน มากกว่าหวังพึ่ง tag มั้ง. เท่าที่เห็นตอนนี้เวลา post ใช้ BBCode หละ ใช้ HTML ไม่ได้.ที่สำคัญอีกอย่างไม่รู้ว่า Post เป็นภาษาอะไรได้บ้าง.

http://www.ubuntuhcl.org/   ข่าวมาจาก http://lwn.net/Articles/276023/rss

29 มีนาคม 2008

text file ที่ส่งมาจาก Windows user มักจะมีอักษรแปลกๆ ติดมาด้วย

Filed under: Uncategorized — वीर @ 2:45 am
Tags: , , , , , , , , , ,

strange_char.png

ตัวแรกเลย 0xFEFF. บ่อยครั้งที่ตัวอักษรตัวนี้ทำให้โปรแกรมของผม หรือแม้แต่ของเพื่อนๆ ที่ใช้ Windows กันเป็นบ่อย. แต่ก็มักจะไม่เห็นจนกว่าจะเอามาเปิดบน gedit บน Ubuntu. อักษรตัวนี้มันคืออะไร ใส่มาทำไม?

หน้าต่อไป »

บลอกที่ WordPress.com .