อัพเดทก็แก้แมลงกัดได้

จาก post ก่อนของผม เรื่อง WordPress 2.6.1 กับปัญหา Categories หาย (จริงๆ ไม่หายหรอก แต่ว่าว่างเปล่าเฉยๆ และความสัมพันธ์ระหว่าง post-categories ก็ว่างไปด้วย)

สรุปว่า เมื่อวานลองเอา WP 2.6.2 ลงไป ก็ไม่คิดว่าจะแก้อะไรได้ เพราะว่าพอลงเสร็จแล้วดูหน้าเว็บก็ยังเป็นอยู่ ก็เลยถอดใจจะมานั่งแก้แบบ manual เพราะว่าอาการไข้เริ่มทรุดแล้ว แถมปวดโน่นปวดนี่มากมาย เป็นอะไรก็ไม่รู้

วันนี้ลองดูอีกที อ่าว …. ปกติซะแล้ว สงสัยเมื่อคืนหน้าเดิมมันค้างอยู่ใน cache

ไม่สบายเริ่มดีขึ้นแล้ว หลังจากฉีดยาไปสองเข็ม (เมื่อคืนตอนเกือบตีสาม …​ขอบคุณน้ององ katanyoo ที่พาไปโรงพยาบาล)

อ่อ มีฟาดเคราะห์อีกเรื่อง หน้ารถครูด สีถลอกนิดหน่อยอีกแล้ว เฮ้อ พอไม่สบาย เบลอจัดๆ แล้วการกะระยะมันแย่ลงแบบนี้เอง แต่ไม่เป็นไร แค่สีถลอกนิดเดียว

Chrome: ความรู้สึกของชาวบ้าน

เพิ่งจะ post metablog เรื่อง Chrome พอดีอ่านแล้วเจออีกแล้ว แต่ว่าคราวนี้เป็นความรู้สึกของคนที่เค้าใช้ไป

Headius: A Few Thoughts on Chrome

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

แล้วจะกลับมารายงานผลการทดสอบครับ ว่าจะเป็นยังไงกับ Browser สัญชาติ Google ตัวนี้ ระหว่างนั้นก็อ่านรีวิวตัวนี้ไปพลางๆ ก่อนครับ

Chrome: ยิ่งกว่า Browser War ครั้งใหม่

รู้สึกว่านานแล้วที่ไม่ได้ meta-blogging จาก OSNews เพราะว่าพักหลังๆ รู้สึกว่าคุณภาพของบทความมันตกๆ ลงไปจากเมื่อก่อนเยอะเหมือนกัน จนกระทั่งถึงวันนี้เจอเรื่องน่าสนใจมากจนอดไม่ได้ที่จะ blog มันหน่อย

There’s More Than a Browser War

ก็ตั้งแต่ Google ออก Chrome น่ะแหละครับ ที่หลายคนคิดว่าจะเป็นสงคราม browser ใหม่อีกครั้งหรือเปล่า หรือว่า Google ทำไปเพื่อวัตถุประสงค์อะไรกันแน่ จากมุมมองของธุรกิจและความอยู่รอด ตลอดจน Business Identity และ Organization Identity ของ Google เอง ว่าทำไม Chrome (จากมุมมองของผู้เขียนบทความนี้) จึงเป็นหมากตาสำคัญที่สุดหมากหนึ่งบนกระดาน ที่ Google ต้องเดินเพื่อ “ปกป้องตัวเอง”

เป็นบทความที่อ่านแล้วได้คิดดีเหมือนกัน เลยเอามาแชร์กันต่อ

Note to self: Project Planning

Note for myself:

  • Next time my developers say “X months” for developing any project, I will say “2X months” to the customers. So my developers will have time to talk to each other more and spending time developing relationship through playing games and doing all other activities with each other.
  • Next time my developers say “X weeks”, I will say “X weeks + 2X days”. My developers love to think of weekend and holidays as ‘working days’ which is simply wrong and give no breathing window if anything goes wrong.
  • I will train all the newcomers myself, like I once did to my current team of developers. Never again asking any of my developers doing it.
  • I have to beg my developers to remember: The opposite of playing isn’t working. It’s depression.
  • Never let any developer working alone again.
  • Don’t promote my top developer to do management work. Myself included. Why? I still believe I’m one of the finest developer in my office, and if I’m doing project management work; my team looses one good developer and get one bad manager.
  • Be more sensitive to small personal details. It ruins things.

