Archive for the ‘Projects’ Category

Subversion in Actions II

Saturday, September 12th, 2009

คราวที่แล้วเขียนเกี่ยวกับการใช้ Subversion (svn) เบื่องต้น ได้แก่ การสร้าง Repository, เพิ่มไฟล์เข้าสู่ index ใน working copies (add), และส่งเข้าสู่ Repository (commit) ส่วนตอนนี้ก็จะขอพูดส่วนเกี่ยวกับคำสั่งต่างๆ ที่เอาไว้ติดตามความเคลื่อนไหว และการเปลี่ยนแปลงของ Repository ครับ

ข้อมูลประจำรุ่น (log)

เป็นข้อมูลประจำสำหรับรุ่นนั่น เช่น Revision ผู้ commit วันเวลา จำนวนบรรทัดที่เปลี่ยนแปลง และบันทึกประจำรุ่น มีรูปแบบตามนี้ครับ

REVISION_NO | USER_NAME | DATE_TIME | LINE_CHANGED

MESSAGE_LOG

ตัวอย่างเช่น

  $ svn log file:///Users/sitdh/Repository/helloSVNServer
  ------------------------------------------------------------------------
  r2 | sitdh | 2009-09-10 00:40:52 +0700 (Thu, 10 Sep 2009) | 1 line

  Create Project
  ------------------------------------------------------------------------
  r1 | sitdh | 2009-09-09 21:56:38 +0700 (Wed, 09 Sep 2009) | 1 line

  test
  ------------------------------------------------------------------------

คำอธิบาย:

  • บรรทัดที่ 03 และ 07 คือ ข้อมูลประจำรุ่น
  • บรรทัดที่ 05 และ 09 คือ คำอธิบายการเปลี่ยนแปลงที่ผู้ commit เขียนอธิบายไว้

หมายเหตุ: ข้อมูลดังกล่าวเป็นข้อมูลที่ได้จาก Repository เนื่องจากเราระบุพาธไว้ด้านหลัง หากให้คำสั่ง svn log จะเอา log ที่อยู่ใน Working Copies มาแสดงแทน ซึ่งข้อมูลที่ได้อาจไม่ตรงกับ Repository วิธีแก้คือใช้คำสั่ง update เพื่อปรับปรุงข้อมูลให้ตรงกัน (Synchonize – sync) ระหว่าง Working Copies และ Repository

  $ svn update file:///User/sitdh/Repository/helloSVNServer
  At revision 3.

คำอธิบาย:

  • บรรทัดที่ 01 ใช้คำสั่งเพื่อ sync ข้อมูล หามีข้อมูลที่ไม่ตรงกับ Repository จะแสดงรายการเปลี่ยนแปลงด้านล้าง
  • บรรทัดที่ 02 เป็นบรรทัดที่บอก Revision ล่าสุดที่อยู่ใน Repository (HEAD Revision)

หาความแตกต่างระหว่างเวอร์ชั่น (diff)

ก่อนอื่นต้องทบทวนก่อนว่าในตัวอย่างของ blog ที่แล้วได้สร้างข้อมูลตัวอย่างและส่งเข้า Repository เรียบร้อยแล้ว (Revision 3 หรือ r3) จากนั้นได้แก้ไขข้อมูลในไฟล์ ‘index.php’ เล็กน้อย และ commit เข้าไปยัง Repository เรียบร้อยแล้ว (Revision 4 หรือ r4) ดังนั้นถ้าอยากรู้ว่าระหว่าง r3 และ r4 มีความแตกต่างตรงไหนบ้าง คำสั่งที่ช่วยได้ก็คือ diff ดังนี้

$ svn diff -r 3:4
Index: index.php
===================================================================
--- index.php	(revision 3)
+++ index.php	(revision 4)
@@ -1,3 +1,4 @@
-hello, world

\n"; + echo "

hope you like it

"; ?>

คำอธิบาย:

  • บรรทัดที่ 02 Index จะบอกว่าตอนนี้เปรียบเทียบไฟล์ไหนอยู่
  • บรรทัดที่ 04 – 05 กำหนดเครื่องหมายสำหรับ r3 แทนด้วย ‘-’ และ r4 แทนด้วย ‘+’ โดย ใช้บอกว่าบรรทัดไหนหายไปจาก r4 (-) และเพิ่มเข้ามาใน r4 (+) ถ้าบรรทัดไหนไม่เปลี่ยนแปลงก็จะไม่มีเครื่องหมายนำหน้า
  • บรรทัดที่ 07 – 08 คือ บรรทัดที่มีอยู่ใน r3 แต่หายไปจาก r4 (เครื่องหมาย - นำหน้า)
  • บรรทัดที่ 09 – 11 คือ บรรทัดที่เพิ่มเข้ามาใน r4
  • บรรทัดที่ 12 เป็นบรรทัดที่ไม่เปลี่ยนแปลง

