Text

Markdown

So I’m trying to use Markdown and looking for the best Markdown app on Mac OS X and Windows. Now I’m using Byword for Mac OS X ($8.99) and planning to use MarkdownPad for Windows.

It also seems good to move my translation works into Markdown format for easy use and working with formatting problem.

Need to go to bed now … it’s 4am already.

Text

Again

I will now make a resolution again for like the millionth time that I will behave myself!

It’s not that I am a bad boy, but I must be more consistent.

- Wake up!

- Stop surfing the internet aimlessly!

- Do exercise!

Just this!

Photo
timetable for winter semester 2012

timetable for winter semester 2012

Photo
timetable for summer semester 2012

timetable for summer semester 2012

Text

ทดสอบ MathJax

ทดสอบ MathJax \(\mathcal{D}=\{(\mathbf{x}^{(i)},\mathbf{y}^{(i)})\}_{i=1}^n\)

\[
p(\mathbf{y}|\mathbf{x}) = \frac{1}{Z} \exp\left(\mathbf{w}\cdot\boldsymbol{\phi}(\mathbf{x},\mathbf{y})\right)
\]

Link
Text

อากง sms IMEI และความไม่สมเหตุสมผล

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

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

ขอเท้าความถึงการพิจารณาคดีความก่อนนะครับ

(ข้อมูลทั้งหมดอ้างอิงจากเว็บ ilaw.or.th)

โจทก์ สำนักงานอัยการสูงสุดอ้างว่า ลุงอำพล จำเลยในคดีความนี้ส่ง SMS ไปยังโทรศัพท์มือถือของเลขานุการของนายอภิสิทธิ์ เวชชาชีวะ อดีตนายกรัฐมนตรี เมื่อเดือนพฤษภาคม 2553 โดยข้อความดังกล่าวมีลักษณะหมิ่นพระบรมเดชานุภาพ

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

เพราะฉะนั้นหลักฐานสำคัญในคดีนี้ที่มัดตัวลุงคือหมายเลขประจำเครื่องซึ่งต่อจากนี้ผมจะเรียกว่าหมายเลข IMEI นะครับ

ก่อนอื่น มาทำความรู้จักกับหมายเลข IMEI กันดีกว่า

(ข้อมูลจาก wikipedia ภาษาอังกฤษ)

หมายเลข IMEI ย่อมาจาก International Mobile Equipment Identity แปลว่าหมายเลขประจำอุปกรณ์พกพานานาชาติ เป็นหมายเลขที่แจกจ่ายให้กับอุปกรณ์พกพาเพื่อระบุตัวเครื่องในระบบ GSM, WCDMA, iDEN ครับ

ลักษณะของหมายเลขนี้จะเป็นหมายเลข 15 หลัก โดยที่ 14 หลักแรกเป็นหมายเลขระบุตัวเครื่อง ส่วนหลักสุดท้ายเป็นหลักตรวจสอบหรือที่เรียกกันว่า checksum ครับ ซึ่งสามารถคำนวณได้ด้วย 14 หลักแรก

หลักตรวจสอบนี้มีไว้เพื่อตรวจดูว่าในระหว่างการส่งหมายเลขนี้ผ่านวิธีการใดก็ตาม มีข้อผิดพลาดเกิดขึ้นหรือไม่ สามารถตรวจสอบได้ด้วย Luhn algorithm ครับ โดยที่หากทั้ง 15 หลักถูกต้อง จะผ่านการตรวจสอบนี้ แต่หากไม่ผ่านการตรวจสอบนี้หมายความว่ามีอย่างน้อยหนึ่งหลักผิดในระหว่างการรับส่งข้อมูล

การใส่หลัก checksum นี้ใช้กันทั่วไปในการตรวจสอบข้อผิดพลาดในรหัสยาวๆพวกนี้ครับ ตัวอย่างเช่นหมายเลข ISBN หรือหมายเลขบัตรประชาชนก็ตาม

ทีนี้เรากลับมาดูที่คดีนี้กันอีกครั้งครับ

จากที่อ้างไว้ข้างต้น หลักฐานสำคัญในคดีนี้คือหมายเลข IMEI ซึ่งในรายงานจาก DTAC เป็นหมายเลข 358906000230110

หมายเลขนี้ไม่ตรงกับหมายเลขเครื่องของลุงซะทีเดียว โดยที่หมายเลขของลุงคือ 358906000230116 ต่างกันที่หลักสุดท้าย หลัก checksum เพียงที่เดียวเท่านั้น โดยหากนำไปคำนวณตาม Luhn algorithm แล้วรหัส 14 หลักแรกนี้ต้องมีหลัก checksum เป็น 6 ครับ

