ย้ายบล็อกไปที่ bact.cc แล้วนะครับ

พ.ร.บ.คอมพิวเตอร์
หยุด ร่างพ.ร.บ.คอมพิวเตอร์
พื้นที่เก็บข้อมูลออนไลน์ ฟรี 2GB จาก Dropbox (sync กับ Windows, Linux, Mac, iPhone, Android ฯลฯ ได้)

2005-12-29

SIIT News - December 2005

SIIT News, Vol. 10, No. 4, December 2005

  • Asian Broadband Program on Distance Learning from Osaka University/University of Hyogo to SIIT
  • The Eighth National Software Contest (NSC-2006)
  • Visit of Delegation from US - Universities
  • Opening Ceremony of SIIT Fitness Center
  • Academic Cooperation with the University of Maryland at College Park
  • Faculty Promotion – Assistant Professor (Dr. Mongkut P.)
  • New Faculty Member (Dr. Pakinee S.)
  • Participation in the RoboCup Thailand Championship 2006
  • International Conference of Eastern Asia Society of Transportation Studies
  • Introduction to Graduate Education in The University of Warwick, UK
  • Intensive English Speaking Course
  • SIIT New Year Card

2005-12-25

Already been a year

Already been a year, 2004 Tsunami

Were you affected by the devastation? voices from BBC News web visitors

“ To this day I remember the kindness of the Thai people as they gave us food, water and clothing ” — Dave Frey, Toronto

Berlin, there'll be a memorial service for the lost souls tomorrow (26 Dec) 10:30am at Royal Thai Embassy, Lepsiusstrasse 64/66, 12163 Berlin.

Hey, it's a very small world. And much fragile so.

ทุนสิงคโปร์ ฮุบสุวรรณภูมิ ?

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

คู่แข่งอันดับหนึ่งของสนามบินสุวรรณภูมิในภูมิภาคนี้ ก็คือสนามบินชางงีของสิงคโปร์
แล้วนี่จะจ้างบริษัทสิงคโปร์มาดูแล .. so cool ฮะ -_-"

เปิดโปง "แท็กส์" ฮุบสุวรรณภูมิ

Ruby off the Rails

Ruby off the Rails — only Ruby essentials, the language, NO Rails.

2005-12-24

Electronic Rarebooks

Electronic Rarebooks, Thammasat University Libraries

สำนักหอสมุด มหาวิทยาลัยธรรมศาสตร์ มีหนังสือหายากให้อ่านฟรีในรูปแบบอิเล็กทรอนิกส์ (PDF)
ตัวอย่างหนังสือ เช่น

สำหรับหนังสือหายากที่เป็นภาษาต่างประเทศ สามารถติดต่อขอดูไฟล์เอกสารฉบับเต็มได้ที่ห้องวัสดุลักษณะพิเศษ 2

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

Last Christmas

Last Christmas (Flash animation น่ารักดี)

ท่านเตี้ยงจัดมา เราจัดไป

Last Christmas I gave you my heart, but the very next day I gave up away...

2005-12-23

Thai Ruby

“ Environmentally, Thailand is going straight down the toilet. The rapid depletion of the country’s gem resources is symptomatic of the country’s depletion of other resources, such as forests and fisheries. If residents do not begin to pay greater attention to politics, education and the quality of their leadership (which directly impacts how resources are used), their quality of life and that of their children will be greatly diminished. ”
“ ว่ากันด้านสิ่งแวดล้อมแล้ว, ประเทศไทยกำลังดิ่งลงชักโครก. ทรัพยากรพลอยที่ร่อยหรอลงของประเทศ บอกอาการร่อยหรอของทรัพยากรอื่น ๆ อย่างป่าไม้และประมงด้วย. ถ้าคนไทยยังไม่เริ่มใส่ใจการเมือง การศึกษาและคุณภาพของผู้นำของพวกเขา (ซึ่งส่งผลโดยตรงกับทรัพยากร ว่าจะถูกใช้ยังไง), คุณภาพชีวิตของพวกเขาและลูกหลานจะลดลงอย่างใหญ่หลวง ”
Decline of ruby and sapphire industry in Thailand, Part 2, Richard W. Hughes

:(

“ Thailand was, is, and probably always will be, one of those glorious places on the planet. A place of enjoyment, a place of warmth, a place of good cheer, a place of jai dee (good heart) and sanuk dee (good fun). Indeed, it is the Land of Smiles. And a smile is always better than a frown. Every time I return, my grin is ear-to-ear. ” — Richard W. Hughes's Bio

:)

:)

Not yet necessary

เหมือนจะทำให้ดูว่า ถ้าไม่เลือกทักษิณ จะต้องโดนอะไรบ้าง — กาแฟดำ

Tim Berners-Lee's blog

บล็อกของ Tim Berners-Lee ผู้ประดิษฐ์ www

Decentralized Information Group, CSAIL, MIT
The Decentralized Information Group explores technical, institutional, and public policy questions necessary to advance the development of global, decentralized information environments.

ADIOS - Automatic DIstrillation of Structures

ADIOS – an algorithm for learning structural patterns in raw data (text, nucleotide base pairs, amino acid sequence data, musical notation, etc.)

short intro (1½ pages)

2005-12-22

Songbird

Songbird — “Firefox for Music”

ประมาณว่า iTunes น่ะแหละ แต่ซื้อเพลงจากร้านอื่น ๆ หลาย ๆ ร้านได้ (ไม่เหมือนโปรแกรม iTunes ที่ซื้อได้จากร้าน iTunes ที่เดียว) เช่น Connect (Sony), Amazon, Insound, eMusic,CD Baby, ...