The Art of Tar

Friday, August 28th, 2009

ที่มาที่ไปของ blog ตอนนี้ก็คือ เนื่องจากว่า tar เป็นคำสั่งยูนิกส์อีกคำสั่งหนึ่งที่คิดว่านักพัฒนาหลายคนควรจะรู้จัก แต่มันเป็นปัญหาของผมเองว่าจะใช้ทีไรก็ต้องมานั่งหา options ที่จะต้องใช้อยู่เรื่อยๆ จำไม่ได้สักที เลยคิดว่ามีทางแก้อยู่ 2 วิธีคือ ใช้นี้คำสั่งบ่อยๆ หรือไม่ก็อ่านให้เข้าใจแล้วจับมาวางไว้ที่ไหนสักที่คงจะทำให้จำได้บ้าง อย่างน้อยก็มีแหล่งข้อมูลที่แน่นอนได้บ้าง

Tar File

Tar File

แล้ว tar คืออะไร

tar มาจากคำว่า “Tape ARchive” เป็นโปรแกรมที่มีจุดประสงค์ตรงไปตรงมาคือเอาไว้สำหรับทำ archive ไฟล์ ลงบน Tape [เป็นอุปกรณ์สำรองข้อมูลสมัยดึกดำบรรพ์] แต่ไม่ใช่เก็บอย่างเดียวเท่านั้นที่ tar ทำได้ เพราะ tar เองก็ยังให้เราปรับปรุงข้อมูลที่อยู่ในไฟล์ได้ตามต้องการ โดยที่ไม่จะเป็นต้องแกะไฟล์ออก แล้วเก็บเข้าไปใหม่ ปัจจุบันเวอร์ที่เขียนออกมา เป็นเวอร์ชั่น 1.22 [ออกเมื่อวันที่ 5 พ.ค. 2552]

วิธีใช้งาน

# tar [OPTIONS...] [FILE...]

วิธีการใช้งานก็ง่ายๆ แบบในตัวอย่าง คือใช้คำสั่ง tar ตามด้วย OPTIONS ที่ต้องการ เมื่อเสร็จแล้วเราจะได้ output เป็น tar file [*.tar] โดยจะมีที่จำเป็นต้องใช้และควรจำดังนี้ครับ

ออฟชั่นหลัก
  -c  สร้าง archive
  -d  หาความแตกต่างระหว่างไฟล์ใน archive และในไฟล์ต้นฉบับ
  -A  เพิ่มไฟล์ใหม่เข้าไปใน archive
  -r  เพิ่มไฟล์ใหม่โดยนำเอาไปต่อท้ายรายการของไฟล์ใน archive
  -t  แสดงรายการของไฟล์ที่มีทั้งหมดใน tar file
  -u  เพิ่มเฉพาะไฟล์ที่มีการแก้ไขเข้าไปใน tar file
  -x  แกะไฟล์ภายใน tar file

บีบอัดไฟล์
  -j  ใช้ filter bzip2 กับ tar file => *.tar.bz2, *.tb2, *.tbz2
  -z  ใช้ filter gzip กับ tar file => *.tgz, tar.gz

ตัวอย่าง

  # tar cf archive.tar foo bar      # สร้าง tar ไฟล์จาก 2 ไฟล์ ได้แก่ foo bar
  # tar tvf archive.tar             # แสดงรายชื่อไฟล์ใน archive.tar
  # tar xf archive.tar              # แกะไฟล์ archive.tar

ข้อมูลจาก
tar –help
Tar – GNU Project
GNU tar – Tutorial Introduction

Million Ways to Buy a New Phone

Saturday, August 22nd, 2009

ช่วงนี้เกิดอาการนอยด์หลายอย่างรวมๆ กัน เพราะมีหลายเรื่องมากดดันพร้อมกันทีเดียวหลายเรื่อง ยิ่งเย็นวันพุธที่แล้ว[19 สค. 2552] มีเรื่องให้ปวดใจกันอีกเลยหาเรื่องซื้อของมันซะเลย ของที่ว่าก็คือโทรศัพท์มือถือนั่นเองเพราะว่าเครื่องเก่าก็ 4 ปีเห็นจะได้ ช่วงนี้เครื่องยิ่งเอ๋อๆ อยู่พอดี ในเมื่อโอกาสประจวบเหมาะพร้อมกันหลายอย่างแล้วก็ได้ฤกษ์เสียเงินกันล่ะครับวันนี้ วันพุธตอนเย็นหลังเลิกเรียนก็เลยเดินไปที่ เซ็นทรัลแจ้งวัฒนะ

