Thursday, May 29, 2014

Work Process-การติดตั้ง Cloud ลงบน Raspberry Pi

ระบบปฏิบัติการที่ใช้


  • Windows 7

อุปกรณ์ฮาร์ดแวร์มีดังนี้

  • บอร์ด Raspberry Pi Model B
  • USB Cable
  • SD card ขนาด 8 GB
  • สาย LAN/RJ45

บอร์ด Raspberry Pi Model B

ซอฟแวร์หรือโปรแกรมที่ใช้มีดังนี้

  • ownCloud ( Open-source, ซอฟต์แวร์ระดับองค์กร )
  • Nginx ( Open-source, server ประสิทธิภาพสูง  )
  • OpenSSL (Open-source, ชุดเครื่องมือสำหรับ SSL/TLS)
  • php5 
  • Raspbian Wheezy (ระบบปฏิบัติการบนบอร์ด Raspberry Pi)
  • PuTTy for Windows

ขั้นตอนการติดตั้ง Cloud บน Raspberry Pi


1.) การเตรียมฮาร์ดแวร์และซอฟแวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi 


ใช้คำสั่ง command line sudo raspi-config ดังที่เคยปฏิบัติใน blog : การเตรียมฮาร์แวร์และซอฟต์แวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi เพื่อเรียกเมนูการตั้งค่าบอร์ด raspberry pi แต่ในการติดตั้ง cloud ควรจะตั้งค่าเริ่มต้นให้กับบอร์ดดังนี้   

  • ขยาย root filesystem เพื่อให้มีพิ้นที่รองรับ cloud
     select "Expand Filesystem"
  • เลือกการทำงานของ clock เป็น Modest or Medium
     select "Overclock" (เมื่อตั้งค่าเริ่มต้นให้กับบอร์ดเสร็จแล้วควร reboot บอร์ด RPi)

2.) อัพเดท package list บนบอร์ด Raspberry Pi

sudo apt-get update

sudo apt-get dist-upgrade

3.) สร้าง users

สำรับการติดตั้งนี้ใช้ groupName เป็น www-cloud
sudo groupadd groupName
 

สร้าง users ผู้ดูแล ซึ่งใช้ชื่อเป็น www-data เข้าไปใน group 
sodo usermod -a -G www-cloud www-data  

4.) ติดตั้ง packages 

เป็นการติดตั้ง  pakages ที่กล่าวไว้ข้างต้นด้วย command line
 sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-curl php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-gd php5-fpm memcached php5-memcache varnish

5.) สร้างใบรับรอบ SSL ให้มีระยะเวลาเป็น 2 ปี

 sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

sudo chmod 600 /etc/nginx/cert.pem
sudo chomd 600 /etc/nginx/cert.key


6.) กำหนดค่า Ngnix webserver

sudo nano /etc/nginx/sites-available/default

ให้ทำการกำหนดค่า โดยเพิ่ม code ดังต่อไปนี้ลงไป

* เปลี่ยนหมายเลข IP ตรงส่วนของ server_name ให้ตรงกับ หมายเลข IP ของ บอร์ด RPi

server {
    listen 80;
    server_name 192.168.XXX.XXX;
    rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}
server {
    listen 443 ssl;
    server_name 192.168.XXX.XXX;
    ssl_certificate /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/cert.key;
    root /var/www/owncloud;
    index index.php;
    client_max_body_size 1000M; # set maximum upload size
    fastcgi_buffers 64 4K;
    location ~ ^/owncloud/(data|config|\.ht|db_structure\.xml|README) {
       deny all;
    }
    location / {
       try_files $uri $uri/ index.php;
    }
    location @webdav {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS on;
        include fastcgi_params;
    }
    location ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ {
        try_files $script_name = 404;
        include fastcgi_params;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass 127.0.0.1:9000;
    }
}

จากนั้น กด ctrl+X แล้วเลือก Y ตามด้วย Enter

7.) กำหนดค่า max upload ใน php

sudo nano /etc/php5/fpm/php.ini

ใช้ ctrl+w ในการหาบรรทัดด้านล่างนี้
upload_max_filesize
และเปลียนเป็น
upload_max_filesize = 1000M

post_max_size 
เป็น
post_max_size = 1000M

และในตอนล่างของไฟล์ ให้เพิ่มบรรทัดต่อไปนี้ลงไป
upload_tmp_dir = /srv/http/owncloud/data
extension = apc.so
apc.enabled =1  
apc.include_once_override = 0 
apc.shm_size = 256 
จากนั้น สร้าง folder สำหรับ owncloud data
sudo mkdir -p /svr/http/owncloud/data
sudo chown www-data:www-data /srv/http/owncloud/data

