msgbartop
Just another blog of mine
msgbarbottom

23 Apr 09 Preferred Applications บน GNOME

วันนี้ลองติดตั้ง Acrobat Reader บน Jaunty แล้วพลาดไปตอบว่า ให้เปิด acroread เป็น default application เวลาเปิดไฟล์ PDF แต่จริงๆ แล้ว โดยทั่วๆ ไปชอบใช้ evince มากกว่า ก็เลยต้องหาวิธีแก้ ซึ่งวิธีที่ง่ายที่สุดก็คือ reconfigure ตัวแพคเกจใหม่

$ sudo dpkg-reconfigure acroread

แต่ถ้าหากจะกำหนด default application เวลาเปิดไฟล์ประเภทต่างๆ จะทำได้โดยไปแก้ไขไฟล์ที่

~/.local/share/applications/mimeapps.list

หรือถ้าจะกำหนดให้กับผู้ใช้ทุกคนในเครื่อง ก็ให้ไปแก้ไขไฟล์

/etc/gnome/defaults.list

อ้างอิง: http://ubuntuforums.org/showthread.php?p=2161195

Tags: , ,

22 Apr 09 Mail Merge ด้วย Python

หลังจากถูกถล่มด้วยงานต่างๆ ทำให้ไม่ได้มาเขียนสองเดือนกว่าๆ พอดีช่วงนี้ช่วยจัดงาน PAKDD2009 อยู่ และมีงานที่เกี่ยวข้องที่ต้องใช้สคริปต์ เลยเอามาจดไว้ที่นี่หน่อยกันลืม

เรื่องของเรื่องก็คือผมต้องการส่งอีเมลไปยังคนหลายๆ คน โดยมีเนื้อหาที่แตกต่างกันเล็กน้อย ผมเลยเริ่มจากเปิด OpenOffice.org Spreadsheet ขึ้นมาเขียนข้อมูลต่างๆ ที่ต้องการแปะลงไปในจดหมาย แล้วเก็บเป็นไฟล์ CSV (Comma-Separated Value) ที่เป็นสำหรับเก็บข้อมูลแบบง่ายที่สุด แต่ละบรรทัดแทนข้อมูลแต่ละเรคอร์ด และใช้เครื่องหมาย “,” คั่นระหว่างข้อมูลแต่ละฟิลด์ จากนั้นก็เขียนสคริปต์ Python เพื่ออ่านข้อมูลจากไฟล์ CSV ที่ทำไว้ เอาไปแปะในเทมเพลตที่เตรียมไว้ โดย Python จะมีคลาสสำหรับอ่านเขียนไฟล์ CSV เป็นคลาสมาตรฐานอยู่แล้ว ก็เลยสามารถทำงานได้สะดวกมาก

วิธีใช้คลาส csv เพื่ออ่านข้อมูล จะทำอย่างนี้

import csv
data = csv.reader(open('myfile.csv'), delimiter=',', quotechar='"')
for row in data:
	print row[0]

csv.reader เป็นคลาสสำหรับจัดการอ่านข้อมูลแบบ CSV รับอาร์กิวเมนต์เป็นไฟล์ เครื่องหมายที่ใช้คั่นระหว่างฟิลด์ และเครื่องหมายที่ใช้เป็น quote ครอบข้อมูลแต่ละฟิลด์ เมื่อสร้างออพเจคต์ของ csv.reader ขึ้นมาแล้ว ก็สามารถวนรอบเพื่ออ่านไฟล์ขึ้นมาทีละเรคอร์ดได้เลย โดยข้อมูลที่อ่านขึ้นมาจะเก็บไว้ในรูปอาเรย์ อย่างกรณีนี้ row[0] ก็คือข้อมูลในฟิลด์แรกสุด

หลังจากนี้เราก็ต้องเตรียมเทมเพลต ซึ่งก็คือกำหนดตัวแปรสตริงเท่านั้นเอง เช่น

template = """
Dear {r[0]},
 
I would like to send you the following information:
 
{r[1]}
 
Best Regards,
Cholwich
"""