แน่นอนครับแหล่งขายมือถือมาตรฐานคือชั้นใต้ดิน ก็เลยเดินไปแป๋บแล้วก็ไปหาซื้อเลยครับ มองไปมองมา อ่ะ Nokia Shop มีด้วย ก็เลยแวะดีกว่าอย่างน้อยก็ซื้อจากศูนย์นี่ล่ะ มีอะไรจะได้กลับมาเฉ่งได้เต็มที่ ผมเองเท่าที่หาๆ ข้อมูลมา [ไม่ถึงชั่วโมง] เล็งๆ Nokia 5630 ไว้ เพราะไม่ค่อยชอบโทรศัพท์ฝาพับหรือมีกลไกที่ตัวเครื่องมากเท่าไหร่ เพราะกลัวว่าจะใช้ไม่ทน เข้าไปที่ร้านก็ถามโน่นถามนี่ไปนิดหน่อยว่าใช้โน่นได้ไหม ใช่นั่นล่ะได้หรือเปล่า ความจริงผมว่าลองดูในเว็บจนขึ้นใจแล้วล่ะ แต่อยากลองทำตัวโง่ๆ ดูบ้างดูว่าคนขายจะปล่อยของมาหรือเปล่า สุดท้ายก็เออซื้อนี่ล่ะ แต่เอาเข้าจริงของดันหมดซะงั้นเห็นโทรคุยกันกับที่ร้านใหญ่ ตกลงบอกว่าให้รออีกชั่วโมงถึงจะได้ของระหว่างนี้ให้ทำเรื่องจ่ายเงินไปก่อนแล้วกันนะ [พอดีว่าจะจ่ายด้วยบัตร] ได้ยินแบบนั้นก็เกิดอาการตกใจนิดหน่อย เพราะตอนแรกแกก็บอกว่าให้รอ แต่ไม่คิดว่าจะรอถึงชั่วโมง ผมก็เลยขอไม่ซื้อดีกว่า แล้วก็รีบเดินออกมา กลับมาขึ้นรถเพื่อจะออกมาขึ้นรถที่หน้า ไอที สแควร์

พอเดินผ่านที่หน้าไอทีสแควร์แล้วก็เออนึกได้อย่างน้อยที่นี่มันก็น่าจะมีบ้างล่ะ ลองเดินหาดูก็มีจริงๆ เป็นร้านของ Nokia Shop มาออกบูตลดราคาอยู่อีกที่จากร้านที่ขายประจำ [ที่รู้เพราะว่ามีเรื่องให้ต้องรู้ทีหลัง] เลือกไปเลือกมาก็เห็นรุ่นเดิมนี่ละ ไปถึงก็ถามโน่นถามนี่ตามปกติเช็คของคนขาย สุดท้ายก็ชี้แล้วขอ 1 ตอนนั้นจะเอาสีแดงปรากฎว่าเครื่องที่ร้านตรงนั้นไม่มีอีกแล้วครับ คนขายเลยต้องไปเอามาให้ แต่ติดที่ว่าผมจะจ่ายเป็นเครดิต คนขายเลยจะขอเอาทั้งบัตรเครดิต + บัตรประชาชนไปรูดจ่ายเงิน ติดใจนิดหน่อยเพราะว่าปกติไม่ค่อยอยากใจให้บัตรพวกนี้ใครไปเท่าไหร่ แต่ไม่รู้วันนั้นนึกยังไงก็เลยให้ไป รออยู่เกือบ 20 นาทีได้ คนที่ไปเอามาให้หยิบกล่องโทรศัพท์มาพร้อมสลิปบัตรที่รูดไปแล้วเรียบร้อย มายิ้มๆ ใส่แล้วพูดว่า “พี่ครับ สีแดงไม่มีเลยเอาสีน้ำเงินมาให้” เฮอะๆ ช่วงนั้นปิ๊ดครับ เพราะบอกไปแล้วว่าเอาสีแดง แต่ดันไปเอาสีน้ำเงินมาให้ แล้วอีกอย่างที่ทำให้โกรธก็คือ รูดบัตรไปแล้วเรียบร้อย เอ่อเงินผมนะครับ 8,000 กว่า เอาของมาให้ไม่ตรงกับที่สั่งด้วย เลยบอกว่า “ผมไม่เอาครับ” สุดท้ายก็ต้องเดินไปที่ร้านสาขาใหญ่ของเขาเพื่อไป refund เงินที่จ่ายไปเมื่อกี้ ระหว่างเดินยังมาบอกว่า “ขอโทษนะครับพี่ ผมรีบ แล้วไม่ทันดูตอนที่น้องอีกคนไปเอาของให้” ช่วงนั้นโกรธมากครับ ตัวสั่นกันเลยทีเดียว แต่ไม่ชอบด่าใครแรงๆ เพราะว่ามันดูน็อตหลุดพิกล ผมเลยพยายามคุมสติแล้วตอบกลับไปว่า “ไม่เป็นไรครับ แต่คราวหลังดูด้วยแล้วกัน เพราะแบบนี้มันแสดงว่าคุณทำงานห่วยแตก แล้วอีกอย่างมันทำให้คนอื่นเสียเวลา” ถึงร้านผมเลยขอสำเนาบัตรเครดิตกับบัตรประชาชนคืนแล้วก็ยืนฉีกมันตรงหน้าร้านนั่นล่ะ 555+ [ช่วงนั้นรู้สึกเหมือนพวกโรคจิตมาก] พอคนขายเดินกลับมาแล้วบอกว่า refund เรียบร้อยแล้ว ก็เลยรีบเดินออกจากร้านแบบที่คนขายยังพูดไม่ทันขาดคำเพราะตอนนั้นกลัวพลั้งปากจริงๆ สุดท้ายก็เลยรีบเอา sim ที่ถอดออกมาเตรียมพร้อมจะใส่เครื่องใหม่ ใส่ลงไปในเครื่องเก่า [ตรงนี้ยิ่งทำให้เสียความรู้สึกเพิ่มขึ้นอีก] โทรไปคุยกับทาง call center ของทางบัตรว่ามีรายการขอ refund ไปแล้วหรือยังปรากฎว่ามีครับ ก็อารมณ์ดีขึ้นมาหน่อย สุดท้ายก็นั่งรถกลับรังสิตครับ

