2015年9月16日水曜日

Sense HATで気温・湿度・気圧を取得してみる

初期設定にひきつづき、Sense HATに搭載されているセンサーを使っていろいろやってみようと思います。
まずは、Sense HAT API Documentを参考に、各センサーから値を取得してコンソールに表示してみます。

1.湿度(Humidity)
 下記のような記述で取れるようです。
 簡単ですねー。
sense = SenseHat()
humidity = sense.get_humidity()
print(“Humidity: %s %%rH” % humidity)



2.気温(Temperature)
 湿度と同様SenseHatからget_〜で取れます。
sense = SenseHat()
temperature = sense.get_temperature()
print(“Temperature: %s C” % temperature)



3.気圧(Pressure)
 もうわかりますねー
sense = SenseHat()
pressure = sense.get_pressure()
print(“Pressure: %s Millibars” % pressure)



とても簡単に取得できてしまいます。
あとはこれを利用して何を作るか考えることにしましょう。

sampleコードをgithubに置いておきます。
RasPi_SenseHAT_sample

2015年9月15日火曜日

Raspberry Pi Sense HAT使ってみた




RaspberryPI Sense HATとは、こちらの公式サイトに詳細のっていますが、
日本語で関連ページがまだ少ないので、メモ代わりに書いておこうと思います。


Sense HATはRaspberry Piのadd-on boardです。
Astro Pi mission用に特別に作られました。
(2015年12月国際宇宙ステーションに持ち込まれます)
日本ではRSコンポーネンツ等で購入することができます。

Sense HATは”8×8 RGB LED”、”5ボタンジョイスティック”、各種センサーを搭載しています。
  • Gyroscope(ジャイロ)
  • Magnetometer(磁力計)
  • Accelerometer(加速度センサー)
  • Temperature(温度センサー)
  • Barometric pressure(気圧センサー)
  • Humidity(湿度センサー)
Raspberry Piから簡単にアクセスできるPython libraryが用意されています。
それでは、Sense HATをセッティングしサンプルを動作させるところまでやってみます。

sudo apt-get update
sudo apt-get install sense-hat
sudo pip-3.2 install pillow
sudo reboot

インストール完了し再起動したらサンプルコードをhomeディレクトリにコピーしておきます。

cp /usr/src/sense-hat/examples ~/ -a

いよいよサンプル動作確認です。

python ~/examples/python-sense-hat/text_scroll.py 

8×8 RGB LEDに”One small step for Pi!”と流れて表示されるはずです。
他にもサンプルがあるので試してみると良いでしょう。
  • colour_cycle.py
  • rotation.py
  • space_invader.py
  • compass.py
  • rainbow.py
もちろんこれらのサンプルとSense Hat Documentを参照して、
独自の機能を実装して楽しみましょう!

2015年9月1日火曜日

ThinkPad X201にUbuntu14.04 LTSいれた後の設定メモ

1.middle button無効にする

下記ファイルを編集。

sudo vi /usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf
「Option "EmulateWheelTimeout" "50"」を追加。
Section "InputClass"
        Identifier      "trackpoint catchall"
        MatchIsPointer  "true"
        MatchProduct    "TrackPoint|DualPoint Stick"
        MatchDevicePath "/dev/input/event*"
        Option  "Emulate3Buttons"       "true"
        Option  "EmulateWheel"  "true"
        Option  "EmulateWheelButton"    "2"
        Option  "EmulateWheelTimeout"   "50"
        Option  "XAxisMapping"  "6 7"
        Option  "YAxisMapping"  "4 5"
EndSection

 参考サイト

2.ワークスーペース有効にする

[システム設定] -> [外観] -> [挙動] -> [ワークスペースを有効にする]

3.マルチモニター間のポインタ移動をスムーズにする

[システム設定] -> [ディスプレイ] -> [ディスプレイを隣接する]を[オフ]に設定する。



gitインストール

初期設定

git config --global user.email "Your email"
git config --global user.name "Your name"
git config --global http.sslVerify false
参考サイト1
参考サイト2

java8インストール

eclipseインストール

参考サイト

eclipse PluginのDBViewerインストール



atomエディタインストール

参考サイト




2014年6月7日土曜日

WindowsでPlayframework使うメモ

仕事でplayframeworkを使用してwebアプリを作っていました。
ver2.2.2で忘れないように書き留めておこうと思います。

まず、インストールですが新しいのと古いので2通りあるようです。

