Posts Tagged ‘java’
Java Performance Tuning
เมื่อเดือนที่แล้วมีโอกาสได้บรรยายเรื่อง “Java Performance Tuning” เลยเอาสไลด์มาแปะไว้ เผื่อใครมีเขียนโปรแกรมด้วยภาษา Java แล้วสนใจอยากเพิ่มประสิทธิภาพการทำงานของโปรแกรมมากขึ้น ก็สามารถศึกษาผ่านสไลด์นี้ได้ด้วยตัวเองได้ไม่ยาก โดยเนื้อหาจะแบ่งออกเป็น 3 ส่วนดังนี้
Introduction
- Why java slow?
- Tuning Strategy
- Start to tune
Profiling Tool
- Timing
- Garbage Collection
- Method Call
- All in one tool
Good code pratice
- Object creation
- String
- Exception, Asserttion, Cases, Variable
- Loops, Switch and Recursion
- I/O, Logging, and Console Output
- Appropiate Collection
Related posts
Tags: java, Programming, thai
เขียน UI อย่างง่ายๆ ด้วย XUL
XUL คืออะไร
XUL อ่านว่า ซูล เป็น User Interface Language ที่พัฒนาโดย Mozilla หรือการพูดให้ง่ายๆ ก็คือ XUL เป็นเครื่องมือในการสร้าง UI ด้วยการใช้ XML นั่นเอง
ถ้าหากใครได้เคยลองเขียนโปรแกรมแล้วมีการสร้าง UI ด้วยละก็ จะพบว่าไม่ง่ายนักที่เราจะเขียน UI ขึ้นมาใช้ในโปรแกรมหนึ่งๆ การวางโครงสร้างของ UI มักจะซับซ้อน และยุ่งยากมากขึ้น เมื่อโปรแกรมมีคุณสมบัติเพิ่มขึ้น
ตัวอย่าง UI ที่เขียนด้วยภาษา Java
ยกตัวอย่างในภาษา Java หาเราจะสร้าง UI เล็กๆ ที่ใช้แทนเครื่องคิดเลขดังรูปข้างล่างนี้
![]()
เราจะต้องเขียน Code,
TextField n1 = new TextField();
TextField n2 = new TextField();
Lable plus = new Lable("+");
Button eq = new Button("=");
TextField result = new TextField();
//สร้าง Panel เพื่อรองรับ Component ทั้งหมด
Panel p = new Panel();
p.add(n1);
p.add(plus);
p.add(n2);
p.add(eq);
p.add(result);
จะเห็นว่ามีขั้นตอนต่างๆ มากมายในการสร้าง UI ขึ้นมาตัวหนึ่ง และถ้ามีความจำเป็นต้องแก้ไข เพิ่ม หรือลบ Component บางตัวออกจาก UI ก็ทำได้ยาก โดยเฉพาะโปรแกรมขนาดใหญ่ที่มี UI หลากหลายแบบ
สร้าง UI ด้วย Thinlet (XUL for java)
Thinlet คือ Library ของภาษา Java ที่ใช้มารตฐาน XUL จากตัวอย่างข้างต้นเราสามารถแปลง โค้ดของ Java ให้อยู่ในรูปแบบของ XUL ได้ดังนี้
![]()
< panel gap="4" top="4" left="4">
< textfield name="number1" columns="4" />
< label text="+" />
< textfield name="number2" columns="4" />
< button text="=" action="calculate(number1.text, number2.text, result)" />
< textfield name="result" editable="false" />
จะเห็นได้ว่าเมื่อเรานำ XML มากำหนดโครงสร้างของ UI ด้วย Library ของ Thinlet โค้ดเราก็สามารถอ่านได้ง่ายขึ้นด้วยมุมมองของ XML
หากใครสนใจเกี่ยวกับการใช้งาน Thinlet สามารถศึกษาเพิ่มเติมได้ที่
http://thinlet.sourceforge.net/home.html