CountryData, CityData ใน Mathematica 6

ใช้ Mathematica มาตั้งหลายปี (ห้าปีได้แล้วมั้ง? ถ้าเป็นแฟนก็คงกำลังอยู่ในช่วงคบใกล้เลิกพอดี จากระยะเวลา ….) เพิ่งจะรู้ว่าเวอร์ชันนี้มันมีของเล่นใหม่เยอะตอนตามอ่าน Wolfram Blog น่ะแหละ ของเล่นอื้อซ่าเลย

วันนี้ลองเข้าไปอ่านๆ ดู เจอของดีน่ะ ว่ามันมี CountryData กับ CityData ให้ใช้ด้วยแฮะ พอเรียกใช้แล้วมันจะติดต่อกับ server ของทาง Wolfram แล้ว update ข้อมูลใหม่ให้เราเองตามที่เราต้องการ

เจ๋งดีอ่ะ

แต่ว่าช้านิดแฮะ อย่างว่า สงสัยไม่ Net เรามันไม่ค่อยจะเร็วเท่าไหร่ ก็ข้อมูลมันเยอะ นี่ลองทำตามตัวอย่างดูหน่อย

CountryData["France", "Shape"]

แล้วก็รอชาตินึง (ก็พวกเล่นลงข้อมูลทีเดียวทั้งโลกนี่หว่า) ก็ได้ผลเป็นรูปร่างของประเทศฝรั่งเศส นอกจากนั้นก็ยังมี attribute ให้เล่นอีกหลายตัว เช่น Population หรือว่าข้อมูล GDP แต่ละปี

เสร็จแล้วเราก็ลองของไทยดูบ้าง… อืมม สิบปากว่าไม่เท่าตาเห็น ลองดูเองดีกว่า

mathematica1.png

เจ๋งแฮะ ทำให้ชักอยากจะกลับมาลองเล่น Mathematica 6 จริงๆ จังๆ ซะแล้ว (ตอนที่ 5 ออกนะ ไม่ค่อยมีความรู้สึกว่ามันต่างจาก 4 เท่าไหร่ พวก WOW factor แบบนี้ต่ำพอควร หรือว่าผมคิดไปเองก็ไม่รู้)

TeX

ช่วงนี้ต้องนั่งเขียนรายงานโครงการวิจัยส่งไปยังผู้ให้ทุนวิจัยรายหนึ่ง (ขอสงวนชื่อ) ซึ่งทางเค้าบอกมาเองว่าไม่ต้องเน้น format มาก อยากจะได้ content มากกว่า เราก็เลยได้โอกาสเขียนมันด้วย TeX อีกที ซึ่ง Mac ก็มี MacTeX ให้ใช้นะ ติดตั้งง่ายไม่ยุ่งยาก ถึงจะสมบูรณ์เกินไปหน่อยก็เถอะ (คือมี package มากไป ขนาดเลยเวอร์ไปหน่อย)

ส่วนเรื่องภาษาไทย ก็มีคนเขียนเรื่องนี้ไว้ค่อนข้างละเอียดแล้ว ภาษาไทยสำหรับ LaTeX บน Mac OS X ที่ Thai Mac Dev ก็ละเอียดดี ทำตามได้เลยไม่มีอะไรผิดพลาด

