Lang

แต่ก่อนนี้ผมรู้จัก ayam เพราะว่าเป็นยี่ห้อปลากระป๋อง แต่เดี๋ยวนี้ผมไม่ได้กิน ayam เฉยๆแล้ว nasi goreng ayam kunyit ก็กิน ซึ่งตามความคิดเห็นของผม อาหารชนิดนี้ก็อยู่ในทำเนียบของอร่อยทีเดียว

nasi - ข้าว
goreng - ผัด
ayam - ไก่
kunyit - ขมิ้น

ของกินภาษาไทยกับมาเลย์นี่ดูท่าจะเปิดพจนานุกรมแปลกันได้เลย หลายๆ อย่าง

แต่ว่าไปแล้วผมชอบ nasi ayam kunyit เฉยๆ มากกว่า ข้าวขาวๆ ไม่ต้องผัด เอาหอม กะหอมเจียวโรยก็พอแล้ว

หมี่

posted on 20 Aug 2006 11:01 by veer in Lang
fu jia xia mian 福建虾面 Hokkien Hae Mee

ใครพูดภาษาอะไร ออกเสียงอย่างไร T_T

edit @ 2006/08/20 11:05:36
edit @ 2006/08/20 22:53:56

closure: ภัยใกล้ตัว

posted on 07 Jun 2006 23:01 by veer in Lang

ส่วนปิดกั้น (closure) รู้จักคำนี้เน้นๆ ก็ตอนอ่าน bact blog แต่ก็ยังคิดๆ อยู่ไม่ใช้ก็ได้มั้ง? ก็เลยไม่ได้สนใจมาเป็นเวลานาน จนกระทั้งเริ่มเขียน Javascript แล้วรู้สึกแปลกๆ ว่า inner function มันทำงานแปลกๆ ใส่ตัวแปรของ outer function ไป inner function มันก็ดันใช้งานได้ :-P

อย่างไรก็ตามมันไม่ได้มีแต่ประโยชน์?มันมีโทษด้วยถ้าเราใช้อย่างไม่ระวัง เช่น ทำให้เกิด memory leak ใน IE หรืออย่างเบาๆ หน่อยก็แต่เปลือง ยกตัวอย่างเช่น constructor function ที่ประกาศแบบข้างล่าง

function MyObj() {
    this.do_this = function() { ........ }
    this.do_that = function() { ........ }
}
ข้อเสียของมันก็คือ เรียก MyObj ทีก็ต้องสร้าง closure ของ function do_this/that ใหม่ทีซึ่งมันเปลือง แต่มันก็มีท่าแก้โดนเขียนผ่าน prototype แทน
function MyObj() {
}

MyObj.prototype.do_this = function() { ..... }
MyObj.prototype.do_that = function() { ..... }
ไม่มี function ซ้อนกัน ก็ไม่มี closure :-)

ถ้าไม่ได้อ่าน http://jibbering.com/faq/faq_notes/closures.html#clAtGb ผมก็คงไม่รู้เรื่องนี้ไปอีกนาน ทีแรกก็งงๆ ว่าทำไม prototype.js มันต้องใช้ท่าแปลกๆ ด้วย :-P

ป.ล. instance นี่แปลว่ากรณีตัวอย่างมันจะดีเหรอ? Car myCar = new Car(); เราจะบอกว่า myCar เป็นกรณีตัวอย่าง ของ Car? มันก็เหมือนจะได้ แต่มันก็รู้สึกแปลกๆ หรือเปล่า?