8.) การตั้งค่า PHP 

sudo nano /etc/php5/fpm/pool.d/www.conf

เปลี่ยนบรรทัดด้านล่างนี้จาก
listen = /var/run/php5-fpm.sock
เป็น
listen = 127.0.0.1:9000

sudo nano /etc/dphys-swapfile
เปลี่ยนบรรทัดด้านล่างนี้จาก
CONF_SWAPSIZE = 100
เป็น
CONF_SWAPSIZE = 512


9.) Restart web server และ PHP

sudo /etc/init.d/php5-fpm restart
sudo /etc/init.d/nginx restart


10.) ติดตั้ง ownCloud

sudo mkdir -p /var/www/owncloud
sudo wget http://download.owncloud.com/download/5.0.11/owncloud_enterprise-5.0.11.tar.bz2
sudo tar xvf owncloud_enterprise-5.0.11.tar.bz2
sudo mv owncloud/ var/www/
sudo chown -R www-data:www-data /var/www
rm -rf owncloud owncloud-5.0.7.tar.bz2

11.) ติดตั้ง account ผู้ดูแลระบบ

เข้าไปยัง web browser และพิมพ์หมายเลข IP ของบอร์ด RPi และให้สร้าง account ผู้ดูแล





เมื่อเข้าสู้ระบบได้แล้ว หากยังติดตั้งโปรแกรมไม่ครบจะมีการแจ้งเตือน


ให้เลือกไปยัง installation guide และทำตามคำแนะนำ(ถ้าหากใช้ windows ให้นำหน้าคำสั่ง command line ด้วย sudo)



เมื่อติดตั้งเสร็จแล้วจะสามารถเข้าใช้งาน ownCloud ได้ตามปกติ


ปัญหาและอุปสรรค

    ในช่วงที่ทำการดาวน์โหลด package สำหรับซอฟต์แวร์อย่าง openSSL,Nginx และ php5 โดยการใช้ Internet ของมหาวิทยาลัยในบางเว็บไซต์ไม่สามารถทำการดาวน์โหลดได้ จึงไม่สามารถเรียกไฟล์ที่ต้องใช้มากำหนดค่าเริ่มต้นได้ทำให้การติดตั้ง cloud บนบอร์ด RPi ไม่สำเร็จ

การแก้ปัญหาและอุปสรรค

    การที่ไม่สามารถดาวน์โหลด package ข้างต้นได้นั้นคาดว่าน่าจะมีสาเหตุมาจากระบบ Internet ของมหาวิยาลัยมีการป้องกันไม่ให้เข้าใช้บางเว็บไซต์ จึงทดลองเปลี่ยนสถานที่การใช้ Internet ซึ่งสามารถดาวน์โหลดได้ครบทุก package และสามารถติดตั้งระบบ cloud ได้


อ้างอิงจาก : How to setup your own cloud on Raspberry Pi





Thursday, May 22, 2014

Work process- การเตรียมฮาร์ดแวร์และซอฟต์แวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi Model B

ขั้นตอนการเตรียมฮาร์ดแวร์และซอฟต์แวร์เพื่อเริ่มต้นใช้งานบอร์ด Raspberry Pi Model B


  • ดูได้จากบทความจาก Embeded System Lab(ESL) @ KMUTNB

การทดลองการเตรียมฮาร์ดแวร์และซอฟต์แวร์

ระบบปฏิบัติการที่ใช้

  • Windows 7

อุปกรณ์ฮาร์แวร์มีดังนี้

  • บอร์ด Raspberry Pi Model B
  • 5V adapter + USB cable
  • SDHC card ขนาด 4 GB
  • สาย LAN
  • Wireless Router

โปรแกรมที่ใช้มีดังนี้

  • SD Formatter 4.0 
  • Win32 Disk Imager
  • PuTTY for Windows
  • Angry IP Scanner
  • Wheezy Raspbian Image File: 2014-01-07-wheezy-raspbian.img

ขั้นตอนการทำงาน 

    สามารถดูรายละเอียดเพิ่มเติมได้ที่

1.) Download โปรแกรมที่ต้องใช้งาน

