jEdit Ruby Editor Plugin

Ruby Editor Plugin สำหรับ jEdit
Ruby Editor Plugin screenshot

ความสามารถหลัก ๆ ของ jEdit Ruby Editor Plugin

  1. syntax highlighting แสดงสีไวยากรณ์
  2. error list บอกที่ผิด
  3. structure browser แสดงโครงสร้างโปรแกรม
  4. online API documentation คู่มือ API สด
  5. code completion ช่วยเติมโค้ด
  6. more และอื่น ๆ

นอกจาก FreeRIDE กับ SciTE ที่มากับชุดติดตั้ง Ruby แล้ว
IDE อีกตัวที่เหมือนจะมีคนนิยม คือ Mondrian Ruby IDE ยังเป็นเบต้าอยู่ เขียนด้วย Ruby + FOX toolkit
เท่าที่ลองก็โอเค มี (1), (2), (3) และสั่งรัน Ruby ได้จากใน IDE เลย (ถ้ามีที่ผิด โปรแกรมจะวิ่งไปที่บรรทัดแรกที่ผิดทันที)

ถ้าแก้แต่ไฟล์ Ruby อย่างเดียว FreeRIDE น่าจะดีที่สุด
มี (1), (2), (3), (4), สั่งรัน Ruby ได้, และใช้ IRB (Interactive Ruby) ได้ในตัวเลย

ยังไม่เห็นว่า Mondrian จะดีกว่า FreeRIDE ชัด ๆ ตรงไหน …
อาจจะเป็นเรื่องของการจัดการโครงการ (Mondrian มีแนวคิดแบบ Project ทำนองเดียวกับ IDE ชั้นนำทั่วไป อย่าง Visual Studio, Eclipse, NetBeans, … คือเปิดไฟล์ที่เกี่ยวข้องกันเป็นกลุ่มได้)
รวมทั้งความเร็วของตัว IDE .. เหมือน Mondrian จะเร็วกว่าหน่อย ๆ เท่าที่สังเกตตอนเปิด/ปิดโปรแกรม
แต่ก็ยังลองเล่นทั้งสองตัวแค่แป๊บเดียว อาจจะมีอย่างอื่นที่ไม่เห็น

SciTE นี่ก็แก้ไฟล์ได้หลายแบบดี มี (1) และ (2)
หน้าตาค่อนข้างจะดึกดำบรรพ์ไปหน่อย หรือพูดอีกอย่างคือ พื่้น ๆ ไม่มีลูกเล่นมากนัก
ไม่มีอะไรน่าสนใจเป็นพิเศษ .. นอกจากความเบา/เล็ก (lightweight)
นี่ว่าจะลบทิ้งอยู่

เดี๋ยวจะลองลงปลั๊กอิน shell ของ jEdit แล้วใช้ IRB ผ่าน shell plug-in
ถ้าใช้ได้, jEdit ก็น่าจะโอเคสุดแล้ว สำหรับการแก้ไฟล์หลาย ๆ แบบ + Ruby
แต่ต้องระวังเรื่องโหลดไฟล์ยักษ์ ๆ กรณีที่เปิดใช้ปลั๊กอินหลาย ๆ ตัว
(เช่นเปิดไฟล์ XML ขณะใช้ปลั๊กอิน Structure Browser + XML + XML Indenter)
เพราะถึงแม้จะเปิดใช้ได้ แต่เวลาแก้ มันจะอืด ทำงานได้ แต่รำคาญ

Emacs ? เอ่อ … ไม่รับครับ – -“

Analysing LEXiTRON data files, with Ruby

สุดสัปดาห์ที่ผ่านมา นั่งเรียน Ruby (กำลังฮิต mk ก็ทำอย่างเดียวกันโดยไม่ได้นัดหมาย)

ตอนแรกว่าจะลอง Ruby on Rails เลย ..

