หลังจากงานราษฎร์ งานหลวง และโรคภัยไข้เจ็บรุมเร้า วันนี้มาเพิ่มคำศัพท์ภาษาญี่ปุ่นเกี่ยวกับคอมพิวเตอร์ ต่ออีกหน่อยดีกว่า วันนี้ว่าด้วยฮาร์ดแวร์ทั้งหลาย และศัพท์เกี่ยวข้องที่ @wittawatj แนะนำไว้
- คนญี่ปุ่นมักจะเรียกอุปกรณ์คอมพิวเตอร์ต่างๆ โดยทับศัพท์ ซึ่งจะเขียนด้วยตัวคะตะคะนะ ได้แก่ จอภาพ = モニタ (monita), คีย์บอร์ด = キーボード (ki-bo-do), เมาส์ = マウス (mausu), ฮาร์ดดิสก์ = ハードディスク (ha-dodisuku), หน่วยความจำ = メモリ (memori), เมนบอร์ด = マザーボード (maza-bo-do, ลองทายกันดูเองล่ะกันว่ามาจากคำว่าอะไร แต่ไม่ใช่ mainboard), ยกเว้นพวกที่เป็นคำย่อจะใช้ตามภาษาอังกฤษไปอย่างนั้นเลย อย่างเช่น CD-ROM แต่จริงๆ คำนี้ก็มีชื่อเรียกรวมๆ เป็น 光ディスク (hikari disuku) คำว่า 光 แปลว่าแสง รวมแล้วจึงหมายถึง optical disk
- มีจุดสังเกตอยู่จุดหนึ่ง คือ เวลาเขียนเสียงยาวด้วยคะตะคะนะ จะเขียนด้วยเครื่องหมาย ー เสมอ ถ้าเป็นฮิระงะนะจะใช้ตัวอักษรที่แทนเสียงนั้นมากำกับ
- พูดถึงอุปกรณ์ต่างๆ แล้ว ลืมบอกไปว่ารวมๆ แล้ว จะเรียกว่า ハードウェア (ha-do wea) หรือ hardware นั่นเอง
- ที่เหลือก็ศัพท์เกี่ยวข้อง เช่น click = クリック, ถ้าจะบูตเครื่องเริ่มใช้งาน จะใช้ศัพท์บัญญัติว่า 起動 (kidou) แปลว่า เริ่มทำงาน, ส่วนรีบูตจะใช้ว่า 再起動 (saikidou) แปลว่าเริ่มงานใหม่ ตัวคันจิ 再 (sai) เป็น prefix เหมือนกับ re- ในภาษาอังกฤษ
japanese, teaching
คอมพิวเตอร์, ภาษาญี่ปุ่น, japanese
ด้วยความที่อยากให้นักศึกษามีส่วนร่วมในการเรียนมากขึ้น เทอมนี้เลยพยายามเรียกนักศึกษาให้ช่วยตอบคำถาม หรือออกมาทำอะไรเล่นหน้าห้อง อย่างน้อยจะได้หลับกันน้อยลง หรือพยายามทำแบบฝึกหัดที่ให้ในห้องเรียนบ้าง แต่จะให้เลือกชื่อก็จำชื่อนักศึกษาทั้งหมดไม่ได้ แถมอาจจะเรียกบางคนซ้ำ หรือไม่ได้เรียกบางคนเลย เมื่อวานพอมีเวลาว่างอยู่บ้าง เลยนั่งเขียนโปรแกรม Java เล็กๆ ขึ้นมาหนึ่งตัว เอาไว้สำหรับสุ่มชื่อนักศึกษาในชั้นเรียน ตอนแรกก็กะจะทำเป็นโปรแกรมง่ายๆ คือแค่เปิดไฟล์อ่านชื่อนักศึกษามา แล้วก็แค่สุ่ม แต่ถ้าทำอย่างนั้นก็มีโอกาสที่บางคนจะโดนซ้ำ หรือสุ่มไม่ทั่วถึง
เพื่อเผื่อแผ่ให้ทุกคนถูกเรียกกันอย่างทั่วถึง เลยปรับการสุ่มนิดหน่อย โดยเก็บจำนวนครั้งที่นักศึกษาแต่ละคนถูกเรียกไว้ ถ้าโดนเรียกแล้วหนึ่งครั้ง ก็จะกำหนดโอกาสที่จะถูกสุ่มขึ้นมาอีกให้เป็น 1/2 ของเพื่อนที่ยังไม่เคยโดนเรียก ถ้าโดนสองครั้งก็จะลดไปอีกให้เหลือ 1/4 ของเพื่อนๆ คือให้เป็น 1/(2^n) เมื่อ n เป็นจำนวนครั้งที่ถูกเรียก เสร็จแล้วก็มานึกอีกว่าบางคนอาจจะโดนเรียกแล้วไม่อยู่ อย่ากระนั้นเลยจะต้องเก็บข้อมูลไว้หน่อยว่าคนนี้โดดเรียน เลยทำปุ่มให้กดได้ด้วยว่าโดดไปแล้วกี่ครั้ง (ไม่รู้เก็บไว้ทำไมเหมือนกัน)
สุดท้ายได้โปรแกรมออกมาหน้าตาแบบนี้

