วันอังคารที่ 30 เมษายน พ.ศ. 2556

ทำให้ Wacom Tablet ใช้งานบนวินโดว์แบบลื่นๆ

สำหรับคนที่เคยใช้ Wacom Tablet เวลาทำงานบนวินโดว์ อาจจะเคยพบปัญหาเวลาวาดภาพแล้วเกิดอาการกระตุก เนื่องฟีเจอร์พิเศษบางอย่างที่ไม่เหมาะกับคนที่ใช้ tablet เพื่อการวาดรูปอย่างจริงจัง ฟีเจอร์เหล่านั้นคือ
  • rings วงแหวนที่ปรากฎเวลาให้งานปากกา
  • dynamic feedback วงแหวนกระเพื่อมเวลากดปากกา
  • flicks ตวัดลากปากกาตามรูปแบบ เพื่อเรียกใช้คำสั่ง
  • Tablet PC input panel แสดงคีย์บอร์ดเสมือนบนจอภาพ
  • press and hold กดปากาค้างเรียกคำสั่งที่กำหนดไว้
ซึ่งฟีเจอร์ทั้งหลายที่ว่ามานี้มันไม่เหมาะ ในเวลาที่เราวาดภาพ ที่จำเป็นต้องลากปากกาไปในทิศทางต่าง กดปากกาค้าง เพราะอาจทำให้เส้นที่วาดขาดตอน ที่เกิดอาการกระตุกเวลากดปากกาวาด รวมถึงรำคาญสายตา ตัวผมเองคิดว่าฟีเจอร์เหล่านี้เหมาะกับการใช้งานจอภาพที่สัมผัสด้วยนิ้วมากกว่า

วิธีแก้แนะนำดูตามลิงค์ครับ

The Ultimate Guide to Making Your Wacom Tablet Work on Windows 7 แก้เองโดยไล่ปิดฟีเจอร์
Fix My Pen Makes your Wacom Tablet JUST WORK on Windows 7 ใช้โปรแกรมช่วยไล่ปิดฟีเจอร์ให้
Windows 8 RTM and Wacom Tablets - Even More Flawed Than Before แก้ปัญหาบน Windows 8

ป.ล. สำหรับการตั้งค่าของผมก็ไล่ปิดทุกฟิเจอร์ ยกเว้น Tablet PC input panel เพราะเวลาใช้เครื่องอยู่ในโหมดแท็บเลต มันกดคีย์บอร์ดลำบาก (เครื่องที่ใช้ Toshiba Portege M700,Fujitsu T4220)

วันพุธที่ 17 เมษายน พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 3

Variables
  • ตัวแปรใช้เก็บค่าพื้นฐานใน Erlang
  • ขึ้นต้นด้วยตัวพิมพ์ใหญ่ ตามด้วยตัวพิมพ์ใหญ่หรือเล็ก ตัวเลข และขีดล่าง (_ underscore) โดยไม่มีอักษรพิเศษอื่นๆ
ตัวอย่าง
A_Long_Variable_Name
Vname
T2animation
Db2Connect


  • ตัวแปรเมื่อมีการผูกค่าแล้ว เปลี่ยนแปลงค่าไม่ได้ (single assignment)
  • ถ้าต้องการประมวลผลลัพธ์จากตัวแปร ต้องสร้างตัวแปรใหม่มาเก็บผลลัพธ์
Ten = 2,
Result = Ten*Ten.


  • การเรียกตัวแปรใน Erlang เป็นแบบ Call by value
  • อากิวเมนต์ที่จะผ่านเข้าสู่ฟังก์ชั่น จะต้องมีการผูกค่า ก่อนที่ฟังก์ชั่นจะทำการประมวลผล
  • ใน Erlang ไม่มีการเรียกแบบอ้างอิง Call by reference does not exist
  • ตัวแปรเป็นแบบ local อยู่กับฟังก์ชั่นที่มันอยู่
  • ไม่มีตัวแปรแบบ Global ใน Erlang
  • ตัวแปรไม่ต้องประกาศก่อน ใช้เมื่อต้องการใช้มัน
  • ตัวแปรใน Erlang เป็นแบบ dynamic type system (Erlang type system)
  • ตัวแปรที่ถูกค่าแล้วสามารถยกเลิกการผูกค่าโดยใช้ฟังก์ชั่น f() มีรูปแบบคือ f(Variable).

