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