2.) ทำการ Format SDHC card ที่เตรียมไว้ด้วยโปรแกรม SD Formattet 4.0 และเลือก option ที่ต้องการจะ format ซึ่งมีให้เลือก 3 แบบ คือ
     - Quick เมื่อ format ไปแล้วสามารถกู้คืนข้อมูลได้
     - Full(erase) เมื่อ format ไปแล้วสามารถกู้คืนได้บางส่วน
     - Full(overwrite) เมือ format ไปแล้วไม่สามารถกู้คืนได้
    ซึ่งในการทำงานนี้เลือกการ format แบบ Quick  และ เลือก Format Size Adjustment ให้เป็น ON

3.)ติดตั้งระบบปฏิบัติการ Wheey Raspbian โดยการใส่ SCHD card ในช่องสำหรับ SD การ์ดของเครื่องคอมพิวเตอร์ จากนั้นจึงเรียกโปรแกรม Win32 Disk Imager และเลือกไดรฟ์ให้ตรงกับ SD การ์ดที่เตรียมไว้
จากนั้นจึงเลือก ไฟล์ 2014-01-07-wheezy-raspbian.img แล้วกด write

4.)บูทระบบ โดยการนำ SD การ์ด ที่ได้จากขั้นตอนข้างต้น มาเสียบในช่องสำหรับหน่วยความจำของบอร์ด RPi และจ่ายไฟเลี้ยง +5V ให้กับบอร์ดด้วย 5V adapter + USB cable และต่อสาย LAN เข้ากับ router ที่มีวง LAN เดียวกับ คอมพิวเตอร์ที่จะใช้งาน เมื่อเชื่อมต่อแล้วบอร์ดจะเริ่มทำงานโดยสังเกตได้จากหลอด LED จะเริ่มกระพริบ

5.)เปิดโปรแกรม Angry IP Scaner เพื่อค้นหา IP ของบอร์ด RPi โดยอันดับแรกเลือกเมนู Tools >> Fetchers และเลือก MAC ADDRESS ในช่องทางซ้าย ต่อมาเลือก IP range แล้วกดปุ่ม start หาอุปกรณ์จากเลข MAC ADDRESS ที่ขึ้นต้นด้วย B8:27:EB:xx:xx:xx  แล้วดูว่า ตรงกับหมายเลข IP ADDRESS อะไร

6.)เข้าใช้งาน Raspberry Pi แบบ Remote ผ่าน SSH ด้วยโปรแกรม Putty โดยใส่หมายเลข IP ADDRESS ที่ได้มาในช่อง Host name เมื่อเชื่อมต่อได้แล้วให้ทำการ login ด้วยชื่อผู้ใช้ pi และ password raspberry

7.)กำหนดค่าตัวเลือกในการใช้งานสำหรับ Wheezy Raspbian ด้วยคำสั่ง sudo raspi-config แล้ว enter จะขึ้นหน้าหลักสำหรับ เมนูคำสั่งมา จากนั้นให้กำหนดค่าต่างๆ

8.)ทำการ reboot ด้วยคำสั่ง sudo reboot

9.)ปิด โปรแกรม PuTTY และเชื่อมต่อใหม่อีกครั้งแล้ว check ขนาดความจุของ SD card ด้วยคำสั่ง sudo df -h

10.) ทำการ update ข้อมูลเกี่ยวกับซอฟต์แวร์สำหรับ Wheezy Raspbian  ด้วยคำสั่ง sudo apt-get update และให้พิมพ์คำสั่ง sudo apt-get dist-upgrade รอจนกระทั่งเสร็จ

11.)ปิดระบบ โดยใช้คำสั่ง sudo shutdown -h now และรอจนหลอด LED ดับยกเว้นหลอดสีแดง จึงถอดปลั๊กแรงดันไฟเลี้ยงออก



เว็บไซต์อ้างอิงเกี่ยวกับการใช้ SD Formatter 4.0 :
การ Format SD แบบง่าย






   



Tuesday, May 20, 2014

Work Process-การขอ API Key (Android)

การขอ API Key (สำหรับการเรียกใช้ข้อมูลแผนที่ Google Map)

Google กำหนดให้นักพัฒนาต้องขอ API Key หากต้องการเรียกใช้ข้อมูลแผนที่ Google Map ใน App Android ทั้งนี้เพื่อที่ Google จะได้ตรวจสอบได้ว่าแผนที่ถูกใช้งานโดยใครบ้างและถูกนำไปใช้อย่างไร

Google APIs Console คือ เครื่องมือที่ Google ทำไว้ให้นักพัฒนาใช้บริหารจัดการการใช้งาน API ต่างๆของ google

มีขั้นตอนการขอ API Key ดังนี้

