remove last character of every line using vim

ช่วงนี้เขียนโปรแกรมมากกว่าปกติ และเป็นครั้งที่สอง ที่มีความจำเป็นจะต้องหาวิธีลบตัวอักษรตัวสุดท้ายของทุกบรรทัดออก แน่นอนว่า หากใช้ vi หรือ vim ปฎิบัติการนี้จะง่ายและเร็วมาก (ถ้ารู้วิธี)  คำสั่งที่ต้องใช้คือ

:%s/.$//

อธิบายทีละตัว เผื่อใครยังเป็น vi มือใหม่อยู่
  • : เครื่องหมายโคลอน เพื่อเข้าสู่ command line mode
  • % เครื่องหมายเปอร์เซ็นต์ บอกให้มีผลกับทั้งไฟล์ (ถ้าไม่ใส่ จะทำงานกับเฉพาะบรรทัดปัจจุบันเท่านั้น)
  • s ตัวอักษรเอส เป็นคำสั่งให้ค้นหาและแทนที่
  • /.$ เครื่องหมาย slash จะเป็นจุดเริ่มของสิ่งที่ต้องการค้นหา เครื่องหมายแทนตัวอักษรอะไรก็ได้ เครื่องหมาย dollar sign บอกตำแหน่งว่าเป็นตำแหน่งสุดท้ายของบรรทัด โดยรวมแล้วก็คือให้ค้นหาตัวอักษรอะไรก็ได้ที่อยู่ตำแหน่งสุดท้าย
  • // ชุดเครื่องหมาย slash ชุดหลัง จะเป็นตัวอักษรที่ต้องการให้แทนที่ ในที่นี้ ให้แทนที่ด้วย nothing เลยเป็น slash สองอันติดกัน ส่งผลให้เกิดเป็นการลบตัวอักษรขึ้น

					

block comment using vim

พยายามใช้ vim เป็น editor หลักมาได้เป็นเดือนแล้ว ได้เรียนรู้เทคนิคอะไรใหม่ๆ เกือบทุกวัน บนโต๊ะมีกระดาษอยู่สองแผ่น ที่ใช้เกือบทุกวัน คือ VI Quick Reference — Basic Commands อีกแผ่นหนึ่งคือ vi/vim graphical cheat sheet

สองสามวันมานี้เขียนโค้ดแล้วเกิดอยากทำ block comment ขึ้นมา คือการเลือกส่วนของโค้ดติดๆ กันหลายบรรทัด แล้วใส่เครื่องหมายพิเศษอะไรบางอย่าง เข้าไปข้างหน้าของแต่ละบรรทัด เพื่อนให้โค้ดกลุ่มนั้นกลายเป็น comment ไป โปรแกรมเมอร์มืออาชีพคงใช้กันทุกคน มือสมัครเล่นอย่างเรานานๆ ทำที

  • กูเกิลเอาแป๊บเดียวก็เจอแล้ว ด้วย คีย์เวิร์ด how to block comment vim เจอเป็นรายการแรกเลยที่นี่
  • เข้าสู่ visual block mode โดยกด Ctrl-V (ต้องเป็น V ใหญ่นะครับ จริงๆ ก็คือ Ctrl+Shift+v นั่นแหละ) Ctrl+v เฉยๆ บน Windows มันจะเป็นการ paste ไป
  • เลือกบรรทัดที่ต้องการ block comment โดยการใช้ j, k เลื่อนเคอร์เซอร์ระบายแถวที่ต้องการ
  • กด I (ตัวใหญ่) เพื่อเข้าสู่ Insert mode แล้วตามด้วย comment character, ซึ่งก็ขึ้นอยู่กับภาษาที่ใช้ ผมเขียน Python ก็เป็น #
  • ปิดท้ายด้วยการกด Esc โว้ล่า!!

แถม จากคอมเม้นต์ของบล็อกต้นฉบับ วิธี uncomment

  • เข้า visual block mode เหมือนข้างต้น พอระบายแถบ comment character ที่ต้องการได้แล้ว ก็กด d เพื่อ delete มันจะลบเฉพาะตัวอักษรที่ระบายไว้

vim นี่ยิ่งใช้ยิ่งชอบแฮะ

Information Quality Applied

เมื่อวานนี้ซื้อหนังสือจริงๆ เป็นเล่ม หลังจากที่ซื้อเป็น Kindle ebook มาเสียหลายเล่ม

ถึง ebook จะสะดวกกว่ามาก แต่หนังสือกระดาษ ก็ยังคงมีที่ยืนอยู่ของมันเอง อย่างหนังคือหนังสือจำพวก reference ที่อาจจะเหมาะกับการวางไว้บนโต๊ะทำงาน เอาไว้เปิดหาอ้างอิงอะไรบางอย่าง

ได้เล่มนี้มา Information Quality Applied โดย Larry P. English ตอนแรกก็ไม่ได้มีเล่มไหนในใจหรอก ตั้งใจว่าจะซื้อ Python Standard Library by Example กับหนังสือเกี่ยวกับ data management ซักเล่มหนึ่ง เสียดายที่คนขายบอกว่า ไม่มีหนังสือ Python เหลือเลย (แถมเราเจาะจงเล่มเสียด้วย)

Information Quality Applied ดูน่าสนใจดี เป็นการประยุกต์ TQM (Total Quality Management) เข้ากับ Information processes พลิกๆ ดูบทต่างๆ แล้วก็ดูจะเข้ากันได้ดีกับงานของเรา เลยซื้อมา

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

