公告版位

目的

在手機配對RPI2的BlueZ時,一直失敗,找了資料發現要改/usr/bin/bluez-simple-agent的capability 才可以配對?所以針對這個參數來了解BlueZ以及BlueTooth的相互關係

BlueTooth的SSP定義了安全配對的方法

底下資訊擷取自wiki


Secure Simple Pairing (SSP): This is required by Bluetooth v2.1, although a Bluetooth v2.1 device may only use legacy pairing to interoperate with a v2.0 or earlier device. Secure Simple Pairing uses a form of public key cryptography, and some types can help protect against man in the middle, or MITM attacks. SSP has the following characteristics:

Just works:

As the name implies, this method just works, with no user interaction. However, a device may prompt the user to confirm the pairing process. This method is typically used by headsets with very limited IO capabilities, and is more secure than the fixed PIN mechanism this limited set of devices uses for legacy pairing. This method provides no man-in-the-middle (MITM) protection.

文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

目標

工作需要,所以快速的找了一些Openstack的資料,預期先了解這套系統的大概,在看下一步要做什麼。

OpenStack基本介紹

* OpenStack架構圖及交互性

底下的圖表示了基本的架構圖以及各元件的交互性。由於Openstack的主要目的在建立雲端機房,讓運營人員或機房維護人員可以快速建立運算節點,所以主要運行都是繞著Nova在著墨。


openstack-conceptual-arch-folsom


文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

目的

在使用者第一次設備,有很大機會不知道該設備的網路ip是多少,這時候語音說出來就是一個選項了, 之前開發了google TTS,但是要連到Internet才可使用,不是很完美的方式。 參考http://elinux.org/RPi_Text_to_Speech_(Speech_Synthesis)

最後選用了espeak來當做發音的工具,更重要的,是他可以選發中文的音,這真是太神奇了

espeak -s 150 -v zh -g 50 -p 30 "10 點 5 點 32 點 254"
hostname -I | espeak -s 150 -v zh -g 50 -p 30 --stdin

文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

escape()

採用ISO Latin字符集對指定的字符串進行編碼。所有的空格符、標點符號、特殊字符以及其他非ASCII字符都將被轉化成%xx格式的字符編碼(xx等於該字符在字符集表裡面的編碼的16進制數字)。比如,空格符對應的編碼是%20。 不會被此方法編碼的字符: @ * / +

encodeURI()

把URI字符串採用UTF-8編碼格式轉化成escape格式的字符串。 不會被此方法編碼的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent()

把URI字符串採用UTF-8編碼格式轉化成 escape格式的字符串。與encodeURI()相比,這個方法將對更多的字符進行編碼,比如 / 等字符。所以如果字符串裡面包含了URI的幾個部分的話,不能用這個方法來進行編碼,否則 / 字符被編碼之後URL將顯示錯誤。 不會被此方法編碼的字符:! * ( ) '

結論

* 只要是使用者會輸入的欄位,一律使用encodeURIComponent來避免不可預期的困擾

$.serialize()

若是使用JQuery Ajax的.serialize(),該函式會自動做好encoded的動作

The .serialize() method creates a text string in standard URL-encoded notation.

文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

* 很多的應用
https://learn.adafruit.com/category/raspberry-pi

* 介紹USB AUDIO卡的安裝以及raspberry中alsa的設定方式
https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/instructions

* 介紹如何使用mpc/mpd來讓raspberry當音響盒的
https://learn.adafruit.com/raspberry-pi-radio-player-with-touchscreen/installing-the-music-player-daemon

* NAS
http://www.openmediavault.org/

... 持續更新 ...


文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

* 在RegExp裡面包的就是需要對什麼樣的字元進行比對

For example: "a-z" 就會把所有a-z的單字消除

function stripscript(s) {
    var pattern = new RegExp("[]")
    var rs = "";
    for (var i = 0; i 


PS. 如要消除"\" 這個特殊符號,單寫"\\" or "[\\]"會有RegExp error,所以就不用使用RegExp改用字串比對即可
 rs = rs+s.substr(i, 1).replace('\\', '');


PS. 做了些實驗replace不會自動講所有match的替換,只會換依次,所以還是要使用substr的方式來換

參考文章


http://blog.roodo.com/rocksaying/archives/2670695.html
http://programmermagazine.github.io/201307/htm/article2.html
文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

目標

使用node.js裡的套件googleapis來完成google API的存取測試

1. 安裝套件

npm install googleapis

2. 申請Google Developer

連到Google Developers開立Developer權限囉!

3. 建立憑證

花了些時間看了GOOGLE提供的幾種OAUTH的方法,最後由於應用的方式,所以選擇了"Using OAuth 2.0 for Installed Applications"

device-auth-decision-installedapp

文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

隨著現在超過數十萬個套件在NPM上,常常發現有些套件,有著非常接近自己想要的功能,但是卻有些微的Bug存在。常言到,出來寫程式的,誰人沒BUG?


現在,這取決於誰在維護這個套件,比較簡單的方式,可以通過開一個GitHub的Issue,並等待作者解決了這個問題。另一個方法,則是實際捲起袖子,自己解決問題。


這篇文章,在描述如何使用github來達成修正npm套件小問題,進而將修改過的套件套用在自己的應用裡

文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

目標

做些簡單的操作測試,確認node-dbox存取dropbox的方式

步驟

1. 開立dropbox的developer帳號

2. 在App console建立一個APP

dropbox-appconsole

3. 建立完成後取得App Key 以及App secret

dropbox-appconsole2

4. 在node.js環境下,下載dbox

npm install dbox

5. 使用以下的codes取得requesttoken

APP Key以及App secret要填上申請到的值

var dbox = require("dbox");
var app = dbox.app({
    "app_key": "074qsqsxxxxxx7",
    "app_secret": "nh3fq57z1xxxxxx"
});

app.requesttoken(function(status, request_token) {
    console.log(request_token);
}

執行後會得到以下訊息

文章標籤

Perry Wu 發表在 痞客邦 留言(0) 人氣()

原理

就是git的bare倉庫跟真正開發的環境都放在local,再開發環境上commit的code push上bare倉庫後,就會被dropbox sync到雲端

如果有協同工作人員,就將剛bare倉庫分享給他們

NOTE: 這樣的分享機制只適合個人使用,否則很容易產生bare倉庫conflict!!

參考圖示

git_dropbox

Dropbox部分

1. mkdir OurProject
2. cd OurProject 
    git init –bare .
3. Make sure OurProject is in Dropbox's sync folder

Git部份

1. mkdir MyProject
2. cd MyProject
    git init
3. git remote add origin Dropbox的目錄/OurProject
4. git add .
5. git commit –m “我的註解"
6. git push origin master

Perry Wu 發表在 痞客邦 留言(0) 人氣()