วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2552

การทำ Relationship Mapping ใน LDAP

บทความนี้ต่อเนื่องจาก ทำความเข้าใจ LDAP (แบบย่อๆ)
เนื่องจากโครงสร้างของ LDAP เป็น tree ไม่ใช้ table อย่าง RDBMS ปัญหาที่ตามมาคือจะใช้ LDAP เก็บข้อมูลที่มีความสัมพันธ์กันอย่างไร

การแม็พความสัมพันธ์มีหลายวิธีเช่น
1. Relations by DN
2. Relations by Attribute
3. Relations by Hierarchy
ในบทความนี้จะอธิบายแบบ Relations by DN ซึ่งเป็นวิธีที่ยืดหยุ่นและพบว่าใช้กันมาก

ต้องขอบคุณเอกสารจาก DataNucleus ที่ทำให้เข้าใจโครงสร้างข้อมูลของ LDAP สำหรับการนำไปใช้งาน

วันศุกร์ที่ 28 สิงหาคม พ.ศ. 2552

Narisa Tach Talk7 (#NTT7)

พรุ่งนี้เตรียมตื่นแต่เช้าไปงาน #NTT7
หลังจากงาน NJUG ซึ่งก็ผ่านมานาน มาครั้งนี้ค่อนข้างจะเป็นงานใหญ่เลยแหละ ได้ไปพบปะกับพี่ๆ(ตัวเป็นๆ อิๆๆ)
รายละเอียดของงาน Narisa Tech Talk 7.08.29
น่าติดตามทุก Session เลย
- Development process อย่าง Agile, TDD ของพี่ข้าวโพดหวาน อยากดูโปรเซส เทคนิคและเครื่องมือที่นำใช้
- Apache CouchDB ของพี่ @roofimon ดูสิว่ามันคืออะไรทำไมพี่รูฟจึงเปลี่ยนจาก TDD มาเป็น CouchDB ได้มันมีอะไรดีกัน
- DemoFest ช่วงดูโชดู ติดตาม OFBiz Framework มันง่ายขนาดไหน ตั้งแต่พี่ Sand เอามาโชในงาน NJUG ครั้งที่แล้วก็ยังไม่ได้แตะเลย
- Theory of constraint ของพี่ @pphetra พี่ป๊อกมาแนว workshop น่าจะทำให้เข้าใจได้ง่ายขึ้น
- Seam ตะเข็บยัก 555 เห็น @dean4j ละเชียร์จังเลย ถ้ามันแจ๋วได้เอามาใช้ร่วมกับ Spring เดี๋ยวเตรียมคำถามไปคอยถามดีกว่าเรื่อง conversation scope นี่แหละ
- Build and run many LOB applications on a single platform with xRM ชื่อยาวจริงๆของพี่ฟูเกียรติ ไม่รู้ว่าคืออะไรเลยลองหานิยามมันซักหน่อย
XRM is an application platform layer that accelerates the development of relational Line-of-Business applications and drives business results through an optimised infrastructure on the Microsoft Application Platform.
มันจะเหมือน OFBiz Framework รึเปล่าน้า

เตรียมเคลียร์หัวให้ว่างแล้วเจอกันพรุ่งนี้คับ

วันเสาร์ที่ 22 สิงหาคม พ.ศ. 2552

แก้ปัญหา HD ง่ายๆด้วย e2fsck

อธิบาย system ที่ใช้อยู่ซักหน่อย
- Ubuntu 9.04
- โปรแกรม Azureus
- External HD ใช้ file system เป็น EXT3

เปิด Azureus โหลดอยู่ดีๆ มีข้อความแจ้งมาประมาณว่าหาข้อมูลในตำแหน่งนั้นไม่พบ เลยเปิดเข้าไปดูในโฟลเดอร์ที่โหลดไฟล์หน่อยสิ
อ้าวเฮ้ยไม่มีไฟล์อยู่จริงด้วย งั้นลองปิดให้ HD ได้พักสักหน่อย เปิดขึ้นมาร้องจ๊ากเลย เป็นอีกแล้วหรอ mount partition ไม่ได้
ก่อนหน้านี้ก็เคยเป็นไปใช้โปรแกรมกู้ข้อมูล กู้เอาเสียเวลาม๊ากกก แถมต้องมี HD อีกตัวมาเก็บข้อมูลที่กู้ด้วย รอบนี้จำไม่ได้ด้วยว่าเคยกู้มายังไงจำได้ว่าใช้โปรแกรมบน windows กู้เอา
รอบนี้ขี้เกียจ ไหนๆก็ไหนๆแล้วอ่านข้อความที่เมื่อพยายาม mount HD ผ่าน nautilus ดูหน่อย มันบอก block error อะไรสักอย่าง รายละเอียดให้ไปอ่าน message จาก kernal โดยใช้คำสั่ง
#dmesg | tail

สิ่งที่พบคือ
[ 65.273067] EXT3-fs warning: mounting fs with errors, running e2fsck is recommended
[ 65.273406] EXT3 FS on sdb5, internal journal

หาข้อมูลสักหน่อยก็ลุยด้วยคำสั่ง
#sudo e2fsck -C0 -f -v /dev/sdb1

นั่งรอไปสักครึ่งชั่วโมง อ้อลืมใส่ -y นั่งตอบ yes ไปเรื่อยๆด้วย(เมื่อยเลย) ตอนแรกใช้ -p ให้มันกู้แบบอัตโนมัติให้แต่มันบอกให้รัน manual แทน ==" เลยลืมใส่ -y เลย

ปรากฎว่า e2fsck แก้ไข ข้อมูลที่ผิดพลาดได้เรียบร้อยดี

คติเตือนใจ อ่านคำแนะนำของระบบด้วย ถึงแม้ว่าในหลายๆครั้งจะอ่านไม่รู้เรื่อง แต่บางครั้งมันมีประโยชน์(จริงๆนะ)
EXT3 สุดยอดดด

วันจันทร์ที่ 17 สิงหาคม พ.ศ. 2552

ทำความเข้าใจ LDAP (แบบย่อๆ)

โน๊ตย่อๆเกี่ยวกับ LDAP เพื่อความเข้าใจเบื้องต้น เป้าหมายอยู่ที่ SSO (Single Sign On) ถ้าไม่ขี้เกียจไปซ่ะก่อน

LDAP (Lightweight Directory Access Protocol) เก็บข้อมูลโดยมีโครงสร้าง คล้ายๆ ต้นไม้(Tree) โดยแต่ละโนด(Node) เรียกว่า เอ็นทรี(Entry) แต่ละ Entry จะมี DN(Distinguished Name) หรือก็คือชื่อที่ใช้ระบุ Entry


โดย Entry ลูก ที่อยู่ใต้ Entry แม่ จะมี DN ของ Entry แม่ เป็น Suffix Entry นั้น ดังภาพ (รูปจาก SUN ไม่ค่อยชัดเพ่งๆเอาหน่อย)

รายละเอียด Entry จะประกอบด้วย objectClass และ Attribute ต่างๆ
- objectClass ใช้บอกรายละเอียดชนิดของ Entry ซึ่ง Object Class นี้เองที่สามารถบอกว่า Entry มี Attribute อะไรได้บ้าง
- Attribute เทียบได้กับ property ของ Object ในภาษา OO ทั่วไป มักใช้ตัวย่อ ตัวอย่างของ Attribute เช่น uid = User id, cn = Common Name, sn = Surname ฯลฯ
รายละเอียดชนิดของ Obejct Class, Attribute type ถูกกำหนดโดยสิ่งที่เรียกว่า Schema ซึ่งมีมาตราฐานตาม RFC2247 และ RFC2256 ตามลำดับ Schema ไม่ได้เพียงแต่กำหนด Object Class และ Attribute type เท่านั้น ยังมีกำหนดอย่างอื่นอีกเพียบ Attribute Syntaxes, Matching Rules, Matching Rule Uses, Attribute Types, Object Classes, Name Forms, Content Rules และ Structure Rule

ตัวอย่าง Entry ในรูปแบบ LDIF(LDAP Data Interchange Format)
dn: cn=John Doe,dc=example,dc=com
cn: John Doe
givenName: John
sn: Doe
telephoneNumber: +1 888 555 6789
telephoneNumber: +1 888 555 1232
mail: john@example.com
manager: cn=Barbara Doe,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top


ถ้า Directory Service ใช้เก็บและแชร์ข้อมูล คล้ายสมุดหน้าเหลือง แล้วมันจะต่างอะไรกับ Database ลองอ่านดูจากลิงค์ ได้มีเปรียบเทียบไว้

Directory Service มักจะเป็นส่วนประกอบหลักในการออกแบบระบบรักษาความปลอดภัย เนื่องจาก admin สามารถคุมการเข้าถึงทรัพยากรต่างๆในระบบได้ โดยใช้ Directory Service นี้เป็นศูยน์กลางในการเซ็ตข้อมูลต่างๆของผู้ใช้งาน สิทธิ์การเข้าถึงทรัพยากรต่างๆ สาเหตุหนึ่งเนื่องจากโครงสร้างของ Directory Service ที่สามารถเข้าถึงข้อมูลได้อย่างรวดเร็ว ทำให้เหมาะกับการเป็นศูยน์กลาง การเข้าถึงเพื่อดึงข้อมูลต่างๆหรือเพื่อทำ access control ผู้ใช้จากแอฟพริเคชั่นต่างๆในปริมาณสูงได้