Wednesday, March 11, 2009

ปีสองทำอะไรไปบ้าง?

ทำไมเวลา 1 ปีมันผ่านไปเร็วจัง?

ลองมานั่งนึกดูว่า 1 ปีที่ผ่านไป เราได้ลองทำอะไรบ้าง?

นอกจากเรียนหนังสือไป 1 ปี ก็นึกออกว่าได้ลองทำอะไรหลายอย่างเหมือนกัน:

- ลองเขียน Nontri Internet autologin

เป็น Firefox Extension (ตัวแรกในชีวิต)ที่ช่วย login เข้าเน็ตอัตโนมัติ
เขียนเสร็จ ปล่อยลงเน็ตปั๊บ สบค. (คนรับผิดชอบระบบ login สำหรับคนใช้เน็ตมหาลัยเกษตร) เขาก็แก้ระบบ login ให้ extension เราใช้ไม่ได้(ไม่กี่นาทีหลังจากปล่อย extension)

- ไปแข่ง TESA Topgun Rally 2008

(ผลการแข่ง)
เป็นครั้งแรกที่ได้ลองเขียนโปรแกรมบน Microcontroller (ในงานใช้ dsPIC33) โจทย์ของการแข่งคือ สร้าง ECU สำหรับรถยนต์ โดยใช้ Real-time OS ได้เรียนเกี่ยวกับ Real Time OS นิดนึงด้วย
แต่ไปงานนี้คิดว่าเราได้เฉพาะบรรยากาศเขียนโปรแกรมบน embedded system เพราะคนอื่นๆ ในทีมเคยเขียนมากันหมดแล้ว (เรา noob สุดๆ) ไปเกาะเขานั่นเอง อิๆ... ได้ไปช่วยๆ นึก state machine/อัลกอริทึมที่ใช้ detect pulse, กับ คำนวณเวลายิง pulse
ในงานแข่งครั้งนี้ได้ใช้ SVN ด้วย (รู้สึกได้ประโยชน์จาก SVN สุดๆ ก็งานนี้แหละ)

- ลองเขียนโปรแกรมตัดคำที่ "ขึ้นกับบริบท"

(แข่ง BEST 2009)
จำได้ว่าตอนอยู่มัธยม พยายามทำ Chatbot เลยค้นรายงานเกี่ยวกับระบบตัดคำภาษาไทยมาอ่าน แล้วก็ได้แต่อ่าน... ไม่สามารถเขียนออกมาเป็นชิ้นเป็นอันได้ เพราะ ใช้ Regular Expression ไม่เป็น (และในรายงานนั้นก็เป็นการตัดคำโดยใช้กฎที่เป็น Regular Expression)
มาตอนปีสองนี่... ลองเขียนหลายอย่างมาก ทั้งแบบ Longest matching (ลองอันแรกเลย ง่ายสุด ฮะๆ), Maximal Matching (ตัดแบบให้จำนวนคำน้อยสุด),.... จนมาถึงตัวตัดคำที่ขึ้นกับบริบท(ที่ใช้แข่ง)
"ฉัน|นั่ง|ตาก|ลม|อยู่|ริม|หน้าต่าง|"
กับ
"เด็ก|ผู้|หญิง|มี|ดวง|ตา|กลม|โต|แวววาว|"


- เขียน Twitnest



เป็นโปรเจคที่คิดว่าจะทำส่งเป็นการบ้านวิชา Practicum ตอนเรียน อ. @jittat สั่งให้ทำ Web App ด้วย Google App Engine ตอนนั้นเราก็ยังไม่มีไอเดียทำโปรเจคอะไรเลย แต่ได้รับแรงบันดาลใจจากท่านภาคย์ ว่าจะทำโปรแกรมประมาณ "เชื่อม social network" ทั้งหลายเข้าด้วยกัน

ทีนี้ท่านภาคย์ อยากให้แสดงผลคล้ายๆ family tree พอคุยไปคุยมา... ก็อยากได้เป็นกราฟ แล้วตอนนั้นก็เพิ่งเริ่มเล่น twitter ใหม่ๆ (เหมือนจะโดนชักชวนโดยเพื่อนๆ CPE21 ที่โดน @jittat ชักชวนอีกที)