จะเห็นว่าสตริงนี้มีสัญลักษณ์พิเศษ ระบุข้อมูลที่เราต้องการจะเอาไปแทรก {r[0]} หมายถึงสมาชิกตัวแรกของตัวแปร r ที่ส่งมาเป็นพารามิเตอร์ อันนี้เป็นฟีเจอร์ String Formatting ของ Python อยู่แล้ว เมื่อกำหนดเทมเพลตเสร็จ สั่งให้ Python แทรกข้อมูลโดย

output = template.format(r=row)

จะได้ผลลัพธ์ที่ผสานข้อมูลเข้าไปแล้ว เป็นสตริงเก็บไว้ที่ตัวแปรชื่อ output จากนั้นผมก็สามารถเอาไปส่งเมล์ หรือเอาไปเขียนลงไฟล์เก็บไว้ได้ พอเอาทั้งหมดมารวมกันก็จะได้

import csv
 
template = """
Dear {r[0]},
 
I would like to send you the following information:
 
{r[1]}
 
Best Regards,
Cholwich.
"""
data = csv.reader(open('myfile.csv'), delimiter=',', quotechar='"')
 
for row in data:
	output = template.format(r=row)
	f = open(row[2], 'w')
	f.write(output)
	f.close()

สุดท้ายก็จะได้สคริปต์ง่ายๆ สำหรับทำ mail merge ที่ได้ output เป็นไฟล์แยกกัน โดยระบุชื่อไฟล์ไว้ที่ row[2]

อ้างอิง:

  1. PEP 3103: Advanced String Formatting
  2. Python csv — CSV File Reading and Writing

Tags: ,

20 Feb 09 ทำไมผมคิดเลิกใช้ Mac

ในฐานะที่เป็นลูกค้า Apple มาสองครั้ง มี Macintosh ใช้อยู่สองเครื่อง คือ PowerBook  12″ กับ MacBook 13.3″ ซึ่งใช้งานได้ดีมาเกิน 5 ปีหลังๆ ผมรู้สึกว่าคนรอบๆ ตัว จะหันมาใช้ Mac กันมากขึ้น แต่ตัวผมกลับรู้สึกว่าโลกของ Mac และ OS X มันเริ่มไม่โสภาอย่างที่คิดไว้ ก่อนอื่นขอบอกไว้ก่อนว่า สาเหตุที่ผมเปลี่ยนมาใช้ Mac ก็เพราะความเป็น Unix ของ OS X ซึ่งทำให้ผมทำงานต่างๆ ได้ดั่งใจ ผมมีความสุขกับ command line มากกว่าการใช้ mouse และผมใช้ MS Windows ไม่ถนัดมานานแล้ว (แต่ก็ยังโดนเพื่อนโทรมาถามปัญหา Windows เรื่อยๆ :P ) ในเวลานั้น Mac และ OS X จึงเป็นทางเลือกที่น่าสนใจสำหรับผม ซึ่งใช้ Unix และ Linux มาหลายแบบ แล้วก็เริ่มขี้เกียจติดตั้ง เซ็ตไดรเวอร์อุปกรณ์ต่างๆ บน Linux อีกทั้ง OS X ยังมี Application ที่หลากหลายกว่า เหมาะกว่าสำหรับหน้าที่การงาน

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

  • Ubuntu รวมทั้ง Gnome ใช้งานได้ดีไม่แตกต่างไปจาก OS X แล้ว มีซอฟท์แวร์ทดแทนได้ค่อนข้างเพียงพอ (สำหรับผม)
    • ถ้าอยากได้ Spotlight แบบ OS X ก็แค่ลง Google Desktop ใช้งานดีกว่าเยอะ
    • โปรแกรมสำนักงานต่างๆ ก็ใช้ OpenOffice.org ก็ได้ (แต่ปกติผมใช้ LaTeX)
    • โปรแกรมจัดการรูป ก็มีหลากหลาย ตั้งแต่ Gimp ไปจนถึง F-Spot หรือ EOG
    • โปรแกรมวาดแผนภาพต่างๆ อาจจะมี Dia ซึ่งยังไม่พร้อมนัก แต่เดี๋ยวนี้ผมก็พยายามใช้ TikZ กับ Graphviz เป็นหลัก แผนภาพบางภาพ ไม่มีทางที่จะวาดด้วย OmniGraffle ได้เร็วกว่า และดีเท่า Tikz เช่น Graphical Inference สำหรับ Fuzzy System :P (ข้อนี้ดูเกรียนไปหน่อย)
    • ดูหนัง ฟังเพลง ก็มีหมดแล้ว ดูได้ทุกฟอร์แมท
    • อย่างอื่น คิดไม่ออกแล้ว แต่ผมก็ไม่เคยมีปัญหาอื่นๆ บน Ubuntu เหตุผลหนึ่งอาจจะมาจากอาชีพของผม ไม่มีใครบังคับให้ผมใช้โปรแกรมอะไร ผมอยากใช้อะไรผมก็ใช้ ไม่ต้องกังวลเรื่องลูกค้าหรืออะไร
  • OS X ไม่ได้ Open เหมือนที่ Apple คุยไว้ หรือผมคิดไว้ แม้ว่า OS X จะใช้ซอฟท์แวร์เสรีต่างๆ ได้ แต่มันก็ไม่ได้เปิดกว้างขนาดนั้น คุณสามารถทำอะไรเล่นใน OS X ได้สะดวก สบายกว่า Windows แต่ Apple ก็สร้างรั้วไฟฟ้าล้อมคุณอยู่ ไม่มีทางที่จะฝ่ารั้วนี้ออกไปได้ง่ายๆ อันนี้จะต่างมากกับ Ubuntu ซึ่งไม่มีอะไรมาปิดกั้นได้
  • หากคิดจะซื้อ Mac มาใช้ Windows หรือ Ubuntu ก็ไม่สะดวกเหมือนใช้ PC ทั่วไปหรอก เหตุผลก็คือรั้วของ Apple นั่นแหละ ข้อนี้ผมคิดว่าหลายคนที่ซื้อมาเพื่อกะใช้ Windows เพื่อความเท่ห์คงจะรู้สึกไม่มากก็น้อย อย่างเช่น แค่จะคลิกขวาบน Windows ก็ต้องเปลี่ยนพฤติกรรมกันเยอะแล้ว
  • คุณภาพเครื่อง Mac ไม่ได้ดีเหมือนเดิม (แม้ว่าจะดีกว่า เมื่อเทียบกับบางยี่ห้อ แต่ก็ไม่ได้เด่นมากเหมือนเมื่อก่อน) เครื่องที่ผมใช้ปัจจุบัน ก็มีปัญหาตัวถังร้าว (ยังไม่ได้ซ่อม)

