CSS and Preformatted

ผมลองค้นหา CSS ที่ใช้ร่วมกับ <pre> tag เพื่อนำมาใช้แสดงโค้ดของโปรแกรม ก็บังเอิญได้พบ CSS ที่ใช้แสดงผลดังนี้

.phpcode, pre {
  overflow: auto;
  padding-left: 15px;
  padding-right: 15px;
  font-size: 11px;
  line-height: 15px;
  margin-top: 10px;
  width: 93%;
  display: block;
  background-color: #eeeeee;
  color: #000000;
  max-height: 300px;
}

เราสามารถกำหนด white-space: pre; ให้กับแต่ละ element ได้เช่นกัน ดังตัวอย่างต่อไปนี้

.preElement{
  white-space: pre;
  font-weight: bold;
  color: navy;
  font-family: arial;
}

และสามารถกำหนดฟอนต์ให้กับ <pre> แท็กดังนี้

pre{
  font-weight: bold;
  color: navy;
  font-family: arial;
}

PEAR::Auth package

PEAR  มีแพ็คเกจที่ชื่อว่า  Auth  ซึ่งช่วยอำนวยความสะดวกในการสร้างระบบตรวจสอบสิทธิ์ผู้ใช้ (authentication) โดยช่วยอำนวยความสะดวกตั้งแต่ การเพิ่มและลบผู้ใช้ การล็อกอิน การนำข้อมูลผู้ใช้มาแสดง การกำหนดระยะเวลาการล็อกอินและ Idle timeout และการตรวจสอบสิทธิ์ผู้ใช้งาน  ทำให้ช่วยลดเวลาในการพัฒนาโปรแกรมลงได้มาก 

สิ่งที่สำคัญคือ Auth รองรับระบบจัดเก็บข้อมูลของผู้ใช้หลากหลายประเภท ได้แก่

  • All databases supported by the PEAR database layer
  • All databases supported by the MDB database layer
  • All databases supported by the MDB2 database layer
  • Plaintext files
  • LDAP servers
  • POP3 servers
  • IMAP servers
  • vpopmail accounts (Using either PECL vpopmail or PEAR Net_Vpopmaild)
  • RADIUS
  • SAMBA password files
  • SOAP (Using either PEAR SOAP package or PHP5 SOAP extension)
  • PEAR website
  • Kerberos V servers
  • SAP servers

น้อมรำลึกถึงพระมหากรุณาธิคุณ สมเด็จพระเจ้าพี่นางเธอ เจ้าฟ้ากัลยาณิวัฒนา กรมหลวงนราธิวาสราชนครินทร์

hrh.jpg

ร่วมลงนามน้อมรำลึกถึงพระมหากรุณาธิคุณ

ข่าวที่ควรทราบ

ส.ค.ส. ๒๕๕๑ พระราชทานจากพระบาทสมเด็จพระเจ้าอยู่หัว

kingcard2551.jpg

พระราชดำรัสพระบาทสมเด็จพระเจ้าอยู่หัว
พระราชทานแก่ปวงชนชาวไทยเนื่องใน
โอกาสวันขึ้นปีใหม่ พ.ศ.๒๕๕๑

(Video)

ประชาชนชาวไทยทั้งหลาย บัดนี้ ถึงวาระจะขึ้นปีใหม่ พุทธศักราช ๒๕๕๑ แล้ว ข้าพเจ้าขอส่งความปรารถนาดี มาอวยพร แก่ท่านทุกๆ คน และขอขอบใจท่านเป็นอย่างมาก ในน้ำใจไมตรี ที่ทุกคน ทุกฝ่ายแสดงให้เห็น ทั้งในคราวที่เจ็บป่วย และในการจัดงานวันเกิดครบ ๘๐ ปี รวมทั้งได้แสดงความวิตกห่วงใยอย่างจริงใจ ในการเจ็บป่วยของพี่สาวข้าพเจ้า

สถานการณ์ของบ้านเมืองเราจากปีก่อน และต่อเนื่องมาถึงปีที่แล้ว เป็นอย่างไรก็เป็นที่ทราบกันอยู่แก่ใจ แต่อย่างไรก็ตาม เราได้มีรัฐธรรมนูญ และได้มีการเลือกตั้งสมาชิกสภาผู้แทนราษฎรแล้ว นับว่าประเทศชาติของเรา ได้ผ่านหัวเลี้ยวสำคัญอีกขั้นหนึ่ง จึงเป็นหน้าที่ของเราทุกคน ที่จะต้องช่วยกันประคับประคอง กิจการของบ้านเมือง ให้ดำเนินไปด้วยดี ให้มีความเป็นปึกแผ่น และร่มเย็นเป็นปกติสุข

