22 กรกฎาคม 2552

Flex Hello world: First Flex Application

       เกือบจะกลายเป็นธรรมเนียมปฎิบัติไปแล้ว สำหรับการเริ่มต้นศึกษา programming language ใหม่ ที่จะต้องลองเขียนโปรแกรม Hello world ตัว Tools ที่จะใช้พัฒนาคือ Flex Builder 3 ครับลุยกันเลย
       1. สร้าง Project ใหม่โดยเลือกที่ File-> New-> Flex Project แล้วสร้าง Application ชื่อ Hello World
       2. เราจะได้ไฟล์ main.mxml เลือกเป็น code view
       3. เพิ่ม code ใน tag
       4. กดปุ่ม run ก็จะได้ Hello world application แบบง่ายๆ ออกมา

Flex Desktop Application with AIR

       Adobe Integrated Runtime (AIR) เดิมมี code name ว่า Apollo ซึ่งเราใช้ตัว AIR นี้ในการใช้ Flex Applications เป็น Desktop Applications ซึ่งมันจะสามารถรันแบบ Cross platform ทั้ง Windows, Max, Linux OS โดยเราสามารถสร้าง Flex Applications หรือ AJAX Applications นั้นหมายถึงถ้าเราสร้าง Flex หรือ Ajax Applications ได้ เราก็จะสร้าง Desktop Applications ได้เช่นกัน
       Features หลักๆ ของ AIR มีดังนี้
       - Local file-system access: ซึ่งเป็นตัวหลักที่ทำให้เราสามารถย้ายจาก Web-based มาเป็น Desktop ได้
       - Integrated Web browser: โดยตัว AIR runtimes จะมี builder Web Browser (WebKit)
       - Embedded SQLite database: ทำให้เราสามารถพัฒนา Application ทีทำงาน Offline database ได้
สามารถศึกษาข้อมูลเพิ่มเติมได้จาก www.adobe.com/products/air

21 กรกฎาคม 2552

Flex vs Silverlight

       Silverlight เป็น RIA Technology ของ Microsoft ซึ่งจะต้องลงเป็น Browser plug-in เพื่อรัน Silverlight Application เช่นเดียวกับ Adobe Flash Player ที่ต้องลงเป็น Browser plug-in เพื่อรัน Flex Aplication แต่ด้วยความที่ Silverlight นั้นยังใหม่กว่า Flash Player อยู่มาก จึงทำให้ยังไม่เป็น common plug-in เท่าไหร่ ซึ่งถือเป็นข้อเปรียบของ Adobe ในปัจจุบัน (แต่ในอนาคตก็ไม่แน่นะ)
       ใน Silverlight 1.0 นั้น Microsoft ได้เน้นที่ features ที่เหมือนกันกับ Flash โดยยังไม่ได้มีในส่วนของ user interface controls เพื่อใช้สำหรับการทำ RIAs หลังจากนั้นในปี 2008 Silverlight 2.0 ก็ออกมาเพื่อแข่งขันกับ Flex โดยตรง ซึ่งได้มี features ในส่วนของ UI controls เช่น DataGrid, CheckBox, และ Slider โดยการแข่งขันระหว่าง Flex กับ Silverlight นั้นยังพึ่งเริ่มต้นเท่านั้น คงต้องรอดูกันต่อไป : )

อ้างอิง : Adobe Flex 3.0 for Dummies

Flex vs Flash

       Flex เป็น Flash based technology แต่ไม่ได้หมายความว่า Flex คือ Flash โดย Flex นั้น เป็น Application development Framework และ toolset ที่ช่วยให้คุณสามารถสร้าง RIAs ได้โดยจะต้องใช้ Flash Player สำหรับแสดงผลบน Internet
