ArdiunoだったりBeagleBoardだったり組込みAndroidボード側のシリアルポートから何らかの通信を行う時の方法メモ。
ボード側の端子がUSBの場合の方法はすぐにぐぐれば情報に行き着くので割愛
シリアルポート制御をJavaからやる方法について。
○android-serialport-apiを使う。
NDKが必須になるが
[android-serialport-api]
https://code.google.com/p/android-serialport-api/
シリアル通信のサンプルもついてるソースコードは
svn checkout http://android-serialport-api.googlecode.com/svn/trunk/ android-serialport-api
で取得する。
jniのソースをプロジェクトに組み込んで
サンプルを参考にAPIを呼ぶだけで簡単にシリアル通信をAndroidアプリから実現できて便利。
2014年3月6日木曜日
2014年1月5日日曜日
内田洋行 ルディオ(中古)購入。
約10年ぐらい使用していたデスクとワンセットになっていた椅子の背もたれが長年の体重かけすぎ使用により折れた。
さすがに限界だろうということでOAチェアを探してみたが高級品を即決で買うのはさすがに気が引けたので
中古品で何かないかと探してみたところヤフオクでいい出物があったので購入した。
内田洋行 ルディオ
後継姿勢時のキーボードタイピングが今までのものより格段にやりやすくなった。
これなら早めに椅子に投資すべきだった。
今回は本体5,500円+送料で購入したが次は高級品を購入するための積立を今年1年ぐらいで貯めて新調しようかと思います。
さすがに限界だろうということでOAチェアを探してみたが高級品を即決で買うのはさすがに気が引けたので
中古品で何かないかと探してみたところヤフオクでいい出物があったので購入した。
内田洋行 ルディオ
後継姿勢時のキーボードタイピングが今までのものより格段にやりやすくなった。
これなら早めに椅子に投資すべきだった。
今回は本体5,500円+送料で購入したが次は高級品を購入するための積立を今年1年ぐらいで貯めて新調しようかと思います。
2013年12月20日金曜日
Android 4.2.2 用タブレット向アプリの開発環境をwindows上で構築する。
業務上Androidアプリ開発の必要性がでてきそうになったので前準備をしたい。
ちょうど持ち物にNexus7があるのでAndroidアプリ開発環境を構築してみる。
[持ち物]
Nexus7 (Android 4.4.2) (4.2.2用なのは別デバイスで動かす目的があるため)
Windows 7 なデスクトップPC
[手順]
1.JDKのインストール
JDK(Java Development Kit)を
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
からダウンロード(手元ではwindows x64)し、インストールする。
その後環境変数に JAVA_HOME = C:\Program Files\Java\jdk1.7.0_45;を追加
(下図参照,パスはインストール先によって適宜変更)
2.Android SDKのインストール
Android SDKのサイト (http://developer.android.com/sdk/index.html)から
Android SDK(adt-bundle-windows-x86_64-2013xxxx.zip)をダウンロードし
任意のフォルダに展開する。
3.Eclipseの日本語化
Eclipseの表記を日本語化するため
http://mergedoc.sourceforge.jp/ で
Pleiadesプラグインの最新版をダウンロードする。
ダウンロードしたzipファイルを展開し、中身を2.で展開したAndroid SDKのフォルダ
のeclipseフォルダの下にコピーする。
その後eclipse.iniの最後尾に
無事、起動。
ちょうど持ち物にNexus7があるのでAndroidアプリ開発環境を構築してみる。
[持ち物]
Nexus7 (Android 4.4.2) (4.2.2用なのは別デバイスで動かす目的があるため)
Windows 7 なデスクトップPC
[手順]
1.JDKのインストール
JDK(Java Development Kit)を
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
からダウンロード(手元ではwindows x64)し、インストールする。
その後環境変数に JAVA_HOME = C:\Program Files\Java\jdk1.7.0_45;を追加
(下図参照,パスはインストール先によって適宜変更)
2.Android SDKのインストール
Android SDKのサイト (http://developer.android.com/sdk/index.html)から
Android SDK(adt-bundle-windows-x86_64-2013xxxx.zip)をダウンロードし
任意のフォルダに展開する。
3.Eclipseの日本語化
Eclipseの表記を日本語化するため
http://mergedoc.sourceforge.jp/ で
Pleiadesプラグインの最新版をダウンロードする。
ダウンロードしたzipファイルを展開し、中身を2.で展開したAndroid SDKのフォルダ
のeclipseフォルダの下にコピーする。
その後eclipse.iniの最後尾に
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar=default.splashを追加してファイルを保存して閉じる。
その後eclipse.exeを起動し、ワークスペースを指定する。
無事、起動。
2012年4月26日木曜日
Ruby on Rails + RSpec 画像アップロードのテスト方法
画像をformからアップロードする時のバリデーションテストをどうするか?
という話をメモしておきます。
簡易blog(食べたもの記録)アプリの記事本体部分を想定。
Modelの名前はDiningとします。
app_root/db/migrate/[date]_dinings.rbより抜粋すると
という話をメモしておきます。
[環境]
CentOS6.2
Rails 3.2.2
Ruby 1.9.3-p125
CentOS6.2
Rails 3.2.2
Ruby 1.9.3-p125
(1)テスト対象のModel
前回に引き続き簡易blog(食べたもの記録)アプリの記事本体部分を想定。
Modelの名前はDiningとします。
app_root/db/migrate/[date]_dinings.rbより抜粋すると
class CreateDinings < ActiveRecord::Migration
def change
create_table :dinings do |t|
t.date :date #日付
t.string :time #「朝」「昼」「夜」が入る
t.string :menu #「食べたもの」
t.integer :price #「お値段」
t.string :shop #「店」
t.string :place #「店の場所」
t.integer :evaluetion #1~5の5段階評価
t.string :impression #感想
t.string :ctype # 写真が指定されている時写真のcontent_type
t.binary :photo #写真
t.timestamps
end
end
end
写真データを直接DBに格納するモデルです。
ここでは
・画像ファイルのcontent-typeが画像で無い時バリデーションエラーになること
をテストしていきます。
(2)テスト
app_root/spec/model/dining_spec.rbより抜粋describe "写真(photo)" do
it "content-typeが画像の時バリデーションエラーが発生しないこと" do
@dining.data = Rack::Test::UploadedFile.new(Rails.root.join("test/fixtures/test.jpg"), "image/jpeg")
@dining.should be_valid
end
it "content-typeが画像以外の時バリデーションエラーが発生すること" do
@dining.data = Rack::Test::UploadedFile.new(Rails.root.join("test/fixtures/test.jpg"), "image/text")
@dining.should be_valid
end
end
Rack::Test::UploadedFile.new()が仮想アップロードファイルをテストするためのメソッドで 第1引数にテスト画像,第2引数にcontent-typeを設定します。
(3)バリデーションの実装
テストがでけたので。 app_root/app/model/dining.rbにバリデーションを実装していきます。#coding:utf-8
class Dining < ActiveRecord::Base
#中略
validate :file_invalid? #写真のバリデート
def data=(data)
self.ctype = data.content_type
self.photo = data.read
end
def file_invalid?
if !self.photo.nil? then #写真が指定されてる時
ps = ['image/jpeg', 'image/gif', 'image/png']
errors.add(:photo, 'は画像ファイルではありません') if !ps.include?(self.ctype)
end
end
end
テスト/実装コードにもある通りフォーム側で画像をアップロードする時に、
直接model上のカラムである:imageではなく、:dataという仮のパラメータにセットして
アップロード時に:ctypeと:imageを:dataから抽出してセットしている点が注意が必要。
form側では
という記述でアップロードフォームを実現しています。<%= f.label :data, "写真" %> <%= f.file_field :data %>
2012年4月20日金曜日
スカパー!e2とひかりTVを比較検討した。
というわけで。
CS放送契約を検討中でして、現住居(都内の賃貸ワンルーム)の環境では
スカパーe2(スカパーHDはアンテナ立てられず断念)とひかりTVが選択肢になりました。
そこでスカパーe2の16日間無料とひかりTVの2ヶ月無料キャンペーンを利用して
両者のサービスを体験し、比較した結果をメモしておきます。
CS放送契約を検討中でして、現住居(都内の賃貸ワンルーム)の環境では
スカパーe2(スカパーHDはアンテナ立てられず断念)とひかりTVが選択肢になりました。
そこでスカパーe2の16日間無料とひかりTVの2ヶ月無料キャンペーンを利用して
両者のサービスを体験し、比較した結果をメモしておきます。
スカパー!e2
必要なもの
・CS110度対応アンテナ または フレッツTVアンテナは無料でつけてくれるキャンペーンが今やってるそうです。
うちの場合はマンションの共聴設備で対応してました。
料金
月490円 + 基本パック3,570 円 + オプションチャンネル (Jリーグをみるなら2,580円)メリット
・Jリーグ全試合生で見られるオプション有(スカパーのみ)・テレビ内蔵のEPGが使える為動作・視聴予約が軽快(AQUOS使ってます)
デメリット
・(ひかりTV比で)料金が高い。・別途レコーダーが無いと録画不可
・成人系ch無し
ひかりTV
必要なもの
・光Bフレッツ回線・IPv6対応ルータ
料金
・月2,625円(テレビざんまいプラン) + チューナーレンタル料 525円 + オプションチャンネル・月3,675円(おねうちプラン) + チューナーレンタル料 525円 +オプションチャンネル(テレビに加えてビデオのいくつかが見放題)
メリット
・外付けHDD取り付けで録画可能。・オンライン録画予約可(スマホ/PCから可能なので撮り忘れが減る)
・料金安
・囲碁・将棋チャンネルがある(ただし2012年後半にはスカパー対応予定)
・成人系chがある(メリットかどうか)
デメリット
・Jリーグは諦めないといけない。・UIがかなりもっさり。
単体で使うとマシかもしれないですがテレビ内蔵EPG等と比較するとさすがに重い。
NetFront(UIブラウザ)のせいなのか、STBのスペックがたりてないのか。
・番組表の見通しが悪い
縦の視認性が4時間分しかないので録画しておきたい番組があるかどうかガイド誌みたほうが早い
・リモコンショートカットが全画面視聴中に効かない
裏番組表表示中でないとショートカットできないのもちょっとイライラ
まとめ
・ひかりTV(テレビざんまい)+スカパー!e2 Jリーグパックが贅沢ながら個人的には満足度を最大化できる組み合わせな気がします。(がJパックの方は諦めるかもしれません。)・人がこの調べ物してひかりTVのSTB申し込んだ直後にSonyが3波対応のnasne出してきたのでスカパーに乗り換えるかもしれません。
・ビデオ見たいならhuluのが安いしよさそう
・おうちでえろえろなものを見たい人はひかりTV一択です
2012年4月13日金曜日
Rails3.2 + RSpecで楽しいTDD(ModelのValidationテスト)
というわけでModelのバリデーション機能をテストしていきます。
[環境]
CentOS6.2
Rails 3.2.2
Ruby 1.9.3-p125
(1)テスト対象のModel
簡易blog(食べたもの記録)アプリの記事本体部分を想定。
Modelの名前はDiningとします。
app_root/db/migrate/[date]_dinings.rbより抜粋すると
1.必須パラメータが空の時バリデーションではじかれること
2.必須で無いパラメータが空の時バリデーションではじかれないこと
3.長さの最大長があるものに関しては境界値動作が正しいこと
を確認するためのコードを書いていきます。
(2)テストデータの準備
app_root/spec/fixtures/dinings.ymlに以下の内容のテストデータを準備します。
(3)テストコードの実装
app_root/spec/models/dinings_spec.rb
にテストコードをバリバリ書いていきます。
というわけでテストを通すコードを書いていきます。
app_root/app/model/dining.rb
というようなサイクルで
テストコード→実装→テスト通った嬉しいを繰り返していくと
段々緑色が見える度に脳内麻薬が出てコード書くのにboostがかかるのでおすすめです。
あと赤色が緑にならないと気持ち悪くて寝られなくなる。
次回は写真アップロードテストのやり方あたりをメモしておきます。
[環境]
CentOS6.2
Rails 3.2.2
Ruby 1.9.3-p125
(1)テスト対象のModel
簡易blog(食べたもの記録)アプリの記事本体部分を想定。
Modelの名前はDiningとします。
app_root/db/migrate/[date]_dinings.rbより抜粋すると
class CreateDinings < ActiveRecord::Migration
def change
create_table :dinings do |t|
t.date :date #日付
t.string :time #「朝」「昼」「夜」が入る
t.string :menu #「食べたもの」
t.integer :price #「お値段」
t.string :shop #「店」
t.string :place #「店の場所」
t.integer :evaluetion #1~5の5段階評価
t.string :impression #感想
t.string :ctype # 写真が指定されている時写真のcontent_type
t.binary :photo #写真
t.timestamps
end
end
end
写真データを直接DBに格納する荒っぽいモデルですが利用者が1人ということでご勘弁を。
このモデルに対して 1.必須パラメータが空の時バリデーションではじかれること
2.必須で無いパラメータが空の時バリデーションではじかれないこと
3.長さの最大長があるものに関しては境界値動作が正しいこと
を確認するためのコードを書いていきます。
(2)テストデータの準備
app_root/spec/fixtures/dinings.ymlに以下の内容のテストデータを準備します。
#coding:utf-8 valid: date: 2012-03-22 time: "朝" menu: "おうどん" price: 290 shop : "おにやんま" place: "五反田" evaluetion: 4 impression: "おいしい" ctype : "image/jpeg" photo:ここではバリデーションに引っかからないようなデータを用意しておきます。
(3)テストコードの実装
app_root/spec/models/dinings_spec.rb
にテストコードをバリバリ書いていきます。
#coding:utf-8
require 'spec_helper'
describe "Dining バリデーションテスト" do
fixtures :dinings #テストデータを設定
before(:each) do #全テスト実行前の共通動作
@dining = dinings(:valid) #dinings.ymlの (valid:)で指定されているデータを設定
end
it "dateが空の時:エラーが発生すること" do
@dining.date = ""
@dining.should_not be_valid #be_validで無いことを確認する
end
さてこれでテストを実行すると(sporkはたちあげておいて下さい)$ rspec --drb --drb spec/models/dining_spec.rbバリデーションコード書いてないので失敗(日付が空だけどbe_valid)します。 4.テストを通すコードの実装
というわけでテストを通すコードを書いていきます。
app_root/app/model/dining.rb
#conding:utf-8
class Dining < ActiveRecord::Base
validates :date,
:presence => true #dateは空を許さない
end
これでテストを再度実行すると無事テストが成功。というようなサイクルで
テストコード→実装→テスト通った嬉しいを繰り返していくと
段々緑色が見える度に脳内麻薬が出てコード書くのにboostがかかるのでおすすめです。
あと赤色が緑にならないと気持ち悪くて寝られなくなる。
次回は写真アップロードテストのやり方あたりをメモしておきます。
2012年4月12日木曜日
Rails3.2 + RSpecで楽しいTDD(導入編)
さて、標題にはTDDと書いてますが実際にはコード書いてからテスト書いてたりしてます。
手元でちまちま書いてるアプリもさすがにテストも無しではいかんだろうということで
まずは手元にあるコードのカバレッジが100%となるテストを書き、
その後次に何か乗っける時からはテストから書いていきたいと思います。
というわけで今回はテスト環境の導入編から。
この記事で前提とする環境は
・CentOS6
・Ruby on Rails 3.2.2
・Ruby 1.9.3 p-125
・MySQL
となっています。
(1)テストに必要なGemの導入
app_root/Gemfileに以下の記述を追加
'simplecov'はカバレッジ計測の為のGem(rcovはRuby 1.9系列では使用できない為)
'simplecov-rcov'はカバレッジレポートをrcovと同等の形で出力するためのgemで
Jenkins先生の出番がある人以外はいらないと思います。
sporkはTwiwt:Blog / jugyo : spork でサクサク RSpec on Rails3
こちらを参照。テストを高速に実行しまくる為に導入します。そして
app_root/spec/以下に自動生成されたテストケースのひな形ができると思います。
(2)テストの準備
1.sporkを起動する
テスト実行用のサーバーことsporkを起動します。
最初の1回のみ以下の設定が必要です。
2.カバレッジ計測処理の追加
app_root/spec/spec_helper.rbの先頭に以下の記述を追加
(3)テスト実行
カバレッジは app_root/coverage/index.html
を見るとわかりやすく表示されていると思います。
次はmodelのバリデーションテストの書き方をメモしておこうと思います。
手元でちまちま書いてるアプリもさすがにテストも無しではいかんだろうということで
まずは手元にあるコードのカバレッジが100%となるテストを書き、
その後次に何か乗っける時からはテストから書いていきたいと思います。
というわけで今回はテスト環境の導入編から。
この記事で前提とする環境は
・CentOS6
・Ruby on Rails 3.2.2
・Ruby 1.9.3 p-125
・MySQL
となっています。
(1)テストに必要なGemの導入
app_root/Gemfileに以下の記述を追加
gem 'rspec-rails' gem 'simplecov', :require => false #gem 'simplecov-rcov', :require => false gem 'spork''rspec-rails'は文字通りRailsでRSpecテストを行うためのGem
'simplecov'はカバレッジ計測の為のGem(rcovはRuby 1.9系列では使用できない為)
'simplecov-rcov'はカバレッジレポートをrcovと同等の形で出力するためのgemで
Jenkins先生の出番がある人以外はいらないと思います。
sporkはTwiwt:Blog / jugyo : spork でサクサク RSpec on Rails3
こちらを参照。テストを高速に実行しまくる為に導入します。そして
$ bundle installここまでが済んだ状態で既存のものに対するテストのひな形を作る場合は
$ rails g rspec :controller hoge hage ...てな感じで実行してみると(hoge,hageは自分が作ったコントローラ名)
app_root/spec/以下に自動生成されたテストケースのひな形ができると思います。
(2)テストの準備
1.sporkを起動する
テスト実行用のサーバーことsporkを起動します。
最初の1回のみ以下の設定が必要です。
$ spork --bootstrap終われば
$ sporkで起動。
2.カバレッジ計測処理の追加
app_root/spec/spec_helper.rbの先頭に以下の記述を追加
require 'rubygems' require 'spork' Spork.prefork do end Spork.each_run do end require 'simplecov' require 'simplecov-rcov' SimpleCov.start 'rails'
(3)テスト実行
$ rspec --drb spec/model/user_spec.rbとこんな感じで実行できます。
$ rspec --drb spec/*とかでまとめて実行も。
カバレッジは app_root/coverage/index.html
を見るとわかりやすく表示されていると思います。
次はmodelのバリデーションテストの書き方をメモしておこうと思います。
登録:
投稿 (Atom)
