วันอังคารที่ 29 เมษายน พ.ศ. 2551

[opensuse][vsftpd] จะเปิด services ftp ทั้งที ทำไมมันยุ่งยังงี้ [2]

ภาคสอง
ลง service ftp แล้วแต่ connect ไม่ได้ เจอ OOPS
หาใน google หลายตัว แต่ทำไมผลลัพธ์มันออกทะเลหว่า
(แต่ก็ได้ information บางอย่างมาเป็นไกด์)

เช็คใน help และ information สรุปแล้วได้ความว่า

vsftpd สามารถทำงานได้สองแบบ คือ
1. ทำงานผ่าน xinetd
2. ทำงานแบบ stand alone

error: Could not bind listening IPv4 socket เกิดขึ้นมาเพราะ vsftpd พยายามจะเข้าไปรับข้อมูลจากพอร์ทโดยตรง (พอร์ทใหนก็ไม่รู้)
แต่เพราะ xinetd ทำงานอยู่ แล้วก็คง bind socket นั้นไว้แล้ว
vsftpd ไป bind ซ้ำก็เลย error อย่างที่เห็น

แต่การที่ vsftpd ไป bind socket โดยตรง แสดงให้เห็นว่า vsftpd ทำงานแบบ stand alone อยู๋
งั้นเราจะลองปิด ให้มันไปทำงานภายใต้ xinetd

vsftpd จะใช้ /etc/vsftpd.conf เป็น configuration file
ถ้าต้องการให้ vsftpd ทำงานแบบ stand alone ก็ต้องเปิด listen = YES ใน /etc/vsftpd.conf
ถ้าจะปิด ก็ไป comment listen=YES ทิ้งไป
จากนั้นลองเข้า ftp ใหม่
เฮ้อ ได้แล้ว ได้ซะที

[opensuse][vsftpd] จะเปิด services ftp ทั้งที ทำไมมันยุ่งยังงี้

เมื่อวานตั้งใจจะเปิด service ของ ftp กับ telnet
เพราะตอนลง linux ลงแบบเร็วจัดคือใช้ค่า default ทุกอย่างเลย
ดังนั้น telnet กับ ftp เลยไม่ได้ติดตั้งมาด้วย

ไม่เป็นไร ลงเพิ่มใหม่ได้
แต่ ลงยังงัยล่ะ ชินกับ linux redhat [fedora][gnome] มาเจอ linux suse [opensuse][kde] เข้าไป ก็มีอึ้งไปพักใหญ่

ตั้งหลักได้แล้ว
ก็เปิดเข้ามาที่ start เมนู

เลือกแท็บ computer จากนั้นจะเห็น Administrator Settings [YAST]
ก็เลือกซะ
(จริงๆแล้วเลือก Install Software เลยก็ได้นิ)ใส่รหัสผ่านของ root
แล้วก็ enterเราก็จะได้หน้าจอ YaST Control Computer
เลือก Software --> จากนั้นทางขวามือเลือก Software Managementที่ Software Management ให้หา package ที่ต้องการจะลง
จากในรูปจะค้นหาแบบ package group
โดยมองหาใน package เกี่ยวกับ Productivity --> Networking --> FTP --> Server
แล้วเลือกติดตั้ง vsftpd (very secure FTP daemon)กด Accept แล้วมันก็จะลง Software เพิ่มเติมให้เรา

หลังจากนั้นเราก็ต้องมาสั่งให้ vsftpd ทำงานด้วย - ลงแล้วก็ต้องทำงานด้วยสิ
ก็อยู่ที่หน้าจอ YaST Control Computer ตามเดิม แต่คราวนี้เลือกในส่วน Network Services
แล้วเลือก Network Services (xinetd)
เพื่อเปิด Network Service Configuration (xinetd)ค้นหาบรรทัดที่เป็น vsftpd [ในรูปคือ /usr/sbin/vsftpd - นั่นก็คือที่ๆเก็บโปรแกรมนี้เอาไว้น่ะเอง]
ที่ column "status" จะเห็นว่ามีทั้ง On, --- และ NI
On ก็คือ service นั้น active อยู่
--- ก็คือ service นั้น inactive อยู่
NI ก็คือ service นั้นยังไม่ได้ install เลย configure ไม่ได

เราก็เลือกบรรทัด vsftpd
ดูให้แน่ใจว่ามันเป็น On หรือ --- หรือ NI
ถ้า On ก็ไม่ต้องทำอะไร
ถ้า --- ก็กดปุ่ม Toggle status (On or Off) ที่อยู่ด้านล่างขวา
แต่ถ้าเป็น NI ก็ไม่ต้องทำอะไร แสดงว่าลงผิดพลาด อาจจะต้องลองลงใหม่


ได้แล้ว แต่ว่า
พอเราทดลอง ftp ดูปรากฏว่า เจอ error
500 OOPS: could not bind listening IPv4 socketเอาล่ะสิ
ต่อคราวหน้า