ก็เลยมาถึงเรื่องที่อยากจะเขียนมานานแล้ว แต่ว่าไม่ได้เขียนซะที

  • ทำงานกับ TeX แล้วมีความสุขแฮะ ไม่ต้องมานั่งกังวลเรื่อง Formatting ยิบย่อยว่ามันจะไม่เหมือนกัน มันแยก Content ออกจาก View ขาดเลย
  • ทุกอย่างที่เราทำ จะมี semantic ตลอด เช่นบอกว่าตรงนี้เป็น subsection หรือว่า subsubsection นะ แล้วถ้าตั้ง label แบบฉลาดๆ หน่อยนี่ เขียน shell script ง่ายๆ หาทุกอย่างในหนังสือทั้งเล่ม เพื่อทำ cross-reference นี่ง่ายสุดๆ
  • ไม่ต้องกังวลเรื่องความถูกต้องของหน้าในสารบัญอะไรทั้งสิ้น (สารบัญ สารบัญภาพ ฯลฯ)
  • ไม่ต้องกังวลเรื่องรายละเอียดความถูกต้องของการอ้างอิงเอกสาร ขอให้อ้างอิงเถอะ ที่เหลือมันจัดการให้
  • ถ้าอยากจะได้ style อื่น ก็เปลี่ยน style ของเอกสารได้ไม่ยาก แถมเปลียนมาแล้ว รายละเอียดปลีกย่อยมันจัดการให้เองหมด ไม่ต้องยุ่งยากกับการปรับโน่นปรับนี่เล็กๆ น้อยๆ เท่าไหร่
  • ผมชอบตรงที่มัน generate อะไรก็ตามที่มันควรจะถูก generate เช่น การอ้างอิงโดย label แล้ว TeX จะดึงเอาตัวเลขของภาพ/ตาราง/บท/ส่วน ที่ชื่อตาม label นั้นๆ มาใส่ให้โดยอัตโนมัติ ไม่ว่าเนื้อหาส่วนนั้นมันจะถูกย้ายไปไหนก็ตาม
  • การจัดเอกสาร ที่รับรองว่า สวย และ consistent กันทั้งเล่ม แน่นอน

แต่ว่ามันก็คงจะมีข้อเสียบ้างละน่า ข้อเสียที่สุดน่าจะเป็น

  • แน่นอน มันไม่ใช่ MS-Word ดังนั้นจึงมีข้อเสียตามมาอีกสองข้อคือ
  • แน่นอน มันไม่สร้าง .doc ให้เราแน่
  • แน่นอน Format มันอาจไม่ตรงกับเอกสารที่ Word สร้างแบบเปี๊ยบๆ ดังนั้นพวกบ้า Format มากกว่า Content (ว่าต้องตรงกับ “Word Template ของฉันเท่านั้น” แบบที่ถึงขนาดเอาไม้บรรทัดนั่งวัดกันจะเป็นจะตาย) คงไม่ชอบ
  • มันไม่ WYSIWGY ดังนั้นหลายคนไม่คุ้นเคยแน่ (แต่คนเคยเขียน HTML มาก่อนไม่น่ามีปัญหา

สรุปว่า Happy TeXing ;-)

App: Leopard MenuHack

บ่นกันจัง ว่า Menu bar ใน Leopard มันกวนสายตา กวนใจ ไม่พอ ยังทำให้ต้องเรื่องมากขึ้นอีกเยอะกับการเลือก background สักรูป เพราะว่าไม่งั้นมันจะอ่าน menu bar ลำบากเอา

kiterminal ไปเจอโปรแกรมเจ๋งๆ ตัวนึงมา ชื่อ Leopard MenuHack หน้าที่ของมันคือให้เราปรับสีตรงที่จะไปอยู่ด้านหลัง menu bar ได้เลย (เหมือนกับเอาแถบสีไปแปะบน desktop background น่ะแหละ) แถมเป็น open source (ใช้ GPL) ด้วย

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

อัพเกรด bash

เขียน shell script ใน bash (Bourne-Again SHell) มาก็หลายตัว สิ่งที่รำคาญที่สุดก็คือการเขียน loop เพราะว่าต้องเขียน

for i in 1 2 3 4 5

