วันอังคารที่ 15 ธันวาคม พ.ศ. 2552

สัมนากับ Osdev ที่เกาะช้าง

เมื่อวันที่ 5-7 ธันวาคมพวกเราชาว Osdev ได้ไปสัมนาที่เกาะช้างมา โดยมีผู้ร่วมเดินทางทั้งสิ้น 14 คนกับอีก 5 ตัวครับ ซึ่งถ้าเป็นคนอื่นคงเขียนว่าแต่ละวันทำอะไรบ้าง พร้อม post รูปประกอบ แต่โดยนิสัยของผมแล้วขอรวมแบบไม่แยกตามวัน เอาไปดูกันเองดีกว่าครับ (ขี้เกียจ)

http://picasaweb.google.com/leknarm/KohChang
Continue Reading...

วันเสาร์ที่ 14 พฤศจิกายน พ.ศ. 2552

Contributed numbertext extension

และแล้ว numbertext ก็สามารถใช้งานกับภาษาไทยได้อย่างถูกต้อง หลังจากส่ง patch ไปให้ทางคุณ nemeth[at]openoffice[dot]org เป็นเวลา 3 วัน รวดเร็วจริงๆ โดยส่วนที่แก้ไขคือ การแสดงผลคำพูดหลังจุดทศนิยม ตำแหน่งแรก และหลังจากตำแหน่งที่ 2 เป็นต้นไป โดยสามารถดู preview ได้ที่ http://numbertext.org 

Numbertext นี้สามารถนำไปใช้ใน OpenOffice.org ได้โดยการติดตั้ง extensions numbertext ตาม link นี้ครับ http://extensions.services.openoffice.org/project/numbertext


ปล. มีชื่อเราใน Author and contributors ด้วย อิอิ (แอบดีใจ)
Continue Reading...

วันอาทิตย์ที่ 8 พฤศจิกายน พ.ศ. 2552

เพิ่ม Open with Notepad2 ในการคลิกขวาไฟล์ทุกไฟล์

การเปิดไฟล์ด้วย Text Editor นั้นสามารถทำได้โดยการเลือก Open With แล้วไปที่ Text Editor ที่ต้องการแต่วิธีการนี้ทำให้เสียเวลามาก ขั้นตอนที่จะทำต่อไปนี้จะเป็นการเพิ่มการเปิด Text Editor ลงไปในการคลิกขวา

  1.  ดาวน์โหลด Notepad2
  2. copy Notepad2.exe ไปไว้ที่ C:\Windows\System32

หลังจากนั้น
  1. เปิด regedit.exe 
  2. ไปที่ HKEY_CLASSES_ROOT\*\shell
  3. สร้าง key ใหม่ที่ชื่อว่า Open with Notepad2
  4. ภายใน Open with Notepad2 สร้าง key ชื่อ command
  5. ใน key command แก้ String value ให้เป็น Notepad2.exe %1
เมื่อได้ตามนี้แล้วบนไฟล์ทุกไฟล์ก็จะมี Open with Notepad2 แล้วครับ


Continue Reading...

วันพฤหัสบดีที่ 5 พฤศจิกายน พ.ศ. 2552

ปิดการแสดงผลตัวอักษรซ้อนกันของ OpenOffice.org Calc บน Windows 7

สำหรับท่านที่เคยใช้ OpenOffice.org Calc นั้นคงเคยเจอกันไม่มากก็น้อยที่ตัวอักษรภาษาไทยซ้อนกัน ซึ่งจะเกิดขึ้นบน UI ต่างๆ และโดยมากจะเกิดบน Windows Vista และ Windows 7
การที่จะทำให้ภาษาไทยแสดงผลได้ถูกต้องนั้น มีวิธีการง่ายๆคือ
  1. เปิด OpenOffice.org Calc 
  2. ไปที่เมนู Tools > Options > OpenOffice.org > View
  3. ปิดเครื่องหมายถูกหน้า Use system font for user interface
  4. Restart OpenOffice.org
เพราะว่า System โดยปกติแล้วจะใช้ Font Segoe UI ซึ่งผมเดาว่าไม่มีภาษาไทย และ System ก็เลยไปดึงภาษาไทยมาจาก Font อื่นซึ่งไม่ Work กับ OOo ทำให้ตัวอักษรซ้อนกัน ขั้นตอนดังกล่าวเป็นการบอกว่า OOo อย่าใช้ Font ของ System นะจึงทำให้ตัวอักษรไม่ซ้อนกัน