วันพุธที่ 23 เมษายน พ.ศ. 2551

grub-install

คราวนี้ไม่มีรูป

เป็นการลง grub ของ linux ใหม่
ปรกติเวลาเราลง OS เรามักจะลง windows ก่อน จากนั้นตามด้วย Linux
ซึ่งการลงยังงี้ เราสามารถสั่งให้ Linux ลง grub ให้เราด้วยเพื่อเอาไว้ใช้ตอนเปิดเครื่อง
ซึ่งมันจะมี option ให้เราเลือกว่าจะเข้า OS ใหน

ปัญหาคือ ถ้าหาก Windows มีปัญหา เราก็ re-install windows ใหม่
ปรากฏว่า grub หาย
เพราะว่า windows ทำการ reset MBR (Master Boot Record)

ซวย Windows ไม่สนใจ partition ของ Linux ซะด้วย
ทำไง

ลง grub ใหม่งัย
โดยใช้ Linux Setup CD disc 1
ซึ่งเป็นแผ่นบูตในตัว

ใส่ CD
รีบูตคอมพิวเตอร์ จาก CD
เมื่อหน้าจอเข้ามารอที่ boot prompt ให้กด F5 เข้า Rescue Mode
พิมพ์ linux rescue

มันจะบูตเข้า linux rescue และ mount เอา partition ของ linux ไปเก็บไว้ที่ /mnt/sysimagemnt (จำผิดป่าวเนี่ย เด๋วเช็คแล้วมาแก้ไข)

จากนั้นเราก็พิมพ์
chroot /mnt/sysimagemnt เพื่อย้าย root directory มาใช้ของในเครื่อง

พิมพ์ fdisk -l เพื่อ list ดูว่ามี hard disk กี่ลูก และแต่ละลูกมีกี่ partition
ตัวอย่างนี้มีลูกเดียวคืออยู่ที่ /dev/hda
โดยมีหลายๆ partition ซึ่งก็แยกกันไปอยู่ตามที่ต่างเช่น /dev/hda1 /dev/hda2 ...
ดังนั้นเมื่อเราต้องการลง grub บน MBR เราก็ต้องลงที่ /dev/hda

พิมพ์ grub-install /dev/hda

แล้วทุกอย่างก็ดำเนินไปอย่างอัตโนมัติ
(อย่างน้อย หลังจากเสร็จมันจะรายงานเรามาว่าเจอ boot partition กี่ตัวบ้างล่ะน่า)

ถ้ามีโอกาสจะกลับมาอัพรูปน้า...

วันอังคารที่ 22 เมษายน พ.ศ. 2551

openSuse กับ การ set permission ของไฟล์ /dev/ttyS0

เพิ่งลง openSuSe เสร็จเมื่อวาน
วันนี้ลงโปรแกรมที่ต้องใช้ serial port
ตอนลงติดตั้งโปรแกรม พบว่าไม่มีปัญหา สามารถติดต่อกับ serial port และ hard lock ได้
อืม ก็โอเคดีนี่ เลยรีสตาร์ทเครื่อง หลังลงเสร็จ

จากนั้นเข้า user ปรกติ คือ user ของเราเอง
เอาล่ะซี่ โปรแกรมไม่ทำงาน เอ๊ะ อะไรหว่า
ตรวจสอบ log file ... อืม ทำไมติดต่อ serial port ไม่ได้ล่า

เลยไปเช็คจาก /dev/ttyS0 สำหรับ COM1 และ /dev/ttyS1 สำหรับ COM2
ปรากฎว่าเป็น
c r w - r w - - - -
อ่อ มิน่าล่า มันไม่ไห้ user ทั่วไป connect (read) จาก serial port เลยนี่เอง

ด้วยความรวดเร็ว เลยล่อคำสั่ง
chmod 777 /dev/ttyS*

เปิดหมด ไม่เหลือ reboot เพื่อความแน่ใจอีกรอบด้วย

หลังเปิดเครื่อง เราก็เปิดโปรแกรมใหม่
อ่าว ไม่ได้อีกแฮะ เลยกลับไปดู permission ของ serial port ใหม่
เพราะคิดว่าใส่ผิด
ปรากฎว่าเป็น
c r w - r w - - - -
อ่าว เฮ่ย ไม่ได้เปลี่ยนเลย ใส่ผิดยังงัยก็ไม่น่ากลับมาเป็นตัวเดิม
ลองอีกรอบ ก็เหมือนเดิม
สรุปว่า ถ้ารีสตาร์ทเครื่องเมื่อไหร่ ไอ้ที่เซ็ตไว้ จะหายเกลี้ยง

