วันอังคารที่ 30 สิงหาคม พ.ศ. 2548

จุดพึงระวังถ้าใช้ 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

# a2enmod rewrite
เสร็จแล้วก็
# /etc/init.d/apache2 force-reload
ตามเพื่อให้ apache2 มันรับรู้โมดูลใหม่. นอกจากคำสั่ง a2enmod ก็จะมีพวกเดียวกันคือ a2dismod, a2dissite, a2ensite.

ผมวาง Drupal ไว้ในไดเรกทอรี /var/www เลยต้องไปแก้ไฟล์ /etc/apache2/site-enabled/000-default ด้วยตรง

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
ให้มันเป็น AllowOverride All เพราะ Drupal จะใช้ไฟล์ .htaccess ของตัวเอง. และถ้าเอา Drupal ไปไว้ในไดเรกทอรี /var/www เลยก็คอมเมนต์ Redirectmatch ด้วยครับ.

แหล่งข้อมูลที่เกี่ยวข้อง:

ผมเดาว่าเว็บไซด์ debian-administration ก็ใช้ Drupal เหมือนกัน (?).

วันอาทิตย์ที่ 28 สิงหาคม พ.ศ. 2548

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

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

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

เห็นเขาออกหนังสือ ソフトウェアの匠 (Software masters) กับแฮกเกอร์ญี่ปุ่นอีกหลายคน. อยากอ่านดูเหมือนกันว่าเป็นอย่างไรบ้าง.

วันศุกร์ที่ 26 สิงหาคม พ.ศ. 2548

Gentoo experiment live CD ทำพิษ

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

บทเรียนนี้สอนให้รู้ว่าทำอะไรให้รอบคอบ, ไม่ควรทดสอบในระบบใช้งานจริงและไม่ควรจะไว้ใจเจ้า experiment เช่น experiment live CD มันมากนัก. ทำให้ต้องมาใช้ recovery CD ของเครื่องโน้ตบุ้คตอนที่ซื้อมาแล้ว, แล้วคงต้องดาว์นโหลดซอฟต์แวร์, ติดตั้งซอฟต์แวร์ต่อไป...

วันจันทร์ที่ 22 สิงหาคม พ.ศ. 2548

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

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

วันอาทิตย์ที่ 21 สิงหาคม พ.ศ. 2548

อินสตอลล์ cygwin

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

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

  • Install from Internet อันนี้จะดาว์นโหลดแพ็กเกจต่างๆมาไว้ในเครื่องก่อนแล้วติดตั้งให้. แพ็กเกจที่ดาว์นโหลดมาแล้วก็จะอยู่อย่างนั้นเอาไปใช้ต่อเครื่องอื่นก็ได้.
  • Download Without Installing ดาว์นโหลดอย่างเดียวไม่ติดตั้ง
  • Install from local directory คือมีไฟล์แพ็กเกจที่ดาว์นโหลดในไดเรกทอรีเรียบร้อยแล้วก็ระบุว่าแพ็กเกจนั้นอยู่ไหน.
การอินสตอลล์ครั้งแรกก็จะเลือก Insatll from Internet ครับ. ทำตามเมนูที่บอกไปเรื่อยๆ, จะต้องเลือกเซิร์ฟเวอร์ที่จะดาว์นโหลดแพ็กเกจก็เลือกประเทศที่มันใกล้ตัวหน่อยก็อาจจะดี.

ตรงเลือกแำ็พ็กเกจถ้าต้องการอินสตอลล์ทุกอย่างก็ดับเบิ้ลคลิ้ก (หรือคลิ้กเดียว, ชอบงงทุกทีั) ที่คำว่า All จนกว่าจะขึ้นคำว่า Install. หรือถ้าไม่อยากอินสตอลล์ทุกอย่างซึ่งเยอะและนานมากก็ให้แน่ใจติดตั้งแพ็กเกจ X11 ด้วย.

กด Next ไปเรื่อยก็จะติดตั้งให้จนจบอาจจะรอนานหน่อยแล้วแต่จำนวนแพ็กเกจที่เลือก.

วิธีใช้ก็ไม่ยากอะไรเลือกโปรแกรมที่เขียนว่า Cygwin Bash Shell จาก Start เมนูก็จะได้เชลล์มาใช้. ถ้าจะใช้ X วินโดวส์ก็สั่ง

 
$ startx &
ก็จะได้ xterm หนึ่งบาน. ตรงสั่ง startx อย่าลืมเครื่องหมาย & รันแบบ background. จะมาสั่ง Ctrl+z แล้ว bg ทีหลังไม่ได้ครับ. ถ้าเลือกอินสตอลล์ทุกอย่างก็จะมีอะไรต่อมิอะไรให้เล่นเช่น emacs, latex, vi, ghostscript, PostgresSQL, apache, ssh ฯลฯ. ไม่ใช่แค่คำสั่งยูนิกซ์เพียงอย่างเดียว. ผมว่าเหมาะเอาไว้ฝึกเขียนภาษา C, C++. หรือจะไปเอา FontForge มา build แล้วเอามาสร้างฟอนตฺ์ก็ยังได้ (เคยทำแล้ว OK).