วันเสาร์ที่ 30 มีนาคม พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 2

 Atoms and Strings
ความแตกต่างของ Atoms และ Strings
  • atom ทำการประมวลผลได้เฉพาะนำมาเปรียบเทียบกันเอง
  • string ประมวลผลได้หลายแบบ เช่นการนำสตริงมาแยก
ตัวอย่าง
  สตริง "Hello World" สามารถแยกได้เป็น ["Hello","World"] แต่ในกรณีของอะตอม 'Hello World' ไม่สามารถแยกได้
  • เราสามารถใช้สตริงแทนอะตอมในรูปแบบของตัวแปรคงที่แต่ ประสิทธิภาพที่ได้มีความแตกต่างกัน เพราะว่า
     สตริง ใช้พื้นที่เก็บเท่ากับความยาวของข้อความ
     อะตอม ใช้พื้นที่เก็บขนาด 2 ไบต์ในการอ้างอิง
ถ้ามีการเปรียบเทียบ สตริงต้องวิ่งเปรียบเทียบทีละตัวอักษร ส่วนอะตอมเปรียบเทียบในขั้นตอนเดียว
Building and Processing Lists 
  • เราสามารถแยก list ได้ออกเป็นส่วนหัว (head) และหาง (tail) ตราบเท่าที่ลิสต์ไม่ว่า
  • หัวคือส่วนแรกในลิสต์ หางคือลิสต์ที่ภายในประกอบด้วยส่วนที่เหลือ
รูปแบบ
List = [Element|List] หรือ []

วันอังคารที่ 26 กุมภาพันธ์ พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 1

 หลังจากที่ได้อ่านหนังสือเกี่ยว Erlang Programming ของ Francesco Cesarini และ Simon Thompson วันนี้ก็มีโอกาสว่างๆ อัพเดตบล็อกเกี่ยวกับพื้นฐานการเขียนโปรแกรมภาษา Erlang เพื่อเอาไว้ช่วยบันทึกความจำของผมเองว่าเรียนรู้ไปถึงไหนบ้างแล้ว
 สำหรับใครที่ต้องการรู้ประวัติของ Erlang ถ้าต้องการ Download

เริ่มต้นกันก่อนที่ Erlang Shell


คำสั่งพื้นฐานที่จำเป็นใช้ใน Erlang Shell
help().     เรียกดูคำสั่งที่ของ Erlang Shell ทั้งหมด
q().        ออกจาก Erlang Shell
pwd().     ดูว่าเรากำลังทำงานอยู่ในไดเรกทรอรีไหน
cd("C:/Users/Me/WorkingDir").    เปลี่ยนไดเรกทรอรีที่ทำงานไปที่ C:/Users/Me/WorkingDir
ls().        ดูรายการในไดเรกทรอรี
os:cmd("notepad myprog.erl"). เรียกใช้คำสั่งเฉพาะของ OS
c(myprog).    คอมไพล์ Module ต้องมีไฟล์ชื่อ myprog.erl อยู่ในไดเรกทรอรีที่ทำงานอยู่ก่อนคอมไพล์
m(myprog).    ดูรายการ public function ใน Module นี้
myprog:function(arguments).    เรียกในฟังก์ชั่นใน Module
2 + 3 * 4.    ตัวอย่างการเขียน Expression
Variable = expression.    ผูกตัวแปรเข้ากับนิพจน์ ผูกได้เพียงครั้งเดียวเท่านั้น
f(Variable).  ยกเลิกการผูกค่าตัวแปร
f().    ยกเลิกการผูกค่าตัวแปรทั้งหมด