Phrases I don’t like that are often used in text books

May 25 2010

I am sure that people who read technical books related to mathematics have come across the following phrases at least once.

  • “It is easy to show that … “
  • “The derivation of … is left as an exercise.”
  • “The blah blah problem therefore amounts to ….(some long formula) …”
  • “Clearly, blah blah of this is blah blah of that …”

There is nothing wrong about the mentioned phrases. The problem is that these phrases are often used without any justification or clear explanation. Around 80% of the time I found “It is easy to show that…”, it is NOT easy for me.  Around 90% of the time I found “The derivation of … is left as an exercise.”, I cannot derive the thing I want. Almost every time I found “The blah blah problem therefore amounts to ….(some long formula) …”, I do not know why the given formula is related to the original problem. Finally, every time I found “Clearly, ….”, it is NOT that obvious for me to figure out. It takes some time.

This post is just a complaint from a stupid man like me. Just think about it. If you can easily derive a long formula, what is the point of reading the book ? You are already able to do it by your own. This implies that many students read the book because they do not know how to derive those. They want to know it. That is why they read the book! In the end, I still wonder why the book is often written in that way. Is it so troublesome to add more details .. ?

No responses yet

กู้ข้อมูลที่ลบไปแล้วจาก iphone โดยใช้ Ubuntu

May 23 2010

เรื่องนี้เคยเขียนไปครั้งหนึ่งแล้วที่ http://wittawat.com/blog/?p=84 แต่ไม่ค่อยละเอียด เลยเอามาขยายความที่นี่อีกครั้ง ครั้งนี้มีรูปประกอบเพื่อให้เป็นประโยชน์มากขึ้น