เลยหันมาสนใจ Flash เพราะดูโปรแกรมทำกราฟอื่นๆ ที่เขียนด้วย javascript แล้วไม่ประทับใจเท่าไหร่ นั่งบ้าอ่าน Essential Actionscript 3.0 (เป็น text ที่ผมชอบนะ อ่านง่ายดี) อยู่นานมาก... แล้วก็ใช้ FlashDevelop เขียน

ก่อนหน้านี้ไม่เคยสนใจ Flash เลย เพราะรู้สึกงง กับ Timeline, Frame, Keyframe, ฯลฯ รู้สึกว่ามันเป็นโปรแกรมที่เหมาะกับ Designer มากกว่า แต่พอใช้ FlashDevelop แล้วสร้าง Flash ด้วยโค้ดล้วนๆ แล้วรู้สึกสบายใจกว่า :D

โปรแกรม Twitnest นี่เสียเวลากับส่วน Auto-group (จัดกลุ่มคนในกราฟอัตโนมัติ) มากที่สุด แต่เป็นคิดว่าเป็นความสำเร็จแรกในการ อ่าน paper ด้วยตัวเอง แล้วพยายามเขียนโปรแกรมออกมาจนเสร็จ (และคิดว่าได้ผลลัพธ์ถูกต้อง)

- Wordle Clone


ไปเจอ Wordle แล้วก็พบว่ามันสร้าง Wordle สำหรับตัวอักษรภาษาไทยไม่ได้ (เลยอยากสร้างเองให้แสดงภาษาไทยได้)

ลองเขียนเองดูบ้างด้วย Python + Python Image Library (PIL) ได้ผลลัพธ์ดังนี้

เป็นรายชื่อเพื่อนๆ ใน เว็บบอร์ดรุ่น โดย ขนาดของชื่อจะใหญ่ตามจำนวนโพสต์ในบอร์ด (ยิ่งใหญ่ยิ่งปั๊มนั่นเอง)

ตอนนั้นรู้สึกอยากเอา Wordle Clone นี้ขึ้นให้บริการบนเน็ตด้วย ดังนั้นโปรแกรมต้องทำงานเร็ว แต่โปรแกรมที่เขียนตอนแรกมันทำงานช้าไป ความยากอยู่ตรงที่ต้องเขียนวิธีเช็คว่า ข้อความที่เรากำลังจะปะลงไป มันจะซ้อนทับของเดิมรึเปล่า (2D Collision Detection)

ก็เลยบ้าไปนั่งอ่าน text เกี่ยวกับ Computational Geometry เรื่อง Hierarchical Bounding Volume เพื่อที่จะเอามาใช้เช็ค "Collsion ของ ข้อความ" อย่างรวดเร็ว (นั่งงงอยู่นาน) สุดท้าย implement ออกมาได้ (ดีใจสุดๆ)

แต่ก็เจอกับปัญหาว่าการจัด layout ที่ได้มันยังไม่สวยพอ (ไม่สวยเท่าของ wordle) มันยังหลวมๆ ไป... เราก็เลยพับโปรเจคนี้ไว้ และเก็บไว้ใน D:\projects\ ต่อไป เพราะต้องไปทำอย่างอื่นต่อ

- Webpage Language Identification


ทำระบบ ช่วยระบุภาษาหน้าเว็บเพจอัตโนมัติ ทำการระบุในระดับ byte-stream (ดังนั้น encoding จะมั่วก็ไม่เป็นไร)
โปรเจคนี้ทำกับ Mike lab@CPE.KU ใช้ visible Markov-model มาเรียนรู้ลำดับ byte ในเอกสารภาษาต่างๆ... แล้วก็เอาโมเดลที่เรียนรู้แล้วของแต่ละภาษามาระบุภาษาของ unknown อัตโนมัติ (ตอนทำมีภาษา ไทย ญี่ปุ่น ลาว อังกฤษ)

- IR Repeater