1. เริ่มต้นเข้าที่เว็ปไซต์ https://code.google.com/apis/console/ จะปรากฎหน้า Google APIs Console
* ต้องใช้บัญชีของ Google ในการดำเนินการ หากไม่มีให้สมัครแล้วทำการ Log in จะปรากฎหน้า "Start using the Google APIs console " ทำการคลิก Create Project... ดังภาพ


2. ระบบจะสร้างชื่อโปรเจ็คว่า APIs Project ขึ้นมาด้านมุมซ้ายบน ด้านล่างชื่อโปรเจ็คจะมีแถบเมนู ทำการเลือก Services  


3. ตอนนี้จะปรากฎหน้าต่าง All service ให้ทำการหา API ที่ชื่อว่า "Google Maps Android API v2" ทางด้านขวาชื่อ API จะมีสวิตซ์ สถานะ OFF ทำการ ON โดยคลิกที่สวิตซ์ ระบบจะทำการเข้าสู่การแสดงเงื่อนไขในการใช้งาน (Review terms of service) 


4. ที่หน้าเงื่อนไขในการใช้งาน (Review terms of service) ด้านล่างทำการติ้กเครื่องหมายหน้า "I Agree to these terms." แล้วกด Accept แล้วระบบจะกลับมาที่หน้าโปรเจ็คดังเดิม 


5. เลือกเมนู API Access ทางด้านซ้าย จะปรากฎหน้า API Access ด้านล่างจะมีปุ่ม Create new Android Key ... ให้ทำการคลิกแล้วจะปรากฎหน้าต่างใหม่ขึ้นมา

6. หน้าต่างใหม่จะปรากฎหน้า Configure Android Key for API Project 


This key can be deployed in your Android applications.
API requests are sent directly to Google from your clients' Android devices. Google verifies that each request originates from an Android application that matches one of the certificate SHA1 fingerprints and package names listed below.

You can discover the SHA1 fingerprint of your developer certificate using the following command:
keytool -list -v -keystore mystore.keystore


เราจะต้องนำข้อมูลที่เรียกว่า SHA1 fingerprint จาก certificate ที่ใช้ในการ sign app ตามด้วย package name ที่ต้องการใช้ API ตามหลัง 
เนื่องจากโปรแกรม Eclipse ได้มีการพัฒนาทำให้สามารถดูได้จากโปรแกรมได้เลย แต่ในที่นี้จะแนะนำวิธีในการหา SHA1 fingerprint สองวิธี 

วิธีที่ 1 (Eclipse เวอร์ชั่นเก่า)
ไปที่ Command Line แล้วเข้า Directory Folder Bin ใน โปรแกรม java 
ตัวอย่างเช่น cd C:\Program Files\Java\jdk1.7.0_45\bin (ที่อยู่หรือเลขเวอร์ชั่น JDK อยู่ที่เครื่องของแต่ละบุคคลไม่เหมือนกัน)
แล้วพิมพ์คำสั่งดังนี้ 
keytool -list -v -keystore "ชื่อ Path ของไฟล์ debug.keystore" -alias androiddebugkey -storepass android -keypass android 
*ไฟล์ debug.keystore คือไฟล์ที่เก็บ Debug Certificate ที่ ADT นำมา sign ให้กับแอพให้เราในช่วงพัฒนา โดยชือ Path นี้สามารถตรวจสอบได้จาก Eclipse Window>Preference>Android>Build>Default debug keystore 
ตัวอย่างเช่น keytool -list -v -keystore "C:\Users\USER\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 
จะปรากฎ Certificate fingerprints ดังภาพ


ก็จะได้ตัวเลขของ SHA1 fingerprint มา 

วิธีที่ 2 (Eclipse เวอร์ชั่นใหม่ v22.6.2-1085508 ที่ผู้เขียนใช้ปัจจุบัน)

เข้าที่โปรแกรม Eclipse ที่เมนูบาร์เลือก Window>Preference>Android>Build


จากรูปจะเห็นว่าจะบอกที่อยู่ของ debug.keystore ที่วิธีที่ 1 และบอก SHA1 fingerprint พร้อมทั้ง MD5 fingerprint พร้อมเสร็จ โดยที่หมายเลขของ SHA1 fingerprint ทั้งสองวิธีมีเลขเหมือนกัน

7. นำเลข SHA1 fingerprint ตามด้วยชื่อเครื่องหมาย semicolon แล้วจึงตามด้วยชื่อ package ของ Appication ที่จะนำมาสร้าง มากรอกในหน้าต่าง Configure Android Key for API Project แล้วคลิก Create 


