วันพฤหัสบดีที่ 23 กุมภาพันธ์ พ.ศ. 2555

Auto-responder บน Postfix กับ Virtual Domain

ตามชื่อเลยครับ Auto-responder หรือบางคนก็เรียกว่า auto reply  ปกติแล้วการทำ auto-reply มันจะง่ายมากถ้าหากเป็นการติดตั้ง postfix แบบ domain เดียว เพราะค่า configure ต่าง ๆ สำหรับแต่ละ user ก็จะเป็นการกำหนดค่าของแต่ละ user ใน home directory นั่นเอง

แต่พอเป็น Virtual Domain/ User เราก็ต้องมาศึกษากันอีกทีว่าทำอย่างไร

พูดถึง Postfix พอเราไปดูก็จะพบว่า การใช้งาน Autoresponse ไม่ได้พูดถึงมานานแล้ว ก็คงเป็นเพราะว่าเดี๋ยวนี้เป็นการติดต่อแบบ realtime คือใช้งานผ่าน มือถือ social network แล้ว

แต่ก็ขอเขียนไว้ที่นี่ถึงวิธีการสักหน่อยเผื่อต้องใช้งาน auto-reply กันจริง ๆ

เริ่มจาก หน้านี้ http://workaround.org/ispmail/etch ก็จะพูดไว้ว่ามีคนทำ add-on ไว้เหมือนกันที่ http://www.remofritzsche.ch/goldfish/  แต่ก็อยากให้ไปอ่านต่อที่ http://eugenesklyar.com/roundcube-autoresponder-goldfish-autoreply-plugin เพื่อติดตั้ง plug-in ของ roundcube เพื่อเปิดให้ user ทำการกำหนดค่าเองได้ด้วย

พอผมมาดูก็ปรากฏว่าต้องมีการแก้ไขบางอย่างอีกนิดหน่อยกว่าจะใช้งานได้