สุดท้ายจบไว้ห้วนๆ เพียงเท่านี้ เปลี่ยนมาใช้ Ubuntu กันเถอะ

Tags: , ,

20 Jan 09 ภาษาญี่ปุ่นวันละหลายคำ #7 ขอบคุณ

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

คิดว่าคนส่วนใหญ่คงรู้กันอยู่แล้วว่า คำขอบคุณในภาษาญี่ปุ่น จะพูดว่า ありがとう (arigatou) ถ้าจะพูดให้เป็นคำสุภาพขึ้น ใช้กับผู้ใหญ่ เป็นทางการ ก็เป็น ありがとうございます (arigatou gozaimasu) ถ้าหากจะให้แปลว่าขอบคุณมากแบบสุภาพ ก็จะพูดยาวขึ้นอีกเป็น どうもありがとうございます (doumo arigatou gozaimasu) ภาษาญี่ปุ่นนี่ส่วนใหญ่ยิ่งยาวรุงรังเท่าไหร่ ก็จะยิ่งสุภาพเท่านั้น

แต่บางทีเราอาจจะพูดสั้นๆ แค่ どうも(doumo) ก็ขอบคุณเหมือนกัน ความสุภาพและระดับความเป็นทางการจะต่างกันหน่อย คำขอบคุณนี้บางครั้งก็อาจจะใช้เป็นรูปอดีต เพื่อเน้นถึงความขอบคุณในสิ่งที่ทำไปแล้ว โดยจะเปลี่ยนตอนท้ายให้เป็นรูปอดีต เป็น ありがとうございました (arigatou gozaimashita) ส่วนใหญ่มักจะใช้กันตามบริษัท ห้าง ร้านต่างๆ เช่น เวลาไปซื้อของเสร็จแล้ว พนักงานในร้านก็มักจะพูดอย่างนี้ เพื่อบอกว่าขอบคุณที่มาซื้อของ (ซึ่งเป็นกิจกรรมที่จบไปแล้ว เป็นอดีตไปแล้ว) แต่ผมก็จะรู้สึกแปลกๆ กับรูปอดีตนี้เสมอ เพราะจะรู้สึกว่ามันจบไปแล้ว แปลว่าเราจะไม่ต้องไปซื้ออีกเหรอ

