เขียนโปรแกรมด้วย PHP DOM เพื่อดึงข้อมูลจากไฟล์ HTML

ได้รับข้อมูลในรูปแบบไฟล์ HTML เพื่อให้ดึงค่าจากบางฟิลด์ (field) ออกมา ใช้ในการทำรายงาน

ในตอนแรกลองเขียนโปรแกรม PHP ขึ้นมาเอง โดยใช้ Regular Expression ทำไปซักพัก เริ่มยากขึ้น เหตุเพราะรูปแบบอันหลากหลายของไฟล์ HTML ไม่ว่าจะเป็นตัวอักษรพิมพ์ใหญ่เล็ก การเรียงลำดับ tag การเว้นวรรค

พบวิธีการดึงข้อมูลโดยใช้ PHP DOM ง่ายขึ้นเยอะ เลยนำมาแชร์เล่าสู่กันฟัง

Continue reading “เขียนโปรแกรมด้วย PHP DOM เพื่อดึงข้อมูลจากไฟล์ HTML”

ปรับหน้าเว็บเพจให้พอดีหน้าจอ iPhone

อยู่ในช่วงปรับเว็บเพจที่พัฒนาใช้งานบน PC ให้สามารถรันบน browser ใน มือถือได้ด้วย เลยต้องปรับแต่งหน้าจอเพื่อให้ผู้ใช้งานได้สะดวก

ในที่นี้ขอแชร์วิธีการเพิ่มขนาดเว็บเพจ เพื่อให้พอดีกับหน้าจอ Safari บน iPhone ด้วยการใช้ “viewport”

Continue reading “ปรับหน้าเว็บเพจให้พอดีหน้าจอ iPhone”

เก็บสำรองคอนฟิกของลีนุกซ์

เพื่อป้องกันกรณีเครื่องเซิร์ฟเวอร์อาจเกิดความเสียหายไม่ว่าจะเกิดจากเหตุอะไร แนะนำให้เก็บสำรองคอนฟิกไว้

ไฟล์คอนฟิกของลีนุกซ์เกือบทั้งหมด จะอยู่ในไดเร็คทอรี /etc ส่วนใหญ่จะเป็น text file มีขนาดเล็กๆ ดังนั้นแนะนำให้เก็บทุกไฟล์ที่อยู่ในนี้

วิธีการเก็บสำรองไฟล์แบบง่ายที่สุดน่าจะเป็นการใช้คำสั่ง tar

ตัวอย่างการเก็บไฟล์ทั้งหมดที่อยู่ใน /etc

[root@server ~]# cd /
[root@server /]# tar zcvpf server-backup-etc-20111031.tar.gz etc/
etc/
etc/sysctl.conf
etc/inittab
etc/idmapd.conf
etc/pki/
etc/pki/nssdb/
...

คำแนะนำ

  •  tar บนลีนุกซ์ สามารถระบุออปชั่น z เพื่อบีบขนาดของไฟล์ได้เลย
  • การระบุไดเร็คทอรีเวลาใช้คำสั่ง tar ให้เอาเครื่องหมาย / ที่อยู่หน้าไดเร็คทอรีออก มิฉะนั้นเวลาไปแตกไฟล์ (untar) ออก อาจพลาดไปเขียนไฟล์ทับ /etc ของเครื่องปลายทางได้

ตัวอย่างไฟล์ tar ที่ได้

[root@server /]# ls -l server-backup-etc-20111031.tar.gz
-rw-r--r-- 1 root root 5332341 Oct 31 20:52 server-backup-etc-20111031.tar.gz

ก็ขึ้นอยู่กับแต่ละคนว่าจะเก็บไฟล์ tar นี้ไว้ที่ไหน เช่นเก็บใส่ USB Drive หรือ ส่งไฟล์ (transfer file) ไปเครื่องที่อยู่ที่อื่น

ส่วนไฟล์คอนฟิกอื่นๆ ต้องขึ้นอยู่กับโปรแกรมที่ติดตั้ง บางโปรแกรมอาจติดตั้งอยู่ใน /opt หรือ /usr/local ต้องลองหาดู

อีกอย่างที่ควรระวัง คือเวลาติดตั้งโปรแกรมใหม่ หรือทดลองรันโปรแกรมแล้วใช้งานเลย โดยไม่ได้เข้าไปแก้ไขไฟล์คอนฟิก ที่อยู่ใน /etc ให้เรียบร้อย ทำให้เวลามีการ reboot เครื่องใหม่ เซอร์วิสบางอย่างอาจไม่ได้รันขึ้นมาเหมือนเดิม

โดยส่วนตัวแล้ว นอกจากเก็บไฟล์ที่อยู่ใน /etc แล้ว จะรันคำสั่งดังต่อไปนี้เพื่อเก็บสถานะของเครื่อง ณ ขนะนั้นจริงๆ ว่ารันอะไรอยู่บ้าง เพื่อจะได้ใช้เปรียบเทียบหลังจากที่ reboot เครื่องใหม่

  • uname -a
  • hostname
  • ps -ef
  • free
  • netstat -an
  • netstat -rn
  • ifconfig -a
  • mii-tool
  • iptables -L -v -n
  • sestatus
  • lsmod
  • dmesg
  • mount
  • df -k
  • pvdisplay
  • vgdisplay
  • lvdisplay
  • cat /proc/mdstat