2.2.xまではzipファイルを落として、展開してcmdから実行する方法でした。
2.3.x以降はTypsafeActivator というブラウザベースのツールを使用して操作するようです。(まだ調べ中)

とりあえず今は古いやり方でいきます。
ここからお目当てのversionのzipファイルを落として展開します。
(展開する場所はパスにスペースを含まない場所にしておいた方が良いそうです。)
そしてcmdを起動し、展開したplay.batが存在するフォルダにcdで移動します。
play help

とすると
ちゃんと起動しました。

次に動作確認用webアプリを作成してみます。
play new myApp


 アプリケーション名を確認してきたので
myApp -> Enter

ScalaかJavaかどっちがいい?と聞いてきたのでJavaを選びました。
2 -> Enter

これで新しいアプリケーションができました。
cd myAppで移動しビルドしてみます。
play


下記のようなJava VMのheap不足エラーが出たので対処しないといけないみたいです。


Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.


play-2.2.3\framework\build.batをエディタで編集します。
-Xmxを少し減らします。


java -Xms512M -Xmx768M


再度playと実行するとうまくいきました。

アプリケーションを起動するには


run




2011年2月10日木曜日

slim3 + JSONICメモ3



前回slim3+JSONICメモ2のエントリーでRESTfulでAjaxなCRUDアプリの実装内容をメモ。
タイトルと説明を入力して登録、一覧リストに表示された行を選択して
編集→更新/削除と動作します。
もちろんデータはBigTableへ反映されています。
こちらからアプリを試せます。

前回と同様にJSONICのRESTサーブレットを使用してコントローラを実装します。
JSONICのRESTサーブレットを使用すると、リクエストからの値をJSON形式で受取る事ができます。
RESTサーブレットが変換してくれます。
そして下記のようなHTTPメソッドに対応したメソッドをコントローラに用意すれば、
javascript側でHTTPメソッドを変えて投げてやれば対応したメソッドを実行してくれます。

GETfind()
POSTcreate()
PUTupdate()
DELETEdelete()
※DELETEのみPOSTでクエリ変数に"?_method=DELETEとします。

使用できるようにするにはweb.xmlに設定が必要です。
前前回のエントリー参照
今回はユニットテストは無視です。

それでは下記の順に作っていきます。

1.IndexController ← (slim3のbuld.xmlで生成。初回アクセス時に呼ばれる)
2.MyReferenceModel ← (永続化するデータモデル)
3.MyReferenceService ← (CRUD処理するサービス)
4.index.jsp ← (アプリケーション画面)
5.MyRefRESTfulController ← (新規に作成するコントローラクラス)
6.common.js ← (クライアント側を制御するjavascript)

1.IndexController


slim3のbuild.xml・gen-controllerを実行し、IndexControllerを生成します。

内容は初回にアクセスされた時、サービスからリストを取得しJSON形式に変換し、
"jsonList"という名前でJSON文字列をリクエストにセットし、"index.jsp"へforwardするだけ。

public class IndexController extends Controller {

    private MyReferenceService service = new MyReferenceService();

    @Override
    public Navigation run() throws Exception {

        List list = service.getMyReferenceList();

        String jsonData = JSON.encode(list);
        requestScope("jsonList", jsonData);

        return forward("index.jsp");
    }
}

この時点でサービス・モデルはまだないので順次作っていきます。

2.MyReferenceModel


slim3のbuild.xml・gen-modelを実行し、MyReferenceModelを生成します。
生成するとserialVersionUIDとkeyとversionのフィールドのみ出来ています。
今回は下記のようにフィールドを追加しgetter/setterを追加します。

@Model(schemaVersion = 1)
public class MyReferenceModel implements Serializable {

    private static final long serialVersionUID = 1L;

    @Attribute(primaryKey = true)
    private Key key;

    @Attribute(version = true)
    private Long version;

    @Attribute(persistent=false)
    private String strKey;

    private String title;

    private String description;

    private Date createDate = new Date();

・・・

    public void setStrKey(String strKey) {
        this.strKey = strKey;
        // key文字列を設定
        if (this.key != null) {
            this.strKey = KeyFactory.keyToString(this.key);
        }
    }

・・・

