Saturday, September 26, 2009

มาเรียนภาษาญี่ปุ่นกันเถอะ

ปกติเวลานั่งทำงานอยู่ที่บ้านผมจะเปิดโทรทัศน์ หรือวิทยุ ไปด้วย เพราะว่าทำอย่างที่บ้านไม่ต้องการสมาธิมากมาย วันนี้หมุนหาช่องรายการทีวี น่าดูไม่เจอ สุดท้ายก็ไปเจอรายการ nhkworld ของ www.nhk.co.jp

สถานีนี้เป็นสถานีข่าว แต่ว่ามีรายการสลับระหว่างข่าวน่าดูมาก เอ... แต่ก็ยังไม่เห็นโฆษณานะ ไม่รู้ว่าเป็นเหมือน thai bps บ้านเราหรือเปล่า

วันนี้เป็นรายการของการใช้พลังจากของประเทศญี่ปุ่น เทคโนโลยีของญี่ปุ่นทันสมัยมาก และก็มีการปรับให้เข้ากับวัฒนธรรมด้วย สิ่งที่ได้จากรายการวันนี้มีดังนี้
  1. ญี่ปุ่นเค้าเอาความร้อนของ Magma มาใช้ผลิตไฟฟ้า ถ้าเป็นบ้านเราต้องเอาวัสดุธรรมชาติที่ได้จากการเกษตรมาทำบ้าน
  2. บ้านที่ไม่ต้องใช้เครื่องปรับอากาศ แค่เปลี่ยนทิศทางของลม และ ผสมกับหลักการของธรรมชาตินิดหน่อย
  3. วิธีการลดความร้อนภายในบ้านหรือในอาคารในกรุงโตเกียว โดยใช้การปลูกต้นไม้ เช่น การปลูกต้นไม้ (ที่กินได้ บนดาดฟ้าอาคารสูง) การปลูกผักเป็นม่านกันความร้อนของโรงเรียน การปลูกต้นไม้เป็นที่บังแดดของบ้านที่มีหน้าต่างด้านล่างที่เป็นกระจก
  4. การมุงหลังคาด้วยหญ้า และการเปลี่ยนรอบการมุง
ทั้งหมดยังเป็นการรักษาความเป็นญี่ปุ่นไว้ได้ดี บ้านที่ลดความร้อนและให้แสดงสว่างในตัวเอง ยังเป็นรูปแบบญี่ปุ่นอยู่เลย ถ้าเป็นบ้านหลาย ๆ คนคงว่าเชย

เขียนมาเยอะ ที่จริงแล้ววันนี้มี "มาเรียนภาษาญี่ปุ่นกันเถอะ" หมายความถึง อันนี้ครับ ดูแล้ว นี่สิถึงจะเป็นการใช้เทคโนโลยีที่แท้จริง

ตามนี้เลยครับ http://www.nhk.or.jp/lesson/thai/

Thursday, September 24, 2009

การเปรียบเทียบ Column ใน Analysis Service

เมื่อเรามีข้อมูลหลาย ๆ ช่วงเวลา และต้องการเปรียบเทียบกัน และแสดงผลต่างนั้น ทางที่ดูแล้วง่าย ก็คือเขียน MDX เอง ดีกว่า

ดังนี้

with member [Measures].[Weight] as '([Measures].[Sales] / ([Order Status].Parent, [Measures].[Sales]))', FORMAT_STRING = "#,###.#%"
member [Measures].[Val] as '[Measures].[Sales]', FORMAT_STRING = IIf(([Measures].[Sales] > ([Time].PrevMember, [Measures].[Sales])), "|#|style=green", "|#|style=red")
member [Measures].[Qtd] as '[Measures].[Quantity]', FORMAT_STRING = IIf(([Measures].[Quantity] > ([Time].PrevMember, [Measures].[Quantity])), "|#|style=green", "|#|style=red")
select NON EMPTY (Union({[Time].[All Years]}, [Time].Children) * {[Measures].[Qtd], [Measures].[Val], [Measures].[Weight]}) ON COLUMNS,
NON EMPTY Order([Order Status].Children, [Measures].Value, DESC) ON ROWS
from [SteelWheelsSales]
where ([Product].[All Products], [Markets].[All Markets])


ไม่อธิบายนะครับดูจาก code ก็จะรู้เรื่องดูอยู่แล้ว

Wednesday, September 23, 2009

เรื่องของเครื่องครัวใน data integration

ถ้าหากเคยใช้ Pentaho Data Integration แล้ว ก็จะพบว่าหลัก ๆ แล้วประกอบด้วย 3 ด้วยกันคือ

1. Spoon
2. Kitchen
3. Pan

ตัว Data Integration เองถูกเรียกว่า Kettle ก็เกี่ยวกับครัว ๆ นั่นเอง แต่หลาย ๆ คนพอได้ลองใช้งาน แล้วก็มีคำศัพท์ 3 อันคือ

1. Developing
2. Transformation
3. Job

ใน ##pentaho มีคนบอกความสัมพันธ์ไว้ว่า

Spoon is GUI for developing. Kitchen runs transformations non-interactively, pan runs jobs non-interactively

