夢を見る石 http://www.lnc.jp/ 日々の雑記 en-us Sun, 15 Nov 2015 00:00:00 +0900 http://www.lnc.jp/2015/11/15/db_to_model.html http://www.lnc.jp/2015/11/15/db_to_model.html <![CDATA[DBからpyramidのモデルを生成する]]> DBからpyramidのモデルを生成する

すでに稼働中のアプリケーションでフルスクラッチする場合にモデルが流用できないところからの移行をしようとすると、モデルをDBのスキーマーにあわせて作るという作業が発生するが、これが地味に無駄なので避けたいなーと思って調べたらそれっぽいものがあったのでメモ

まだ、実際にちゃんと動くかどうかはまだ試してないのでモデルがちゃんと動かないとかって可能性はある。

SQLAlcemyにSQLAlcemy Migrateというツールがあってこれを使う。

まずはインストール、ドライバーは自分の環境に合わせたものを私の場合はmysql-connectorをチョイス

pip install --allow-external mysql-connector-python mysql-connector-python
pip install sqlalchemy-migrate

マイグレート用のテンプレートからレポジトリをまず作る。

migrate create migrate_example "Example project"
cd migrate_example/

マイグレートするDBの設定をデフォルトで利用するように設定する。

migrate manage manage.py --repository=./ --url=mysql+mysqlconnector://user:password@host/db_name

モデルを生成する。

以上でモデルが生成される。がモデルを実際には試してないので試したらまた書く。

]]>
Sun, 15 Nov 2015 00:00:00 +0900
http://www.lnc.jp/2015/05/17/post_1715.html http://www.lnc.jp/2015/05/17/post_1715.html <![CDATA[ansible ハンスオンを開催しました]]> ansible ハンスオンを開催しました

4月と5月2回にわけてトータル45人の方に参加していただきました。

http://ansible-users.connpass.com/event/13158/

1回目はそもそも一人で30人の対応と準備不足もあり、かなり辛かったです。

時間的にも終わったのが9時半過ぎだったのでかなり押してました。

../../../_images/ansible_15_04_02.jpg

http://ansible-users.connpass.com/event/14385/

2回目は人数を15人にして行ったので割とスムーズに行きましたが、まさかのアカウントの設定依存があり、プロビジョニングが動かないという事態に…

../../../_images/ansible_15_05_02.jpg

いろいろと事前準備側に回したおかげでかなり時間的には余裕が出来ました。

../../../_images/ansible_15_05.jpg

おんなじものを複数回するのは準備などの点でだいぶ楽にはなるのだけど、技術的な面白さはだいぶ減ってしまうので参加できなかった人的には辛いのかもしれないけど仕事の時間に含まれないのであればやるメリットは多くないようにも思う。 今回はIDCFクラウドさんにサーバー側の協賛をもらったのでプロビジョニングをまるっと書き換えていた。

さくらとかニフティのクラウドもモジュールがあれば協賛に入ってもらうと良いのだけど今のところは無いのですよね。 さくら、ニフティそれそれ独自なAPIだから致し方ないが。

さくらのクラウドは良いのだけど個人的には割高感があってできればさくらのVPNくらいの単価感にならないかなという所。 さくらのVPNはAPIとか用意されたりしないのかなぁ…。

以下は反省点

  • もっとansibleの概要部分を増やす
  • よく出るエラーを資料のに書いてわかりやすくする
  • 配布物の構成も資料の中に書いておく
  • 席は一般的な向かい合うような形のほうが他の人の質問内容が他の人に伝わるので良い

どったばただった一回目のアンケートが二回目のアンケートより満足度が高いのは一体何なんだろう…。

以上、参加してくださった方ありがとうございました。

]]>
Sun, 17 May 2015 00:00:00 +0900
http://www.lnc.jp/2015/04/18/post_2039.html http://www.lnc.jp/2015/04/18/post_2039.html <![CDATA[TwilioのサンプルAndroidアプリをAndroid Studioでビルドする方法]]> TwilioのサンプルAndroidアプリをAndroid Studioでビルドする方法

twilioは電話アプリケーションのためのSaaSなのですが、通話するための接続方法が以下の3種類用意されています。

  • 通常の発呼しての通話
  • SIPプロトコルを受け入れる
  • SDKのクライアントライブラリを使う

この内一番お値段がお安いのがクライアント(一分0.25円)なのです。 ただこのクライアントアプリ、サンプルコードがあるのですがEclipseベースの古いディレクトリ構成のサンプルコードになっているのでそのままインポートしても動かないです。

動かすためにはインポートではなく以下のような手順でAndroid Studioのプロジェクトを作りなおすほうがおそらく簡単だと思います。

  1. 空のプロジェクトを作成
  2. app/src/main/jniLibsにjniのライブラリを配置する
  3. app/build.gradleのライブラリの指定をを以下のように修正する
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(dir: 'src/main/jniLibs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

この内以下の部分が追加分

compile fileTree(dir: 'src/main/jniLibs', include: ['*.jar'])

4.ソースコードとリソースファイルをプロジェクトファイルに追加

こんな感じでビルドができるようになるはずです。 だいぶん前にやったので半分うろ覚えですが。 全て終わってビルド可能なプロジェクトをgithubで公開しています。

https://github.com/bols-blue/TwilioPhoneExsample

以上です。 みんなtwilio使うといいです。

]]>
Sat, 18 Apr 2015 00:00:00 +0900
http://www.lnc.jp/2015/04/18/2016.html http://www.lnc.jp/2015/04/18/2016.html <![CDATA[Smart Communication Award 2015に参加してきました]]> Smart Communication Award 2015に参加してきました

TwilioをやっているKDDI Web communicationsさんは同じビルで隣なのもあり、全日「見学にきてください」と言われたのでホイホイ行ってみたら「どこかのチームに参加しませんか」の流れに。

ニーズのあるチームの中からこれは良いのかもと思ったコメ電話チームに参加することになりました。

各チームの解説は`公式ブログ <http://twilio.kddi-web.com/blog/entry000228.html>`_ にあります。

他のチームのどれもアイデアは素晴らしく、悩んだのですがやろうとしていることに対するサイズが大きめだったり、事前にある程度作って参加されていたりと難しいですね。

結果的に優秀賞とアイマーキュリーキャピタル賞のダブル受賞させていただきました。

../../../_images/twilio_kometel.jpg

個人的にはtwimlを実践的に使う良い予行演習になったのでとても勉強になりました。 やっぱり、イベントに行ってある程度簡単でもいいのでお題がある状態で技術サポートしてもらえる状況のほうが学習コストはとても低くなるというのも新たな発見でした。 今までは、ハッカソンのイベントでは自分がすでにある程度は習得済みの状態で参加することが多く(そういうもんだと思っていたし)、他のメンバーのサポートに時間がもってかれたりして微妙かなと思っていたんですよね。 あとはちゃんとチューターがいるのも大きかったのかも。

興味のある技術のハッカソンはもっと積極的に参加したほうが良いですね。

]]>
Sat, 18 Apr 2015 00:00:00 +0900
http://www.lnc.jp/2015/03/23/2317.html http://www.lnc.jp/2015/03/23/2317.html <![CDATA[windows で手軽に ansible が実行できるようにポータブル cygwin 環境を作った]]> windows で手軽に ansible が実行できるようにポータブル cygwin 環境を作った

ansibleの実行環境を手軽に使える環境がなかったので作ってみた。

qiitaにcygwinで環境作っても徒労に終わるとか書いてあるのでついカッとなってやった。 いろんな人がVM入れるとか書いてるけど、VM入れたうえで諸々入れるとかハードル高くないかな。

cygwin以外だと依存関係を解決しても動かないので注意が必要。 理由はまた別途書くとする。 ダウンロードは http://www.lnc.jp/cygwin.zip

解凍すると800Mになるので容量は確保してください。

zipを解凍してcygwin-ansible.batを実行すればansibleのコマンドが実行できる。 pipなども入っているので必要があれば追加でライブラリも入れられます。

いくつか制限があります。

  • windowsユーザー名にスペースが入っているとlocalactionが失敗します
  • 日本語のいくつかの文字をnameに入れるとシンタックスエラーになります
  • -c paramiko オプションでsshクライアントを指定する必要があります

初めて使う状態で公開鍵認証を使うのであれば以下のコマンドで鍵が作れます。

ssh-keygen

鍵を作成済みなら以下で公開鍵を取り込めます。

鍵はパスフレーズを入力すると利用可能な状態でagentに保管されます。 agentが終了するまでパスフレーズ無しで利用できます。

ssh-agent.exe bash
ssh-add ~/.ssh/id_rsa

以下はありがちなエラー

ssh-agent.exe bash
ssh-add ~/.ssh/id_rsa

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0775 for '/home/bols/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

