08 เมษายน 2556

การคอมไพล์ App Inventor ด้วยตัวเอง

การคอมไพล์ App Inventor ด้วยตัวเอง เริ่มจาก
1. ดาวน์โหลด Source code จากที่นี่ https://github.com/mit-cml/appinventor-sources
2. ดาวน์โหลดและติดตั้ง ant for windows ได้จากที่นี่http://ant.apache.org/bindownload.cgi หาที่คลิกดาวน์โหลดยากหน่อย วิธีการติดตั้งดูได้จากที่นี่ ค่อนข้างละเอียด http://ant.apache.org/manual/install.html เวลาตั้งค่าพาธ ควรใส่รูปแบบที่ไม่มีช่องว่างเช่น C:\PROGRA~1\Java\jdk1.xxxxxxxx สำหรับ ant เก็บไว้ไดรฟ์ C ง่ายสุด
3. ติดตั้ง Git จากที่นี่ https://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git
4. ก่อนคอมไพล์ ตั้งค่า ดังนี้
  • 1. เปิด regedit
  • 2. ไปที่ HKEY_CURRENT_USER
  • 3. เลือก Environment
  • 4. เพิ่มค่อ new String Value และใส่ _JAVA_OPTIONS ในช่อง Value name
  • 5. ใส่ -Xms256m -Xmx512m ในช่อง Value data
  • 6. รีบูตเครื่อง
ถ้าจะให้ง่ายกว่านั้นคือ แก้ไขไฟล์ compiler.java ประมาณบรรทัดที่ 295
this.childProcessRamMb = 1100;

แค่นี้ก็คอมไพล์โปรแกรมได้แล้วจ้า

03 กันยายน 2555

การบันทึกวิดีโอบน Linux ที่ง่ายที่สุด

เรื่องของเรื่องคือ จะทำวิดีโอสาธิตการใช้งานระบบปฏิบัติการลินุกซ์ เรื่องของการเขียนโปรแกรมบน Android OS ทั้งนี้เอาแบบง่ายๆ เข้าไว้ พอจะเริ่มใช้งานจริงก็ค้นหาโปรแกรมที่เคยใช้ทำ ไม่ว่าจะเป็น Gtk-recordMyDesktop , หรือ Qt-recordMyDesktop ผลปรากฎว่ามันไม่เวิร์คเอาเสียเลย

ลองค้นหาในเน็ตดูพบวิธีการที่ง่าย และตรงไปตรงมามากกว่า แต่การใช้งานครั้งแรกอาจจะยุ่งๆหน่อย วิธีที่ว่าคือการใช้คอมมานด์ไลน์ครับ

คำสั่งบันทึกหน้าจอ จะทำผ่านโปรแกรม ffmpeg โดยระบุ พารามิเตอร์เข้าไปยังบรรทัดคำสั่งเลย ตัวอย่างการใช้คำสั่ง เช่น

ffmpeg -f alsa -ac 2 -i default -f x11grab -r 30 -s 1366x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -preset ultrafast -crf 0 -threads 0 test.mkv

คำสั่งข้างต้นเป็นการจับภาพหน้าจอขนาด 1366x768 โดยบันทึกเป็นไฟลชื่อ test.mkv
จะเห็นว่าเวลาเราจะเอาไปใช้จริงมันยุ่งยากที่ต้องพิมพ์คำสั่งยาวๆ เลยเอามาใส่เป็น shell script แทน สมมติชื่อไฟล์ record.sh ก็แล้วกันนะครับ เนื้อข้างในก็ประมาณนี้


#!/bin/sh
ffmpeg -f alsa -ac 2 -i default -f x11grab -r 30 -s 1366x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -preset ultrafast -crf 0 -threads 0 "$1.mkv"

โค้ดข้างต้นเป็นคำสั่งที่อยู่ในไฟล์ record.sh ซึ่งจะยังไม่สามารถทำงานได้จริง
ต้องสั่งให้ record.sh ทำงานได้โดยสั่ง
chmod +x record.sh

วิธีใช้งาน
./record.sh myclip

เป็นการส่งค่าให้บันทึกหน้าจอตามปกติ โดยเก็บเป็นไฟล์ชื่อ myclip.mkv

08 มิถุนายน 2555

Andriod Linux Eclipse และ Phonegap

พัฒนางาน project ป.โท เกี่ยวกับ screen design โดยใช้ เครื่องมือ
OpenSuse Linux + eclipse + phonegap + jquerymobile
ติดปัญหาใหญ่ๆ 2 อย่าง และแก้ปัญหาได้ค่อนข้างแน่นอนแล้ว เอามาเก็บไว้กันลืม

ปัญหาที่ 1 หา device ไม่เจอ
   ผมใช้ Samsung Galaxy tab 7.7 ต่อแบบ usb ระบบบอกพบอุปกรณ์ แต่ไม่ทราบ Model ดังนั้นตั้งสั่งให้ระบบตรวจสอบว่า ตัว Gtab ของเรามีระหัสว่าอะไร โดยใช้คำสั่ง
$lsusb

น่าจะมีรายงานออกมาประมาณนี้

Bus 001 Device 005: ID 15d9:0a4c Trust International B.V. USB+PS/2 Optical Mouse
Bus 001 Device 004: ID 0458:00e5 KYE Systems Corp. (Mouse Systems)
Bus 002 Device 008: ID 04e8:6860 Samsung Electronics Co., Ltd
Bus 002 Device 004: ID 0489:e011 Foxconn / Hon Hai 

ให้สังเกตบรรทัดที่มี ชื่ออุปกรณ์ของเราอยู่ในที่นี้คือ Samsung Electronics Co.,Ltd
โดยมี ID ของอุปกรณ์เป็น 04e8 ให้เอาค่านี้ไปใส่ไว้ในไฟล์ adb_usb.ini ซึ่งปกติจะอยู่ที่
~/.android/

โดยใช้คำสั่ง
vi ~/.android/adb_usb.ini

เรียบร้อยแล้วสั่งบันทึก พอเปิด eclipse มาอีกทีเราสามารถเชื่อมต่อกับอุปกรณ์ android ของเราได้แล้ว

ปัญหาที่ 2 ปัญหาการคอมไพล์โปรแกรมไม่ผ่านเนื่องจากระบบวันที่ของไทยไม่เหมือนกับของฝรั่ง โดยขึ้น Error generating final archive: Debug certificate expired วิธีแก้ไข ให้สั่ง
$cd ~/.android
$rm debug.keystore
$ keytool -genkey -keypass android -keystore debug.keystore -alias androiddebugkey -storepass android -validity 100000 -dname "CN=Android Debug,O=Android,C=US"

แค่นี้ก็เรียบร้อยแล้วเราสามารถพัฒนาและคอมไพล์ .apk เพื่อใช้ใน Android OS อย่างไม่มีปัญหาแล้ว