อะไรทำนองนี้ ถ้ามันเป็นตัวเลขก็ยังพอจะหาโปรแกรมพวก seq หรือว่า jot มาใช้ได้ไม่ยากนัก หรือว่าจะเขียนเองก็ไม่ได้ยากเย็นอะไรเท่าไหร่ ถ้าบางทีเป็นตัวอักษรนี่ก็คงจะลำบากหน่อย แต่ว่าก็เขียน Ruby script ที่จะสร้าง sequence ตัวอักษรต่อๆ กัน ก็ไม่ได้ยากเท่าไหร่ …. แต่ว่าคำถามก็คือว่า ทำไมต้องมาทำแบบนี้ด้วยหว่า มันน่าจะมีอะไรซักอย่างที่ช่วยได้สิ

และแล้ววันนี้ก็ไปเจอมาจาก blog ของ Sam Danielson

เห็นแล้ว โอ้โฮ!

for i in {1..12}

ไม่พอๆ หรือว่า

mkdir {a..z}{1..12}

ไอ้นี่สิ killer ชัดๆ

wget http://www.anoyingpages.com/page_{1..12}.html

เพิ่งจะรู้ว่า bash มันทำแบบนี้ได้ด้วยแฮะ! ทำไมไม่เคยรู้มาก่อนเลยหว่า

และแล้วเราก็ลองไปเล่นใน bash เรามั่ง … และแล้วเราก็มานั่ง bashing มัน ทำไมมันไม่ work วะ ให้ตายเถอะ ก็เลยลอง search หาเรื่อง Brace expansion ใน bash ต่อไป และแล้วเราก็มาถึงบางอ้ออีกครั้ง

บางอ้อที่ว่านี่ก็คือเลข version และแล้วเราก็เลยต้องรีบไป check version ของ bash เราว่ามันเป็นไง

echo $BASH_VERSION

สรุปว่าเป็น 2.05b … โห OS X 10.4 (Tiger) มันให้ bash เก่าขนาดนี้เลยหรือนี่ (ปล. ห้ามใช้ bash –version นะครับ เพราะว่ามันไม่ได้หมายความว่ามันเป็น bash ตัวที่คุณใช้อยู่ มันแค่เป็นตัวแรกที่อยู่ใน path เท่านั้นเอง)

ก็เลยเข้าไป check ดูจาก new features list ของ bash 3 มีเยอะแยะมากมาย ….​ อืมมม ถึงเวลาที่จะต้องเปลี่ยน shell แล้วหรือนี่

ก็หามาลงสิครับพี่น้อง! และแล้วเราก็ไปเอา source ของ bash 3.2 มาลง ก็ compile ลงตาม step ปกติ โดยผมให้ไปลงที่ /usr/local/ ครับ แล้วเดี๋ยวค่อย chsh กับทำ symbolic link เอา อ่อ อย่าลืม backup bash ตัวเก่าไว้ด้วยนะครับ (เก็บเป็น bash2 หรือว่าอะไรก็ได้) เดี๋ยวจะมีปัญหา….. กลัวเหมือนกัน

ไม่ได้ apply patch อะไรเลยนะ (เห็นมีตั้ง 25 ตัว) ขี้เกียจ …

พอลงเสร็จแล้ว ตอนนี้ใช้งาน bash 3.2 เฮ้อ ใช้ command-line บน terminal มีความสุขขึ้นเยอะเลย ลองทำตามตัวอย่างใน web ของ Sam Danielson ก่อนก็ได้ครับ สนุกดี :-D

หวังว่า OS X 10.5 (Leopard) จะเป็น bash 3 โดย default นะ … (ใครลง beta หรือว่า preview อยู่ ช่วยทดสอบหน่อยครับ)

[update 1]: เพิ่ม killer example อีกตัว (wget)
[update 2]: เพิ่ม link ไปที่ source code ของ bash 3.2 แล้วก็แก้เลข version ที่ผิดหลายที่

นับถอยหลัง Boot Camp Beta