ต้องขอบอกก่อนว่าผมไม่ใช่ผู้เชี่ยวชาญ iPhone แต่อย่างใด ไม่รู้ว่าเขามีวิธีกู้ข้อมูลด้วย iTune หรือโปรแกรมอื่นๆอะไรรึป่าว แต่ผมค่อนข้างมั่นใจว่าวิธีที่ใช้นี้สามารถใช้ได้กับ iPhone ทุกรุ่น เพราะวิธีนี้เป็นวิธีที่ไม่ต้องการอะไรพิเศษจากเครื่อง iphone เลย เป็นวิธีค่อนข้างจะโบราณ แต่อาจจะยุ่งยากซักหน่อยครับ บทความนี้จะกล่าวถึงการกู้ข้อมูลโดยใช้ Ubuntu มาช่วย (ผู้ใช้ Linux รุ่นอื่นก็สามารถทำได้เช่นกัน) สิ่งที่ต้องการสำหรับการกู้ข้อมูลด้วยวิธีนี้คือ

  1. iPhone ที่มี terminal (สำหรับผู้ไม่คุ้นเคย Terminal ก็คือโปรแกรมบน iphone ที่เปิดมาแล้วเห็นแต่หน้าจอดำๆมีปุ่ม keyboard ให้พิมพ์คำสั่ง เหมือน dos บน Windows ) โปรแกรมชื่อ vterminal หรือ MobileTerminal
  2. สาย USB กับปลั๊กไฟเพื่อชาร์จไฟ อันนี้จำเป็นครับเพราะต้อง copy ข้อมูลนาน เดี๋ยวแบตหมดกลางทาง (copy ผ่าน wireless LAN)
  3. คอมอีกหนึ่งเครื่องที่มีสิ่งต่อไปนี้
    1. Wireless LAN เพื่อติดต่อกับ iPhone  (จะเป็นคอมตั้งโต๊ะแล้วเชื่อมกับ Wireless router ก็ได้ ขอแค่ wireless กับคอม)
    2. เนื้อที่บนเครื่องนั้นอย่างน้อยเท่ากับความจุของ iPhone คุณ (ของผมใช้ iPhone รุ่นเก่าจุ 8GB ฉะนั้นเครื่องคอมอีกเครื่องต้องเตรียมไว้ 8 GB) รุ่นใหม่อาจต้องใช้ 32 GB
    3. SSH Server ซึ่งเป็นโปรแกรมที่ผู้ใช้สามารถ login เข้าไปเพื่อรันคำสั่งได้  SSH Server นี้ต้องอยู่บนคอมเครื่องนั้น เพราะเราจะให้ iPhone login เข้าไปแล้วถ่ายข้อมูลเก็บไว้
    4. โปรแกรม Photorec (http://www.cgsecurity.org/wiki/PhotoRec) สามารถโหลดได้ฟรี มีทั้ง Windows และ Linux
  4. เวลาหลายชั่วโมง

เรากำลังจะทำอะไรกัน?

หลักการของการกู้ข้อมูลนี้คือเราจะทำการคัดลอกข้อมูลทั้งหมดใน disk ของ iphone ออกมา การคัดลอกนี้ไม่ใช่ copy ทุกไฟล์ แต่เราจะต้องคัดลอกทุกส่วนทุกมุมของ disk เลยเพื่อจะได้เอามาวิเคราะห์ทีหลังว่าส่วนไหนมุมไหนของ disk มีร่องรอยไฟล์เหลืออยู่บ้าง การทำแบบนี้มีข้อดีคือเรามีโอกาสกู้ไฟล์คืนมาได้แม้ format ไปแล้ว ที่ทำแบบนี้ได้ผลเพราะโดยปกติเวลาเรากดลบไฟล์ ไฟล์หรือข้อมูลนั้นๆไม่ได้หายไปจริงๆ แต่ระบบแค่บันทึกไว้บน disk ว่าส่วนนี้ได้ถูกสั่งลบแล้ว สามารถถูกแทนที่ด้วยข้อมูลอื่นๆได้ ก็หมายความว่าถ้าเราสั่งลบอะไรบางอย่าง แล้วเราไม่ได้บันทึกอะไรเพิ่มเลย ก็มีโอกาสที่ disk ส่วนนั้นยังไม่ได้โดนแทนที่ด้วยอะไรใหม่ๆ เราเลยสามารถกู้ได้ ฉะนั้นหากต้องการจะกู้สิ่งที่ลบแล้ว ก็ไม่ควรใช้งานเครื่องจนกว่าจะถึงเวลากู้ เพราะส่วนเก็บข้อมูลอาจโดนอย่างอื่นทับแล้วจะกู้ของเก่าไม่ได้อีก

กลับมาเรื่องการคัดลอก disk ของ iPhone แน่นอนว่าเราไม่สามารถคัดลอกไปใส่ disk เดิมได้ เพราะการคัดลอกนี้เราจะได้ไฟล์ 1 ไฟล์ซึ่งมีขนาดเท่า disk เดิมเลย  เป็น raw image ของ disk (เหมือนตอน burn image ของ CD ) นั่นเอง ฉะนั้นเราต้องคัดลอกไปที่อื่นซึ่งก็คือคอมอีกเครื่องที่เตรียมไว้

การคัดลอก disk image ไปอีกเครื่องเราจะใช้ SSH (Secure Shell) บน iPhone โดยใช้ Terminal แล้ว login ไปที่อีกเครื่องหนึ่งซึ่งมี SSH server ลงไว้แล้ว ทำผ่าน wireless LAN เมื่อเชื่อมต่อกันได้แล้วที่เหลือก็แค่รอให้ข้อมูลทั้ง disk ของ iPhone ไปอยู่อีกเครื่องหนึ่ง ขั้นตอนนี้จะนานมาก จากนั้นก็ค่อยใช้โปรแกรม PhotoRec มาหาร่องรอยของไฟล์จาก disk image ที่ได้มาซึ่งอยู่บนคอมอีกเครื่อง PhotoRec เป็นโปรแกรมที่เขียนมาค่อนข้างดี สามารถใช้กู้ไฟล์ได้หลายชนิดมาก รวมถึง รูป เพลง และหนังด้วย ถึงตรงนี้คิดว่าผู้อ่านคงได้ไอเดียแล้วว่าเรากำลังทำอะไร

เตรียมโปรแกรม

  1. เตรียม terminal บน iPhone วิธีลงก็ลงเหมือนที่ลงโปรแกรมอื่นๆบน iPhone ครับ ขอไม่กล่าวถึง ลองหาด้วยคำว่า terminal, MobileTerminal, vterminal ดู เมื่อลงเสร็จแล้วเปิดโปรแกรมขึ้นมาจะได้แบบนี้
  2. เนื่องจากเราจะใช้คำสั่ง ssh บน iPhone ซึ่งผมไม่แน่ใจว่ามันมีมาให้กับ terminal หรือยัง วิธีเช็คก็เปิด terminal ขึ้นมาแล้วพิมพ์คำสั่ง
    ssh -V

    (V ตัวใหญ่) ถ้าได้คล้ายๆรูปข้างล่างนี้ก็แปลว่าใช้ได้แล้ว ให้ข้ามไปข้อต่อไปได้เลย
    แต่ถ้ามันขึ้นคำว่า “command not found” แทนแสดงว่ายังไม่มีคำสั่ง ssh ให้ลงโปรแกรมชื่อ OpenSSH วิธีลงก็แบบเดียวกับที่ลง terminal เมื่อลงเสร็จแล้ว กลับมาลองคำสั่งนี้อีกครั้ง มันควรขึ้นเหมือนภาพด้านบนครับ

  3. เช็คว่ามี SSH Server บนเครื่องคอมมั้ย เนื่องจากบนความนี้เขียนสำหรับคอมที่เป็น Linux วิธีเช็คว่ามี SSH Server มั้ย ก็ให้เปิด terminal ขึ้นมา (ผู้ใช้ Ubuntu ให้ไปที่ Application -> Accessories-> Terminal) แล้วพิมพ์คำสั่ง
    netstat -an | less

    จะได้ประมาณรูปข้างล่าง
    ให้เล็งบรรทัดที่ด้านขวาเป็นคำว่า LISTEN ถ้าเห็น 0.0.0.0:22 แปลว่าเครื่องคอมมี SSH Server แล้ว พร้อมที่จะให้ iPhone login เข้ามา แต่ถ้าหา 22 ไม่เจอแปลว่าเครื่องคอมยังไม่มี SSH Server ให้กด q เพื่อกลับมาที่ terminal เหมือนเดิมแล้วพิมพ์ (สำหรับ Ubuntu )

    sudo apt-get install  openssh-server

    กด Enter จะให้ใส่ password ของ root ก็ใส่ไปรอซักพักจนมันติดตั้งเสร็จแล้วลงพิมพ์คำสั่งด้านบนเพื่อเช็คใหม่อีกครั้ง ครั้งนี้ควรเห็นเลข 22

  4. ลงโปรแกรม photorec โดยพิมพ์
    sudo apt-get install testdisk

    หากติดตั้งเสร็จให้ลอง

    photorec -v

    ถ้าเห็นคล้ายๆรูปข้างล่างแปลว่า photorec ใช้ได้แล้ว (ตัวเลข version ไม่เหมือนกัน ไม่เป็นไร)

ขั้นตอนการกู้ข้อมูล

ถึงขั้นตอนนี้คิดว่าคงเตรียมโปรแกรมต่างๆพร้อมแล้ว เราจะเริ่มโดยการเชื่อมต่อคอมกับ iPhone ผ่าน wireless LAN กันก่อน สำหรับผู้ที่มี router ที่บ้านก็ง่ายหน่อย ก็ให้เข้าไปที่หน้าเลือก wi-fi ของ iPhone แล้วเลือกชื่อ network ของที่บ้านตัวเองก็เสร็จแล้ว สำหรับผู้ใช้คอมที่มี wireless แต่ไม่มี router ก็ให้สร้าง ad-hoc network (ไม่ค่อยถูกแต่พูดแบบง่ายๆ คือ network ที่ไม่มี router ครับ ) ขึ้นมา โดยทำตามขั้นตอนนี้

  1. คลิกที่รูปคอมสองเครื่องด้านขวาบน ดังภาพ
  2. จะมีเมนูขึ้นมา ให้เลือกอันสุดท้าย น่าจะประมาณว่า Create a new network …
  3. ใส่ชื่อ network ที่ต้องการลงไป เช่น iphonerec
  4. เข้าไปที่หน้าเลือก network ของ iPhone แล้วเลือก wi-fi network ที่ชื่อ iphonerec ขั้นตอนนี้บางทีอาจจะมองไม่เห็น iphonerec ขอให้ลองทำเร็วๆ คือสร้าง network ใหม่เสร็จแล้วรีบเปิด iPhone แล้ว connect
  5. เมื่อเชื่อมต่อสำเร็จ รูปคอมสองเครื่องจะเปลี่ยนเป็นรูปสัญญาณ wi-fi แบบนี้

เช็คการเชื่อมต่อไร้สายของคอมกับ iPhone

อันดับแรกไปที่ terminal ของคอม แล้วลองพิมพ์

ifconfig

จะมีรายการของอุปกรณ์การเชื่อมต่อขึ้นมาพรอ้ม IP address ของแต่ละอัน โดยปกติแล้ว wireless LAN card ของคอมจะชื่อ wlan0 ส่วน LAN card แบบสายจะชื่อ eth0 เครื่องคอมส่วนใหญ่จะขึ้นมาแค่ 2 อันนี้ ก็ให้ลองดูส่วนของ wlan0 ซึ่งจะเห็นประมาณนี้
ถ้าตรงคำว่า inet address มีเลข IP adress แสดงว่าการเชื่อมต่อฝั่งคอมใช้ได้แล้ว (ad-hoc network บางทีจะเป็น 10.42.43.xx หรือบางทีก็ 169.245.xxx.xx ก็ไม่ได้สำคัญอะไร เป็นแค่เลข IP) ให้จดเลข IP นี้เอาไว้ ต่อไปนี้จะเรียกว่า IP ของคอม

มาลองดูการเชื่อมต่อฝั่ง iPhone บ้าง ให้ไปที่ terminal ของ iPhone แล้วลองพิมพ์

ping 192.168.1.21

แน่นอนให้เปลี่ยน 192.168.1.21 เป็น IP ของคอม ที่จดไว้นะครับ ถ้าได้แบบภาพข้างล่าง
แปลว่า iPhone สามารถมองเห็นเครื่องคอมแล้ว การเชื่อมต่อสมบูรณ์

เริ่มคัดลอก disk image

เริ่มคัดลอก disk image ของ iPhone โดยไปที่ terminal ของ iPhone แล้วพิมพ์ (เปลี่ยนบางจุดตามคำอธิบายด้านล่าง)

dd if=/dev/disk0 | ssh nook@192.168.1.21 'dd of=/home/nook/Desktop/iphonedisk.img'

คำสั่งด้านบนมีจุดที่ต้องระวังดังนี้

  • คำว่า nook คือ username ที่ใช้ login เข้า Linux ให้เปลี่ยนเป็น user ของตัวเอง
  • 192.168.1.21 คือ IP ของคอม ให้เปลี่ยนเป็น IP ของคอมตัวเองที่จดไว้
  • /home/nook/Desktop/iphonedisk.img คือตำแหน่งของ disk image ที่อยากได้ ให้เปลี่ยนตรงคำว่า nook เป็น user ตัวเอง ตำแหน่งที่ใช้นี้คือ Desktop แปลว่าเมื่อคัดลอง disk image เสร็จแล้ว จะมีไฟล์ชื่อ iphonedisk.img ปรากฏขึ้นบน Desktop ของคอม และมีขนาดใกล้เคียงกับความจุของ iPhone (ไฟล์ใหญ่ โปรดเตรียมเนื้อที่ไว้ให้พร้อม)
  • อย่าลืมเครื่องหมาย ‘ ที่ท้ายคำสั่ง สั่งเกตุได้จากถ้ากด Enter แล้วมีเครื่องหมาย > ขึ้นมาแปลว่าลืมปิด ‘ ที่ท้ายคำสั่ง
  • ถ้ามีคำถามขึ้นมาว่า “Are you sure you want to continue connecting (yes/no)?” ให้พิมพ์ yes แล้ว Enter

ถ้าทำถูกมันจะถาม password ก็ให้พิมพ์ password ที่ใช้ login เข้า Linux ตัวเองลงไป แล้วมันจะนิ่งไปเฉยๆ ซึ่งถือว่าปกติ ถ้าที่ Desktop ของคอมมีไฟล์ชื่อ iphonedisk.img ขึ้นมา ถือว่ามาถูกทางแล้ว ไฟล์นี้จะใหญ่ขึ้นเรื่อยๆเมื่อมัน copy ไปเรื่อยๆ และจะใช้เวลานานมาก (หลายชั่วโมง)

เริ่มกู้ข้อมูลจาก iphonedisk.img ด้วย photorec

เมื่อมี disk image ของ iPhone แล้ว ก็สามารถเริ่มขุดคุ้ยร่องรอยของไฟล์ได้ ขั้นตอนกู้ข้อมูลนี้สามารถทำได้แม้ตอนที่ไฟล์ disk image ยัง copy ไม่เสร็จ ข้อดีคือถ้าเรากู้ข้อมูลจาก disk image ที่ยัง copy ไม่เสร็จ แล้วเราได้ไฟล์ที่เราต้องการครบแล้ว เราก็สามารถยกเลิกการ copy disk image ได้เลย เพราะเราได้ของครบแล้ว

รัน photorec ด้วยคำสั่ง

photorec /home/nook/Desktop/iphonedisk.img

ขั้นตอนการใช้งาน photorec สามารถดูได้จาก http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step

เพิ่มเติม

  • http://smart-mobile.com/forum/viewtopic.php?f=88&t=198542 ผมเองก็ไม่รู้ว่า iPhone รุ่นใหม่ๆทำขั้นตอนไหนได้ไม่ได้ ที่นี่คิดว่ามีคำตอบ
  • หลายท่านบอกเข้ามาว่าอ่านแล้วก็ งง ผมก็คงต้องเรียนว่าผมก็พยายามเขียนเป็นขั้นตอนเต็มที่แล้ว จะบอกความเป็นมาของทุก step หรือจะให้บอกดักแก้ error ที่เป็นไปได้ทั้งหมดก็คงจะทำให้บทความยืดเยื้อ เอาไว้จะค่อยๆปรับปรุงครับ

6 responses so far

New Gadget: SHARP pc-z1 NetWalker

May 19 2010

Recently, I just bought a new SHARP pc-z1 NetWalker, a palm-size mini netbook. Before I decided, iPad (48,000 yen) was also interesting to me. But, the main reason I chose this gadget (34,000 yen) was because it runs Ubuntu 9.04! The followings are what I noticed after playing with it for 2 days.

  • Its optical point feature (a little nail-size button used to move mouse pointer) does not work with my finger as my hand normally has some sweat. This is just a personal issue. Anyway, I can move the mouse pointer by touching the screen.
  • The specification says it has 512 MB of RAM. The Ubuntu task monitor sees it 471.4 MB.
  • The specification says it has 4 GB of flash-memory space. Ubuntu can see 3.6 GB.
  • Suspending does consume some battery.
  • The screen size (5 inches) is a bit small but acceptable.
  • Since I bought a black model, I can see my own fingerprints when I touch it. White one should be fine in this case.

Regardless of those listed, I am satisfied with it. I am now using it as an ebook reader when I am in the train. The next target would be iPad. But, I will have to wait until the price drops down first.

No responses yet

JTCC: library ตัดกลุ่มของตัวอักษรไทย

Mar 19 2010

TCC คือกลุ่มของตัวอักษรไทยที่ไม่สามารถแยกจากกันได้ตามหลักการเขียนของภาษาไทย เสนอครั้งแรกใน paper Character Cluster Based Thai Information Retrieval TCC หนึ่งอาจจะไม่เป็นคำหรือไม่เป็นพยางค์ด้วยซ้ำ ตัวอย่างต่อไปนี้เป็น TCC ทั้งสิ้น

จะ, กับ, เข้, เพราะ, อื้อ, รู้, ใส่

เป็นต้น จะเห็นว่าแต่ละ TCC ที่ยกตัวอย่างไปไม่สามารถแยกตัวอักษรใดออกมาได้เลย เพราะถ้าแยกแล้วจะไม่สามารถอ่านได้ เช่น “ใส่” มี 3 ตัวอักษรแยก “ใ” ออกมาก็ไม่มีความหมายเพราะ “ใ” ต้องตามด้วยพยัญชนะบางอย่าง แยกไม้เอกยิ่งไม่ได้ใหญ่เพราะไม้เอกอยู่ตัวเดียวโดดๆ ไม่ได้ แบบนี้เป็นต้น มาดูตัวอย่างการแบ่ง TCC ที่ยาวขึ้นบ้าง

สังเกตตรงคำว่า “ฝาก” เราไม่แยก TCC เป็น “ฝาก|” แต่แยกเป็น “ฝา|ก|” เพราะเราไม่สามารถบอกได้ว่า “ก” จะเป็นตัวสะกดหรือจะเป็นพยัญชนะต้นให้กับ TCC ตัวถัดไป จึงต้องแบ่งย่อยไว้ก่อน คำว่า “ขวด” ที่แบ่งแบบนั้นก็ด้วยเหตุผลเดียวกัน สำหรับผู้ที่ทำงานด้านการประมวลผลภาษาธรรมชาติคงรู้จัก TCC ดีอยู่แล้ว แล้วอาจจะเขียนโปรแกรมตัดได้ไม่ยากเย็นนัก เช่นใช้ regular expression

เร็วๆนี้ เพิ่งนำตัวตัด TCC ที่พัฒนาขึ้นมาปล่อยเป็น library (open-source) ชื่อ JTCC พัฒนาด้วยภาษา Java โดยใช้ parser generator ที่ชื่อ ANTLR ช่วยเพื่อสร้าง parser จาก grammar ของ TCC ที่เขียนไว้  หากสนใจก็เชิญนำไปใช้ได้ด้วย license GPLv3 ตัว library ยังไม่สมบูรณ์มากนัก แน่นอนยังมีจุดบกพร่อง (ดูได้ที่หน้า issue ในเว็บของ JTCC) หากมีข้อเสนอแนะหรือคำถามก็เชิญได้เลยครับ :)

เว็บหลักของ JTCC :  http://jtcc.googlecode.com

4 responses so far

« Newer posts Older posts »