เจ้าหน้าที่ DTAC ผู้ตรวจสอบการใช้งานครั้งนี้ให้การว่า

ตัวเลขหลักสุดท้ายของอีมี่ไม่มีความสำคัญ เพราะทางบริษัทดีแทคจะใส่เลข 0 ไว้อยู่แล้ว

คำให้การนี้เป็นสิ่งที่ทำให้ผมประหลาดใจมากเพราะการทำเช่นนี้ทำให้ความหมายของ checksum ในรหัส IMEI หายไป แม้ว่านี่จะเป็นวิธีการเก็บข้อมูลของ DTAC จริงๆผมขอประนามความชุ่ยในระบบเก็บข้อมูลและระบบตรวจสอบของบริษัท และทำให้ความเชื่อมั่นต่อการเก็บข้อมูลของบริษัทหายไป เพราะใครก็สามารถสุ่มหมายเลข 14 หลักขึ้นมาแล้วอ้างนี้คนนั้นเป็นคนส่งข้อมูลได้

และในขณะเดียวกัน ศาลพิพากษาว่า

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

ซึ่งเป็นตรรกะที่ใช้ไม่ได้ครับ

จากสองจุดนี้ซึ่งเป็นหลักฐานสำคัญนำไปสู่การพิพากษาว่าคุณลุงมีความผิดจริง ทำให้ผมสงสัยในความยุติธรรมของกระบวนการศาลในบ้านเรา

ทั้งหมดที่กล่าวมานั้นไม่ใช่เฉพาะในกรณีคดีความครั้งนี้เท่านั้น ผมไม่ทราบว่ามีกรณีอื่นๆอีกหรือไม่ที่ศาลใช้ตรรกะที่ผิดๆบนหลักฐานที่ขาดความน่าเชื่อถือในการพิจารณาคดี

ผมไม่ตัดสินว่าคุณลุงอำพลหรือมีคนใกล้ตัวเป็นคนส่ง SMS หมิ่นพระบรมเดชานุภาพดังกล่าวจริงหรือไม่ แต่ผมเห็นว่าการพิจารณาคดีครั้งนี้ไม่สมเหตุสมผลครับ

อ้างอิง

คำพิพากษาคดีลุง sms: http://ilaw.or.th/node/1229

IMEI: http://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity

Text

commands

ls, cat, more, less, echo, grep, sed, du, wc, chmod, cp, mv, rm, mkdir, rmdir, man, ps, bg, fg, ssh, scp

Text

Google Developer Day 2011 Japan (1/2)

เมื่อวันอังคารผมมีโอกาสได้ไปงาน Google Developer Day 2011 ที่จัดที่โยโกฮามามาครับ

งานนี้จัดแสดงเทคโนโลยีของกูเกิลมากมายอาทิ Android, HTML5, Chrome, App Engine, Google+ โดยมีพนักงานและผู้ที่เกี่ยวข้องมากมายมาบรรยายให้ฟังด้วยครับ

งานมีตารางดังต่อไปนี้ครับ

Agenda

สีเหลืองคือส่วนที่ผมได้ไปนั่งฟังมาด้วยครับ

เนื้อหาในงานมีอะไรบ้างเชิญอ่านต่อจากนี้เลยครับ

Google Dev Day 2011 - Tokyo

Keynote

Takuya Oikawa - Senior Engineering Manager

พูดถึงประวัติของ GDD

GTUG (Google Technology User Groups)

วีดิโอแนะนำ Google Developers web

developers.google.com

พูดถึง 3.11

Openness google ทำอะไรในนี้บ้าง

ได้อะไรจากในเหตุการณ์ครั้งนั้นบ้าง

Brad Abrams - Head of Google+ Playform Team

Tim Bray - Developer Advocate

Kenichi Kanbara - iplatform.org Japanese Develop

Tony Chan - Developer Advocate

Eiji Kitamura - Developer Advocate

Takashi Matsuo - Developer Advocate

Daniel ‘Wolff’ Dobson - Developer Programs Engineer

Ken Tokusei - Product Management Director

พูดโดยรวมเกี่ยวกับเทคโนโลยีต่างๆของกูเกิลในขณะนี้

ตั้งแต่ Android, HTML5, Chrome, App Engine, Google+

Android มีพรีวิว Ice Cream Sandwich

โดยเฉพาะ API เกี่ยวกับ People, Calendar และ Intent Filter ใหม่ที่ให้นักพัฒนาเขียนขอ Intent ได้ง่ายขึ้นด้วยโค้ดน้อยลง

