Fire HD 10 のセッティング

iPad2が死亡したので急遽 Fire HD 10 をかう。


Amazon Prime にもはいったので当日きた。
Wi-Fiの設定したら直ぐに使えるようになった。
とりあえず機能制限でパスワードの設定。
思ったよりも縦長、でもAmazonプライムビデオ見ている限りあまり気にならない。
パフォーマンスは特に問題ない。
縦横固定のハードウェアボタンがないのはちょっと面倒。


iOSとちがってKindleアプリで完結できるので便利。
実際本の月一冊の無料はKindle端末からじゃないと選べないみたいだし。


Google Playを使えるようにする。
http://rootjunkysdl.com/files/?dir=Amazon%20Fire%205th%20gen
から Amazon-Fire-5th-Gen-Install-Play-Store.zip をおとしてきて
1-Install-Play-Store.bat を実行でインストールできた(シリアルナンバー7回クリックで開発者モードを有効にするのは他のAndroid端末と同じ)。
Amazonストアにない Chrome、ChromeCast、Dropbox などをいれた。問題なく動いている。


iOSとくらべて KindleDropboxが使いやすい。Huluは微妙かな。
iOSAndroidの動作の違いはそのうちなれるだろう。

CentOS に ansible 2.0 をインストールする

http://docs.ansible.com/ansible/intro_installation.html#latest-release-via-yum
にあるように
yum install ansible
だとまだ 1.9系のようだ

CentOS 6.7

> grep centos VagrantFile
  config.vm.box = "bento/centos-6.7"
> vagrant up
> vagrant ssh
$ cat /etc/redhat-release
CentOS release 6.7 (Final)
$ sudo yum install epel-release -y
$ sudo yum install gcc python-devel python-pip -y
$ sudo pip install pip --upgrade
$ sudo pip install ansible
$ ansible --version | grep ^a
ansible 2.0.1.0
$ python --version
Python 2.6.6

ansible 実行時に HAVE_DECL_MPZ_POWM_SEC となったら
https://github.com/ansible/ansible/issues/276 にあるように
sudo yum reinstall python-crypto
すればエラーがでなくなる。

CentOS 7.1

> grep centos VagrantFile
  config.vm.box = "bento/centos-7.1"
> vagrant up
> vagrant ssh
$ cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
$ sudo yum install epel-release -y
$ sudo yum install gcc python-devel python-pip -y
$ sudo pip install pip --upgrade
$ sudo pip install ansible
$ ansible --version | grep ^a
ansible 2.0.1.0
$ python --version
Python 2.7.5

実際には sudo yum update -y したほうがいいだろうけど。。。

振り返り

  • あまりちゃんと仕事した感じがしない一年だったな(育休2ヶ月とったってのもあるが)。
  • iOSからのAndroidポーティングで久しぶりにAndroidさわる。RxJava+retrofit, ButterKnife など進化していたが、UITableViewController+UINavigationController を Activity, Fragment でどう画面を構成してデータのやり取りするか悩み中。
  • C# 6.0 素敵。.NET Core、ASP.NET 5、EF 7.0 すげー楽しみだ。
  • Seasar2の代わりをどうしようかな、とも思うがJava系でなんとかしようとするからダメな気が。Docker上で.NET Coreを動かすのがいいような。来年の課題だな。
  • Rubyを2ヶ月ほどさわったけど型がないのでやっぱり好きになれない。CrystalがWindowsでもうごいてマルチスレッドの扱いがよさげなるなら Go じゃなくてCrystalがいいかなーと思う。
  • ブレイキング・バッド はシーズン4、5は抜群におもしろかった。シーズンの最後のほうが面白い作品って珍しかな。
  • Withings Activite 買った。時計するのって何十年ぶりだろう。充電いらずなのが気に入っている(実際半年以上変換いらず)
  • 今年は作るアプリやツールがどれも中途半端で放置しているのが多い。来年はなんとかしたいな。

散歩のお供にaudible(オーディオブック)をためしてみたが。。。

  • 1ヶ月無料体験あり:契約日から1ヶ月。退会しても退会日まではサービスは使える
  • 古いものか(著作権が切れたもの)か要約版が多い。揃えが少ない。
  • iOSのアプリの出来もいまいち。内部のナビゲーションの仕組みが貧弱だと思う。
  • 銀河英雄伝説はアニメ版の声優のやつじゃなくて(しょうがないけど)違和感がありむりぽ。。。
  • 結局解約した。

