เริ่มทำงานมาวันที่ 1 มีนาปีที่แล้ว วันนี้ก็ครบ 1 ปีพอดิบพอดี เป็นการทำงานที่สนุกสนานเฮฮา แบบไม่เครียดมาก แถมได้ทำอะไรหลายๆ อย่างที่ไม่คิดว่าจะได้ทำ (ล้างตูปลา จัดโต๊ะ นอนกลางวัน กินข้าวตอนบ่ายโมง) ได้ความรู้แปลกๆ ที่บางทีอาจหาไม่ได้ในห้องเรียน (การออกแบบซอร์ฟแวร์จริงๆ การใช้โปรแกรมควบคุมรุ่นเอกสาร การลองของเล่นใหม่ๆ เช่น flex air spring …) แต่บางอย่างก็เอามาจากห้องเรียนนั่นแหละ นอกจากงานแล้วยังได้ไปเที่ยวเยอะที่สุดในรอบหลายปี (3 – 4 รอบ) ได้เล่นอะไรสนุกๆ ได้คิดถึงเรื่องอื่นๆ นอกจากคอม ได้คิดถึงคนอื่น ได้คิดถึงตัวเอ สรุปเป็นปีที่ดีสินะ แต่ว่ายังรู้สึกว่าหลายๆ อย่างยังไม่ได้ทำเลย หลายอย่างก็ทำค้างไว้เยอะเหลือเกิน แถมมีโครงการใหญ่ที่อยากทำ แต่ยังตัดสินใจไม่ได้ด้วยนี่สิ เห้อ ปีนี้ ปีนี้แหละที่ต้องทำเป้าหมายหลักๆ ที่คิดไว้ให้เป็นจริง เริ่มอย่างแรกเลยคือ ตั้ง project hosting กับ linux mirror ให้ได้ก่อนสินะ เป้าหมาย ปลายเดือนนี้แหละครับ
Subversion relocate
เมื่อวานย้ายที่ทำงานขึ้นมาอีก 20 ชั้น วันนี้ย้ายเซิร์ฟเวอร์เก็บไฟล์ที่ทำงานอยู่ (จริงๆ แค่เปลี่ยนไอพี) แต่แฟ้มที่อยู่ในเครื่องแปะไว้อยู่ที่ไอพีเดิม วันนี้ก็เลยเกือบต้องลำบาก เอาออกมาใหม่ทั้งหมด แต่ค้นอากู๋ไปมา ดันเจอคำสั่งที่ไว้ช่วยเปลี่ยนซะก่อน เลยรอดไป ปกติคำสั่งที่ผมใช้จะมีแค่ co (checkout), ci (commit), up(update) เอาไว้เอาไฟล์เข้าออกจากเซิร์ฟเวอร์ พอเปลี่ยนไอพีที ถามพี่พี่ก็บอกว่า co มาใหม่เลย คิดแล้วก็ซีดนิดๆ เพราะมันหลายไฟล์ + งานเก่าที่ทำไว้มีอะไรที่ค้างคาอยู่เยอะเหมือนกัน (แก้ไปแล้วอ่ะ :sad: ) สำหรับคพสั่งใหม่ที่เจอวันนี้คือ sw (switch) วิธีย้ายสำหรับเปลี่ยนที่ไฟล์ก็คือ svn sw –relocate [old] [new] [dir] เช่นไฟล์เดิมเซิร์ฟเวอร์อยู่ที่ 192.168.0.1 แต่เซิร์ฟเวอร์ใหม่ย้ายไปที่ 10.10.4.1 แล้วตำแหน่งของไฟล์อยู่ที่ /home/[user]/workspace เวลาย้ายก็ใช้คำสั่งตามนี้ svn sw –relocate http://192.168.0.1/workspace http://10.10.4.1/workspace /home/[user]/workspace หลังจากนั้นก็รอซักพักให้ svn แก้ไขข้อมูล entries [...]
เกมกระดาน
ช่วงนี้ติดเกมกระดานที่วางอยู่ที่ทำงานหลายกล่องอยู่ เกมกระดานที่เห็นส่วนใหญ่ก็จะได้รางวัลอย่างน้อยหนึ่งอย่าง แต่ที่เห็นมากสุดส่วนใหญ่จะได้รางวัล Spiel des Jahres เกมกระดานยอดเยี่ยมแห่งปีของเยอรมันเกมที่ได้รางวัลนี้และที่ ผมเห็นก็มีตามด้านล่างนี้แหละ Settlers of catan เล่นจนชวน mimoly ในห้อง #ubuntu-th มาเล่นบนคอมด้วยเลย (เกมนี้ตอนแรกผมนึกถึงเกมในคอมที่ชื่อว่า The settlers หละ แต่รูปแบบมันก็คล้ายๆ นะ) Alhambra ที่ตอนนี้ขนกลับมาเล่นที่บ้านอยู่ แต่ก็สนุกไปอีกแบบ เป็นแนวสร้างปราสาทของตนเอง ใครสร้างได้ใหญ่สุดชนะ Carcassonne เกมช่วยกันสร้างปราสาทแย่งพื้นที่ ใครได้สิ่งก่อสร้าง หรือพื้นที่มากสุดชนะ Ticket to ride หาเส้นทางรถไฟ ไปถึงเป้าหมายให้ไกลที่สุด(แต่เกมนี้่ยังไม่ได้มีโอกาสเล่นเลย) แต่ละเกมก็จะมีจุดเด่นแตกต่าง กันไปอย่าง Settlers of catan ที่เคยเล่นมาจะสนุกสุดก็ตอนที่ต้องคอยระวัง ไม่ให้ใครสร้างเมืองได้ใหญ่สุดก่อน หาโอกาสเอาโจร ไปขโมยทรัพยากร หรือแลกเปลี่ยนเป็นพันธมิตรกันชั่วคราว เพื่อสร้าง เมืองขวางไว้ หรืออย่าง Alhambra ที่ต้องมองว่า จะสร้างเมืองอย่างไรให้ใหญ่ที่สุด และกำแพงยาวที่สุด และจะเล่นสิ่งก่อสร้างแบบไหน ที่มีโอกาสชนะมากที่สุด [...]
Python
วันนี้ว่าจะเปิดดูเว็บภาษา python ซะหน่อยแต่ขี้เกียจค้นจาก อากู๋เลยลองพิมพ์ไปตรงๆ ว่า http://www.python.com โหลดเสร็จ… รีบปิดแทบไม่ทัน แม้จะเป็นงูเหมือนกันแต่ … เอาเป็นว่าต้องปิดแล้วเปิดใหม่ ค้นหาในอากู๋แล้วรู้ว่าจริงๆแล้วมัน url นี้ต่างหาก http://www.python.org คำเตือน: กรุณาอย่าเปิดขณะทำงานในอ๊อฟฟิต แล้วหันหลังให้คนอื่น
Regular expression กับภาษาไทย
วันศุกร์กำลังนั่งทำงานอยู่ แล้วก็คิดไปคิดมาว่าสิ่งที่ต้องทำคือการตรวจสอบว่า ข้อความที่ส่งเข้ามานี่มีตัวอักษรประหลาดพวก *^#$… อะไรพวกนี้อยู่หรือป่าว ปกติก็ลองกับภาษาอังกฤษธรรมดา เวลาใช้ regular expression ตรวจก็จะมีรูปแบบประมาณว่า \w ซึ่งเหมือนกันทุกภาษา แต่พอใช้ภาษาไทยปรากฏว่ามันตรวจสอบโดยใช้รูปแบบด้านบนไม่ได้นี่สิ เลยต้องขุดเพิ่มเติมนิดหน่อยแล้วก็เจอตัวนี้เข้า \p{…} รูปแบบนี้เป็นตัวบอกว่าจะใช้กลุ่มรูปแบบที่เกี่ยวกับ unicode นะ คราวนี้ถ้าต้องการตรวจสอบภาษาไทยก็ใส่เป็น \p{L} แต่ปัญหามันไม่จบแค่นั้น ถ้าใส่แค่ L มันจะเอาเฉพาะที่เป็นพยัญชนะ พวก สระ และ วรรณยุกต์ ถ้าเจอมันจะบอกว่าผิดรูปแบบทันที แต่คำภาษาไทยมันรวมพวกนั้นเข้าไปด้วยหนะสิ ก็เลยต้องแก้รูปแบบอีกทีเป็น [\p{L}\p{M}] โดย M ที่ใส่มาก็เพื่อบอกว่าเอา สระ และ วรรณยุกต์ด้วยนั่นเอง สำหรับรายละเอียดเพิ่มเติมอ่านได้จากเว็บนี้ http://unicode.org/unicode/reports/tr18/ จะมีพวกตัวอักษรตัวเล็ก ตัวใหญ่ … อีกมากมายในภาษาอื่นๆ ด้วยลองไปดูเอาละกันครับ นอกเรื่อง: ส่วนนี้พูดถึง serialize ของจาวาหน่อย เพราะวันศุกร์ไปปล่อยความงี่เง่าส่วนตัวใส่เพื่อนแหะๆ ปกติเวลา serialize วัตถุอะไรในจาวาก็จะให้คลาสของ วัตถุนั้น implements [...]