.sshのディレクトリは700のパーミションでないと他のユーザーから読み取れてしまうのでエラーになります。 以下のようにパーミッションを変更することでエラーにならなくなります。

chmod 700 -R .ssh

ansibleはなぜか hosts ファイルに実行権限がないとエラーになります。 エラーは以下

ERROR: The file hosts is marked as executable, but failed to execute correctly. If this is not supposed to be an executable script, correct this with `chmod -x hosts`.

この場合、以下のコマンドで実行権限を外すことによって実行できます

chmod -x hosts
宣伝:ansibleハンズオンやります。

IDCFクラウド使うのは大人の事情です。

]]>
Mon, 23 Mar 2015 00:00:00 +0900
http://www.lnc.jp/2015/03/15/2040.html http://www.lnc.jp/2015/03/15/2040.html <![CDATA[CloudStack APIをAnsibleから使ってサーバーを構築する]]> CloudStack APIをAnsibleから使ってサーバーを構築する

Ansible便利ですよね。 最初はfablicとかででいいかなと思っていたのですが使ってみると冪とう性を担保してくれるだけでこんなに違うのかと思うほど便利です。

何回実行してもおかしなことにならないし、そこのために作りこみをするなんてことも不要なのは助かります。 あと設定のように記述できるので誰に渡しても怖くないし。 難があるとすればwindowsでコントローラーができないくらいでしょうかね。 もっとansibleを広めるためにハンズオンをするつもりなので、そのあたりはなにか解決できないか模索中です。

さて今回はIDCFクラウドのCloudStack APIをansibleから利用してサーバーを構築するのをやってみよう。 VPSに比べてクラウドって高いし、ラズバイ2もあるから家の中にサーバー構築しようかなと思っていたんですが一番安いのが500円だったりして俄然やる気がわきます。

playbookだけ欲しい人はここからどうぞ。 ただ、現状、ansibleのCloudStackモジュールにポートフォワーディングの設定をするモジュールがないです。 そのためファイヤーウォールの中に作ったサーバーへのポートフォワーディング設定はGUIという少し残念な結果になっています。 ファイヤーウォール自体の設定はできるのでパスする設定はできるので、すごくおしい感が高いです。 https://github.com/bols-blue/idcfcloud_provisioning_playbook

あと、モジュールにバグなのか、IDCFクラウドとの仕様の不一致なのかうまく動かないところがあったので自分のところに修正したモジュールをおいています。 playbookを落とすとサブモジュールとして入っています。

インストールしたことのない人のために手順を書いておきます。

まず、pythonの2.7系を入れます。3.4でも動くようになっているのですがローカルで動かすモジュールを使う場合にはまりやすいので2.7系をおすすめします。 pipというパッケージ管理ツールを使ってインストールします。 pipが一緒に入る環境と入らない環境があると思うので入らない人は別途、pipを入れます。

curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

curlがない人はwget、ブラウザから名前をつけて保存でもいいです。

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py

次にpipでansible,csを入れます。 csはクラウドスタックのWeb APIをpythonから呼べるようブリッジするもののようです。

pip install ansible cs

以上でセットアップ完了です。

次にplaybookを落としてAPI keyを設定します。

git clone https://github.com/bols-blue/idcfcloud_provisioning_playbook

設定ファイルは中に入れてあるcloudstack.iniに書き込めばいいです。 API keyの場所は本家のブログのStep2-3を見てください。 http://www.idcf.jp/blog/cloud/api_autoscale2/

あとは実行します。 公式モジュールではないのでモジュールが使われるようモジュールの検索パス-Mオプションをつけます。

ansible-playbook provisioning.yml -M ./ansible-cloudstack/ -i hosts

これでVMが作られてファイヤウォールを通過するようになっていますのであとはwebインターフェースからポートフォワーディングするよう変更しましょう。

ポートフォワーディングモジュールるか、それとも元を作っている人が作ってくれるのを待つか悩み中です…

以上!!

]]>
Sun, 15 Mar 2015 00:00:00 +0900
http://www.lnc.jp/2015/03/14/1704.html http://www.lnc.jp/2015/03/14/1704.html <![CDATA[sphinx 1.3 がリリースされたので tinkerer で使う sphinx のバージョンを上げる]]> sphinx 1.3 がリリースされたので tinkerer で使う sphinx のバージョンを上げる

sphinx 1.3 がリリースされました。

変更履歴の日本語はきっと清水川さんがブログを上げてくださると思うので待ちましょう。

新バージョンリリースということでさそっくアップデートしてみます。

pip install –upgrade sphinx

これであとはいつも通りブログをビルド。 今までのバージョンだと動くんだけどエラーが表示されていて気持ち悪いなと思っていたのだけど表示されなくなりました。

]]>
Sat, 14 Mar 2015 00:00:00 +0900
http://www.lnc.jp/2015/03/07/2227.html http://www.lnc.jp/2015/03/07/2227.html <![CDATA[ラズベリーパイをタイムマシンに使えるNASに仕立てあげる]]> ラズベリーパイをタイムマシンに使えるNASに仕立てあげる

RaspberryPi2(以下ラズパイ)買いました。なんだかめちゃくちゃスペック高くなっているのでこれは買ってもいいかなと思ったのと、丁度、確認してみたい情報があったので。 でもせっかく買うわけだから、そのまま死蔵するなら買わないほうがいい(というか雑誌の付録がいっぱいある)のでNASにすることにしました。

だいぶ前に黒箱がお亡くなりになり、メインマシンにデータを集めていたけど、電気代的に常時つけておけない。 常時起動できる何か代わりの物が欲しかったし、嫁がMacユーザーなのでバックアップに使えるAFPのNASにしてあげるとちょうどいいですね。

linuxでAFPのサーバーにはnetatalkを使うのが一般的らしい。(他にあるかどうかは探していないけど) 構成は

ラズパイ - USBHDD(RAID1)

まずはラズパイにOSを入れないと…と思ったら手元には2GBのマイクロSDしかありません。 ubuntuとdebian(rasbian)は 4GB 以上を要求している、データサイズのインフレしすぎでしょ、正直つらい。 調べたらarchlinuxならなんとかなりそうだったので、OSの選択肢がなくなりました。

初archlinuxです、なんでこうなった。とりあえず入れましょう。

英語の手順はこちら http://elinux.org/ArchLinux_Install_Guide

SDカードをマシンに放り込みフォーマット

fdisk /dev/sdb

“n”押して”p”でパーテーションを切ります。”1” にしてサイズは “+100M” です。 ここはfatでないといけないので”t”押して”c”でfatに変えます “n”押して”p”でパーテーションを切ります。”2” にしてサイズは そのままエンターで全部使います。 あとは”w”で書き込み

次にフォーマットとOSの書き込み

mkfs.vfat /dev/sdb1
mkfs.ext4 /dev/sdb2
mkdir root
mkdir root/boot
#ここからOSの書き込み作業
mount /dev/sdb2 root
mount /dev/sdb1 root/boot
wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz
bsdtar -xpf ArchLinuxARM-rpi-latest.tar.gz -C root
sync

あとはラズパイに挿してそのまま起動します、初期はrootユーザーのみでパスワードもrootになっています。 archlinuxだとHDMI+USBキーボードかシリアル、sshdも起動しているので有線ネットワークのある環境であれば有線でsshで接続できます。 sshで接続してnetatalkを入れます。バイナリパッケージは pacman を使えばいいらしい。

pacman -Sy netatalk

あとはUSB接続のHDDをマウントしてそこを netatalk で共有できるようにコンフィグを設定します。 マウントの設定は以下のようにしました。何故か起動時にマウントできないことがあったのでオプションは nofail,auto,rw に設定。 これで起動時にマウントできなくてもリカバリーモードに入らなくなる。

/dev/sdb2 /opt/afp ext3 nofail,auto,rw 0 0

netatalk は /etc/afp.conf がコンフィグファイルで以下の設定を追記した。

[TimeMachine]
path = /opt/afp
time machine = yes
vol size limit = 1024000

タイムマシンで使えるかどうかと使える領域を書いておくと良いらしい。 あとはrebootすれば動くようになる。

]]>
Sat, 07 Mar 2015 00:00:00 +0900
http://www.lnc.jp/2015/03/04/2115.html http://www.lnc.jp/2015/03/04/2115.html <![CDATA[和歌山県がオープンデータをGithubで公開したのでもう少しいじってみる]]> 和歌山県がオープンデータをGithubで公開したのでもう少しいじってみる

