blogs

อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ

www.tanabutr.co.th/photobook


XWin.exe as Windows service

หมู่นี้ใช้วินโดวส์กับ cygwin และ coLinux (จะเขียนในอีกไม่นานวัน) วันนี้ก็เกิดไอเดียว่าน่าจะรัน X เซิร์ฟเวอร์ของ cygwin ซึ่งก็คือ XWin.exe เป็นเซอร์วิสของวินโดวส์ซะเลย. เวลาสตารท์เครื่องก็จะได้ไม่ต้องมาสั่ง startx หรือ XWin ให้วุ่นวาย. ลองหาทางเน็ตดูก็ไม่มีใครเขียนไว้แต่พอจะมีบอกใบ้ว่าใน cygwin นี้มีคำสั่ง cygrunsrv.exe เป็นคำสั่งที่ลงทะเบียนโปรแกรมใน cygwin เช่นเซิร์ฟเวอร์ apache, postmaster ฯลฯ ให้เป็นเซอร์วิสในวินโดวส์. มันก็น่าจะลงทะเบียน XWin.exe ให้เป็นเซอร์วิสในวินโดวส์ได้เหมือนกัน.

ก็เลยลองดูเลยเปิดหน้าจอ bash ของ cygwin ออกมา, แล้วดูว่า cygrunsrv มันใช้อย่างไร

$ man cygrunsrv
No manual entry for cygrunsrv

ไม่เป็นไร, เรารู้ว่าคำสั่งที่ดีควรมีตัวเลือก --help อยู่ด้วยก็ลองดูต่อไป

$ cygrunsrv --help | less

พยายามจับมันเข้าไปในเพจเจอร์ less แต่สิ่งที่ออกมามันเป็น stderr อย่างนี้ต้องเอาใหม่อีกรอบ

$ cygrunsrv --help 2>&1 | less

Usage: cygrunsrv [OPTION]...

Main options: Exactly one is required.
  -I, --install   Installes a new service named .
  -R, --remove    Removes a service named .
  -S, --start     Starts a service named .
  -E, --stop      Stops a service named .
  -Q, --query     Queries a service named .

Required install options:
  -p, --path      Application path which is run as a service.