ใน sense นี้ instance น่าจะมีความหมายเหมือน representative (ดูจาก wordnet อะนะซึ่งก็น่าแปลเป็นอย่างอื่นที่ไม่ใช่กรณีตัวอย่างได้ .... ผมเลยแปล instance ใน sense นี้ว่า "ตัวตน" ก็อาจจะแย่อยู่ดี :-P

ป.ล. 2 กำลังอภิปรายใน blog ป๋า thep อย่างเมามัน blogger มาปิดซ่อมบำรุงซะนี่ -_-!

edit @ 2006/06/07 23:04:20
edit @ 2006/06/07 23:17:40
edit @ 2006/06/08 03:52:33
edit @ 2006/06/12 15:12:30

x มากกว่า

posted on 21 May 2006 22:04 by veer in Lang
คำว่า "มากกว่า" มักใช้ในการเปรียบเทียบ เช่น "ฉันชอบกินข้าวมากกว่าอาบน้ำ" เป็นต้น ก็น่าจะพอสรุปออกมาเป็น pattern ได้ว่า "x มากกว่า y" แต่ผมก็เห็นบ่อยๆ ว่า หลายๆ คน รวมทั้ง *ผม* ด้วย หลายๆ ครั้ง เขียนว่า "ผมว่า x มากกว่า" เช่น "ผมว่ามันเป็นที่หัวเทียนมากกว่า" เป็นต้น กรณี "x มากกว่า" และ "x มากกว่า y" สองแบบนี้ความหมายเหมือนกันหรือเปล่า? เป็นว่าความหมายเหมือนกัน หรือว่า แต่ละ y ไว้แล้วแต่กรณี หรือ ว่าจริงๆ แล้วไม่มี y
edit @ 2006/09/06 17:22:29

She looks dark แปลว่า "เธอดูเหมือนมืด" ก็อาจจะถูกก็ได้ แต่เท่าที่ได้ยินชาวบ้านพูดๆ กันมักจะใช้ว่า "เธอดูคล้ำ" แต่เป็นไปได้หรือเปล่า ว่่าเปิดพจนานุกรม แล้วจะแปลว่า "เธอดูเหมือนแก่" -_-' ผมดูจากพจนานุกรมแล้วก็คิดว่าอาจจะเป็นไปได้นะ

dark
dark [ADJ]
        คล้ำ
        เข้ม, (สี)แก่

        synonym: black
(นำมาจาก LEXiTRON)

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

อย่างไรก็ตามก็ยังมีปัญหาอีกว่า วงเล็บไว้แบบข้างบน เวลาเขียนโปรแกรมจะต้องมาเขียนโปรแกรมมาตีความวงเล็บนี้เองหรือเปล่า? ในวงเล็บจะบอก collocation เสมอหรือเปล่า? YAiTRON อาจจะต้องมี tag ชื่อ collocate แยกออกมาต่างหาก? (แบบ Papillon CDM)


edit @ 2006/05/19 19:29:52
edit @ 2006/09/06 17:22:32
เรื่องที่จะเขียนนี้เกิดจากแนวคิดของหลายๆ คน ที่เคยใช้ VB หรือ VC++ มา แต่เพื่อให้เท่ห์ผมขออนุญาตพูดถึง VB.Net แทน เพื่อนๆ หลายคนอยากจะลองเขียนโปรแกรมบน GNU/Linux บ้าง ก็เลยมาถามไถ่กันว่าใช้อะไรดี บางทีผมบอกว่า Ruby ก็ดี Python ก็ได้ C++ ก็แล้วแต่ ดีนะ GTK+ ก็ดีนะ QT ก็ดี GNUstep ก็เจ๋ง เพื่อนก็จะเริ่มเซ็งและถามว่าตกลงกระผม(จริงๆ เป็นคำอื่น) ต้องใช้อะไรบ้างครับ มีอะไรแบบ VB.Net มะ? แบบพูดสั้นๆ ใช้ได้เลย :-)

VB.Net มันก็คงชุด BigMac ที่ในบางอารมณ์ที่เราหิวมากๆ เดินเข้าร้าน McDonald ไม่รู้ว่าอะไรเป็นอะไรบ้าง ก็อาจจะบอกไปเลยว่าจะกินชุด BigMac ที่มีทั้ง เบอเกอร์เนื้อสองชั้น มันฝรั่งทอด น้ำอัดลม แต่ก็ยังมิวายต้องมาถามเราว่าเอาน้ำอัดลมอะไร ด้วยความขี้เกียจสองชั้นเราก็บอกไปว่า เอา "โคล่า" คือพูดกลางๆ ไว้ก่อน ไม่รู้ว่าเป็นเป็ปซี่หรือว่าโค้ก

แต่พอเรากินอาหารชุด ไปได้ซักพัก อาจจะคิดว่า ไม่ชอบกินมันฝรั่งทอดแบบแท่งเหลี่ยมๆ เลย อยากจะลองกินรูปโค้งๆ ดูบ้าง หรือเอาแต่เบอเกอร์ได้ไหม หรืออาจจะคิดว่าไม่อยากดื่มโคล่าแล้ว ลองดื่มน้ำใสๆ ซ่าดูบ้างจะเป็นอย่างไร เราก็อาจจะลองสั่งอย่างอื่นดูบ้างก็ได้ แต่ไปเราอาจจะเปรี้ยวขนาดสั่งแต่เบอเกอร์ แล้วออกไปสั่งกาแฟ Starbuck มาดื่ม