ในเว็บไซต์จะมีการใช้งานอย่างละเอียดของแต่ละ component ต่างๆ และตัวอย่าง Application อื่นที่นำ Thinlet ไปใช้งานร่วมด้วย
Related posts
Tags: java, programing, thai, xul
แก้ปัญหา Android plugin บน Ubuntu Gutsy
ลองลง Android plugin บน Eclipse จะทดสอบรันโปรแกรม Sample ที่กับชุดพัฒนา Android พบว่าไม่สามาถทำงานได้ นั่งหาทางแก้ไขอยู่สักพัก พบว่าเจ้าตัว Android plugin ไม่สามารถทำงานบน Eclipse รันบน GCJ JVM ได้ ถ้าใครเจอปัญหาเดียวกันนี้ก็ให้ลองตรวจสอบ Default VM ของ Eclipse ได้โดยเปิดโปรแกรม Eclipse แล้วเลือก Help -> About Eclipse SDK -> Configuration details จะพบข้อมูลดังนี้
[...]
-vm
/usr/lib/jvm/java-gcj
[…]
จะเห็นว่า Default VM ของ Eclipse เป็น GCJ JVM ซึ่งเป็นเหตุผลที่ทำให้เจ้าตัว Android Plugin ทำงานได้ไม่เต็ม 100% วิธีแก้ไขก็ให้เราไปเปลี่ยนลำดับ JVM ที่เป็นของ Sun ให้อยู่บนสุดในไฟล์ /etc/eclipse/java_home ดังนี้
# This file determines the search order the Eclipse Platform uses to find a
# compatible JAVA_HOME. This setting may be overridden on a per-user basis by
# altering the JAVA_HOME setting in ~/.eclipse/eclipserc.
/usr/lib/jvm/java-6-sun
/usr/lib/jvm/java-gcj
หลังจากแก้ไขแล้วให้ลองตรวนสอบที่หน้า Help ของ Eclipse อีกที Default VM จะต้องเปลี่ยนไปตามค่า Configuration ที่ได้แก้ไปสักครู่ แล้วก็ลองไปทดสอบรันโปรแกรมตัวอย่างของ Android อีกครั้งพบว่าตอนนี้โปรแกรมสามารถทำงานได้แล้ว
Related posts
Tags: android, java, programing, thai, ubuntu
ติดตั้ง Sun Java 6 บน Ubuntu Gutsy
ปกติแล้ว Ubuntu Gutsy จะมี Java SDK ที่เป็นเวอร์ชั่นของ GNU ซึ่งถ้าลองตรวจสอบเวอร์ชั่นของ Java แล้วจะได้ผลลัพธ์ดังนี้
atthakorn@chaos:~$ java -version
java version "1.5.0" gij (GNU libgcj) version 4.2.1 (Ubuntu 4.2.1-5ubuntu5)
Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
แต่ถ้าเราต้องการเปลี่ยนมาใช้ SDK ของ Sun สามารถทำได้โดยสั่ง install sun-java6-jdk ผ่าน terminal ดังนี้
atthakorn@chaos:~$ sudo aptitude install sun-java6-jdk
แล้ว ก็ให้ตอบตกลงไปเรื่อย ๆ จนกระทั่งการ download และ install เสร็จ default jvm ตอนนี้ยังคงเป็นของ gcj อยู่ ให้ใช้คำสั่งเพื่อดูชื่อ jvm ทั้งหมดในเครื่องเราเป็นอันดับแรก
atthakorn@chaos:~$ sudo update-java-alternatives -l
java-6-sun 63 /usr/lib/jvm/java-6-sun
java-gcj 1042 /usr/lib/jvm/java-gcj
จากนั่นให้ทำการอัพเดท java-6-sun เป็น default jvm โดยใช้คำสั่ง
atthakorn@chaos:~$ sudo update-java-alternatives -s java-6-sun
และทำการเพิ่มบรรทัดของ /usr/lib/jvm/java-6-sun ไว้บนสุดในไฟล์ /etc/jvm ดังนี้
atthakorn@chaos:~$ cat /etc/jvm
# This file defines the default system JVM search order. Each
# JVM should list their JAVA_HOME compatible directory in this file.
# The default system JVM is the first one available from top to
# bottom.
/usr/lib/jvm/java-6-sun
/usr/lib/jvm/java-gcj
/usr/lib/jvm/ia32-java-1.5.0-sun
/usr/lib/jvm/java-1.5.0-sun
/usr
ลองตรวจสอบ version java อีกครั้ง จะพบว่าตอนนี้ default jvm ในเครื่องเราเป็น java 6 เรียบร้อยแล้ว
atthakorn@chaos:~$ java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Server VM (build 1.6.0_03-b05, mixed mode)
Related posts
Tags: java, Programming, Software, thai, ubuntu
Application เทียบเคียง Windows บน Ubuntu
ในทีแรกลง Ubuntu แล้วไม่รู้จะใช้โปรแกรมอะไรบ้าง นั่งนึกดูว่าเคยใช้โปรแกรมอะไรใน Windows ก็เลยนั่งค้นใน Google ได้ List โปรแกรมเทียบเคียง Window บน Linux มามากมาย บางโปรแกรมซึ่งเห็นแล้วจะต้องทึ่ง ไม่นึกว่า opensource จะมีโปรแกรมดี ๆ ที่น่าใช้มากมาย
Ubuntu (Gnome) application list
Web browser - Firefox, SwiftFox, IE4Linux
Instant messenger - Pidgin + plugins
Bittorrent - Deluge
FTP client - FileZilla
Text editor - GEdit + plugins
Music player - Amarok
Adv image editor - Gimp + UFRaw (Photoshop)
Vector graphics - Inkscape (Illustrator)
3D graphics - Blender
Video player - VLC media players
CD burning - GnomeBaker
Simple video editor - Avidemux
Adv video Editor - CinePaint
DVD ripping - DVDrip
Sound editor - Jokosher
Email - Evolution
Antivirus - ClamAV
Java IDE - Eclipse
MS.Net Framework - Mono
Planetarium - Stellarium
Flight simulator - FlightGear
2D/3D CAD - QCAD
3d game devkit - Crystal Space, Ogre3d
Web development - KompoZer (Dreamweaver)
PDF viewer - Evince
Diagram builder - Dia, Dia-gnome (MS Visio)
C++ IDE - Code Blocks, Anjuta
HTML editor - Bluefish
File compression - P7zip
Database server - MySql, PostgreSQL
Webserver - Apache
Computing App - SciLab
ISO mounter - GMountISO
Windows Environment - Wine
Chm Viewer - XCHM
CHM to Html - Libchm-bin
CHM to PDF - HtmlDoc
Related posts
Tags: c++, firefox, Game, google, java, Linux, Photo, Software, thai, ubuntu
Google Analytic
และแล้วก็ลุล่วงไปหนึ่งเดือนสำหรับการเปิดตัวของwww.atthakorn.comซึ่งก็ได้มีเพื่อน ๆ มากมายมาเยี่ยมเยียน ตลอดจนถึงบัดนี้
ว่าแล้วก็มาแนะนำ Service ของ Google ที่ชื่อว่า Google Analytic ดีกว่า (แอบเก็บสถิติการเยี่ยมชมเวบไซต์) ซึ่งเป็นเครื่องมือในการวัดผล และเก็บสถิติการเยี่ยมชมเวบไซต์ การสมัครเพื่อใช้งานก็ง่ายมาก เพียงแค่มี Gmail Account เราก็สามารถลงทะเบียนเพื่อขอรับบริการของ Google-Analytic ได้เลย
เมื่อเราได้สมัครแล้ว เราจะได้ javascript พร้อม id มาชุดหนึ่ง ให้เรานำมาแปะไว้ที่ Footer ของเวบไซต์เรา จากนั้นรอ 1-2 วันทำการ Google Analatic ก็จะเริ่มแสดงข้อมูลกราฟการเยี่ยมชมให้เราเห็น โดยทั่วไปแล้ว การอัพเดทข้อมูลของ Google Analytic จะทำการอัพเดทตอนประมาณบ่ายสองโมงของทุกวัน (Delay 1 วัน)
กราฟแสดงการเข้าชมเวบไซต์ตลอดหนึ่งเดือนที่ผ่านมา
มีตัวเลขผู้เข้าชมทั้งหมดในรอบเดือน และข้อมูลอื่น ๆ
แผนภูมิวงกลมแสดงที่มาของ Reference website
- Direct Traffic - หมายถึงเข้าถึงเวบไซต์นี้โดยตรง เช่น www.atthakorn.com
- Search Engines - หมายถึงได้มีผู้ใช้ Search Engine เช่น Google เพื่อเชื่อมโยงก่อนมาถึงเวบไซต์ที่วัดสถิติ
- Referring Site - ถ้ามีคนทำลิงค์มาถึงเวบไซต์เรา แล้วมีนักท่องเวบคลิ๊กที่ลิงค์นั้น เพื่อมาสู่ไซต์เรา ข้อมูลก็จะถูกจัดอยู่ในหมวดนี้
เพื่อน ๆ ที่สนใจ และมีเวบไซต์เป็นของตนเอง ลองไปสมัครใช้บริการได้ที่ http://www.google.com/analytics/ แล้ววันหลังถ้ามี Tool ที่น่าสนใจอีกจะเอามาแนะนำอีกนะครับ
Related posts
Tags: blog, google, java, Software, thai, website
แก้ไขหน้าเพจเพื่อนอย่างง่าย
แวะไปเยี่ยมเวบ www.iannnnn.com หลังจากไปไม่ได้เข้าไปดูประมาณ 2-3 ปี หน้าตาเวบไซต์เปลี่ยนไปเยอะเลย แบ่งเป็นหมวดหมู่มากขึ้น แต่ก็ยังคงเอกลักษณ์สมกับเป็น iannnnn เช่นเคย
เปิด article อ่านไปเรื่อย ๆ ไปเจอโค้ด javascript แปลก ๆ เลย copy มาให้เล่นกัน
javascript:document.body.contentEditable=’true’; document.designMode=’on’; void 0
เพื่อน ๆ ลอง copy โค้ดตัวนี้ทั้งบรรทัดไปแปะที่ URL ข้างบน จากนั้นก็กด Enter แล้วลองสังเกตดูว่ามีอะไรเกิดขึ้นบ้างง .. ?????
1 วินาที
2 วินาที
…
5 วินาที
แต่นแต๊นน พบสิ่งผิดปกติหรือยังเอ่ย ถ้ายังไม่พบ ก็ลองเอา cursor มาวางตรงหน้าเวบเพจนี้ที่ใดก็ได้ เพื่อน ๆ จะพบว่า เราสามารถแก้ไขข้อมูลได้ทั้งหน้าา ทั้งย้ายรูปภาพ แก้ไขข้อความ อื่น ๆ อีกจิปาถะ
“ว้าว แบบนี้ก็ดีสิ แบบนี้ก็เอาโค้ดนี้ไปแกล้งเวบไซต์คนอื่นก็ได้นี่นา แก้ให้เจ๊งกันไปเลยย” (คิดในใจ ) 
แต่อย่าเพิ่งตื่นเต้นไปครับ … ที่จริงหน้าที่ของ javascript บรรทัดนี้ ก็เพียงแต่ enable ความสามารถในการแก้ไขเนื้อหาในเวบเพจหน้าที่โหลดมาในปัจจุบันได้เท่านั้น ไม่สามารถไปแก้ไขข้อมูลจริง ๆ ได้ เป็นแค่โค้ดที่มีไว้เล่นสนุก ๆ ยามว่างเท่านั้นนน
ปล. ไว้คราวหน้าถ้าเจอโค้ดอะไรแปลก ๆ แบบนี้อีก จะเอามานำเสนอให้เพื่อน ๆ นะคับ
ปล. เอ้ออ เกือบลืมขอบคุณ www.iannnnn.com ที่นำมามาบอกเล่าและ www.digg.com ที่แจกจ่ายโค้ดนี้เพื่อความบันเทิงของเราคับ
Related posts
Tags: internet, java, Programming, thai
มารู้จักกับ Ant กันเถอะ (ตอนจบ)
หลังจากเราเริ่มรู้จัก Ant กันคร่าว ๆ แล้ว มาวันนี้ผมก็จะนำเสนอการติดตั้ง Ant เพื่อการใช้งาน โดยสิ่งที่จำเป็น สำหรับการติดตั้งมีดังนี้
1. Java SDK ->> ดาวโหลดได้ที่ http://java.sun.com
2. Ant ->> ดาวโหลดได้ที่ http://ant.apache.com
การติดตั้ง
เริ่มต้นโดย Install Java SDK (โดย dir ของ Java ของผมจะเป็น C:\Program Files\Java\jdk1.6.0) และ แตกไฟล์ zip ของ ant โดยให้ไปไว้ที่ใดก็ได้ใน local drive ในที่นี้ผมจะไว้ที่ c:\ant แล้วก็ทำการเซ็ต classpath และ path ให้กับ Java และ Ant ดังตัวอย่างต่อไปนี้
ซึ่งการเซ็ต path นี้ เราจะสามารถเรียกใช้คำสั่ง ant.bat ที่ไดก็ได้ใน directory ปัจจุบัน
Related posts
Tags: ds, java, Programming, thai
มารู้จักกับ Ant กันเถอะ (ตอนแรก)
แรก เริ่มเดิมทีผมก็ยังไม่รู้จักมักคุ้นกับ Ant มากเท่าไหร่ ว่ามันคืออะไร และใช้ทำอะไร ได้ยินมาบ้างจากพี่ที่บริษัทว่ามันคือ script ที่ใช้ในการพัฒนา Automate Build Tool
โอ้โฮแฮะ !!! มีคำว่า Build กับ Automate อยู่รวมกัน และก็โดยบังเอิญอีกนั่นล่ะ งานที่ผมต้องรับผิดชอบทำสัปดาห์ละหลาย ๆ ครั้ง ครั้งละเกือบชั่วโมงเต็ม มันมีคำว่า “Build” อยู่ด้วย ต่อมความสงสัยของผมก็ถูกกระตุกด้วย มด (Ant) ตัวนี้ ทำให้แสบ ๆ คัน ๆ มือ อยากจะลองศึกษาว่ามันคืออะไรกันแน่ เผื่อจะเอามาประยุกต์ในงานประจำของเราได้ด้วย คำว่า “Automate” มันอาจจะทำให้สิ่งที่ผมต้องทำนี้ ง่ายขึ้น เร็วขึ้น เผลอ ๆ อาจจะสั่งให้มันทำงานให้ผมทั้งหมดโดยที่ผมไม่ต้องทำเลยก็ได้ (ฮ่า ๆ ความขี้เกียจเริ่มบังเกิด)
ก็เลยไปค้นคว้าในอาจารย์คนเก่ง Google จนไปพบลิงค์ที่น่าสนใจเกี่ยวกับ Ant ที่ http://www.apache.org ซึ่งที่นี่เป็นแหล่งรวม Opensource project มากมายให้ศึกษา และนำไปประยุกต์ใช้งาน ที่ดัง ๆ ก็จะมี apache server และ Tomcat ซึ่งเป็น Java-base server เข้าไปที่ลิงค์ ant ->> http://ant.apache.org จากนั้นก็เริ่มศึกษาจนได้รู้ว่าอะไรคือ Ant และมันทำงานอย่างไร ดังนี้
Ant หรือมีชื่อเต็ม ๆ ว่า Apache Ant คือ Java-based build tool โดยเรามีหน้าที่ในการพัฒนา script สำหรับสั่งให้ Ant ทำงานแทนเราได้ทุกอย่างเกี่ยวกับกระบวนการ Build Package (ขอยืนยันว่าทุกอย่างจริง ๆ)
![]() |
หลายคนอาจจะ สงสัยว่ากระบวนการ Build package นั้นคืออะไร และมีขั้นตอนอะไรบ้างง ผมก็จะอธิบายคร่าว ๆ ตามประสบการณ์ของผม (อาจจะเป็นแค่ส่วนหนึ่งของกระบวนการ Build Package และอาจจะแต่งต่างกันในส่วนย่อยของแต่ละกลุ่มของนักพัฒนา) ได้ดังนี้
การ Build Package คือ กระบวนการทั้งหมดที่เกี่ยวกับการ checkout โค้ดจาก repository แล้วนำมา compile จนได้ class ไฟล์ แล้วนำมารวมกันในรูปของ Jar Excutable file เพื่อเตรียมอัพโหลดไปที่ server (ทั้งโค้ดที่ทำการ Tag เวอร์ชั่น และ ตัว executable file ที่พร้อมให้ดาวโหลดไปใช้งาน) สรุปง่าย ๆ เป็นข้อหลัก ๆ ดังนี้
1. Checkout โค้ดจากเซิร์ฟเวอร์ (Repository)
2. Compile ไฟล์ .java ให้เป็น .class
3. อัดข้อมูลให้เป็น Jar file (Excutable file)
4. แช่แข็ง package ณ จุดบิ้วในเวอร์ชั่นนั่น ๆ (Version Tagging to server)
5. อัพโหลดตัว excutable package ขึ้น server
หากแต่จะมีขั้นตอนย่อย ๆ มากกว่านี้ …
โอ้โฮ อีกที … ขึ้นตอนที่กล่าวข้างตอน กินเวลาร่วม ชั่วโมง หรือมากกว่านั้น แต่ผมกำลังจะสามารถทำได้ด้วยการดับเบิ้ลคลิ๊กเมาส์เพียงครั้งเดียวโดยใช้ Ant อย่างนี้ไม่ลองไม่ได้ซะแล้วววว แต่วันนี้ขอพักแค่นี้ก่อน เดี๋ยวมาต่อกันภาค 2 ว่าเราจะติดตั้ง Ant ลงในเครื่องเราอย่างไร และเราจะใช้งาน Ant ได้อย่างไร …
Related posts
Tags: google, java, Programming, thai