ถ้า startx แล้วตรงทาส์กบาร์จะมีไอคอน X เซิร์ฟเวอร์อยู่, ลองคลิ้กขวาดูก็จะเห็นมันติ้ก Hide root window อยู่. ถ้าลองไม่ให้มัน Hide Root Window ก็จะเห็นหน้าจอ X โล่งๆมี xterm แบบไม่มีวินโดว์แมนเนเจอร์ใช้ลำบาก. จะกลับไปเหมือนเดิมก็ลองกด Alt+Tab เปลี่ยนไปเป็นโปรแกรมวินโดวส์อื่นๆเพื่อที่จะมาคลิ้กขวาตรงทาส์กบาร์แล้วติ้ก Hide Root Window อีกที. ตอนที่ cygwin ทำ X เซิร์ฟเวอร์ออกมาใหม่ๆมันไม่มี Hide Root Window ทำให้ใช้ยาก. เดี๋ยวนี้มี feature นี้ซึ่งก็นานมาแล้วทำให้น่าใช้และกลมกลืนกับโปรแกรมวินโดวส์อื่นๆมากขึ้น.

ถ้าไม่อยากรัน X เซิร์ฟเวอร์ด้วย startx ก็อาจจะรัน XWin โดยตรงจากเทอร์มินอล Cygwin Bash Shell ก็ได้. เช่นถ้าต้องการต่อหน้าจอล็อกอินของเครื่องลินุกซ์ก็สั่ง

$ XWin -query <IP_address> :0
หรือจะใช้ ssh ต่อไปก่อนแล้วส่งหน้าจอ X มาแสดงที่วินโดวส์ก็ได้. อ่าน man XWin ประกอบดูด้วยก็ดีครับ. ถ้าคุณชอบลินุกซ์หรือยูนิกซ์แล้วต้องใช้ Windows คุณก็ต้องลง cygwin แน่ๆ.

เหมือนคับคล้ายคับคลาว่าเคยเขียนเรื่องอินสตอลล์ cygwin ไปแล้วหรือเปล่า? ไม่เป็นไร, เขียนอีกทีก็ได้.

ใช้ 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 ไปเมื่อนานมาแล้ว.

    ตัวอย่างถ้าจะใช้ cygwin ต่อกับเครื่องลินุกซ์ที่อนุญาต XDMCP ก็อาจจะเปิดเทอร์มินอลของ cygwin ก็แล้วสั่งคำสั่ง

    $ XWin -query IP_address
    
    แล้วก็จะได้หน้าจอล็อกอินของเครื่องลินุกซ์มาใช้.

    หรือจะไม่เอาแบบนี้ก็ใช้ ssh ที่มากับ cygwin เข้าไปในเครื่องลินุกซ์แล้ว forward หน้าจอ X มาแสดงบนเครื่องวินโดวส์. แต่ต้อง startx ก่อนนะ (รัน X เซิร์ฟเวอร์ที่เครื่องวินโดวส์ก่อน).

  • ใช้ VMWare อันนี้ต้องซื้อแต่มีดีที่มันจำลองเครื่องคอมพิวเตอร์ให้และแสดงผลแบบกราฟิกได้ด้วย. เอาไว้ติดตั้ง Linux ดิสโทรที่ตัวเองชอบสำหรับคนที่ใช้วินโดวส์เป็นหลัก. สามารถให้ VmWare ใช้เน็ตเวิร์กผ่านเครื่อง host PC (ตัวที่ติดตั้งจะเรียกว่า guest PC) ได้แบบ NAT, bridge. เอาไว้จับภาพหน้าจออินสตอลล์ลินุกซ์ก็ไม่เลว.
  • coLinux (coperative Linux) เป็นโปรแกรมวินโดวส์ที่รันลินุกซ์เคอร์เนลและเป็นซอฟต์แวร์แบบโอเพนซอร์ส. ไม่สามารถจำลองหน้าจอกราฟิกได้แต่มีเน็ตเวิร์กต่อกับวินโดวส์ได้เหมือน VmWare (ผมยังสับสนระหว่าง emulator กับ Virtual machine อยู่เดี๋ยวต้องไปศึกษาเพิ่มเติม). หมายความว่าถ้าใช้ร่วมกับ XWin ของ cygwin ก็ให้มันแสดงผลกราฟิกได้โดยผ่านเน็ตเวิร์ก. มีประโยชน์มากถ้ารู้จักใช้เช่นคนที่พัฒนาเว็บแอพพลิเคชันบนแพล็ตฟอร์มลินุกซ์แต่ใช้วินโดวส์เป็นไคลเอ็นต์ก็ลง coLinux ติดตั้ง Apache, PHP, mysql แล้วก็ต่อเน็ตเวิร์กด้วยวินโดวส์. จริงๆแล้วจะติดตั้ง Apache, PHP, MySQL ในวินโดวส์เลยก็ได้แต่จากประสบการณ์อันไม่ดีที่ผมมี, ใช้ coLinux จะสะดวกกับคนที่คล่องลินุกซ์มากกว่าและจะได้ใช้อะไรอย่างอื่นนอกเหนือจากนั้นด้วย.
  • qemu for windows อันนี้คล้ายกับ coLinux (หรือเปล่า?) ผมยังไม่ได้ลองเพราะไปเล่น coLinux อยู่ตอนนี้ แต่รู้สึกใช้ได้ดีเหมือนกันครับ
เขียนมามากพอควร, จริงๆแล้วจะเขียนเรื่องการใช้ cygwin กับ coLinux ต่อคราวหน้า (เมื่อไหร่ไม่รู้) ตั้งแต่การติดตั้งครับ. ที่หันไปใช้ coLinux เพราะอยากจะใช้ emacs, latex บนวินโดวส์. ลองหลายทางเช่น cygwin แล้วก็ไม่เสถียร, ลองพวก WAMP (Windows Apache MySQL PHP) ก็ไม่เสถียร (หรือผมเซ็ตไม่เป็น?) ก็เลยหันมาใช้ coLinux แล้วเล่นข้ามเน็ตเวิร์กภายในเครื่องครับ.

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

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