แก้ไขไฟล์ autoresponder.php (ที่ได้จาก http://www.remofritzsche.ch/goldfish/ ตอนนั้นเป็น Version 1.0-STABLE)


/* General */
    $conf['cycle'] = 5 * 60;
   
    /* Logging */
    $conf['log_file_path'] = "/var/log/autoreply";
    $conf['write_log'] = true;
 
   
    # This query has to return the path (`path`) of the corresponding
    # maildir-Mailbox with email-address %m
    $conf['q_mailbox_path'] = "SELECT CONCAT('/home/vmail/', SUBSTRING_INDEX(email,'@',-1), '/', SUBSTRING_INDEX(email,'@',1), '/Maildir/') as `path` FROM virtual_users WHERE `email` = '%m'";
   
    # This query has to return the following fields from the autoresponder table: `from`, `to`, `email`, `message` where `enabled` = 2
    $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1 AND `force_enabled` = 1;";
   
    # This query has to activate every autoresponder entry which starts today
    $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` >= CURDATE();";
   

ภายหลังจากของใช้งานจาก /usr/bin/php autoresponder.php แล้วก็จะพบว่ามีการส่ง email ออกไปแล้วตามกำหนดค่าของ $conf['cycle'] คือเป็นการกำหนดว่าจะทำการส่ง auto-reply ให้กับ email ที่ส่งเข้ามาหา user คนนี้ไม่เกิน 5 นาที (5x60 วินาทีนั่นเอง)


วันอังคารที่ 14 กุมภาพันธ์ พ.ศ. 2555

ระบบต่อไป อะไรเอ๋ย?

ระบบต่อไป... อะไรเอ๋ย?

ดูเหมือนช่วงนี้วุ่น ๆ กับการติดตั้งเพื่อใช้งานระบบ นี่ก็พึ่งจะได้ระบบ Survey มาใช้งาน ด้วยระยะเวลาอันน้อยนิด

ต่อมาคงเป็นระบบประมาณนี้

http://www.postgis.org/documentation/casestudies/2008-09-rento/





แนวคิดแบบนี้จะติดตามมาอีกเยอะในอนาคต เช่น



  • จากตรงนี้ โรงหนังที่กำลังจะฉายเรื่อง Titanic ณ เวลา 14:00 น. มีที่ไหนบ้าง โดยใช้เวลาเดินทางไม่เกิน 30 นาที
  • ข้าวขาหมู อร่อย ๆ ที่ยังไม่เคยไปกิน และมีเพื่อนอยู่ใกล้ ตรงนั้น (จะได้ชวนกันไป)



วันศุกร์ที่ 30 กันยายน พ.ศ. 2554

Manually Build Pentaho Bi-Server on Debian

อ้างอิงจาก http://www.prashantraju.com/2010/03/customising-the-pentaho-user-console-part-3/ และ http://phytodata.wordpress.com/2011/01/17/how-to-build-the-pentaho-biserver/

เหตุเกิดก็ตอนที่ต้องการจะ build pentaho เพื่อแก้ไข menu ตาม page ที่อ้างอิงนั้นแหละ แต่ไม่อยากติดตั้ง Eclipe เพราะว่ามันใหญ่เกินไป

ก็เลยต้องทำการ build บน Debian   มาเริ่มกันเลย

ติดตั้ง package ที่จำเป็น
# aptitude  install sun-java6-bin sun-java6-jre sun-java6-jdk sun-java6-plugin sun-java6-fonts ant
# update-alternatives --config java

ติดตั้ง subversion
# aptitude install subversion


checkout pentaho
$ mkdir sources
$ svn co http://source.pentaho.org/svnroot/bi-platform-v2/tags/3.8.0-stable bi-3.8-stable

เริ่ม build กัน
$ cd bi-3.8-stable
$ cd bi-platform-build
$ ant -v publish-all

ผมใช้เวลาไปประมาณ 1 ชั่วโมง เพราะว่า internet มันช้าเกิน

แก้ไขส่วน Mantle
$ cd mantle
แล้วทำการแก้ไข menu ที่ต้องการตามเอกสารอ้างอิง
จากนั้นก็ compile ใหม่
$ ant
แล้วก็ copy mantle, mantleLogin และ mantle-3.5.0.stable.jar 

... เดี๋ยวขอเขียนไว้เท่านี้ก่อน รายละเอียดจะมาใส่ที่หลัง

วันอังคารที่ 20 กันยายน พ.ศ. 2554

postgresql cluster บน Debian

เป็นที่เข้าใจกันว่าหากทำการติดตั้ง PostgreSQL แล้ว package manager จะทำการกำหนดค่าต่าง ๆ ไว้ รวมถึง Folder ที่เก็บ Data

แต่โดยส่วนมากแล้วผมจะสร้าง partition ไว้สำหรับเก็บ Data ไว้ต่างหาก ทำให้เวลาจะใช้งาน PostgreSQL ทีไร ต้องมาทำการแก้ไขค่า configure ต่าง ๆ ยุ่ง

มาคราวนี้ทาง Package นั้นมีเครื่องมือต่าง ๆ ไว้ให้เล่นอีกมากมาย เช่น

  • pg_createcluster
  • pg_dropcluster
  • pg_upgradecluster
  • pg_ctlcluster
  • pg_lsclusters
ผมเลยขอย้าย Data Directory ไปไว้ที่ /db/PGDATA/8.4/main

เริ่มจาก ตรวจดูก่อนว่า cluster เดิมของเราอยู่ที่ไหน



# pg_lsclusters
Version Cluster   Port     Status     Owner        Data directory                         Log file
8.4         main      5432    online    postgres      /var/lib/postgresql/8.4/main    /var/log/postgresql/postgresql-8.4-main.log

ลบ cluster เดิมออก
# pg_dropcluster --stop 8.4 main

สร้าง Folder ไว้รอก่อน
# mkdir -p /db/PGDATA

สร้าง cluster 


# pg_createcluster -u postgres -d /db/PGDATA/8.4/main  --locale=en_US.utf8 --start --start-conf=auto  8.4 main 
Creating new cluster (configuration: /etc/postgresql/8.4/main, data: /db/PGDATA/8.4/main)...
Moving configuration file /db/PGDATA/8.4/main/postgresql.conf to /etc/postgresql/8.4/main...
Moving configuration file /db/PGDATA/8.4/main/pg_hba.conf to /etc/postgresql/8.4/main...
Moving configuration file /db/PGDATA/8.4/main/pg_ident.conf to /etc/postgresql/8.4/main...
Configuring postgresql.conf to use port 5432...

ตรวจดูความเรียบร้อย
# pg_lsclusters 
Version   Cluster   Port     Status    Owner       Data directory                     Log file
8.4          main       5432    online   postgres     /db/PGDATA/8.4/main      /var/log/postgresql/postgresql-8.4-main.log


เรียกได้ว่าเหนื่อยน้อยลงเยอะ


5 Nov 2012:
วันนี้พอเอกสารอ้างอิง อีกอันทีนี่ http://people.debian.org/~mpitt/architecture.html


วันพุธที่ 27 กรกฎาคม พ.ศ. 2554

exfat

ผมมักจะมีปัญหากับ usbdisk โดยเฉพาะอย่างยิ่งเวลาต้องใช้งานทั้ง 3 ระบบ คือ Mac, Linux และ Windows

แรก ๆ ก็ใช้ file system เป็น fat แต่พอติดปัญหาเรื่องของขนาดของข้อมูลที่มีปริมาณมาก ๆ ก็ใช้งานไม่ได้ อีกทั้งเดี๋ยวนี้ไม่ค่อยมีเครื่อง Windows ใช้งานเท่าไหร่

สุดท้ายก็มาลงตัวที่ exFat  มันใช้ได้ทั้ง Windows, Linux และ Mac

ส่วนการใช้งาน exFat บน Linux นั้นต้องติดตั้ง package ตามนี้ก่อน

Debian # aptitude install scons
Debian # wget http://exfat.googlecode.com/files/fuse-exfat-0.9.5.tar.gz
Debian # cd fuse-exfat-0.9.5
Debian # scons install
Debian # mkdir /media/exfat
Debian # modprobe fuse
Debian # mount.exfat /dev/sda1 /media/exfat/
Debian # echo 'fuse' >> /etc/modules

เท่านี้เราก็สามารถใช้งาน usbdisk ที่เป็น exfat ได้แล้วครับ

วันพุธที่ 20 กรกฎาคม พ.ศ. 2554

Madoka

วันนี้ต้องโทรไปต่างประเทศ เพื่อทำการสมัครเป็นผู้พัฒนาของ Apple โดยทำการแจ้งรหัสอะไรสักอย่างหนึ่ง ให้ทาง Apple นั้นทราบ

พอดีคนที่ต้องคุยด้วยไม่อยู่ ก็เลยได้คุยกับคนอื่นแทน เธอชื่อว่า "Madoka"

จำได้ว่าชื่อนี้เป็นตัวละครในหนังสือการ์ตูนเรื่อง "Orange Road"  

อิอิ  Ayukawa Madoka

วันจันทร์ที่ 4 กรกฎาคม พ.ศ. 2554

jpivot กับการพิมพ์เป็น pdf ภาษาไทย

เมื่อเราใช้งาน pentaho analysis (ที่จริงก็เป็น mondrian และ jpivot) เรามีวิธีที่จะพิมพ์หน้ากระดานวิเคราะห์ไปได้ 3 ทางคือ

  1. พิมพ์เป็นหน้า web
  2. พิมพ์เป็น pdf
  3. พิมพ์เป็น excel
แต่ถ้าคุณต้องการพิมพ์เป็น pdf หละก็ สำหรับภาษาไทย มันมีปัญหาตามมาคือ ตัวอักษรภาษาไทยจะเป็น "#####" นั่นเอง

ปัญหาที่ผมเจอนั้น เคยได้ให้น้องลองทำดูแล้ว แต่ก็ติดปัญหาตรงที่ไม่เข้าใจวิธีการ export เป็น pdf ของ jpivot คราวนี้ผมก็เลยต้องลงมือแก้ไขเอง มาดูวิธีการแก้ไขของผมว่ามันมีแนวอย่างไรบ้าง

ตั้งแต่ jpivot 1.6 นั้น มีการเพิ่มความสามารถในการกำหนดฟอนท์ได้  และก็โชคดีที่ว่า ผมใช้ jpivot 1.8 พอดี

แต่ก็โชคร้ายที่ลิงค์ของ "FOP Fonts Howto" ไม่สามารถเข้าใช้งานได้  (หลาย ๆ คนหยุดความพยายามที่ตรงนี้ แต่ผมไม่ ! ..)

FOP นั้นแท้จริงแล้วเป็นหนึ่งในโครงการของ apache (Apache FOP)  เป็นการเปลี่ยนการแสดงผลของ xls formating objects ไปยัง ไฟล์ชนิดอื่น ๆ แต่หลัก ๆ คือ PDF ที่เราต้องการนั่นเอง

มาเร่ิมกัน

เริ่มจาก คุณต้องมี Java ก่อน แล้วก็ download อันนี้ http://xmlgraphics.apache.org/fop/download.html โดยผมเลือก download binary เพราะว่า แค่ต้องการนำมาใช้ไม่ใช่แก้ไข

super_server_: ~ user$ wget http://mirrors.issp.co.th/apache//xmlgraphics/fop/binaries/fop-1.0-bin.tar.gz
super_server_: ~ user$ tar xzvf fop-1.0-bin.tar.gz
super_server_: ~ user$ cd fop-1.0

font อะไรดี

ที่จริงแล้วเวลาจะเลือก Font ที่จะมาใช้นั้น ผมก็เลือกเอาจากในเครื่องที่ใช้นี่แหละ แค่ต้องหาให้ได้ว่าเราควรใช้ฟอนท์ประเภทใด (http://xmlgraphics.apache.org/fop/1.0/fonts.html)  ของผมเลือก TrueType Font

ก็ทำการ copy font ที่ต้องการมาทั้งในส่วนของ normal, bold, italic, bold italic

super_server_: ~ user/fop-1.0$ cp ../path/fonts/myfont*.ttf .

output ที่เราจะได้จากการใช้ fop คือ font metrics ที่เป็น xml

super_server_: ~ user/fop-1.0$ java -cp build/fop.jar:lib/avalon-framework-4.2.0.jar:lib/commons-logging-1.0.4.jar:lib/commons-io-1.3.1.jar:lib/xmlgraphics-commons-1.4.jar org.apache.fop.fonts.apps.TTFReader myfont.ttf myfont.xml

ก็ทำอย่างนี้ไปจนครบทุก font

# bold font
super_server_: ~ user/fop-1.0$ java -cp build/fop.jar:lib/avalon-framework-4.2.0.jar:lib/commons-logging-1.0.4.jar:lib/commons-io-1.3.1.jar:lib/xmlgraphics-commons-1.4.jar org.apache.fop.fonts.apps.TTFReader myfontb.ttf myfontb.xml

# italic font
super_server_: ~ user/fop-1.0$ java -cp build/fop.jar:lib/avalon-framework-4.2.0.jar:lib/commons-logging-1.0.4.jar:lib/commons-io-1.3.1.jar:lib/xmlgraphics-commons-1.4.jar org.apache.fop.fonts.apps.TTFReader myfonti.ttf myfonti.xml

# bold-italic font
super_server_: ~ user/fop-1.0$ java -cp build/fop.jar:lib/avalon-framework-4.2.0.jar:lib/commons-logging-1.0.4.jar:lib/commons-io-1.3.1.jar:lib/xmlgraphics-commons-1.4.jar org.apache.fop.fonts.apps.TTFReader myfontbi.ttf myfontbi.xml

ดังนั้นเราจะได้ไฟล์ที่ใช้งานมาคือ

  1. myfont.ttf
  2. myfont.xml
  3. myfontb.ttf
  4. myfontb.xml
  5. myfonti.ttf
  6. myfonti.xml
  7. myfontbi.ttf
  8. myfontbi.xml


ติดตั้ง

เมื่อได้ไฟล์ที่ต้องการทั้ง 8 ไฟล์แล้ว ก็นำไปไว้ที่ biserver-ce-3.8.0-stable/biserver-ce/tomcat/webapps/pentaho/WEB-INF/jpivot

# copy fonts and font-metrics ไปยัง jpivot/print

super_server_: ~ user/fop-1.0$ cp myfont*.* biserver-ce-3.8.0-stable/biserver-ce/tomcat/webapps/pentaho/WEB-INF/jpivot

# edit config file

super_server_: ~ user/fop-1.0$ cd biserver-ce-3.8.0-stable/biserver-ce/tomcat/webapps/pentaho/WEB-INF/jpivot
super_server_: ~ user/fop-1.0$ vi userconfig.xml

ในไฟล์ userconfig.xml ก็จะบอกวิธีการแก้ไขและตัวอย่างไว้ให้แล้วนะ ของผมแก้ไขเป็นดังนี้

















อันที่จริงแล้วแค่นี้ก็ดูเหมือนจะใช้ได้ตามที่มีผู้เขียนไว้ที่ http://wiki.pentaho.com/display/ServerDoc2x/Fonts+in+Pentaho แต่ไม่ใช่อย่างนั้น ภาษาที่ได้ออกมายังคงเป็น "####" เหมือนเดิม

fop มันทำงานตอนไหน

หลังจากทดลองแล้วไม่ได้ผล ผมจึงหยุดพักแล้วกลับมาเริ่มใหม่อยู่ 3-4 ครั้ง ก็ปรากฏว่าผลยังคงเหมือนเดิม นั้นคือ "####" หลาย ๆ คนคงท้อ และเลิกไป แต่ก็อีกแหละ ผมมีความรู้สึกว่า วิธีการที่เขียนไว้ http://wiki.pentaho.com/display/ServerDoc2x/Fonts+in+Pentaho มันยังขาดอะไรอยู่บางอย่าง จึงพยายามค้นหาว่าสิ่งนั้นคืออะไร สุดท้ายก็ได้คำตอบว่า ไฟล์ fo มันอยู่ไหน ตามนี้ (http://forums.pentaho.com/showthread.php?58744-JPivot-PDF-report-template&highlight=fo_mdxtable.xsl)

ไฟล์ fo ที่เป็นต้นแบบในการแสดงผลของ mdx table นั้นอยู่ที่  biserver-ce-3.8.0-stable/biserver-ce/tomcat/webapps/pentaho/WEB-INF/jpivot/table/fo_mdxtable.xsl

#edit font-family ให้เป็น font-family ที่เราต้องการใช้งาน
super_server_: ~ user$ vi biserver-ce-3.8.0-stable/biserver-ce/tomcat/webapps/pentaho/WEB-INF/jpivot/table/fo_mdxtable.xsl


ในที่สุดผมก็ได้ pdf ที่พิมพ์ภาษาไทยได้สวยงาม แม้ใน chart ของ jpivot เองก็ตาม