Features สำคัญๆ ที่มีใน Flex แต่ไม่มีใน Flash มีดังนี้
        - The Flex Framework: Flash จะมี component บางอย่างที่ทำงานแบบเดียวกับ Flex (Flex SDK) แต่ Flash จะไม่มี Charting Components, Layout containners รวมทั้ง fratures อื่นๆ ที่เหมาะสำหรับการสร้าง Application ใหญ่
        - MXML: เราสามารถใช้ MXML ในการสร้าง Flex Application ได้ แต่ Flash ไม่มี อย่างไรก็ตามก็ยังมีความสามารถของ ActionScripts 3.0 ที่สามารถใช้ได้ทั้ง Flash และ Flex อยู่ดี
        - IDE: Flex Builder สามารถใช้สำหรับการสร้าง RIAs ซึ่งจะมีความสามารถในการสร้าง code-hinting, debugger และ profiler
       สรุปแล้ว เราควรเลือกเครื่องมือให้เหมาะสมกับงาน หากเราต้องการสร้าง animated movies หรือ games เราก็ควรจะใช้ Flash เพราะ Flex ไม่ได้ทำงานแบบ Timeline และไม่มี Drawing Tools หรือ Animation Tools แต่หากเราต้องการสร้าง Desktop Application, Graph, Chart เราก็ควรใช้ Flex


อ้างอิง : Adobe Flex 3.0 for Dummies

19 มิถุนายน 2552

DB2 Trigger

      ตอนนี้ มา Tuneup ระบบให้กับ โปรแกรมของชาวบ้านเค้าครับ ซึ่งระบบนี้ใช้ database DB2 ทดลองจับเวลาในขั้นตอนของการ save ข้อมูลลง database ดู ปรากฏว่า ใช้เวลาประมาณ 3 นาที ทั้งๆ ที่ข้อมูลมีแค่ประมาณ 2000 record, field ก็ไม่ได้เยอะมาก แถม save ลง table เดียวอีกต่างหาก
      ลองไปลองมา ก็ไปพบว่า table นี้มีการใช้ triggerr เยอะมาก ก็เลยลองเปลี่ยนให้ trigger ไปเรียก store procedure แทน ผลปรากฏว่า เร็วขึ้น 70 - 80% เลยที่เดียว
      ที่เป็นแบบนี้ เพราะว่า การทำงานของ เจ้า trigger นี้ จะ compile ใหม่ทุกครั้ง ทำให้ มี overhead ในการทำงานสูงครับ ยิ่ง trigger มี step การทำงานเยอะ ยิ่งใช้เวลานาน

11 มิถุนายน 2552

DB2 Throws Exception in Store Procedure

DB2 ไม่มีวิธี try catch หรือ throw exception ตรงๆ นะครับ วิธีการที่สามารถทำได้คือ การใช้ SIGNAL

CREATE PROCEDURE SP_THROW_MESSAGE(pInput smallint)
begin
if(pInput = 1) then
insert into tablename values('x');
else
--throw exception
SIGNAL SQLSTATE '99999' SET MESSAGE_TEXT = 'test throw exception';
end if;
end


call SP_THROW_MESSAGE(2)


หรือ ถ้าต้องการให้ throw exception หากเกิด exception จริงๆ ก็ เขียนแบบนี้ครับ

CREATE PROCEDURE SP_THROW_MESSAGE(pInput smallint)
begin

declare exit handler for sqlexception
p1:begin
SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT = 'TEST';
end p1;

insert into tablename values('x');

end

call SP_THROW_MESSAGE()


โดย store นี้จะเข้าทำงาน ที่ คำสั่ง insert แต่หากมี exception เกิดขึ้นก็จะเข้าไปทำที่ signal ซึ่งถ้า program ที่เขียนมีการ try catch เอาไว้ก็จะได้ sqlException ออกมา

30 เมษายน 2552

Asterisk SIP trunk with 2 server

การทำ Trunk โดยใช้ sip จะพบปัญหาในการ config แบบ 2 ทาง ซึ่งแนวทางการแก้ไขจะต้องทำการกำหนด

Server1
[trunk1]
type=peer
host=10.1.1.2
username=102
secret=102
fromuser=102

Server2
[trunk2]
type=peer
host=10.1.1.1
username=101
secret=101
fromuser=101



และ config extensions ใน extensions.conf ดังนี้
Server1
exten=>_9.,1,Dial(SIP/${EXTEN:3}@trunk1,30,r)

Server2
exten=>_9.,1,Dial(SIP/${EXTEN:3}@trunk2,30,r)