Archive for August, 2010

คำสั่ง chmod สำหรับเปลี่ยน mode ไฟล์หรือ directory

คำสั่ง chmod เป็นคำสั่งที่ใช้กำหนดสิทธิในการใช้งานของกลุ่มต่างๆ โดยแบ่งผู้ใช้งานออกเป็น 3 กลุ่มดังนี้

1.  Owner  
2.  Group 
3.  Other(public)

และแบ่งสิทธิในการใช้งานดังนี้

1.  Read (อ่าน)
2.  Write (เขียน)
3.  Execute (ประมวลผล)

รูปแบบของตัวเลขในคำสั่ง chmod
คำสั่ง chmod สำหรับเปลี่ยน mode ไฟล์หรือ directory
ความหมายของตัวเลข chmod(UNIX) แต่ละตัวมีดังนี้

0 หมายถึง ไม่มีสิทธิการใช้งาน
1 หมายถึง ประมวลผลอย่างเดียว
2 หมายถึง เขียนได้อย่างเดียว
3 หมายถึง เขียนและประมวลผลได้
4 หมายถึง อ่านได้อย่างเดียว
5 หมายถึง อ่านและประมวลผลได้
6 หมายถึง อ่านและเขียน แต่ประมวลผลไม่ได้
7 หมายถึง ทำได้ทุกอย่าง ทั้งอ่าน เขียนและประมวลผล

1. สำหรับเปลี่ยน mode ของ Directory

chmod 0777 <Directory name>

2. File อย่างเดียว

chmod 0755 <File Name>

3. รวมทั้ง Directory และ ไฟล์ย่อยข้างใน โดยการเพิ่ม Option -R เข้าไปดังนี้

chmod -R 0777 <Directory name>

1. การใช้ chmod ผ่านโปรแกรม FTP
ตัวอย่างของ FileZilla
คำสั่ง chmod ใน Filezilla

[Java]การติดตั้ง Certificate(SSL) ใน Weblogic 8.1

ต่อจาก [Java]การ Generate Web Service Client ใน Weblogic 8.1
ตามติดด้วยงานติดตั้ง Certificate (SSL) ของ Web Servcie วิธีการก็ตามนี้ครับ
1. เข้าไปที่ C:\bea\jdk142_08\jre\lib\security (เปลี่ยน path ตามที่ติดตั้ง)

keytool -import -alias [alias_name] -file [Path of .cer] -keystore [keystore_name] -storepass [password]

[alias_name] : ชื่อ alias ที่ต้องการ
[Path of .cer] : path ของไฟล์ Certificate.cer
[keystore_name] : ชื่อ keystore
[password] : รหัสผ่าน
ตัวอย่างเช่น

keytool -import -alias example -file D:\example.cer -keystore cacerts -storepass exmpass

2. ดูว่ามี Certificate อะไรที่ติดตั้งบ้าง

keytool -list -keystore [keystore_name] -storepass [password]

[keystore_name] : ชื่อ keystore
[password] : รหัสผ่าน
ตัวอย่างเช่น

keytool -list -keystore cacerts -storepass exmpass

[Java]การ Generate Web Service Client ใน Weblogic 8.1

มีโอกาสได้แวะเวียนมาจับ Weblogic 8.1 อีกครั้ง (เค้ายังใช้กันนะครับพี่น้อง) และต้อง Generate Web Service Client ขึ้นมาใช้งาน วิธีการก็ง่ายมากครับตามนี้เลย

C:\bea\user_projects\domains\[domain_name]> setDomainEnv.cmd

[domain_name] : ชื่อโดเมนที่เราใช้งานครับ
แล้วใช้คำสั่ง

java weblogic.webservice.clientgen -wsdl [wsdl_file.wsdl] -packagename [package_name] -clientjar [Lib.jar]

[wsdl_file.wsdl] : ไฟล์ .WSDL ที่ได้มาจากผู้ให้บริการ
[package_name] : ชื่อ package
[Lib.jar] : ชื่อ jar ไฟล์ที่ต้องการ
ตัวอย่างเช่น

java weblogic.webservice.clientgen -wsdl example.wsdl -packagename com.example.ws -clientjar Example.jar

