วันพฤหัสบดีที่ 7 พฤษภาคม พ.ศ. 2558

Arduino : จัดการข้อมูลจาก Serial Port ด้วย State Machine

Standard
     State Machine แปลตรงๆ ก็คือสถานะเครื่องจักร ถ้าใครเคยออกแบบวงจร Digital ด้วย Logic gate ที่มีสถานะ อาจจะพอนึกภาพออกมันคือรูปวาดกลมๆ แล้วมีเส้นลากไปลากมา
     State Machine เหมาะกับเอามาใช้กับข้อมูลแบบ Stream ที่เรารู้รูปแบบของข้อมูลที่แน่นอนครับ ซึ่ง Serial Port ก็เป็นข้อมูลแบบ Stream ด้วย
     โจทย์คือ เราจะรับข้อมูลแบบ stream ในรูปแบบ <XXXXXX>  โดยที่
< คือไบต์เริ่มต้น หรือ Header
> คือไบต์สิ้นสุด หรือ Footer
XXXXX คือข้อความ

     การเริ่มตอนออกแบบ State Machine เพื่อให้เห็นภาพง่ายๆ ควรเริ่มจากการวาดรูปแผนภาพ

วันพุธที่ 26 พฤศจิกายน พ.ศ. 2557

Compile tomcat native lib for CentOS 6

Standard
      จดไว้กันลืมหน่อย ตอนแรกผมต้อง config tomat6 ให้ใช้งานบน https แล้วตอนลงมันไม่มี lib libtcnative-1.so มาให้เลยต้อง compile เอง ซึ่งวิธีก็ง่ายๆ ต้องลง pcakage ต่างๆ ตามนี้ก่อน
yum -y install apr-devel openssl-devel java-1.7.0-openjdk-devel
Download tomcat-native จาก http://tomcat.apache.org/download-native.cgi 
จะได้ไฟล์ tomcat-native-1.1.32-src.tar.gz จากนั้น unzip ด้วยคำสั่ง
tar -vxf tomcat-native-1.1.32-src.tar.gz
  จากนั้นเข้าไปที่ folder native
cd tomcat-native-1.1.32-src/jni/native

 บน CentOS 6 java home จะอยู่ที่ /usr/lib/jvm/java-1.7.0 จากนั้นใช้ configure  เพื่อสร้าง Makefile
./configure --with-apr=/usr/bin/apr-1-config --with-ssl=yes --with-java-home=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71.x86_64  
โดยต้องระบบ path ของ APR, java home และให้ใช้งาน SSL  ใช้คำสั่ง make เพื่อ compile lib
make && make install

ซึ่ง libtcnative-1.so จะอยู่ใน  /usr/local/apr/lib

วันจันทร์ที่ 20 ตุลาคม พ.ศ. 2557

OSX : ssh to remote host without password required and auto mount when login

Standard
     หลังจากที่ทำ network drive ผ่านทาง ssh ด้วย macfuse และ sshfs  มีความต้องการให้ mount drive อัตโนมัติหลังจากที่ login ซึ่งจะต้องทำ 2 อย่างคือ

  1. การสร้าง authorized keys จาก OSX แล้วไปเก็บใน remote server เพื่อเวลาที่จะ connect ไปแล้วไม่ต้องการให้ remote server ถามรหัสผ่าน
  2. script สำหรับตรวจสอบว่า OSX สามารถเชื่อมต่อกับ remote server ได้ และ mount drive


OSX mount network drive ด้วย sshfs

Standard
      ปกติการใช้งาน OS ตระกูล UNIX หรือ Linux จะมี ssh server ติดตั้งมาให้อยู่แล้วและการใช้งานดังนั้นถ้าหากต่อ network drive ด้วย ssh น่าจะสะดวกกว่าโดยที่ไม่ต้องลง samba เพิ่มเติม
ติดตั้ง application สองตัวคือ osxfuse และ sshfs จากเว็ป osxfuse.github.io  เมื่อติดตั้งเรียบร้อยลองเรียกโปรแกรม sshfs จาก terminal
$sshfs -V

วันพฤหัสบดีที่ 16 ตุลาคม พ.ศ. 2557

แก้ปัญหา bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

Standard




     ปกติชอบใช้ Terminal ของ OSX ssh เข้า remote host แล้ว Default ของ Character encoding ของ Terminal เป็น UTF-8 ซึ้ง bash นั้นไม่รู้จักวิธีการแก้ไขง่ายนิดเดียว
vi /etc/environment

วันพุธที่ 15 ตุลาคม พ.ศ. 2557

Arduino : CPP and Assembly file

Standard
          Arduino ปกติตอนกด verify ของ arduino ตัว Arduino IDE จะแปลง code ที่เราเขียนขึ้นเป็นไฟล์ในรูปแบบ C++ แล้วมันอยู่ไหนล่ะ

วันพุธที่ 8 ตุลาคม พ.ศ. 2557

QT Creator : ERROR Could not resolve SDK path for 'macosx10.8'

Standard
     
     หลังจากการ upgrade OSX จาก 10.8 เป็น 10.9 ทำให้ QT ไม่เจอชุด SDK วิธีการแก้ไขคือ 
vi QT_ROOT_PATH/QT_VERSION/clang_64/mkspecs/qdevice.pri
แล้วแก้ไข บรรทัด
!host_build:QMAKE_MAC_SDK = macosx10.8
เป็น
!host_build:QMAKE_MAC_SDK = macosx10.9