เรื่องนี้จะต่างจากร้านค้าแบบโชห่วยสมัยเก่า ส่วนใหญ่คนขาย (มักจะเป็นลุงๆ) จะพูดว่า 毎度ありがとう (maido arigatou) ซึ่ง 毎度 นี้แปลว่า ทุกครั้ง หมายถึงว่าขอบคุณที่มีในบริการเสมอๆ จนแถวๆ โอซาก้า ลุงแกจะย่อกันเหลือพูดแค่ 毎度 (maido) เป็นอันรู้กันว่าขอบคุณ ถ้าเป็นสำเนียงเกียวโตส่วนใหญ่ก็จะพูดว่า おおきに (ookini) ซึ่งจะมีความหมายว่า มาก คล้ายๆ กับ どうも นั้นแหละ ไม่รู้ทำไมแต่ผมจะรู้สึกว่าคำขอบคุณแบบเกียวโต ดูน่ารัก นิ่มนวลกว่า แม้ว่ามันจะดูเหน่อไปซะหน่อย บังเอิญผมอยู่โตเกียวมาก่อน เวลาฟังเสียงคนโอซาก้า คนเกียวโตพูด ก็จะรู้สึกว่ามันเหน่อๆ แปร่งๆ ดูบ้านนอก แต่ก็ยังสงสัยว่า คนเกียวโต เวลาได้ยินคนโตเกียวพูดจะรู้สึกว่าเหน่อไหม ความเหน่อเป็นแค่ความต่างของเสียง หรือมากกว่านั้น ผมรู้สึกว่ามันมากกว่านั้น น่าเอาไปทำเป็นงานวิจัย แต่จุดเด่นของคนคันไซ (ละแวกเกียวโต โอซาก้า) ที่ผมรู้สึกแตกต่างจากคนไทยที่พูดสำเนียงอื่นๆ ก็คือ คนคันไซจะมีความภูมิใจในสำเนียงพูดของตัวเองสูง พูดได้โดยไม่เคอะเขิน ไม่สนใจด้วยว่าจะต้องพูดให้เหมือนสำเนียงโตเกียว แถมบางคนยังบอกอีกว่าสำเนียงโตเกียวฟังแล้วเห่ยมาก ไม่มีความนุ่มนวล อันนี้พอมาอยู่คันไซผมก็รู้สึกว่าจริง แล้วก็คิดถึงตัวเองตอนมาอยู่กรุงเทพใหม่ๆ พยายามออกเสียงว่า “เค้า” เวลาจะพูดคำว่า “เขา” เพราะไม่อยากโดนล้อ (จริงๆ โดนล้อก่อนแล้วค่อยหัดทีหลัง) ทั้งๆ ที่คนกรุงเทพนั่นแหละออกเสียงเพื้ยน :P

ชักจะยาวแล้ว จบตรงนี้ก่อนดีกว่า ไว้คราวหน้าจะพูดถึงคำขอโทษแบบต่างๆ

Tags: , ,

19 Jan 09 ภาษาญี่ปุ่นวันละหลายคำ #6 ทักทาย

วันนี้จะพูดถึงประโยคพื้นฐานในภาษาญี่ปุ่น คือ “คำทักทาย” หรือที่เรียกว่า 挨拶 (aisatsu, ไอซะทสึ) โดยวัฒนธรรมของญี่ปุ่นแล้ว คนญี่ปุ่นมักจะเป็นพวกไปมาลาไหว้ ฉะนั้นเวลาจะทำอะไรก็จะต้องมีคำทักทายให้ใช้อยู่เสมอๆ ประมาณว่าถ้าไม่พูดประโยคพวกนี้ก็จะดูไม่มีมารยาท

