การประกาศเปิดตัว Version 1.5 รุ่นที่ 1 ออกมาใน Google Web Toolkit (GWT) ตอนนี้พร้อมแล้ว โดยการที่ออกความสามารถใหม่ๆที่รองรับ Java 5 Annotations และ Template แทนที่ GWT เมื่อก่อน แล้วยังได้รวม Theme และ Widget อีกมากมาย และก็แก้ไข Bug ต่างๆ
สำหรับคนที่ยังไม่รู้จัก GWT โดยมันคือการเขียน Java Code ปกติและเปลี่ยนส่วนหนึ่งให้เป็น JavaScript โดยเรียนรู้ได้อย่างง่ายสำหรับการทำ Rich Internet Application รวมทั้งยังรวม RPC (Remote Procedure Call) Libary เข้าไว้ด้วย (รวมถึง Ajax) , Widget Library และเปลี่ยนเป็น Java 5 Syntax คือสิ่งที่เปลี่ยนแปลงครั้งใหญ่ของ GWT
Friday, 30 May 2008
GWT 1.5 ออกแล้ว !! (Release Candidate 1)
Monday, 26 May 2008
Groovy CRUD # 1
การเขียน groovy ให้ติดต่อกับฐานข้อมูล นั้นแท้จริงแล้ว groovySQL ไปใช้ JDBC API ในการเชื่อมต่อ database อีกทีดังนี้
Groovy / Java Application <--> Groovy SQL <--> JDBC API <--> JDBC DriverManager / DataSource <--> Database Server
ข้อมูลที่จำเป็นต้องรู้ก่อนการใช้งาน database
- database URL
- jdbc:hsqldb:hsql://server/dbname ใช้เชื่อมต่อกับ HSQLDB server รองรับการ client หรือ process ที่มากกว่า 1
- jdbc:hsqldb:file:/dir/dbname ใช้เชื่อมต่อกับ single-client โดย HSQLDB จะใช file เป็นตัวเก็บข้อมูล
- jdbc:hsqldb:mem:dbname ใช้เชื่อมต่อกับ database ที่ถูกสร้างและเก็บอยู่ใน memory ซึ่งจะ nonpersistent เหมาะกับการเขียน application เล็กๆ เอาทดลองทำงาน
- username / password ใช้ username: sa (sysadmin) และ password empty (ไม่มี)
- driver class name : org.hsqldb.jdbcDriver
import groovy.sql.Sql
db = Sql.newInstance('jdbc:hsqldb:mem:GinA', 'sa', '', 'org.hsqldb.jdbcDriver');
DriverManager VS DataSource
ถ้าดูตอนการทำงานเชื่อมต่อกับ database จะเห็นว่ามี 2 concept คือ DriverManager และ Data Source ถ้าเราใช้ Sql.newInstance method จะเป็นการใช้ DriverManager แต่ถึงแม้เราจะมี DriverManager แล้ว แต่เพื่อการจัดการประสิทธิภาพที่ดีกว่าเราควรใช้ DataSource เพราะมันมีการจัดการการเชื่อมต่อกับ database ที่ดีกว่าโดยใช้ connect pool (แหล่งเก็บ connection ที่ใช้เชื่อมต่อกับ database) และรองรับ distributed transaction และเรายังสามารถนำ connect นี้กลับมาใช้ใหม่ได้อีก (reuse) เพราะเมื่อแต่ละ transaction ทำงานเสร็จก็จะมีการคืน connect กลับมาที่ pool แต่ถ้าเราลืมคืน connection ตัว Groovy จะเป็นคืน transaction ให้เอง
DataSource จึงกลายมาเป็นส่วนสำคัญเมื่อต้องการจัดการกับทรัพยากรที่มีอยู่อย่างจำกัดให้เกิดประโยชน์สูงสุด เช่นใน application server ก็มีการจัดการทรัพยากรใน application ของตัวเองที่เป็น connection pool
ใน Groovy เราสามารถใช้ datasource ได้ โดยขึ้นอยู่กับ database vendor แต่ละเจ้าซึ่งจะ implement ไว้ที่ javax.sql.DataSource แต่ HSQL มีเตรียมไว้ที่ org.hsqldb.jdbc.jdbcDataSource ตัวอย่างการเชื่อมต่อฐานข้อมูลด้วย DataSource
import groovy.sql.Sql
source = new org.hsqldb.jdbc.jdbcDataSource()
source.database = 'jdbc:hsqldb:mem:GinA'
source.user = 'sa'
source.password = ''
db2 = new Sql(source)
Note: ถ้าเราใช้ application server เราสามารถเอา DataSource มาได้โดยใช้ JNDI ซึ่งข้อดีของการใช้วิธีนี้ คือการจัดการเชื่อมต่อกับฐานข้อมูลนั้นไม่ขึ้นอยู่กับ application ของเรา ใน application ของเราไม่ต้องระบุ database driver หรือ DataSource classs ซึ่งมันช่วยให้เราสามารถ migrate จากฐานข้อมูลหนึ่งไปอีกฐานข้อมูลหนึ่งโดยไม่ส่งผลกระทบถึง application
Note: การให้ได้มาซึ่ง connection ถ้าใช้ Datasource จะใช้วิธีส่ง DataSource เข้าไปใน Sql constructor แต่ถ้าใช้ DriverManager จะส่งค่าต่างๆ เข้าไปทาง Sql.newInstance
ไม่ว่าเราจะใช้ DataSource หรือ DriverManger สุดท้ายก็จะได้มาซึ่ง reference ของ Sql instance
สุดท้ายถ้าเราต้องการ clone Sql instance ขึ้นมาอีกอันสามารถใช้ new Sql(db) ได้ ตอนนี้เรามี sql instance ที่พร้อมจะ connect กับฐานข้อมูลแล้ว และเราต้องการ execute บาง sql statement
Executing SQL
ใช้คำสั่งง่ายๆ db.execute(statement) ในการติดต่อฐานข้อมูลโดยส่ง statement sql เข้าไป
สร้างฐานข้อมูลนักกีฬาจะประกอบด้วย ชื่อ, นามสกุล, วันเกิด และ primary key จากนั้นใส่ index ให้ตารางที่สร้างขึ้น (ฐานข้อมูลส่วนใหญ่รวมทั้ง HSQLDB จะมีการสร้าง index ให้อยู่แล้วโดยอัตโนมัติโดยจะเป็น primary แต่เราสามารถระบุ index ที่ต้องการจะสร้างเพื่อให้ชัดเจนยิ่งขึ้นได้เช่นกัน)
จุดประสงค์ของ application นี้คือทดสอบการส่งคำสั่ง sql จึงไม่ต้องมีการใช้ข้อมูลของเก่าก็ได้ (พยายามยึดหลัก agile ไว้) ดังนั้นจึงลบ table และ index ที่เราสร้างไว้ก่อนแล้วค่อยสร้างใหม่ (Reconstruct) ทุกครั้งที่มีการเรียก application นี้ (agile database programming)
db.execute '''
DROP INDEX athleteIdx IF EXISTS;
DROP TABLE Athlete IF EXISTS;
CREATE TABLE Athlete(
athleteId INTEGER GENERATED BY DEFAULT AS IDENTITY,
firstname VARCHAR(64),
lastname VARCHAR(64),
dateOfBirth DATE
);
CREATE INDEX athleteIdx ON Athlete (athleteId);
'''
เพิ่มข้อมูลลงในตาราง Athelete ด้วยข้อมูลนักวิ่งมาราธอน
db.execute '''
INSERT INTO Athlete (firstname, lastname, dateOfBirth)
VALUES ('Paul', 'Tergat', '1969-06-17');
INSERT INTO Athlete (firstname, lastname, dateOfBirth)
VALUES ('Khalid', 'Khannouchi', '1971-12-22');
INSERT INTO Athlete (firstname, lastname, dateOfBirth)
VALUES ('Ronaldo', 'da Costa', '1970-06-07');
'''
ถ้าใช้วิธีนี้ในการ insert ข้อมูลทั้งโปรแกรมมันยากที่จะอ่านและจัดการข้อมูลทั้งหมด เพราะคำสั่ง sql มันซ้ำกันอยู่เยอะ ดังนั้นเราจะเปลี่ยนใหม่โดยการใช้ prepare statement เข้ามาช่วย prepare statement คือมีรุปแบบการเขียนคล้าย sql statement แต่จะแทนค่าที่รับเข้ามาทางโปรแกรมด้วยเครื่องหมาย question mark แต่สุดท้ายเครื่องหมาย question mark จะถูกแทนที่ด้วยค่าที่รับเข้ามาทางโปรแกรม การใช้วิธีเพิ่ม reuse ได้ ใน Java มี prepare statement โดยใช้ java.sql.PreparedStatement interface
String athleteInsert = '''
INSERT INTO Athlete (firstname, lastname, dateOfBirth)
VALUES (?, ?, ?);
'''
db.execute athleteInsert, ['Paul', 'Tergat', '1969-06-17']
db.execute athleteInsert, ['Khalid', 'Khannouchi', '1971-12-22']
db.execute athleteInsert, ['Ronaldo', 'da Costa', '1970-06-07']
เขียนใหม่ให้อยู่ในรูปแบบ closure โดยส่ง map เข้าไปเป็น argument
def athletes = [
[first: 'Paul', last: 'Tergat', birth: '1969-06-17'],
[first: 'Khalid', last: 'Khannouchi', birth: '1971-12-22'],
[first: 'Ronaldo', last: 'da Costa', birth: '1970-06-07'],
]
athletes.each { athlete ->
db.execute """
INSERT INTO Athlete (firstname, lastname, dateOfBirth)
VALUES (${athlete.first}, ${athlete.last}, ${athlete.birth});
"""
}
Reference : Groovy in Action
つづく
Tags: articles, author: tofu, database, groovy
Saturday, 24 May 2008
LibreSource 2.5 โปรแกรม Collaborative เปิดเป็น GPL แล้ว
LibreSource 2.5, ออกแล้ว และตอนนี้ได้เปลี่ยนเป็น GNU GPL V2 LibreSource เป็นโปรแกรมที่ช่วยการทำงานแบบ Collaborative (การทำงานที่มีการเปลี่ยนแปลงจากหลายคน) และถูกนำไปใช้งานในหลายพันชุมชน . LibreSource คือ Web Portal ที่คอยเก็บการสื่อสารที่จำเป็นต่างๆและอุปกรณ์การ Share สำหรับงาน Collaborative
โดยการแก้ปัญหานี้ถูกดัดแปลงมาจากการพัฒนา Software โดยเล็งไปที่ Project Collaborative และลดค่าใช้จ่ายต่างๆ โดยชุมชนแรกที่ได้ใช้ LibreSource คือชุมชนวิทยาศาสตร์ และ European Space Agency (ESA) คือคนแรกที่นำมันไปใช้ใน R&D project และปีที่ผ่านมายังถูกใช้ใน French Ministry of Ecology อีกด้วยโดยใน Version 2.5 นั้นได้นำ version control system อย่าง Subversion และสนับสนุน JOnAS และ JBoss
สามารถ download LibreSource 2.5 ได้เลยที่นี้ครับ
Tuesday, 20 May 2008
Spring Web Flow 2 ออกแล้วครับผม !!
Spring Module ตัวนี้ได้มุ่งความสนใจไปที่โครงสร้าง Web Application ตอนนี้ได้รวม Spring Web MVC , Spring Web Flow , Spring Javascript(JS) และ Spring Faces โดยแต่ละอันมีความสัมพันธ์กันยังไงจะอธิบายต่อไปดังนี้
Spring Web MVC
ช่วยในการพัฒนา Web Application ด้วย Paradigm ของ Model View Controller โดยแต่ละ Module ของ Web Flow จะถูกสร้างบนตัวนี้
Spring Web Flow
มันคือ Module ที่เสริมการทำงานของ Controller โดยการใช้ Domain Specific Language ได้ !! โดยภาษานี้ถูกออกแบบเป็นการโต้ตอบกับ User ด้วย Model นั้นต้องการหลายๆความต้องการ เพื่อที่จะได้งานที่สมบูรณ์และอาจจะถูกอ้างจากหลายที่ได้
Spring JavaScript
มันคือ client-side JavaScript Framework แบบ Abstract นั้นคือยอมให้คุณเสริมการกระทำต่างๆของ Web Page โดย Framework ถูกสร้างจาก Dojo Toolkit โดย Spring.js มีเป้าหมายสร้างความง่ายของการใช้งาน Dojo สำหรับงานทั่วๆไปในเรื่องราว Enterprise ในขณะที่ยังมีประสิทธิภาพสูงสำหรับกรณีการพัฒนาขั้นสูง แล้วยังทำงานได้ทั้ง 2 ฝั่งใน Web Flow 2 โดยรวม Spring.js เข้ากับ Spring Web MVC Controller สำหรับการเรียก Ajax Request
Spring Faces
Module ตัวนี้สนับสนุนการทำ Java Server Faces โดยการสนับสนุนครั้งนี้โดยใช้ JSF ในการ View ในสภาพแว้ดล้อมคล้ายๆกับ Spring MVC และ Web Flow Controller ด้วยการทำเช่นนี้ทำให้ผสมผสานข้อดีของแต่ละ Module โดยใช้ JSF UI Component Model กับข้อดีของ Web MVC Architecture โดย Spring Faces ได้รวม JSF Component Library ที่ถูกสร้างบน Sring Javascript สำหรับการเรียกใช้ Ajax และการตรวจสอบฟอร์มจากพฤติกรรมของ client-side ในการทำงานให้ถูกต้อง
ผลประโยชน์สำคัญจากการใช้ Web Flow 2
- พัฒนา Controller ที่สามารถนำมาใช้ใหม่ได้โดยไม่ต้อง Restart Container ใหม่
- แก้ปัญหา Back-button และการ submit ซ้ำโดยไม่ต้องเขียน code แก้
- ใช้ข้อมูลจาก flowScope และ viewScope เพื่อง่ายในการควบคุมเนื้อการจัดการในระหว่างเกิด transaction ใน application
- แก้ไข Manual JPA PersistenceContext
- เสริมความปลอดภัยตอน startup ของ flow การทำงานโดยใช้ Spring Security
- สร้างงานจากการประกาศ Model Binding และ Validation routine ด้วยการสนับสนุนการตรวจสอบแบบ inter-field
- สามารถควมคุมผ่าน URLs และการ bind ของ request parameters
- สร้างส่วนหนึ่งของการตอบสนอง ajax ด้วย JSP และ Tiles หรือ UI JSF
- ได้พลังอย่างเต็มที่จาก JSF UI Component Model รวมถึงสนับสนุน JSF Component Libraries
- ใช้ the Dojo Toolkit ในการสร้างแรงกระตุ้นสำหรับ User Interface
- เสริมความแกร่งด้วยการ cache และการบีดอัด CSS และ JS จาก jar bundle
Web Flow ต้องการ Java 1.4 หรือมากกว่าและ Spring Framework 2.5.4 หรือมากกว่า โดย run อยู่บน Java EE servers สำหรับใครที่ต้องการข้อมูลมากขึ้นหรือดาวโหลด ไปดูเพิ่มได้ที่ Web Flow 2 General Release Announcement
Monday, 19 May 2008
การบริหารจัดการโครงการเบื้องต้น
มาต่อจากบทความที่แล้วครับ มาอธิบายถึงการมองโครงการอย่างคร่าวๆ ยังไม่ลงลึกถึงรายละเอียดของขั้นตอนต่างๆ lecture note เหมือนเดิม
Project Management Definitions
- project (โครงการ) คือสิ่งที่เกิดขึ้นชั่วคราว มีกำหนดวันเริ่มต้นและวันสิ้นสุดที่แน่นอน (ad-hoc) แต่การ organization จะเกิดและไม่มีวันจบ โครงการจะต้องมี วัตถุประสงค์ (objective) ซึ่งต้องวัดได้ ถ้าวัดไม่ได้นั่นคือโครงการที่ผิดพลาด
- subproject เป็นโครงการย่อยๆ ที่อยู่ในโครงการหลักอีกที
- program คือหลายโครงการที่มีความสัมพันธ์ต่อกัน ที่ทำงานร่วมกัน เช่น ERP ที่มีหลายโครงการอยู่ภายใน และสัมพันธ์ซึ่งกันและกันอยู่
- project management (การบริหารโครงการ) คือการนำความรู้ เครื่องมือ เทคโนโลยีต่างๆ นำมาใช้เพื่อให้โครงการสำเร็จ ตามความต้องการ (requirement)
- Portfolio management เป็นการรวบรวมข้อมูลต่างๆ ของโครงการ เพื่อเก็บไว้ใช้ในโครงการถัดไป การเก็บข้อมูลต่างๆเอาไว้ยังมีประโยชน์ในกาทำมาตรฐาน CMMI ที่จะต้องมีข้อมูลจาก project เก่าๆ ที่เราเก็บข้อมูลไว้ เช่นจะสร้าง program แบบนี้ต้อใช้ module อะไรเทคนิคไหน ซึ่งถ้าเราใช้ module ที่เคยสร้างไว้แล้วยังช่วยให้ลดเวลาในการพัฒนา (development) และทดสอบ (Testing) หรือเราสามารถพัฒนาเทคนิคให้ดีขึ้นกว่าเดิมได้ เป็นเหมือนองค์ความรู้ขององค์กร
- Portfolio เป็นกลุ่มของโครงการหรือโปรแกรมและงานอื่นๆ ที่เกี่ยวข้องกับการบริหารโครงการ เพื่อสนับสนุนประสิทธิภาพการบริหารจัดการ ตามเป้าหมายของธุรกิจนั้นๆ
- Progressive Elaboration เป็นการพัฒนา software แบบวนซ้ำ (loop) ไปเรื่อยๆ เพื่อให้ software ที่ได้ประสิทธิ์ภาพ ความคืบหน้าและความถูกต้องดีขึ้น
- Project Management Office (PMO) เป็นการบอกว่าคนที่เกี่ยวข้องกับโครงการนั้นใครทำหน้าที่อะไรบ้างSponsor คือคนที่สนับสนุนด้านการต่างๆ เช่นการเงินให้กับโครงการของเรา ซึ่งก็คือลูกค้าเรานั้นเอง
- Stakeholder คือผู้มีส่วนได้ส่วนเสียต่อโครงการ ซึ่งที่มีผลต่อความสำเร็จหรือล้มเหลวของโครงการ
- Estimate คือประมาณก่อนจะเริ่มทำยิ่งมีโครงการที่เคยทำมากเท่าไหร่ (Portfolio management) ก็จะประมาณได้ว่าโครงการใหม่จะพัฒนาอย่างไร
ช่วงชีวิตของการบริหารโครงการ (project life cycle) กับการวรจรชิวิตการพัฒนาซอร์ฟแวร์ (software development life cycle) คือเรื่องเดียวกันแต่คนละมุมมอง!! project management เป็นเรื่องของการบริหารและควบคุมการพัฒนา software อีกที
การบริหารโครงการจำเป็นต้องสนใจว่ามี process อะไรบ้างและ process เหล่านั้นเกี่ยวข้องกันอย่างไร
Project Life Cycle Model
วงรอบชีวิตของโครงการ ซึ่งแบ่งออกได้ 4 ขั้นตอนแต่ละขั้นตอนจะมีกิจกรรม (Activity) , ทรัพยากร (Resource) {เงิน , คน, เวลา, สถานที่} มากน้อยแตกต่างกันดังรูป
Typical Activities by Phase
กิจกรรมที่ต้องทำในแต่ละขั้นตอนของโครงการ (คร่าวๆนะ)
Concept
- รวบรวมข้อมูลทุกอย่างที่เกี่ยวข้องกับโครงการ
- กำหนดความต้องการของโครงการนี้
- กำหนด:
- เป้าหมาย, วัตถุประสงค์ ซึ่งต้องวัดผลได้
- เงิน ดูว่ามีเงินพอไหมที่จะทำโครงการนี้
- คนที่เกี่ยวข้องกับโครงการนี้ เช่น programmer, user, project manager
- ความเสี่ยงของโครงการ ซึ่งต้องบอกได้ว่าอยู่ในระดับไหนและอย่างไร ต้องมีการวางแผนสำรองแต่ต้องคุ้มด้วย เพราะว่าแผนสำรองที่เตรียมนั้นมีค่าใช้จ่ายที่ต้องใช้อยู่เช่นกัน การวัดว่าแผนสำรองนั้นคุ้มหรือไม่ให้ดูว่าแผนสำรองนั้นลดความเสี่ยงลงได้ถึงจุดไหน
- กลยุทธ์
- วางทีมไว้คร่าวๆ
- ประเมินทรัพยากร (เงิน , คน, เวลา, สถานที่) ไว้คร่าวๆ
- วางแผนสำรอง ซึ่งต้องมีเสมอ
- เตรียมนำเสนอ และรออนุมัติเพื่อไปขั้นตอนถัดไป
- กำหนดคนที่สำคัญต่อโครงการ ใครสำคัญต่อโครงการต้องบอกให้รู้ตัวเสมอ เพื่อให้รู้ตัวอยู่เสมอว่าตัวเองคือความเสี่ยงเป็นปัจจัยต่อความสำเร็จของโครงการ และเพื่อให้เรารู้ว่าความเสี่ยงคืออะไรเช่น programmer คนไหนทำงานไม่ได้ตามที่สั่งงานให้ต้องรีบบอก อย่าบอกวันสุดท้าย
- เริ่มเรียนรู้ระบบ
- กำหนด baseline:
- จุดสิ้นสุดของ product
- มาตราฐาน
- ทรัยากร (เงิน , คน, เวลา, สถานที่)
- กิจกรรมที่จะเกิดขึ้น เริ่มลงลึกถึงรายละเอียด
- กำหนด:
- วิเคราะห์การเงินเช่นเราต้องรู้ว่าเมื่อทำโครงการนี้เสร็จคุ้มไหมได้เงินเท่าไหร่ ถ้าให้ดีน่าจะบอกได้ว่าจุดคุ้มทุนอยู่ที่ตรงไหน
- ในโครงการจะต้องมี work / task / activity อะไรบ้าง (งานที่ต้องทำทั้งหมด)
- นโยบาย
- ต้องทำให้ทุกคนในทีม มองไปในทิศทางเดียวกัน
- ต้องบอกได้ว่าเสร็จเมื่อไหร่ และอย่างไรถึงเรียกว่าเสร็จ
- ลงรายละเอียดการประชุม, ประชุมครั้งที่เท่าไหร่, หัวข้อที่ประชุม ฯลฯ
- ต้องมีการประเมินเวลา รู้ว่าตอนนี้โครงการอยู่ ณ จุดไหน, delay ได้แค่ไหน, จำเป็นหรือไม่ที่จะต้อง delay (บางครั้งอาจประเมินเวลามากเกินไป และคนที่เสียหายคือลูกค้าเพราะงานทำเสร็จเร็วกว่าเวลาที่กำหนด)
- มีการลงรายละเอียดด้าน technology ที่จะใช้
- ลงมือทำ
- สั่งการ / ดูแล / คาดการณ์ / ควบคุม:
- ขอบเขตทั้งหมด (ห้ามเกิน ห้ามขาด)
- คุณภาพ
- เวลา
- งบประมาณ
- แก้ปัญหาที่เกิดขึ้นได้
- Review software ที่พัฒนาขึ้น
- ส่งมอบระบบให้แก่ลูกค้า
- ประเมินโครงการ
- ส่งมอบเอกสาร
- คืนทรัพยากร (คน) ที่ดึงมาใช้ กลับไป
- เตรียมรับงานโครงการใหม่
Project Management Processes
โครงการจริงๆ แล้วคือการรวมหลายๆ process การจะให้ได้ process มาเราจะต้องรู้ว่าจะทำอะไร เพื่อให้ได้ output อะไรออกมาแล้วให้ย้อนนึกกลับไปเรื่อยๆ ก็จะได้กระบรวนการพัฒนาทั้งระบบ เช่นสเต็กจะได้ก็ต่อเมื่อ มีเนื้อ, ซอส จะมีเนื้อได้ก็ต้อง… คือการคิดย้อนกลับไปเรื่อยๆ
การพัฒนา software จะเกี่ยวข้องกับ 3 อย่างดังนี้
- คน เป็นสิ่งที่ควบคุมไม่ได้ (การดึงตัว ลาออก อุบัติเหตุ ความขัดแย้งภายในต่างๆ)
- เทคโนโลยี เป็นสิ่งที่ควบคุมไม่ได้ เพราะมีสิ่งใหม่ๆ เกิดขึ้นตลอดเวลา ไม่มีไครู้ว่าจะมี technology อะไรใหม่ๆ ออกมาหรือไม่ทำได้แค่การคาดเดาเหตุการณ์
- Process เป็นสิ่งที่ควบคุมได้ เป็นตัวกำหนดกระบรวนการพัฒนา software ต้องมีการเก็บ record ไว้ตลอดเลาเพื่อว่าเมื่อมีคนเข้ามาช่วยพัฒนา software ต่อจากคนเก่าจะได้ทำต่อได้เลย ใน CMMI มองที่ process เป็นหลักด้วยความคิดที่ว่าถ้า process ดี software ย่อมดีด้วย
เรื่องของการบริหารโครงการคือเรื่องของคน ไม่มีใครบอกได้ว่าเราจะใช้คนให้เหมาะกับงานได้อย่างไร ขึ้นอยู่กับเราอ่านคนออกแบบไหน ก็มีหลายทฤษฏีพูดถึงเรื่องของการใช้คนไว้ว่า คนทุกคนล้วนมีความต้องการ การจะใช้คนเราจำต้องตอบสนองความต้องการของเค้าให้ได้ แต่เมื่อคนได้ถึงความต้องการ ณ จุดหนึ่งก็ต้องมีความต้องการของตัวเองสูงขึ้น เช่นต้องการการยอมรับ ต้องการความเข้าใจ ผู้บริหารต้องมองความต้องการของแต่ละคน และให้ในสิ่งที่เค้าต้องการในจุดที่เหมาะสม เช่นตำแหน่งหน้าที่ ความมีเกียรติ และสุดท้ายคือให้ทำในสิ่งที่เค้าต้องการอยากจะทำ หรือให้เค้าเข้ามาเป็นส่วนหนึ่งของบริษัท เช่นแกรมมี่
อีกทฤษฏีนึงบอกถึงความต้องการของคน มี 3 อย่าง
- achieve คือทำงานใฝ่สัมฤทธิ ทำงานให้มีผลงาน ทำงานแล้วมีคนยกย่องงานที่ทำ
- power คือทำงานแล้วอยากได้อำนาจ
- affection คือทำงานแล้วอยากได้ความรัก ความเข้าใจ จากเพื่อนร่วมงาน
Plan – Do – Check – Act Cycle
วางแผน – ทำ – ตรวจสอบ – แก้สิ่งที่ผิดแล้วเริ่มวางแผนใหม่เป็นวนซ้ำไปเรื่อยๆ เพื่อให้ปรับปรุงแผนงานไปเรื่อยๆ เพื่อความถูกต้องที่มากขึ้น (ใช้เวลาสั้นลง)
Project Management Process Groups
จริงๆ แล้วการบริหารจัดการ process ของโครงการก็เหมือนๆ กันที่ต้องเริ่มต้นก่อนว่าจะให้ได้ output อะไรออกมา จากนั้นวางแผนก่อนที่ ลงมือทำ ตรงนี้จะวนซ้ำไปเรื่อยๆ เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดออกมา
Process Groups Interact in a Project
แต่ละช่วงของ process ก็จะมีงาน และเวลาที่แตกต่างกัน ตามรูป
Key Competencies of a Successful Project Manager
โครงการจะประสบความสำเร็จได้นั้น PM ควรจะมีคุณสมบัติดังนี้
- มองการณ์ไกล
- เผชิญหน้ากับอุปสรรค ซึ่งอาจเป็นสิ่งที่ไม่
- เคยเกิดขึ้นมาก่อน หรือเรื่องที่ไม่คาดคิดมาก่อน
- ระบุเป้าหมายให้ชัดเจน!!
- คิดสิ่งใหม่ๆ และสร้างสรรค์
- ต้องแก้ปัญหาที่เจอได้
- คิดอย่างเป็นระบบ และวางแผนจัดการทีมได้
- พัฒนาทีมได้
- ทำให้เป็นไปตามเป้าหมายที่วางไว้เพื่อให้ไม่หลง
- มีมาตราฐาน
- รู้ว่าใครทำอะไร แจกจ่ายงานได้ถูกคนถูกงาน
- เข้าใจสมาชิกในทีมมีความสามารถแค่ไหน
- การเพิ่มคนเข้าไปใน project ที่ช้าไม่ทำให้เร็วขึ้น (เพราะต้องเสียเวลา train งานให้พนักงานใหม่อีก)
- เงินไม่ได้แก้ปัญหาทุกอย่าง
- เข้าใจกระบรวนการของ project รู้ว่าปัญหาอยู่ที่ process ไหน
Web application project management ลองเล่นกันดูนะเผื่อชอบ ใช้แล้วเป็นไงมาบอกกันบ้างนะ
Seam 2.0.2 GA ออกแล้ว !!
เราพึงประกาศออกไปว่า Seam 2.0.2 ถึงที่หมายแล้ว การออกมาในครั้งนี้ทำมีการทำ Bugfix มากกว่า 150 ตัวใน Seam 2 (ที่ออกไปในเดือนพฤศจิกายน) และถูกดาวโหลดไปมากกว่า 70,000 ตั้งแต่ออกมา Seam 2 ดูท่าทางมีแนวโน้มที่ดี
เอกสารที่ถูกพัฒนาและรวมรูปลักษณ์ที่ดี ความรู้สึกดี และเนื้อหาที่ใส่บทการทำงานกับ JBoss Tool ด้วยโดยทำให้ Tutorial นั้นเป็นสากลสำหรับ App ของคุณรวมถึงการใช่ Seam สำหรับหลายๆ Application Container ด้วย
หน้าแรกของ Seam Framework
หน้าดาวโหลด
Tuesday, 13 May 2008
Determyne ออก Open Source J2EE Performance Monitoring Tool
Determyne Inc. ได้ประกาศเทคโนโลยี Open Source สำหรับการดูแลประสิทธิภาพสำหรับ J2EE Application ข้างใน Apps จะเป็นแบบ End to End transaction โดยระบบรายงานได้ว่ายังสามารถใช้งานได้หรือไม่อย่างอัตโนมัติ สำหรับ J2EE Apps.
ในความแตงต่างของจุดประสงค์ของการเก็บและแสดงผลสำหรับหลายๆ System Component ภายใน Apps ตัวนี้ให้ความสำคัญของการดูแล Applications จาก Transaction มากกว่า ด้วยการที่ไม่ต้อง Config เลยแม้แต่น้อยและค่าใช้จ่ายที่น้อยนิด แถมซ้ำ Apps ตัวนี้ยังมองการกินทรัพยากรและเวลา สำหรับแต่ละ Transaction ได้ไม่ว่าจะเป็นจาก HTTP , J2EE Container หรือ Database Layers ของโครงสร้างพื้นฐานของระบบ และยังสามารถวิเคราะห์เป็นจุดๆได้อีกด้วย โดยเจ้านี้เป็น Open Source อย่างสมบูรณ์และฟรีโดยอยู่ภายใต้ LGPL open source license.
ลิงค์ต่างๆ
Sourceforge project page :http://sourceforge.net/projects/insideapps
demo:http://76.191.185.136/iaconsole
papers :http://www.determyne.com/white_papers.html
datasheet:http://www.determyne.com/images/insideApps_datasheet.pdf
feedback:http://sourceforge.net/forum/?group_id=225534
สำหรับเนื้อหาเพิ่มเติมเชิญที่ http://www.determyne.com/
Tags: author: dome, java, java ee, news, opensource
Thursday, 8 May 2008
ประกาศจากทาง Oracle
เรายินดีที่จะประกาศว่าทาง Oracle นั้นได้รวบกิจการ BEA Systems, Inc. โดยสมบูรณ์แล้ว และตอนนี้ BEA ได้มาเสริมกำลังทัพของ Oracle ทั้งหมด ด้วยข่าวนี้ เราอยากจะพูดซ้ำถึงความรับผิดชอบของเราที่มีต่อคุณและลูกค้าของคุณ ในการลงทุนในสินค้า Oracle Fusion Middleware
โดยหลักแล้วเราให้ความสนใจที่ความพึงพอใจของลูกค้าและหุ้นส่วน 100% เรามีแผนที่จะรวมบริษัทต่างๆของเราอย่างดีที่สุดเพื่อคุณและลูกค้าของคุณ และตอนนี้เราได้เพิ่มมูลค่าในทันที ความรับผิดชอบเราต่อ Middleware และความสำเร็จในลูกค้า Middleware ของเราคือผลสะท้อนอย่างคลอมคลุมในตัวสินค้าของเรา โดยการเลือกสินค้าที่มีมาตรฐานเพื่อให้ลูกค้าของเรามีความสามารถที่จะ แข่งขัน , ปลอดภัย , ดัดแปลง และขยายธุรกิจไปกับโลกเติบโตอย่างรวดเร็วไปกับสินค้า Middleware
ด้วยกันนี้ Oracle และ BEA ขอนำเสนอแผนที่สมบูรณ์ , โดยสิ่งที่ดีที่สุดในประวัติของ Middleware นั้นคือ Java Application Servers , Transaction Processing Monitors , SOA , Business Process Management , User Interaction and Web 2.0 , Identity Management , Business Intelligence และ Enterprise Content Management
เราได้สร้างช่องทางต่างๆสำหรับคุณและลูกค้าของคุณที่จะติดต่อสอบถามและนำเสนอผลตอบรับ คุณจะได้รับการเชิญเข้ารวม Webcast สำหรับลูกค้าและหุ้นส่วน Oracle และ BEA เราส่งเสริมให้คุณเข้าไปชม Oracle PartnerNetwork (OPN) ได้ที่ partner.oracle.com และดูการสื่อสารจาก OPN เพื่อที่จะรับรู้ข่าวสารปัจจุบันเกี่ยวกับการเพิ่มเติมโอกาสด้วย Oracle's Middleware และข้อเพิ่มเติมเราจะมีงาน Oracle OpenWorld ในช่วง 21-25 กันยายนนี้ที่ San Francisco , เราวางแผนที่จะนำเสนอ Oracle Fusion Middleware ในหลายๆช่วงนั้นรวมถึงเนื้อหาของ BEA ด้วย ต้องการข้อมูลเพิ่มเติมำสำหรับแผนที่เราได้รวมไว้ สามารถเข้าไปดู "คำถามที่ลูกค้าถามบ่อยๆ" ได้ที่ oracle.com/bea
ขอบคุณที่สนับสนุนตลอดมา จากรองประธาน Judson AlthoffGroup , Worldwide Alliances and ChannelsOracle
Tags: annoucement, author: dome, bea, news, oracle
Wednesday, 7 May 2008
SqlSheet 0.1.0 ค้นหาข้อมูลใน Excel ด้วย SQL
SqlSheet คือ JDBC Driver ซึ่งยอมให้คุณทำงานกับ Excel ด้วยภาษา SQL ได้โดยมีคุณสมบัติหลักๆดังนี้
- Java ล้วนๆ (ไม่ต้องมี native component)
- เร็ว (การทำงานเกิดขึ้นที่ spreadsheet โดยตรงไม่ต้องไปพึง memory ของ database)
- คำสั่งอ่านและเขียน
- สนับสนุน PreparedStatement
ตอนนี้ถ้าคุณต้องการจัดการกับ Spreadsheets เฉยๆแค่ใช้ Apache's POI มันเจ๋งมาก แต่ทำไม SqlSheet ถึงมีประโยชน์กว่า ? หลักๆแล้วการเข้าไปจัดการกับ Spreadsheets ภายใต้เครื่องมืออื่นๆนั้นจะใช้ database-oriented ดังนั้น SqlSheet จะจัดการให้คุณเพียงแค่คุณให้ URL ของ jdbc:xls แล้วก็ทำอะไรต่างๆที่คุณต้องการได้ทันที
สรุปก็คือถ้าต้องการส่ง Data จาก Excel ไปยังเครื่องมืออื่นๆที่ใช้ Database-Oriented แล้ว SqlSheet จะทำให้เรื่องพวกนี้เป็นเรื่องง่ายเพราะไม่ใช่เพียงแต่จัดการ Data ใน Excel ได้อย่างเดียวยังส่งข้อมูลเข้าไปยังเครื่องมือที่ใช้ Database-Oriented ได้อีกด้วย คุณสามารถ Download SqlSheet 0.1.0 ได้เลยครับ
Monday, 5 May 2008
มองเชิงเปรียบเทียบ: การสร้างสะพานกับการบริหารจัดการ software
สวัสดีครับ หายไปนานมากกับ blog นี้เหตุเพราะต้องไปทำงานที่ไซต์ลูกค้าครับกับคุณ Mr.Invert Prahs (ชื่อนี้มันพิมพ์ยากพิลึกเพราะผมต้องคิดมุมกลับทุกครั้งที่พิมพ์ชื่อนี้ 555) ช่วงแรกก็ชิว ๆ แต่หลัง ๆ ระทึกครับ เปลี่ยน requirement กันแทบวันต่อวัน เอาเป็นว่าไม่พูดเรื่องงานดีกว่า เดี๋ยวคนที่โน้นแอบเข้ามาอ่าน 555 แต่สิ่งที่ได้เป็นประสบการณ์ต่าง ๆ ที่มีค่าเป็นการเปิดมุมมองอื่นๆ ด้วยครับ
ช่วงนี้กำลังเปิดภาคเรียน "ป.โท" พอดี เลยคิดว่าอยากมาแชร์อะไรที่อยู่ในห้องเรียนซักหน่อยหวังว่าจะไม่เบื่อกันนะครับ เราจึงจะเปิดตัว tag ใหม่กันด้วย [lecture notes] ทักทายกันเล็กน้อยพอประมาณนะครับเข้าเรื่องกันเลย
บทความแรกหลังจากหายไปนานผมจะเขียนเรื่อง การบริหารจัดการ software ก็เหมือนกับการสร้างสะพาน
บางทีการพัฒนา software ก็เหมือนกับการที่เราจะต้องสร้างสะพานขึ้นมา เหมือนตรงที่เราไม่รู้หรอกว่าข้างหน้าจะต้องเจอกับอะไรบ้าง โดยอาจารย์จะมีกฏให้ดังนี้
- ให้จับกลุ่ม กลุ่มละ 5 คนสุ่มจับ
- ให้ 1 คนเป็นลูกค้า โดยเลือกจากคนที่มีประสบการณ์การทำงานเยอะสุด (จะคอยถามถึงความคืบหน้าเรื่อยๆ และตรวจสอบคุณภาพของงานที่ทำออกมา)
- ให้ 1 คนในกลุ่มเป็น PM เพื่อไปสรุปหน้าชั้น (แล้วสุดท้ายลูกค้าจะไปสรุปปิดท้ายอีกที)
- model กระดาษที่ใช้ประกอบกันเป็นสะพานที่ยังไม่ตัด 4-5 แผ่น
- กรรไกร และกาว อย่างละ 1 ต่อ 1 กลุ่ม
- ให้แต่ละกลุ่มประเมินเวลาที่จะทำเสร็จ
จากนั้นก็ลงมือทำครับ ถ้ามองอย่างไม่คิดอะไรนี่ก็เกมส์ต่อโมเดลกระดาษสะพานสนุก ๆ อันนึงนี่เอง แต่บรรยากาศทำให้ผมต้องคิดเปรียบเทียบถึงขั้นตอนการพัฒนา software ตลอด และคิดเตรียมคำตอบให้กับ user ตลอดเวลา แต่ละคนมีการแบ่งหน้าที่กันอย่างชัดเจน แล้วระหว่างที่เริ่มลงมือทำก็มีการสับคนในกลุ่มที่ไม่ใช่ PM ออกไปแลกเปลี่ยนกับอีกกลุ่มนึง (ในกรณีสร้างสะพานนี้งานไม่ซับซ้อนมากจึงสามารถเริ่มงานต่อจากคนก่อนได้เลย แต่ถ้างานซับซ้อนมากคงต้องเสียเวลา train งานกันอีกเยอะ) เวลาที่ทีมเราประเมินไว้คือ 20 นาที เพราะเราประเมินกันเอาไว้ว่าช่วงเวลาตัดกระดาษไม่นานเท่าไหร่ ที่นานคือตอนประกอบรวมคร่าวๆน่าจะซัก 10 นาที แต่เรากำหนดเวลาเกินไว้เล็กน้อยเป็น 20 นาที ...
แต่พอทำเข้าจริงๆปรากฏว่าใช้เวลาไปถึง 32 นาที เพราะเวลาที่เสียไปนานที่จริงคือช่วงรอกาวแห้ง เพราะตอนที่ประกอบกันนั้น กระดาษที่ต่อไม่สามารถประกบกันกับอีกฝั่งได้พอดีมีความคลาดเคลื่อนกันเล็กน้อย ทำให้โครงสร้างยังอ่อนแออยู่จึงต้องค่อย ๆ ปรับกันทีละบล็อก (ซึ่งตอนที่ประเมินไม่ได้มองถึงจุดนี้อย่างละเอียดถี่ถ้วนดีนัก) จากนั้นได้มีการเสริมความแข็งแรงของสะพาน ก็เพิ่มกระดาษแผ่นยาวมาแปะกาวข้างใต้เพื่อยึดติดบล็อกทั้งหมดเข้าด้วยกัน (ส่วนนี้แก้ปัญหาเฉพาะหน้า) ระหว่างการสร้างสะพานคนที่ทำหน้าที่แต่ละส่วนจะทำงานในส่วนของตัวเองเร็วขึ้นด้วย (ความชำนาญมากขึ้น) และสิ่งที่ขาดไม่ได้คือความเป็นทีม ทำให้สะพานออกมาเสร็จสมบูรณ์ ^^ หลังจากทำเสร็จเรียบร้อยมีการทดสอบความแข็งแรงของสะพานกันเล็กน้อย - -'
จากการทำในครั้งนี้เสมือนจับโปรเจคกันจริงๆ เริ่มกันตั้งแต่ มีการรับ requirement ลูกค้า, ตั้งทีม, แบ่งความรับผิดชอบกันในแต่ละส่วน, วิเคราะห์ว่าจะทำอย่างไรถึงออกมาเร็วและถูกต้องตามที่ลูกค้าต้องการ, ลงมือพัฒนา, แก้ไขปัญหาเฉพาะหน้า, มีการ track งานตลอด, ทดสอบ, ตรวจคุณภาพของงาน, ส่งมอบ
สรุปหลังจากบทเรียนนี้
- การทำงานเราควรมีการแบ่งหน้าที่กันอย่างชัดเจน เลือกคนให้ถูกงานด้วย
- ทีมเป็นสิ่งสำคัญที่สุด ฟังความคิดเห็นในทีม และช่วยกันอย่างเต็มที่ (อย่าอู้งาน เดี๋ยวโดนแบน)
- เมื่อมีปัญหาที่เกิดขึ้นเฉพาะหน้าขึ้น ต้องใจเย็นและมีสติ
- การทำในแต่ละส่วนเราควรตั้งใจและทำมันให้ดีที่สุด เพราะองค์ประกอบต่างๆล้วนแต่มีความสำคัญด้วยกันทั้งสิ้น และบางครั้งมันไม่มีโอกาสทำครั้งที่ 2 (เช่นตอนตัดกระดาษตัดพลาดไม่ได้เพราะไม่มีสำรอง)
- พยายามคิดถึงเหตุการณ์ต่างๆ ที่มีโอกาสเกิดขึ้นให้มากที่สุด และเตรียมพร้อมรับกับเหตุการณ์ข้างหน้านั้น (อ่านเกมส์ให้ออก)
- ควรมีแผนสำรอง 1, 2, 3
- เข้าใจเรื่องการต่อโมเดลสะพานมากขึ้นเยอะ
- ก่อนออกไปพูดสรุปหน้าชั้นเราควร list เฉพาะหัวข้อที่เป็น key จริงๆ
Security Testing ตอนที่ 2
ห่างหายไปจากตอนที่หนึ่งนานมากๆ เรามาพบกันในตอนที่สองเลยครับ
Broken Access Control
คือ การที่เราสามารถเข้าไปใช้สิทธิของผู้อื่นได้ โดยเพียงแค่รู้ url ของเค้า เช่น สมมุติเรา login โดยใช้ role user ซึ่งจะไม่เห็น link สำหรับสร้าง user แต่เราไปรู้ว่าใช้ url อะไรใจการเข้า module นั้น เราก็จะสามารถเข้าไปจัดการ user โดยใช้แค่ role user
วิธีทดสอบ
ให้เปิด IE 2 หน้าต่าง โดยหน้าต่างแรก login เป็น user ธรรมดา อีกหน้าต่างหนึ่ง login เป็น user ที่มีสิทธิสูงกว่าเช่น admin จากนั้น copy link ใน module ซึ่งมีใน admin แต่ไม่มีใน user มารันใน หน้าจอของ user ถ้าสามารถเข้าได้ แสดงว่าเกิด Broken Access control
วิธีแก้ไข
ควรจะเช็คสิทธิของผู้ใช้ในทุกหน้าจอ ไม่ใช่แค่ซ่อน url เอาไว้
Error Handling
ระบบต้องไม่เปิดเผยข้อมูล Technical Error Code ที่หน้าเว็บให้ client เห็นควรมีการดักจับ แล้ว แสดงเป็นข้อความเฉพาะที่จำเป็นเพื่อสื่อให้ผู้ใช้เข้าใจ
วิธีทดสอบ
ทดสอบทำให้เกิด error ขึ้นใน web application เพื่อดูว่าจะแสดงข้อความ error แบบใด
วิธีแก้ไข
1. ควรทำหน้า error กลางที่ดักจับ error แล้วแสดงเป็นข้อความที่ผู้ใช้เข้าใจ โดยไม่แสดง error code ใดๆ ที่หน้าจอ แต่อาจจะเขียนลงไฟล์แทน
2. สำหรับ .NET เมื่อนำขึ้น production ควรปิดข้อความ error โดยสร้าง page มารับ error แล้วแก้ web.config เป็นดังด้านล่าง
Web server configuration
ควรจะป้องกันเรื่อง Directory traversal คือ ไม่ควรให้สามารถเข้าเว็บไปยัง directory อื่นๆ ได้
วิธีทดสอบ
ทดลองเข้าเว็บโดยระบุ url จนถึงแค่ชื่อ directory ไม่ระบุชื่อไฟล์ web page หรือ ชื่อ action path เช่น แทนที่จะเข้า ด้วย url แบบนี้ http://www.test.com/document/index.html ก็เข้าโดยใช้ แบบนี้แทน http://www.test.com.document/ เพื่อดูว่าสามารถ browse ไฟล์ใน directory นั้นได้หรือเปล่า
วิธีแก้ไข
1. สำหรับ .NET นั้นใน IIS จะมี option ให้ set ได้ว่าจะให้ directory สามารถ browse ผ่านเว็บได้หรือไม่ ดังรูป ซึ่งเราไม่ควรติ๊กเลือกให้มัน สามารถ browse ได้
2. สำหรับ SunOne สามารถ Disable Directory browsing ได้โดยเข้าไปที่ Web Admin จากนั้นเลือก manage web ที่ต้องการ แล้วเลือก tab Virtual Server Class-> แล้วคลิ๊ก ปุ่ม Manage จากนั้นคลิ๊ก tab Content Mgmt->Document Preferences-> แล้วเลือก Directory Indexing เป็น None โดยต้องใส่ชื่อไฟล์ในช่อง “File to use for error response when indexing is none:” ด้วย
Encryption
- ระบบต้องเข้ารหัสข้อมูลที่เป็นความลับ เช่น รหัสผ่าน, Connection Strings และ ข้อมูลอยู่ในระดับ Confidential หรือ Secret
- Salted Hash Techniques – ถ้าต้องมีการส่งผ่าน password หรือข้อมูลสำคัญจากระบบหนึ่งไปยังอีกระบบหนึ่งนอกจากการ encrypt ข้อมูลแล้ว ควรเพิ่มอักขระพิเศษใส่เข้าไป โดยตกลงกันในตอนส่งและตอนรับ
วิธีทดสอบ
Password ใน database ต้องถูกเข้ารหัสในแบบที่อ่านไม่เข้าใจ
วิธีแก้ไข
- ควรเข้ารหัส password
- ใช้ salt hash techniques กับ password ที่ส่งผ่านข้ามระบบ
Tags: articles, author: prahs, security, testing
Sunday, 4 May 2008
NetBeans IDE 6.1 ออกแล้ว !
NetBeans IDE 6.1 ออกมากับหลาย Features ใหม่ๆและการปรับปรุงหลายอย่างให้ดีขึ้นอย่าง เช่น Rich Javascript Editing features , สนับสนุนการใช้กับ Spring Web Framework , รวม MySQL ให้ใกล้ชิดยิ่งขึ้น และรวมถึงพัฒนาให้ดีขึ้นในการใช้งานร่วมกันของ Libraries ต่างๆระหว่าง Project ที่ต้องใช้งาน แล้วเราได้สนับสนุน Ruby/JRuby พร้อม Editor ตัวใหม่ , ตัดจัดการ Ruby Platform , Debug ได้เร็วสนับสนุนให้กับ JRuby และอื่นๆอีกมากมาย
จากความต้องการที่เป็นที่ต้องการ , Bean Pattern และ JSF CRUD ยุคใหม่ที่เราขาดหายไปใน version 6.0 ได้กลับมาแล้ว ในส่วนเพิ่มเติมการออก version ก่อนหน้านี้ของ Module ใหม่ๆอย่างเช่น ClearCase Support จะมาอยู่ในรูปแบบของ Plugin
การออกมาในครั้งนี้ยังพัฒนาประสิทธิภาพมากขึ้น โดยเฉพาะ Startup ที่เร็วขึ้น (มากถึง 40%) กิน Memory น้อยลงและการตอบสนองที่ดีขึ้นในการทำ Project ใหญ่ๆ สุดท้ายมาดู Feature เด่นๆที่เข้ามาใน Version นี้กัน
Feature เด่น :
- สนับสนุน Javascript
- Highlight คำต่างๆใน Javascript
- การวิเคราะห์การพิมพ์และโค๊ดสำเร็จ
- แก้ไขด่วนและตรวจสอบความหมาย
- สนับสนุนการ Refactor
- ประสิทธิภาพ
- เร็วขึ้นถึง 40%
- กิน memory น้อยลง
- การทำ Code Completion เร็วขึ้น
- สนับสนุนSpring Framework
- นำ Spring Framework 2.5 library เข้ามา
- มี Wizard สำหรับการแก้ไข XML configuration และ Spring Web MVC Controllers
- Spring Web MVC Framework สนับสนุนใน Web Project
- การหา Database ใน MySQL
- ลงทะเบียน MySQL servers
- ดู , สร้าง , ลบ database ได้
- ง่ายที่จะเรียกเครื่องมือจัดการของ MySQL
- สนับสนุน Java Beans
- Bean Pattern ใน Navigator
- สร้าง Bean Property ได้
- BeanInfo Editor
- ตัวสร้าง JSF CRUD
- สนับสนุน Ruby / JRuby
- Javadoc Code Completion
- สนับสนุน Web API ที่โด่งดัง
- สร้าง Mashup อย่างง่ายดาย
- สนับสนุนลากวางใน POJO , Servlets , JSP และ RESTful web service และ NetBean IDE สร้างโค๊ดในการเข้าถึง Service ให้เอง
- สนับสนุน Web API เช่น Google , Facebook , Yahoo , YouTube
- สนับ Web Service แบบ RESTful
- การทำ Sharing Project
- มี Plugin ใหม่ๆ
- ClearCase Version Control
- สนับสนุน AXIS
- สนับสนุน SOAP UI
- สนับสนุน Hibernate Framework
- Java Mobility
สามารถ Download NetBeans เวอร์ชั่น 6.1 Final กันได้เลยที่นี้ครับ Download
Tags: author: dome, ide, java, new release, news
Friday, 2 May 2008
Java 6 ออกแล้วสำหรับ Intel Macs 64 bit
ย้อนกลับไปเมื่อปี 2007 เมื่อ Apple ปล่อย Mac OS X 10.5 Leopard ออกมา มีเสียงวิพากษ์วิจารณ์มากมายเกี่ยวกับการขาดการสนับสนุน Java 6 โดย Leopard ถูกส่งไปด้วย Java version เก่าคือ Java 1.5 แล้ว 1.6 ได้ออกมาได้เกือบปีแล้วโดยทาง Sun ได้ออก Java 1.6 สำหรับ Linux และ Windows แต่ไม่ได้ทำสหรับ Mac OS X ตั้งแต่ Apple ยืนยันจะพัฒนา Java ในแบบของตัวเองให้สอดคล้องกับทาง Sun
แล้วตอนนี้ 6 เดือนให้หลัง , Mac Java Programmers สามารถปลื้มกับผลงานอันนี้ Apple ได้ออก Java 6 สำหรับ Leopard แต่เรารู้ดีว่ามันสามารถทำงานได้บน Intel 64 bit ของ Apple OS เท่านั้น ดังนั้นคนที่ใช้ Intel Macs หรือ PowerPC ก่อนหน้านี้จะไม่ได้รับประโยชน์ใดๆทั้งสิ้น ของการพัฒนาครั้งนี้ แม้แต่คุณมี G5 Quad ก็ไม่มี Java 6 สำหรับคุณ
Java สำหรับ Mac OS X 10.5 Update 1 ได้เพิ่ม Java SE 6 เวอร์ชั่น 1.6.0_05 ไปใน Mac แล้วการอัพเดตครั้งนี้จะไม่เป็นการทับกับการ Install J2SE 5.0 หรือเปลี่ยนแปลง version ของ Java
ปล. นั้นหมายความว่า Version ใหม่นี้ไม่ได้ออกจากทาง Sun แต่ออกโดยผลงานของชาว Mac Java Programmers นั้นเอง
Tags: author: dome, java, news