โพสต์

กำลังแสดงโพสต์จาก สิงหาคม, 2008

หนึ่งเสียงของผม

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

5 ข้อหลัก


ผมเชื่อว่าประชาธิปไตยเป็นระบบที่เหมาะสมกับช่วงเวลานี้ ดูจากแนวโน้มจะเห็นระบบที่ดีกว่าจ่อคิวอยู่แต่โลกยังไม่พร้อม ผมต้องการให้ทุกคนใช้กติกาของประชาธิปไตย ถ้ามีคนโกงก็ฟ้องกรรมการ ถึงแม้กรรมการเล่นโกงด้วยเราก็ไม่ควรเอาไม้ไล่ตีกรรมการ หรือเล่นโกงแบบเดียวกับอีกฝ่าย แต่ควรใช้กระบวนการที่ระบอบประชาธิปไตยวางไว้ให้ในการต่อสู้ ถ้าสังเกตุการ์ตูนญี่ปุ่นเวลาตัวร้ายโกง พระเอกจะต้องใช้กติกาของเกมนั้นเอาชนะตัวโกงให้ได้ แล้วจะได้ใจของผู้ชม และใจของคู่แข่งไปครอง ผมว่าเราปลูกฝังแบบนั้นก็ดีเหมือนกันนะครับ เราต้องอยู่กับระบอบทุนนิยมให้ได้ ไม่ใช่วิ่งหนีหรือลากคนอื่นหนีไปด้วย แต่ต้องหาทางรับมือ อย่ากลัวความจริงหากต้องการสร้างตัวอย่างให้ลูก ต้องเริ่มจากตนเองก่อน ได้ยินคนบอกว่า "ถ้านายกโกง แล้วต่อไปเราจะสอนลูกให้ดีได้อย่างไร" ผมคิดว่าเราต้องเริ่มจากการไม่ยัดเงินฝากลูกเข้าเรียน ไม่…

ruby XML

วันก่อนเขียน SAX Parser ด้วย Ruby สำหรับ

Leximac

ผมสร้าง class ขึ้นมา 3 ไฟล์ ไฟล์แรกเป็นการสั้งให้ Sax ทำการอ่านไฟล์ และเป็นตัวบอกว่าอ่านแล้วให้ไปเรียก method ใน Object ไหน

#sax_parser.rb require 'rubygems' require 'xml/libxml' require 'handler' class SaxParser def initialize(xml) @parser = XML::SaxParser.new @parser.string = xml @parser.callbacks = Handler.new end def parse @parser.parse @parser.callbacks.elements end end
ไฟล์ Sax Parser จะอ่าน xml ทีละ element แล้วมาเรียก method ใน Handler ตาม XML ที่อ่านได้ สามตัว

* start element
* character
* end element

character มันทำตัวสมชื่อทีเดียวครับ อ่านมาทีละตัวอักษรจริงๆ ต้องเอามาต่อๆ กันเอาเอง

# handler.rb require 'word' class Handler attr_accessor :elements, :current_element def initialize @elements = [] @@word = Word.new end def on_start_element(element, attributes) @current_element = element if…

เอา ScreenSave มาเป็น background

รูปภาพ
จริงๆ คงมีน้อยคนที่อยากเอา ScreenSaver มาแทน background image นอกจากจะเอาไว้อวดเพื่อน เพราะถ้าเอามาใช้จริงคงลายตาน่าดู แถมเปลือง CPU ด้วย



สำหรับคนที่อยากลอง ให้เปิด terminal ขึ้นมาแล้วพิมพ์

/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background

เป็นอันเสร็จพิธี ถ้าอยากเอา background เก่ากลับมาก็ให้กด ctrl+c ที่ terminal ตัว ScreenSaver ก็จะหายไป

 ที่มา - tuaw

เขียน Helper ช่วยในการสร้าง form

วิธีการใส่ label ให้ text_field สามารถทำได้ดังนี้ครับ สร้างไฟล์ form_tag_helper.rb ใส่ไว้ที่ app/helpers module FormTagHelper def label_text_field(object, method, options = {}) options[:temp_label] = method if method begin_html, end_html = wrapping_html(options) begin_html + text_field(object, method, options) + end_html end private def wrapping_html(options) label = options[:label] ? options.delete(:label) :options[:temp_label].to_s.titlecase options.delete(:temp_label) generated_html = "" generated_html << "" generated_html << "#{label}" generated_end_html = "" generated_end_html << " " return generated_html, generated_end_html end end จากนั้นใส่ include ApplicationHelper ไว้ใน application.rb ด้วยครับ เวลาเอาไปใช้เราแค่ใส่สั้นๆ ใน view แบบนี้ครับ <% label_text_field :quotation, :cname, :label => "creater name" %> ถ้า…

หมดสมัยของการย่อชื่อตัวแปร

เมื่อกี้พยายามแกะ xml ของ Lexitron เพื่อนำมาสร้าง HTML ให้กับโปรแกรม Dictinary.app แล้วพบตัวย่อหลายตัว อ่านแล้วงงๆ เช่น

<xml> <doc> <esearch>able-bodied <eentry>able-bodied</eentry> <tentry>แข็งแรง</tentry> <ecat>ADJ</ecat> <esyn>healthy; fit</esyn> <id>76</id></doc> </xml>
พยายามแกะ แล้วได้ความว่า