ตัวเลขที่เป็นมูลค่าเงินของความเสียหายเหล่านี้ สูงจนแทบไม่น่าเชื่อ คือประมาณ 1.2 trillion dollars (ล้านล้าน)

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

จะว่าไปแล้ว ถ้าเราลองมองดูให้ดีๆ ผลเสียของ low quality information มีให้เห็นอยู่ทั่วไป รอบๆ ตัวเรา ถ้าเราปรับปรุงคุณภาพของข้อมูลให้ดีขึ้นได้ ผลผลิตโดยรวมก็คงจะดีขึ้น rework น้อยลง

เรียกได้ว่าเป็นบทเริ่มที่ hook ได้ดีมากเลยทีเดียว

TMB/ING ParkRun Sep 25-2011

เช้านี้ไปวิ่งงาน TMB/IMG Park Run มา ไม่รู้ว่างานแบบนี้จัดมาหลายปีแล้วหรือยัง แต่ไอเดียดีมากเลย กับการวิ่งผ่านสวนสาธารณะสามแห่ง คือ สวนจตุจักร สวนรถไฟ และสวนสมเด็จพระนางเจ้าสิริกิติ์ ฯ

เส้นทางวิ่ง

วีดีโอโปรโมท

เพิ่งรู้เหมือนกันว่า มันมีทางเชื่อมกันระหว่างสวนรถไฟกับสวนสมเด็จพระนางเจ้าสิริกิติ์ฯ ด้วย ในโฆษณาเห็นบอกว่าเริ่มตี 5 แต่เอาเข้าจริงๆ  10.5km ปล่อยตัวตอนประมาณ หกโมงสิบห้านาที

คราวนี้เราลงวิ่งแค่ 4 กิโล เพราะเมื่อวานนี้วิ่งไปแล้วเกือบ 16 กิโล ขืนวิ่งอีก 10 กิโลวันนี้มีหวังแย่แน่

คนเยอะมาก สำหรับเส้นทางวิ่งที่จุดเริ่มต้น พอปล่อยตัวปุ๊ปก็ต้องค่อยๆ เดินไหลไปเรื่อยๆ จนกว่าจะเริ่มมีที่ว่างที่พอจะวิ่งได้บ้าง  แต่บรรยากาศก็สนุกสนานดี แน่นอนว่าเต็มไปด้วยพนักงาน TMB และ ING มาร่วมวิ่งและออกกำลังด้วย

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

วิ่งเสร็จแล้ว ตอนแรกว่าจะอยู่รอดู Nuvo กับ JetSetter อยู่เหมือนกัน ไม่ได้ดูดนตรีเล่นสดมานานแล้ว แต่นายกับกวงอยากกลับก่อน ก็เลยไม่ได้อยู่รอดู

google+ opens for everyone

เห็นข่าวจาก twitter ว่าตอนนี้ Google+ เปิดสำหรับคนทั่วไปแล้ว แถมตามด้วย feature น่าตื่นเต้นอีกหลายรายการ

ได้ Invite G+ มาหลายสัปดาห์แล้ว ช่วงที่เค้าเห่อๆ กัน เราฟัง podcast มากๆ ก็อยากมีด้วย พอมีแล้วก็ตื่นเต้นอยู่ได้วันสองวัน add คนไปได้ซัก 5-6 คนก็หายตื่นเต้นแล้ว

ประเด็นก็คือ สำหรับคนที่ทำงานเต็มเวลา จะเอาเวลาที่ไหนมาใช้งาน social network มากกว่าหนึ่งอันละเนี่ย แถมเพื่อนๆ เราส่วนใหญ่ก็อยู่ใน fb เสียด้วย ขนาดใน facebook เองเรายังไม่ได้เข้าไปดูทุกวันเลย บางทีก็ต้องหลายๆ วันที twitter นี่ยิ่งแล้วใหญ่

แต่ก็ดีใจนะที่มี google+ เพราะเห็นได้เลยว่า พอ google ออก plus มา ทาง facebook ก็เริ่มขยับตัว เพิ่มฟีเจอร์ ปรับปรุงบริการ การแข่งขันนี่มันดีต่อผู้ใช้จริงๆ

การเปิดสำหรับผู้ใช้ทั่วไป และการเปิด API (ซึ่งก็เริ่มเห็นมี application ออกมาบ้างแล้ว) น่าจะทำให้ Google+ เป็นที่นิยมได้มากขึ้นไปอีก แต่ว่าอาจจะยากหน่อยที่จะดึง consumer ทั่วไปที่ไม่ใช่ geek ให้ย้ายจาก facebook มา เพราะอย่างที่บอก จะคนทั่วๆ ไปมากแค่ไหน ที่มีเวลาและพลังงานเหลือพอที่จะลอง social network มากกว่าหนึ่งอย่าง

Google Fusion Tables

เพิ่งเคยรู้จัก Google Fusion Tables ก็จากข่าวของ Blognone ฟีเจอร์ใหม่ Google Docs: Format Painter, Fusion Tables, ลากแล้ววางรูปใน Drawingsวันนี้เอง

บริการนี้ยังเป็นแค่ Beta อยู่ แต่ได้รวมเข้ามากับ Google Docs แล้ว ตามที่เข้าใจก็คือ เราสามารถเอาข้อมูลเข้าไปไว้ในตาราง แล้วลิงค์เข้ากับ map หรือทำ visualization แบบอื่นๆ ได้ แถมมี API ให้สามารถเล่นกับข้อมูลหลายๆ แบบได้

น่าสนใจดี ต้องหาเวลาไปลองเล่นเสียหน่อย