ทางที่เราจะช่วยกันได้ ก็คือการทำความคิดให้ถูกตรง และแน่วแน่ ในอันที่จะยึดถือชาติบ้านเมืองเป็นที่หมาย แต่ละคน แต่ละฝ่าย จะต้องเพลาการคิดถึงประโยชน์เฉพาะตัว พยายามโอนอ่อนผ่อนปรนเข้าหากัน ด้วยไมตรีจิตและความเมตตากรุณา อย่าก่อปัญหา และก่อเงื่อนไข อันเป็นเหตุให้เกิดความไม่สงบ และความแตกแยก

ผู้ใดมีภาระหน้าที่อันใด ก็เร่งกระทำให้สำเร็จ ลุล่วงไป ให้ทันการณ์ ทันเวลา ผลงานของทุกคน ทุกฝ่าย จะได้ประกอบส่งเสริมกัน ให้ประเทศชาติ อันเป็นที่อยู่ ที่อาศัยของเรา ดำรงมั่นคงอยู่ ด้วยความผาสุข ร่มเย็น ตลอดไป

ขออานุภาพแห่งคุณพระศรีรัตนตรัย และสิ่งศักดิ์สิทธื์ที่ชาวไทยเคารพบูชา จงคุ้มครอง รักษา ให้ปราศจากทุกข์ ปราศจากภัย ให้มีความสุขสบาย สุขใจ และประสบแต่สิ่งที่พึงประสงค์ ตลอดศกหน้านี้โดยทั่วกัน

ภาพ ส.ค.ส. พระราชทานย้อนหลังทั้งหมด

blackhole.securitysage.com is down?

ผมใช้ blackhole.securitysage.com เป็น RHSBL (right hand side blacklist)  ในการบล็อกสแปมเมล  แต่วันนี้ดูใน log file แล้วพบว่า มี error ขึ้นมา  เลยลองค้นดูในเน็ตก็พบว่า  ดูเหมือนจะมีปัญหาเกี่ยวกับ DNS    เห็นท่าจะต้องเลิกใช้ชั่วคราวก่อน

ที่มา: Status of blackhole.securitysage.com: DOWN?

การย้าย Mailman และปรับแต่งให้รองรับภาษาไทย

Mailman เป็น mailing list ที่มีระบบบริหารจัดการสมาชิกผ่านทางเว็บเพจ  ระบบตรวจสอบอีเมลเข้ามาใน list  ระบบ archive และอื่นๆ อีกมากมาย  (อ่านเพิ่มเติมที่นี่)  

วิธีการติดตั้งเองมีความยุ่งยากในระดับหนึ่ง เพราะต้องวุ่นวายกับสิทธิ์การเข้าถึงไฟล์ต่างๆ  แต่ผู้พัฒนาได้เขียนวิธีการติดตั้งไว้ค่อนข้างละเอียด  เพียงทำตามไปทีละขั้นตอนก็สามารถติดตั้งใช้งานได้

สำหรับเรื่องภาษาไทยนั้น  ก่อนหน้านี้ในเวอร์ชัน 2.1.x จะไม่สามารถส่งภาษาไทยได้  เพราะเมื่อส่งอีเมลที่มีภาษาไทยปนอยู่ด้วยแล้ว  อีเมลนั้นจะหายเงียบไปเลย  แต่ในเวอร์ชัน 2.1.9 ขณะที่เขียนเรื่องนี้สามารถส่งอีเมลเป็นภาษาไทยได้แล้ว

สำหรับโจทย์ที่ผมเจอก็คือ ผมจำเป็นต้องย้าย mailig list ไปไว้ที่เซิร์ฟเวอร์เครื่องใหม่  ซึ่งวิธีการที่ผมดำเนินการมีดังนี้

  1. ติดตั้ง Mailman ในเซิร์ฟเวอร์ใหม่ตามปกติ  พร้อมทดสอบว่าใช้งานได้จริง
    ผมใช้คำสั่ง configuration ดังนี้

    ./configure --prefix=/home/mailman 
    --with-mail-gid=mailman 
    --with-cgi-gid=apache 
    --with-mailhost=hostname.com 
    --with-urlhost=hostname.com
  2. ทำการคัดลอกไฟล์และไดเรอทอรีทั้งหมด ที่อยู่ในไดเรกทอรี archives, data และ list จากเซิร์ฟเวอร์เก่า มายังเซิร์ฟเวอร์เครื่องใหม่
  3. คัดลอก custom configuration ภายในไฟล์ mm_cfg.py มาไว้ที่เครื่องใหม่
  4. ทดสอบเรียกใช้งาน mailman 