Eclipse 4.5 で JUnit4.4がエラーになる

JUnitはバージョン 4.4をずっとつかいつづけていたが(Hamcrestを使いたくないので)
Eclipse4.5がバグっていて 4.6以上に上げる必要があるようだ。
Cannot run individual JUnit tests when importing Maven projects which uses JUnit < 4.6
https://bugs.eclipse.org/bugs/show_bug.cgi?id=479730


うーん、、、今回はEclipse 4.5の評価のためなのでしょうがないのでバージョンをあげた。
pomからhamcrestのexclusionを削除する。
JUnit 4.5以上にするときには、org.hamcrest がないとEclipseJUnit実行時にエラーになるので。
Type Filterに org.hamcrest.* を足した。
いつも使うecliseのtemplateを久しぶりに修正。

org.eclipse.jdt.ui.typefilter.enabled=com.ibm.*;com.sun.*;sun.*;sunw.*;java.applet.*;java.awt.*;javax.swing.*;org.omg.*;java.sql.Date;org.hamcrest.*;

assrtThat, Matcher、Spec系は覚えることが多すぎて嫌い。
ちょっとさわらなくなったら全くコードが読めなくなる。
基本assertEqualsだけで頑張る。テストコードのテスト書くはめになったら意味がない。
Groovy の PowerAsset をどの言語も見習ってほしい。やはりJavaのテストは全部Groovyで書くべきなのかなー


Eclipseはcode tempalteに以下を足していて基本これで事足りている。

<template autoinsert="false" context="java-statements" deleted="false" description="assertEquals。equalsメソッドで比較" enabled="true" id="org.eclipse.jdt.ui.templates.ae_tag" name="ae">${staticImport:importStatic('org.junit.Assert.*')}assertEquals(${cursor}, );</template>
<template autoinsert="false" context="java-statements" deleted="false" description="assertTrue" enabled="true" id="org.eclipse.jdt.ui.templates.at_tag" name="at">${staticImport:importStatic('org.junit.Assert.*')}assertEquals(true, ${cursor});</template>
<template autoinsert="false" context="java-statements" deleted="false" description="assertFalse" enabled="true" id="org.eclipse.jdt.ui.templates.af_tag" name="af">${staticImport:importStatic('org.junit.Assert.*')}assertEquals(false, ${cursor});</template>
<template autoinsert="false" context="java-statements" deleted="false" description="assertNull。assertEqualsだとnullの比較はできない。" enabled="true" id="org.eclipse.jdt.ui.templates.an_tag" name="an">${staticImport:importStatic('org.junit.Assert.*')}assertNull(${cursor});</template>
<template autoinsert="false" context="java-statements" deleted="false" description="assertNotNull。assertEqualsだとnullの比較はできない。" enabled="true" id="org.eclipse.jdt.ui.templates.ann_tag" name="ann">${staticImport:importStatic('org.junit.Assert.*')}assertNotNull(${cursor});</template>

# assertSame, assertNotSame もたしているが基本ほとんど使わない。


なんてことをかんがえていたらJUnit5が心を入れ替えるようだ。。。。
https://github.com/junit-team/junit-lambda/wiki/Core-Principles#minimize-dependencies-especially-third-party


Goのテストみたいにassertすらないってのはやり過ぎだが、
必要なのはJUnit3+TestCaseを継承しないでよい+Annotaionでメタを表現+assertのLambda対応なんだと思う。

