โพสต์

กำลังแสดงโพสต์จาก กรกฎาคม, 2009

ตัดช่องว่างให้เหลือช่องเดียว

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

ถ้าเรามี string แบบนี้
name1 = " นาย สมชาย วาทุวงศ์" name2 = "นางสาว สุขสม อาภา" ให้สั่ง
name1.squeeze(" ").strip => "นาย สมชาย วาทุวงศ์" name2.squeeze(" ").strip => "นางสาว สุขสม อาภา" เราจะได้ string ที่ตัดช่องว่างออกไปเรียบร้อย

คำสั่ง squeeze(" ") จะย่อ " " ทุกตัวให้เหลือตัวเดียว
ส่วนคำสั่ง strip จะตัดช่องว่าง \n \t \r ที่อยู่ด้านหน้าและด้านหลังออกให้ ไม่ลบตรงกลางนะ

Like ใน google reader

รูปภาพ
เมื่อกี้นี้มีปุ่ม like โผล่ขึ้นมาใน google reader



หลังจากทดลองก็พบว่ามันคือการบอกทุกคนบนโลก (ที่ใช้ google reader) ว่าเราชอบ link นี้

แว๊บแรกนึกว่ามันซ้ำซ้อนกับอันอื่นหรือเปล่า เพราะในใจนึกว่า share กับ star มันก็ซ้อนๆ กันอยู่ อันที่เรา star ไว้ก็มักจะอยาก share ด้วย แต่

star มันใช้ของเราคนเดียว
share ก็เอาให้เพื่อนๆ
like เอาไว้บอกทั้งโลก

เมื่อก่อนกด star ทีไรต้องกด share ด้วยทุกที ตอนนี้ภาระของผมต้องเพิ่มจากสองปุ่มเป็น สามปุ่ม ก็มันไม่เหมือนกันนินา :'( ทำไงได้

ตอนนี้พฤติกรรมเริมเปลี่ยน ผมเริมพิจารณาว่าจะกดปุ่มไหนบ้าง แทนที่จะกด start+share เสมอ

ทำเว็บแบบขยาย: เพิ่มความเร็วในการอ่านไฟล์

รูปภาพ
บริการบนเว็บส่วนมากอ่านไฟล์กันกระจุยกระจายอยู่แล้ว โดยเฉพาะที่บริษัทผมทำด้าน data-ware house เก็บไฟล์ multimedia แค่อ่าน thumbnail หน้านึงอย่างน้อยๆ ก็ 20 ไฟล์ แถมใน server มีไฟล์เป็นล้าน แค่หาไฟล์อย่างเดียวยังไม่ทันอ่าน server ก็เริ่มเหนื่อย

ก่อน ext3 บน kernel 2.6 เวลา server หาไฟล์ใน folder มันต้องไล่หาตั้งแต่ไฟล์แรกไปจนถึงไฟล์ที่ต้องการ ถ้าใน folder นั้นมีซัก 10,000 ไฟล์ server ก็ต้องทำ string match กัน 10,000 ครั้งก่อนจะเริ่มอ่านไฟล์ ถ้าในกรณีบริษัทผมต้องหาไฟล์ 20 ไฟล์ ก็ต้องทำ string match กัน 200,000 ครั้งต่อการเปิดเว็บ 1 หน้า

ตอนนี้ดีหน่อยเพราะเรามี ext3 บน kernel 2.6+ แถมมี ext4 อีกต่างหาก ตัวใหม่ๆ จะเก็บไฟล์เป็น hash เวลาเรียกไฟล์มันจะไปหาใน hash แล้ววิ่งตรงๆ ไปหาไฟล์เลยไม่ต้องเสียเวลาอ่านชื่อกันทีละไฟล์

ใครที่อยู่บนสถาปัตยกรรม เก่าๆ ก็ต้องลดจำนวนไฟล์ใน folder เอานะครับ

ธรรมชาติอีกหนึ่งอย่างที่น่าสนใจคือ เวลาที่ UNIX มันอ่านไฟล์มันไม่ได้อ่านอย่างเดียวครับ มันจะเขียนด้วย สิ่งที่เขียนคือ "เวลา" ที่เราไปยุ่งกันไฟล์ เพื่อบันทึกว่าแต่ละไฟล์ถูกอ่านหรือเขียนไปล่าสุดตอนไหน…

Social network แบบสามัคคีสุดๆ

video นี้ก็แหวกแนวน่าดู



แสดงความสามัคคีแบบสุดๆ ดูแล้วแต่ละคนน่าจะอยู่ใกล้ๆ กัน แต่ถ้าอยู่ไกลกันแบบข้ามประเทศคงเท่น่าดู เอาไว้รนรงค์ลดโลกร้อนแบบ :D

จริงๆ แค่ทั่วไทยก็สุดๆ แล้ว

iPhone Jumbo

รูปภาพ
ใครอยากได้ iPhone mini ก็ช่างเค้า ผมอยากได้ iPhone Jumbo



หน้าตาแบบนี้ละที่อยากได้ เอาไว้ทำงานแบบไม่ต้องมีโต๊ะ
เช่น ในร้านกาแฟ บนรถไฟฟ้า บนรถเท๊กซี่ หรือตอนเดินไปเดินมา

จริงๆ แม้แต่อยู่บนโต๊ะทำงาน ถ้าเขียนลงไปบนจอได้เลย
แบบนั้นน่าจะได้อารมณ์ก่วาเขียนที่นึง แล้วไปโผลอีกที

"Where you write is where you get"

เริ่มเขียนหนังสือ ruby

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

หลังจากเขียนมาได้ประมาณ 33 หน้าก็เริ่มมองหาเครื่องมือในการเขียน เพราะเขียนบน TextEdit.app เริ่มไม่ไหว ดูเหมือน TextEdit.app จะไม่ค่อยถูกกับภาษาไทย ไม่รู้ว่าเป็นเพราะการ render ภาษาไทย หรือเพราะการตัดคำ พอมีภาษาไทยเกิน 8 หน้ามันจะเริ่มช้ามากๆ พอมีถึง 33 หน้ามันเริ่มหยุดนานจนรอไม่ไหว

หันมาใช้ Editor ตัวอื่นอย่าง TextMate ปรากฏว่าอาการช้าหายไป แต่กลายเป็นมันไม่ยอมตัดคำภาษาไทยแทน ทำให้จำเลยตกเป็นของระบบตัดคำภาษาไทยบน Mac

พอเอา BBEdit มาลองก็ได้ผลเหมือน TextMate ครับ

หันมาใช้ไม้ตายอย่างโปรแกรม Page ในชุด iWork ก็พบปัญหาเดียวกันครับ แม้ว่าจะทำงานได้เร็วกว่า TextEdit มากมาย แต่ก็มีความหน่วงเกิดขึ้นบ้าง พอพิมพ์แล้วต้องรอสักเสี้ยววินาทีตัว…