แต่ในบางกรณี เมื่อทำตามขั้นตอนด้านบนแล้วตัวอักษรก็ยังซ้อนกันอยู่ ผมเดาว่า OOo ดันไปเลือก Font ที่ไม่มีภาษาไทยมาใช้เหมือนกับ System ดังนั้นวิธีการแก้ไขอย่างถาวรของผมคือ ให้ System ใช้ Font ที่มีภาษาไทยซะก็จบ ซึ่งทำได้โดย

  1. ไปที่ Control Panel เลือก Personalization
  2. คลิกไปที่ Windows Color ด้านล่างสุดของหน้าต่าง
  3. เลือก Advanced apperance settings...
  4. ค่อยๆ เลือก Item ทีละอันแล้วปรับ Font ด้านล่างให้เป็น Tahoma ซะ 
ทำให้ครบแล้วกด OK และถ้าใครเอาเครื่องหมายถูกหน้า Use system font for user interface ออกก็ให้เอากลับคืนมา แค่นี้ OOo ก็จะเลือกภาษาไทยได้อย่างถูกต้องแล้วครับ

ปล. วิธีการนี้จะทำให้ Font บน UI ของ Windows กลายเป็น Tahoma แทนซึ่งสำหรับผมนั้นไม่ซีเรียสอะไรครับ เน้นถูกต้องมากกว่า
Continue Reading...

วันอังคารที่ 3 พฤศจิกายน พ.ศ. 2552

OpenOffice.org Calc Add-In with datedif function

[แก้ไข] algorithm ใหม่เนื่องจากตัวเก่ามีปัญหาการคำนวณ สามารถ download ได้ที่
http://sites.google.com/site/leknarm/files/datedif-0.9.2.oxt?attredirects=0&d=1

-------------------------------------------------------------------------------------------------

และแล้วก็สร้าง Calc function ที่สามารถเรียกใช้งานได้ผ่าน function wizard ได้เสียที เสียเวลาไปวันนึงเต็มๆ แต่ก็คุ้มครับ

การสร้างฟังก์ชันในลักษณะนี้เรียกว่า Calc Add-In ซึ่งภาษา OpenOffice.org Basic นั้นไม่สามารถทำได้ผมเลยต้องเขียนด้วยภาษา Java แทนครับ

โดย Tools ที่ผมใช้งานคือ NetBeans 6.7.1 และ OpenOffice.org Extensions Plug-in for NetBeans v2.0.5 และนี่ก็คือ datedif extensions ที่ลองสร้างขึ้นมาครับ download

หากมี bug หรือข้อแนะนำอย่างไรก็สามารถ comment กันมาได้ ถ้าดีจริง ผมจะแก้ไขให้ครับ
Continue Reading...

วันพุธที่ 28 ตุลาคม พ.ศ. 2552

OpenOffice.org Remove Print Areas

สำหรับท่านที่เริ่มใช้งาน OpenOffice.org เมื่อนำไฟล์จาก Microsoft Excel มาเปิดด้วย OpenOffice.org Calc ส่วนมากจะเกิดปัญหาการ ปริ้นหน้าที่ต้องการไม่ออกแต่ออกหน้าอื่นแทน สาเหตุเนื่องมาจากไฟล์ xls ที่นำมานั้นติด Print ranges อยู่

วิธีการแก้ไขง่ายๆ คือ sheet ที่ติด print ranges(หน้าที่ปริ้นออกมา หรือที่อยู่บน print preview) ไปที่เมนู Format > Print Ranges > Remove  เท่านี้ print ranges ก็จะหายไปอย่างปลิดทิ้ง

คำถามเกิดขึ้นทันใด ถ้าไฟล์ของผมมีมากกว่า 20 sheets ล่ะหรือถ้ามีเป็น 100 sheets จะทำอย่างไร

ไม่ต้องกังวลครับผมได้ทำ OpenOffice.org Extensions เพื่อ remove print ranges เรียบร้อยแล้วครับ สามารถดาวน์โหลดได้ที่

http://extensions.services.openoffice.org/project/rmprnrange

วิธีการใช้งานคือ
Format > Print Ranges > Remove All

แค่นี้ print ranges ของทุกๆ sheet ก็จะหายไปอย่างสิ้นเชิง

เข้าไปโหลดใช้งานกันแล้ว ถ้าคิดว่ามันดีก็ช่วย rate ให้ด้วยนะครับ ^ ^
Continue Reading...