แต่ผมก็ยังอยากได้อยู่ :P

กลับมาลงรถที่ฟิวเจอร์รังสิตครับ เห็น Nokia Shop อยู่แล้วล่ะก็เลยเออลองไปดูดีกว่า ลงรถแล้วก็เดินตรงไปที่ร้านเลยครับถามไปก็ 8,400 กว่า พอดีกว่าเดินแถวนี้จนลื่นก็เลยลองไปดูชั้นบนที่ขายโทรศัพท์ดีกว่า แถวไปดูที่ MFA ครับ ปรากฎว่าแพงกว่าอีก สุดท้ายเลยมาจบที่ Nokia Shop จะซื้อ 5630 เหมือนเดิม ชี้ๆ แล้วบอกว่าพี่เอานี่ล่ะสีแดงนะ คนขายหายไปพัก แล้วกลับมาบอกว่า “ไม่มีค่ะ ตอนนี้ของหมด มีแต่สีน้ำเงิน” เอ่อหน้าชาอีกเล็กน้อย หนีสีน้ำเงิน มาเจอสีน้ำเงิน แต่เห็นอีกรุ่นหนึ่งคือ 5800 นี่ล่ะครับเล็งมานานแล้วเหมือนกัน ดูไปดูมาสุดท้ายก็เลยตกลงปลงใจกับ 5800 แบบจำยอมล่ะครับ รู้ไหมผมได้เครื่องสีอะไร

Nokia 5800 “สีน้ำเงิน”

-”- ดวงคงจะต้องได้สีน้ำเงินจริงๆ เพราะเห็นว่ามีสีดำ กับสีน้ำเงิน สีดำเท่าที่ดูแล้วไม่เกิดครับ เลยเอาสีนี้ดีกว่าแต่มีหน้าชาเล็กน้อย สุดท้ายตอนจะจ่ายเงินพนักงานก็พาไปนั่งรอในห้องลับ :P คุยโน่นคุยนี่นิดหน่อย ได้โทรศัพท์ + ร่ม ตอนเปลี่ยน sim คนขายก็บอกว่าให้ไปเปลี่ยน sim นะรุ่นเก่ามันไม่ค่อยรองรับกับโทรศัพท์รุ่นใหม่ๆ สุดท้ายก็เดินตัวปลิวออกจากร้าน แอบมาแวะที่ AIS อีกแป๋บเพื่อเปลี่ยน sim ตอนเปลี่ยน sim ต้องเปิดฝาหลังเครื่องออกมา แต่ตอนนี้โทรศัพท์มันล็อคอยู่ต้องปลดล็อคมันก่อน ปัญหาแรกที่ใช้งานก็คือ “มันปลดล็อคเครื่องตรงไหนฟร่ะ” ให้พนักงานช่วยแกะอยู่นาน สุดท้ายพี่พนักงานก็ต้องไปหาตัวช่วย เท่าที่ดูแล้วรุ่นนี้แกะฝายากมาก ขนาดคนขายเองยังแกะลำบาก และแล้วก็เปลี่ยนเรียบร้อย

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