前回(http://www.lnc.jp/2015/02/24/2334.html)の続き

はてなブックマークとかアダム的な人に地味に期待しているコメントがついていたので、少し続けてみた。 交通の規制はほとんどが雨で規制が入る様子だったし県が出している降水量情報 (http://kasensabo01.pref.wakayama.lg.jp/new/pr/pr-z-000.html) は特にクロールが規制されている様子もなかったのでクロールした結果とCSVの情報を合わせてリアルタイムに規制情報を出せるようにしてみようと考えたのだけど…。

公開されているCSVデータの中にはGPSのポイント情報が入っていなかった。

真面目にGPSのポイント情報は入れておいてほしい…。

更に、雨量情報は地名以外のデータがなくてGPS的に近い位置を出すことが機械的には無理な状態だった。

それではと思ってCSVの中の地名っぽい情報でマッチングしてみようと考えたのだけどマッチングした結果は以下のようになってしまった。

地元の人とかにマッピングしてもらわないとわからないだろうこれ…。

3 田辺 新宮市南磐盾〜新宮市熊野川町・田辺市境界
3 新宮 新宮市南磐盾〜新宮市熊野川町・田辺市境界
3 熊野 新宮市南磐盾〜新宮市熊野川町・田辺市境界
4 田辺 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
4 新宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
4 本宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
4 熊野 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
5 新宮 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
5 熊野 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
6 新宮 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
6 玉置口 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
6 熊野 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
7 北山 東牟婁郡北山村下尾井〜東牟婁郡北山村小松
8 田辺 田辺市鮎川〜田辺市中辺路町栗栖川
8 栗栖川 田辺市鮎川〜田辺市中辺路町栗栖川
8 鮎川 田辺市鮎川〜田辺市中辺路町栗栖川
9 田辺 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
9 栗栖川 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
9 本宮 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
10 田辺 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
10 本宮 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
11 田辺 田辺市本宮町皆地〜田辺市本宮町本宮
11 本宮 田辺市本宮町皆地〜田辺市本宮町本宮
12 九度山 伊都郡九度山町下古沢〜伊都郡高野町矢立
12 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
12 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
15 高野 海草郡伊都郡界〜伊都郡高野町矢立
15 高野 海草郡伊都郡界〜伊都郡高野町矢立
16 橋本 橋本市向副〜伊都郡高野町高野山
16 高野 橋本市向副〜伊都郡高野町高野山
16 高野 橋本市向副〜伊都郡高野町高野山
17 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
17 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
17 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
17 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
18 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
18 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
18 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
18 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
19 かつらぎ 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
19 花園 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
19 龍神 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
19 田辺 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
20 小松原 田辺市中辺路町小松原〜田辺市中辺路町高原
20 田辺 田辺市中辺路町小松原〜田辺市中辺路町高原
21 田辺 田辺市平瀬〜田辺市合川
22 古座 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
22 古座川 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
22 平井 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
23 三尾 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
23 古座 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
23 古座川 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
24 串本 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
24 古座 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
24 古座川 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
25 海南 海南市ひや水〜海南市上谷
26 海南 海南市有田郡界〜有田郡有田川町有原
26 有田 海南市有田郡界〜有田郡有田川町有原
27 龍神 田辺市龍神村小家〜田辺市龍神村福井
27 田辺 田辺市龍神村小家〜田辺市龍神村福井
28 日高 田辺市龍神村福井〜日高郡みなべ町清川
28 龍神 田辺市龍神村福井〜日高郡みなべ町清川
28 清川 田辺市龍神村福井〜日高郡みなべ町清川
28 田辺 田辺市龍神村福井〜日高郡みなべ町清川
29 日高 日高郡みなべ町清川〜日高郡みなべ町西本庄
29 清川 日高郡みなべ町清川〜日高郡みなべ町西本庄
30 龍神 田辺市龍神村福井〜田辺市龍神村柳瀬
30 田辺 田辺市龍神村福井〜田辺市龍神村柳瀬
31 和歌山 田辺市龍神村湯本〜和歌山県・奈良県界
31 龍神 田辺市龍神村湯本〜和歌山県・奈良県界
31 田辺 田辺市龍神村湯本〜和歌山県・奈良県界
32 かつらぎ 和歌山県・大阪府界〜伊都郡かつらぎ町平
32 和歌山 和歌山県・大阪府界〜伊都郡かつらぎ町平
33 高野 伊都郡高野町矢立〜伊都郡高野町高野山
33 高野 伊都郡高野町矢立〜伊都郡高野町高野山
34 有田 有田郡有田川町川口〜有田郡有田川町二川
35 有田 有田郡有田川町二川〜有田郡有田川町清水
35 清水 有田郡有田川町二川〜有田郡有田川町清水
36 有田 有田郡有田川町清水〜有田郡伊都郡界
36 清水 有田郡有田川町清水〜有田郡伊都郡界
37 かつらぎ 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
37 花園 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
37 有田 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
38 桃山 紀の川市下鞆渕〜紀の川市桃山町神田
39 那賀 海草郡紀美野町松瀬〜海草郡那賀郡界
40 海南 海南市別所〜海南市海草郡界
42 有田 有田市高田〜有田郡湯浅町田
42 湯浅 有田市高田〜有田郡湯浅町田
42 高田 有田市高田〜有田郡湯浅町田
43 由良 日高郡由良町大引〜日高郡由良町小引
43 日高 日高郡由良町大引〜日高郡由良町小引
44 日高 日高郡日高町川原河〜日高郡日高川町高津尾
45 日高 田辺市上秋津〜西牟婁・日高郡界
45 田辺 田辺市上秋津〜西牟婁・日高郡界
46 白浜 西牟婁郡白浜町瀬戸〜西牟婁郡白浜町江津良
47 すさみ 西牟婁郡すさみ町防己〜西牟婁郡すさみ町江住
48 田辺 西牟婁郡白浜町田野井〜田辺市合川
48 白浜 西牟婁郡白浜町田野井〜田辺市合川
49 すさみ 西牟婁郡すさみ町曲利〜西牟婁郡すさみ町防己
50 串本 東牟婁郡古座川町下地〜東牟婁郡串本町和深
50 古座 東牟婁郡古座川町下地〜東牟婁郡串本町和深
50 古座川 東牟婁郡古座川町下地〜東牟婁郡串本町和深
50 和深 東牟婁郡古座川町下地〜東牟婁郡串本町和深
51 串本 東牟婁郡串本町大島〜東牟婁郡串本町出雲
52 串本 東牟婁郡串本町串本〜東牟婁郡串本町出雲
53 古座 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
53 古座川 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
54 古座 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
54 古座川 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
54 勝浦 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
55 新宮 新宮市熊野川町小口〜新宮市熊野川町滝本
55 滝本 新宮市熊野川町小口〜新宮市熊野川町滝本
55 熊野 新宮市熊野川町小口〜新宮市熊野川町滝本
56 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町口色川
57 勝浦 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
57 市野々 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
58 高野 伊都郡高野町高野山〜和歌山・奈良県界
58 和歌山 伊都郡高野町高野山〜和歌山・奈良県界
58 高野 伊都郡高野町高野山〜和歌山・奈良県界
60 岩出 和歌山県・大阪府界〜岩出市根来
60 和歌山 和歌山県・大阪府界〜岩出市根来
61 和歌山 和歌山市滝畑
61 畑 和歌山市滝畑
62 和歌山 和歌山県・大阪府界〜和歌山市深山
63 貴志川 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
63 桃山 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
63 畑 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
64 海南 海南市且来〜海南市神田
65 海南 海南市下津町加茂郷〜海南市下津町曾根田
65 下津 海南市下津町加茂郷〜海南市下津町曾根田
66 海南 海南市下津町大崎
66 下津 海南市下津町大崎
67 有田 海草郡・有田郡界〜海草郡紀美野町宮ノ前
68 日高 日高郡美浜町三尾〜日高郡美浜町日ノ岬
68 美浜 日高郡美浜町三尾〜日高郡美浜町日ノ岬
68 三尾 日高郡美浜町三尾〜日高郡美浜町日ノ岬
69 田辺 田辺市中辺路町近露〜田辺市平瀬
69 近露 田辺市中辺路町近露〜田辺市平瀬
70 田辺 田辺市中辺路町西谷
71 田辺 田辺市鮎川〜田辺市上野
71 鮎川 田辺市鮎川〜田辺市上野
73 古座 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
73 古座川 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
73 松根 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
74 新宮 新宮市相賀〜新宮市俵石
75 勝浦 東牟婁郡那智勝浦町南平野〜東牟婁郡那智勝浦町井鹿
76 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町市屋
77 田辺 田辺市本宮町平〜田辺市本宮町耳打
77 本宮 田辺市本宮町平〜田辺市本宮町耳打
78 白浜 西牟婁郡白浜町塩野〜西牟婁郡白浜町伊古木
79 和歌山 大阪府泉南郡岬町孝子〜和歌山県貴志中
80 串本 東牟婁郡串本町田原〜東牟婁郡串本町津荷
81 有田 東牟婁郡串本町有田〜東牟婁郡串本町田並
81 串本 東牟婁郡串本町有田〜東牟婁郡串本町田並
82 すさみ 東牟婁郡すさみ町見老津〜同町周参見
83 白浜 西東牟婁郡白浜町志原〜西牟婁郡白浜町富田字高瀬
84 日高 日高郡みなべ町山内〜日高郡みなべ町東岩代
85 由良 日高郡日高町池田〜由良町里
85 日高 日高郡日高町池田〜由良町里
86 有田 日高郡由良町畑〜有田郡広川町河瀬
86 広川 日高郡由良町畑〜有田郡広川町河瀬
86 由良 日高郡由良町畑〜有田郡広川町河瀬
86 日高 日高郡由良町畑〜有田郡広川町河瀬
86 畑 日高郡由良町畑〜有田郡広川町河瀬
87 田辺 新宮市南磐盾〜新宮市熊野川町・田辺市境界
87 新宮 新宮市南磐盾〜新宮市熊野川町・田辺市境界
87 熊野 新宮市南磐盾〜新宮市熊野川町・田辺市境界
88 田辺 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
88 新宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
88 本宮 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
88 熊野 新宮市熊野川町・田辺市境界〜田辺市本宮町土河屋(県境)
89 新宮 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
89 熊野 新宮市熊野川町宮井〜新宮市熊野川町九重(県境)
90 新宮 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
90 玉置口 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
90 熊野 新宮市熊野川町玉置口(県境)〜新宮市熊野川町田戸(県境)
91 北山 東牟婁郡北山村下尾井〜東牟婁郡北山村小松
92 田辺 田辺市鮎川〜田辺市中辺路町栗栖川
92 栗栖川 田辺市鮎川〜田辺市中辺路町栗栖川
92 鮎川 田辺市鮎川〜田辺市中辺路町栗栖川
93 田辺 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
93 栗栖川 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
93 本宮 田辺市中辺路町栗栖川〜田辺市中辺路町・本宮町境界
94 田辺 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
94 本宮 田辺市中辺路町・本宮町境界〜田辺市本宮町皆地
95 田辺 田辺市本宮町皆地〜田辺市本宮町本宮
95 本宮 田辺市本宮町皆地〜田辺市本宮町本宮
96 九度山 伊都郡九度山町下古沢〜伊都郡高野町矢立
96 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
96 高野 伊都郡九度山町下古沢〜伊都郡高野町矢立
99 高野 海草郡伊都郡界〜伊都郡高野町矢立
99 高野 海草郡伊都郡界〜伊都郡高野町矢立
100 橋本 橋本市向副〜伊都郡高野町高野山
100 高野 橋本市向副〜伊都郡高野町高野山
100 高野 橋本市向副〜伊都郡高野町高野山
101 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
101 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
101 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
101 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園中南
102 かつらぎ 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
102 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
102 花園 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
102 高野 伊都郡高野町高野山〜伊都郡かつらぎ町大字花園箕峠
103 かつらぎ 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
103 花園 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
103 龍神 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
103 田辺 伊都郡かつらぎ町大字花園箕峠〜田辺市龍神村大熊
104 小松原 田辺市中辺路町小松原〜田辺市中辺路町高原
104 田辺 田辺市中辺路町小松原〜田辺市中辺路町高原
105 田辺 田辺市平瀬〜田辺市合川
106 古座 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
106 古座川 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
106 平井 東牟婁郡古座川町平井〜東牟婁郡古座川町湯の花
107 三尾 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
107 古座 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
107 古座川 東牟婁郡古座川町三尾川〜東牟婁郡古座川町一雨
108 串本 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
108 古座 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
108 古座川 東牟婁郡古座川町一雨〜東牟婁郡串本町高富
109 海南 海南市ひや水〜海南市上谷
110 海南 海南市有田郡界〜有田郡有田川町有原
110 有田 海南市有田郡界〜有田郡有田川町有原
111 龍神 田辺市龍神村小家〜田辺市龍神村福井
111 田辺 田辺市龍神村小家〜田辺市龍神村福井
112 日高 田辺市龍神村福井〜日高郡みなべ町清川
112 龍神 田辺市龍神村福井〜日高郡みなべ町清川
112 清川 田辺市龍神村福井〜日高郡みなべ町清川
112 田辺 田辺市龍神村福井〜日高郡みなべ町清川
113 日高 日高郡みなべ町清川〜日高郡みなべ町西本庄
113 清川 日高郡みなべ町清川〜日高郡みなべ町西本庄
114 龍神 田辺市龍神村福井〜田辺市龍神村柳瀬
114 田辺 田辺市龍神村福井〜田辺市龍神村柳瀬
115 和歌山 田辺市龍神村湯本〜和歌山県・奈良県界
115 龍神 田辺市龍神村湯本〜和歌山県・奈良県界
115 田辺 田辺市龍神村湯本〜和歌山県・奈良県界
116 かつらぎ 和歌山県・大阪府界〜伊都郡かつらぎ町平
116 和歌山 和歌山県・大阪府界〜伊都郡かつらぎ町平
117 高野 伊都郡高野町矢立〜伊都郡高野町高野山
117 高野 伊都郡高野町矢立〜伊都郡高野町高野山
118 有田 有田郡有田川町川口〜有田郡有田川町二川
119 有田 有田郡有田川町二川〜有田郡有田川町清水
119 清水 有田郡有田川町二川〜有田郡有田川町清水
120 有田 有田郡有田川町清水〜有田郡伊都郡界
120 清水 有田郡有田川町清水〜有田郡伊都郡界
121 かつらぎ 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
121 花園 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
121 有田 有田郡伊都郡界〜伊都郡かつらぎ町大字花園中南
122 桃山 紀の川市下鞆渕〜紀の川市桃山町神田
123 那賀 海草郡紀美野町松瀬〜海草郡那賀郡界
124 海南 海南市別所〜海南市海草郡界
126 有田 有田市高田〜有田郡湯浅町田
126 湯浅 有田市高田〜有田郡湯浅町田
126 高田 有田市高田〜有田郡湯浅町田
127 由良 日高郡由良町大引〜日高郡由良町小引
127 日高 日高郡由良町大引〜日高郡由良町小引
128 日高 日高郡日高町川原河〜日高郡日高川町高津尾
129 日高 田辺市上秋津〜西牟婁・日高郡界
129 田辺 田辺市上秋津〜西牟婁・日高郡界
130 白浜 西牟婁郡白浜町瀬戸〜西牟婁郡白浜町江津良
131 すさみ 西牟婁郡すさみ町防己〜西牟婁郡すさみ町江住
132 田辺 西牟婁郡白浜町田野井〜田辺市合川
132 白浜 西牟婁郡白浜町田野井〜田辺市合川
133 すさみ 西牟婁郡すさみ町曲利〜西牟婁郡すさみ町防己
134 串本 東牟婁郡古座川町下地〜東牟婁郡串本町和深
134 古座 東牟婁郡古座川町下地〜東牟婁郡串本町和深
134 古座川 東牟婁郡古座川町下地〜東牟婁郡串本町和深
134 和深 東牟婁郡古座川町下地〜東牟婁郡串本町和深
135 串本 東牟婁郡串本町大島〜東牟婁郡串本町出雲
136 串本 東牟婁郡串本町串本〜東牟婁郡串本町出雲
137 古座 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
137 古座川 東牟婁郡古座川町小森川〜東牟婁郡古座川町直見
138 古座 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
138 古座川 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
138 勝浦 東牟婁郡那智勝浦町南平野〜古座川町那智勝浦町界
139 新宮 新宮市熊野川町小口〜新宮市熊野川町滝本
139 滝本 新宮市熊野川町小口〜新宮市熊野川町滝本
139 熊野 新宮市熊野川町小口〜新宮市熊野川町滝本
140 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町口色川
141 勝浦 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
141 市野々 東牟婁郡那智勝浦町那智山〜東牟婁郡那智勝浦町市野々
142 高野 伊都郡高野町高野山〜和歌山・奈良県界
142 和歌山 伊都郡高野町高野山〜和歌山・奈良県界
142 高野 伊都郡高野町高野山〜和歌山・奈良県界
144 岩出 和歌山県・大阪府界〜岩出市根来
144 和歌山 和歌山県・大阪府界〜岩出市根来
145 和歌山 和歌山市滝畑
145 畑 和歌山市滝畑
146 和歌山 和歌山県・大阪府界〜和歌山市深山
147 貴志川 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
147 桃山 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
147 畑 紀の川市桃山町中畑〜紀の川市貴志川町井ノ口
148 海南 海南市且来〜海南市神田
149 海南 海南市下津町加茂郷〜海南市下津町曾根田
149 下津 海南市下津町加茂郷〜海南市下津町曾根田
150 海南 海南市下津町大崎
150 下津 海南市下津町大崎
151 有田 海草郡・有田郡界〜海草郡紀美野町宮ノ前
152 日高 日高郡美浜町三尾〜日高郡美浜町日ノ岬
152 美浜 日高郡美浜町三尾〜日高郡美浜町日ノ岬
152 三尾 日高郡美浜町三尾〜日高郡美浜町日ノ岬
153 田辺 田辺市中辺路町近露〜田辺市平瀬
153 近露 田辺市中辺路町近露〜田辺市平瀬
154 田辺 田辺市中辺路町西谷
155 田辺 田辺市鮎川〜田辺市上野
155 鮎川 田辺市鮎川〜田辺市上野
157 古座 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
157 古座川 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
157 松根 東牟婁郡古座川町松根〜東牟婁郡古座川町佐田
158 新宮 新宮市相賀〜新宮市俵石
159 勝浦 東牟婁郡那智勝浦町南平野〜東牟婁郡那智勝浦町井鹿
160 勝浦 東牟婁郡那智勝浦町南大居〜東牟婁郡那智勝浦町市屋
161 田辺 田辺市本宮町平〜田辺市本宮町耳打
161 本宮 田辺市本宮町平〜田辺市本宮町耳打
162 白浜 西牟婁郡白浜町塩野〜西牟婁郡白浜町伊古木
163 和歌山 大阪府泉南郡岬町孝子〜和歌山県貴志中
164 串本 東牟婁郡串本町田原〜東牟婁郡串本町津荷
165 有田 東牟婁郡串本町有田〜東牟婁郡串本町田並
165 串本 東牟婁郡串本町有田〜東牟婁郡串本町田並
166 すさみ 東牟婁郡すさみ町見老津〜同町周参見
167 白浜 西東牟婁郡白浜町志原〜西牟婁郡白浜町富田字高瀬
168 日高 日高郡みなべ町山内〜日高郡みなべ町東岩代
169 由良 日高郡日高町池田〜由良町里
169 日高 日高郡日高町池田〜由良町里
170 有田 日高郡由良町畑〜有田郡広川町河瀬
170 広川 日高郡由良町畑〜有田郡広川町河瀬
170 由良 日高郡由良町畑〜有田郡広川町河瀬
170 日高 日高郡由良町畑〜有田郡広川町河瀬
170 畑 日高郡由良町畑〜有田郡広川町河瀬
]]>
Wed, 04 Mar 2015 00:00:00 +0900
http://www.lnc.jp/2015/02/24/2334.html http://www.lnc.jp/2015/02/24/2334.html <![CDATA[和歌山県がオープンデータをGithubで公開しているらしいので少しいじってみた]]> 和歌山県がオープンデータをGithubで公開しているらしいので少しいじってみた