เริ่มที่ประโยคแรก ที่จะต้องใช้บ่อยมากๆ ก็คือ おはようございます (ohayou-gozaimasu) แปลว่า สวัสดีตอนเช้า เป็นคำทักทายแรกที่เราจะต้องพูดเมื่อพบคนอื่นๆ ในตอนเช้า เช่น เมื่อเจอหน้ากันในที่ทำงานตอนเช้า ถ้าเป็นเพื่อน รุ่นน้อง หรือคนระดับเดียวกันที่สนิทกันหน่อย อาจจะพูดแค่ おはよう (ohayou) ก็พอ ทีนี้ถ้าเป็นพวกเด็กมหาวิทยาลัยจะพูดประโยคยาวๆ แบบเดิมๆ ก็คงจะน่าเบื่อ ถ้าเป็นผู้ชายเวลาเจอหน้ากัน ส่วนใหญ่จะพูดแค่ おっす (ossu) ออกเสียงประมาณ “ออสสสสส” ลากเสียงเอสยาวๆ หน่อย คือมันออกเสียงแค่ตัวแรกกับตัวสุดท้ายของประโยคเท่านั้น ตอนแรกๆ ที่ยังไม่คุ้นเวลาเจอรุ่นน้องหรือเพื่อนทักแบบนี้ ผมก็งงไปเหมือนกันว่าเกิดอะไรขึ้น แล้วไอ้ “ออสสสส” นี้ ก็จะใช้กันได้ทุกเวลา ขอให้เป็นการเจอหน้ากันครั้งแรกของวันนั้น บางทีเจอกันตอนมืดๆ ก็ทักกันแบบนี้เหมือนกัน ด้วยเหตุนี้ตอนไปอยู่ญี่ปุ่นใหม่ๆ จึงมีเพื่อนฝรั่งของผมคนหนึ่งโดนทักว่า “good morning” ตอนเวลาประมาณสองทุ่ม เพราะเด็กญี่ปุ่นมันแปลข้อความกันแบบตรงตัว

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

นอกจากสวัสดีแล้ว เวลาจะออกจากที่ทำงาน หรือห้องแล็บ ประโยคที่มักจะต้องพูดเสมอๆ ก็คือ おさきにしつれします (osakini shitsureshimasu) ซึ่งแปลประมาณว่า ขอโทษด้วยแต่กลับก่อนนะ หรือสั้นๆ ก็เป็น おさきに (osakini) คือจะกลับบ้านก่อนเพื่อนก็ต้องบอกลาสักหน่อย ซึ่งคนที่ยังอยู่ก็จะต้องพูดตอบว่า お疲れ様でした (otsukaresama deshita) ซึ่งแปลแบบไม่ตรงตัวว่า ขอบคุณสำหรับความเหน็ดเหนื่อยที่ทำงานมาด้วยกัน ถ้าพูดกับเพื่อนก็เหลือแค่ お疲れ (otsukare) ประโยคนี้มักใช้บ่อยๆ เวลาช่วยกันทำงานอะไรสักอย่างแล้วงานเสร็จเรียบร้อยไปด้วยดี แต่ละคนก็มักจะพูดประโยคนี้ให้กัน ทีนี้จะมีอีกประโยคที่มีลักษณะขอบคุณคล้ายๆ กัน แต่ใช้คนละแบบ คือ ご苦労様でした (gokurousama deshita) ซึ่งก็แปลประมาณว่า ขอบคุณสำหรับความลำบากเหมือนกัน แต่ใช้สำหรับเวลาที่คนอื่นลำบากเพื่อทำอะไรให้เรา เช่น เวลามีบริษัทส่งของเอาของมาส่งที่บ้าน เวลารับของเสร็จแล้ว ก็จะพูดประโยคนี้กับคนส่งของ เพื่อขอบคุณสำหรับความเหนื่อยของเขา ที่ไม่ใช่ของเรา

สุดท้ายของวันนี้ จบด้วยประโยคลาไปนอน ซึ่งจะใช้ว่า おやすみなさい (osayumi nasai) ซึ่งแปลประมาณว่า ราตรีสวัสดิ์ หรือ good night จริงๆ แล้วญี่ปุ่นยังมีคำทักทายอีกเยอะ นี่ยังเพิ่งเขียนไปแค่ 10% เอาไว้มาเขียนต่อวันหลัง

Tags: , ,