แม้แต่เบอร์เกอร์เองก็มีความเป็นชุดอยู่ในตัวเอง มีผัก มีเนื้อ มีแผ่นเนย มีแตงกวาดอง ที่เอามาผสมกันได้อย่างแนบเนียน ไม่ใช่ว่ามีรสแปลกๆ หรือมีน้ำหกออกมา ชุดโปรแกรมคอมพิวเตอร์อย่าง VB.Net ก็น่าจะมีคำหนึ่งที่ใกล้เคียงคือ Seamlessly ผมลองเปิดพจนานุกรมเล็กซิตรอนดู Seam แปลว่า รอยตะเข็บ (จริงก็มีคำแปลอื่นๆ อีก แต่ผมว่าตะเข็บนี่หละ) Seamlessly แปลตรงๆ ก็น่าจะแปลว่า อย่างไร้รอยตะเข็บ แต่แปลให้เท่ห์น่าจะแปลว่า อย่างแนบเนียน (เพราะว่ารอยตะเข็บมันมักจะทำให้ไม่เนียน)

ชุดของ MS เช่น VB.Net หรือ Visual studio ที่เป็นที่รักของหลายๆ คนที่ใช้ทำมาหากินมาหลายงานแล้ว จริงแล้วก็มีความคิดแบบ Modular เหมือนกัน คือแยกชุดนั้นเป็นชุดย่อยๆ ได้อีก ไม่ใช่ว่าเขาจะคิดให้มันเป็นก้อนเดียวมาแต่แรก เพียงแต่ว่าของต่างๆ ในชุดมันต่อเข้ากันได้อย่างแนบเนียนเท่านั้นเอง อย่างเช่น MFC ก็ใช้กันได้อยากแนบเนียนกับ Text editor ของ Visual studio เป็นต้น (บางคนอาจจะเถียงว่าไม่เนียนก็ได้ อันนี้ผมก็ไม่ทราบเหมือนกัน)

สมัยที่ผมหนุ่มๆ ชุดพัฒนาโปรแกรมที่โด่งดังไม่ใช่ Visual stdio เพราะว่ามันยังไม่มีหละมั้ง ก็เป็นชุดจาก Borland เช่น Turbo Pascal และ Turbo C หรือชุดจาก MS เช่น Quickbasic ที่อาจจะดังน้อยกว่าชุด Turbo หน่อย สมัยก่อนหน้านั้น อาจจะเป็นว่าผมยังเด็กอยู่หรือว่ายังไม่เกิด ไม่มีชุดแบบนี้มาให้ อาจจะต้องหาเอาเองว่าจะเอา Text editor ตัวไหน Debugger ตัวไหน Compiler ตัวไหน (ฟังเค้าเล่ามาอีกที)

อาจจะด้วยความสะดวกสะบายของการใช้ชุด เดี๋ยวนี้เวลาเข้าไป download Java มาใช้งาน ซึ่งจริงๆ Java ก็เป็นชุดอยู่แล้ว แต่เดี๋ยวนี้ดีกว่าแต่ก่อนคือมี Netbeans แถมมาด้วย

มากไปกว่านั้นหลายๆ คนคงเห็นความสำคัญของชุดอย่างมาก เลยคิดคำมาให้ด้วยเช่น ชุด LAMP ฟังดูแล้วก็เหมือนมีการพัฒนาอะไรขึ้นมาใหม่มากมาย แต่จริงแล้วสิ่งที่พัฒนาขึ้นมาอย่างน่าชื่นชน ก็คือ ชื่อ LAMP = Linux + Apache + MySQL + PHP คนฟังจะได้ไม่ต้องหงุดหงิดว่าตกลงต้องใช้อะไรบ้างก็บอกเลยว่า LAMP นี่ก็คล้ายๆ ชุด BigMac อีกเหมือนกัน :-) เดี๋ยวนี้่ใช้พวก database กันมาก ผมก็ชอบใช้ ในชุดก็เลยมี MySQL มาด้วยซะเลย

Ruby on Rails จริงๆ ก็มองว่าเป็นชุดได้เหมือนกัน แต่ก็ยังขาดหลายๆ อย่างเช่น database, Text Editor, Web browser ซึ่งอาจจะต้องไปซื้อกินเอาเอง


ช่วงนี้ผมก็มีชุดที่ใช้เหมือนกันแต่ยังไม่มีชื่อส่วนมากก็จะใช้ Terminal.app SQLite Turbogears JEdit Firefox เอาชื่ออะไรดี? TSTJF ก็ดูแย่ๆ หรือจะเน้นทำเป็นชื่อสัตว์แบบ Firefox, SeaMonkey, Thunderbird ดี? ช่วงนี้บ้าพวกเรื่องหัวรถจักร เอา GasTurbineLocomotive ก็คงได้ ตั้งชื่อจริงๆ แล้วคงไม่อยากแต่จะตั้งให้มีประโยชน์อาจจะยากกว่า -_-' ผมว่าเรียก Turbogears ไปเลยดีกว่า แล้วก็คงรู้เองว่าต้องใช้ Firefox และ SQLite ไปโดยปริยายด้วย