和歌山県がオープンデータをGithubで公開している https://github.com/wakayama-pref-org もっとこういう公開方法にしてほしい。

現状でもオープンデータと言わずエクセルやなんかで落とせるデーターは結構あるのだが基本的にはホームページ上での公開だったりする。 そうなると結局クローリングしてデータを集めてこなくてはいけなかったりして手間が大きい。 元のデータの更新があるだけでも結局人出がかかってしまうのでコストがかかってしまう。

こうやってデータの更新が行われたことを自動的に検知できるような仕組みをきちんと使ってくれるようになるだけで運用コストが下がっていくのにと思っていた。 さくっと動かせそうなものを徘徊して探していたらちょうどKMLになっているデータがあったので30分位でgooglemapに乗せてでっち上げた。 別にKMLがデータ形式として良いとかではなくそのままgooglemapに表示できるから選んだだけです。

和歌山県内の道路で気象条件によって規制がかかるポイントのリスト

../../../_images/wakayama.png

http://www.lnc.jp/wakayama_information_of_road_traffic_regulation/

現在の降雨情報 http://kasensabo01.pref.wakayama.lg.jp/new/ とかをAPIで提供していてくれれば現在の交通規制とかも出せるのだけどなぁ。 あと降水予報と組み合わせれば交通規制が掛かりそうな予報のマップも作り出せそう。 まぁ降水予報の方はJWAのものだから有料でないと取れない可能性も大きいけど。

