วันจันทร์ที่ 24 กันยายน พ.ศ. 2555

คู่มือเบื้องต้นในการดูสเปกโน้ตบุ๊ก ฉบับล่าสุดประจำปี 2012

สำหรับใครที่ต้องการโน๊ตบุ๊กสักเครื่อง การดูสเปกได้นั้นเป็นสิ่งจำเป็นอย่างมาก (ยกเว้นจะให้เพื่อนๆ ที่ดูเป็นคนช่วย) เพราะหมายถึงการที่ได้เครื่องตรงความต้องการใช้งานของเรามากที่สุด ต่องบประมาณที่จำกัด บางท่านอาจจะต้องการใช้แค่พิมพ์งานเล่นเน็ต แต่ดูสเปกไม่เข้าใจอาจจะไปซื้อเครื่องรุ่นใหม่ที่กินตัวไป เพราะเห็นแค่เพียงว่าราคาสูงน่าจะใช้งานเราได้แน่ๆ หรือบางท่านต้องการเครื่องที่มีพอร์ตต่างๆตามต้องการเช่น HDMI สำหรับต่อจอ LCD TV หรือ e-SATA สำหรับต่อฮาร์ดดิสค์ความเร็วสูง ถ้าเราดูสเปกผิดเพียงนิดเดียวก็อาจจะทำให้เราซื้อเครื่องมาผิดจุดประสงค์การใช้งานได้เพราะฉะนั้น การดูสเปกแบบคร่าวๆพอเข้าใจอาจจะไม่ต้องถึงขั้นรู้เทคโนโลยีอะไรมากมายเพียงแต่สามารถจับจุดได้ แค่นี้ก็สบายหายห่วงแล้ว

อ่านต่อ

วันพฤหัสบดีที่ 28 มิถุนายน พ.ศ. 2555

Netbeans กับการพัฒนาโปรแกรมบน Android


วิธีการเป็นขั้นตอน http://be2art.blogspot.com/2011/04/netbeans-android.html

วิเคราะห์ตลาด http://meewebfree.com/site/android/299-start-to-build-android-application-from-scratch

วันพุธที่ 20 มิถุนายน พ.ศ. 2555

วิธีแก้ปัญหาเมื่อ Apache ส่งไฟล์ที่เราร้องขอไปมาให้เพียงบางส่วน

วิธีแก้ปัญหาเมื่อ Apache ส่งไฟล์ที่เราร้องขอไปมาให้เพียงบางส่วน
(Apache Send Partial Content == ERROR 206)