Beam!!

HTML5 และ Chrome

พูดถึงเทคโนโลยีเช่น Chrome Developer Tools, เทคโนโลยีของ HTML5 เช่น WebM Video Codec, Web Audio API

ตามมาด้วย App Engine ซึ่งช่วยให้นักพัฒนาเขียนโค้ดได้ง่ายขึ้น ไม่ต้องมาพะวงถึง scalability ฯลฯ ถ้าต้องจัดการเองทุกอย่าง

ที่น่าสนใจมี Google Cloud Storage, Google Prediction API, Google Cloud SQL

จบด้วย Google+

พูดถึงจำนวนคนที่เพิ่มขึ้นอย่างรวดเร็วหลังจากเปิดให้ผู้คนทั่วไปสมัครได้โดยไม่ต้องรออินไวท์

พูดถึง API ต่างๆและตัวอย่าง Apps และ Hangout App

บ่าย

Session 1 : แนะนำ Android ใหม่ ICS

Tim Bray - Developer Advocate

รวมโอเอสของมือถือกับแทบเล็ตเข้าด้วยกัน

ของที่ใช้ใน Honeycomb ได้ก็ใช้ใน ICS ต่อได้

เพิ่มความสามารถและ API ใหม่ๆเช่น

People, Calendar, Sharing (Intents), Beam (NFC), Face Detection, Text-to-Speech,

Improved Notification, Launcher Widgets, Social APIs

หัวข้อที่น่าสนใจ

Sharing

 - ทำให้ Intent Filtering ง่ายขึ้น ลดจำนวนโค้ดที่ต้องเขียนลง

 - Beam ใช้ NFC เพื่อส่งข้อมูลให้กับอุปกรณ์ ICS ที่อยู่ใกล้ๆกันได้

 - Face Detection มี API เปิดให้ใช้ได้ พร้อมทั้งมีความสามารถปลดล็อกเครื่องด้วยใบหน้าได้ด้วย

 - Text-to-Speech เดิมทีใช้ API จากบุคคลที่สาม แต่ตอนนี้มีเปิด API ในตัว OS เลย

 - Notification เพิ่มความสามารถลบ Notification ทีละอันได้

   ปรับปรุงหน้าตา

 - เพิ่ม Widgets

 - มี Social API ที่ให้นักพัฒนาเรียกจัดการข้อมูล Social Network ได้ผ่าน API เลย

Session 2 : Excellence in the Android User Experience

   UI สำหรับ ICS

Ryosuke Matsuuchi - Developer Advocate

เป้าหมาย 5 ประการในการออกแบบ

1 เร็ว

2 ใช้งานได้

  ถ้าแอพของคุณต้องมีคู่มือ แปลว่ามีอะไรบางอย่างผิดพลาดแล้ว

3 สวยงาม

  ความประทับใจแรกเป็นสิ่งสำคัญ

  ควรทำงานกับนักออกแบบมืออาชีพ

4 สมเป็นแอนดรอด์

  ไม่ควรย้าย UI มาจากแพลตฟอร์มอื่นดื้อๆ

  อย่าใช้ปุ่ม Back ในความหมายอื่นๆเพราะผู้ใช้จะงง

  อย่าสร้างวัตถุมาตรฐานเอง

5 ฟังผู้ใช้

  มีผู้ใช้ได้แสดงความคิดเห็นได้

  ใช้ Google Analytics for Android

Android 4.0 (ICS)

เป็นแพลตฟอร์มที่รวมอุปกรณ์ทั้งหลายตั้งแต่โทรศัพท์มือถือ แทบเล็ต และอื่นๆ

 สนับสนุนทุกความละเอียดหน้าจอ

ความสามารถจาก Android 3

 - System Bar (Navigation Bar)

 - Recent Apps

 - Notification ปรับปรุงใหม่

 - Widget ปรับขนาดได้

 - Action Bar

 - Fragment

 - Drag and Drop

 - Copy and Paste

- เนื่องจาก ICS สนับสนุนอุปกรณ์หลายประเภท จึงมีธีมที่เหมาะกับอุปกรณ์ประเภทนั้นๆ

และนักพัฒนาสามารถเลือกใช้ได้โดยเรียก default device theme

- ปรับปรุง UI ให้ดูเรียบง่ายขึ้น เอากรอบต่างๆออกไปเพิ่มพื้นที่ใช้งาน

- มี xhdpi สำหรับ 320 dpi เช่น Galaxy Nexus

ขนาดไอค่อนเป็น 96x96 dpi