Songbird สร้างบน XULRunner (ตัวเดียวกับที่ Firefox และ Thunderbird ใช้)

Ruby NLP

ตัว Ruby Linguistics นี่น่าสนใจ ตรงวิธีการใช้ .. คือมัน รูบี๊ รูบี้ น่ะ

ตัวอย่าง:


"box".en.plural    #=> "boxes"
"mouse".en.plural  #=> "mice"
"ruby".en.plural   #=> "rubies"

"book".en.a      #=> "a book"
"article".en.a   #=> "an article"

"runs".en.present_participle    #=> "running"
"eats".en.present_participle    #=> "eating"
"spies".en.present_participle   #=> "spying"

"leaving".en.infinitive         #=> "leave"
"left".en.infinitive            #=> "leave"
"leaving".en.infinitive.suffix  #=> "ing"

"cow".en.quantify( 5 )     #=> "several cows"
"cow".en.quantify( 1005 )  #=> "thousands of cows"

อะไรทำนองนี้

update: (2007.04.02) update "NLP softwares in Ruby" link

Data Structures and Algorithmgs in Ruby

Data Structures and Algorithms with Object-Oriented Design Patterns in Ruby — by Bruno R. Preiss

หนังสือออนไลน์ เกี่ยวกับโครงสร้างข้อมูลและอัลกอริธึมโดยภาษารูบี้

Selecting words for dictionary

สมมติเราจะทำพจนานุกรมเล่มเล็ก ๆ เล่มนึง มี 1,000 คำ ไม่เกินนี้
เราจะมีหลักในการเลือกคำยังไง ให้พจนานุกรมมันมีประโยชน์ได้มากที่สุด ?

พวกคำง่าย ๆ ที่ "ใคร ๆ ก็รู้" ก็ไม่น่าจะใส่เข้าไปให้เปลืองที่

พวกคำที่ยาก ๆ มาก ๆ ก็อาจจะไม่เหมาะ เพราะก็ไม่แน่ว่าคนทั่วไปจะไปเจอะเจอ

จะเลือกยังไงดี ?

2005-12-21

Unicode characters in details

Unicode @ FileFormat.info

name, info, browser test page, outline (SVG), fonts that support, encoding, how to type it in Windows, Java and .NET properties

Mozilla Firefox Reload / Stop buttons

Does it make more sense to merge Reload and Stop buttons, in web browswer, together ?
If you think it do, please vote.

คิดว่าน่าจะรวมปุ่ม เรียกใหม่ กับ หยุด เข้าด้วยกันรึเปล่าครับ ?
ถ้าคิดว่าน่าจะเป็นแบบนั้น ช่วยกันโหวตหน่อยครับ :)

Bug 243244Combine "Reload" and "Stop" buttons together

BANGKOK 100 ROCK FESTIVAL 2006

สิงห์ส่งข่าว:

Oasis, Franz Ferdinand, Ian Brown, Headliner (tbc), Placebo, Maximo Park, Modern Dog, Ebola, Big Ass (tbc), Blackhead (tbc)

บ้าไปแล้วววว...ว เฮ้ย อยากอยู่เมืองไทย!

แหม ถ้าทำต่อไปเรื่อย ๆ ให้มันเจ๋งอย่าง Glastonbury หรือ T in the Park ได้ก็ดีดิ :P

BANGKOK 100 ROCK FESTIVAL 2006 — 18-19 Feb 2006