ถ้าใครสนใจลองโหลดไปเล่นได้ที่นี่ วิธีใช้ก็คือเตรียม text file ใส่ชื่อนักศึกษาบรรทัดละคน เขียน ID ก่อน แล้วค่อยตามด้วยชื่อ คั่นด้วย TAB อาจจะใส่จำนวนครั้งที่เรียกนักศึกษาไปแล้วด้วยก็ได้ คั่นด้วย TAB เหมือนกัน
ส่วนโค้ด ถ้าใครอยากได้ก็ขอมาล่ะกันครับ มันค่อนข้างเละเทะ ไม่อยากเผย อายครับ
ถ้ามีเวลาบ้าอีก ก็อาจจะเพิ่มฟีเจอร์อื่นๆ ไปด้วย
programming, teaching
programming, teaching
เวลาผมให้นักศึกษาทำการบ้านเขียนโปรแกรม ผมมักจะให้ส่งการบ้านทางเมล เพราะคิดว่าสะดวกที่จะตรวจทางเมลมากกว่า จะทดสอบด้วยการรันโปรแกรมที่ส่งมาก็ได้ รวมทั้งยังสามารถใช้เครื่องมือต่างๆ ในการตรวจจับความคล้ายของโปรแกรมในกรณีที่ลอกกันมาได้อีกด้วย แต่ประสบการณ์ที่ผ่านมา จะพบปัญหาต่างๆ ที่ทำให้ผมไม่อยากตรวจการบ้าน ก็คือ เมลที่แต่ละคนส่งมา จะมีรูปแบบหลากหลาย ไม่ค่อยตรงกับที่กำหนดให้ เช่น ไม่ตั้งชื่อไฟล์ตามที่กำหนด บางคนก็ใช้โปรแกรมบีบอัดแบบแปลกๆ มาให้ บางทีบอกให้ส่งเป็น plain text ก็จะมีคนเขียนใน MS Word แล้วเปลี่ยน extension เป็น .txt จนอ่านไม่ออก หรือกำหนดให้ส่งเป็น .jar แต่ไม่รู้ยังไงใช้ WinRAR ทำเป็น .rar แล้วเปลี่ยน extension เป็น .jar เฉยเลย สุดท้ายผมจะต้องมานั่งไล่เช็คไล่เก็บไฟล์ทีละฉบับ บางคนยังส่งมาหลายที แถมยังมีการใช้แอดเดรสเดียวกัน ส่งการบ้านหลายชุดแทนเพื่อนอีก ทำให้สับสนได้ง่ายมาก และเนื่องจากผมจะต้องสอนนักศึกษาไม่น้อยกว่า 70-80 คน จึงเสียเวลาไปกับเรื่องนี้เยอะมาก จนพาลไม่ค่อยจะอยากตรวจสักเท่าไหร่
เมื่อวานเลยนั่งคิดว่าจะทำยังไงกับการบ้านในเทอมที่จะถึงนี้ดี จะทำเป็นเว็บให้อัพโหลดไฟล์ ก็ขี้เกียจเขียนเว็บ สุดท้ายจึงตัดสินใจจะใช้เมลเหมือนเดิม แล้วไปเขียนสคริปต์ด้วย fetchmail กับ procmail หรือไม่ก็ maildrop เพื่อคัดแยกเมลที่ส่งมา ไปไว้ในไดเรคทอรีที่กำหนด แยก attachment ออกจากเมล โดยอาจจะใช้ Perl หรือไม่ก็โปรแกรม ripMime พร้อมทั้งตอบเมลกลับแบบอัตโนมัติว่าได้รับการบ้านแล้ว (ในกรณีที่ส่งมาถูกตามที่กำหนด) สุดท้ายหวังว่าจะช่วยให้จัดการกับการบ้านทางเมลได้สบายขึ้น แต่วิธีการทั้งหมดก็จะยังไม่สามารถจัดการกับกรณีที่ส่งไฟล์มาผิดประเภทได้ แต่ไม่เป็นไรเพราะมีคนแนะนำวิธีจัดการมาให้แล้ว ก็คือไม่ต้องตรวจให้ 0 ไปเลย คนแนะนำรับรองว่าแค่ทำเพียงครั้งเดียวก็จะส่งถูกต้องทุกคน จริงๆ แล้วยังไม่ได้เขียนสคริปต์ทั้งหมดหรอก แต่จะเอามาเล่าเรื่อยๆ วันนี้เล่าถึง fetchmail ก่อนล่ะกัน
โปรแกรม fetchmail เป็นโปรแกรมสำหรับดึงเมลจากเซิร์ฟเวอร์ (จะเป็นแบบ POP3 หรือ IMAP ก็ได้) มาไว้ที่เครื่องของเรา การทำงานของมัน ก็จะคล้ายๆ โปรแกรมอ่านเมลทั่วไป เพียงแต่ว่าเป็นแบบ command line ที่ให้โหลดเป็นครั้งๆ ไป และอาจจะกำหนดให้ทำงานเป็น daemon คอยเช็คและโหลดอยู่ตลอดเวลาได้ด้วย การใช้งานก็ง่ายมาก แค่กำหนดข้อมูลเซิร์ฟเวอร์ที่จะไปโหลดไว้ในไฟล์ .fetchmailrc เช่น
set daemon 300
poll mail.mydomain.com protocol pop3 user "myname" password "mypassword"
mimedecode
mda "/usr/bin/maildrop"
no keep
fetchall
จะเป็นกำหนดให้อ่านเมลทั้งหมดจากเซิร์ฟเวอร์ด้วยโปรโตคอล pop3 ตามที่กำหนด จากนั้นส่งเมลที่ได้ทีละฉบับไปยังโปรแกรม maildrop ซึ่งเราจะสามารถกำหนด regular expression สำหรับคัดแยกเมลได้ ทีนี้จะเขียนวิธีการคัดแยกทำยังไงเอาไว้ต่อคราวหน้าล่ะกัน
teaching
assignment, fetchmail, linux, teaching, unix
เนื่องจากเทอมหน้าจะเปลี่ยนไปสอนวิชา Computer Architecture วิชาเทอมต้นนี่เปลี่ยนมาหลายวิชาแล้ว ทำงานมาสามปี ไม่เคยสอนซ้ำกันซักปี ปีแรกสอนภาษาซีครึ่งหนึ่ง อีกครึ่งสอนวิชา Foundation of Information Systems วิชาที่หายไปจากหลักสูตรแล้ว ปีที่สองก็ไปสอน DBMS ครึ่งหนึ่ง กับ Intelligent Systems อีกครึ่งหนึ่ง วิชาหลังนี่แปลงกายมาเป็น Artificial Intelligence ในหลักสูตรใหม่ แถมย้ายไปอยู่เทอมหลัง ปีที่แล้วกลับไปสอนภาษาซีอีกครั้งหนึ่งแต่คราวนี้สอนเต็มตัวเลย ปีหน้าด้วยเหตุการณ์หลายๆ อย่าง เลยทำให้ได้ไปสอน Computer Architecture แทน ก็เลยต้องเตรียมตัวกันพอสมควร
Computer Architecture มีเป้าหมายให้นักศึกษาเข้าใจหลักการทำงานพื้นฐานภายในระบบคอมพิวเตอร์ ผมยังเชื่อว่าวิชานี้เป็นความรู้พื้นฐานที่สำคัญสำหรับนักศึกษาที่เรียนทางด้านนี้ แม้ว่าปัจจุบันระบบซอฟท์แวร์จะทำสิ่งต่างๆ ซ้อนไว้หลายชั้น จนเราแทบจะไม่จำเป็นต้องสนใจหรือเข้าใจว่าระบบทำงานยังไง เราก็สามารถสร้างซอฟท์แวร์หรือแอพพลิเคชันได้ แต่สุดท้ายถ้าอยากทำซอฟท์แวร์ที่ใช้ประสิทธิภาพสูงสุดของระบบจริงๆ ก็จำเป็นที่จะต้องเข้าใจสิ่งต่างๆ เหล่านี้
ปัญหาของการเรียนวิชานี้ก็คือ ส่วนใหญ่จะเน้นไปที่ทฤษฎี หรือวิธีการต่างๆ จนบางครั้ง นักศึกษาคิดว่าเป็นวิชาท่องจำ หรือบางครั้งก็เน้นไปที่การออกแบบฮาร์ดแวร์ ซึ่งอาจจะไม่เหมาะกับนักศึกษาที่เพิ่งเริ่มเรียนปีที่สองในมหาวิทยาลัย และยังเป็นเทอมแรกที่เรียนวิชาเฉพาะสาขาด้วย นอกจากนี้นักศึกษาที่จะสอนก็เป็นนักศึกษาสาขาวิทยาการคอมพิวเตอร์ กับเทคโนโลยีสารสนเทศ ที่จะเรียน Digital Circuits ในเทอมเดียวกัน แถมเป้าหมายของหลักสูตรก็อยากจะให้นักศึกษาเหล่านี้จบไปทำงานในสาขาทางด้านซอฟท์แวร์ หรือไปทางในเชิงทฤษฎี
สุดท้ายก็ไปเจอหนังสือ Computer Systems: A Programmer’s Perspective ที่พัฒนาโดยอาจารย์จาก CMU ที่เจอปัญหาคล้ายๆ กัน เลยเปลี่ยนวิธีการสอนใหม่ เป็นการเรียนรู้สถาปัตยกรรม หรือการทำงานของคอมพิวเตอร์ ผ่านทางการเขียนโปรแกรม และการทดลองด้วยภาษาซี เพื่อทำให้ผู้เรียนกลายเป็นโปรแกรมเมอร์ที่เข้าใจการทำงานของระบบคอมพิวเตอร์ และสามารถเขียนโปรแกรมที่ดึงความสามารถของระบบออกมาได้เต็มที่ จริงๆ แล้ว Matt ก็เคยใช้หนังสือเล่มนี้สอนเมื่อสามปีก่อนเหมือนกัน ได้เวลาเริ่มทำสไลด์ประกอบการสอนแล้ว คงจะได้สนุกกับวิชานี้อีกเทอมหนึ่งล่ะ ถ้ามีเวลาอยากสอนเขียนโปรแกรมที่ใช้พวก SSE หรือ MMX เพิ่มด้วยนะ แต่หวังว่าคงจะไม่ใช่คนสอนสนุกอยู่คนเดียวนะ
teaching
computer architecture, teaching
ช่วงนี้มีคนถามบ่อยๆ ว่า “ปิดเทอมแล้วอาจารย์ทำอะไร?” ส่วนใหญ่ก็จะตอบไปเรื่อยเปื่อยตามสิ่งที่กำลังทำอยู่ในตอนนั้น แต่พอลองมานั่งนึกจริงๆ จึงๆ ดูแล้วก็มีสิ่งที่ต้องทำอีกเยอะเหมือนกัน
- ช่วยทำระบบค้นหาคำแปลศัพท์เฉพาะทางอัตโนมัติให้เสร็จ อันนี้หมายถึงโปรแกรมที่ทำงานได้จริงผ่านเว็บ และเปเปอร์ที่เขียนไปได้เยอะแล้วด้วย
- ทำไอเดียเกี่ยวกับ SVM ที่มีอยู่ให้กลายเป็นจริง อยากส่งไปงาน ECML2008 ปลายเดือนนี้ ไม่รู้จะทันหรือเปล่า
- ปรับปรุงระบบเก็บข้อมูล KPI ของอาจารย์แต่ละคนใน SIIT ที่ทำเมื่อปีที่แล้วให้ดีขึ้น คงต้องทำให้เสร็จก่อนต้นเดือนพฤษภา
- เตรียมระบบและบทความเกี่ยวกับการแข่งขัน Robocode ที่จะจัดร่วมกับ vcharkarn.com เพราะใกล้เวลาจะต้องประกาศอย่างเป็นทางการแล้ว
- ทำระบบสนับสนุนการสอนของตัวเอง เช่น ระบบเช็คชื่อนักศึกษาที่เข้าเรียนผ่านเว็บ
- อ่านหนังสือ Beautiful Code ที่เพิ่งได้มาสดๆ ร้อนๆ
- อ่านหนังสือ CS:APP เพื่อจะได้เตรียมสอนวิชา Computer Architecture ในเทอมหน้า อันนี้อยู่ในโครงการ Learning by Teaching
(เป็นการหาเรื่องใส่ตัวโดยใช่เหตุ)
- หาไอเดียใหม่ๆ มาสอนแล็บ Web Application Development ให้ได้ผลมากกว่านี้ หรือใช้เทคนิคที่ใหม่กว่าเดิม
- อ่านหนังสือ Ruby Programming Language เพื่อจะได้เขียน Ruby ให้แม่นๆ กว่านี้ คือจำพวก Syntax ไม่ค่อยได้ กับไม่ค่อยรู้รายละเอียดว่ามันคืออะไรด้วย ที่เขียนมาส่วนใหญ่ใช้เดาๆ เอา
ลองกลับไปดูรายการที่เขียนมาแล้ว ตูจะมีเวลาทำอย่างอื่นไหมเนี้ย ยังอยากทำอย่างอื่นด้วยนะ เช่น หาเวลาไปเดินถ่ายรูปเล่น แถมวันลาพักร้อนก็พอกพูนเยอะแล้วเหมือนกัน ต้องหาเวลาใช้บ้างด้วย ที่สำคัญช่วงนี้โดนบ่นบ่อยๆ ว่าทำงานมากเกินไปแล้ว เฮ้อ….. แต่ก็ยังสนุกที่ได้ทำงานอยู่นะ
teaching, university
summer, work
Recent Comments