ตัวย่อตัวเต็มคำแปรesearchenglish searchตัวอักษรที่ใช้อ้างอิงตอนค้นหาeentryenglish entryคำนี้ในภาษาอังกฤษtentrythai entryคำนี้ในภาษาไทยecatenglish categoryประเภทของคำesynenglish synchronizeคำเหมือนในภาษาอังกฤษethaienglish thaiคำเหมือนในภาษาไทย
ปัญหาคือผมไม่รู้ว่าตัวเองเดาถูกหรือเปล่า ผมเข้าใจว่าคนออกแบบน่าจะคิดถึงเรื่องการเก็บข้อมูลถ้ามีซ้ำกันมากๆ จะทำให้ขนาดของไฟล์ใหญ่ จึงย่อคำให้เล็กลง แต่ยังไม่อยากย่อให้เหลือแค่ตัวอักษรเดียวเพราะอยากให้อ่านเข้าใจด้วย แต่สวนตัวผมคิดว่าถ้าจะย่อควรจะย่อให้เหลือตัวอักษรเดียวไปเลยครับ

ถ้ากลัวอ่านไม่เขาใจ ให้ใส่ comment ที่หัวของ x…

เขียน Ruby Helper แบบ Block

หลังจาก extend ตัว form_for มาได้ซักพัก ตอนนี้เจอโจทย์ว่าต้องสร้าง helper ที่มีตัวเปิดหัวปิดท้ายประมาณว่า

<div class="label">....</div>
ส่วนที่อยู่ตรงกลางเราให้คนใช้ ใส่กันเอง ประมาณนี้
< label_wrapping do %> .... <% end %>
ถ้าเรามี code ที่ต้องเขียนแบบนี้ซ้ำๆ โดยเฉพาะพวกหน้า form การเขียนย่อได้แบบนี้จะช่วยลด code ได้มาก และช่วยให้การแก้ไขในภายหลังทำได้จากจุดเดียวด้วย วิธีการคือสร้าง Helper ประมาณนี้ครับ

def label_wrapping(options, &block) begin_html = %{<div class="label">} end_html = %{</div>} content = capture(&block) concat(begin_html, block.binding) concat(content, block.binding) concat(end_html,block.binding) end
สิ่งที่ return ออกมาคือ HTML ที่ถูก code ของเราครอบไว้แล้ว

โปรแกรม Leximac เพื่อ OS X Leopard

รูปภาพ
โปรแกรม Leximac version ค. ทำเป็น plugin กับโปรแกรม Dictionary.app ของ Leopard ไปเลยครับ



การใช้งานให้ download ไฟล์ข้อมูลมา unzip (มี copy ไว้สองที่)

leximac ค. build 2Leximac_dictionary_0_2.zip
จากนั้น copy ไปไว้ที่ ~/Library/Dictionaries หรือไม่ก็ /Library/Dictionaries ก็ได้ ถ้าเอาไว้ที่ home ของเราจะต้องสร้าง folder Dictionaries เอง ถ้าเอาไว้ตรงกลางก็ไม่ต้องสร้างครับ เมื่อวางเสร็จแล้วให้ restart Dictionary.app เป็นอันเสร็จพิธี

การใช้งานให้เปิดโปรแกรม /Application/Dictionary.app แล้ว search ตามปกติเราจะห็นคำแปลภาษาไทยอยู่ด้านล่าง ถ้าต้องการให้ขึ้นเฉพาะของ leximac ให้เลือก tab leximac ได้เลยครับ

Dictionary Thai-English on Leopard

รูปภาพ
สองสามวันนี้ลองเอาข้อมูล Dictionary ของ lexitron มาทำเป็น plugin dictionary ของ Leopard


ตอนนี้ยังมีปัญหาอยู่หลายจุด เรียงตามลำดับความเลวร้าย ได้ดังนี้

อักษร "ก" หายไป ไม่รู้หายไปตอนไหน ต้องลองศึกษา utf-8 อีกทีว่าจะต้องแปลง ก.ไก่ ยังไง มีแต่ dictionaty english -> thai เพราะยังไม่ได้แปลง thai -> english รอแก้ปัญหาแรกได้ก่อน ตัว HTML ไม่สวย เพราะออกแบบ css แบบคร่าวๆ เท่านั้น ยังไม่ได้ทำปกหน้า ปกหลัง อยากทดลองแยกออกมาเป็น applicaiton สำเร็จรูปอีกตัว อยากให้ dictionary ของเราใส่รูปได้ด้วย 
สุดท้ายอาจจะต้องทำ พจนานุกรมเสรี ให้ทุกคนเข้ามาแก้ไขได้เอง เหมือน wikitinary (ไม่รู้ว่า จริงๆ เราดูด xml ออกมาจาก wiki ได้หรือเปล่า) ใครสนใจเอาไปทดลองใช้ชั่วคราว สามารถ download ได้ที่นี้ครับ

Leximac_dictionary_0_2.zip

 หลังจาก unzip แล้วให้เอาไปไว้ที่

~/Library/Dictionaries/ หรือ  /Library/Dictionaries/แล้ว restart โปรแกรม Dictionary.app จะเห็น tab Leximac ขึ้นมา ทดลอง search ดูจะเห็นคำแปลภาษาไทยออกมาครับ รบกวนผู้รู้ด้าน xml+utf-8 ฝาก comment ไว้ด้วยนะครับ ตอนนี้ยังไม่รู้จะทำยังไงให้ ก.ไ…

วาดครัวด้วย SketchUp

รูปภาพ
พักงาน dictionary มาวาดครัว ได้ออกมาประมาณนี้ครับ





อันนี้ครัวฝรั่ง ส่วนครัวไทยอยู่นอกบ้านครับ