Miscellaneous install options:
  -a, --args          Optional string with command line options which
                            is given to the service application on startup.
  -c, --chdir    Optional directory which will be used as working
                            directory for the application.
  -e, --env      Optional environment strings which are added
                            to the environment when service is started.
                            You can add up to 255 environment strings using
                            the `--env' option.
                            Note: /bin is always added to $PATH to allow all
                            started applications to find at least cygwin1.dll.
....

มีตัวเลือกให้เยอะแยะ แต่เราใช้ไม่กี่ตัวหรอก. ตัวอย่างเป็นคำสั่งรุ่นเก่า คำสั่งรุ่นใหม่จะมี -L สำหรับดูเซอร์วิสที่บันทึกด้วย. เราก็เริ่มบันทึก XWin ให้เป็น Windows service ด้วยคำสั่ง

$ cygrunsrv -I xwin -d "Cygwin XWin server" -p /usr/X11R6/bin/XWin  -a "-multiwindow -clipboard -ac" -c /usr/X11R6/bin

ถ้าไม่มี error อะไรก็เป็นอันเรียบร้อย.

-I ระบุชื่อเซอร์วิส

-d ใส่คำอธิบาย

-p ใส่ชื่อพาธของโปรแกรมที่ต้องการรัน

-a อาร์กิวเมนต์ของโปรแกรม ตรงนี้ก็ใช้ multiwindow ให้มันไม่แสดง root window, -clipboard ให้มัน cut & paste กับวินโดวส์ได้, -ac ปล่อยให้มันเปิดรับคำขอจากไคลเอ็นต์เครื่องอื่นๆได้ อันนี้จะเอาไว้ใช้กับ coLinux

-c เปลี่ยนไดเรกทอรีไปที่ /usr/X11R6/bin เท่าที่ทดสอบมามันมี .dll ที่ต้องการอยู่เลยใช้ตัวเลือกนี้ด้วย.

ใจร้อนก็อยากสตาร์ทเซอร์วิสนี้เลยก็ได้, ใช้คำสั่งของวินโดวส์ net start, net stop

$ net start xwin
The Cygwin XWin server service is starting.
The Cygwin XWin server service was started successfully.

มันบอกว่าเซอร์วิสเริ่มแล้ว ก็ลอง

$ export DISPLAY=:0
$ xlogo 

ไม่ขึ้น!!! ปรกติถ้ารัน XWin -multiwindow ด้วยมือมันจะมีไอคอน X เล็กๆที่ system tray. แต่ตรงนี้ไม่มี. มั่วๆอยู่นานเลยรู้ว่าต้องไปเป็นเซอร์วิสของวินโดวส์, คลิ้กขวา My Computer เลือก manage... ไปที่ services

ดับเบิ้ลคลิ้กตรงเซอร์วิสที่สร้าง, ไปที่แท็บ Log on แล้วเลือก "Allow service to interact with desktop".

จุดพึงระวังถ้าใช้ Drupal กับ Apache2 บน Debian

ติดตั้ง Drupal แล้วต้องปรับแต่ง apache2 ให้มันใช้โมดูล rewrite เพื่อที่จะให้ Drupal มันใช้ clean URL ทำ 2 ทีผิดๆถูกๆทั้ง 2 ทีเลยเอามาเขียนโน้ตไว้เผื่อใครทำบ้่างและเจอปัญหาใช้ clean URL ไม่ได้.

ก่อนอื่นต้อง enable rewrite โมดูลของ apache2 ก่อนซึ่งจะทำด้วยมือโดยการทำ symbolic link จาก /etc/apache2/mods-available/rewrite.load ไปที่ /etc/apache2/mods-enabled/ ด้วยมือก็ได้. แต่ใน debian มีคำสั่งช่วยเพิ่มลดโมดูล apache2 ด้วยคำสั่ง a2enmod

เว็บล็อกที่น่าขยะแขยง

วันนี้ผ่านไปแวะอ่าน いやなブログ ซึ่งแปลตรงๆได้ว่าเว็บล็อกที่น่าขยะแขยง, ไม่เป็นที่ชื่นชอบ แต่เนื้อหาไม่เหมือนชื่อเพราะเป็นเว็บล็อกที่ผมว่าพวก otaku คงจะชอบ ทั้งเนื้อหาเทคนิค, วิธีการเขียน.

ผมชื่นชอบคนเขียนซึ่งก็คือนาย Satoru Takabayashi มานานแล้ว. นายคนนี้เขียน search engine ชื่อ Namazu (แปลว่าปลาดุก). ได้รู้จักชื่อเขาจาก Namazu และก็มีโอกาสอ่านบทความ (ซึ่งไม่เกี่ยวกับ Namazu) ที่เขาเขียนลงนิตยสาร UNIX magazine เมื่อประมาณสองปีที่แล้ว. เนื้อหาที่ลงในนิตยสารนั้นก็หาอ่านได้จากเว็บไซด์ของเขาด้วย. อ่าน javascript ที่เขาเอามาโชว์แล้วเพลินดี, ทำให้อยากศึกษา javascript ขึ้นมาบ้าง.

Gentoo experiment live CD ทำพิษ

สองสามวันก่อนดาว์นโหลด Gentoo experiment live CD มาเพราะอยากจะลอง Gentoo Installer. ดาว์นโหลดมาสองครั้งตรวจ md5sum ดูมันไม่ตรง. ทั้งๆที่รู้ว่าไม่ตรงก็ฝืนเขียนแผ่นแล้วก็บูตดู. ปรากฏว่าบูตได้รันได้ด้วยขึ้นหน้าจอสวยเชียว. ที่ desktop มี icon ให้รัน Gentoo installer ด้วยซึ่งก็เหมือนกับ screenshots ในเว็บไซด์ของ Gentoo นั่นแหละ. ผมลองดูแล้วถึงขั้นอินสตอลล์, เงียบเหมือนไม่ได้ทำอะไรนานมากเลยยกเลิกรีสตารท์. เอาใหม่ทำอีกครั้ง, คราวนี้มันอินสตอลล์ให้แต่ error บอกว่าฟังก์ชันรับอาร์กิวเมนต์ไม่ครบ. แต่ไม่บอกว่าฟังก์ชันอะไรเกิดอะไรขึ้น. รีบูตเครื่องใหม่ไม่ได้แล้ว. บูตด้วยตัว live CD อีกครั้งปรากฏว่า partition หายไปหมดซึ่งรวมถึงพาร์ทิชันวินโดวส์ที่ผมเล่น coLinux และกำลังทำอะไรหลายอย่างอยู่ด้วย.

ภาษาอังกฤษที่มักใช้ผิด

วันนี้เจอคนทักว่าใช้สำนวนภาษาอังกฤษหนึ่งผิดๆมาตั้งแต่ต้นแล้ว. เลยเปิดหาเรื่องเกี่ยวกับไวยกรณ์ภาษาอังกฤษบนเว็บก็ไปเจอเว็บไซด์ Common Errors in English มีออกเป็นหนังสือด้วย. คงอ่านแล้วเพลินดี, มีประโยชน

อินสตอลล์ cygwin

ต่อจากเรื่องใช้ลินุกซ์ในวินโดวส์ที่เขียนไปแล้ว. คราวนี้จะมาว่าด้วยเรื่องการติดตั้ง cygwin ซึ่งก็เป็นการปูทางใช้ coLinux ได้ง่ายขึ้นแถมได้ bash และเครื่องมืออื่นๆใช้ในวินโดวส์ด้วย.

ขั้นตอนการติดตั้งก็ไม่ยากอะไร, ไปที่ http://www.cygwin.com แล้วดาว์นโหลด setup.exe มารันในเครื่องตัวเองครับ. หลังจากทีรันแล้วก็มีให้เลือกว่าจะอินสตอลล์จากไหนมีสามวิธีคือ

ใช้ Linux ใน Windows

ได้เริ่มเขียนที่อยากเขียนแล้วเกี่ยวกับการใช้ิลินุกซ์ในวินโดวส์. การใช้ลินุกซ์ในวินโดวส์มีหลายวิธีอาจจะแบ่งเป็น

  • ใช้ cygwin อันนี้ไม่ใช่ลินุกซ์แต่ลง cygwin แล้วก็จะได้คำสั่งต่างๆที่ใช้ในลินุกซ์มาใช้ในวินโดวส์ด้วย. cygwin เป็นโปรเจคที่มีมานานเกือบสิบปีหรือเกินสิบปีแล้วจำไม่ได้. ตอนนั้นยังเป็นนักเรียนมหาวิทยาลัยอยู่แล้วต้องการใช้คำสั่งยูนิกซ์บนวินโดวส์ก็มีจะมีโปรแกรมยูทิลิตี้ัเล็กๆเช่น cat, dd, cut ฯลฯ ที่ใช้ในวินโดวส์ได้รวมกันแจกอยู่ (ต้องไปหาไซด์ว่าอยู่ที่ไหน). แต่ที่มันเด็ดกว่าคือ cygwin มียูทิลิตี้เกือบครบครันรวมถึง bash, gcc เครื่องมือพัฒนาคอมไพเลอร์ให้ด้วย. โปรแกรมต่างๆของ cygwin มันไม่เป็น native วินโดวส์จะขึ้นกับ dll พิเศษที่มากับ cygwin. ทำให้มีโครงการ MinGW (Minimalist GNU for Windows) ออกมาพยายามทำสภาพแวดล้อม gnu โดยไม่ใช้ third-part dll ของ cygwin. แต่ cygwin ก็ได้รับความนิยมต่อเรื่อยๆจน Red Hat มาซื้อ cygwin ไปเมื่อนานมาแล้ว.

วันหนึ่งๆคุณอ่านอะไร

วันนี้มานั่งคิดว่าเราไม่ใช่นักท่องเว็บ วันหนึ่งๆก็ท่องเว็บไม่กี่ไซด์และมักจะซ้ำๆ. บางทีผมก็สงสัยเหมือนกันว่าทำไมเครื่องคอมพิวเตอร์ Windows บางตัวมันจะใช้ท่องเว็บอะไรกันหนักหนาติด spy ware กันตรึมซึ่งตัวเองไม่ค่อยพบปัญหาพวกนี้เท่าไร. อาจจะเป็นเพราะผมไม่ใช่นักท่องเว็บตัวจริงก็ได้.

คนญี่ปุ่นที่สร้าง Mona OS

ปรกติผมจะอ่านข่าวญี่ปุ่นจาก Yahoo headline แล้ววันนี้ก็ไปเจอข่าว IT เกี่ยวกับคนญี่ปุ่นที่สร้าง OS ขึ้นมาใช้เองชื่อ Mona OS. ในข่าวเป็นเรื่องเล่าของเขาว่าทำไม่ย้ายไปทำงานกับบริษัท Hatena ซึ่งเป็นบริษัท IT บริการ blog. เหตุผลหนึ่งคืองานเก่าของเขาถึงแม้จะมั่งคงแต่ไม่ได้เรียนรู้อะไรใหม่และเขาก็ไม่ยึดหลักตามที่พ่อเขาบอกว่าอย่าทำอะไรเหมือนคนอื่นเลยไปเขียนในเว็บบอร์ด (จะเรียกว่าเว็บบอร์ดดีไหมเนี่ย) ที่ชื่อว่า 2ch (อ่านว่านิชาเนลุ) ถามทำนองว่าอยากจะเขียน OS ต้องทำยังไง. ก็มีคนตอบจนยาวเหยียด (เจ้า 2ch มันมักจะเป็นอย่างนี้อยู่แล้ว). คงประกอบกับความตั้งใจและพยายามของเขาด้วยแหละทำให้สร้าง OS ที่ชื่อ Mona ออกมาได้. เขาบอกว่าเขากลัวว่าทำงานที่เก่าจะไม่ได้เรียนรู้อะไรใหม่ๆ พอย้ายมาทำที่ Hatena ซึ่งก็เป็นบริษัทแปลกห้องทำงานก็มีแต่พนักงานมักจะออกไปทำงานที่ห้องสมุดสาธารณะ (ที่ญี่ปุ่นมีห้องสมุดสาธารณะเยอะมาก)

ไฟล์ hosts ในวินโดวส์

ในลินุกซ์จะมีไฟล์ /etc/hosts เป็นฐานข้อมูลของ IP address กับชื่อโฮส. ในวินโดวส์ก็มีไฟล์แบบนี้เหมือนกันอยู่ที่ c:\windows\system32\drivers\etc\hosts บางทีอยากได้ชื่อ DNS ใช้ชั่วคราวก็ไปแก้ไฟล์นี้.

ฟอร์แมตของไฟล์นี้ก็เหมือนในยูนิกซ์ทั่วไป, IP address ขึ้นก่อนแล้วตามด้วยชื่อโฮสที่ต้องการครับ.