วงจรซ้ำสัญญาณรีโมท UBC (ขอเรียกว่า UBC แทน True Vision ละกันสั้นดี)
คือที่บ้านมีเครื่องรับ UBC อยู่ชั้นบน แต่ต่อออกทีวีทั้ง ชั้นบนและชั้นล่าง... ไปๆ มาๆ อยากดู UBC ชั้นล่างบ่อยขึ้น พออยากเปลี่ยนช่อง ก็ต้องวิ่งขึ้นไปชั้นบน จิ้มรีโมทเปลี่ยนช่อง (เหนื่อย)

เลยอยากได้ IR Repeater เอาไว้ใช้รับสัญญาณรีโมทจากชั้นล่าง แล้วยิงซ้ำเข้าเครื่องรับ UBC ชั้นบน

พอได้แรงบันดาลใจจากวิชา Practicum (อีกแล้ว) ที่ได้นั่งประกอบชุด kit เลยทำให้เราอยากประกอบวงจรอีก ค้นๆ ในเน็ตเจอ IR Repeater เขาแจกวงจร (schematic) ด้วย... :D ตอนนี้ก็มีใช้แล้ว ตามภาพครับ

สรุป



ใช้เวลาปีสองได้คุ้มค่ารึเปล่าเนี่ย?.... รู้สึกว่าทำหลายอย่าง แต่ไม่ได้เกาะติดกับเรื่องไหนนานๆ ลึกๆ... เลยรู้สึกเหมือนเป็นเป็ดเลย (บินได้ ว่ายน้ำได้ เดินบนบกได้... แต่ทำได้อย่างละนิดอย่างละหน่อย)

รู้สึกว่า พออยู่ปีสองได้เรียน "พื้นฐานที่จำเป็น" หลายๆ อย่าง ทำให้เราทำ "สิ่งเคยอยากทำแต่ทำไม่ได้ตอนเด็ก" ได้ :) (แต่ก็มีอีกหลายอย่างที่ยังทำไม่ได้นะ)

เฮือก...เขียน blog ได้ยาวมาก (หมักไว้ไม่ได้มาเขียนนาน)

ปิดเทอมใหญ่นี้ ไม่ลงเรียน summer แน่นอน... ยังค้นหาเรื่องที่อยากทำต่อไป (จริงๆ ก็มีค้างอยู่หลายเรื่อง) แต่อยาก up skill อื่นๆ นอกจากคอมฯ บ้าง :)

ปล. ถ้าผมเขียน blog ได้น่างงงวย ช่วยบ่นด้วยการ comment ด้วยครับ :D จะได้เอาไปปรับปรุงสำหรับ blog ถัดๆ ไป

Sunday, March 01, 2009

ปั่นจักรยาน

ชอบปั่นจักรยานใน ม.เกษตร ช่วงวันหยุดมากๆ

เพราะถนนมันโล่ง ไม่ต้องระวังรถเท่าไหร่... ปั่นสนุกสนานเหมือนเวลาไปเที่ยวแล้วไปปั่นจักรยานเลย :D


ช่วงค่ำๆ รถก็น้อยเหมือนกัน แต่มืด น่ากลัว แถมมีข่าวว่ามีคนถีบจักรยานให้ล้ม เพื่อขโมยของด้วย (น่ากลัวฉิบ)

มีคืนนึงเลี้ยวผิดซอย ... เข้าไปเจอ น้องหมาสองตัว แยกเขี้ยวใส่ แฮ่!!!! น่ากลัวมาก
แถมยังวิ่งเข้ามาอีก - -" adrenaline หลั่งไหล รีบปั่นอ้อมไปออกอีกทาง
ระหว่างปั่นหนี มันก็ยังไล่เห่า ไล่ตามอีกนะ (จะโหดไปไหนเนี่ย)
ในที่สุดก็หนีรอดมาได้โดยไม่โดนกัด

โพสต์นี้ โดนใจอย่างแรง

ช่วงสอบนี่เหนื่อยสุดๆ บางวันก็หงุดหงิดสุดๆ อาจเป็นเพราะโดนคาดหวังเยอะ โดนคาดคั้นเยอะ

