Dropzone + Simplenote

Comments Off

ช่วงนี้เบื่อๆ เลยหาอะไรที่ทำเสร็จได้ไม่เกินหนึ่งวันเล่น ก็เลยเผลอหลวมตัวจิ้มเอา Dropzone มาจนได้ วันนี้ก็เลยหาทางเขียนตัวเสริมให้มันเชื่อมกับ Simplenote ที่ใช้อยู่ด้วยซะเลย ผลก็ตามด้านล่าง




แต่ก่อนใช้งานต้องติดตัวช่วยให้ ruby ในเครื่องก่อนด้วยคำสั่งด้านล่าง

llun$sudo gem i rest-client

จากนั้นดาวโหลด simplenote.dropzone กดติดตั้ง ใส่ username(email) และ password ก็เรียบร้อย

ตอนเย็นมีคำแนะนำเพิ่มเติมว่า น่าจะลากไฟล์ประเภทอื่นได้ด้วย เช่น PDF ลองหาๆ ดูว่ามี Library ไหนอยู่แล้วบ้างปรากฏว่าหาไม่เจอ เลยช่างมันก่อนละกัน ไว้เบื่ออีกรอบ จะกลับมาทำเพิ่มเติม

English step for install Dropzone and Simplenote extension:

  1. Download Dropzone. Open it dmg and drag Dropzone icon to Application folder.
  2. Install rest-client ruby library. I use this library instead of NET::HTTP because I’m lazy to find the way to use it. I try standard library but it always error with HTTP 500. So, I switch to rest-client but it needs a few more step to use, install rest-client library on Shell(Terminal)
    llun$sudo gem install rest-client
  3. Download Simplenote extension and install by double click on download file.
  4. Set username(email) and password then add.
  5. Simplenote icon should lives in Dropzone now. Drag text file to it or click Simplenote icon and paste text for create note.

AR.Drone

Comments Off

เมื่อคืนอ่านข่าวดูวิดีโอ Tweet แล้วก็พบว่า จดมันเก็บไว้ในบล๊อกเลยดีกว่า เพราะว่าเป็นของเล่นในฝันที่อยากได้โคตรๆ ขุดทั้งเว็บคนทำ แล้วก็อ่านข่าวเพิ่มเติมเช้านี้ทำให้รู้ว่ามันจะเปิดตัวในงาน CES2010 เอาเป็นว่าถ้ามันขายเมื่อไหร่+มีตัง จะเป็นคนนึงที่ไปต่อคิวซื้อเลยหละ

Rebase คืออะไร

1 Comment

วันนี้และเมื่อวานค้นพบว่าเพื่อนยังงงกับ rebase อยู่ และยังคงสงสัยว่าทำไปทำไม ก็เลยเขียนในบล๊อกรวดเดียวเก็บไว้อธิบายทีหลังเลยละกัน เพราะจริงๆ แล้วก็พึ่งรู้ว่ามีความจำเป็นยังไงไม่นานมานี้เอง แต่ก่อนจะไปถึง rebase ขอย้อนมาดูขั้นตอนการรวม branch ของ svn หรือระบบที่มีศูนย์กลางกันก่อน โดยคร่าวๆ คือ

  1. แก้ไขเอกสารต่างๆ แล้ว commit ลง server
  2. สั่ง merge จาก branch หลักมาที่ branch ที่แก้ไขอยู่
  3. แก้ไข conflict ที่เกิดขึ้น
  4. commit การแก้ไขที่เกิดจาก conflict
  5. switch ไป branch หลัก
  6. สั่ง merge จาก branch ที่แก้ไขกลับมาที่ branch หลัก
  7. commit สิ่งที่ merge มา

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

A คือกิ่งหลัก ส่่วน B คือกิ่งที่แตกออกมาเพื่อเพิ่มหรือแก้ไข

กลับมาเรื่อง rebase การ rebase เหมือนการตัดต่อกิ่ง โดยย้ายจากจุดเชื่อมต่อเดิมไปยังจุดเชื่อมใหม่ เพื่อให้เอกสารในกิ่งมีการปรับปรุงเท่าการเปลี่ยนแปลงในกิ่งหลักตามจุดที่ย้ายไป

ภาพบนคือก่อน rebase ภาพล่างคือหลังจาก rebase แล้ว โดย rebase branch B ไปยังปลาย branch A

โดยปกติแล้ว ถ้าเป็นกิ่งธรรมดาทั่วไปก็ไม่จำเป็นต้อง rebase แต่อย่างใด สามารถ merge การแก้ไขจากกิ่งหลักมารวมกับกิ่งที่แก้ไขอยู่ได้ เพื่อเก็บสิ่งที่แก้ไขในอดีต และใน svn หรือระบบที่มีศูนย์กลางก็ไม่ค่อยมีคำสั่งนี้ให้ใช้แต่อย่างใด แต่คำสั่งนี้จะเจอในระบบแบบกระจายศูนย์เช่น hg หรือ git เนื่องจาก เมื่อแต่ละคน clone เอาเอกสารไปแล้วแก้ไขเอกสารนั้นในเครื่อง แต่ละคนก็เหมือนมีกิ่งของตนเอง เมื่อแต่ละคนต้องเอาสิ่งที่แก้ไปมารวมกัน ก็ต้องมีการรวมการแก้ไข ซึ่งหากใช้วิธี merge สิ่งที่ได้ก็อาจจะกลายเป็นแบบภาพด้านล่าง หรือภาพที่หนึ่ง

Merge directly to trunk

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

  1. แก้ไขไฟล์ .hg/hgrc โดยเพิ่ม rebase option เพื่อให้มี option นี้ตอน pull
    [extensions]
    rebase =
  2. จากนั้นทุกครั้งที่ pull ก็สั่ง hg pull –rebase

ขั้นตอนนั้นง่ายสำหรับคนถนัด command line/shell script แต่คิดว่าถ้าคนใช้ tortoise hg อาจจะไม่ชอบเท่าไหร่ แต่อันนั้นไว้เขียนอธิบายอีกทีพรุ่งนี้อีกทีหลังจากมี Windows อยู่ใกล้ตัว

เพิ่มเติม:

Older Entries