พอมาเขียน Desktop application ก็อาจจะมีปัญหาอีกเพราะผมใช้ RubyGNOME + Vim + Ruby + GNOME + Gnome terminal บางที่ก็ใช้ vim + make + Gorm + GCC Objc (แต่จริงๆแล้วไม่ค่อยทำแล้วบน Desktop เพราะว่า ทำแล้วไม่ค่อยมีคนใช้ด้วย ทำเว็บคนใช้เยอะกว่า อย่างไรก็ตามโปรแกรมทุกอย่างก็ไม่สามารถเอามาอยู่บนเว็บหมด) ชุดนี้อาจจะว่าเรียก RubyGNOME หรือ GNUstep ก็พอ? แล้วที่เหลือก็เข้าใจเป็นในๆ เอาเอง? ก็คงรู้เองว่าต้องหา Text editor มาใช้

อาจจะคำถามว่าชุดพวกนี้มันเนียนหรือเปล่า ก็อาจจะขึ้นอยู่กับว่าแต่ละคนมองว่า unix command line มันเป็นตะเข็บหรือเปล่า? จะเอาออกจริงๆ ก็อาจจะไม่ได้ยากอะไร แต่หลายๆ คนอาจจะมองว่ามันไม่ใช่ตะเข็บ

สรุปแล้วก็คือ บน GNU/Linux มันก็มีชุดที่ใช้พัฒนาโปรแกรมอยู่เยอะเหมือนกัน เพียงแต่ว่าถ้ารวมเข้าไปหลายๆ อย่างเช่น TextEdit + Web framework มันก็อาจจะยังไม่มีคนมาตั้งชื่อสั้นๆ ให้เท่านั้นเอง ลักษณะแบบนี้บน Windows ก็มีแต่เราอาจจะไม่ค่อยเห็น เช่น บางคนใช้ bash shell, make, vim และ VC++ ที่เรียกจาก bash shell ... แบบนี้ก็ไม่มีชื่อสั้นๆ เหมือนกัน

edit @ 2006/09/06 17:25:28

Smalltalk ราชันชายขอบ

posted on 02 May 2006 19:36 by veer in Lang
เมื่อวันก่อนโน้นแวะไปคุยกับอ.เด่นสิน ตามแผนที่วางไว้ว่าเข้าไปคุยทุกเสาร์อาทิตย์ เผื่อมีมือใหม่อยากจะเล่น GNU/Linux หรือจะเป็น Turbogears ก็ตาม แต่ในทางปฎิบัติแล้วก็จะมี insiderboy ที่เป็นมือใหม่อยู่บ้าง ที่เหลืออ.เด่นสิน ป๋าเทพ อ็อบ และเจน ในห้องรวบรวมคนที่สนใจเรื่องคล้ายๆ กันไว้ แม้ว่าที่จริงแล้วจะเป็นคนละเรื่องกัน -_-!

จากเรื่อง mod_ruby javascript บนฝั่ง server PHP on rails เรื่องราวมันก็ลื่นไหนไปเรื่อยจนถึง Smalltalk on Rails (มันจะมีเร้อ) ผมก็ลองหาๆ ดูในกูเกิลด้วยความคึกคะนองในที่สุดก็เจอ http://www.seaside.st/ จาก blog ของใครไม่รู้จำไม่ได้ ไม่ได้เก็บ link ไว้ เริ่มต้นด้วยการคุยทับทม Structs จากค่าย Java ว่าเขียน code (อะไรก็ไม่รู้) ยาวประมาณ 4 MB ได้มั้ง แต่ Seaside เขียนแค่ 200 KB ก็พอ