    public void setKey(Key key) {
        this.key = key;
        // key文字列を設定
        if (key != null) {
            this.strKey = KeyFactory.keyToString(key);
        }
    }

・・・


strKeyフィールドに"@Attribute(persistent=false)"というアノテーションを追加しています。
これはこのフィールドのみ永続化対象としない設定です。
keyとstrKeyのsetterメソッドを少し追加します。

com.google.appengine.api.datastore.Key型を文字列にエンコードして扱う必要があり、
通常のWebアプリケーションであれば、jspではslim3・JSTLファンクション"${f:h(xxx)}"で
KeyをBase64エンコードしたり、コントローラでは"asKey()"メソッドなど使えば簡単に扱えます。
今回はJSONとして送受信したいので、ちょっと現状は簡単に使えなさそうです。
(近いうちにslim3もJSON対応してくるでしょうね。)

なので、JSON内にBase64エンコードされたKey文字列を保持してやる必要があり、
strKeyフィールドを用意しています。(無理矢理な方法ですが)
で、Keyをsetする時にstrKeyも同時に設定する処理を追加しています。


今回はここまでで、次回サービスの実装を行いたいと思います。



参考サイト:
blazedsを使用の内容ですが、modelでKey文字列保持して永続化対象させないところを参考にさせて頂きました。↓↓↓
[blazeds][slim3] アップデート(更新処理)が、できま10(テン)!

2011年2月8日火曜日

slim3 + JSONICメモ2

slim3 + JSONIC でCRUD実装してましたのでメモ。
以前にslim3 + JSONICで試しに作ったものをベースに作りました。

とりあえず動くものはこちら
javascriptでCRUD処理を非同期に行っていて画面遷移が発生しません。

はまったのは、GAE環境ではJSONIC・RESTサーブレットのHTTP/DELETEメソッド送信時、削除処理してくれませんでした。
(ローカルでは普通にDELETEできるのに。)
そこで、JSONIC・RESTサーブレットで用意されている

"PUT/DELETEが使えない場合があります。そのような場合の代替手段として、クエリ変数に「_method=HTTP Method名」を指定することもできます。"


というのを参考に、DELETEの場合のみPOST+クエリ変数追加にして試したところうまくいきました。
これが正解かどうかはわかりませんが。
あとはControllerにfind(),create(Xxxx model),update(Xxxx mode),delete(Xxxx model)を用意。
RESTサーブレットが自動でJSON → JavaBean (model) へ変換して、HTTPメソッドを判断し各メソッドへ振分けてくれます。

下記が非同期REST送受信javascriptです。
(jqueryとjquery.jsonというライブラリを使用する前提です)
...

/** 非同期処理 */
function sendJSON(method, jsonval, actionURI, displayId, delURI) {
 // 一覧取得URI設定
 var getURI = actionURI;
 // delURIが存在する場合「削除処理」と判断
 if (delURI != undefined) actionURI = delURI;
 $.ajax({
  type:method,
  url:actionURI,
  contentType:"application/json",
  data:jsonval,
  cache:false,
  success:function(data){displayMessage(getURI,displayId);}
  });
}
/** 登録を行います */
function createSend(form, actionURI, displayId) {
 sendJSON("POST", createJSON(form), actionURI, displayId);
}
/** 更新を行います */
function updateSend(form, actionURI, displayId) {
 sendJSON("PUT", createJSON(form), actionURI, displayId);
}
/** 削除処理を行います */
function deleteSend(form, actionURI, displayId) {
 var delURI = actionURI+"?_method=DELETE";
 // HTTP/DELETEメソッドが使用できなさそうなのでクエリ変数へDELETE設定
 sendJSON("POST", createJSON(form), actionURI, displayId, delURI);
}
/** formの内容をJSON形式に変換 */
function createJSON(form) {
 var form = $("#" + form);
 var param = {};
 $(form.serializeArray()).each(function(i,v){param[v.name] = v.value;});
 var jsonval = $.toJSON(param);
 return jsonval;
}
...

実装の中身は次のエントリーで書いていこうと思います。

あと、RESTサーブレットを使用するとslim3コントローラを使用しない為、
ユニットテストが出来ないということになります。
せっかく標準で用意されていて、簡単にテストが行えるのでなんとかしてテストできないか考えないと...。
ていうかRESTfulに実装しなければいいのか。

2011年2月7日月曜日

Eclipse プラグイン開発セミナー受講してきました

ので後々の為にメモ。

講師の方が資料をアップして下さっていました。
この資料がとても分かりやすく、セミナーを受講していない人でも
ある程度簡単に単純なEclipseプラグインができてしまうと思います。

普段仕事でEclipseとEclipseプラグインを使用してjavaを書いていましたが、
自分の慣れた使い方しかしていない事に気づきました。

プラグイン・スパイとか勉強になりました。

ありがとうございました。m(_ _)m

何かプラグイン作ったらブログにのせていこうと思います。