วันนี้อ่านเจอโพสต์เนื้อหาดีๆ ของ maikub ในบอร์ดรุ่น ดังนี้ (ขอแปะให้ลองอ่านละกัน)


อาจารย์เค้าแค่พยายามสอนเท่านั้น (แม้ว่ารอบนี้เค้าจะไม่มีเหตุผลจริงๆ)
เหตุผลนิยามไม่เหมือนกัน แต่บางทีก็ต้องใช้ใจกันบ้าง (คนไม่ได้สอนไม่รู้หรอก ^^)

" ความผิดเท่านี้เทียบกับโจรสามจังหวัดภาคใต้ หรือไอ้พวกพนักงานรัฐที่รับใต้โต๊ะ โกงกินชาติ หรือพวกข่มขืนฆ่าไม่ได้เลยซักนิด แต่เอามาพูดซ้ำกันอยู่ได้"

คน ทุกคนทำผิด ตัดสินใจผิดก็ต้องการการให้อภัย... อย่างไรก็ตามมันให้กันยาก แม้เราจะรู้ว่าควรให้ เพราะบางเรื่องมันอภัยไม่ได้!!! (แม้จะไร้สาระแค่ไหนก็ตาม)

ตอนเด็กๆเราเชื่อฟังพ่อแม่ ครูอาจารย์
ตอน โตเราฟังน้อยลงเพราะเรามีเหตุผลมากขึ้น แต่อย่าลืมว่าเหตุผลของเราไม่ได้ถูกเสมอไป บางเรื่องมันก็ undecidable... บางเรื่องเราก็ใช้เหตุผลผิด (ลืม discrete ไปแล้วเหรอ p->q != q->p)... แต่เรื่องส่วนใหญ่เรามักเข้าข้างตัวเอง (แหงสิ ไม่งั๊นจะให้เข้าข้างใคร อิอิ)...

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

เหตุผล -> 20% จิตสำนึก
ใจ -> 80% จิตใต้สำนึก
บางครั้งเราก็หาเหตุผลดีดีให้บางเรื่องไม่ได้ แค่ใจคิดว่ามันดีแล้ว

ขอพิมพ์นิดนึง (ไม่ได้เกี่ยวอะไรกับกระทู้เลย)

สอบไม่ได้ -> คะแนนไม่ดี -> เพราะอะไร ...

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