วันเสาร์ที่ 17 ตุลาคม พ.ศ. 2552

OpenOffice.org datediff

บน OpenOffice.org นั้นไม่มีฟังก์ชัน datediff ให้ใช้งานกันทำให้ผู้ที่เคยใช้งานฟังก์ชัน datediff บน MS Excel เกิดปัญหาขึ้น แต่บน OpenOffice.org นั้นเราสามารถใช้ฟังก์ชันมาตรฐานเพื่อสร้างฟังก์ชัน datediff ได้เช่น

การหาจำนวนปี

=YEARS(A1;B1;0)

การหาจำนวนเดือน


=IF(MONTH(B1) > MONTH(A1) ;MOD(MONTHS(A1;B1;0);12);MOD(MONTHS(A1;B1;0);12))

การหาจำนวนวัน

=IF(DAY(B1) > DAY(A1) ;DAYS(DAY(B1);DAY(A1));DAYS(DAY(B1);DAY(A1)) + DAYSINMONTH(A1))

โดยผมใส่วันในการเริ่มไว้ที่ cell A1 และวันสิ้นสุดไว้ที่ cell B1 ครับ
แต่ผมได้ทำ template สำหรับฟังก์ชันนี้ไว้แล้วครับ โดยสามารถใช้ฟังก์ชันจาก Formula ได้เลยโดย


=DATEDIF(วันเริ่มต้น; วันสิ้นสุด; ผลลัพธ์ที่ต้องการ[0-2]) 

โดยผลลัพธ์แบ่งออกเป็น
  1.  0 = ปี
  2.  1 = เดือน
  3.  2 = วัน
ตัวอย่างเช่น

A1 = 25/08/1995
B1 = 21/10/2009

C1 = DATEDIF(A1; B1; 0)

ผลลัพธ์คือ C1 = 14

template สามารถดาวน์โหลดได้ที่ download

หากมี bug ประการใดโปรดแจ้งผมด้วย จะได้ทำการแก้ไขครับ
Continue Reading...

วันพฤหัสบดีที่ 15 ตุลาคม พ.ศ. 2552

Installing Intalio Tempo

ติดตั้ง Tempo บน Windows 7

ติดตั้งโปรแกรม
  1. jdk
  2. ruby เวอร์ชั่น 1.8.x
  3. ruby gems
  4. buildr gem เวอร์ชั่น 1.3.3 ขึ้นไป
  5. git
  6. mysql
ขั้นตอนการติดตั้ง
  1. ดาวน์โหลด source code โดยใช้ git

    git clone git://github.com/intalio/tempo.git

  2. รัน สคริป

    TEMPO_CHECKOUT/rsc/scripts/tempo_builder.rb

  3. สร้าง database bpms

    mysqladmin create bpms -u root
    mysql -D bpms -u root < bpms.sql
    
    โดย bpms.sql จะอยู่ที่ source ที่ check out ออกมา จากที่ลองใช้คำสั่งปรากฏว่า bpms.sql ที่บรรทัดที่ 5 ซ้ำกับบรรทัดที่ 2 ทำให้รันคำสั่งไม่ได้ ผมจึงลบ คำสั่งบรรทัดที่ 5 ออก
  4. เปิด cmd prompt แล้วเข้าไปที่ folder tempo-tomcat-xxx ใน folder bin รัน startup.bat
จากนั้นสามารถทดลองเล่นกันได้ที่ http://localhost:8080/ui-fw/
Continue Reading...

วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2552

Drupal css limited

หากใครใช้ drupal แล้วการแสดงผลบน ie มีปัญหาอ่านทางนี้เลยครับ

บน drupal การแสดงผล css บน ie จะ link มาได้แค่ 31 link เท่านั้้นจึงทำให้การแสดงผลที่ต้องใช้ css ที่ link เข้ามาตั้งแต่ไฟล์ที่ 32 ขึ้นไปจะมีการแสดงผลที่เละได้ ซึ่ง drupal ก็มี module ที่ใช้แก้ไขคือ unlimited css ซึ่งสามารถดาวน์โหลดได้ที่ http://drupal.org/project/unlimited_css
โดยเมื่อติดตั้งเสร็จแล้ว เปิดใช้งาน module การแสดงผลก็จะดีขึ้นมาทันตาเห็นเลยครับ

เอแต่ทำไม drupal เขาไม่ลงมาแต่แรกเลยหว่างง
Continue Reading...

วันศุกร์ที่ 10 กรกฎาคม พ.ศ. 2552

