Software และความสำคัญของผู้ใช้งาน
สิ่งที่สำคัญอันหนึ่งที่หลายๆ คนควรให้ความสนใจเป็นอย่างมากในการพัฒนา Software คือ Software ต้องการผู้ใช้งาน ตัวอย่างเช่น Microsoft ทำผู้ใช้งานให้เกิดก่อนโดยใช้ความสวยงามเป็นตัวดึงดูด จากนั้นค่อย ๆ เพิ่มความรู้เข้าไปทีละน้อย ค่อยๆ เป็น ค่อยๆ ไป เมื่อได้จำนวนผู้ใช้งานระดับหนึ่งแล้ว การใส่สิ่งใหม่ๆ ไปให้ลองนั้นเป็นเรื่องง่ายมาก ลองดูอันนี้ครับ
1. MS DOS
2. WIN3.11
3. Win98
4. Internet Explorer
5. Hotmail
6. Window Media Player
7. MSN
จะเห็นว่า การที่ Microsoft ประสบความสำเร็จนั้นไม่ได้อยู่ที่ตัว Software แต่อย่างใด สิ่งที่ทำให้ Microsoft ประสบความสำเร็จนั้นคือ จำนวนผู้ใช้งานที่พร้อมจะลองใช้งานต่างหาก
สรุป Software เป็นสิ่งที่ทำมาเพื่อให้มีผู้ใช้งาน การพัฒนา Application จะดีเพียงใด ถูกใจ Programmer มากขนาดไหน ถ้าไม่มีุผู้ใช้ังานเลย Software ก็จะไม่เกิดประโยชน์
readline กับ PostgreSQL บน AIX 5.2
บางอย่างที่คิดว่าทำำสำเร็จแล้ว นั้นไม่ใช่ว่าจะใช้งานได้เสมอไป… ตัวอย่างเช่น
วันก่อนลอง Compile DBMS PostgreSQL ใหม่บนเครื่อง AIX 5.2 ด้วย option ดังต่อไปนี้
./configure --prefix=<Destination> \
--without-docdir \
--without-tcl \
--with-openssl \
--with-zlib
gmake
gmake install
แต่พอลอง initdb ดู มันไม่สำเร็จแฮะ ดังนั้นจึงจำเป็นต้อง –without-readline ดูอีกที
จึงเข้าใจว่ามันเป็น BUG ของ PostgreSQL เอง (ต้องอ่าน FAQ_AIX)
สรุปเลยต้อง Compile 2 ครั้งโดยแยกตัวทำ initdb และ ตัวใช้งานออกจากกัน
Cathedral and Bazaar, มหาวิหารกับตลาดสด
ครั้งก่อนอาจารย์ได้ให้หนังสือเล่มหนึ่งชือว่า Cathedral and Bazaar ด้วยหน้าปกที่ดูเหมือนหนังสือทางศาสนา ผมจึงไม่ได้สนใจก็เลยปล่อยผ่านเลยไป ผ่านมา1 ปี ได้มาอ่านภาคภาษาไทย โอ้ย… ทำไมไม่่อ่านตั้งแต่ตอนนั้นนะเนี่ย….
ติดตั้ง Apache, Php, PostgreSQL for AIX 5.2
สร้าง Database เพื่อให้ใช้การเรียงลำดับ ภาษาไทยได้
PostgreSQL สามารถเรียงลำดับข้อมูลจากการ query ตามท้องถิ่น (locale) ได้ ดังนั้น จึงสามารถเรียงลำดับข้อมูลภาษาไทยได้ โดยอาศัยโลแคลไทยที่มีอยู่
หลักการก็คือ
- ต้องกำหนดโลแคล LC_CTYPE และ LC_COLLATE ขณะ initdb เท่านั้น โดย PostgreSQL จะบันทึกค่าโลแคลไว้ใน database และจะใช้ค่านี้ไปตลอด
- ต้องกำหนด encoding ที่เหมาะสมด้วย เช่น ถ้าใช้โลแคล th_TH.UTF-8 ก็ต้องใช้ UNICODE encoding ขณะ createdb หรือถ้าใช้โลแคล th_TH.TIS-620 ก็ต้องใช้ WIN874 (การ createdb โดยไม่ระบุ encoding จะใช้ค่า default ที่กำหนดไว้ขณะ initdb)
ตัวอย่างเช่น ถ้าตัดสินใจว่าจะเก็บข้อมูลแบบ Unicode ก็สั่งเช่นนี้ขณะ initdb:
| โค้ด: |
| initdb –lc-ctype=th_TH.UTF-8 –lc-collate=th_TH.UTF-8 -E UNICODE -D {data-dir} |
หรือถ้าจะเก็บแบบ TIS-620 ก็สั่งแบบนี้:
| โค้ด: |
| initdb –lc-ctype=th_TH.TIS-620 –lc-collate=th_TH.TIS-620 -E WIN874 -D {data-dir} |
มีข้อสังเกตว่า
- ถ้าต้องการให้เรียงข้อมูลถูกต้อง ต้องใช้ encoding ที่เหมาะสมกับ locale ที่กำหนดไว้ขณะ initdb เสมอ ซึ่งหมายความว่าต้องใช้ encoding นั้นไปตลอด
- เมื่อกำหนดโลแคลขณะ initdb แล้ว ความสามารถที่เสียไปคือ จะใช้ LIKE pattern ไม่ได้
Insert Into … เยอะๆ
พักหลังๆ ผมมีประสบการณ์ในการนำข้อมูลจากฐานข้อมูลอีก DBMS เดิม ไปยัง DBMS ตัวใหม่ วิธีที่ดีที่สุดเท่าในขณะนี้ก็คือ ทำเป็น Script Insert (พวก Insert Into)
เมื่อก่อนถาม Google ว่ามีโปรแกรมอะไรช่วยได้บ้าง แต่พอลองใช้ดู ไม่มีตัวไหนประทับใจเลย แถมยังไม่สามารถทำงานได้กับจำนวน Record เยอะๆ ได้ดีด้วย
สุดท้ายก็เขียน Query ทำเป็น Insert Into ดู.
ถ้าเป็น Oracle run ด้วย SQLPLUS
sqlplus> @ <ชื่อไฟล์ที่ได้ทำ Script ไว้แล้ว>
แต่ถ้าลำคาญเรื่องที่ต้องมาใส่ตัวค่าตัวแปร (พวกที่มี & นำหน้า) ให้ใช้คำสั่งนี้เลย
sqlplus> SET DEFINE OFF
ถ้าเป็น PostgreSQL ก็ทำ
dbname# \i <Filename>
ปล. การทำแบบนี้จะนำข้อมูลขึ้นที่ DBMS ตัวใดก็ได้ครับ
เริ่มปฐมบท…
ครั้งแรก ๆ ที่ได้บันทึกข้อความช่วยเตือนความจำนั้น ผมก็เริ่มจาก falconspice.googlepages.com แต่ว่าพยายามใช้ google.com ค้นหาอย่างไรก็ไม่เจอข้อความตัวเองซักที เพราะบันทึกแต่ละอย่างนั้นมีประโยชน์ต่อผู้อื่นเหมือนกัน (คิดเอาเองนะ…) จึงได้มีโอกาสตัดสินใจเลือกที่จะย้ายออกจาก google
หามาหลายอันแล้ว ติดอยู่ที่ว่าเท่าที่ได้เห็นนั้นมักจะเกิดจากการที่ไปนำข้อมูลมาจากที่อื่นแล้วแปลเป็นภาษาไทย บ้างก็เป็น blog เกี่ยวกับคอมพิวเตอร์ ซึ่งคงจะจำกัดการ blog อยู่บางอย่างเท่านั้น
แล้วผมก็เริ่มเขียน สักที
ย้ายบ้านใหม่ มาที่นี่ WordPress
ได้ยินมานานแล้วเกี่ยวกับ WordPress แต่ว่าไม่รู้่ว่าอะไร
ลองดูดีกว่า
Hello world!
Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!
ให้ความเห็น
ให้ความเห็น
ให้ความเห็น