[C#]การตรวจสอบเดือนกุมภาพันธ์ มีกี่วัน (Leap year)

พอดีมีโอกาศได้แก้ไข Code ที่เป็นภาษา C# แล้วต้องการตรวจสอบว่า ปี ที่เลือกมานั้น เดือนกุมภาพันธ์ มี 28 วัน หรือ 29 วัน ซึ่งสูตรโดยทั่วไปในการตรวจสอบ เป็นดังนี้
1. ปี หารด้วย 4 เศษต้องเป็น 0
2. และ ปี หารด้วย 100 เศษต้องไม่เท่ากับ 0
3. หรือ ปี หารด้วย 400 เศษต้องเป็น 0

ทดลองเขียน method ดังนี้

private bool isLeapYear(int year ){
	return (((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0));
}

แต่ในภาษา C# มันช่างง่ายอะไรแบบนี้ ไม่ต้องเขียนเองครับ ดังนี้เลย

if(System.DateTime.IsLeapYear(year)){
	Console.Writeln("Day is 29");
}else{
	Console.Writeln("Day is 28");
}

หมายเหตุ : สูตรสามารถนำไปใช้กับภาษาอะไรก็ได้ครับ

[MySQL] MyISAM กับ InnoDB

ต่อจากตอนที่แล้ว พอมาใช้ PDO แล้วชีวิตมันก็ดีขึ้นตามลำดับ ที่ควรจะเป็น แต่มาติดปัญหาเรื่อง Transaction นิดหน่อย เนื่องมาจากตารางที่ออกแบบมานั้น (คนอื่นออกแบบมาอีกที) ใช้ engine เป็น MyISAM ซึ่งเท่าที่อ่านมาคือมันไม่รองรับการทำ transaction ผมไม่รู้เสียเวลา่ตั้งนานว่าเขียน Code ผิดตกหล่นตรงไหนนี่ สั่ง rollback ก็แล้ว ข้อมูลก็ยังมาอยู่ดี จนสุดท้ายลองไปดูโครงสร้างของ table โอ้ๆๆ ถึงบางอ้อเลย เลยลองเปลี่ยนมาเป็น InnoDB แล้วทุกอย่างก็เป็นไปอย่างที่คิดไม่มีผิด

ISAM (MyISAM) ซึ่งมีความรวดเร็วในการอ่านและเขียนสูง เนื่องจากมีการจัดเก็บไว้ในรูปแบบของแฟ้มข้อมูล ซึ่งรองรับการอ่านข้อมูลพร้อมๆ กันได้ (เหมาะสำหรับ Web Application) แต่อาจจะมีปัญหาเมื่อใช้งานกับระบบที่ต้องมีการอ่าน/เขียน ข้อมูลในตารางเดียวกัน พร้อมๆ กันที่สำคัญ ฐานข้อมูลประเภท MyISAM จะมีปัญหาเรื่อง Index เสีย และ Data Corrupt บ่อยมาก หากใช้งานใน OS ที่เป็น Windows และมีการ Shutdown อย่างไม่ถูกต้อง ซึ่งทำให้ผู้ดูแลระบบต้องมีการซ่อมแซม (repair table bad_table) ตารางทีมีปัญหาอยู่เรื่อยๆ
InnoDB ข้อดีคือ รองรับการทำ Transaction รองรับการอ่านและเขียน พร้อมๆ กันได้ดีกว่าฐานข้อมูลประเภท MyISAM และยังมีระบบ Auto Data Recovery หากมีการ shutdown โดยไม่เหมาะสม (ไฟดับ)ซึ่งในการใช้งานผู้ใช้สามารถเลือกได้ว่าจะให้ตารางใดเป็นประเภท InnoDB หรือ MyISAM ขึ้นอยู่กับความเหมาะสม (ว่าจะเลือกความเร็ว หรือ ประสิทธิภาพ)
ที่มา : http://joezine.exteen.com/20060305/myisam-innodb

หมายเหตุ : ที่หาไม่เจอสักที เพราะปกติผมจะให้ Default engine เป็น InnoDB เลยไม่เคยเจอปัญหานี้
อ้างอิง/แหล่งข้อมูล
InnoDB vs MyISAM vs Falcon benchmarks – part 1