เราสามารถแก้ปัญหาได้โดยการปลดเครื่องหมายคอมเมนต์(#) ที่อยู่หน้าบรรทัด

#EnableMMAP off

#EnableSendfile off

ของไฟล์ httpd.conf แล้วจะได้เป็น
 
EnableMMAP off

EnableSendfile off

แล้วทำการบันทึกไฟล์ต่อด้วยสั่งรีบูต Apache อาการดังกล่าวมาก็จะหายไป

วันอังคารที่ 27 กันยายน พ.ศ. 2554

วันศุกร์ที่ 25 กุมภาพันธ์ พ.ศ. 2554

มะละกอฮอแลนด์

รวบรวมลิงค์เรื่องราวที่เกี่ยวกับ มะละกอ พันธุ์ฮอลแลนด์
1. http://www.rakbankerd.com/agriculture/page?id=1068&s=tblplant
2. http://www.bloggang.com/viewblog.php?id=hoonvi&date=15-01-2009&group=8&gblog=113

วันพุธที่ 22 ธันวาคม พ.ศ. 2553

วันพฤหัสบดีที่ 25 พฤศจิกายน พ.ศ. 2553

Regular Expression

สัญลักษณ์พิเศษต่าง ๆ ในการใช้งาน Regular Expression

สัญลักษณ์พิเศษต่างๆ ของ Reg ช่วยให้คุณขยายขอบเขตของข้อความที่ต้องการค้นหาหรือแทนที่ได้ง่ายขึ้น โปรดอย่าคิดว่ามันเป็นตัวประหลาดหรือทำให้คุณยุ่งยากแต่อย่างใด เพราะมิเช่นนั้น มันจะเป็นอย่างนั้นจริงๆ(เอ๊ะ...ยังไง) สัญลักษณ์พิเศษต่างแบ่งออกได้เป็น 3 ประเภท

1. สัญลักษณ์พิเศษที่ใช้แทนที่อักษรหรือสัญลักษณ์ตัวหนึ่งในข้อความ(string)
2. สัญลักษณ์ที่ทำหน้าที่ทำซ้ำตัวอักษรหรือสัญลักษณ์
3. สัญลักษณ์พิเศษที่ใช้ระบุตำแหน่งอักษรหรือสัญลักษณ์


1. สัญลักษณ์พิเศษที่ใช้แทนที่อักษรหรือสัญลักษณ์ตัวหนึ่งในข้อความ(string)
\d หมายถึง เลขตัวใดตัวหนึ่งจาก 0 ถึง 9 สมมติว่าคุณต้องการค้นหาตัวเลข 100 ถึง 199 คุณสามารถเขียนเป็น Reg ว่า /1\d\d/
\D หมายถึง ตัวอักษรหรือสิ่งที่ไม่ใช่ตัวเลข
\w หมายถึง ตัวอักษรภาษาอังกฤษหรือตัวเลข และรวมถึงเครื่องหมายขีดล่าง( _ )
\W หมายถึง ตัวอักษรไทยหรือที่ว่างหรือสัญลักษณ์ต่างๆซึ่งไม่ได้อยู่ใน \w
\s หมายถึง ที่ว่าง(space) ซึ่งรวมถึง tabs และ carriage returns
\S หมายถึง ตัวอักษร ตัวเลขหรือสัญลักษณ์ต่างๆ ซึ่งไม่ใช่ที่ว่าง
. (จุด) หมายถึง ตัวอักษรหรือสัญลักษณ์ต่างๆหรือที่ว่าง (ครอบคลุมทุกสิ่งทุกอย่าง)
[. .] แสดงตัวอักษรหนึ่งตัว ซึ่งอาจจะประกอบด้วยอักขระมากกว่าหนึ่งตัวก็ได้ (เช่น [.ch.] ในภาษาสเปน) ใช้ในกรณีที่เราต้องการแทนตัวอักษรตัวใดๆ ในลำดับ เช่นในภาษาอังกฤษ จาก a ไปจนถึง c เราจะใช้ [a-c]
แต่ในบางภาษาตัวอักษรแต่ละตัวอาจจะไม่ได้ประกอบด้วยอักขระเพียงตัวเดียวดัง เช่น ch ในภาษาสเปน เราก็เลยต้องใช้ [..] ช่วยเช่นจาก a ถึง ch เราก็สามารถใช้ [a-[.ch.]] แทน
[: :] แสดงคลาสของตัวอักษร (เช่น [:alpha:]) โดยจับคู่กับตัวอักษรใด ๆ ในคลาสของตัวอักษรที่ระบุ
[:alnum:] ตัวอักษรและตัวเลขทุกตัว (alphanumeric)
[:alpha:] ตัวอักษรทุกตัว
[:digit:] ตัวเลขทุกตัว
[:blank:] ตัวช่องว่าง (Space) ทุกตัว
[:space:] ตัวช่องว่างที่ไม่สามารถพิมพ์ได้ (Nonprinting)
[:cntrl:] แสดงตัวอักษร Control ทุกตัว (ตัวอักษรที่พิมพ์ไม่ได้ - Nonprinting)
[:punct:] ตัวอักขระพิเศษทุกตัว
[:lower:] ตัวอักษรที่เป็นตัวเล็กทุกตัว
[:upper:] ตัวอักษรที่เป็นตัวใหญ่ทุกตัว
[:graph:] ตัวอักษรที่อยู่ในคลาส [:punct:], [:upper:], [:lower:] และ [:digit:] ทุกตัว
[:print:] ตัวอักษรทุกตัวที่พิมพ์ได้
[:xdigit:] ตัวอักษรที่เป็นเลขฐานสิบหกทุกตัว
คลาสเหล่านี้จะต้องใช้ภายใน Bracket เท่านั้นเช่น [[:alnum:]] หรือ [[:alpha:][:digit:]] เป็นต้น

[==] จับคู่กับตัวอักษรที่มีตัวอักษรฐาน (Base Character) ตรงกัน เช่น [=a=] จะจับคู่กับตัวอักษรที่มีตัวอักษรฐานเป็น a (เช่น ? และ ? เป็นต้น) จะต้องใช้ภายใน Bracket เท่านั้น
[...] เป็น รูปแบบที่ใช้บอกค่าต่างๆที่อาจเป็นไปได้ในตำแหน่งนั้นๆ เช่น หากคุณใช้ /[กจสห]ด/g นั่นจะหมายถึงคำว่า "กด" "จด" "สด" และ "หด"
[.-.] เป็น รูปแบบที่ใช้บอกค่าต่างๆที่อาจเป็นไปได้ในตำแหน่งนั้นๆ โดยใช้ตัวอักษรหรือตัวเลขที่ครอบคลุมเป็นช่วงๆ เช่น หากคุณใช้ /[ก-ส]ด/g นั่นจะหมายถึงคำว่า "กด" "จด" และ "สด" (ทดสอบแล้วครับ เชื่อผมได้
ใช้ได้ทั้งกับตัวอักษรภาษาอังกฤษและตัวเลข)
[^...] เป็น รูปแบบที่ใช้บอกการยกเว้นคำหรือสัญลักษณ์ต่างๆ เช่น หากคุณใช้ /[^ก-ส]ด/g นั่นจะหมายถึงอะไรก็ได้ที่มี ด เด็ก ติดอยู่ แต่ ไม่ใช่ "กด" "จด" และ "สด"


ฝรั่งบอกว่าพวกนี้เป็นเพียงสัญลักษณ์พื้นฐานพิเศษพื้นฐาน แสดงว่า ต้องมีตัวประหลาดมากกว่านี้อีก ซึ่งถ้าคุณอยากรู้ก็ขอให้ไปหาเอาเองนะครับ ผมจะเป็นกำลังใจให้ ลองมาดูตัวอย่างการใช้กันครับ... สมมติว่าคุณต้องการค้นหารหัสประจำตัวนักศึกษา(เป็นเลข 8 หลัก)จากข้อมูลกลุ่มใหญ่กลุ่มหนึ่ง คุณก็อาจจะเขียน Reg ว่า... /\d\d\d\d\d\d\d\d/gi ซึ่งมันยาวมากเลยใช่มั้ยครับ แล้วถ้าในข้อมูลดันมีเลข 10 หลักโผล่ออกมา ก็จะถูกรวมอยู่ในเลข 8 หลักที่ค้นเจอด้วย ซึ่งมันไม่ถูกน่ะครับ ...แต่เรามีวิธีช่วยให้การเขียนสั้นลงและมีความถูกต้องมากขึ้น ด้วยสัญลักษณ์พิเศษอีก 2 ประเภทที่เหลือ


2. สัญลักษณ์ที่ทำหน้าที่ทำซ้ำตัวอักษรหรือสัญลักษณ์
\ (Backslash) เป็นเครื่องหมาย Backslash ตรงตัวหรือทำให้ตัวอักษรซึ่งเป็น Operator (เช่นเครื่องหมายคูณ, หาร, บวก และลบ) กลายเป็นตัวอักษรธรรมดาตัวหนึ่ง เช่น \* จะหมายถึง ตัวดอกจันหนึ่งตัว ไม่ใช่เครื่องหมายคูณเป็นต้น
| ใช้เป็นตัวคั่นเพื่อแสดงตัวเลือก
^ แสดงว่าเป็นจุดเริ่มของข้อความ ถ้าใช้ร่วมกับ match_parameter 'm' จะใช้เป็นจุดเริ่มต้นของบรรทัดใด ๆ ใน source_string
$ แสดงว่าเป็นจุดสิ้นสุดของข้อความ ถ้าใช้ร่วมกับ match_parameter 'm' จะใช้เป็นจุดสิ้นสุดของบรรทัดใด ๆ ใน source_string
. แทนตัวอักษรใด ๆ หนึ่งตัวยกเว้น NULL และแทนตัวขึ้นบรรทัดใหม่ (New Line) ถ้า match_parameter เป็น 'n'
[ ] ใน Bracket นี้จะเป็นลิสต์ของตัวอักษร ซึ่งตัวใดตัวหนึ่งในลิสต์สามารถจับคู่ได้กับใน source_string ถ้าต้องการให้เป็นตรงกันข้ามคือต้องการ source_string ที่ไม่มีในลิสต์จะต้องใส่ ^ เข้าไปเช่นจากคิวรีข้างบนถ้าเปลี่ยน [aeiou]
เป็น [^aeiou] จะได้ข้อมูล last_name ที่เป็นตรงกันข้ามคือแสดงทุกเรคคอร์ดใน employees ยกเว้น 8 เรคคอร์ดนี้
( ) เครื่องหมายกลุ่ม, สัญญลักษณ์ทั้งหลายในนี้จะถือเป็นหนึ่งตัว
\n แทนการเกิดขึ้นซ้ำครั้งที่ n ของตัว ( ) ที่อยู่ข้างหน้าตัวมัน เช่น ([aeiou])\1 หมายถึงการเกิดขึ้นซ้ำของตัว a, e, i, o หรือ u ครั้งที่หนึ่ง เช่น aa, ee, ii, oo หรือ uu ตัว n สามารถเป็นได้จาก 1 ถึง 9
{n} หมายถึง สิ่งที่อยู่ในตำแหน่งนั้นต้องซ้ำ n ครั้ง เช่น คุณสามารถเขียน Reg แทนเลข 8 หลัก ว่า /\d{8}/
{n,} หมายถึง สิ่งที่อยู่ในตำแหน่งนั้นต้องซ้ำ n ครั้งหรือมากกว่า
{n,m} หมายถึง สิ่งที่อยู่ในตำแหน่งนั้นต้องซ้ำ n ครั้งหรือมากกว่า แต่ไม่เกิน m ครั้ง เช่น หากคุณต้องการทดสอบว่า password ที่ผู้ใช้พิมพ์เข้ามาในรูปภาษาอังกฤษและตัวเลข มีความยาวอยู่ระหว่าง 6 ถึง 12 ตัว คุณสามารถเขียนได้ว่า \w{6,12}/
? หมายถึง สิ่งที่อยู่ในตำแหน่งนั้นอาจมีอยู่ครั้งเดียวหรือไม่มีเลยก็ได้ เช่น หากคุณต้องการค้นหา รหัสที่มีเลข 6 หลักและหน้าเลขอาจมีสัญลักษณ์หรือตัวอักษรนำหน้าตัวเดียว คุณอาจเขียนว่า /\D?\d{6}/ (แทนการเกิดขึ้น 0 หรือ 1 ครั้ง)
+ หมายถึง สิ่งที่อยู่ในตำแหน่งนั้นต้องมีอยู่อย่างน้อยหนึ่งครั้ง (แทนการเกิดขึ้น1 ครั้งเป็นต้นไป)
* หมายถึง สิ่งที่อยู่ในตำแหน่งนั้นอาจไม่มีอยู่หรือมีอยู่กี่ครั้งก็ได้ ( แทนการเกิดขึ้น 0 ครั้งขึ้นไป )ซึ่งคุณควรใช้สัญลักษณ์นี้ด้วยความระมัดระวัง ยกตัวอย่างเช่น /a*/ อาจหมายถึง คำภาษาอังกฤษจำนวนมากที่มีอักษร a อยู่ซึ่งอาจครอบคลุมคำที่คุณไม่ต้องการค้นหาผมขอยกตัวอย่าง การใช้สัญลักษณ์ทำซ้ำที่ซับซ้อนขึ้นมา ในการค้นหาหรือกรอกหมายเลขบัตรประชาชน ซึ่งมี 13 หลัก และมีรูปแบบที่ควรเป็นไปได้ดังนี้...

0 1234 56789 12 3
หรืออาจมีคนใช้ 0123456789123
หรืออาจมีคนใช้ 0 1234 56789123
หรืออาจมีคนใช้ 0 1234 56789 123 . . . . . .

ในข้อมูลหมายเลขบัตรจำนวนมาก อาจมีการเว้นวรรคหรือไม่เว้นดังที่แสดง ในการเขียน Reg ให้ครอบคลุมทุกๆกรณี คุณอาจเริ่มต้นด้วย
/\d \d\d\d\d \d\d\d\d\d \d\d \d/g
ส่วนการเว้นวรรค อาจมีหรือไม่มีก็ได้ เราก็เพิ่มเครื่องหมาย ? เข้าไป :
/\d ?\d\d\d\d ?\d\d\d\d\d ?\d\d ?\d/g
เราอาจใช้สัญลักษณ์ทำซ้ำเพื่อให้เขียนและอ่านได้ง่ายขึ้น :
/\d ?\d{4} ?\d\{5} ?\d{2} ?\d/g


3. สัญลักษณ์พิเศษที่ใช้ระบุตำแหน่งอักษรหรือสัญลักษณ์
\b (ใช้ได้แต่กับภาษาอังกฤษ) ใช้ระบุขอบเขตของคำว่ามีการจำกัด เช่น หากคุณต้องการค้นหาแต่ on ที่อยู่เดี่ยวๆ ไม่ได้อยู่ภายในคำอื่น ให้คุณใช้ /\bon\b/gi
\B (ใช้ได้แต่กับภาษาอังกฤษ) ใช้ระบุขอบเขตของคำว่าไม่ได้จำกัด เช่น หากคุณต้องการค้นหาคำว่า "Paula" และ "Pauline" แต่ไม่เอา "Paul" ให้คุณใช้ /\bpaul\B/gi
^ ใช้ระบุเป็นสิ่งที่อยู่อันดับแรกในข้อความ(string) เช่น หากคุณต้องการตรวจว่า เลข 1 เป็นสิ่งที่อยู่หน้าสุดของข้อความหรือเปล่า ให้ใช้ /^1\b/
$ ใช้ระบุเป็นสิ่งที่อยู่อันดับสุดท้ายในข้อความ(string) เช่น หากคุณต้องการตรวจว่า "จบ" เป็นสิ่งที่อยู่ท้ายสุดของข้อความหรือเปล่า ให้ใช้ /จบ$/

pattern คือ รูปแบบทีเป็นไวยกรณ์ของ Regular Expression ที่เอาไว้จัดการ Text ใน source_string
match_parameter คือตัวที่กำหนดพฤติกรรมในการจับคู่ตาม pattern ที่กำหนด ตัวอย่างเช่น

'i' หมายถึงการจับคู่ตาม pattern ไม่สนใจเรื่องตัวอักษรใหญ่หรือเล็ก (Case Insensitive)
'c' หมายถึงการจับคู่ตาม pattern ที่จะต้องตรงกันตามอักษรตัวเล็ก-ใหญ่ (Case Sensitive)
'n' ทำให้สัญญลักษณ์จุด (Period)ใน Regular Expression ซึ่งโดยปกติหมายถึงตัวอักษรใด ๆ ก็ได้หนึ่งตัว กลายเป็นหมายถึงตัวขึ้นบรรทัดใหม่ (New Line Character)
'm' ทำให้เครื่องหมาย ^ และ $ เป็นจุดเริ่มต้นและจุดสิ้นสุดบรรทัดใน source_string ซึ่งหมายถึงทำให้มอง source_string เป็นหลาย ๆ บรรทัดได้ ถ้าไม่ได้กำหนดตัวนี้ source_string จะถูกมองเห็นเป็นบรรทัดเดียว และ ^ กับ $
จะหมายถึงเป็นจุดเริ่มต้นกับสิ้นสุดของ Text ทั้งหมดใน source_string

ถ้า เราระบุ match_parameter ที่ขัดแย้งกันเช่น 'ic' จะใช้ค่าตัวหลังสุดคือ 'c' ซึ่งหมายถึง Case Sensitive ตัวอักษรจะต้องเป็นตัวเล็ก-ใหญ่ตรงกัน หรือถ้าเราไม่ระบุ match_parameter เลย ค่าดีฟอลต์จะมีผลดังนี้
- การจับคู่จะเป็น Case Sensitive หรือไม่ขึ้นอยู่กับตัวแปร NLS_SORT
- จุด (Period) จะหมายถึงตัวใด ๆ หนึ่งตัว ไม่ได้แทนตัวขึ้นบรรทัดใหม่
- source_string จะถูกมองเป็นบรรทัดเดียว และเครื่องหมาย ^ และ $ จะหมายถึงจุดเริ่มต้นและสิ้นสุด Text ทั้งหมดใน source_string

วันพฤหัสบดีที่ 11 พฤศจิกายน พ.ศ. 2553

การจัดการค่า Attribute ใน Header ของ SP Shibboleth

ค่า Attribute ใน HTTP Header ของ SP Shibboleth ที่ส่งไปให้โดย IdP เช่น uid, REMOTE_USER หรืออื่น ๆ จำเป็นจะต้องแก้ไขไฟล์ attribute-map.xml ใน opt/shibbolet-sp-2.0/etc/ โดยดูตัวอย่างได้ที่ sp1

วันพฤหัสบดีที่ 18 กุมภาพันธ์ พ.ศ. 2553

The Trust int Shibboleth

The Trust int Shibboleth
(ความไว้วางใจซึ่งกันและกันในระบบ SSO ที่นำ Shibboleth มาใช้งาน)

ความไว้วางใจในที่นี้คือ ความไว้วางใจของกันและกันระหว่าง IdP กับ SP โดย Shibboleth ได้กำหนดให้มีการจัดการความไว้วางใจกันโดยองค์ประกอบของระบบดังนี้
IdP โดยไฟล์ relying-party.xml
1. กำหนดให้ใช้

/opt/shibboleth-idp-2.0.0/credentials/idp.key
/opt/shibboleth-idp-2.0.0/credentials/idp.crt

โดยไฟล์ idp.crt จะต้องเป็น public-key ของ IdP เอง
2. จะต้องสร้างไฟล์ idp-metadata.xml โดยภายในไฟล์ จะต้องบรรจุ public key จากไฟล์ idp.crt เข้าไว้ด้วย เพื่อนำไปแจกก่ายให้แก่ SP ที่เข้าร่วมในวงเดียวกัน

SP โดยไฟล์ shibboleth2.xml
1. จะต้องกับหนดพาธของไฟล์ idp-metadata.xml ซึ่งต้องกำนดในไฟล์ shibboleth2.xml ให้ถูกต้อง

วันจันทร์ที่ 16 กุมภาพันธ์ พ.ศ. 2552

คำว่า prolog

Prolog ที่อยู่ใน XML จะหมายถึง ข้อมูลต่าง ๆ ตั้งแต่บรรทัดแรกสุดจนถึงบรรทัดเริ่มต้น XML ซึ่งก็คือบรรทัดที่ขึ้นต้นด้วย ....

นั่นเอง

วันอังคารที่ 10 กุมภาพันธ์ พ.ศ. 2552

วันจันทร์ที่ 24 พฤศจิกายน พ.ศ. 2551

ภาษาไทยกับ MySQL

ที่จริงตอนสร้างฐานข้อมูลใหม่ควรจะถูกกำหนดให้เป็นไทยตั้งแต่แรกแล้วนะครับ จากนั้นจะสร้างตารางและฟิลด์ข้างในก็จะเป็นแบบเดียวกันตลอด แต่ถึงกระนั้นเราก็สามารถเปลี่ยนทีหลังได้ ถ้าเขาไม่ให้เปลี่ยนเราก็ต้องมาเปลี่ยนเองทีละตารางอันนี้เปลี่ยนเฉพาะ database
SQL
ALTER DATABASE `dbname` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci
อันนี้สำหรับเปลี่ยน table อย่างเดียว
SQL
ALTER TABLE `tablename` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci
และอันนี้ตัวอย่างสำหรับเปลี่ยนเป็นราย field
SQL
ALTER TABLE `tablename` CHANGE `fieldname` `fieldname` VARCHAR( 255 ) CHARACTER SET tis620 COLLATE tis620_thai_ci
เป็นต้น** ควรใช้ tis620_thai_ci เพื่อการเรียงลำดับตามภาษาไทยที่ถูกต้องตามพจนานุกรม url http://community.thaiware.com/thai/lofiversion/index.php/t285122.html

วันศุกร์ที่ 10 ตุลาคม พ.ศ. 2551

Shibboleth 2 Configuration Manual

Shibboleth 2 Configuration Manual
Apache + Php
Summary All
Migrate a Shibboleth Service Provider 1.3.x to 2.x
IIS & Tomcat Proxy
IdPAuthUserPass
IdP Step-by-Step
SP Step-by-Step

IdPTroubleshootingCommonErrors https://spaces.internet2.edu/display/SHIB2/IdPTroubleshootingCommonErrors

Achieving Single Sign-on with Google Apps and Shibboleth 2.0

http://code.google.com/apis/apps/articles/shibboleth2.0.html

การติตั้งและการทดสอบการทำงานของ Shibboleth

https://spaces.internet2.edu/display/SHIB2/IdPSPLocalTestInstall

TUTORIAL Link
1. http://wiki.eclipse.org/SAML2_IdP_Overview_1.0

2.http://www.bestgrid.org/index.php/Shibboleth_IdP_Installation_at_the_University_of_Canterbury

LINUX Command Line Tutorial Link

1. http://www.linuxlane.com/basic-linux-command

วันพุธที่ 24 กันยายน พ.ศ. 2551

Apache's Configuration with Directive

ถ้าเราไว้ใจกันได้ ก็จะสามารถให้บริการได้เพิ่มขึ้น กรณีของการใช้โปรแกรม CGI นี้ก็เช่นกัน โดยปกติแล้วใครจะใช้โปรแกรม CGI บน server ใด จะต้องขออนุญาตให้ admin ดำเนินการให้ โดย admin จะต้องพิจารณาก่อนว่าโปรแกรม CGI นั้นๆ มีอันตรายต่อระบบหรือไม่ โดยเมื่อเห็นสมควรแล้วก็จะนำโปรแกรม CGI นั้นไปติดตั้งไว้ใน directory ของโปรแกรม CGI กลาง ในกรณีของลีนุกซ์บูรพาก็เช่นกัน เรายึดถือหลักความปลอดภัยไว้ก่อน ดังนั้นการตั้งค่า default ของการให้บริการโปรแกรม CGI ก็คือจะต้องผ่านการพิจารณาจาก admin ก่อน อย่างไรก็ตาม ในหลายๆ โอกาส เราไม่มีความจำเป็นจะต้องยึดหลักความปลอดภัยในระดับที่กล่าว บุคคลในองค์กรเดียวกัน น่าจะไว้วางใจกันได้ การอนุญาต ให้ผู้ใช้แต่ละคน สามารถรันโปรแกรม CGI ของตนเอง ใน home directory ของตนเองได้ น่าจะเป็นบริการที่สร้างความประทับใจแก่ผู้ใช้มากยิ่งขึ้น บทความนี้ จะอธิบายถึงวิธีการที่ผู้ดูและระบบการให้บริการ web ที่ติดตั้งจาก BLCD2 ทำการแก้ไขข้อมูลในแฟ้มโครงสร้างระบบบางแฟ้ม และวิธีการที่จะควบคุมโปรแกรมที่ใช้เป็น web server ด้วย อย่างไรก็ตาม จะได้กล่าวถึงข้อมูลพื้นฐานที่ควรจะทราบก่อนไว้ด้วย
ซอฟต์แวร์ ที่ใช้สำหรับ web server ในลีนุกซ์บูรพา ที่ติดตั้งจาก BLCD2 นี้คือ Apache HTTP Server รุ่น 1.3 โดยหลังจากที่ท่านทำการติดตั้งระบบแล้ว จะมีคู่มือการใช้งานที่สมบูรณ์พร้อมอยู่บน server นั้น ในกรณีที่ท่านต้องการรายละเอียดเพิ่มเติม สามารถเรียกดูได้ ณ ที่นั้น ในบทความนี้จะกล่าวถึงเฉพาะที่จำเป็นเท่านั้น
ในลำดับแรกจะขอแนะนำให้รู้จักกับแฟ้ม /etc/rc.d/rc.httpd ซึ่งเป็นแฟ้มที่บรรจุข้อมูล เกี่ยวกับการควบคุม Apache Web Server เมื่อเริ่มต้นระบบใหม่ โดยปกติแล้วจะมี content ดังนี้
/usr/local/apache/bin/apachectl start
จะเห็นได้ว่าเป็นการเรียกใช้คำสั่งเพื่อที่จะเริ่มต้นการทำงานของ Apache server โดยยังมี parameters ของการใช้คำสั่ง apachectl อื่นๆ อีกได้แก่ stop, restart, fullstatus, status, graceful, configtest และ help โดย root จะต้องเป็นผู้รันคำสั่งนี้ จึงจะบรรลุผล เช่น หากต้องการงดการให้บริการ web ชั่วคราว root จะต้องเรียกใช้คำสั่ง /usr/local/apache/bin/apachectl stop เป็นต้น
นอกจากนั้น Apache ยังมี directory ของตนเองอยู่ที่ /usr/local/apache ภายในยังประกอบไปด้วย directories ต่างๆ ได้แก่ bin, conf, icons, libexec, man, cgi-bin, htdocs, include, logs และ proxy โดย cgi-bin จะเป็นที่สำหรับเก็บโปรแกรม CGI ของระบบดังได้กล่าวถึงไว้ก่อนหน้านี้
ภายใน /usr/local/apache/htdocs เป็นที่สำหรับเก็บ web pages ของระบบ ซึ่งรวมถึง index.html ที่ใช้เป็นแฟ้มเริ่มต้น เมื่อมีการเรียกใช้บริการจาก server อย่างไรก็ตามค่า default ของลีนุกซ์บูรพา อนุญาตให้ผู้ใช้ทั่วไป สร้าง web pages ของตนเองที่ home directory ภายใต้ sub-directory ชื่อ public_html ได้อยู่แล้ว ที่ไม่ได้กำหนดอนุญาตไว้ในค่า default คือสิทธิที่จะรันโปรแกรม CGI ภายใต้ home directory ของตนเอง กรณีนี้จะต้องเข้าไปแก้ไขแฟ้มใน /usr/local/apache/conf ซึ่งจะประกอบด้วย sub-directories ที่เกี่ยวข้องกับโครงสร้างต่างๆ เช่น access.conf , srm.conf, httpd.conf และ mime.types เป็นต้น หลายแฟ้มก็มีไว้เพื่อเพียงให้ compatible กับ Apache ในรุ่นก่อนๆ ในรุ่นใหม่นี้ เราสามารถควบคุมโครงสร้างได้จากแฟ้ม /usr/local/apache/conf/httpd.conf เพียงแฟ้มเดียว
ภายในแฟ้มจะเป็นข้อความอธิบายโครงสร้างของ Apache และคำสั่งที่ใช้ควบคุม Apache หรือที่เรียกว่า Apache Directives ท่านที่ต้องการศึกษาในรายละเอียดสามารถศึกษาได้จาก http://localhost/manual/mod/directives.html ในบทความนี้จะกล่าวถึงเฉพาะส่วนที่เกี่ยวข้องเท่านั้น
ในลำดับนี้จะขอแนะนำให้รู้จักกับ AddHandler directive ซึ่งมีหน้าที่ที่จะ maps เอาส่วนขยายของชื่อแฟ้ม เข้ากับ handler-name ของ Apache ในกรณีของเรานี้ เรามีความต้องการที่จะ maps ให้ส่วนขยายของชื่อแฟ้มที่เป็นโปรแกรม CGI คือ .cgi เข้ากับ handler-name ชื่อ cgi-script โดยจะต้องเรียกใช้ directive นี้ในรูปแบบดังนี้
AddHandler cgi-script cgi โดยหากนำประโยดข้างบนนี้ไปไว้ในแฟ้ม srm.conf หรือ httpd.conf แล้ว ต่อไป Apache จะถือว่าแฟ้มที่มีส่วนขยายเป็น .cgi เป็นโปรแกรม CGI สำหรับในกรณีของเรา เราจะเลือกใช้ httpd.conf เพื่อการนี้
ในบาง directive มีลักษณะที่ต้องใช้คู่กันในลักษณะของ tag เปิด และ tag ปิด ดังเช่น และ ที่เราจะทำความเข้าใจในที่นี้ ซึ่ง directive ในลักษณะเช่นนี้ ใช้สำหรับครอบ directives อื่นๆ ไว้ภายในได้อีก ในกรณีของ / นี้ ใช้เพื่อกำหนดคุณสมบัติต่าง ๆ เกี่ยวกับ directory ที่ระบุ ดังจะเห็นได้จากตัวอย่างต่อไปนี้

……

ในกรณีนี้เป็นการกำหนดให้ใช้เครื่องหมาย “~” แทน sub-directory ชื่อ public_html ภายใน home directory ของผู้ใช้ และถ้าหากในระหว่าง tag เปิดและปิดของ directive นี้ มี directives อื่นๆ ก็จะเป็นการกำหนดคุณสมบัติให้กับ directory ที่กำหนดไว้นั้นด้วย
มี directive สำคัญหนึ่งคือ Options directive ใช้สำหรับกำหนดคุณสมบัติให้กับ directory ที่กำหนด ซึ่ง parameters ของ Options มีได้หลากหลาย ได้แก่ All, ExecCGI, FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch ทั้งนี้หากท่านสนใจในรายละเอียด สามารถขอดูได้ที่ http://localhost/manual/mod/core.html#options ในที่นี้จะให้ความสนใจที่ ExecCGI ซึ่งหากนำไปกำหนดไว้ใน directory ใด ก็จะมีความหมายว่า จะอนุญาตให้มีการ execute โปรแกรม CGI ภายใน directory นั้นๆ
ในกรณี เราต้องการให้มีการ execute โปรแกรม CGI ภายใน sub-directory ชื่อ public_html ภายใน home directory ของผู้ใช้ ซึ่งกำหนดให้ใช้แทนด้วยเครื่องหมาย “~” ดังนั้นจึงต้องมีการเพิ่ม parameter ExecCGI ของ Options ณ directory ที่ต้องการให้มีการ execute โปรแกรม CGI
และสำหรับโปรแกรม CGI นั้น เราจะกำหนดให้มีส่วนขยายของแฟ้มเป็น .cgi ในกรณีหลังนี้เราสามารถกระทำได้โดยการ uncomment เพื่อให้ directive AddHandler ทำงาน โดยจะกระทำที่แฟ้ม httpd.conf ดังนี้
#
# To use CGI scripts:
#
AddHandler cgi-script .cgi สำหรับในกรณีของการจัดการในเรื่องอนุญาตให้มีการ execute โปรแกรม CGI ใน home directory ของผู้ใช้นั้น โดย default แล้ว มีการใช้ directive เพื่อกำหนดใช้ directory ตามที่ต้องการอยู่แล้ว เพียงแต่ ใน directive Options นั้น ยังไม่ได้กำหนดให้มี ExecCGI ตามที่ต้องการให้เป็น ดังนั้น ท่านสามารถกระทำได้โดยการเพิ่ม parameter นี้เข้าไปในบรรทัดของ directive Options ดังนี้

AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI

Order allow,deny
Allow from all


Order deny,allow
Deny from all



อยากอ่านอีกใช่มั๊ย ...
เชิญเลยที่นี่ ...

http://wiki.nectec.or.th/ntl/Main/Apache-doc

และที่นี่ครับ
http://www.msit.mut.ac.th/newweb/phpfile/show.php?Qid=765


วันพุธที่ 9 กรกฎาคม พ.ศ. 2551

แบบฝึกหัด MySQL เพิ่มเติม พร้อมเฉลย

/***** แบบฝึกหัดเพิ่มเติม ********/
เปิดเว็บต่อไปนี้ เพื่อประกอบการทำแบบฝึกหัด
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_extract
1. ขอทราบจำนวนวัน ที่อยู่ระหว่าง start ถึง expired ของบัตรทุกใบในตาราง card

select to_days(expired) - to_days(start) from card

2. ขอทราบจำนวนบัตรที่หมดอายุว่ามีทั้งหมดกี่ใบ ในตาราง card

select count(*) from card where ((to_days(curdate()) - to_days(expired)) >= 0)

3. ต้องการปรับปรุงค่า start และ expired ของบัตรทุกใบในตาราง card ดังนี้ start = expired + 1 วัน expired = expired + 1 ปี

update card set start=from_days(to_days(expired + interval 1 day)), expired=from_days(to_days(expired + interval 1 year))

4. ยังคิดไม่ออก .... !!!!!!!!