คืออาทิตย์ก่อนหน้านี้
(สังเกต: ใช้คำว่าว่า อาทิตย์ก่อนหน้า แต่ก็ใช้ สุดสัปดาห์ … สุดอาทิตย์ ไม่มีใครใช้)
นั่งเขียน ‘เว็บบอร์ด’ ใหม่อยู่ (โครงการพันล้าน ทำ ๆ รื้อ ๆ มาหลายชาติ ตอนนี้ Google ออกเบต้าไปเรียบร้อยแล้ว :P)
ก็เขียนด้วย PHP ตามถนัดน่ะแหละ (ซึ่งผมว่า สำหรับเว็บเล็ก ๆ นะ PHP นี่แหละ เร็วสุดแล้ว หมายถึงสร้างนะ แต่ถ้าทำใหญ่ ๆ ก็รกง่ายมาก) แต่คราวนี้แทนที่จะทำอะไรเองหมด ก็ไปลองใช้พวกไลบรารีใน PEAR มั่ง
ซึ่งก็ง่ายดี และทำให้โค้ดสะอาดขึ้นเยอะ (อย่างตัว MDB2 นี่ก็ชอบ .. ถ้ามันใช้ utf-8 ได้นะ)

เขียนไปเขียนมา ก็นึกขึ้นมาได้ว่า เออ อยากลอง Rails มาตั้งนานแล้วนี่นา
งั้นทำไมไม่ลองเขียนด้วย Rails ไปเลยล่ะ ?
ประกอบกับได้ไปยืน/นั่ง/นอนอ่าน(ฟรี) หนังสือ Beyond Java ที่ร้านหนังสือมาสองรอบ (ไปอ่านมาสองรอบ ไม่ใช่อ่านจบสองครั้ง)
นึกได้ดังนั้น ก็เลยลง Ruby กะ Rails อีกรอบ
(หลังจากที่เคยลงและลบไปนานแล้ว เพราะไม่รู้จะลองอะไรดี)

ปรากฏว่า ลง Ruby ได้ แต่ Rails ไม่เวิร์กแฮะ
เซตกับ Apache (บน Windows) ไม่ได้ซะที ลองมันทุกวิธีละ
ก็นั่งทำอยู่ตั้งนาน ยังไงก็ไม่ได้
สุดท้ายเลยไปใช้ WEBrick แทน ที่ port 3000 (โง่อยู่ตั้งนาน โธ่)

เอาล่ะ มี Ruby ละ มี Rails ละ
ลอง Hello, World ไปโผล่ในเว็บเบราเซอร์ได้เรียบร้อยแล้ว
แต่ยังเขียน Ruby ไม่เป็นเลยนี่หว่า .. เอ้า

ก็เลยหัด Ruby ซะก่อน

ไม่รู้จะหัดกับอะไรดี นึกขึ้นมาได้ว่ากำลังอยากแปลงไฟล์ข้อมูล LEXiTRON อยู่
งั้นลองด้วย Ruby เลยละกัน
(เป็นประเภท ไม่ชอบเรียนกับหนังสือ ขี้เกียจทำตาม ชอบแก้ ๆ ผิด ๆ ถูก ๆ ไปเองเรื่อย ๆ มากกว่า ถ้าติดตรงไหนค่อยเปิดอ่าน/ค้นเว็บ)

ทำไปทำมา ตอนนี้ไม่ได้แตะ Rails แล้ว .. อ้าว

เพราะกำลังสนุกกับการ ‘ทำความสะอาด’ ข้อมูลใน LEXiTRON อยู่

ก็ใช้เขียน Ruby นี่แหละ ทำสคริปต์ช่วย พวกแปลงข้อความ/หาข้อความ

ทำไปทำมา จริง ๆ เหมือนเขียน regular expression เล่นมากกว่า 😛