Thousands Separator

exบน OpenOffice.org Calc นั้นไม่มีปุ่ม comma หรือ Thousand Separator เหมือนกับบน Excel ผมก็เลยทำปุ่มนี้ขึ้นมาเป็น extension เมื่อติดตั้งแล้วจะได้ปุ่มเหมือนกับบน Excel เลยครับโดยสามารถดาวน์โหลดได้ที่

http://extensions.services.openoffice.org/project/thousandseparator

ซึ่งการทำงานผมได้เลียนแบบบน Excel 2003 มาครับ
Continue Reading...

วันเสาร์ที่ 4 กรกฎาคม พ.ศ. 2552

OpenOffice.org Menubar&Toolbar Merging

สำหรับคนที่คิดจะเริ่มทำ extensions ของ OpenOffice.org เป็นครั้งแรกคงหนีไม่พ้น extensions ที่ช่วยทำ extensions อีกทีที่ชื่อว่า BasicAddonBuilder หรือ BAB นั่นเอง สามารถดูได้จาก

http://www.linuxbeacon.com/doku.php/articles:ooobab

ซึ่ง extensions นี้ให้ความสะดวกสบายมากเพราะ จะมี UI มาคอยเก็บค่า configuration ต่างๆที่จำเป็นแล้วนำไปสร้างเป็น Extension ให้เรียบร้อยเลยแต่ว่า มันไม่มีเมนูสำหรับแทรก ปุ่มลงใน toolbar หรือแทรก menu ลงใน menubar เลยสิ มีแค่สร้าง menu ใหม่หรือ toolbar ใหม่เท่านั้น
แต่ เราสามารถทำ ปุ่มหรือ menu ที่เราสร้างไปแทรกอยู่ toolbar หรือ menubar เก่าได้ด้วยวิธีการแก้ไข file Addon.xcu โดยเราต้องเพิ่ม MergePoint ครับเช่น

<prop oor:name="MergePoint">
  <value>.uno:PickList\.uno:SetDocumentProperties</value>
</prop>

หมายความว่า จุดที่เราจะ Merge นั้นอยู่ที่ Menu File ตำแหน่ง Properties ซึ่งค่าตัวแปรต่างๆ ที่ใช้นั้นเราสามารถดูได้จาก uno function ครับ ในส่วนต่อมาเราจะต้องบอกว่าเราจะแทรกก่อนหรือหลัง ส่วนที่เราระบุไปเมื่อครู่ โดยการใช้ MergeCommand เช่น

<prop oor:name="MergeFallback">
  <value>AddPath</value>
</prop>

หลังจากเรากำหนดจุด MergePoint, MergeCommand และ MergeFallback แล้วเราก็ทำการเพิ่ม Menu ได้เลยครับดังนี้

<node oor:name="MenuItems">
  <node oor:name="m1" oor:op="replace">
    <prop oor:name="Context" oor:type="xs:string">
      <value>com.sun.star.text.TextDocument, com.sun.star.sheet.SpreadsheetDocument, com.sun.star.drawing.DrawingDocument, com.sun.star.presentation.PresentationDocument </value> 
    </prop>
    <prop oor:name="URL" oor:type="xs:string">
      <value>vnd.sun.star.script:EasyMigration.PageSetup.PageSetup?language=Basic&location=application</value>
    </prop>
    <prop oor:name="Title" oor:type="xs:string">
      <value>Page Setup</value>
    </prop>
  </node>
</node>

ในส่วนของ Context นั้นเป็นตัวบอกว่าเราจะทำใน Application อะไรส่วน URL นั้นบอกว่าเราจะทำอะไรเช่นในตัวอย่างนั้นจะเรียก Macro ตัวนึงครับ ส่วน Title นั้นก็เป็น ชื่อของ Menu ของเรานั่นเอง

เราสามารถเพิ่ม Submenu ได้ด้วยครับ อ่านเพิ่มเติมได้จาก http://wiki.services.openoffice.org/wiki/Framework/Article/Addon_Menu_Toolbar_Merging
ปล. ลิ้งด้านบน มีข้อมูลในส่วนของ toolbar merging นะจ๊ะ คล้ายๆกัน
Continue Reading...

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

Export Thai pdf on drupal