8. หลังจากที่กด Create ก็จะมีกรอบ Key for Android apps (with certificates) เพิ่มขึ้นมา ซึ่งภายในกรอบจะปรากฏหมายเลข API Key  ซึ่งหมายเลข API นี้จะนำไปใช้ในโปรเจ็คแอนดรอยด์ต่อไป 





แผนการดำเนินงาน

การประยุกต์ใช้งานโทรศัพท์มือถือเพื่อการวัดและบันทึกข้อมูลจากเซนเซอร์สำหรับจักรยาน** เน้นการพัฒนาซอฟท์แวร์บนมือถือ Android และการใช้งาน Cloud Service


สมาชิก

นางสาวศิริวิมล   สุนทร              54-010126-3024-0
นายสัญชัย         เจียเจษฎากุล  54-010126-3028-2


โจทย์

การประยุกต์ใช้งานโทรศัพท์มือถือเพื่อการวัดและบันทึกข้อมูลจากเซนเซอร์สำหรับจักรยาน
** เน้นการพัฒนาซอฟท์แวร์บนมือถือ Android และการใช้งาน Cloud Service


ขอบเขตของงาน ข้อกำหนดสำหรับออกแบบและพัฒนาระบบในเบื้องต้น

·       - ศึกษาและเลือกใช้โทรศัพท์ Android (4.x) เพื่อนำมาใช้ในงาน โดยจะต้องมี GPS, เซนเซอร์วัดความเร่งสามแกน (3-axis accelerometer) เข็มทิศดิจิทัล (digital compass)  และเชื่อมต่อผ่าน 3G ได้

·      -  ศึกษาและทดลองเขียนโปรแกรมสำหรับโทรศัพท์มือถือที่ได้เลือกใช้ เพื่ออ่านพิกัดตำแหน่งจาก GPS อ่านข้อมูลจากเซนเซอร์วัดความเร่ง และเข็มทิศดิจิตอล และส่งข้อมูลดังกล่าวไปเก็บไว้ใน Cloud Server ผ่าน 3G/Internet

·      - โปรแกรมดังกล่าว จะต้องมี GUI ที่สะดวกต่อการใช้งานสำหรับผู้ใช้ เช่น มีปุ่มเริ่มต้นการบันทึกข้อมูล และหยุดการบันทึกได้ แสดงสถานะในการทำงานของระบบ ในกรณีที่เชื่อมต่อกับ Cloud Server ไม่ได้ (เช่นไม่มีสัญญาณ 3G หรือต่อเข้าอินเตอร์เนตไม่ได้ระบบสามารถเก็บข้อมูลไว้ในการ์ดความจำ micro SD ของโทรศัพท์มือถือในรูปแบบที่เหมาะสม

·       - ศึกษาการเชื่อมต่อระหว่างแอพพลิเคชั่นบนมือถือและ Cloud Server ที่ได้เลือกใช้งาน เพื่อจัดเก็บข้อมูลและดึงข้อมูลจาก Cloud Server มาแสดงผลด้วย web browser ให้อยู่ในรูปแบบของกราฟ เช่น แสดงค่าความเร่งทั้งสามแกนในช่วงเวลาที่ขี่จักรยาน หรือแสดงเส้นทางบน Google Map แบ่งแยกตามช่วงเวลาการบันทึกของการขี่จักรยาน (Bike Tour) ในแต่ละครั้ง  เป็นต้น

·       - ศึกษาการเชื่อมต่อระหว่างคอมพิมเตอร์บอร์ดเดียว (Single-Board Computer:SBC) ที่ใช้ระบบปฏิบัติการ Linux อย่างเช่น Raspberry Pi หรือ Beagle bone-Black และโทรศัพท์มือถือ Android โดยเพื่อให้ คอมพิวเตอร์ดังกล่าวสามารถเชื่อมต่ออินเตอร์เน็ต (ผ่าน Android) ทั้งแบบใช้สาย แบบไร้สายผ่าน
      Wi-Fi Hotspot

      การแบ่งงานย่อย

      1.) ศึกษาและทดลองเขียนโปรแกรมสำหรับโทรศัพท์มือถือที่เลือกใช้ เพื่ออ่านพิกัดตำแหน่งจาก GPS อ่านข้อมูลจากเซนเซอร์วัดความเร่ง2.) ศึกษาการเชื่อมต่อระหว่างแอพพลิเคชั่นบนมือถือและ Cloud Server ที่เลือกใช้งาน เพื่อจัดเก็บข้อมูล