ถ้ามีพื้นฐาน Python มาแล้ว Ruby นี่วันเดียวก็เป็น ถ้าได้ลงมือโค้ดจริง ๆ
คอนเซปต์อย่าง closure นี่ ผมอ่าน ๆ แล้วก็ไม่เข้าใจเท่าไหร่
แต่พอได้ลงมือเองจริง ๆ แล้ว + อ่านโค้ดตัวอย่าง + ดีบัก แป๊บเดียวก็เข้าใจแล้ว

เท่าที่พบ ข้อมูลใน LEXiTRON ค่อนข้างจาก ‘รก’ ทีเดียว …
ไม่ใช่ว่าแปลผิดนะ แต่หมายถึง ไม่ค่อยจะ..สม่ำเสมอ คือ ข้อมูลอย่างเดียวกัน แต่บันทึกไม่เหมือนกัน
เช่นในแท็ก <notes> (หมายเหตุ) ในไฟล์ telex นี่ เรา (โดยสคริปต์ Ruby สั้น ๆ) จะพบทั้ง

  • (บาลี/สันสกฤต) 819 ครั้ง
  • (บาลี, สันสกฤต) 63
  • (บาลี), (สันสกฤต) 21
  • (บาลี – สันสกฤต) 12
  • (บาลีและสันสกฤต) 11
  • บาลี-สันสกฤต 4
  • (บาลี-สันสกฤต) 2

ผมยังไม่ได้เข้าไปไล่ดูในตัวไฟล์คำแปลว่าจริง ๆ แล้ว ทั้งหมดนี้ มีความหมายเหมือนหรือต่างกันยังไง
แต่ยังไงก็ตาม มันน่าจะมีอย่างน้อยบางคู่ ที่มันมีความหมายเหมือนกันล่ะ (แต่บันทึกไม่เหมือน)

… สรุปว่า เริ่มจาก ‘เว็บบอร์ด’ แล้วไปลงที่ LEXiTRON ได้ไงเนี่ย – –

นี่มัน Ruby off Rails ชัด ๆ !

ป.ล. งานนี้ใช้ jEdit + Ruby plug-in และปลั้กอินอื่น ๆ ..
ทั้ง HTML, CSS, XML, PHP, Python, JavaScript และ Ruby เราทำมันทั้งหมดใน jEdit เย้!
(อ้อ อย่าลืมเซต -Xmx เยอะ ๆ ล่ะ ถ้าแก้ไฟล์ใหญ่มาก ๆ แล้วจะให้มัน parse structure ด้วย ไม่งั้นก็แก้ใน mode text ธรรมดาไปเลย
และระวังอย่าเปิดไฟล์ที่มีบรรทัดที่ยาว ๆ และไม่มี whitespace เลย ในขณะที่ใช้ปลั๊กอินอย่าง StructureBrowser ไม่งั้น jEdit มันจะค้างไปเลย อันนี้ลองกับไฟล์ XML ที่แปลงมาจากข้อมูล LEXiTRON ขนาด 20 Mb ทั้งไฟล์มีบรรทัดเดียว และไม่มี whitespace เลย … ผลลัพธ์ เซต -Xmx640m ก็ไม่พอครับ (เครื่องผมแรม 1.5 Gb))

ป.ล. ๒ เดี๋ยวค่อยมาโพสต์เรื่องการแปลงข้อมูล และสคริปต์ที่ใช้จริง ๆ (ด้วยภาษา Ruby) กัน
ถ้าสนใจเรื่องนี้ และอยากอ่านตอนนี้เลย แนะนำให้ไปอ่านของคุณ poonlap ก่อน — เจาะข้อมูล LEXiTRON (Perl)

jEdit Ruby Editor Plugin

หลายขั้นตอนหน่อย แต่ดีทีเดียว (ยังไม่มีให้เลือกโดยตรงจาก Plug-in Manager)

ผมใช้ jEdit อยู่แล้วด้วย (ทั้งสำหรับ XML, PHP, Python) เลยชอบใจ 🙂