若干いただけないのは、情報自体をGITHUBに置くのではなくリンクになっているところがある所だけど、そのあたりは継続されていけば改善されるよね。

]]>
Tue, 24 Feb 2015 00:00:00 +0900
http://www.lnc.jp/2015/02/24/2312.html http://www.lnc.jp/2015/02/24/2312.html <![CDATA[Sphinx+翻訳 Hack-a-thon 2015.02に参加しました(ブログの移行準備)]]> Sphinx+翻訳 Hack-a-thon 2015.02に参加しました(ブログの移行準備)

Sphinx+翻訳 Hack-a-thon 2015.02に参加してきました。

自分的なお題はブログの移行

はてなでもいいのだけどいい加減sphinx(reST)のほうが書きやすくなってきたりはてな記法覚えてなかったりで若干やりづらくなってきていたので。

それ以外にもいまいち、どのくらい移行することでくる人が減るのかとか気になってきていたので移行することに決めました。

移行したうえで必要なものはほとんど http://akirakw.github.io/2012/09/13/customize_tinkerer.html の記事でカバーされていてとても助かりました。

facebookのプラグインには少しバグがあるようで3.4で実行すると怒られましたが https://github.com/vladris/tinkerer-contrib/pull/11 にプルリクエストを送っておきました。

そんな感じで今度からはこっちで書いていこうかなと思います。

]]>
Tue, 24 Feb 2015 00:00:00 +0900
http://www.lnc.jp/2014/05/21/212100.html http://www.lnc.jp/2014/05/21/212100.html <![CDATA[サーバーをdockerに移動するための調べ事]]> サーバーをdockerに移動するための調べ事

サーバーを移動するのにはubuntuのパッケージで管理されているものは最低限入れておきたい。

けれども、趣味レベルだとドキュメントにしてあるわけでもなく、移行のためには過去に入れたパッケージを調べる必要がある。

パッケージ管理から手動で入れたものは以下のコマンドで調べることができる

apt-mark showmanual
]]>
Wed, 21 May 2014 00:00:00 +0900
http://www.lnc.jp/2014/05/21/211640.html http://www.lnc.jp/2014/05/21/211640.html <![CDATA[NTLM認証(Windowsのドメイン認証情報をつかったシングルサインオン)]]> NTLM認証(Windowsのドメイン認証情報をつかったシングルサインオン)

ちょっとしたメモ

windowsにログインしただけでwebサービスにログインした状態にできる。

前の現場ではIISだったのでサンプルに入っていたけども、linuxでもできるらしい。

参考は以下

http://blog.liris.org/2012/03/linuxapachentlm.html

]]>
Wed, 21 May 2014 00:00:00 +0900
http://www.lnc.jp/2013/11/29/235141.html http://www.lnc.jp/2013/11/29/235141.html <![CDATA[Playground(Android)のJenkins環境を整える]]> Playground(Android)のJenkins環境を整える

ハッカソンに行ってきた。

そのときにjenkinsである程度動いたかと思ったら動いておらず

いろんな罠にハマっていたらえらく日数がかかってしまいました。

セットアップ方法とハマりそうなエラーとその原因を軽くまとめようと思います

monoまわりをセットアップしていないので

運用としてはAppAssets.zipは作ってレポジトリに置くような感じになります。

環境のセットアップ

OS:ubuntu 12.04 64bit(12.10や13.04は苦労する可能性が大きいです)

githubに解説がありますがいくつか不足があるのと英語です。

https://github.com/KLab/PlaygroundOSS/blob/master/Doc/Android_Build.md

大きくは

必要なライブラリとツールのインストール

aaptがなぜか32bitバイナリーなのでia32libsとzipなどのコマンド類をいれます。

androidの開発環境のインストール

androidのビルドのためにjavaとandroid-sdkとandroid-ndkが必要です。

PlaygroundOSSのビルド

最終目的地です

では順番に


必要なライブラリとツールのインストール

aptで一発ワンライナーです。

sudo apt-get install libgd2-xpm ia32-libs ia32-libs-multiarch zip git

androidの開発環境のインストール

javaは以下からダウンロードできます。

http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html

展開してパスを通しましょう。

sdkは以下からダウンロードできます。

http://developer.android.com/sdk/index.html

sdkはちょくちょくかわるのでとんでダウンロードしてください。

ndkは以下からダウンロードできます。

64 bit : http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2

例として$HOME以下に展開します。

パスを通します。

その際にANDROID_NDK_ROOTは必ず定義してください。

無いとビルド時にエラーになります。