ปัญหาการ Save Analysis บน Pentaho

วันก่อนพอทำการ Drill ไปจนถึงข้อมูลที่มีภาษาไทย แล้วต้องการ Save เก็บไว้
หลังจาก Save แล้วทำให้ไม่สามารถเรียกใช้ Analysis ที่ได้บันทึกไว้ได้

สุดท้ายก็ต้องไปพึ่ง irc.freenode.net ##pentaho

แล้วก็มีผู้ช่วยเหลือจาก Protuguese บอกไว้ว่า

rGoncalves: I've had a problem with protuguese chars and solved it starting the JVM adding -Dfile.encoding=UTF-8 to the catalina start up options. Maybe you can find an encoding that works for you


จากนั้นเราก็มาทำการ Start JVM ใหม่

มันได้ผล....

ที่น่าดีใจคือ มันมีครช่วยเหลือ

export CATALINA_OPTS="-Dfile.encoding=UTF-8 -Xms256m -Xmx768m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"

Sunday, September 20, 2009

การใช้งาน Combination lookup/update เพื่อสร้าง Cube

หลังจากนั่งรอสร้าง Cube จากจำนวน Record 540,000 โดยที่มีจำนวนสินค้า และจำนวนลูกค้าที่หลังจากทำ Unique แล้ว จะมีจำนวน Record จำนวนมาก โดยเฉพาะที่ ตารางที่เป็น Dimension ของ Customer ซึ่งในรอบแรกใช้เวลาในการสร้าง Dimension มากกว่า 2 ชั่วโมง

แต่พอทำการย้ายตำแหน่งของการสร้าง dimension ก็พบว่าเร็วขึ้นกว่าเดิมเยอะ

สรุปได้ดังนี้ครับ

1. สร้าง Dimension ที่มีจำนวน มาก ๆ ก่อนเสมอ เช่น Customer, Product
2. สร้าง Primary key ไว้สำหรับทำ Aggregate ได้เลย จะได้ไม่เสียเวลาทีหลัง

แก้ไข

จากที่ให้ทำการสร้าง Dimension ของจำนวนข้อมูลที่มีขนาดใหญ่นั้น เท่าที่ลองดูแล้ว แนะนำให้สร้างเองโดยไม่ใช้เครื่องมือดีกว่า

Friday, September 18, 2009

เมื่อ MightMouse ของ Mac เลื่อนแล้วไม่ค่อยทำงาน

วันนี้ลำคาญการใช้ Wheel ของเจ้า Mighty Mouse ไปเจอในหลาย ๆ เวป เค้าให้ถอด แกะ ออกมา แต่ว่าเท่าที่ดูแล้ว Mouse นี่มันไม่มีที่ให้แงะ นะสิ

สุดท้ายก็อ่านเจอว่า เค้าโทรไปถามที่ Support ของ Apple แล้วเค้าบอกว่าทำดังนี้

1. หงาย Mouse ขึ้น
2. แล้วใช้ ผ้าชุบน้ำอุ่น ๆ หรือ แอลกอฮอล์ ให้ชุ่ม
3. แล้วก็คลึงที่ Wheel ประมาณซัก 30 วินาที จะสังเกตได้ว่า จะมีขยะติดมาออกมาติดกับผ้าครับ
4. แล้วใช้ผ้าแห้ง ๆ คลึงที่ Wheel ซัก 30 วินาที จนมั่นใจได้ว่า Wheel นั้นแห้งแล้ว
5. ทดลองใช้งานดูครับ


ของผมกลับมาใช้งานได้แล้วคับ

Monday, September 14, 2009

How to load FoodMart Database into Postgresql

You have to read the installation manual first (http://mondrian.pentaho.org/documentation/installation.php#PostgreSQL_on_Windows_example) then you need a little change to load FoodMart into Postgres

The easy way to import FoodMart data use the pentaho

1. Create Database
server# createdb -U -Eutf8 foodmart
2. Locate biserver-ce folder.
3. Go to library folder.
server# cd biserver-ce/tomcat/webapps/pentaho/WEB-INF/
3. Then locate the Data FoodMartCreateData.sql. (in my case is /mondrian/demo/FoodMartCreateData.sql)


server:biserver-ce/tomcat/webapps/pentaho/WEB-INF/$ java -cp \
"mondrian-3.1.1.jar:lib/log4j-1.2.8.jar:lib/eigenbase-resgen-1.3.0.11873.jar:lib/eigenbase-properties-1.1.0.10924.jar:lib/eigenbase-xom-1.3.0.11999.jar:lib/commons-logging-1.1.jar:lib/postgresql-8.2-504.jdbc3.jar" \
mondrian.test.loader.MondrianFoodMartLoader \
-verbose -tables -data -indexes \
-jdbcDrivers="org.postgresql.Driver,sun.jdbc.odbc.JdbcOdbcDriver" \
-inputFile=/mondrian/demo/FoodMartCreateData.sql \
-outputJdbcURL="jdbc:postgresql://localhost/foodmart" \
-outputJdbcUser=postgres \
-outputJdbcPassword=password


You need to locate your classes for run this.
Good Luck!
Ask me if you need this postgres dump file!