ลองมาลิสดูว่ามีเว็บอะไรบ้างที่เราเข้าดูทุกวัน

  • Planet TLWG : ดูทุกวันตามข่าวสารชาวบ้านว่าทำอะไรกันบ้าง. รวมถึงเว็บไซด์อื่นๆของ linux.thai.net ในที่นี้ด้วย.
  • Slashdot : ข่าวสารไอทีต่างประเทศ บางทีได้ความรู้ใหม่, บ้างก็ต้องอ่านตรงคอมเมนต์ตาม.
  • OSNews : เนื้อหาคล้าย Slashdot แต่ไม่เหมือนกัน บางทีได้คนละรสชาติ.
  • NewsForge : ออกไปทำนอง tutorial เยอะดีมีประโยชน์. รู้สึกว่าจะเนื้อหาบางอันก็อปปี้มาจาก linux.com เยอะพอควร.
  • Yahoo Headline News ภาษาญี่ปุ่น : ติดตามข่าวญี่ปุ่น
เว็บที่เยี่ยมเยือนบางทีถ้ามีโอกาส
  • ผู้จัดการ : อ่านเวลาต้องการรู้ข่าวไทย.
  • BlogNone : ของไทยๆดีๆต้องช่วยกันเชียร์. ข่าวสาร IT แปลให้สรุปให้เสร็จสรรพ. เปลี่ยนไปใช้ drupal แล้วเหรอ.
  • IBM developer works : มีคนเขียนบอกว่า LDP (Linux Document Project) เป็น static เกินไปเทียบกับไซด์นี้แล้วอันนี้ดีกว่า.
  • Debian administration : ไม่ค่อยได้เข้าไปอ่านหรอก แต่เนื้อหาเข้มดี.
  • Footnotes - Gnome Desktop News : ไม่ค่อยได้เข้าไปอ่านแต่เอาไว้ติดตาม Gnome อยู่ห่างๆ
  • Oreilly Network : ไม่ค่อยได้เข้าไปอ่าน แต่น่าอ่าน.
  • Linux Gazette : นานๆเข้าไปที. ใช้ drupal ด้วย.