ลองนำไปใช้กันดูครับ หวังว่าเซิร์ฟเวอร์ของทุกท่านจะปลอดภัย

ติดตั้งและคอนฟิก vsftpd – FTP Server

FTP Server ถือเป็นเซิร์ฟเวอร์ที่ติดตั้งและคอนฟิกค่อนข้างง่ายมาก ดีฟอลต์คอนฟิกหลังจากติดตั้งไม่ว่าจาก rpm หรือ yum ก็สามาถใช้งานได้เลย

แต่ถ้าเปิดเป็น FTP Server ที่ให้บริการบนอินเตอร์เน็ต แนะนำให้เปลี่ยนคอนฟิกบ้าง ไม่งั้นเซิร์ฟเวอร์คุณอาจตกเป็นที่โจมตีจากผู้ไม่ประสงค์ดีทั้งหลาย

ในที่นี้เลือกใช้ vsftpd ด้วยเหตุผล เรื่องความปลอดภัย ความเร็ว คอนฟิกง่าย และ FTP Server ขนาดใหญ่ๆ ก็ใช้กัน

Continue reading “ติดตั้งและคอนฟิก vsftpd – FTP Server”

upgrade kernel บน CentOS 5.6

ด้วยเหตุผลทางด้านประสิทธิภาพ ต้องการลงโปรแกรม library หรือ driver ของอุปกรณ์บางตัว ที่ต้องใช้ kernel เวอร์ชั่นใหม่

ในบทความนี้ ขอแนะนำวิธีการ upgrade kernel บน CentOS 5.6  โดยการดาวน์โหลดไฟล์ rpm แล้วนำมาติดตั้งเองด้วยคำสั่ง rpm

Continue reading “upgrade kernel บน CentOS 5.6”

ไฟล์คอนฟิก httpd.conf ของ Apache อยู่ที่ไหน

หลังจากปล่อยเว็บเซิร์ฟเวอร์ (Apache Web Server) ให้ทำงานไว้นานมากหลายปี  ได้เวลาปรับปรุงเป็นเวอร์ชั่นล่าสุด เพื่อประสิทธิภาพ และเพื่อความปลอดภัย

แต่ปัญหาคือเครื่องจะปรับปรุงนี้ รัน httpd ไว้หลายโปรเซส หลายพอร์ตมาก ทำให้เริ่มงงว่า โปรเซสไหน รันจาก httpd ไฟล์ไหน ใช้คอนฟิก httpd.conf  ที่ไหน

Continue reading “ไฟล์คอนฟิก httpd.conf ของ Apache อยู่ที่ไหน”

ทดสอบติดตั้ง CentOS 6.0

หลังจาก ทดสอบ Red Hat Enterprise Linux 6.0  บทความนี้ขอนำมาเปรียบเทียบกับการติดตั้ง CentOS 6.0 โดยใช้แผ่นดีวีดี เผื่อหวังว่าผู้สนใจได้ข้อมูลในเบื้องต้น ประกอบการตัดสินใจในการใช้งาน

Continue reading “ทดสอบติดตั้ง CentOS 6.0”

ติดตั้ง Tivoli Storage Manager V6.2 Server บน CentOS 5.6 (x86_64)

บทความนี้ แสดงตัวอย่างการติดตั้ง Tivoli Storage Manager V6.2 Server บน CentOS 5.6 (x86_64) แบบ command line

เพื่อความสะดวก ขอเขียนย่อ Tivoli Storage Manager เป็น TSM

Continue reading “ติดตั้ง Tivoli Storage Manager V6.2 Server บน CentOS 5.6 (x86_64)”

เลือกออปชัน grep ให้เหมาะ ลดเวลาค้นหาได้มาก

ช่วงนี้รับงาน เพื่อเขียนโปรแกรมดึงข้อมูลจาก text file ทำเป็นรายงานสรุป โดยข้อมูลที่ได้มา มีจำนวนบรรทัดมากมายมหาศาล รวมๆ แล้วเป็น หมื่นล้านบรรทัด

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

ข้อมูลที่อยู่ในไฟล์ แยกเป็นบรรทัด เหมือนกับ CSV ไฟล์ งานแรกที่ต้องทำคือ เขียนโปรแกรมเพื่อดึงข้อมูลเฉพาะบรรทัดที่มีคำที่ต้องการเท่านั้น

Continue reading “เลือกออปชัน grep ให้เหมาะ ลดเวลาค้นหาได้มาก”

โหลด mod_dav_svn ไม่สำเร็จ ฟ้องว่า undefined symbol: dav_register_provider

ขอแปะไว้กันลืม และเผื่อมีท่านใด เจอปัญหาเหมือนผมบ้าง หาอยู่นานพอสมควร เพื่อจะพยายามคอนฟิกเก็บข้อมูล subversion (svn) ไว้บน Web Server

หลังจากติดตั้ง “mod_dav_svn” แล้วพยายาม สตาร์ต httpd ไม่สำเร็จ ดังนี้

[root@repos ~]# service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/subversion.conf: Cannot load
/etc/httpd/modules/mod_dav_svn.so into server: /etc/httpd/modules/mod_dav_svn.so: undefined symbol: dav_register_provider
                                                          [FAILED]

Continue reading “โหลด mod_dav_svn ไม่สำเร็จ ฟ้องว่า undefined symbol: dav_register_provider”