振り返り

  • 忙しくはなかったが、のんびりもできない一年だった。
  • iOS はiOS7, iOS8, 64bit対応と細々とバージョンアップ。iOS7対応よりiOS8対応のほうが大変だった。
  • C#ASP.NET MVC, Unity, Entity Framework, SignalR, WinForms, Silverlight などと半年以上格闘した。LINQ、拡張メソッド、async/await は便利だと再認識。Azure は思ったよりも使いやすかった。来年リリースされるであろう vNext が楽しみだ。
    • Entity FrameworkのCode Firstは便利だー。DBFluteの DateFromTo、LoadReffer、Sql2Entity、外出しSQLなどの便利機能をある程度Entity Frameworkで使えるようにしてそんなに不満がない状態になった。懸案事項のLocalDBに対してDBFluteでReplaceSchemaもできるようになった。
    • dotnetではSeasar系のプロダクトを採用することは多分もうない。JavaはまだまだSeasar系でいけるが。
  • 昔つくった今でも使っている自作のC++のプログラムをGoに移植中。Goはそこまで良い言語とは思えないが配布が楽。RustもよさげだがGoはGAEで動くからなー。
    • 来年Go製のプロダクトをリリースすることになりそうだ。Slim3のGo版を作ってる時間があるだろうか。。。
  • F#さわってみたが関数型の言語はどうもしっくりこない。
  • 今年も Jewel mania で遊んでいたが最高レベルの 600 クリアして、これ以上はない感じなので卒業。
  • ブレイキング・バッド は面白いといえば面白い。まだシーズン2までしかみてないが。。。
  • 来年はなんとかして今年手がつけられなかったアレを作ってみたい。

Go 1.4 on windows で "go: cannot find GOROOT directory:" が出るときの対応

通常は "go: cannot find GOROOT directory:" がでるのでは Go を c:\go にインストールせず、GOROOT を設定しない場合かな。

いままでGOROOTを設定していて Go1.3 までは大丈夫だったが、Go 1.4 から "go: cannot find GOROOT directory:" とでるようになった。
Go 側の仕様変更なのかとおもったがハマっている人もあまりいない感じ。
原因は GOROOT を ジャンクションで作成しているからのようだ。
ジャンクションを使っていて初めて遭遇した動かないパターン。
シンボリックリンクコマンドプロンプトを管理者として起動する必要があるのでできればつかいたくないんだけどな。。。

C:\dev>dir /B go*
go-1.3.3
go-1.4

C:\dev>set GOROOT=c:\dev\go-1.3.3

C:\dev>set PATH=%GOROOT%\bin;%PATH%

C:\dev>go version
go version go1.3.3 windows/amd64

C:\dev>set GOROOT=c:\dev\go-1.4

C:\dev>set PATH=%GOROOT%\bin;%PATH%

C:\dev>go version
go version go1.4 windows/amd64

普通に問題なく動く。
でもc:\dev\go を GOROOTにしたいので(バージョンを切り替えやすくするため)

C:\dev>set GOROOT=c:\dev\go

C:\dev>set PATH=%GOROOT%\bin;%PATH%

C:\dev>mklink /J c:\dev\go c:\dev\go-1.3.3
c:\dev\go <<===>> c:\dev\go-1.3.3 のジャンクションが作成されました

C:\dev>go version
go version go1.3.3 windows/amd64

c:\dev>rmdir go

C:\dev>mklink /J c:\dev\go c:\dev\go-1.4
c:\dev\go <<===>> c:\dev\go-1.4 のジャンクションが作成されました

C:\dev>go version
go: cannot find GOROOT directory: c:\dev\go

ジャンクションじゃだめなのとかとシンボリックでためす。
管理者としてコマンドプロンプトを起動しなおす。

C:\dev>rmdir go

C:\dev>set GOROOT=c:\dev\go

C:\dev>set PATH=%GOROOT%\bin;%PATH%

c:\dev>mklink /D c:\dev\go c:\dev\go-1.4
c:\dev\go <<===>> c:\dev\go-1.4 のシンボリック リンクが作成されました

C:\dev>go version
go version go1.4 windows/amd64

うごいた。Go 1.3.3でももちろん問題ない。

ちなみにフルパス指定じゃないとだめなようだ。

C:\dev>rmdir go

c:\dev>mklink /D go go-1.4
go <<===>> go-1.4 のシンボリック リンクが作成されました

C:\dev>go version
go version go1.4 windows/amd64

うまくいったようにみえるが、別にコマンドプロンプトを起動。

c:\>set GOROOT=c:\dev\go

c:\>set PATH=%GOROOT%\bin;%PATH%

c:\>go version
go: cannot find GOROOT directory: c:\dev\go

動かない。。。