3.) ส่งข้อมูลดังกล่าวไปเก็บไว้ใน Cloud Server และดึงจาก Cloud Server มาใช้ผ่าน 3G/Internet
4.) สร้าง GUI ที่สะดวกต่อการใช้งาน เช่นมีปุ่มเริ่มต้นการบันทึกข้อมูลและหยุดการบันทึกได้

5.) สร้างส่วนสำหรับการแสดงผลบน web browser  โดยการดึงข้อมูล จาก cloud server 

6.) ศึกษาการเชื่อมต่อระหว่างคอมพิวเตอร์บอร์ดเดียว(Single-Board Computer:SBC) ที่ใช้ระบบปฏิบัติการ Linux และโทรศัพท์มือถือ Andriod เพื่อให้คอมพิวเตอร์ดังกล้าวสามารถเชื่อมต่ออืนเตอร์เน็ตผ่าน  Wi-Fi Hotspot


   แผนการทำงาน



   

      อุปกรณ์หรือฮาร์ดแวร์ที่ใช้

  •       บอร์ด Raspberry Pi Model B
  •       5V USB Adapter + USB cable(micro-USB)
  •       SD/ SDHC card / microSD 8 GB
  •       สาย LAN/ RJ45 connector
  •       Network Switch ใช้สำหรับเชื่อมต่อ RPi เข้าสู่ระบบ LAN/WLAN
  •       โทรศัพท์มือถือ Andriod(4.x)

     ซอฟต์แวร์หรือโปรแกรมที่จะนำมาใช้มีดังนี้

  •       SD Formatter 4.0 for SD/SDHC/SDXC
  •       Win32 Disk Imager
  •       PuTTY for Windows
  •       Angry IP Scanner
  •       Wheezy Raspbian Image File: 2014-01-07-wheezy-raspbian.zip
  •       Eclipse


Monday, May 19, 2014

การติดตั้ง Google Play Services SDK ใน Eclipse

การติดตั้ง Google Play Services SDK ใน Eclipse (ใช้สำหรับ API ต่างๆที่เกี่ยวกับ Google Maps)

1. ที่ Eclipse ที่ Toolbar คลิกที่ไอคอนของ Andriod SDK Manager หรือ ไปที่ Menu bar เลือก Windows > Android SDK Manager ดังภาพ


2. ภายในหน้าต่าง Android SDK Manager ส่วนของ Package Name ให้เลือกที่หัวข้อ Extras  แล้วทำการเลือก Google Play Services แล้วคลิก Install package ทำการดาวน์โหลดจนเสร็จสมบูรณ์


3. Google Play Service จะถูกติดตั้งอยู่ที่ Folder ของ 
<ที่อยู่ของ Android-Sdk Folder ที่เราทำการติดตั้ง> \extras\google\google_play_service   


4. ทำการ Import Library Project ของ Google Play Services เข้ามาใน Eclipse โดยการคลิกที่่ Menu File>Import 


5. เลือก Android > Existing Android Code Into Workspace แล้วคลิก Next 


6. ที่หัวข้อ Root Directory คลิกปุ่ม Browse.. แล้วเข้าไปเลือกที่ Folder <ที่อยู่ของ Android-Sdk Folder ที่เราทำการติดตั้ง> \extras\google\google_play_service\libproject แล้วกด ok 


7. เมื่อกด Ok จะปรากฎ google-play-service_lib ในหัวข้อ Project จากนั้นทำติ้กเครื่องหมายหน้า Copy projects into workspace แล้วคลิก Finish 


Library Project ของ Google Play Services จะถูก Import เข้ามาใน Eclipse หลังจากนั้นเมื่อเราต้องการสร้าโปรเจ็คแอนดรอยด์ที่เรียกใช้ Maps API เราจะต้องไปตั้งค่าโปรเจคให้อ้างอิงไปยัง Library Project ดังกล่าว ซึ่งจะไว้อธิบายในบล็อกถัดไป 




Cloud Technology

    Cloud Technology” หรือ “ระบบคอมพิวเตอร์แบบหมู่เมฆ” ซึ่งเป็นการนำทรัพยากรทางด้าน Computer ทั้ง Hardware และSoftware มาแบ่งปันกันใช้งาน หรือ ให้บริการต่างๆ ระบบเครือข่าย และระบบอินเทอร์เน็ต โดยเราสามารถใช้งาน หรือขอใช้บริการต่างๆผ่าน WEB Browser หรือ โปรแกรมอัตโนมัติต่างๆ ที่เชื่อมต่อระหว่างอุปกรณ์คอมพิวเตอร์ กับ ระบบคอมพิวเตอร์แบบหมู่เมฆ