อาจารย์สอนไม่รู้เรื่อง ?
x อย่างไรก็ตามถึงแม้สอนไม่รู้เรื่องจริงๆ พวกเทพเค้าก็เทพอย่างเดิมไม่ว่าอาจารย์จะสอนยังไง
(นึก ถึงตอนสอน C# น้องๆ ถึงแม้จะรู้ตัวว่าสอนไม่รู้เรื่อง แต่... มึงไม่รู้เรื่องก็ถามกูสิ กูถามก็ไม่ตอบ นั่งบื้อกันแล้วบอกว่าไม่รู้เรื่อง สม >.< บางทีอาจารย์บางคนที่สอนเราอยู่อาจคิดแบบนี้ก็ได้นะ 555)

โทษว่าอาจารย์สอนไม่รู้เรื่อง ?
x ต่างกันที่คุณตั้งใจพอหรือยัง พยายามเข้าใจหรือยัง... (ถึงแม้บางคนจะสอนงงจริงๆ เช่น เรา ^O^)
(คงได้เห็นในวิชา Digital... ข้อสอบยากระดับหนึ่งเลยล่ะ
แต่นึกสภาพตอนเรียนแล้ว... ก็ไม่แปลก
ถ้าเค้าเคืองจริงๆวิชานี้ออกได้นรกกว่านี้มาก แต่ก็นะพาร์ทหลังนี้ยากมากแน่ๆ
นึกถึงชั่วโมงที่เค้าด่าเรื่องคอมบนโต๊ะ...หลังจากนั้นทุกอย่างก็เหมือนเดิม ^^ แม้แต่เรา)

หัวไม่ไป ?
x ยอมรับว่าคนทุกคนถนัดแต่ละด้านไม่เท่ากันแน่ๆ แต่ถ้าได้พยายามแล้วก็พอแล้วล่ะ (แต่พยายามเป็นกิจวัตรนะ ไอ้ที่พยายามก่อนสอบอย่างบ้าคลั่งเนี่ย...ช่างมันเถอะ)

ไม่ได้เข้าเรียนเพราะงานยุ่ง / ตื่นสาย / เข้าไปเรียนก็ไม่รู้เรื่อง ?
x งานยุ่งจริงคงช่วยไม่ได้...
x ตื่นสายไม่เคยเป็นข้ออ้างที่ดี ถึงจะจริงก็เถอะ...
x เข้าไปเรียนก็ไม่รู้เรื่อง (ถ้าไม่เข้าแล้วเอาเวลาไปทำประโยชน์ก็ดีนะ...ถ้าเอาไปทำประโยชน์)
(หัวข้อ นี้นึกถึงวิชา elec secบน... แต่พอคิดแล้ว ถ้าเข้ามาคุย...ไม่เข้าดีแล้วล่ะ >^< แต่คนที่ไม่เข้าทำไมคะแนนดีกว่าคนเข้ามากมาย 555 กุโง่เอง กุมันไม่อ่านหนังสือสอบ)
อย่างไรก็ตาม เข้าไม่ถึง 80% หมดสิทธิ์สอบนะ... (อาจารย์คนไหนโหดๆคงน่ากลัว)


ปล0. ไอ้ที่ว่าทั้งหมดเราก็ทำ ถึงแม้จะรู้ (เชื่อเถอะทุกคนก็รู้ตัวเองดี รู้ว่าอะไรถูก อะไรผิด) แต่ก็ทำไม่ใช่เหรอ = =a

ปล1. การขุดคุ้ย - วิจารณ์ - นินทา ความผิดพลาดของคนอื่นเป็นเรื่องสนุกของคุณ ไม่ใช่ของเจ้าของเรื่องนั้น

ปล2. วันไหนไม่มีพวกเทพๆแล้วเราจะสอบกันยังไงเนี่ย = =a.

ปล3. รู้เขารู้เรา รบร้อยครั้ง ชนะร้อยครั้ง
อาจารย์แต่ละคนไม่เหมือนกัน (คนแต่ละคนก็ไม่เหมือนกัน) เลือกวิธีใช้กับแต่ละคนเองละกันนะ


อ่านแล้วอยากดันให้เพื่อนไปเขียนหนังสือ/บทความ ขายจริงๆ :P

Tuesday, September 16, 2008

ฤดูกาลสอบ

จากนักศึกษา เมื่อใกล้เข้าช่วงสอบ ก็กลายร่างเป็นนักสอบ ในทันใด

ความรู้ที่ร่ำเรียนมาทั้งหมด ต้องเอามาทุ่มเทให้กับการทำโจทย์เพื่อเตรียมตัวสอบ

ปีสอง เทอม หนึ่ง สอบ 6 วิชา 4 วิชา คำนวณล้วนๆ
ได้แก่
1. Engineering Mathematics III (คณิตศาสตร์วิศวกรรม III)
2. Discrete Mathematics (วิทยุทธคณิตศาสตร์, ภิณทณคณิตศาสตร์, และคณิตศาสตร์เต็มหน่วย จะเรียกชื่อไหนก็เรียกละกัน)
3. Basic Mechanics (กลศาสตร์พื้นฐาน) - วาดรูปๆ คำนวณๆ
4. Introduction to Electrical Engineering (วิศวกรรมไฟฟ้าเบื้องต้น) - วาดรูปๆ คำนวณๆ

ส่วนอีกสองวิชาที่เหลือคือ อ่านๆ จำๆ เข้าใจเล็กน้อยเป็นพอ
5. Computer Organization and Assembly - โครงสร้างคอมพิวเตอร์ และภาษาแอสแซมบลี
เป็นวิชาที่จะได้เรียนถึงไส้ถึงพุง รายละเอียดว่าเครื่องคอมพิวเตอร์ทำงานได้อย่างไร และเรียนรู้ภาษาเครื่อง (รู้แล้วเอาไปใช้คุยกับเครื่องคอมฯ ได้....[ฮา])
6. Man and Society มนุษย์กับสังคม --- (จำโลด)

อ้อๆ มีวิชาปฏิบัติอีกตัวคือ Practicum (จำชื่อเต็มไม่ได้ เอิ้ก) แต่เป็นวิชาที่ได้ลงมือ ประกอบวงจร รู้จักกับ cloud computing.... สนุกสนาน

สรุปได้ว่า เตรียมตัวสอบปีสองเทอมหนึ่งนี้ ทำอย่างเดียวคือ ทำโจทย์ๆๆๆๆ เปลืองกระดาษอย่างแรง.... แต่จำเป็นต้องฝึก ก็เปลืองน่ะแหละดีแล้ว

เอาเป็นว่า... blog นี้อยากพูดประมาณว่า ปีสองเทอมหนึ่ง วิชาคำนวณเยอะจัง - -"

ปล. เริ่มใช้นโยบายใหม่ blog เรื่องส่วนตั๊วส่วนตัว เขียนที่ blogspot ส่วน blog เรื่อง computer เขียนที่ nattster.siamdev.net ละกัน
ปล2. นโยบายใหม่ อีกอัน ... เหมือนจะใช้มานานแล้ว คือ พยายามเขียนอย่างน้อยเดือนละ 1 ครั้ง :D
ปล3. ไปดีกว่า อ่านหนังสือสอบต่อ.... ไม่สิ....ต้องเรียกว่า ทำโจทย์เตรียมสอบต่อมากกว่า

Saturday, August 23, 2008

ซื้ออุปกรณ์อิเล็กทรอนิกส์ จากร้านขายอะไหล่ (ใน "บ้านโป่ง")

วันนี้เป็นครั้งที่ 3 ที่ไปซื้ออุปกรณ์อิเล็กทรอนิกส์ (มานั่งประกอบวงจรเล็กๆ น้อยๆ)

ไปซื้อ resistor บอกเค้า ขอ 175 kOhm 1/4 watts (คิดในใจว่าไม่มีเท่านี้แน่ๆ)
เลยบอกเขาว่า ขอ resistor ที่ขนาดใกล้เคียง หรือรวมกันได้ขนาดเท่ากันก็ได้

เขาก็บอกว่า "ไม่มีค่ะ... ใกล้เคียงก็ 180 kOhm ค่ะ"
"อืม อนุกรมกันบวกกัน ขนานกันมันจะลด"
"งั้นเอา 180 kOhm ไปขนานกับ 5 kOhm ละกันนะคะน้อง ได้ 175 kOhm พอดี"

เราก็บอกว่าไม่เอา...พร้อมทั้งตกใจอย่างแรง หยิบเครื่องคิดเลขในร้านเขามาจิ้ม .... อืม...มันไม่ใช่ 175 ซักหน่อย ตกใจหมด เฮอๆ เราก็แย้งเขาว่ามันไม่ได้ 175 น๊า... เค้าก้อไม่ฟัง เฮอๆ (จำได้ว่า ขนานกัน เอาความต้านทานคูณหันหารด้วยความต้านทานบวกกัน นี่นา)

สรุปว่า ซื้อ 180 kOhm มาพร้อมกับซื้อ 100+50+25 kOhm มา (มั้ง)
แต่สุดท้าย เอาไปใส่วงจรก็เลือก 180 kOhm (เอาไปต่อกับ IC 555 เป็น Astable Square Wave Generator) ต้องการสร้างความถี่ 40kHz อ่า....สุดท้ายวงจรก็ใช้ได้แต่ยังดูทำงานแปลกๆ เฮอๆ

Sunday, August 17, 2008

ChinesePython: เขียนโปรแกรมด้วยภาษาจีน

เคยถามเพื่อนมั้ย? ว่า นายเขียนโปรแกรมภาษาอะไรอ่ะ?
แล้วโดนตอบกลับมาว่า "ภาษาอังกฤษ" (ปกติ อาจจะตอบกันว่า C, C#, Python, Java, ...)

ตอนนี้เตรียมเจอคำตอบใหม่ได้แล้ว.... เพื่อนคนนั้นอาจตอบว่า "ภาษาจีน" แทน !?!

วันนี้นั่งๆ อ่าน wikipedia เรื่อง Programming Language แล้วไปเจอบทความ Non-English-based programming languages เปิดๆ ไปเจอรายชื่อภาษาที่ไม่ได้ใช้ภาษาอังกฤษเป็น keyword ในการเขียนโปรแกรม

หนี่งในนั้นคือ ChinesePython.... มันคืออะไร? มันก็คือ ภาษา Python ที่เรารู้จักกันดีแต่โดนแปล keyword ต่างๆ คำสั่งต่างๆ ให้เป็นภาษาจีนให้หมด !?!

สาเหตุที่คนทำ แปล Python เป็น ChinesePython ขึ้นมา เพราะมองเห็นว่า การเรียนรู้วิธีการเขียนโปรแกรม (basic computer programming concepts) นั้นไม่ยาก แต่มันยากสำหรับนักเรียนชาวจีนบางคนเพราะมีอุปสรรคทางด้านภาษาอังกฤษ กว่าจะเริ่มเรียนรู้การเขียนโปรแกรมได้ก็ต้องเรียนรู้ภาษาอังกฤษก่อน (ที่มา)

ลองมาดูตัวอย่างโปรแกรม ภาษา ChinesePython เทียบกับ Python ดีกว่า โปรแกรมต่อไปนี้ทำหน้าที่แปลง \n\r เป็น \n


import sys
filenames = sys.argv[1:]

def fixline(filename):
text = open(filename).read()
text = text.replace('\n\r','\n')
return text

for file in filenames:
print fixline(file)
载入 系统
文件名 = 系统.参数[1:]

定义 修正行尾(文件):
内文 = 打开(文件名).读入()
内文 = 内文.替换('\n\r','\n')
传回 内文

取 文件 自 文件名:
写 修正行尾(文件)
ไหนๆ ลองเขียน ChinesePython บ้าง (ลอง print "Hello World" ดู)
> 写 "หนีเห่า..."

ไม่แน่...ต่อไปถ้าเกิดอยากให้เด็กไทยหัดเขียนโปรแกรมโดยไม่มีอุปสรรคทางภาษา อาจต้องแปล Python เป็น ThaiPython (ใครสนใจจะเขียนภาษานี้มั้ยครับ)

ลองนึกดูเล่นๆ (โปรแกรมคำนวณค่าเฉลี่ย)
ล = [3.0, 1.5, 2.0] #  ล ลำดับคะแนน
ร = 0.0 # ร ผลรวม
สำหรับ ค ใน ล:
ร += ค
ร /= ขนาด(ล)
พิมพ์ "ค่าเฉลี่ย ", ร


น่าสนใจมะ?

Tuesday, July 22, 2008

โปรแกรมดีๆ ที่ฟรีสำหรับ เผา(burn) CD/DVD บนวินโดวส์


ค้นๆ บนเน็ต เจอบทความเขา review ซอฟต์แวร์สำหรับ ทำงานทุกอย่างเกี่ยวกับ CD (คนส่วนใหญ่นิยมใช้ เนโรเบิร์นนิ่งโรม.... หรือไม่ก็ อัลกอฮอล์ 120%) แต่ทีนี้ลองมองๆ หาซอฟต์แวร์ฟรีๆ ดีๆ ที่ทำงานได้เหมือนกับซอฟต์แวร์ตัวอื่นๆ ก็ไปเจอกับ ImgBurn ขนาดเพียงแค่ 1.9 MB

Monday, July 21, 2008

Sort Python Dictionry ด้วย Value

mydict = {"abc":4, "def":2, "jkl":1}

mylist = sorted(mydict.iteritems(), key=lambda (k,v): (v,k))

เจ๋งหง่ะ :D