จราจรกับหลักเหตุผล

June 28th, 2009

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

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

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

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

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

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

ผมว่านอกจากรณรงค์เมาไม่ขับแล้ว เราน่าจะมารณรงค์ขับแล้วไม่ใจร้อนด้วยครับ

thought ,

เขียนโปรแกรมกันเถอะ

June 7th, 2009

เมื่อวานนี้อ่านข่าวบน /.jp แล้วเจอบทสัมภาษณ์ประธานบริษัท NTT Data ซึ่งเป็นบริษัท IT ในกลุ่ม NTT

若い時にプログラムを書こう、必ず人生の豊かさにつながる
– 山下徹 NTTデータ社長

แปลเป็นไทยได้ความว่า

เขียนโปรแกรมกันไปเถอะในช่วงที่อายุยังน้อย, สิ่งเหล่านี้จะเชื่อมโยงกับความรุ่มรวยในชีวิตอย่างแน่นอน
– โทรุ ยะมะชิตะ ประธานบริษัทเอ็นทีทีดาต้า

ถ้าอ่านบทสัมภาษณ์ฉบับเต็มแล้ว จะมีประเด็นต่างๆ อยู่หลายประเด็น แต่ในฐานะคนสอนหนังสือเด็กปริญญาตรี ผมสนใจประเด็นการเขียนโปรแกรมเป็นหลัก เพราะปัจจุบันผมรู้สึกว่าตัวเองยังไม่สามารถทำให้เด็กๆ ที่สอนอยู่ หันมาชอบ สนใจและตั้งใจที่จะเขียนโปรแกรมคอมพิวเตอร์ได้ แม้ว่าเด็กๆ เหล่านั้นจะเรียนในสาขาที่โลกภายนอกคาดหวังว่า เมื่อจบแล้วจะต้องมีทักษะในการเขียนโปรแกรมที่เพียงพอ

จริงอยู่ว่าเด็กส่วนใหญ่จะพอเขียนโปรแกรมได้ อาจจะใช้วิธีตัดแปะเอาบ้าง หาทางเอาตัวรอดกันไปได้ แต่ส่วนใหญ่มักจะรู้สึกว่าการเขียนโปรแกรมเป็นเรื่องยาก เป็นเรื่องน่าเบื่อ เป็นงานคนชั้นล่าง (เหมือนผู้ใช้แรงงานในสังคมไอที) โดยเฉพาะค่านิยมอันหลังนี้ เป็นสิ่งที่ผมไม่เห็นด้วยที่สุด เพราะผมเชื่อว่าเราไม่สามารถเป็น system analyst เป็น project manager ที่ดี หรือเป็นตำแหน่งต่างๆ ที่บางบริษัทบอกว่าเป็นเหมือนยอดปิระมิดได้ โดยไม่มีพื้นฐาน ทักษะการเขียนโปรแกรม หรือไม่รู้ว่าถ้าออกแบบไปอย่างนี้แล้วคนที่เอาไป implement เขาจะทำยังไง

ผมตั้งใจว่าต่อไปนี้ผมพยายามลบค่านิยมนี้ออกจากเด็กๆ ที่เข้ามาเรียนในภาค แม้ว่ามันจะเป็นเรื่องยาก เพราะแนวความคิดว่างานบริหารจัดการเป็นงานสบายเป็นเรื่องที่ฝังรากลึกไปแล้ว รวมถึงการเสนอทางเลือกที่ดูเหมือนดีกว่า ว่าการเรียนวิธีการบริหารจัดการโดยตรงก็สามารถเข้าใจวิธีการ และเทคนิคต่างๆ ได้ สามารถเริ่มงานโดยเป็นผู้บริหารได้เลย ไม่จำเป็นต้องทำงานต๊อกต๋อยเหมือนพวกที่เรียนเขียนโปรแกรม เขาทำแค่ออกแบบ เสนอแนวความคิด ที่เหลือก็ปล่อยให้ใครก็ไม่รู้ทำก็หมดเรื่อง

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

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

อ้างอิง: http://slashdot.jp/developers/09/06/05/066228.shtml

thought ,

Scroll Wheel บน Bluetooth Mouse

June 2nd, 2009

วันนี้ลองใช้ Bluetooth Mouse ที่มีอยู่ หลังจากที่ไม่ได้ใช้มานาน (หลังๆ ใช้แต่ touchpad จนนิ้วเริ่มสึก) ปรากฏว่าไม่สามารถใช้ scroll wheel ได้ แถม Ubuntu รุ่นหลังๆ ใช้ HAL ทำให้ไม่สามารถแก้ข้อกำหนดเกี่ยวกับ mouse ในไฟล์ xorg.conf ได้

วิธีการแก้ไขจะต้องไปสร้างไฟล์ชื่ /etc/hal/fdi/policy/mouse.fdi แล้วใส่

<?xml version="1.0" encoding="UTF-8"?> 
 
<match key="info.product" string="Mouseemu virtual mouse">
 <merge key="input.x11_options.ZAxisMapping" type="string">4 5</merge>
</match>

เพื่อเพิ่ม option ที่เกี่ยวกับ scroll wheel สำหรับ mouse สุดท้ายรีบูทเครื่องใหม่ ก็เรียบร้อย

linux , ,

PDFCrop

May 22nd, 2009

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