- บางอุปกรณ์ไม่มีปุ่ม Menu ซึ่งเป็นมาตรฐานถึง 2.x แต่จะมี ActionBar มาแทน

UI Patterns

1 Action Bar

 มีสามส่วนคือ App Icon, View Details, Action Buttons

 App Icon มีหน้าที่คือ “ขึ้น” ไปยัง View ที่มีโครงสร้างเหนือกว่า

 (สังเกตดีๆว่าต่างจากปุ่ม Back ที่อยู่ใน Navigation Bar และพาไปยัง View ก่อนหน้า)

 View Detail ให้ข้อมูลเกี่ยวกับ View นั้น มีปุ่มที่สามารถออกมาเป็น menu ได้

 Action Buttons เป็นส่วนที่วางปุ่มที่ทำให้เกิด Action สำคัญๆของ View นั้น

 Action Bar สามารถเปลี่ยนรูปร่างหรือสีได้ตามอินพุตของผู้ใช้

 และเมื่อขนาดหน้าจอเปลี่ยนไป เช่นเมื่อใช้ในมือถือแทนแทบเล็ตหรือแนวนอน/แนวตั้ง

 ปุ่มต่างๆใน Action Bar จะสามารถกำหนดให้เรียงซ้อนเป็นชั้นที่สองด้านบนหรือย้ายไปอยู่ด้านล่างก็ได้

 ข้อมูลเพิ่มเติมอ่านใน  Customizing Action Bar blog

 สำหรับ ADK ต่ำกว่า ICS ให้ใช้ ActionBarCompat

2 Multi-Pane Layouts

 เนื่องจาก ICS ใช้ได้ทั้งบนมือถือและแทบเล็ต ดังนั้นนักพัฒนาจึงต้องเขียนโค้ดให้รองรับทั้งสองแบบ

 ในบางแอพสามารถใช้รูปแบบ Multi-pane ได้ในแทบเล็ต แต่ถ้าให้โปรแกรมใช้ได้ในมือถือด้วยจะต้องเขียนโค้ดใหม่

 ICS จึงมี Fragment ซึ่งเป็นคลาสใหม่ที่มีเพื่อใช้เพื่อให้เขียนโค้ดซ้ำน้อยที่สุด

 การออกแบบใน ICS จึงควรให้ Activity เป็นแค่ชั้นบางๆที่มี Fragment(s) อยู่ข้างใน

 ข้อมูลเพิ่มเติมอ่านใน Framents blog: goo.gl/T5Ln7

3 App Navigation

 มี Notification ปรับปรุงใหม่

 สั่งลบทีละอันได้ สามารถมีแอคชั่นไปยังแต่ละแอพโดยตรงได้

 มี widget ในหน้าหลักปรับปรุงใหม่

 ที่ผ่านมา Android มีแค่ปุ่ม Back ซึ่งพาผู้ใช้กลับไปยัง View ก่อนหน้า

 แต่ส่วนมากผู้ใช้คำนึงถึงการใช้งานในเชิงโครงสร้างมากกว่า

 เลยให้ App Icon พากลับไปยัง View ที่มีโครงสร้างอยู่เหนือกว่า View ปัจจุบัน

Do’s and Don’ts

 DO ตั้งเป้าพัฒนาเพื่อ APK เดียว

 DO use the compatibility library

 DO ถ้าจะไม่ใช้ธีม Holo ของตัวเครื่องเอง จงออกแบบใหม่ทั้งหมด

 DO สร้างแอพที่รองรับทั้งแนวตั้งและแนวนอน

 DO ใช้ dp/sp อย่าใช้ px

 DO ดึงขนาดหน้าจอออกมาทั้งใช้มือถือและแทบเล็ต (extract dimensions for phones and tablets)

 DO ใช้ธีมหรือ style เพื่อลดความซ้ำซ้อน

 DO ผสานรูปแบบของโลโก้เข้ากับรูปแบบหน้าตาของ OS

 DO create 9-patch bitmaps

 ข้อมูลเพิ่มเติม http://code.google.com/p/android-ui-utils/

 DON’T คิดว่า API 11 ขึ้นไปเป็นแทบเล็ต เพราะ ICS มี API 14

 DON’T คิดว่า xlarge เป็นแทบเล็ต เพราะมีแทบเล็ตขนาด 7” และเป็น large

 DON’T อย่าใช้ขนาดตัวอักษรขนาดเล็กในหน้าจอขนาดใหญ่

 http://code.google.com/p/iosched

Photo
My vote in ISML 2011 Emerald Round 8

My vote in ISML 2011 Emerald Round 8