Posts Tagged ‘Programming’

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

Java Performance Tuning

View SlideShare presentation or Upload your own.

Related posts

Tags: , ,

ติดตั้ง 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: , , , ,

เริ่มต้นเขียนโปรแกรมด้วย C++

การเขียนโปรแกรมด้วยภาษา C++ นั้นไม่ได้ยากอย่างที่คิด ก็เหมือนกันกับเรียนเขียนโปรแกรมทั่ว ๆ ไป ลองอ่านพร้อม ๆ กับลงมือทำ (อย่าอ่านเฉย ๆ ) ว่าแล้วก็เริ่มต้นเลยดีกว่า โดยวันนี้ผมจะมาพูดถึงเบสิคขั้นพื้นฐานดังนี้

  • โครงสร้างของโปรแกรม
  • ตัวแปร ชนิดของข้อมูล และค่าคงที่

โครงสร้างของโปรแกรม

วิธีที่ง่ายที่สุดของการศึกษาการเขียนโปรแกรมก็คือ เรียนรู้จากตัวอย่าง เราลองมาดูตัวอย่างโครงสร้างโปรแกรมที่เขียนด้วย C++ ด้วย โปรแกรมยอดฮิต ที่ใคร ๆ ต้องรู้จัก ซึ่งก็คือการพิมพ์ “Hello World” ออกทางหน้าจอ

ตัวอย่างโปรแกรม

###  ตัวอย่างโปรแกรม ###

// my first program in C++
#include <iostream>
using namespace std;

int main ()
{
cout << “Hello World!”;
return 0;
}

###  สิ้นสุดตัวอย่างโปรแกรม ###

คำอธิบาย

  • // my first program in C++
    - แสดงตัวอย่างการ comment โดยการ comment ใน c++ แบบบรรทัดเดียวกัน จะใช้ ‘//’ เพื่อบอกโปรแกรมว่าตัวอักษรที่อยู่หลังจากตัวนี้จะถูก comment
    หมายเหตุ
    การ comment ของ c++ มีได้สองแบบ
    1) line comment คือการ comment แบบบรรทัดเดียว โดยเริ่มการ comment ได้ด้วย ‘//’ ที่จุดเริ่มต้นของการ comment
    2) block comment คือการ comment แบบหลายบรรทัด โดย ‘/*’ แสดงการเริ่มต้นของ comment และ ‘*/’ แสดงการสิ้นสุดของการ comment
  • #include <iostream>
    - บรรทัดนี้เป็นการ import library พื้นฐานที่ชื่อ iostream เพื่อที่เราจะสามารถเรียกใช้ฟังก์ชั่นเกี่ยวกับ input/output ได้ (cout) ซึ่งจะยกตัวอย่างต่อไป
  • using namespace std;
    - เป็นการประกาศ namespace ที่ชื่อ std เพื่อระบุขอบเขตการใช้งานของตัวแปร
  • int main () {}
    - function ที่เป็นจุดเริ่มต้นของโปรแกรม c++ (เวลารันโปรแกรม ต้องมาเริ่มที่นี่ที่แรก) และฟังก์ชั่นนี้จะ return ค่าเป็น integer
  • cout << “Hello World”;
    - แสดงการเขียนโปรแกรมเพื่อพิมพ์ “Hello World!” ออกทางหน้าจอ โดย format ที่ใช้ คือ ชื่อฟังก์ชั่น (cout) ตามด้วย argument “Hello World!” และจบด้วย semicolon “;” เพื่อบอกการสิ้นสุดของบรรทัดนี้
  • return 0;
    - เพื่อบอกโปรแกรม c++ ให้จบการทำงานของฟังก์ชั่น main โดยค่า 0 หมายถึง โปรแกรมสามารถจบการทำงาน และทำงานได้อย่างถูกต้อง

Related posts

Tags: , ,

แก้ไขหน้าเพจเพื่อนอย่างง่าย

แวะไปเยี่ยมเวบ 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: , , ,

มารู้จักกับ 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: , , ,

มารู้จักกับ 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: , , ,


Page 1 of 11