ความหมายของ  " Cloud "
    สถาบันมาตรฐานและเทคโนโลยีแห่งชาติของสหรัฐอเมริกาให้คำจำกัดความ "cloud" ว่า มันเป็นอุปลักษณ์ จากคำในภาษาอังกฤษที่แปลว่า เมฆกล่าวถึงอินเทอร์เน็ตโดยรวม ในรูปของโครงสร้างพื้นฐาน (เหมือนระบบไฟฟ้า ประปา) ที่พร้อมให้บริการกับผู้ใช้งานเมื่อมีความต้องการใช้ ผู้ให้บริการการประมวลผลแบบกลุ่มเมฆส่วนใหญ่ จะให้บริการในลักษณะของเว็บแอปพลิเคชัน โดยให้ผู้ใช้ทำงานผ่านเว็บเบราว์เซอร์ ขณะเดียวกันซอฟต์แวร์และข้อมูลทั้งหมดจะถูกเก็บไว้บนเซิร์ฟเวอร์ของผู้ให้บริการ
    การประมวลผลแบบกลุ่มเมฆนั้น ถูกอธิบายถึงโมเดลรูปแบบใหม่ของเทคโนโลยีสารสนเทศในการใช้งานบนอินเทอร์เน็ตที่เน้นการขยายตัวได้อย่างยืดหยุ่น สามารถที่จะปรับขนาดได้ตามความต้องการของผู้ใช้ และมีการจัดสรรทรัพยากรโดยเน้นการทำงานระยะไกลอย่างง่าย ที่ใช้อินเทอร์เน็ตเป็นโครงสร้างพื้นฐาน


ตัวอย่างของ Technology Cloud
    ตัวอย่างของการประมวลผลแบบกลุ่มเมฆที่เป็นที่รู้จัก เช่น ยูทูบ โดยที่ผู้ใช้สามารถเก็บวิดีโอออนไลน์ได้ โดยไม่ต้องมีความรู้ในการสร้างระบบวิดีโอออนไลน์
    ความจริงแล้ว Cloud computing ไม่ใช่ของใหม่ และมีมานานแล้ว แต่การใช้อาจจะถูกจำกัดอยู่ในเรื่องการบริการทางอินเทอร์เน็ตที่มีผู้ใช้จำนวน เช่น Web based email (Hotmail, Yahoo, และอื่นๆ) ต่อมามีการขยายขอบเขตการใช้มากยิ่งขึ้นเช่น เครือข่ายประชาสังคม หรือ Social network (YouTube, face book, และ application  ของ Google เป็นต้น)  Onlineapplication เหล่านี้ ก็คือแอปพลิเคชั่นบน Cloud Computing ที่ทำให้เข้าถึงข้อมูล ทุกที่ ทุกเวลา และทุกอุปกรณ์เพียงแต่ Cloud computing ที่ใช้อยู่เป็น Cloud Computing ที่มีทั้งส่วนที่ไม่เสียค่าบริการใดๆ และส่วนที่ต้องเสียค่าบริการ เมื่อเทคโนโลยีทางด้าน Online Application มีความหลากหลายมากขึ้น สามารถขยายขอบเขต หรือ รูปแบบการบริการที่หลากหลายมาขึ้น “Cloud computing” จึงขยายการใช้งานจากระดับบุคคล ไปสู่การใช้งานในระดับองค์กร ไม่ว่าจะเป็นองค์กรขนาดเล็ก และขนาดใหญ่มากขึ้น การขยายตัวดังกล่าว ทำให้เกิด แนวคิด หรือ การใช้งานผ่าน “Cloud computing”แพร่หลายมากขึ้น


การบริการบนระบบ
    การบริการบนระบบการประมวลผลแบบกลุ่มเมฆสามารถ แบ่งรูปแบบของชั้น ดังนี้
    การบริการบนระบบการประมวลผลแบบกลุ่มเมฆสามารถ แบ่งรูปแบบของชั้น ดังนี้
·        การให้บริการซอฟต์แวร์ หรือ Software as a Service (SaaS)
        จะให้บริการการประมวลผลแอปพลิเคชันที่แม่ข่ายของผู้ให้บริการ และเปิดให้การบริการทางด้านซอฟต์แวร์ต่างๆ
·        การให้บริการแพลตฟอร์ม หรือ Platform as a Service (PaaS)
        เป็นการประมวลผล ซึ่งมีระบบปฏิบัติการ และการสนับสนุนเว็บแอปพลิเคชันเข้ามาร่วมด้วย