Apple ได้ ออกโรงเตือน ผู้ใช้ Boot Camp ว่าซอฟต์แวร์รุ่นทดลอง (beta) ตัวนี้ได้หมดอายุลงไปเรียบร้อยแล้วเมื่อวานนี้​ (30 กันยายน) สำหรับ Boot Camp รุ่น 1.2 หรือก่อนหน้า โดยที่เมื่อหมดอายุแล้วจะไม่สามารถใช้งาน Boot Camp Assistant ได้อีกต่อไป

To continue using Boot Camp Beta for Microsoft Windows on your Intel-based Mac, you’ll need to update to Boot Camp Beta 1.4, until Mac OS X 10.5 Leopard is available.

อันนี้ confirm เพราะว่าเครื่องผมลงไว้เป็น 1.2 เท่านั้น (แต่ว่าไม่เคยใช้เลย)

สำหรับรุ่นหลังจากนั้น (ถึง 1.4) ทาง Apple ก็ได้บอกว่าจะยังคงทำงานต่อได้อีกสักพักจนกว่า Leopard (ซึ่งจะมี Boot Camp ตัวจริง) จะออกมาในเดือนนี้ ซึ่งเมื่อวันนั้นมาถึง ทาง Apple ก็ได้บอกว่าการที่จะใช้งาน Boot Camp ต่อไปนั้นจะต้อง upgrade เป็น Leopard จาก statement นี้นะ

To continue using Boot Camp at that time, upgrade to Mac OS X 10.5 Leopard.

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

แต่ว่าอนาคตเป็นเรื่องไม่แน่นอน ยังไงอาจจะมี Boot Camp รุ่นสำหรับ Tiger ตัวเต็มออกมาให้ใช้งานก็ได้นะ (แต่ว่าอ่านจาก statement ของ Apple แล้วไม่อยากจะหวังอะไรมากแฮะ ยิ่งพักหลังๆ นี่ยิ่งเขี้่ยวๆ อยู่ด้วยกับเรื่องพวกนี้)

ทำไมผมรู้สึก negative กับ Apple พักหลังๆ ยังไงก็ไม่รู้แฮะ ส่วนหนึ่งก็เข้าใจอ่ะนะ ว่า policy ส่วนมากมันก็ผูกพันกับการตลาด ธุรกิจ แล้วก็ผลประโยชน์ร่วมกัน (เช่นเรื่อง iPhone เป็นต้น) แต่ว่าเรื่องเล็กน้อยแบบ Boot Camp นี่ ทำไมถึงกับต้องให้ upgrade เป็น Leopard ทั้งๆ ที่ตอนนี้มันก็ยังทำงานได้ไม่ขัดข้องอะไร หรือว่ามันจะต้องไปใช้ feature อะไรที่ Leopard มันมีแต่ Tiger ไม่มี? อันนี้ไม่น่าใช่หนัก แล้วเพราะอะไร? คนอยากจะใช้ Leopard เต็มบ้านเต็มเมืองอยู่แล้ว คิดว่าไม่ต้องพยายาม force คนทุกครั้งที่มีโอกาส และทุก feature หลักที่ทำให้หลายคนยอมใช้ Mac อยู่ก็ได้นะ

แต่ว่าก็มองอีกแง่นึงแฮะ เพราะว่าคนที่แคร์กับ Boot Camp “ส่วนมาก” ย้ำ “ส่วนมาก” จะเป็นพวก switcher ที่อาจจะไม่ค่อยจะสนใจ OS X หรือเปล่านะ ก็เลยต้องหาเรื่อง force แบบนี้ ไม่งั้นอาจจะไม่สนใจ upgrade กัน ทำให้เสียโอกาสและ revenue?

แต่ช่างเถอะ … ยังมีเวลาเหลืออีกหน่อย ไว้ค่อยดูกัน

อ้างอิง: When does Boot Camp Beta expire?, Apple Support Article ID: 306583

Syntax highlighting

