วันพุธที่ 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 เองก็ตาม