ผมก็เลยคิดจะเปลี่ยนจากการแปะคำสั่งวาดภาพไปในไฟล์ตรงๆ เขียนไฟล์ LaTeX ต่างหากสำหรับรูปแต่ละรูป ทำเป็น PDF แล้วค่อยเอาไปแปะทีหลัง ซึ่งจะทำให้การปรับเปลี่ยนขนาด ทำได้ง่ายมากๆ ลองหาดูในที่ต่างๆ สุดท้าย ก็เจอโปรแกรม PDFCrop เป็นสคริปต์ที่มากับแพคเกจ texlive-extra-utils บน Ubuntu โปรแกรมนี้ทำหน้าที่ตัดขอบว่างๆ ทั้งหมดของรูปออก ทำให้สามารถใช้ includegraphics แปะเข้าไปในไฟล์อื่นได้ง่ายๆ วิธีใช้ก็คือ

$ pdfcrop myfig.pdf

latex ,

เพิ่มเลขหน้าให้ PDF

May 21st, 2009

การใช้ LaTeX ทำสไลด์สำหรับใช้สอนหนังสือ จะมีความลำบากนิดหน่อยในการเตรียม handout สำหรับแจกนักศึกษา (จริงๆ แล้ว ไม่ค่อยอยากแจกเท่าไหร่ พอมีสไลด์ครบแล้ว ส่วนใหญ่ก็จะคุยกันเยอะ) ถ้าใช้ Beamer ก็จะมีแพคเกจ pgfpages มาให้ใช้สำหรับพิมพ์สไลด์หลายๆ หน้ารวมกันในหน้าเดียวอยู่แล้ว แต่ผมชอบใช้โปรแกรม pdfnup ที่มาพร้อมกับแพคเกจ pdfjam บน Ubuntu มากกว่า วิธีใช้ก็ง่ายๆ เช่น

$ pdfnup --nup 2x2 --frame true myslides.pdf

จะได้ผลลัพธ์เป็นไฟล์ PDF ชื่อ myslides-2×2.pdf วางสไลด์สี่หน้าต่อหนึ่งแผ่น แบบ 2 คูณ 2

ทีนี้ทุกเทอมก็ใช้อย่างนี้มาตลอด มาเทอมนี้อยากให้มีเลขหน้าเพิ่มเข้าไปด้วย จะได้เรียงลำดับหน้าต่างๆ ได้ไม่ยาก (ปกติร้านถ่ายเอกสารจะใช้มือเขียนเลขหน้าให้) วิธีที่ง่ายที่สุดก็คือไปหา Adobe Acrobat ตัวจริงมา จะมีฟังก์ชันให้ใส่เลขหน้าโดยอัตโนมัติ แต่เนื่องจากเราไม่อยากเสียตังค์ ก็เลยมานั่งดูโปรแกรม pdfnup ว่าจริงๆ เป็นสคริปต์ที่สร้างไฟล์สำหรับ pdfLaTeX ที่ใช้แพคเกจ pdfpages เพื่อเอาหน้าหลายๆ หน้ามาเรียงไว้ในหน้าเดียวกัน ซึ่งจะเรียงแบบหนึ่งหน้าต่อหนึ่งหน้าก็ได้ เลยลองเล่นดู ใช้แพคเกจ fancyhdr ของ LaTeX มาช่วยกำหนดตำแหน่งเลขหน้า สุดท้ายได้ไฟล์สำหรับใส่เลขหน้าอัตโนมัติมา

\documentclass{article}
 
\usepackage[final]{pdfpages}
\usepackage[paper=a4paper,landscape,tmargin=2cm,bmargin=2.3cm,lmargin=2.5cm,rmargin=1.5cm]{geometry}
\usepackage{fancyhdr}
 
\setcounter{page}{..PAGE..}
\pagestyle{fancy}
\lhead{My Course}
\cfoot{}
\rfoot{{\LARGE\thepage}}
\renewcommand {\headrulewidth}{0pt}
\renewcommand {\footrulewidth}{0pt}
 
\begin{document}
	\includepdfset{pages=-,pagecommand=\thispagestyle{fancy}}
	\includepdf[fitpaper=true,scale=1]{..FILE..}
\end{document}

และเพื่อให้เกิดความสะดวกในการทำงาน ก็เลยไปเขียนสคริปต์มาอีกอันหนึ่ง ใช้ sed แก้ไข ..PAGE.. และ ..FILE.. ใน LaTeX ให้เป็นเลขหน้าเริ่มต้น และชื่อไฟล์ PDF ที่ต้องการ

#!/bin/sh
 
filename=$1
pagenumber=$2
newname=${1%.pdf}-p.tex
sed -e "s/\.\.FILE\.\./"$filename"/g" -e "s/\.\.PAGE\.\./"$pagenumber"/g" < page.tex > $newname
 
pdflatex $newname
pdflatex $newname
rm $newname
rm ${newname%tex}log

สุดท้ายจะได้โปรแกรมง่ายๆ สำหรับเติมเลขหน้าได้ตามต้องการ ส่วนที่ผมยังงงๆ อยู่ก็คือ ไม่เข้าใจว่าทำไมฟอนท์ใน LaTeX มันมีขนาดเล็กกว่าปกติ เลยต้องกำหนดให้ใช้ \LARGE สำหรับเลขหน้า คิดว่าอาจจะมีปัญหาอะไรบางอย่างเกี่ยวกับขนาดกระดาษ หรืออะไรซักอย่าง เลยแก้แบบง่ายๆ ไปก่อน ขี้เกียจไปค้นดูละเอียดๆ ส่วนคนอื่นถ้าจะเอาไปใช้ ก็สามารถปรับแต่งตำแหน่งๆ หรือระยะขอบกระดาษได้โดยแก้ที่ geometry ครับ

latex, linux , , , ,