คิดๆ อยากจะเขียน code snippet (ที่ไม่เกี่ยวกับ mac development) ลงในนี้บ้างเหมือนกัน แต่ว่ามันไม่มี highlighting เจ๋งๆ เลย ไอ้ตัวที่ใช้อยู่นานนมกาเลอย่าง code2html ก็ดันไม่ highlight Haskell อีก จะเขียนเพิ่มเข้าไปเองก็ขี้เกียจ (ทั้งๆ ที่จริงๆ ก็ทำได้อ่ะนะ แต่ว่า code มันเขียนแบบ Perl-ish มากกกกก แถมไม่ factored ไม่แยก module เท่าไหร่) … อืมมม มันต้องมีคนคิดเหมือนเราสิ ว่าแล้วก็เริ่มหา

สักพักก็ไปเจอหน้า Plugins/Syntax Highlighting ที่ WordPress เอง แต่ว่าเท่าที่อ่านๆ ดูไม่ค่อยจะมีตัวไหนเข้าท่าเลยแฮะ (มันไม่ highlight Haskell ซักกะตัว เท่าที่อ่านแบบผ่านๆ) นอกจาก Vim Color แต่ว่าไอ้ตัวนี้ก็ดันไป dependent กับ Text::VimColor ที่เป็น Perl module ต้องลงผ่าน CPAN อีก เออ ไม่เป็นไร ลงก็ได้ แต่ว่าก็ดัน build ไม่ผ่านซะงั้น (test ผ่านน้อยไปหน่อย) จะ force install ลงเลย ก็ดันไม่ work อีก เฮ้อ เบื่อจริง ก็เลยต้องหาต่อไป

และแล้วเราก็ไปเจอ GeSHi: Generic Syntax Highlighter ที่เขียนในภาษา PHP เราก็เลยเอามาเขียนทำเป็น command line application ง่ายๆ ที่อ่านไฟล์ตาม argument แล้วก็เดาภาษาจาก extension ของไฟล์ แล้วก็พ่น highlighted code ที่เป็น HTML ออกมาให้เรา code-paste ใส่ blog ได้ผลดังนี้ (Haskell)

import List
 
permute [] = [[]]
permute xs = [x:ys | x <- xs, ys <- permute (delete x xs)]
 

หรือว่าภาษา Ruby แบบนี้

class Array  
  def permute
    return [self] if size < 2
    perm = []
    each {|e| (self - [e]).permute.each {|p| perm << ([e] + p)}}
    perm
  end
end
 
[0,1,2,3].permute.each {|e| p e }

ก็ใช้ได้อ่ะนะ แต่ว่ามันอาจจะรก HTML code ไปหน่อยนึง

[update 1]: พอมี line number แล้วมันเละใน blog แฮะ เลยเอาออก ไว้จะแก้ CSS ทีหลัง ตอนนี้ขี้เกียจ (อีกล่ะ)

[update 2]: เพิ่งจะสังเกตจากหน้า web ว่า \\ ใน code haskell มันหายแฮะ เหลือแค่ตัวเดียว .. ไม่รู้เหมือนกันว่าทำไม code ฝั่งนี้ก็ยังอยู่นะ เลยไม่รู้จะว่าไงดี :-(

[update 3]: สุดท้ายก็เลยลงเอยด้วยการเขียน code ใหม่ไม่ให้มันมี \\ อืมมม อ่านเป็นภาษาคนกว่าเก่าแฮะ แต่ว่ามัน geek-ish น้อยลง :-P

[update 4]: อ๊ากกก GeSHi มันไม่มี Erlang highlighting! ว้า กำลังจะหัดเล่นอยู่เลย ว่าแต่ Erlang นี่ทำไมมันลูกเมียน้อยตอนนี้จังเลย emacs ก็ไม่มี (ผมใช้ Carbon Emacs distribution) TextMate ก็ไม่มี มีแต่ vim … สุดท้ายก็ตายรังสินะ แต่ว่า Emacs mode ของ Erlang ก็ไม่น่าหายากเท่าไหร่ [note — ณ ปัจจุบัน เจอแล้ว] ไม่เป็นไร มีเวลาและชินๆ กับ Erlang มากกว่านี้เมื่อไหร่ (พอจะชินกับ module/keywords) แล้วเดี๋ยวค่อยทำเพิ่มเข้าไปใน GeSHi เองก็ได้วะ