คุณอ่านอะไรกันบ้างครับ? มีไซด์ไหนน่าสนใจก็แน่นำกันบ้างกันบ้างนะครับ. (หมู่นี้คลิ้กลิงก์ในเว็บล็อกของคุณ 'bact บ่อย)

วันเสาร์ที่ 20 สิงหาคม พ.ศ. 2548

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

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

เข้าเรื่องเสียที คือไปอ่านเว็บล็อกของนายคนนี้มา (ชื่อญี่ปุ่นใช้ตัวคันจิยาก อ่านไม่ออก) ก็เลยได้รู้จักกับ TaskSwitchXP Pro 2.0 มันเป็น task switch ใช้บนวินโดวส์แทน Alt+Tab. เวลา Alt+Tab ทีมีรูปให้ดูด้วยว่าโปรแกรมนั้นเป็นยังไงอยู่ที่ไหนแทนที่จะเป็นไอคอนอย่างเดียว. แถมมีรายละเอียด task ให้ดูด้วยถ้ากด F1 หรือเมาส์ตรงหน้าที่แสดง. ตัวไมโครซอฟต์เองก็ออก XP Powertoys ให้ดาว์นโหลดและมี TaskSwitch คล้ายๆกันด้วยแต่เจ้า TaskSwitchXP มันทำได้ดีกว่าแถม Open Source ด้วย. ตรง XP Powertoys ก็มีอะไรน่าสนใจเยอะเหมือนกันเช่น Virtual Desktop Manager (เหมือนที่มีในลินุกซ์), ClearType Tuner อันนี้ไม่รู้เป็นยังไง คงต้องลองดูครับ.

วันศุกร์ที่ 19 สิงหาคม พ.ศ. 2548

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

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

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

127.0.0.1        localhost
192.168.0.40     myserver.net www.myserver.net myserver
เคยเบลอเอาชื่อโฮสขึ้นก่อน IP แล้วงงตั้งนานว่าทำไมมันไม่หา IP ของชื่อโฮสไม่ถูกทั้งๆที่แก้ไฟล์ hosts แล้ว (ดันแก้ผิดเอง).

วันพฤหัสบดีที่ 18 สิงหาคม พ.ศ. 2548

สร้าง favicon.ico ในลินุกซ์

หลายปีที่แล้วเคยหาวิธีสร้างไฟล์ favicon.ico และวันนี้ก็มีโอกาสสร้างเจ้าไฟล์ favicon.ico อีกครั้งด้วยเครื่องลินุกซ์. ไฟล์ favicon.ico นี้เป็นรูปภาพที่อาจจะมีได้หลาย layer ซึ่งมักจะมีขนาด 16x16 และ 32x32 หรือ 64x64 ในไฟล์เดียวกัน. มันเป็นไฟล์ icon ที่ใช้กันใน Windows เวลากรอก URL ตรง address bar ในเบราเซอร์มันก็จะขึ้นเคียงข้าง URL ที่กรอกไป. พอเอามาเก็บเป็น bookmark หรือ favorite เบราเซอร์ก็จะใช้ favicon.ico นี่แหละเป็น icon แสดงให้.

วิธีสร้างคงมีหลายวิธี, แต่วิธีที่ผมใช้คือใช้โปรแกรม png2ico เป็นฟรีแวร์แบบบรรทัดคำสั่ง. ก่อนอื่นสร้างไฟล์รูปภาพแบบ png ขนาด 16x16 และ 32x32 ด้วย gimp ทำเป็น icon ที่ต้องการแล้วเก็บบันทึกในไฟล์สมมติว่าเป็น 16x16.png กับ 32x32.png. เราจะสร้างไอคอนจากไฟล์ png สองไฟล์นี้.

ตัวโปรแกรมคงต้องดาว์นโหลด png2ico-src-2002-12-08.tar.gz มาแล้วคอมไพล์เอง. ก็ไม่ยากอะไร

$ tar xzvf png2ico-src-2002-12-08.tar.gz
$ cd png2ico
$ make
ก็อปปี้ไฟล์ png ทั้งสองที่สร้างไว้ไปไว้ในไดเรกทอรีนั้น. แล้วสั่งคำสั่ง
$ ./png2ico favicon.ico 16x16.png 32x32.png
ก็จะได้ไฟล์ favicon.ico ไว้ใช้กับเว็บเซิร์ฟเวอร์ตัวเอง. อ่านรายละเอียดวิธีการเอาไฟล์นี้ไปไว้ที่เซิร์ฟเวอร์จาก How To Create And Install A favicon.ico เองแล้วกันครับ. ปรกติก็เอาไปไว้ใน DocumentRoot ที่กำหนดไว้ใน apache นั่นแหละครับเช่น /var/www (ตัวอย่าง).

ใช้คำสั่ง file ดูว่าไฟล favicon.ico เป็นไฟล์อะไร, มันบอกว่าเป็น MPEG sequence.

$ file favicon.ico
favicon.ico: MPEG sequence

วันศุกร์ที่ 12 สิงหาคม พ.ศ. 2548

ชีวิตฟรีๆบน Windows

หมู่นี้ใช้วินโดวส์บ่อยและสิ่งที่ทำคือลงซอฟต์แวร์ต่างๆที่ใช้ในลินุกซ์เพื่อให้ทำงานได้สะดวกขึ้น. ก็เป็นผลดีของซอฟต์แวร์โอเพนซอร์สที่ว่าเมื่อมันเปิดรหัสต้นฉบับให้พัฒนากันแล้วก็มีผู้พัฒนาทำโน่นทำนี่ให้ดีขึ้น และที่สำคัญมีการพอร์ตไปใช้ใช้ระบบปฏิบัติการอื่นๆด้วย. ตัวอย่างเช่น Gimp เดิมใช้บนลินุกซ์แล้วก็พอร์ตให้ใช้ได้กับวินโดวส์ด้วย (Gimp Windows installer). โปรแกรมที่ผมลงไปตั้งแต่ใช้เครื่องโน้ตบุ้คเครื่องใหม่มีหลายตัวที่เป็นลักษณะนี้คือมีใช้ทั้งบนลินุกซ์และวินโดวส์. ว่าจะลิสรายการออกมาแต่ก็ไปซ้ำๆกับโปรแกรมที่แจกในซีดีจันทรานั่นแหละครับ. ส่วนเครื่องของผมบางทีก็จะลงโปรแกรมที่ฟรีแต่ไม่เป็น GPL บ้าง, เป็นบ้างก็มีเช่น
  • Java SDK - สำหรับรันและพัฒนาโปรแกรม Java
  • .NET - เจ้าพวก .NET บางครั้งใช้
  • Paint .NET - โปรแกรม paint ที่เขียนด้วย .NET คิดว่าใช้ง่ายสำหรับผู้ใช้ทั่วไปมากกว่า gimp
  • Konfabulator - รวมวิดเจ็ตโปรแกรมเล็กๆต่างๆ
  • Daemon tools - ไว้เมาต์ไฟล์อิมเมจ ISO
  • CDBurnerXP Pro - โปรแกรมเขียนแผ่น CD ที่มันดีกว่าที่มากับ Windows XP (คุณ 'bact) แนะนำมา
  • Xvid codes - สำหรับดูไฟล์หนังที่มี codec (compressor and decompressor) เป็น XviD mpeg4
  • Azureus - Java Bittorrent Client
  • Skype - ไว้คุยกับคนที่ใช้ Skype
  • MSN Messenger - ช่วยไม่ได้เนอะ
  • OpenOffice - เอาไว้ใช้แทน MS Office ก็โอเคนะ.
  • Ext IFS driver - เอาไว้เมาต์พาร์ทิชันลินุกซ์.
  • Cygwin - อันนี้ขาดไม่ได้เด็ดขาด. มี bash และโปรแกรมแต่งที่่ใช้ตั้งแต่ wget, vi, ssh, perl, latex, ghostscript, X เซิร์ฟเวอร์ ฯลฯ.
  • Apache - เอาไว้ทดสอบเขียนเว็บ
  • PHP - เอาไว้ใช้กับ Apache
  • MySQL - เป็นพวก WAMP (Windows, Apache, MySQL, PHP)
  • Acrobat reader - เกือบลืม
  • อื่นๆอีกมากมายที่ไม่ได้เขียนในที่นี้
โปรแกรมที่ลิสออกมาบางตัวใช้ดีเสถียรมากแต่บางตัวก็ไม่เสถียรเสียเท่าไร. ส่วนใหญ่ก็แนะนำในเว็บล็อกไปแล้ว. ไปๆมาๆคิดว่าหาเครื่องลินุกซ์แยกหรือรันลินุกซ์ในวินโดวส์เลยจะดีที่สุด. ไว้คราวหน้าจะเขียนเกี่ยวกับ coLinux ที่กำลังเล่นอยู่ครับ.

วันพฤหัสบดีที่ 11 สิงหาคม พ.ศ. 2548

แก้ Grub ให้เลือกบูตตรง OS ที่ต้องการ

ตอนนี้มีเครื่องโน้ตบุ้คตัวหนึ่งซึ่งมีทั้ง Windows และ Debian อยู่ในตัวเดียวกัน. ที่นี้ไปๆมาๆโน้ตบุ้คตัวนี้กลับได้ใช้ Windows มากกว่าลินุกซ์แต่เวลาเปิดเครื่องเข้า Grub ที่ Debian ติดตั้งให้มันจะไปไฮไลท์ตรงลินุกซ์ทุกทีทำให้ต้องเลื่อนลูกศรไปบูต Windows เองหรือไม่ยิ่งร้ายกว่านั้นกดไม่ทัน timeout ทำให้เครื่องบูตลินุกซ์ต้องรีบูึตใหม่อีก. เลยอยากแก้ Grub ให้มันเลือกบูต Windows โดยปริยายแทนที่จะเป็นลินุกซ์.

ไฟล์ปรับแต่งของ Grub อยู่ที่ /boot/grub/menu.lst เป็นไฟล์ที่แสดงหน้าจอเมนูนั่นแหละ. ส่วนตรงที่ให้เลือกค่า default ก็คือบรรทัดที่ขึ้นต้นว่า default. ในนั้นจะใช้เป็น

default 0
เลข 0 หมายถึงรายการ (เอ็นทรี) แรกในรายการระบบปฏิบัติการ. ตัวอย่างเช่นมีรายการ OS อยู่สามตัว, เป็นลินุกซ์ 2, วินโดวส์ 1.
title        Debian GNU/Linux, kernel 2.6.11-1-686
root         (hd0,1)
kernel       /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro
initrd       /boot/initrd.img-2.6.11-1-686
savedefault
boot

title        Debian GNU/Linux, kernel 2.6.11-1-686 (recovery mode)
root         (hd0,1)
kernel       /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro single
initrd       /boot/initrd.img-2.6.11-1-686
savedefault
boot

title        Microsoft Windows XP Professional
rootnoverify    (hd0,0)
makeactive
savedefault
chainloader +1
Grub ก็จะเลือก Debian GNU/Linux, kernel 2.6.11-1-686 ให้บูตโดยปริยาย. ที่นี้ถ้าต้องให้มันเลือก Windows XP ก็เปลี่ยนค่าของ default ให้เป็น 2. แต่เรื่องมันไม่จบเท่านั้นเพราะใน Debian ถ้าเพิ่ม kernel image หลายๆเวอร์ชันด้วย apt-get มันก็จะเพิ่มรายการ OS ต่อข้างบนไปเรื่อยๆและรายการของ Windows XP ก็อาจจะไม่ใช้เลข 2 อีกต่อไป, อาจจะเป็น 3, 4 ฯลฯ.

ในไฟล์ menu.lst ก็มีคอมเมนต์เขียนไว้ให้อยู่แล้ว, วิธีแก้คือตอนที่ระบุค่า default นั้นแทนที่จะเขียนเป็นตัวเลขก็ให้เขียนเป็น saved แทน. แล้ว Grub ก็จะเลือกรายการที่มีบรรทัด savedefault เป็นตัวบูตโดยปริยาย.

จากตัวอย่างข้างบนทุกรายการมีเขียน savedefault ก็ให้คอมเมนต์เอาต์ (เติมเครื่องหมาย # ที่ต้นบรรทัด) ส่วนที่ไม่ต้องการเช่นถ้าอยากให้ default เป็น Windows XP ก็สามารถเขียนได้แบบนี้.

...
default saved
...
title        Debian GNU/Linux, kernel 2.6.11-1-686
root         (hd0,1)
kernel       /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro
initrd       /boot/initrd.img-2.6.11-1-686
#savedefault
boot

title        Debian GNU/Linux, kernel 2.6.11-1-686 (recovery mode)
root         (hd0,1)
kernel       /boot/vmlinuz-2.6.11-1-686 root=/dev/hda2 ro single
initrd       /boot/initrd.img-2.6.11-1-686
#savedefault
boot

title        Microsoft Windows XP Professional
rootnoverify    (hd0,0)
makeactive
savedefault
chainloader +1
พอเข้าเมนู Grub ครั้งต่อไปก็จะเห็นว่ามันเลือก Windows XP ให้โดยปริยายครับ.

วันพุธที่ 10 สิงหาคม พ.ศ. 2548

เมาส์ตัวที่สอง

ปรกติเครื่องโน้ตบุคหรือแล็ปท็อป (ชอบลังเลทุกทีว่าจะเรียกว่าอะไรดี) จะมีเมาส์ในตัวอยู่แล้วไม่ว่าจะเป็น touch pad ที่เป็นแท่นให้ลูบสัมผัส, หรือพวกเป็นปุ่มตรงการแป้นพิมพ์เช่น trackpoint ของ ThinkPad. แต่บางครั้งเราก็ต้องใช้โปรแกรมที่ใช้เมาส์มากๆเช่นโปรแกรมกราฟิก, ลากเส้นและในกรณีนั้นมักใช้เมาส์แบบ USB เสียบเข้าไป.

ใน Debian ก็ค่อนข้างดีคือไม่ต้องทำอะไรมากแค่เสียบเมาส์ USB มันก็รับรู้และใช้งานได้เลย. แต่มันดันใช้ scroll ไม่ได้เลยต้องไปแก้ไฟล์ /etc/X11/XF86Config-4 (หรือ xorg.conf) โดยตอนแรกต้องเพิ่ม Section "InputDevice" สำหรับเมาส์ตัวที่สองเข้าไปเช่น

Section "InputDevice"
        Identifier   "Mouse1"
        Driver       "mouse"
        Option       "Protocol" "IMPS/2"
        Option       "Device" "/dev/input/mouse1"
        Option       "ZAxisMapping" "4 5"
        Option       "Buttons" "5"
EndSection
  • Identifier คือชื่อเมาส์ที่ตั้งเองใช้สำหรับอ้างอิง
  • Driver บอกว่า InputDevice ตัวนี้เป็นเมาส์
  • Protocol โปรโตคอลของเมาส์ในกรณีนี้ IMPS/2 คือ Intelli Mouse PS/2. ตรงนี้จะใช้เป็น auto ก็ได้แต่มันมักจะเดาให้ไม่ถูก.
  • Device เขียนชื่อไฟล์ดีไวซ์. ลอง cat /dev/input/mouse1 แล้วเลื่อนๆเมาส์ดูก็พอจะรู้ว่าเมาส์ที่ต้องการคือดีไวซ์นั้นหรือไม่.
  • Button บอกเซิร์ฟเวอร์ว่าเมาส์มี 5 ปุ่ม. เมาส์มีสามปุ่ม + หมุนขึ้นคิดเป็นหนึ่ง + หมุนลงคิดเป็นอีกหนึ่ง รวมเป็น 5.
เสร็จแล้วตรงช่วง Section "ServerLayout" เติม
Section "ServerLayout"
    Indentifier   "Mylayout"
    Screen        0 "Screen0" 0 0 
    InputDevice   "Mouse0" "CorePointer"
    InputDevice   "Mouse1" "AlwaysCore"
    InputDevie    "Keyboard0" "CoreKeyboard"
รัน X เซิร์ฟเวอร์ครั้งหน้าก็จะใช้เมาส์ที่เสียบเข้าไปแล้วใช้ scroll ได้.

อ้างอิง: Second Mouse in X mini-HOWTO

วันอังคารที่ 9 สิงหาคม พ.ศ. 2548

ทำให้วินโดวส์อ่านเขียนไฟล์ที่อยู่ใน ext2/3

อ่่าน osnews มีข่าวเกี่ยวกับไดร์เวอร์ของวินโดวส์ที่สามารถทำให้เห็นและอ่านเขียนไฟล์ที่อยู่ในพาร์ทิชัน ext2 หรือ ext3 ได้. จำได้แต่ก่อนจะมีโปรแกรม explore2fs เป็นโปรแกรมพวก explorer ใช้อ่านไฟล์ที่อยู่ใน ext2. โปรแกรมนี้มีข้อเสีย (ไม่แน่ใจว่าแก้หรือยัง) คือเป็นอ่านไฟล์ได้อย่างเดียว, และเป็นโปรแกรมต่างหากบางครั้งเครื่องมีอะไรผิดพลาดเครื่องช้าไปเลย.

IFS (Installable File System) เป็นชุดพัฒนาไดร์เวอร์เกี่ยวกับ file system สำหรับให้เอาไปเสียบกับวินโดวส์ได้เลย. ก็มีนาย Stephan Schreiber นี่แหละใช้ชุดพัฒนานี้ให้วินโดวส์มันอ่านเขียนไฟล์ในระบบ ext2 หรือ ext3 ได้ชื่อ Ext2 IFS driver for Windows. เป็นโปรแกรมติดตั้งไดร์เวอร์. ติดตั้งเสร็จแล้วก็สามารถเม็ปพาร์ทิชัน ext2 ให้เป็นไดร์วตัวอักษรที่ต้องการ. หรือตั้งตัวอักษรให้ไดร์วใหม่จาก control panel.

ข้อดีของตัวนี้คือ

  • ทำให้มันอ่านเขียนพาร์ทิชัน ext2/3 ได้เช่นฮาร์ดดิสก์เครื่องคอมฯเดียวกัน หรือพาร์ทิชัน ext2 ที่อยู่ในดีไวซ์อื่นๆ
  • สำหรับเครื่องคอมฯที่เป็น dual boot ไม่ต้องบูตเครื่องไปมา
  • ใช้ได้แนบเนียนเหมือนระบบไฟล์ในวินโดวส์
ลองอ่าน faq เำพิ่มเติมในส่วนที่เจ้าไดร์เวอร์ตัวนี้ทำได้และไม่ทำครับ. ผมว่าใช้ได้ดีทีเดียว, เห็นมีคนเรียกร้องอยากได้ IFS สำหรับ Reiser file system ด้วย.

วันจันทร์ที่ 8 สิงหาคม พ.ศ. 2548

ไม่ให้ apt-get อัปเกรดบางแพ็กเกจ

มีคำถามทางเว็บบอร์ดเห็นมาสองครั้งแล้วว่าจะทำอย่างไรไม่ให้ apt-get อัปเกรดแพ็กเกจบางตัว. ปัญหาจริงที่เกิดขึ้นคือใช้ Firefox ที่ตัดคำภาษาไทยจาก LTN' APT ซึ่งมีชื่อแพ็กเกจเป็น mozilla-firefox. ทีนี้ถ้า apt-get update แล้วมีแพ็กเกจ mozilla-firefox ภาษาอังกฤษที่ใหม่กว่า, เวลาสั่ง apt-get install mozilla-firefox หรือ apt-get upgrade มันก็จะติดตั้งทับ mozilla-firefox เดิมที่ตัดคำภาษาไทย.

การแก้ปัญหาตรงนี้อาจจะใช้การแก้ไขไฟล์ /etc/apt/preferences. ไฟล์นี้เป็นไฟล์ที่กำหนด preferences เวลาใช้ apt-get จะตรวจสอบดูไฟล์นี้เสมอ. ถ้าไม่มีไฟล์นี้ก็สร้างขึ้นมาแล้วใส่เนื้อหาให้ตามตัวอย่าง

Package: mozilla-firefox
Pin: version 1.0.6-1thai1
Pin-Priority: 999 
บรรทัด Package ต้องเขียนชื่อแพ็กเกจซึ่งในกรณีนี้คือ mozilla-firefox. ถ้าเรารู้ชื่อโปรแกรมเช่นเรารู้ว่ามีโปรแกรมชื่อ firefox แต่ไม่รู้ว่าอยู่ในแพ็กเกจชื่ออะไรก็ใช้คำสั่ง dpkg -S ชื่อไฟล์ ก็จะบอกชื่อแพ็กเกจที่มีไฟล์นั้น.
$ dgpk -S `which firefox`
mozilla-firefox
บรรทัดที่สองเป็นข้อมูลเกี่ยวกับเวอร์ชัน. จะเขียนเลขรุ่นของ mozilla-firefox ที่ใช้อยู่และไม่ต้องการให้อัปเกรด. เลขเวอร์ชันนี้หาได้โดยคำสั่ง dpkg -p ชื่อแพ็กเกจ.
$ dpkg -p mozilla-firefox | grep Version
Version: 1.0.4-3thai1
ในกรณีของเครื่องผมมี mozilla-firefox รุ่น 1.0.4-3thai1 อยู่. ถ้าเอาไปใส่ในไฟล์ /etc/apt/preferences ตามตัวอย่างข้างบนก็จะคงเวอร์ชันนี้ไว้.

บรรทัดสุดท้ายคือ Pin-Priority: 999 ตรงนี้คือจุดสำคัญเพราะเวลาใช้ apt-get จัดการแพ็กเกจและต้องมีการอัปเกรดหรือติดตั้งแพ็กเกจจะดูจากค่าของ Pin-Priority. ค่ายิ่งสูงจะถือว่าแพ็กเกจนั้นยิ่งใหม่. โดยปรกติแพ็กเกจที่ติดตั้งอยู่แล้วจะมีค่าเป็น 100. ส่วนแพ็กเกจรุ่นใหม่กว่าและไม่ได้อยู่ใน release (stable, testing, unstable) เดียวกันจะมีค่า 500. และแพ็กเกจที่รุ่นใหม่กว่าและอยู่ใน release เดียวกันจะมีค่าเป็น 990. ดังนั้นถ้าตั้งค่าแพ็กเกจที่ไม่ต้องการให้อัปเกรดเป็น 999 ก็จะมีค่ามากกว่า 990 ทำให้เวลา apt-get upgrade ยังคงแพ็กเกจเดิมไว้.

ในกรณีเครื่องของผม. mozilla-firefox ที่ใช้อยู่เป็นรุ่น 1.0.4-3thai1 และในไฟล์ /etc/apt/preferences มีบรรทัด

Package: mozilla-firefox
Pin: version 1.0.6-1thai1
Pin-Priority: 999
เวลา apt-get upgrade ก็จะติดตั้งรุ่น 1.0.6-1thai1 ให้เพราะค่า Pin-Priority สูงที่สุด.

สรุป:

  1. มีการตั้ง LTN' APT ในไฟล์ /etc/apt/sources.list
  2. apt-get update
  3. หาเลขรุ่นของ mozilla-firefox ล่าสุดที่เป็นภาษาไทย
    $ apt-cache showpkg mozilla-firefox
    ...
    Provides:
    1.0.6-1thai1 - www-browser
    1.0.6-1 - www-browser
    1.0.4-3thai1 - www-browser
    1.0.4-2thai1 - www-browser
    1.0.4-1thai1 - www-browser
    1.0.3-2thai1 - www-browser
    1.0.3-1thai1 - www-browser
    1.0.2-3thai1 - www-browser
    1.0.2-2thai1 - www-browser
    1.0+dfsg.1-5thai1 - www-browser
    Reverse Provides:
    
    ในกรณีนี้คือ 1.0.6-1thai1
  4. ตั้งค่าในไฟล์ /etc/apt/preferences ตามตัวอย่างข้างบนโดยใช้เลขรุ่นที่ได้จากขั้นตอนที่แล้ว.
  5. apt-get upgrade หรือ apt-get install mozilla-firefox ก็จะติดตั้ง mozilla-firefox ที่เป็นภาษาไทยตลอด.
ขอโทษนะครับที่ขั้นตอนออกเป็น manual ลุยด้วยมือซะหน่อย (โดยเฉพาะตรงสร้างไฟล์ preferences) ใครมีวิธีอื่นก็บอกด้วยแล้วกันครับ.

อ้างอิง: man apt_preferences

วันเสาร์ที่ 6 สิงหาคม พ.ศ. 2548

Testing - Etch

มักจะจำไม่ได้ซะทีว่า Debian testing นี้มีชื่อรหัสพัฒนาว่าอะไร. มันมีชื่อว่า Etch ก็เลยอยากรู้ว่ามันหน้าตาอย่างไร, เราไม่เคยดูเรื่อง Toy Story ซะด้วย. ถ้าเข้าใจไม่ผิด Etch คือ Etch-a-sketch เป็นกระดานเขียนรูปแบบลบได้. ไปดูที่ Mk เขียนไว้เกี่ยวกับ Debian codename ก็ไม่มีรูป. คิดว่าเป็นเจ้ากระดานในรูนี้แหละ.

credit: ภาพจาก Toy Story 2 production photo

วันศุกร์ที่ 5 สิงหาคม พ.ศ. 2548

Firefox lock

บางครั้งเวลาใช้ Firefox อยู่แล้วไฟดับ, หรือมีเหตุทำให้เครื่องต้องดับกระทันหัน, เวลาเปิดเครื่องมาใหม่แล้วจะใช้ Firefox อีกครั้งจะมีตัวเลือกโปรไฟล์ (profile) โผล่ออกมาบอกว่ามี Firefox กำลังทำงานอยู่. คือเวลารัน Firefox มันจะสร้างไฟล์ซิลโบลิกลิงก์ lock ในไดเรกทอรีโ ปรไฟล์ของผู้ใช้ใช่ในกรณีของผม, ไดเรกทอรีโปรไฟล์จะเป็น ~/.mozilla/firefox/32nqclta.default ในไดเรกทอรีนั้นจะมีซิมโบลิกลิงก์ชื่อ lock อยู่ลิงก์ไปที่ 127.0.0.1:5741
$ ls -l lock
lrwxrwxrwx  1 poonlap poonlap 14 2005-08-05 13:43 lock -> 127.0.0.1:5741
ก็ลบไฟล์ lock ทิ้งซะแล้วจะรัน Firefox ได้ใหม่ครับ. ส่วนตัวเลข 5741 คืือโปรเซส ID ของ Firefox ที่ตายไปครับ.

หมายเหตุ: วิธีนี้อาจจะเป็นวิธีแก้ lock ที่ไม่ถูกต้อง, อาจจะมีวิธีแก้ lock แบบอื่น.

วันพฤหัสบดีที่ 4 สิงหาคม พ.ศ. 2548

Apple Developer Connection

เอา Apple Developer Connection (ADC) ในส่วนของ Internet & Web มาบุ้คมาร์คไว้ซะหน่อย. จำได้ว่าเคยอ่านผ่านๆมีบทความดีๆ, รูปแบบเว็บก็เรียบง่ายอ่านสบายตาครับ.

คอมไพล์ emacs บน cygwin

วันก่อนหลังจากติดตั้ง cygwin แบบมี X เซิร์ฟเวอร์เรียบร้อยแล้วก็ลองเรียกใช้ emacs ดูว่าใช้ภาษาไทยได้หรือไม่. ปรากฏว่าไม่ได้เลยตัดสินใจว่าจะคอมไพล์เองจากรหัสต้นฉบับซึ่งเหมือนกับที่เคยเขียนไปแล้วครั้งหนึ่ง. หลังจากที่ make แล้วก็ไปติดที่

$ make
gcc -DHAVE_CONFIG_H -I. -I../src -I/home/poonlap/cvs/emacs/lib-src -I/home/poonl
ap/cvs/emacs/lib-src/../src   -g -O2 /home/poonlap/cvs/emacs/lib-src/update-game
-score.c -DHAVE_SHARED_GAME_DIR="\"/usr/var/games/emacs\""  -o update-game-score

/cygdrive/c/DOCUME~1/poonlap/LOCALS~1/Temp/ccdL0S5n.o: In function `main':
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:216: undefined reference to
`_rpl_getopt'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:216: undefined reference to
`_rpl_getopt'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:219: undefined reference to
`_rpl_optind'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:226: undefined reference to
`_rpl_optind'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:232: undefined reference to
`_rpl_optind'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:233: undefined reference to
`_rpl_optind'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:234: undefined reference to
`_rpl_optind'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:205: undefined reference to
`_rpl_optarg'
/home/poonlap/cvs/emacs/lib-src/update-game-score.c:211: undefined reference to
`_rpl_optarg'
collect2: ld returned 1 exit status
make: *** [update-game-score.exe] Error 1
สืบหาข้อมูลได้ความมาว่ามันมีปัญหากับ cygwin ว่าคอมไพล์ไม่ผ่านก็มีคนหัวใสบอกให้ก็อปปี้ /usr/bin/false.exe มาเป็นไฟล์ update-game-score.exe (ในไดเรกทอรี lib-src) ที่คอมไพล์ไม่ผ่านซะแล้วก็ make ต่อโดยไม่มีปัญหาอะไรครับ.

วิธีใช้ให้เป็นภาษาไทยก็ไม่ยากอะไร. รัน emacs เสร็จแล้วสั่งคำสั่ง M-x (กด Esc แล้วตามด้วย x) พิมพ์คำสั่ง set-language-environment. กด Enter ตอบรับแล้วพิมพ์คำว่า thai. เปลี่ยนแป้นพิมพ์โดยกดปุ่ม C-\ ก็จะพิมพ์ภาษาไทยได้. แล้วจะลอง Thai LaTeX บน cygwin ดู.