สรุปว่า security ล่ะสิ
เช็คกูเกิ้ลตั้งนาน จนเจอ http://www.weather-watch.com/wiki/index.php/Linux_Weather_Display_Manual

  • NOTE: If you are running OpenSUSE, or any other Linux distro which utilizes "udev" (udev is included in almost every 2.6 kernel based Linux distribution), then in order to permanently change permissions of your ttyS0 port (or any ttyS* port), you must edit the "/etc/udev/rules.d/50-udev-default.rules" file. Here are the changes you must make in order for the permissions to stick after rebooting your computer (you must be root to make the changes):
  • Open the "/etc/udev/rules.d/50-udev-default.rules" file in your favorite text editor (as root). Find the line in the file that begins with KERNEL=="tty[A-Z]". That's the line you will need to edit. Notice the default settings will look something like this:
  • KERNEL=="tty[A-Z]*", NAME="%k", GROUP="uucp"
  • Add [, MODE="777"] to the end of the above line in your 50-udev-default.rules file (without the brackets but don't forget to add the preceding coma). It should look something like this:
  • KERNEL=="tty[A-Z]*", NAME="%k", GROUP="uucp", MODE="777"
  • After changing this file and saving, reboot your computer. The ttyS* ports will grant rwx permission to any user.
  • Important: If you have a udev enabled Linux distribution and you do not make the above noted changes to your 50-udev-default.rules file, then every time you reboot your computer, the permissions on the ttyS* ports will revert back to root only access. This is because udev dynamically updates the /dev directory upon booting. All permissions granted during your previous session will be lost and Weather Display will not function properly. This solution is known to work properly with OpenSUSE 10.2.
อืม สรุปว่า ระบุว่าเป็นที่ openSuSe เลย
เนื่องจาก openSuSe หรือ Linux distro ใหม่ๆที่ใช้ kernel 2.6 ขึ้นไป ซึ่งจะมีการใช้งาน udev (อะไรฟระ เกิดมาเพิ่งเคยได้ยิน เฮ้อ) มันจะมี rule file อยู่ ถ้าต้องการทำให้การเปลี่ยน permission เป็นไปอย่างถาวร สิ่งที่ต้องทำคือการแก้ไข rule file

rule file ที่เกี่ยวข้องกับ serial port (ttyS*) ก็คืิอ /etc/udev/rules.d/50-udev-default.rules

เปิดด้วย user root (super user) แล้วมองหา
KERNEL=="tty[A-Z]*", NAME="%k", GROUP="uucp"
หรืออะไรที่คล้ายกัน แล้วเพิ่ม MODE="777" ลงไป
ERNEL=="tty[A-Z]*", NAME="%k", GROUP="uucp", MODE="777"

เท่านั้นเอง
จากนั้น เปลี่ยน permission ของ /dev/ttyS* อีกรอบ แล้วก็ restart
คราวนี้ได้แล้วฮะ :)


วันจันทร์ที่ 21 เมษายน พ.ศ. 2551

ให้ MSN แสดงชื่อเพลงอัตโนมัติ เมื่อเราเปิดฟังใน Media Player

เหมือนจะทำได้ง่ายๆ แต่มันก็มีลูกเล่นเล็กๆเหมือนกันนา

ปกติ เวลาเราเล่น MSN แล้วฟังเพลงไปด้วย โดยใช้ WINDOWS MEDIA PLAYER
แล้วเราก็อยากจะให้คนอื่นๆได้รับรู้ไปด้วยว่าเรากะลังฟังเพลงเศร้าอยู่นะ

ของมันทำได้อยู่แล้วนิ
เข้าไปที่ option ของ MSN แล้ว คลิกเลือก "Show song information from Windows Media Player as a personal message"

ฮ่า แค่นี้เอง

ยังๆๆ ยังไม่จบง่ะ พอดีว่า บางทีทำแล้วอาจไม่ประสบความสำเร็จ
ทำไม เพราะอะไร มันไม่ขึ้นง่ะ TxT

เพราะว่าบางทีเราก็ต้องไป set บน Windows Media Player ด้วย
บังเอิญไปอ่าน Help ของ MSN นะเนี่ย เพิ่งจะรู้

ไปที่ เมนู Tools - Plugins - Options...
(อย่าสับสนกับเมนู Tools - Options... ล่ะ เพราะมันคนละอันกัน - เราจะเซ็ต option ของ plugin ต่างหาก)

เสร็จแล้วเราก็เลือก แท็บ Plug-ins
เลือก Background
จะเห็นว่ามี Plug-ins โผล่มาให้เลือก
บางคนอาจจะมีมากกว่านี้ก็ได้(มั้งนะ)

เราก็แค่เลือก Windows Live Messenger Music Plugin
เท่านั้นแล
แค่นี้เราก็ประสบความสำเร็จในการประกาศให้ชาวโลกเค้ารับรู้ว่าเรากำลังฟังเพลงอะไรแล้ววววว...

วันอาทิตย์ที่ 13 เมษายน พ.ศ. 2551

เขียน C/C++ บน windows ด้วย DJGPP

อืม ยังไม่ทำตอนนี้ แต่หาข้อมูลเก็บไว้ก่อน

http://www.delorie.com/djgpp/
http://en.wikipedia.org/wiki/DJGPP

http://www.delorie.com/djgpp/getting.html