(ในเว็บมีชื่อ Snow Patrol ด้วย ... เอาจริงรึเปล่า? เกินไปแล้ว - -

2005-12-20

tagging and Collabrank

Open Source Testing

Open Source Testing – Open source tools for software testing

Your name in Elvish

ชื่อของคุณเขียนยังไง? ในโลกของลอร์ดออฟเดอะริง

Dae Jang Geum

ข้ามน้ำข้ามทะเลมาฮิตถึงที่นี่แล้วครับ ท่านผู้ชมทางบ้าน แดจังกึม : จอมนางแห่งวังหลวง

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

พลาดครับ

พลาดอย่างแรง

ตอนนี้ติดไปแล้ว คืนนั้นดูไปห้าตอนรวด ถึงสิบโมงครึ่งของอีกวัน

กระวนกระวายหาตอนต่อไปมาดูอยู่ (เพื่อนโหลดมาเกือบครบละ ขาดตอนกลาง ๆ บางตอน)

K-Marketing จริง ๆ ครับ (ไม่ใช่แค่ที่เมืองไทย ที่นี่ก็มีหนัง/เพลง/นิทรรศการเกาหลี ๆ เพียบเลย ช่วงที่ผ่านมา) นี่ที่เกาหลีเค้าทำขนาดนี้แล้ว Dae Jang Geum Theme Park ไปซึมซับกันให้พอ

เมืองไทยถ่ายหนังจักร ๆ วงศ์ ๆ/หนังย้อนยุคกันเยอะ ๆ น่าจะสร้างเป็นเมืองไปเลยเนอะ แล้วเปิดเป็นแหล่งท่องเที่ยวมั่ง อย่างญี่ปุ่นเค้าก็มี

บล็อกเกี่ยวกับน้องแด

อาหารก็คือยาน่ะ

Internet@Home

T-T น้ำตาไหลพราก มีเน็ตเล่นที่บ้านแล้วเฟ้ยยย!

ครานี้ลองเป็นลูกค้าของ AOL ดู

UNESCO Computer Training Courses

Training of Computer Specialists, Trainers and Users, implemented by Vietnam Institute of Information Technology

เวียดนาม.. เวียดนาม...

Missing link, old friend

พูดถึง online social network กันมาก ๆ เกือบลืมเพื่อนเก่าอย่าง เว็บริง (WebRing) ไปเลย

WebRing เป็นไอเดีย/บริการที่อายุอานามเกินสิบปีแล้ว มีอยู่ช่วงนึงที่มันป๊อบสุด ๆ ก่อนจะถูก GeoCities ซื้อไป (ก่อนที่ Yahoo! จะซื้อ GeoCities อีกที)

เคยทำเว็บริงกะเค้าเหมือนกัน ตอนนี้เลิกดูแลไปละ พาสเวิร์ดอะไรก็ลืมไปหมดแล้ว = ตายสนิท

เชื่อมด้วยเรื่อง เชื่อมด้วยคน เชื่อมด้วยรูป เชื่อมด้วยเพลง เชื่อมด้วยหนังสือ เชื่อมด้วยที่คั่นเว็บ เชื่อมด้วยวิกิพีเดีย ...

2005-12-16

Intro to Medical Informatics

Google Homepage API

Google Homepage API — build a plug-in for Google personalised homepage.

ระบบราชการสอนให้คนโกหก ฟุ่มเฟือย และตุกติกคดโกง!

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

ระบบราชการสอนให้คนโกหก ฟุ่มเฟือย และตุกติกคดโกง! — KT Thoughts, 6 ธันวาคม 2548

Update: พี่เค้าตอบกลับมาแล้ว

Wikipedia vs Britannica

Raul654 writes "Nature magazine recently conducted a head-to-head competition between Wikipedia and Britannica, having experts compare 42 science-related articles. The result was that Wikipedia had about 4 errors per article, while Britannica had about 3. However, a pair of endevouring Wikipedians dug a little deeper and discovered that the Wikipedia articles in the sample were, on average, 2.6 times longer than Britannica's - meaning Wikipedia has an error rate far less than Britannica's."

Enumerable, Array and Hash for JavaScript

Ruby-like convenients for JavaScript, explained.

Thailand' fundamental info for development

รากฐานไทย – ฐานข้อมูลเพื่อการพัฒนาประเทศ

Thai Education System on the Cross-road

อุดมศึกษาไทย บนทางแพร่ง — วิวัฒน์ชัย อัตถากร

สมมุติหากหลายมหาวิทยาลัยพัฒนาถึงขั้น "ระดับโลก" ในอนาคตแบบมหาวิทยาลัย Harvard, MIT, Oxford, Cambridge ฯลฯ ได้จริง ถามอีกว่าแล้วคนไทยส่วนใหญ่ของประเทศได้อะไร แล้วใครได้บ้าง คนจนยังต้องเป็นแรงงานรับจ้างราคาถูกเช่นเดิมไหม?

การพัฒนาสู่ "ความเป็นเลิศ" จะมีความหมายในบริบททางสังคมไทยจริงก็ต่อเมื่อ "รับใช้" อย่างกระจายตัวควบคู่ไปด้วยเสมอๆ

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

ผู้เขียนไม่คิดค้านเปิดเสรี หากแต่ไทยจะเปิดเสรีในวิถีทางใดมากกว่าจึงจะยั่งยืน

เรา "เปิดเสรีการค้า" เราก็ขาดดุลการค้า เรา "เปิดเสรีการลงทุน" เราก็เป็นหนี้ล้นพ้นตัวจากซื้อเทคโนโลยีเขา เรา "เปิดเสรีการเงิน" เราก็พ่ายแพ้ในสงครามการเงิน ในช่วงห้าสิบปีมานี้เกิดวิกฤตชาติมาสองครั้งสองคราแล้ว พอจะเป็น "อุทาหรณ์" สอนใจได้บ้างหรือไม่นั้น ก็น่าลองฉุกคิดหรือพิจารณาใคร่ครวญดูบ้าง

(อยากให้) อ่านต่อ...

2005-12-15

Thai Wikinews

วิกิข่าวไทย เปิดแล้ว

เชิญเข้าไปอ่าน รายงาน แก้ไข เพิ่มเติม กันได้

วิกิข่าวไทย — th.wikinews.org

a minute of flows

(เขียนคืนวันอาทิตย์ ทำลิงก์ตอนอังคาร1บ่าย2)

เก็บ/กด ถ่ายทอดความทรงจำ
เก็บ เกิน รู้ ลึก ล้ำ ... ยังคงมีทรายในรองเท้าของฉัน
เพลง เสียงร้อง ผู้หญิงฝรั่งคนนึง
I wanna see you again.
ห้ามเดินลัดสนาม
ที่ฝั่งโน้น
ยากิโซบะตอนเที่ยงคืนครึ่ง บะหมี่สำเร็จรูป
โทรศัพท์ต่อเนื่องตั้งแต่เมื่อวานดึก
สิ่งของ และไม่ของ วิ่งไปมา วน ผ่าน เลยไป หาย แล้วก็กลับมา
I still got sand in my shoes.
เอ็มพีสามร้อง ตอนนี้ผมอยู่ที่เบอร์ลิน

อีกฝั่งของกำแพงเป็นเรื่องเหลวไหล
เราไม่มีกำแพงแล้ว (หรือ?)

No-Nonsense Guide to Globalization
อ่านหนังสือในรถไฟใต้ดิน
นิทานเกี่ยวกับ เสือ และ จีดีพี
ผู้พิทักษ์แห่งป่า Bretton Woods

Dido และชาเขียวสองถ้วย
พรุ่งนี้มีนัดตอนสิบโมง

ไอคอนเกลื่อนกลาดบนเดสก์ท็อป
นึกถึงร้านกาแฟตอนฝนตกที่เซ็นเตอร์พอยท์ - ผมไม่กินกาแฟ
Fantastic Plastic Machine
ตอนนี้ไอ้เอกทำอะไรอยู่
โก้ .. ไอ้เปาจะแต่งงานละ
วีดิโอครูวิไลพรกับมาสเตอร์จักรวาล
งานเลี้ยงรุ่น ที่ไม่ยอมเลิกราไปจากการเล่นวน
กลับเมืองไทยกันเถอะ

เพลงประกอบ Austin Powers

Knowledge Revolution
แล้วฉันจะไปแทรกอยู่ตรงไหน

อ่าน รู้ คิด ทำซะเถอะ
is everybody happy?
อาณานิคมทางปัญญา

คิดว่าพัสดุพรุ่งนี้คงมาจาก AOL3

1 หมายถึง วันพฤหัส (เมื่อวานนี้) .. คือนับวันผิด พักนี้มึน ๆ - -
2 ทำไมเป็น คืน-อาทิตย์ (เวลา-วัน) กับ อังคาร-บ่าย (วัน-เวลา) ล่ะ?
3 มันมาจริง ๆ แต่มาแต่โมเด็ม, Splitter ยังไม่มา .. แล้วจะเล่นเน็ตได้ไงฟะ T-T

2005-12-11

2005-12-09

Outsourcing everything

Accountant, call center, technical support, software development, house keeping, scientific research, blah blah blah, ... you can outsourcing almost everything in this world (baby-sitting is a classic case, generations of parents were already outsourced their baby-sitting tasks to those nannies) ... and now it comes to playing games!

Globalisation!

Innovative product design: rsstroom reader

Whether it fake or not, it's an innovative one.
rsstroom reader, read your favorite RSS feed .. while you feed your toilet :P

2005-12-07

Sun to open sources UltraSPARC

ซันประกาศจะเปิดสเปคของซีพียู UltraSPARC รวมถึงรหัส ตัวตรวจสอบ โมเดล และเครื่องมือพัฒนาอื่น ๆ ที่เกี่ยวข้อง โดยจะใช้สัญญาอนุญาตที่ Open Source Initiative รับรอง.. อ่านต่อที่ OSNews

สำหรับซีพียูตระกูล SPARC ที่เป็นโอเพนซอร์ส เท่าที่รู้ มี LEON-1 (GPL), LEON-2 (LGPL) ดูเพิ่มได้ที่ dmoz.org

OpenCores.org รวบรวมผังโพรเซสเซอร์แบบโอเพนซอร์สไว้เยอะแยะ ทั้ง VHDL และ Verilog มีทั้งสำหรับงานทั่วไป และงานเฉพาะทาง Microprocessor, Crypto core, DSP core, System controller

Defining The Damn Thing

Information Design ? Information Architect ? Interaction Design ? Experience Design ? Knowledge Management ? ... Damn!

Ruby: variable scope, by naming convention

  • var — local variable
  • @var — instance variable
  • $var — global variable

Master of Fine Arts in Software

Master of Fine Arts in Software, a proposal by Richard P. Gabriel

On June 11, 2005, at the Palace Hotel in San Francisco, California, he read the following statement on being award the Allen Newell Award.

To be alive at the start of a new field—what a treasure. Some say scientific progress looks like a christmas tree: a wide diversity of ideas at the start, narrowing as some of the ideas are refined, then another, smaller diversity given what’s working and not, followed by a deeper narrowing, and so on toward the ultimate star of truth or of understanding—in any case, toward the top.

We are coming to realize that computing is not like any single other thing people do—it’s a little like science, mathematics, engineering, a little like art, architecture, writing, horticulture, and a lot like a long, unplanned journey.

The star at the top? Is that our ambition, or are we subject only to the laws of the imagination?

Research requires a kick, at times, to get the soul dancing.

... ใครก็ได้มาเตะผมหน่อยเหอะ

GNOME 2.12 Thai in the news

เมื่อเช้าพลิก ๆ นิตยสาร LinuxUser & Developer เจอข่าวเกี่ยวกับ GNOME 2.12 ที่เพิ่งออก

มีภาพประกอบสองภาพ ภาพแรกเป็นหน้าจอเว็บ Planet TLWG มีโพสต์ของคุณ Kitt (พร้อมแมวขาว) อยู่บนสุด
อีกภาพเป็นหน้าจอเลือกเปิด service บน GNOME (ข้อความต่าง ๆ เป็นภาษาไทย)

ใครอยู่ใกล้ร้านหนังสือ ลองไปหา ๆ ดูได้ ของเดือน Nov 2005

Google: 10 Golden Rules

เมื่อเช้าเพิ่งซื้อ ตะกี้เปิดเจอในเว็บก็มี .. เว้

Newsweek ฉบับพิเศษ เกี่ยวกับ Knowledge Economy/Society

Eco-Responsible Computing ?

(ads)

“The average datacenter burns 80 barrels of oil per day.”

Introducing the world's first eco-responsible server
The Sun Fire T1000 server

Learn more

Ruby gsub, friends and unrelated stuffs

เราเรียกใช้เมทธอด gsub ของคลาส String (String#gsub) ใน Ruby ได้สองแบบ
จาก API doc:
คำสั่ง => ผลลัพธ์

  1. str.gsub(pattern, replacement) => new_str
  2. str.gsub(pattern) {|match| block } => new_str

ตรง pattern นี่ จะเป็น String ธรรมดา ๆ ก็ได้

เค้าให้ตัวอย่างมาแบบนี้

  • "hello".gsub(/[aeiou]/, '*') #=> "h*ll*"
  • "hello".gsub(/([aeiou])/, '<\1>') #=> "h<e>ll<o>"
  • "hello".gsub(/./) {|s| s[0].to_s + ' '} #=> "104 101 108 108 111 "

แบบ (1) ใช้เป็นแล้ว ก็เหมือน ๆ กับในภาษาอื่น ๆ
ส่วนแบบ (2) ที่ผ่าน code block เข้าเมทธอด ยังไม่เคยลอง .. ก็ลองซะคราวนี้

โจทย์คือ ผมจะแทนตัวอักษร &, ', ", < และ > ทั้งหมดในไฟล์ ๆ หนึ่ง
ด้วย XML Entity &amp;, &apos;, &quot;, &lt; และ &gt;

ตอนแรกผมทำแบบนี้


 1: def convert1 (line)
 2:  if line != nil
 3:   line.gsub!(Re_amp,  Amp)
 4:   line.gsub!(Re_apos, Apos)
 5:   line.gsub!(Re_quot, Quot)
 6:   line.gsub!(Re_lt, Lt)
 7:   line.gsub!(Re_gt, Gt)
 8:   return line
 9:  else
10:   return line
11:  end
12: end
13:
14: IO.foreach(ARGV[0]) { |line| puts convert1(line) }

โปรแกรมจะเริ่มทำงานที่บรรทัดสุดท้าย (14) โดยอ่านไฟล์ตามชื่อที่ให้มาทาง command line argument แรก 1
หลังจากนั้น ในแต่ละบรรทัดของไฟล์ ก็จะทำคำสั่ง puts convert1(line) 2
อย่างกรณีนี้ก็คือ ทุก ๆ ครั้งที่อ่าน 1 บรรทัด ก็ให้พิมพ์บรรทัดที่ถูกแปลงแล้วออกมา

เมทธอด foreach ทำให้เราเขียนโค้ดที่อาจจะยาวอย่างน้อยสามสี่บรรทัดในภาษาอื่น ได้เหลือแค่บรรทัดเดียวใน Ruby !

  • IO.foreach(name, sep_string=$/) {|line| block } => nil

อย่าเพิ่งนอกเรื่องไปไกล กลับมาที่ gsub ต่อ ...

โอเค จากบรรทัดที่ 14 จะเห็นว่าเราเรียกใช้ฟังก์ชั่น convert1, ซึ่งประกาศไว้ตรงบรรทัดที่ 1-12 (13 เป็นเลขไม่ดี เราขอไม่ใช้ :P)

บรรทัด 3-7 จะเห็นว่าเราเรียก gsub! 3 เป็นชุดเลย
โดยที่ Re_xxx นี่ เป็นออบเจกต์ pattern ที่จะหา &, ', ... ที่เราเตรียมไว้ล่วงหน้าแล้ว
และพวก Amp, Apos, ... ก็เป็น constant 4 ที่มีค่า &amp;, &apos;, ...
(ตรงนี้ผมคิดไปเองว่า ถ้าเราเตรียมแพตเทิร์นและสตริงไว้ล่วงหน้า
คงจะช่วยให้ Ruby ไม่ต้องสร้างออบเจกต์แพตเทิร์นทุกครั้งใน "ลูป" foreach (ทุก ๆ บรรทัด)
แต่เนื่องจากไม่รู้ว่า ตัว Ruby runtime ทำงานจริง ๆ ยังไง มี optimization อะไรบ้าง เลยไม่แน่ใจว่ามันจะช่วยจริงรึเปล่า
... เอาว่าช่วยทางใจละกัน อยากเขียนแบบนี้น่ะ)

โค้ดของของแพตเทิร์น (regular expression):


Re_amp  = /&(?![-_a-zA-Z0-9]{1,12};)/  # (skip & in &xxx;)
Re_apos = /\'/
Re_quot = /\"/
Re_lt   = /</
Re_gt   = />/

เอาล่ะ ถึงเรื่องที่จะเล่าละ

ทีนี้ จะเห็นว่า เฮ้ย เราเรียก gsub! ซ้ำ ๆ ตั้งหลายรอบแหน่ะ
1 gsub! ต่อ 1 คู่ (แพตเทิร์น/ตัวอักษรที่จะแทน) ต่อ 1 บรรทัด
ดู ๆ ไป (อย่างเด่นชัด, ตามคำแปลของ LEXiTRON) มันน่าจะมีวิธีที่ .. มีประสิทธิภาพมากกว่านี้สิ

เป็นไปได้รึเปล่า ที่เราจะแทน คู่ (แพตเทิร์น/ตัวอักษร) ได้มากกว่า 1 คู่ ในการเรียก gsub! 1 ครั้ง ?
คำตอบคือ เป็นไปได้ ด้วยการผ่านโค้ดบล็อกเข้า gsub!
โดยให้ตัวโค้ดบล็อกเป็นตัวตัดสินใจเรื่องการแทนที่


 1: Re_escapes = /(&(?![-_a-zA-Z0-9]{1,12};))|(\')|(\")|(<)|(>)/
 2:
 3: def escape (char)
 4:  return case char
 5:   when '&'  then Amp
 6:   when '\'' then Apos
 7:   when '\"' then Quot
 8:   when '<'  then Lt
 9:   when '>'  then Gt
10:   else char
11:  end
12: end
13:
14: def convert2 (line)
15:  if line != nil
16:   line.gsub!(Re_escapes) { |match| match = escape(match) }
17:   return line
18:  else
19:   return line
20:  end
21: end
22:
23: IO.foreach(ARGV[0]) { |line| puts convert2(line) }

ที่โค้ดนี้ จุดที่ convert2 ต่างกับ convert1 ก็คือ ตรงบรรทัดที่ 16
จะเห็นว่า แทนที่เราจะส่ง 2 พารามิเตอร์ — (pattern, replacement)
เราส่ง 1 พารามิเตอร์ กับ 1 บล็อก แทน — (pattern) { block }

โค้ดบล็อก { |match| match = escape(match) } จะถูกเรียกทุกครั้งที่ gsub! พบแพตเทิร์น Re_escapes
โดย match จะเป็นค่าของสิ่งที่พบ
เราก็จัดการแปลง match ด้วยฟังก์ชั่น escape ซะ เท่านั้นก็จบ
เท่ากับว่า เราเรียก gsub! แค่ครั้งเดียว5

ในฟังก์ชั่น escape ก็ไม่มีอะไร, แบบว่าจะโชว์การใช้ case ... when น่ะ
เราสามารถผสม return กับ case ... when ได้ด้วย (แทนที่จะเขียน then return ... ซ้ำ ๆ)

Re_escapes นี่ก็เป็นแพตเทิร์นที่เรายุบรวม Re_amp, ... Re_gt เข้าด้วยกัน ไม่มีอะไรมาก

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

อยากรู้ว่าสองวิธีนี้ (convert1 vs convert2) จะให้ประสิทธิภาพต่างกันแค่ไหน
ลองทดสอบง่าย ๆ ด้วย Benchmark#bmbm


require 'benchmark'

...

Benchmark.bmbm do |x|
 x.report("convert1:") { IO.foreach(ARGV[0]) { |line| convert1(line) } }
 x.report("convert2:") { IO.foreach(ARGV[0]) { |line| convert2(line) } }
end

ลองรัน6 wellform-demo.rb etlex.xml

ผลลัพธ์:


Rehearsal ---------------------------------------------
convert1:  23.914000   0.070000  23.984000 ( 24.015000)
convert2:  22.813000   0.130000  22.943000 ( 22.973000)
----------------------------------- total: 46.927000sec

                user     system      total        real
convert1:  23.914000   0.100000  24.014000 ( 24.065000)
convert2:  22.913000   0.090000  23.003000 ( 23.063000)

กับไฟล์ etlex.xml ขนาดประมาณ 18 MB (668,938 บรรทัด)
convert2 เร็วกว่า convert1 ประมาณ 1 วินาที (ประมาณ 4%)

คุ้มมั๊ยเนี่ย ? :P

ก็ .. ถือว่าคุ้มละกัน เพราะได้เรียน Ruby น่ะ :D


1 ข้อสังเกต: ตรงนี้จะไม่เหมือน command line argument ในสไตล์ C หรือ Python
ที่ argument แรก (0) จะหมายถึงชื่อโปรแกรมที่กำลังรันอยู่
ใน Ruby ถ้าต้องการรู้ชื่อโปรแกรม ให้เรียกจากโลกาตัวแปร (global variable) $0 กลับ

2 ตรงนี้เราเรียกว่า code block
อย่างบรรทัด 14 นี้คือ เราส่งโค้ดบล็อก {...} เข้าเมทธอด foreach
โดย line (ใน | |) เนี่ย ก็เป็นเหมือน argument ของโค้ดบล็อก
(คิดซะว่า เรากำลังเขียนฟังก์ชั่นอันนึงก็ได้ ทำเหมือน argument ปกติ)
โดย line จะถูกแทนภายในเมทธอดที่เราส่งโค้ดบล็อกเข้าไป
(อันนี้คือตามความเข้าใจจากการทดลอง กลไกภาษา Ruby จริง ๆ อาจจะไม่ใช่แบบนี้ก็ได้ ต้องลองอ่านเอกสารดู) กลับ

3 gsub! ต่างกับ gsub ตรงที่ มันจะเปลี่ยนแปลงสตริงต้นฉบับเลย;
ในขณะที่ gsub จะไม่เปลี่ยนแปลงสตริงต้นฉบับ แต่จะคืนสตริงใหม่ออกมา;
พูดอีกอย่าง: โค้ด x.gsub!(a,b) ให้ผลเหมือน x = x.gsub(a,b)
ใน Ruby เมทธอดที่ลงท้ายด้วย ! มีลักษณะแบบนี้เหมือนกันหมด กลับ

4 by convention (ตามข้อตกลง), ค่าคงที่ (constant) ใน Ruby จะขึ้นต้นด้วยตัวพิมพ์ใหญ่ เช่น Book, Song
อย่างไรก็ตาม ข้อควรระวังคือ ในโปรแกรม เราสามารถแก้ไขค่าคงที่ได้ และ Ruby runtime ก็ไม่ห้าม
จะมีก็แค่ขึ้น warning เท่านั้น แต่โปรแกรมจะทำงานต่อไปตามปกติ
ซึ่งตรงนี้นี่ ... อืมม ผมไม่แน่ใจว่าเป็นความคิดที่ดีรึเปล่า
อย่างน้อย คนเขียน Java น่ะไม่น่าจะชอบ กลับ

5 ตรงนี้ บางคนอาจจะเห็นว่า บรรทัดที่ 16 กับ 17 น่าจะยุบรวมกันได้
ข้อควรระวังก็คือ ถ้าจะยุบ อย่าลืมเปลี่ยน gsub! เป็น gsub
return line.gsub(Re_escapes) { |match| match = escape(match) }
เพราะในกรณีที่สตริงไม่มีการเปลี่ยนแปลง, gsub! จะคืนค่า nil
แต่ gsub จะคืนค่าสตริงต้นฉบับ
สิ่งที่เราอยากได้ ในโปรแกรมนี้ คืออย่างหลัง กลับ

6 ภาษาอังกฤษ “long run” แปลว่า ในระยะยาว :P กลับ

2005-12-06

jEdit Ruby Editor Plugin

Ruby Editor Plugin สำหรับ jEdit
Ruby Editor Plugin screenshot

ความสามารถหลัก ๆ ของ jEdit Ruby Editor Plugin

  1. syntax highlighting แสดงสีไวยากรณ์
  2. error list บอกที่ผิด
  3. structure browser แสดงโครงสร้างโปรแกรม
  4. online API documentation คู่มือ API สด
  5. code completion ช่วยเติมโค้ด
  6. more และอื่น ๆ

นอกจาก FreeRIDE กับ SciTE ที่มากับชุดติดตั้ง Ruby แล้ว
IDE อีกตัวที่เหมือนจะมีคนนิยม คือ Mondrian Ruby IDE ยังเป็นเบต้าอยู่ เขียนด้วย Ruby + FOX toolkit
เท่าที่ลองก็โอเค มี (1), (2), (3) และสั่งรัน Ruby ได้จากใน IDE เลย (ถ้ามีที่ผิด โปรแกรมจะวิ่งไปที่บรรทัดแรกที่ผิดทันที)

ถ้าแก้แต่ไฟล์ Ruby อย่างเดียว FreeRIDE น่าจะดีที่สุด
มี (1), (2), (3), (4), สั่งรัน Ruby ได้, และใช้ IRB (Interactive Ruby) ได้ในตัวเลย

ยังไม่เห็นว่า Mondrian จะดีกว่า FreeRIDE ชัด ๆ ตรงไหน ...
อาจจะเป็นเรื่องของการจัดการโครงการ (Mondrian มีแนวคิดแบบ Project ทำนองเดียวกับ IDE ชั้นนำทั่วไป อย่าง Visual Studio, Eclipse, NetBeans, ... คือเปิดไฟล์ที่เกี่ยวข้องกันเป็นกลุ่มได้)
รวมทั้งความเร็วของตัว IDE .. เหมือน Mondrian จะเร็วกว่าหน่อย ๆ เท่าที่สังเกตตอนเปิด/ปิดโปรแกรม
แต่ก็ยังลองเล่นทั้งสองตัวแค่แป๊บเดียว อาจจะมีอย่างอื่นที่ไม่เห็น

SciTE นี่ก็แก้ไฟล์ได้หลายแบบดี มี (1) และ (2)
หน้าตาค่อนข้างจะดึกดำบรรพ์ไปหน่อย หรือพูดอีกอย่างคือ พื่้น ๆ ไม่มีลูกเล่นมากนัก
ไม่มีอะไรน่าสนใจเป็นพิเศษ .. นอกจากความเบา/เล็ก (lightweight)
นี่ว่าจะลบทิ้งอยู่

เดี๋ยวจะลองลงปลั๊กอิน shell ของ jEdit แล้วใช้ IRB ผ่าน shell plug-in
ถ้าใช้ได้, jEdit ก็น่าจะโอเคสุดแล้ว สำหรับการแก้ไฟล์หลาย ๆ แบบ + Ruby
แต่ต้องระวังเรื่องโหลดไฟล์ยักษ์ ๆ กรณีที่เปิดใช้ปลั๊กอินหลาย ๆ ตัว
(เช่นเปิดไฟล์ XML ขณะใช้ปลั๊กอิน Structure Browser + XML + XML Indenter)
เพราะถึงแม้จะเปิดใช้ได้ แต่เวลาแก้ มันจะอืด ทำงานได้ แต่รำคาญ

Emacs ? เอ่อ ... ไม่รับครับ - -"

Take It for Granted

(เขียนเมื่ออาทิตย์ที่แล้ว ที่บ้าน เพิ่งโพสต์วันนี้)

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

คือ บางทีก็งงเสียงที่มาจากเด็กทุนเอง แต่บางครั้งก็งงกับเสียงที่พูดถึงเด็กทุน

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

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

บางคนก็ว่า เค้าชดใช้เงินคืนให้แล้ว ก็น่าจะโอเค

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

บางคนก็ว่า สัญญามันไม่เป็นธรรม .. บางคนก็ ... ฯลฯ

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

ผมก็ไม่รู้แฮะ

บางทีตอนรับทุนก็อาจจะมีความตั้งใจอย่างนึง
แต่ของงี้มันก็เปลี่ยนกันได้ คนทั้งนั้น สภาพแวดล้อมรอบตัว เงื่อนไขต่าง ๆ ที่เปลี่ยนไปตามเวลา

นั่นก็เรื่องนึง สำหรับคนที่จบแล้ว

ส่วนคนที่ยังไม่จบ ก็จะมีเรื่องจุกจิกอันโน้นอันนี้อีก อย่าง..

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

แหม เป็นเด็กทุนนี่มันก็ลำบากเนอะ แบบ จะอะไรกะกูนักหนาวะ
เฮ้ย คน ไม่ใช่เครื่องจักรเรียนหนังสือ
หนูก็อยากดูหนัง ฟังเพลง แต่งตัว ไปเที่ยว สังสรรค์ สังคมบ้าง
รับทุน ไม่ได้หมายถึงขายชีวิตซะหน่อย ...
ความตั้งใจน่ะให้ไปเต็มที่แล้ว แต่ขอชีวิตเป็นของตัวเองหน่อย จะได้มั๊ย ?

...

อะไรก็เถอะ ผมฟัง ๆ แล้วก็ยังเฉย ๆ คือแต่ละคนก็ เออ วิจารณ์ได้น่ะ ขอให้มี ground (รากฐาน ?) ในการวิจารณ์ ไม่ได้พูดอะไรลอย ๆ แบบ ฉันอยากจะว่าก็ว่า

มีอยู่อันเดียว ฟังแล้ว เออ งง ๆ

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

หึ หันควับไปมอง ถามคนพูดหน่อยสิ
เรียนจบที่ไหนมา ?
มหาลัยรัฐรึเปล่า ? (จะในหรือนอกระบบก็เถอะ) โปรแกรมปกติรึเปล่า ?

ถ้าเกิดว่าใช่ เออ มึงก็เรียนมาด้วย "ภาษีพ่อแม่กู" เหมือนกันน่ะแหละ
ถึงไม่เต็ม ๆ ทั้งหมด แต่ก็เยอะล่ะ
ตอนเรียนนี่ตั้งใจมั๊ยล่ะ จบมามีสำนึกจะตอบแทนอะไรมั่งมั๊ยล่ะ ...
ปึ๊ก

ไม่ได้ว่าว่าว่าไม่ได้
(อืมม ประโยคนี้น่าสนใจแฮะ abbba : a=ไม่ได้ , b=ว่า ; อืมม.. )
แต่ที่จะว่าคนอื่น/หรือคาดหวังให้คนอื่นทำน่ะ ตัวเอง(เคย)ทำรึเปล่า ?

...

เออ นี่ถ้ามีคุณป้าแถวนี้ เดิน ๆ มาชี้หน้าด่า เอ็ง อย่าขี้เกียจให้มาก
ผมก็คงต้องฟังมั่งล่ะเนอะ
ก็เงินเดือนผมมันก็มาจากภาษีเค้านี่
(หรือจะแกล้งตกงานแล้วรอรับเงินประกันสังคมดีวะเนี่ย :P)

โคตรจะขี้เกียจเล้ย ...

2005-12-02

How thick is the PM face ?

“ สังเกตไหมครับว่า ทุกวันนี้คนไทยวิพากษ์วิจารณ์รัฐบาลด้วยภาษาดุดันมากขึ้น ก้าวร้าวหนักขึ้น เพราะคนไทยเรียนรู้จากของจริงว่า ผู้มีอำนาจ "หน้าด้าน" หนักหน่วงขึ้น การแสดงความเห็นด้วยภาษาสุภาพเรียบร้อย พูดจากระทบกระเทียบเป็นการเตือนสติกันอย่างนิ่มนวลนั้น ใช้ไม่ได้อีกต่อไปแล้ว ” — กาแฟดำ 1 ธ.ค. 2548

สังเกตครับ .. เอ้ย! ไม่ใช่ ต้อง “สังเกตโว้ย!”

:P

Give Me Five

ขอ 5 บล็อกที่อ่าน ... อยากอ่านมั่ง

Orkut linked with Google Account

ไม่รู้ว่ามันนานรึยัง แต่ถ้าใครเคยเล่น (หรือยังเล่น) Orkut อยู่ ผมเพิ่งรู้ว่า ตอนนี้เราลิงก์มันกับ Google Account (เช่นที่ใช้กับ Gmail และอื่น ๆ) ของเราได้แล้ว

วิธีก็คือ ก็แค่ล็อกอินเข้าหน้า Google หน้าไหนก็ได้ แล้วไปที่ My Account (ปกติมันน่าจะมีอยู่มุมตรงขวาบน)
จากนั้น ดูด้านซ้าย ตรง Edit Services Info เลือก Orkut
แล้วมันจะถาม username กะ password ของ Orkut ที่เรามีอยู่
ก็ใส่ ๆ ไป ให้ถูก
แค่นี้บัญชีผู้ใช้สองอันก็จะมารวมกันละ คราวต่อไปที่จะล็ิอกอินเข้า Orkut ก็ใช้ชื่อ/รหัสผ่านของ Google ได้เลย

แต่เมืองไทยนี่ Orkut คงไม่ฮิตล่ะมั้ง เห็นแต่ Hi5 (5 จริง ๆ ต้องลบวันละอย่างน้อย 5 ฉบับ ไอ้จดหมายเชิญนี่ -_-")

ผมเองเล่น ๆ อยู่พักนึง Orkut นี่แหละ เออ โลกมันกลมจริง ๆ นะ เจอเพื่อนป.โทด้วย แล้วก็อีกสองสามคนจากโครงการ OpenOffice.org
แต่พอหายเห่อ ก็เลิกเล่น :P

ของพวกนี้ต้องไปถาม morning_glory ผู้เชี่ยวชาญด้าน (online) social networking ;)

2005-12-01

Berlin Doctors Demand Better Wages

วันนี้ที่สถานีอเล็กซานเดอร์แพลทซ์ พวกหมอ ๆ (และไม่หมอ จาก Charité) เค้าไปถือป้ายแจกไปปลิวกัน พร้อมมีสอนการปฐมพยาบาลเบื้องต้นด้วย มีเด็ก ๆ ตัวเล็ก ๆ สนใจกันใหญ่

คือจริง ๆ เค้าหยุดงานประท้วงกันน่ะ

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

ได้คุยกับสองสาว (หน้าตาดี .. อยากป่วย) แน่นอน เป็นภาษาอังกฤษ (ภาษาเยอรมันอ่อนแออย่างแรง) เค้าว่า งานเยอะ เงินน้อย แบบนี้ไม่ไหวแล้ว ทำนองนั้น

หมอไทยไม่ออกมาประท้วงมั่ง :P ...
เอ๊ะ ไม่ต้องหรอก อยากได้เงินสมงาน ก็ไปอยู่โรงพยาบาลเอกชนดิ พญาไทไรงี้ ... อุ๊บส์ พูดม่ายล่าย...