export ANDROID_NDK_ROOT=$HOME/android-ndk-r9/
export PATH=$PATH:$ANDROID_NDK_ROOT:$HOME/android-sdk-linux/tools:$HOME/android-sdk-linux/platform-tools

sdkはandroidコマンドを使ってビルドツールとかをインストールしましょう。

GUIでもできますがコマンドでやると以下のようになります。

echo 'y' | android update sdk --filter platform-tools,android-17,extra-android-support,android-17,sysimg-17 --no-ui --force
echo 'y' | android update sdk -a --filter `android list sdk --extended -a | grep \"build-tools-18.1.0\" |cut -d ' ' -f 2` --no-ui --force
echo 'y' | android update sdk -a --filter `android list sdk --extended -a | grep \"build-tools-19.0.0\" |cut -d ' ' -f 2` --no-ui --force

PlaygroundOSSのビルド

以下のページからダウンロードするかgitでクローンしてチュートリアルのプログラムをビルドします。

https://github.com/KLab/PlaygroundOSS

git clone https://github.com/KLab/PlaygroundOSS.git
cd $HOME/PlaygroundOSS/Tutorial/01.SimpleItem/.publish/android/
zip -r -0 $HOME/PlaygroundOSS/Engine/porting/Android/GameEngine-android/assets/AppAssets.zip ./*
echo -n "1" > $HOME/PlaygroundOSS/Engine/porting/Android/GameEngine-android/assets/version ./*
$HOME/PlaygroundOSS/Engine/porting/Android/GameEngine-android/build.py --rebuild --assemble --project SampleProject

これでサンプルプログラムが動きます。

jenkinsはshellでEngine以下をコピーしてAppAssets.zipを入れてビルドする

以下のようになります。

cp -r $HOME/PlaygroundOSS/Engine/ ./
mkdir -p `pwd`/Engine/porting/Android/GameEngine-android/assets/
mv android-assets/AppAssets.zip Engine/porting/Android/GameEngine-android/assets/
sum Engine/porting/Android/GameEngine-android/assets/AppAssets.zip > Engine/porting/Android/GameEngine-android/assets/version
cd Engine/porting/Android/GameEngine-android/
./gradlew assemble

こんな感じでビルドがまわせると思うので、後はお好みのテストツールと組み合わせるといいでしょう。

トラブルシュート

エラーが出てしまった人たち用にエラーメッセージと解決法を書いておきます

32bitライブラリーが入っていない編(必要なライブラリとツールのインストールをやってない)

まず、64bitの場合、ubuntuバージョンは12.04を使いましょう。

その上でia32libを入れないと以下のようにおこられます。

+ ./gradlew assemble
:preBuild UP-TO-DATE
:preDebugBuild UP-TO-DATE
:prepareDebugDependencies
:compileDebugAidl
:compileDebugRenderscript
:generateDebugBuildConfig
:mergeDebugAssets
:mergeDebugResources
/home/jenkins/workspace/playgroundthon/Engine/porting/Android/GameEngine-android/res/drawable-mdpi/ic_launcher.png: Error: Cannot run program "/home/jenkins/tools/android-sdk/build-tools/19.0.0/aapt": error=2, そのようなファイルやディレクトリはありません
:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':mergeDebugResources'.
> /home/jenkins/workspace/playgroundthon/Engine/porting/Android/GameEngine-android/res/drawable-mdpi/ic_launcher.png: Error: Cannot run program "/home/jenkins/tools/android-sdk/build-tools/19.0.0/aapt": error=2, そのようなファイルやディレクトリはありません

ファイルはあるのですが32bitのバイナリを実行しようとしてこんな感じに怒られます。

13.04は確実にパッケージが無いのでia32libでインストールされるパッケージ類を調べてインストールするしかないです。

12.10は分かりません。

ANDROID_NDK_ROOTが設定されていない編

以下のような感じで怒られます。

>> Compile++ x86    : Game <= FileDelete.cpp
>> Compile++ x86    : Game <= KLBOpenSLSoundAssetLoader.cpp
>> Compile++ x86    : Game <= CSampleProjectEntrance.cpp
>> Compile++ x86    : jniproxy <= jniproxy.cpp
>> Compile arm    : Game <= hash_sha1.c
>> Compile arm    : Game <= ldebug.c
>> Compile arm    : Game <= lstrlib.c
>> Compile arm    : Game <= lgc.c
>> Compile arm    : Game <= lfunc.c
>> Compile arm    : Game <= loadlib.c
>> jni/Android/CSockWriteStream.cppCompile arm    : Game <= lopcodes.c
>> Compile arm    : Game <= ldblib.c
>> :42:22: error: use of undeclared identifier 'write'
>>         int result = write(m_fd, buffer + pos, sndSize - pos);
>>                      ^
>> jni/source/Core/DebugTracker.cpp:221:2: error: use of undeclared identifier 'sleep'
>>         sleep(1000);  // waiting for client receive CMD_END.
>>         ^
>> 1Compile arm    : Game <= lctype.c
>> Compile arm    : Game <= lmathlib.c
>> 1 error generated.
>> make: *** [obj/local/x86/objs/Game/source/Core/DebugTracker.o] Error 1
>> make: *** Waiting for unfinished jobs....
>> Compile arm    : Game <= lzio.c
>>  error generated.
>> make: *** [obj/local/x86/objs/Game/Android/CSockWriteStream.o] Error 1
>> jni/Android/CAndroidWriteFileStream.cppjni/Android/CSockReadStream.cpp:42:14: error: use of undeclared identifier 'close'
>>     if(m_fd) close(m_fd);
>>              ^
>> jni/Android/CSockReadStream.cpp:41:9: error: use of undeclared identifier 'close'
>>         close(m_fd);
>>         ^
>> :81:6: error: use of undeclared identifier 'close'
>>         close(dstSocket);
>>         ^
>> jni/Android/CSockReadStream.cpp:100:11: error: use of undeclared identifier 'close'
>>                         close(m_fd);
>>                         ^
>> jni/Android/CSockReadStream.cpp1 error generated.
>> make: *** [obj/local/x86/objs/Game/Android/CAndroidWriteFileStream.o] Error 1
>> jni/Android/CAndroidReadFileStream.cpp:110:17: error: use of undeclared identifier 'close'
>>                 close(m_fd);
>>                 ^
>> jni/Android/CSockReadStream.cpp:86:6: error: use of undeclared identifier 'close'
>>         close(pStream->m_fd);
>>         ^
>> 1:127:22: error: use of undeclared identifier 'read'
>>         int result = read(m_fd, m_readBuf + m_lastPos, READ_BUFSIZ - m_lastPos);
>>                      ^
>> jni/Android/CSockReadStream.cpp:132:22: error: use of undeclared identifier 'read'
>>         int result = read(m_fd, m_readBuf, m_getPos);
>>                      ^
>> jni/Android/CSockReadStream.cpp:136:22: error: use of undeclared identifier 'read'
>>         int result = read(m_fd, m_readBuf + m_lastPos, m_getPos - m_lastPos);
>>                      ^
>>  error generated.
>> make: *** [obj/local/x86/objs/Game/Android/CAndroidReadFileStream.o] Error 1
>> jni/Android/CSockReadStream.cpp:141:22: error: use of undeclared identifier 'read'
>>         int result = read(m_fd, m_readBuf, READ_BUFSIZ);
>>                      ^
>> jni/source/Assets/CKLBTexturePacker.cpp:367:80: warning: format specifies type 'unsigned long' but the argument has type 'uintptr_t' (aka 'unsigned int') [-Wformat]
>>         fprintf(pFile, "==== Surface Alloc %8lX Size W:%i, H:%i Byte/Pix: %i ====\n", reinterpret_cast<uintptr_t>(this), m_width, m_height, m_currFormat);
>>                                            ~~~~                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>                                            %8X
>> 8 errors generated.
>> make: *** [obj/local/x86/objs/Game/Android/CSockReadStream.o] Error 1
>> 1 warning generated.
>> jni/Android/KLBOpenSLEngine.cpp:140:9: error: use of undeclared identifier 'usleep'
>>         usleep(16000);
>>         ^
>> 1 error generated.
>> make: *** [obj/local/x86/objs/Game/Android/KLBOpenSLEngine.o] Error 1
>> jni/Android/KLBOpenSLSoundAssetLoader.cpp:38:26: error: use of undeclared identifier 'F_OK'
>>         if (access(target_path, F_OK) != -1) {
>>                                 ^
>> jni/Android/KLBOpenSLSoundAssetLoader.cpp:67:3: error: use of undeclared identifier 'usleep'
>>                 usleep(30000); // sleep for 30ms
>>                 ^
>> 2 errors generated.
>> make: *** [obj/local/x86/objs/Game/Android/KLBOpenSLSoundAssetLoader.o] Error 1
>> jni/Android/CAndroidTmpFile.cpp:43:9: error: use of undeclared identifier 'close'
>>         close(m_fd);
>>         ^
>> jni/Android/CAndroidTmpFile.cpp:51:12: error: use of undeclared identifier 'write'
>>     return write(m_fd, ptr, size);
>>            ^
>> 2 errors generated.
>> make: *** [obj/local/x86/objs/Game/Android/CAndroidTmpFile.o] Error 1
>> jni/Android/CAndroidRequest.cpp:221:3: error: use of undeclared identifier 'unlink'; did you mean 'inline'?
>>                 unlink(fullpath);
>>                 ^
>> jni/Android/CAndroidRequest.cpp1 warning generated.
>> :505:15: error: use of undeclared identifier 'ioctl'
>>         int result = ioctl(fd, _IOW('a', 4 | (ANDROID_ALARM_ELAPSED_REALTIME << 4), struct timespec), ts);
>>                      ^
>> jni/Android/CAndroidRequest.cpp:507:2: error: use of undeclared identifier 'close'
>>         close(fd);
>>         ^
>> jni/Android/CAndroidRequest.cpp:646:9: warning: enumeration value 'BGMOVIEPLAYER' not handled in switch [-Wswitch]
>>         switch(type)
>>                ^
>> 1 warning and 3 errors generated.
>> make: *** [obj/local/x86/objs/Game/Android/CAndroidRequest.o] Error 1
>> 4 warnings and 18 errors generated.
>> make: *** [obj/local/x86/objs/Game/libs/SQLite/sqlite3.o] Error 1
>>
>> FAILURE: Build failed with an exception.
>>
]]>
Fri, 29 Nov 2013 00:00:00 +0900
http://www.lnc.jp/2013/11/09/173054.html http://www.lnc.jp/2013/11/09/173054.html <![CDATA[デ部 kitkat にいってきた]]> デ部 kitkat にいってきた

速報的に内容ざっくりまとめておきます。

Host Card Emulation APDU入門的な何か (New NFC capabilities through)

nakanishiさん

androidのNFCでNFCカードの動作をエミュレーション出きる。

今までのNFCは通信の処理とカードリーダーとして動いていたがカードをエミュレーションすることができるようになった。

New ways to build beautiful apps

korodoroidさん

システムが表示しているUIを半透明にしたりできるようになった。

シーンとトランジションを設定することでアクティビティ遷移時のアニメーションを簡単につけることができる。

没入型のUIで通知機能を横取りできるようになった。

TYPE_STEP_COUNTERとTYPE_STEP_DETECTORについて (Low-power sensors)

awaさん

センサーの種類として歩数計の追加。今までよりも簡単

万歩計は電源がONになってからずっととっているので差分を集積するなどが必要。(口頭)

センサーバッチング、バックグラウンドでも動く。

OnSensorChanged()が呼ばれていないと言うバグがある。31/68機種が動かない。

Tools for analyzing memory use

95さん

メモリーを監視するツールが増えた

プロセスの起動時間などもとれるので一晩くらい置いてから表示させるとよい。

monkeyなどで一晩中動かしながらメモリーの使用量をCVSでプロットしたりとかできるのでいいかもしれません。

4.4でなおったバグ (その他)

yyaammaaさん

アクションバーでオーバーレイしたときに影が出ないのがなおったよ。

Storage access frameworkでGCS (Storage access framework)

masuiさん

アプリケーションのデータの共有を一元化することができる。

いままでだとコンテントプロバイダを作ってピッカーをアプリごとに実装しないといけないのだけどほとんど用意されていない。

このフレームワークを使うことによってその辺の問題点を解消する。

ただし、4.4以降になってしまうので古いシステム上で同じ事をする方法がドキュメントになるよ。

Sensor Batching とか (Low-power sensors)

mhidakaさん

パーミッションが増えましたよ。

ショートカット作るのにパーミッションが必要になりました。

デバイスフィーチャーも増えました。

OK Google (その他)

atsushienoさん

OK googleをどうやったら自分でも実装できる?

その実装ができるか調べましたが僕の力では無理でした。

というお話。

kitcatのAPIドキュメントを見てみたけど関係なさそう…

他の人が作っているカモと思って探してみたが何か違った。

とりあえずHomeLauncher3とかがAOSPに入ってくるのを待つことにします。

変わったネクサス5がきたよ

zakiさん

まずタッチパネルが反応しないんだけど!

フリーダイヤルで日本語のオペレータとファクトリーリセットしたけどダメでした。

USBマウスをつかって動かしてみました。

PCをつないでOK押せない!!

BTのMAC用のパッドがあったので使ってみた。

5点タッチにも反応したよ!

kitcatでプリントするフレームワークが増えました

vvakameさん

プリントしようとするとプリントスプラーとプリントクラウドがしにます。

言語設定を英語にすると印刷が可能になる。

]]>
Sat, 09 Nov 2013 00:00:00 +0900
http://www.lnc.jp/2013/06/02/105723.html http://www.lnc.jp/2013/06/02/105723.html <![CDATA[android studio(のgradleの部分を)動かしてみた]]> android studio(のgradleの部分を)動かしてみた

6/2 14:05 <span class=”deco” style=”font-weight:bold;”>タイポで間違った情報を載せていたので修正しました

android studioを起動しようとするとしょっぱなからエラーをお見舞いされた

Build file build.gradle line: 9 A problem occurred evaluating project .
A problem occurred evaluating project . Could not create plugin of type 'AppPlugin'.
org/gradle/tooling/provider/model/ToolingModelBuilderRegistry org.gradle.tooling.provider.model.ToolingModelBuilderRegistry

これは gradle が古い奴がインストールされているとおこるようで

さっそくgradle-1.6にアップデート。

このようすだと gradle のみでビルドできるのではないかと思ったのでやってみた。

$ gradle build
The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
:MyApplication3:prepareDebugDependencies
:MyApplication3:compileDebugAidl
:MyApplication3:generateDebugBuildConfig
:MyApplication3:mergeDebugAssets
:MyApplication3:compileDebugRenderscript
:MyApplication3:mergeDebugResources
:MyApplication3:processDebugManifest
:MyApplication3:processDebugResources
:MyApplication3:compileDebug
:MyApplication3:dexDebug
:MyApplication3:processDebugJavaRes UP-TO-DATE
:MyApplication3:validateDebugSigning
:MyApplication3:packageDebug
:MyApplication3:assembleDebug
:MyApplication3:prepareReleaseDependencies
:MyApplication3:compileReleaseAidl
:MyApplication3:generateReleaseBuildConfig
:MyApplication3:mergeReleaseAssets
:MyApplication3:compileReleaseRenderscript
:MyApplication3:mergeReleaseResources
:MyApplication3:processReleaseManifest
:MyApplication3:processReleaseResources
:MyApplication3:compileRelease
:MyApplication3:dexRelease
:MyApplication3:processReleaseJavaRes UP-TO-DATE
:MyApplication3:packageRelease
:MyApplication3:assembleRelease
:MyApplication3:assemble
:MyApplication3:check UP-TO-DATE
:MyApplication3:build

BUILD SUCCESSFUL

Total time: 16.609 secs

$ ls MyApplication3/build/apk
MyApplication3-debug-unaligned.apk  MyApplication3-release-unsigned.apk

成功した。やったねたえちゃん。ツールが増えるよ(白目

apkはモジュールの下のbuild/apkのディレクトリ内に作成されていました。

タイポでした。タスクの一覧は以下のようになっているようです。

ちょっとしたら翻訳して見ようと思います。

$ gradle tasks
The TaskContainer.add() method has been deprecated and is scheduled to be removed in Gradle 2.0. Please use the create() method instead.
:tasks

------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------

Android tasks
-------------
androidDependencies - Displays the Android dependencies of the project
signingReport - Displays the signing info for each variant

Build tasks
-----------
assemble - Assembles all variants of all applications and secondary packages.
assembleDebug - Assembles all Debug builds
assembleRelease - Assembles all Release builds
assembleTest - Assembles the Test build for the Debug build
build - Assembles and tests this project.
buildDependents - Assembles and tests this project and all projects that depend on it.
buildNeeded - Assembles and tests this project and all projects it depends on.
clean - Deletes the build directory.

Build Setup tasks
-----------------
setupBuild - Initializes a new Gradle build. [incubating]

Help tasks
----------
dependencies - Displays all dependencies declared in root project 'MyApplication3Project'.
dependencyInsight - Displays the insight into a specific dependency in root project 'MyApplication3Project'.
help - Displays a help message
projects - Displays the sub-projects of root project 'MyApplication3Project'.
properties - Displays the properties of root project 'MyApplication3Project'.
tasks - Displays the tasks runnable from root project 'MyApplication3Project' (some of the displayed tasks may belong to subprojects).

Install tasks
-------------
installDebug - Installs the Debug build
installTest - Installs the Test build for the Debug build
uninstallAll - Uninstall all applications.
uninstallDebug - Uninstalls the Debug build
uninstallRelease - Uninstalls the Release build
uninstallTest - Uninstalls the Test build for the Debug build

Verification tasks
------------------
check - Runs all checks.
connectedCheck - Runs all device checks on currently connected devices.
connectedInstrumentTest - Installs and runs the tests for Build 'Debug' on connected devices.
deviceCheck - Runs all device checks using Device Providers and Test Servers.

To see all tasks and more detail, run with --all.

BUILD SUCCESSFUL

Total time: 7.517 secs

signingコマンドがあるのでgradleだけでサインした状態でリリースできそうです。

CIをするためにantを別に生成するなどの手間もへりそうです、

これからも期待しながら見て行こうと思います!!

]]>
Sun, 02 Jun 2013 00:00:00 +0900
http://www.lnc.jp/2013/04/21/154752.html http://www.lnc.jp/2013/04/21/154752.html <![CDATA[jenkinsの新しいプラグインを紹介 (4/5~4/11)]]> jenkinsの新しいプラグインを紹介 (4/5~4/11)

仕事の忙しさにかまけて忘れてました。

毎週かなり多くのプラグインが生まれていますね。

[https://wiki.jenkins-ci.org/display/JENKINS/UpdateSites+Manager+plugin:title]

Jenkinsの管理画面から、Jenkinsがプラグインのダウンロード元にするアップデートサイトを追加・変更・削除できるようになります。

以下の様な事情でJenkinsの公式アップデートサイト以外のアップデートサイトを使う場合に利用することを想定しています。

  • インターネットにアクセスできない環境で、Jenkinsの公式アップデートサイトからプラグインのサブセットをローカルにコピーしてアップデートサイトを作った場合
  • 一般に公開しない/できない、特定プロジェクト専用のプラグインをダウンロードできるアップデートサイトをローカルに作った場合

[https://wiki.jenkins-ci.org/display/JENKINS/Elastic+Axis:title]

マルチコンフィギュレーションジョブのスケーラビリティを向上させ管理しやすくするプラグインです。

複数のマシンに同一ジョブを適用するためのプラグインです。

[https://wiki.jenkins-ci.org/display/JENKINS/rhnpush+Plugin:title]

RHNで構成されたサーバーに対してRPMをインストールするためのビルドステップを追加するプラグインです。

[http://jp.redhat.com/products/enterprise-linux/management/:title]

[https://wiki.jenkins-ci.org/display/JENKINS/WIX+Toolset+Plugin:title]

windowsのインストーラー作成ツールであるWIXを実行するためのプラグインです。

windows上でのみ動作します。

[http://www.wixtoolset.org/:title]

[https://wiki.jenkins-ci.org/display/JENKINS/JobRequeue-Plugin:title]

スレーブ環境でジョブが失敗した場合のリトライを行うように設定するプラグインです。

[https://github.com/jenkinsci/golo-plugin:title]

プログラム言語のgoloをビルドするためのプラグインです。

wikiがありませんでした。

[https://github.com/jenkinsci/sparkle-appcast-plugin:title]

ソフトウェアアップデートフレームワークであるsparkleのためにappcast.rssファイルを生成するためのプラグインです。

githubに解説があります。

wikiはあるけれども何も書いていません。

[https://wiki.jenkins-ci.org/display/JENKINS/RPM+Sign+Plugin:title]

GPGを使ってRPMを署名するためのプラグインです。

そのためのビルドステップを提供します。

]]>
Sun, 21 Apr 2013 00:00:00 +0900
http://www.lnc.jp/2013/04/04/000655.html http://www.lnc.jp/2013/04/04/000655.html <![CDATA[jenkinsの新しいプラグインを紹介 (3/28~4/4)]]> jenkinsの新しいプラグインを紹介 (3/28~4/4)

相変わらず需要のなさそうなコンテンツ「新着プラグイン紹介」です。

[https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Enterprise+by+CloudBees:title]

OSSのjenkinsをエンタープライズ版に変換するプラグインです。

見たときにはとてもびっくりしました。

インストールすると評価ライセンスが自動的に取得されます。評価ライセンスが終了した場合、ライセンスを得るか、あるいはpluginsをアンインストールしなければなりません。

商用版の機能であるテンプレート、アクセス・コントロール、バックアップとHAコンポーネントを提供するそうです。

[https://wiki.jenkins-ci.org/display/JENKINS/RabbitMQ+Consumer+Plugin:title]

オープンソースのメッセージ指向ミドルウェアのRabbitMQに接続してキューを監視し、メッセージをリスナーに配信するためのプラグインです。

このプラグイン自体はビルドに対してなにかを提供することはありません。用意したリスナーの

インタフェースを他のプラグインで継承して実装することでRabbitMQとの通信を用意にするための物のようです。

[https://wiki.jenkins-ci.org/display/JENKINS/RabbitMQ+Build+Trigger+Plugin:title]

RabbitMQ Consumer Pluginのリスナー実装プラグインです。

RabbitMQの監視しているキューに特定のJSON形式のメッセージを外部から送信すると、

それがこのプラグインに配信され、そのメッセージにしたがってビルドをトリガーします。

[https://github.com/jenkinsci/pushover-notifier-plugin:title]

まだjenkinsのページができていませんがpushoverというモバイル向けのメッセージ通知サービスを使って通知を行うためのプラグインとなっているようです。

[https://wiki.jenkins-ci.org/display/JENKINS/MQTT+Notification+Plugin:title]

マシン間通信プロトコルのMQTT[http://mqtt.org/:title]を利用する以上のことがwikiからはよくわからなかったです。

[https://wiki.jenkins-ci.org/display/JENKINS/Humbug+Plugin:title]

humbughq.com用のプラグインらしいこと以外サイトを見てもよくわからないです。

[https://github.com/jenkinsci/jshint-checkstyle-plugin/:title]

wikiがうまく見つけられませんでした。

Checkstyleフォーマットの出力を行うJS用の構文チェッカープラグインです。

[https://wiki.jenkins-ci.org/display/JENKINS/Checkstyle+Plugin:title]で同時にインストールしてつかえるようになったということなのでしょうか?使ってるかた教えてください。

[https://github.com/jenkinsci/windows-azure-storage-plugin:title]

Windows Azure Blob storageにビルド成果物をアップロードするためのプラグインのようです。

wikiがうまく見つけられませんでした。

[https://wiki.jenkins-ci.org/display/JENKINS/LeChat+Plugin:title]

[https://lechat.im/:title]に通知をだすためのプラグインだと思われますが説明がなさすぎてよくわからなかったという…。

以上、3/28~4/4の新着プラグインでした。

]]>
Thu, 04 Apr 2013 00:00:00 +0900
http://www.lnc.jp/2013/03/28/104751.html http://www.lnc.jp/2013/03/28/104751.html <![CDATA[jenkinsの新しいプラグインを紹介]]> jenkinsの新しいプラグインを紹介

jenkinsの新しく登場したプラグインを(ほぼ)週刊ぐらいでやっていこうかと思います。

生まれたばかりの子が多いのでうまく動かないことが多いとは思いますが

似たようなものを作ろうと思っている場合はコントリビュートしてあげるといいとおもいます。

とりあえず直近(3/22-3/28まで)のプラグインをまとめて紹介します。

[https://wiki.jenkins-ci.org/display/JENKINS/Gearman+Plugin:title]

Gearmanというジョブ管理サーバーの下にjenkinsをつなぐことによって複数のjenkinsマスターを管理するためのプラグイン。

Gearmanをすでに使っている人向けなのでしょうかね。

[https://wiki.jenkins-ci.org/display/JENKINS/Windows+Exe+Runner+Plugin:title]

Windowsのexeファイルをシステムコンフィグで登録して、複数のジョブで使用する為のプラグイン。

 Windowsバッチコマンドで毎回同じexeファイルを指定している場合、入力作業が省略出来ます。

[https://wiki.jenkins-ci.org/display/JENKINS/JiraTestResultReporter-plugin:title]

JIRAにテスト結果をアップロードするプラグイン

xUnit系のテスト結果からアップロードする内容を作成するようです。

[https://wiki.jenkins-ci.org/display/JENKINS/Selenium+Builder+Plugin:title]

seleniumのテストケース作成環境Selenium Builderのプラグイン

Selenium Builderの出力するSelenium Builder scriptをそのまま実行できるようにするプラグインです。

以上、3/22-3/28までの新着プラグインでした。

]]>
Thu, 28 Mar 2013 00:00:00 +0900