พอเข้าไปเว็บของ Seaside ก็มี Screencast ตามฟอร์มเว็บเฟรมเวิร์คทั่วๆ ไป แต่พอดูๆ ไปก็เริ่มตกใจที่เริ่มมีการแก้โปรแกรมบนเว็บนั้นเอง ท่านเด่นสินบอกว่าคล้ายๆ Tomcat ก็ลดความตกใจไปบ้าง พอกดไปกดมาก็มี paper ให้อ่านด้วย เป็นเรื่องที่ว่าเขาเสนอโมเดลใหม่ที่ต่างออกไปจากพวก JSP ASP.Net และอื่นๆ Seaside นี่ประมาณจะเขียนสิ่งที่เป็นขั้นเป็นตอนได้เป็นธรรมชาติกว่า ถึงแม้ขั้นตอนพวกนั้นจะมีหลายๆ หน้าเว็บก็ตาม ปกติแล้วพวกเฟรมเวิร์คที่เราๆ ท่านๆ ใช้อยู่อาจจะรวม Rails ด้วยหรือเปล่าผมไม่แน่ใจ method นึงใน object มันตรงกับหน้าเว็บ 1 หน้าพอดี ประมาณว่าเป็น page oriented แต่ว่า Seaside ต่างออกไปคือหลายๆ หน้าแต่ใช้ method เดียว เค้าว่ามันจะ handle พวก กระบวนการต่างได้ดีขึ้น ที่เค้าทำแบบนี้ได้ต้องใช้ OOP + Continuation -_-' เห็นแล้วมันอยากจะอ่านต่อ T_T แต่ฉุกคิดขึ้นมาได้ว่าทำด้าน NLP เลยลากตัวเองกลับมาทำงานหลักก่อน :-P

ใน series Smalltalk นอกจากจะมี Seaside ที่น่าสนใจแล้วก็ยังมี Squeak ที่สามารถสร้าง GUI แบบ Morphic ลืมบอกไปว่าคนคิด MVC ก็เหมือนจะมาจากเจ้าเดียวกันกับ Smalltalk แต่ว่าเขาไม่ได้หยุดอยู่ที่ MVC แล้วหันไปเล่น Morphic แทน Morphic ที่เป็นแบบ Prototype-based เลย ใช้งานอยู่กดหยุดโปรแกรมมาแก้ GUI ใช้ต่อได้เลย แล้วสั่งเล่นต่อได้เลย ไม่ได้มาแก้ที่ class แต่แก้ที่ Object ตรงๆ ตัวต่อของ Squeak ก็เป็น Open Croquet ที่เป็นระบบ GUI 3 มิติ ที่เค้าโม้ว่า ไปใกลกว่า Look glass ของ Sun อีก :-P

Smalltalk ไม่ได้มีไว้แค่ให้หนังสือ Java กับ C++ หยามว่ามันช้าอย่างโน้นอย่างนี้ (เลยต้องพยายามเขียนอะไรเยอะๆ ยากๆ เพื่อทำให้โปรแกรมทำงานเร็วขึ้น :-P) ทั้งๆ ที่มันไม่ได้เป็นกระแสหลัก ผลิตภัณฑ์แต่ละอย่างมันก็ช่างเร้าใจเหลือเกิน ผลิตภัณไม่ใช่ทันสมัยแต่ล้ำสมัย เท่าที่ดูๆ แล้วก็น่าจะพูดได้ว่า Smalltalk ยังไม่ตายและยังบินได้อีกด้วย :-)

อ่านเพิ่ม
ป.ล. ยังไม่ตายและยังบินได้อีกด้วย เป็น quote จาก The land before time ภาคภาษาไทย (ที่ดูสมัยเด็กๆ) :-P

edit @ 2006/05/03 14:14:42
edit @ 2006/09/06 17:26:45
จริงๆ จะเขียนถึง XML แต่ว่าอยากจะล่อเป้า Java ด้วย :-P

เคยสงสัยหรือเปล่าว่า tag ของ XML มันเปิดแล้วก็ต้องปิดอยู่แล้ว ต้องเขียนชื่อ tag ตอนปิดทำไม คำตอบก็อาจจะมีหลายอย่างเช่น จะได้จับคู่ง่ายๆ ( โดยใช้ตาดู ) แต่มันยังมีวิธีอื่นๆ ใช้ การย่อหน้า + ใช้โปรแกรมช่วยจับคู่

ข้อเสียอย่างร้ายกาจของการเขียนอะไรฟุ้มเฟือยก็คือเวลาเขียนมันเหนื่อย แต่ก็อาจจะมีทางแก้เช่น ใช้โปรแกรมช่วยอีกตามเคย เช่นพวก XML editor ต่างๆ

จะไปทางไหนมันก็มีข้อดีข้อเสียของมัน แต่ก็มีหลายคนที่เลือกไปทางที่ประหยัดถ้อยคำ แล้วก็ให้เครื่องมาใส่คำฟุ่มเฟือยให้ทีหลัง

แม่แบบซาตาน ใช้งานได้กับ Turbogears เขียนกันง่ายโดยใช้ [ ] ปิดเปิดแทน
เช่น

html [
]

เป็นต้น

เอาตัวแปรมาแทรกแบบ php ก็ได้ด้วย -_-'

edit @ 2006/09/06 17:27:20