·        การให้บริการโครงสร้างพื้นฐาน หรือ Infrastructure as a Service (IaaS)
        เป็นการให้บริการเฉพาะโครงสร้างพื้นฐาน มีประโยชน์ในการประมวลผลทรัพยากรจำนวนมาก
·        บริการระบบจัดเก็บข้อมูล หรือ data Storage as a Service (dSaaS)
        ระบบการจัดเก็บข้อมูลที่มีขนาดใหญ่ไม่จำกัด รองรับการสืบค้นและการจัดการข้อมูลขั้นสูง
·        บริการร่วมรวมลำดับความเชื่อมโยง หรือ Composite Service (CaaS)
        คือส่วนทำหน้าที่รวมโปรแกรมประยุกต์ หรือจัดลำดับการเชื่อมโยงแบบ workflow ข้ามเครือข่าย รวมถึงการจัดการด้านความปลอดภัย

ที่มา 
Technology Cloud
Wikipedia-Technology Cloud

Tuesday, May 13, 2014

Accelerometer : เซนเซอร์วัดความเอียง

Accelerometer จะวัดความเร่งในการเอียงเครื่องทั้ง 3 ทิศ สำหรับแกน XYZ บนอุปกรณ์แอนดรอยด์ใดๆจะมีตำแหน่งดังนี้




 สำหรับภาพด้านซ้าย แกน X กับ Y จะขึ้นอยู่กับตัวอุปกรณ์แอนดรอยด์ ในภาพข้างบนนี้จะเป็นเครื่องที่เป็นแทบเลตที่เป็น X-Large หรือเครื่องที่หน้าจอใหญ่กว่า 7 นิ้วขึ้นไป (ไม่รวม 7 นิ้ว) มีแกน X ตามแนวกว้างของจอ และแกน Y ตามแนวสูง ส่วนภาพข้างขวาคือแกน XYZ บนเครื่องที่เป็นมือถือและแทบเลตที่มีขนาดหน้าจอ Large หรือตั้งแต่ 7 นิ้วลงมา จะเห็นว่าแนวแกน X กับ Y ไม่เหมือนกับบนแทบเลต X-Large เพราะโดยธรรมชาติแล้ว มือถือและแทบเลตขนาด 7 นิ้วลงมา การใช้งานเครื่องจะอยู่ในลักษณะการถือแนวตั้งเป็นหลัก

การวัดความเร่งในการเอียงก็คือการเอียงในแต่ละทิศที่จะมีลักษณะการเอียงในทิศทางต่างๆ ดังนี้


สังเกตว่า แกน X และ Y จะมีแค่ขึ้นลงเท่านั้น แต่แกน Z จะพิเศษกว่าคือมีทั้งสองแกนที่เคลื่อนที่
ดังนั้นเวลาที่เอียงไปทางแกน X แกน Z ก็จะเอียงด้วย และเมื่อเอียงไปทางแกน Y แกน Z ก็จะเอียงตาม


Accelerometer จะวัดความเร่งในแต่ละแกน พูดง่ายๆก็คือ เวลาที่เครื่องอยู่นิ่งๆไม่มีการขยับ ค่าแต่ละแกนก็เป็น 0 แต่ในความเป็นจริงยังมีแรงโน่มถ่วงของโลกอยู่ด้วย ดังนั้นค่าจาก Accelerometer จึงไม่ได้เป็น 0 ทั้งหมด เวลาไม่เคลื่อนที่ ถ้าเราตั้งเครื่องให้แกน Z ตั้งฉากกับพื้นโลก แกน X และ Y จะเป็น 0 แต่ว่าแกน Z จะไม่เป็น 0 เพราะมีแรงโน้มถ่วงของโลกกระทำอยู่ ดังนั้นค่าที่ได้จากแกน Z จะเป็น 9.8 m/s^2 แต่มันเป็นค่าในอุดมคติ


ในกรณีที่อยู่นิ่งๆ แต่แกน XYZ ไม่ได้ตั้งฉากกับพื้นโลกโดยตรง ค่าแรงโน้มถ่วงของโลกที่กระทำกับแต่ละแกนของ Accelerometer ก็จะกระจายออกไปในแต่ละแกน ขึ้นอยู่กับการเอียงนั้นๆ สุดท้ายเมื่อคิดเวคเตอร์ลัพธ์ที่ตั้งฉากกับพื้นโลกก็มีค่าประมาณ 9.8 เสมอ