สำหรับวิธีการเพิ่มภาษาไทยนั้น จำเป็นจะต้องแก้ไขไฟล์ Defaults.py  โดยให้เพิ่มบรรทัดต่อไปนี้ ที่กลุ่มคำสั่งเพิ่มภาษาต่างๆ  ซึ่งจะอยู่ที่บริเวณท้ายสุดของไฟล์

add_language('th',    _('Thai'),    'tis-620')

หรือจะใช้ utf-8 แทน tis-620 ก็น่าจะได้เช่นกัน  และในไฟล์ mm_cfg.py ให้เพิ่มบรรทัดต่อไปนี้ด้วย

DEFAULT_CHARSET = 'tis-620'
VERBATIM_ENCODING = ['tis-620']
DEFAULT_SERVER_LANGUAGE = 'th'

เท่านี้ก็จะมี option ภาษาไทยให้เลือกใช้ในส่วนของ Language option ครับ

vsftpd and mirror server

วันนี้ผมได้ทำ mirror server โดยใช้ vsftpd (http://vsftpd.beasts.org/)  และ Emirror (http://sourceforge.net/projects/emirror/)  

วิธีการติดตั้ง vsftpd สามารถดูได้ที่นี่ http://rd.cc.psu.ac.th/content/view/20/46/

ไฟล์ /etc/vsftpd.conf มีสิ่งที่อาจต้องเพิ่มเติมคือ

# เพื่อเปลี่ยนโฮมของ ftp จาก /var/ftp ไปที่ /home/ftp  และควรแก้ home ของ ftp user ให้เป็นที่ /home/ftp ด้วย

anon_root=/home/ftp

# กำหนดจำนวน clients สูงสุดที่เข้าใช้งานได้

max_clients=50

# กำหนดจำนวน concurrent session ต่อ IP address

max_per_ip=4

# สร้าง banner ที่เมื่อ user login จะเห็นข้อความในไฟล์นี้

banner_file=/etc/vsftpd/banner_file 

หรือต้องการให้มีข้อความส่งถึงผู้ใช้ในแต่ละไดเรกทอรี  สามารถทำโดยสร้างไฟล์ .message  แต่ต้องเปิด option นี้ด้วย

dirmessage_enable=YES
 Continue reading vsftpd and mirror server

อัลบั้มภาพ ๘๐ ปีเฉลิมพระเกียรติและประมวลภาพพระราชพิธีมหามงคล เฉลิมพระชนมพรรษา ๘๐ พรรษา

ชมภาพจากอัลบั้มภาพ ๘๐ ปีเฉลิมพระเกียรติ และประมวลภาพพระราชพิธีมหามงคล เฉลิมพระชนมพรรษา ๘๐ พรรษา จากสำนักพระราชวัง
Server 1 | Server 2 | Server 3 | Server 4

ดาวน์โหลดอัลบั้มภาพ

  • สำหรับการพิมพ์ (239.6 MB) (pdf)
    Server 1 | Server 2 | Server 3 | Server 4 | Server 5 | Bit Torrent Server
  • สำหรับดูบนคอมพิวเตอร์ (249.1 MB) (interactive e-book)
    Server 1 | Server 2 | Server 3 | Server 4 | Server 5 | Bit Torrent Server
  • สำหรับดูโดยใช้เครื่องเล่น DVD (1.45 GB) (DVD movie)
    Server 1 | Server 2 | Server 3 | Server 4 | Server 5 | Bit Torrent Server
  • ที่มา: http://kanchanapisek.or.th/

    พระราชดำรัสพระบาทสมเด็จพระเจ้าอยู่หัว

    ๔ ธันวาคม ๒๕๕๐ – พระราชดำรัสพระบาทสมเด็จพระเจ้าอยู่หัว เนื่องในโอกาสวันคล้ายวันพระราชสมภพ ๕ ธันวาคม พ.ศ. ๒๕๕๐
    Video version | Audio version | Text version

    ที่มา: http://kanchanapisek.or.th/

    ทำ RSS ใช้เองง่ายๆ

    RSS is a family of Web feed formats used to publish frequently updated content such as blog entries, news headlines or podcasts. An RSS document, which is called a “feed,” “web feed,” or “channel,” contains either a summary of content from an associated web site or the full text. RSS makes it possible for people to keep up with their favorite web sites in an automated manner that’s easier than checking them manually.Source: http://en.wikipedia.org/wiki/RSS_(file_format)

    สำหรับคำนิยามภาษาไทย เลือกอ่านได้ตามใจที่ Google ครับ  ส่วนหากต้องการทราบรายละเอียดดูได้ที่  RSS 2.0 specification และสามารถดูตัวอย่างของ RSS 2.0 ได้ครับ

    หากเราต้องการทำ RSS ขึ้นมาเองก็จะต้องทำตาม Specification ข้างต้นได้ครับ  แต่หากไม่ต้องการใช้เวลามาก ก็ใช้ฟังก์ชันที่มีคนทำไว้แล้วชื่อ FeedCreator  เราเพียงแต่เตรียมข้อมูลไว้ให้พร้อม   ข้อมูลส่วนแรกจะเป็นส่วนที่อธิบาย feed ของเรา

    title คือ ชื่อ RSS ที่เราต้องการ  description เป็นคำอธิบายเกี่ยวกับ feed ของเรา  และ link คือ URL ของเว็บเพจเรา

    ส่วนที่สำคัญก็คือการใส่ข้อมูลข่าวต่างๆ ลงไปใน item ต่างๆ  ตัวอย่างข้างล่างนี้เป็นการดึงข้อมูลจากฐานข้อมูล และนำไปใส่ใน feed โดยตรง

    title ในที่นี้คือ ชื่อของข่าว  link เป็น url ของข่าว  description เป็นคำสรุปสั้นๆ เกี่ยวกับเนื้อข่าว  date เป็นวันที่ของข่าว  (ซึ่งจะต้องเป็นไปตามรูปแบบที่กำหนด เช่น Sun, 19 May 2002 15:21:36 GMT

    ส่วน source และ author ก็คือแหล่งที่มาของข่าว และผู้เขียนข่าวตามลำดับ  และขั้นตอนสุดท้ายที่สำคัญได้แก่การบันทึกผลลัพธ์ที่ได้ลงเป็นไฟล์ เช่น feed.xml  คำสั่งข้างล่างนี้จะบันทึกผลลัพธ์ลงเป็นไฟล์ พร้อมกับแสดงผลออกมาทางหน้าจอให้เราดูด้วย

    แต่ในการทำงานจริง เราต้องการให้สคริปต์ทำงานเพื่อสร้างไฟล์ feed.xml โดยไม่ต้องแสดงผลลัพธ์ออกมาทางหน้าจอ จึงต้องใส่คำสั่งเพิ่มเติมเข้าไปด้วยดังนี้

    จากตัวอย่างนี้หากทุกอย่างทำงานเรียบร้อย  เราก็สามารถเรียกไฟล์ feed ซึ่งเป็นผลลัพธ์จากสคริปต์ของเราได้ เช่น http://my.diary.in.th/news/feed.xml  และเพื่อให้สคริปต์สร้างไฟล์ feed ให้เราอัตโนมัติ  ก็ควรจะสั่งให้สคริปต์ทำงานผ่านทาง crontab

    อย่างไรก็ตามหากต้องการตรวจสอบว่า RSS ของเราที่สร้างมานั้นถูกต้องเพียงใด ก็สามารถตรวจสอบผ่านทาง  FEED Validator ได้ครับ

    หากต้องการทำให้ feed ของเราใช้งานได้ดีมากขึ้น ก็สามารถใช้บริการของ FeedBurner (http://www.feedburner.com) ซึ่งเพิ่งจะถูกซื้อโดย Google ด้วยราคา 100 ล้านเหรียญ   และดูเหมือนจะทำให้บริการของ FeedBurner เป็นของฟรีไปแล้ว

    บริการของ FeedBurner จะทำหน้าที่เป็นผู้กระจาย feed แทนเซิร์ฟเวอร์ของเราโดยตรง  นอกจากนี้ยังมี option ที่เกี่ยวช่วยให้ feed ของเราสมบูรณ์มากขึ้น เช่น สามารถเลือกปรับเปลี่ยนจาก RSS เป็น Atom ได้ตาม โปรแกรมที่เข้ามาดึงข่าว   สิ่งที่สำคัญอีกประการหนึ่งก็ feedBurner มีระบบสถิติที่ทำให้เรารู้ว่ามีผู้สมัครเป็นสมาชิกของ feed เรามากน้อยขนาดไหนด้วยครับ