ปัญหาคือ module print บน drupal นั้นไม่ ได้ติด tools ในการ export pdf มาให้เราจึงต้องทำการเลือก third-party tools มาซักตัวซึ่งผมก็เลือก tcpdf เพราะชื่อนั้นคุ้นหูดีครับ
ชื่อคุ้นหูแต่ว่า tcpdf นั้นยังไม่สามารถ export ภาษาไทยได้ ดังนั้นเราจึงต้อง config กันหน่อย
ขั้น แรกก็สันนิษฐานว่า ฟอนต์ที่ใช้นั้นคงไม่มี อักขระ ไทยแน่ๆจึงลองเปลี่ยน font ดู ซึ่งไปเจอ freeserif ที่ดันมีอักขระไทยแต่ว่ามีแต่แบบ regular ส่วนที่เป็น bold กับ italic ดันไม่มี
คราวนี้สงสัยคงต้องสร้าง font เองแล้วแต่ว่า tcpdf ใช้ font นามสกุล .ctg.z, .z และ .php ซึ่ง tcpdf นั้นมี tools ในการสร้าง font มาให้อยู่แล้วและมีคู่มืออยู่ที่

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_fonts


วิธีการครบ แต่ว่าขาด font ซึ่ง font ฟรี ที่มีอักขระไทยนั้นคงหนีไม่พ้น norasi ผมจึงทำการ ดาวน์โหลดแล้วจัดการ
  1. สร้าง ufm ก่อนด้วยวิธีการ ttf2ufm -a -F norasi.ttf จะได้ ufm และ afm มาครับแต่ว่าเราจะให้ ufm เนื่องจากเราจะใช้ TrueType ที่เป็น Unicode ครับ
  2. ทำ การ run php script makefont.php เพื่อสร้าง ไฟล์เจ้าปัญหา .ctg.z, .z และ .php ด้วยคำสั่ง php -q makefont.php norasi.ttf norasi.ufm
ก็จะ ได้ ไฟล์ .ctg.z, .z และ .php ครับซึ่งถ้าเรา copy เข้าไปเก็บไว้ใน fonts ของ tcpdf แล้วทำการเลือกใช้ font นั้นเราก็จะสามารถ export เป็นภาษาไทยได้แล้ว
แต่ที่เราทำมานั้นเราเพิ่งจะได้ font ที่เป็นแบบ regular ตัวเดียวนะครับ ถ้าเราต้องการตัว bold และ italic เราต้องทำกับ font ที่เหลือด้วยครับโดยชื่อนั้นต้องเป็นตาม pattern นี้
  1. norasi = regular
  2. norasib = bold
  3. norasii = italic
  4. norasibi = bold & italic
แค่นี้เรา file PDF เราก็สมบูรณ์แล้วครับ เย้

ซึ่งต้องใช้ makefont.php และ ttf2ufm.exe ซึ่งอยู่ภายใน tcpdf ครับ
Continue Reading...

วันเสาร์ที่ 20 มิถุนายน พ.ศ. 2552

Regular Expression

regular expression โดยส่วนตัวแล้วผมชอบมากเพราะเป็น pattern ที่น่าสนใจ ใช้กันทั่วบ้านทั่วเมือง และสะดวกสบายมากครับ ซึ่งอธิบายคร่าวๆได้ดังนี้

http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html

ซึ่งจุดที่น่าสนใจคือ greedy และ lazy เพราะบางคนอาจจะไม่เข้าใจเพราะใน Pattern ของ Java อธิบายไม่ค่อยดีนักแต่ถ้าเราลองมาแปลมันดู

greedy = โลภ = เอา pattern ที่ยาวที่สุด
lazy = ขึ้เกียจ = เจอก็จบ

ถ้าแปลตรงๆ ก็่จะทำให้เข้าใจได้มากขึ้น ดังตัวอย่าง

input = "example@google.com tutorial@google.com";

ถ้าเรามี input ดังนี้แล้วเราใช้ pattern = ".*@" ผลลัพธ์คือ

greedy = "example@google.com tutorial@google.com";
lazy = "example@google.com tutorial@google.com";

หรือถ้าใครอยากเข้าใจมากให้แนะนำให้อ่าน

http://en.wikipedia.org/wiki/Regular_expression

อ่อ และส่วนที่ผมคิดว่าดีที่สุดใน regular expression นั้นคือ back reference ครับ หมายถึงเราสามารถนำข้อความที่เรา search ไปใช้ได้ครับโดยใช้ () ครอบในส่วนที่เราจะนำไปใช้และใช้ $number ในการแสดงผลครับ

ปล. split ใน Java รับ Input เป็น regex ได้ด้วยนะคร้าบ
Continue Reading...

Blogroll

About