リニア計画に異論「速さだけが夢なのか」に反論せずにいられなくて

余りにも酷い記事だったので何も言わずにいられなくなったので書き連ねます。

リニア計画関連のニュースやコラムは何故だか論理破綻しているものが多い気がする。

例えば、
【リニア中央新幹線】発券機に待合室、売店もなし 簡素すぎる駅に改善求める地元 - MSN産経ニュース

JR東海は当初、駅の設置を希望した地元自治体に建設費の負担を求めていた。ただ、負担軽減の声は根強く、同社は交渉難航による完成の遅れを嫌い、構造を簡素化、地元負担ゼロに方針を転換した。同社は新しい形態の中間駅を目指すが、中津川市の関係者からは「せっかくの駅なのに、活気のある駅にしてほしい」との声も漏れる。

JR東海「駅が欲しいのでしたら、これぐらいのご負担宜しくお願いします。」
モンスター市関係者A「えー、いやだー」
モンスター市関係者B「もっと負担額減らせよー」
モンスター市関係者C「もっと特色を持った駅にしろよー」
JR東海「(・・・このままでは完成が何時になることやら、そうだ!こうしよう。)」
JR東海「こちらで最低限の駅は建設します。この駅はネット予約のみですので切符売り場はありません。」
モンスター市関係者ABC「困難じゃ嫌だ!もっと豪華にしろ!!」
JR東海「(・・・負担したくないって言われたのに・・・。)」

ここの否定派の意見を見ても感情に任せた反論が多すぎて・・・。
意見:リニア新幹線VS東海道新幹線シミュレーション。たいして時間は変わらない驚愕の結果

では早速本題へ

「夢を見るのもいいが、覚めてしまえば夢は終わる」

良いですよね。
戦後の高度経済成長も東京オリンピックもバブルも経験されてるんですから。
今の若者(10代,20代)はそんな経験はほぼ皆無です。
70代の方はこの世に居る可能性は低いですが僕を含め若者世代はまだ現役です。
そんな時にリニア開業というようなイベントの1つや2つ合っても良いじゃないですか。

政策評価、公共計画の専門家として、国内外の大規模プロジェクトの成否を検証してきた経験に照らし、そう断言した。

このおじ様、経験とか哲学とか感覚的な意見ばかりで本当に教授なのかと疑ってしまいます。
あ・・・、冒頭にお察しくださいの一文がありますね。
少なくともこの業界の第一線の方ではないのでしょう。

引き合いに出すのが超音速旅客機コンコルドのたどった末路だ。音速の2倍を誇り、1976年に実用化。だが、燃費が悪く、飛行距離が短い上に料金は4倍、ひどい騒音も快適な空の旅とは程遠かった。2000年、パリ郊外の空港で墜落事故を起こし、終焉を迎えた。

調べてみると、確かにリニアは新幹線よりは燃費は悪い。ただ、料金は僅かな値上げで、騒音についても風切り音が主らしくそこら辺は対策済みのようです。
恐らく安全性のことを最後の一文で言いたいのかと思いますが、コンコルドとの比較では何か違う気がします。
せめて国産の類似ケースを出すべきかと。(存在するかどうかは別として)

 リニアはどうか。「スローライフという言葉があるように、遅い方がいいという人もいれば、速ければいいという人もいる。両方、正しい。ただ、リニアの売りは速さだけだ。ルートの8割がトンネルで、車窓から富士山の風景も楽しめない。利用者のニーズを理解し、ほかの価値よりも高速性が求められているのだから、リニアを選択したという哲学が感じられない」

トレードオフと言う言葉をご存じないようです。
極端な話、ワープが実現してもこんなこと言うのでしょうか?

他にも色々ありますが、取りあえずここまで。

nginx+lua+redis構築

メモ

事前準備:
下記ファイルダウンロード
make gcc openssl pcre インストール
/etc/ld.so.conf.d/luajit.confに/usr/local/libを記述
ldconfig

nginx-1.5.1
LuaJIT-2.0.0
lua-nginx-module-0.8.3
ngx_http_redis-0.3.6
redis-2.4.10-1.el6

redis-2.4.10-1.el6:
rpm -ivh redis-2.4.10-1.el6.rpm

LuaJIT-2.0.0:
make -j4 && make -j4 install
※-jでジョブ数設定(cpu*2)

nginx-1.5.1:
./configure \

    • prefix=/usr/local/nginx \
    • with-http_ssl_module \
    • with-http_additon_module \
    • with-http-gzip_static_module \
    • with-debug \
    • add-module=/usr/local/src/lua-nginx-module-0.8.3 \
    • add-module=/usr/local/src/ngx_http_redis-0.3.6

make -j4 && make -j4 install

起動スクリプト:
/etc/init.d/nginx(/etc/rc.d/init.d/nginx)
chkconfig --add nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: 35 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx-1.5.1/conf/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /usr/local/nginx-1.5.1/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx-1.5.1/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx-1.5.1/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
# # make required directories
# user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
# if [ -z "`grep $user /etc/passwd`" ]; then
# useradd -M -s /bin/nologin $user
# fi
# options=`$nginx -V 2>&1 | grep 'configure arguments:'`
# for opt in $options; do
# if [ `echo $opt | grep '.*-temp-path'` ]; then
# value=`echo $opt | cut -d "=" -f 2`
# if [ ! -d "$value" ]; then
# # echo "creating" $value
# mkdir -p $value && chown -R $user $value
# fi
# fi
# done
return
}

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
sleep 1
start
}

reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

さよならGoogleReader・・・その代替サービスは?(Feedly,DiggReader,AOLReader)

早いものでもう6月も最終週。
来週からは7月です。

7月と言えば・・・そうGoogleReaderがサービス終了を迎えます。
個人的には就活の時から今までずっと情報ソースとして愛用してきました。
これが無くなるとまたGoogleReader以前のブックマークをたどる生活に戻るのかと思うとぞっとしました。

なので無くなると聞いてから日々代替サービスを探してきました。

そして今日自分の中で目をつけていたサービスが続々とβ版としてサービスを開始したので早速試してGoogleReaderと比較してどうだったのかを書いていきます。

GoogleReaderとの比較項目
f:id:tya_ko_suke:20130628110043p:plain
【表示スピード】
GoogleReaderは今日まで使って使えなかったのは記憶に有る限りだと1回でした。
それ以外は常に安定し素早く情報を閲覧することができました。
特にスピードは重要で1日1000以上の記事を流し読みするので少しでもレスポンスが遅いとそれだけでもイライラします。
なので代替サービスではGoogleReaderに対して体感でどれぐらいのスピードなのかをチェックします。

【UIデザイン】
GoogleReaderもデザイン変更があったときには文字が大きくなったり、1つの記事の幅が大きくなり一覧性を損なうことがありました。
表示スピードもそうですが、このUIもシンプルかつ見易いレイアウトで無ければ1000以上の記事を読むモチベーションが保てません。
なので代替サービスではGoogleReaderと比べてシンプルで見易く出来ているかをチェックします。

【ショートカットキー】
GoogleReaderにてShift+?を入力するとショートカット一覧が表示されます。
使わないショートカットもありますが、GoogleReaderのショートカットは多いです。
代替サービスでも全部とは言いませんが、最低限記事閲覧に必要なショートカットキーが備わっているかチェックします。

【設定の豊富さ】
GoogleReaderに関わらずGoogleのサービスはカスタマイズ箇所が豊富です。
始めの頃はデフォルトで使用しますが慣れてくると色々と省略したり、違うサービスとの連携をしたりします。
こういうことが代替サービスでもどれぐらい出来るのかをチェックします。

【その他・総評】
上記4つに当てはまらない特筆すべき点をチェックします。



今回比較するのは「Feedly」「DiggReader」「AOLReader」の3つです。
この3つは下記の記事で一覧のテキスト表示があり無料のものを選んで比較対象としました。
http://www.gizmodo.jp/2013/06/71google_reader10.html

まずは「Feedly」
f:id:tya_ko_suke:20130628105930p:plain
【表示スピード】
昨日10分ほど落ちていましたがそれ以外ではスピードについては不満はありません。
記事を下へ下へと読んでいくと次々と既読になっていく使用はGoogleReaderにて選択と既読を両方押していたときよりも早く記事が読むことが出来ました。

【UIデザイン】
ぱっと見GoogleReaderに似ているのですが、初期状態だと一覧表示では無くサムネイル表示になってしまうところが難点です。
それ以外はフラットデザインを採用してたり、TODAYで今日配信された記事を確認出来たりと必要充分に作り込まれていました。

【ショートカットキー】
記事の上下、スター、既読未読は問題なく出来ました。
しかし、サイドメニューを移動するショートカットキーが無くあるのは次のフィードグループに移動するものでした。
これだと、お目当てのフィードグループを読みたいときにいちいちトラックポイントでクリックしないとできません。
これは大量に記事を消化するときに大変不便でした。
しかし、後発と言うことも有りTwitterFacebook等に共有できるショートカットキーがあるのは魅力的でした。


【設定の豊富さ】
表示系のみの設定項目が殆どである意味シンプルですが後発なのでUIやショートカットキーが自分で設定できれば良いかなと言う感想です。

【その他・総評】
自分が読んだものの履歴、スマホアプリ、多彩な共有等々迷ったらFeedlyというので間違いはなさそうです。

お次はDiggReader
f:id:tya_ko_suke:20130628105956p:plain
【表示スピード】
本日解禁なので安定性は?ですが早さに関しては申し分有りません。
ただFeedlyのように記事を選択するだけでは未読にならない点は少しマイナスです。

【UIデザイン】
確かにGoogleReaderに近いのですが、フィードグループの並びがインポートすると何故かバラバラになってしまいました。
そして未読数も表示されずUIデザインについてはまだまだなところがあります。

【ショートカットキー】
Shift+?が使えません。
既読、未読も使えません。
フォーラムの様な場所でも議論されているので今後増えてくる可能性はあります。

【設定の豊富さ】
これもまだまだ今後に期待です。

【その他・総評】
まだまだ発展途上ですが表示スピード自体は申し分ないので今後の改良次第では大化けしそうです。


最後にAOLReaderです。
f:id:tya_ko_suke:20130628110007p:plain
【表示スピード】
ゼロコンマ以下の世界ですが若干遅い感じがあります。
ただし、比較してようやく分るレベルなので使用自体には影響はありません。
まt、こちらも選択だけでは既読になりません。

【UIデザイン】
FeedlyをさらにGoogleReaderよりにした感じで、フィードグループの並びも変わらず違和感なく移行できました。
ただ、右側に結構大きいサイズの広告があるのが気になります。

【ショートカットキー】
Shift+?は使えて必要どころはきちんとカバーしています。
表示方法をショートカットで変えられるのは意外と便利でした。
ただ、未読、既読が何故か使えなかったり、フィードグループの移動でスクロールされなかったりと若干の不具合があります。


【設定の豊富さ】
こちらも今日からサービス開始なので最低限という感じでした。

【その他・総評】
Diggの後に触ったので余計良さが強調されました。
それを差し引いてもGoogleReaderから出来るだけ操作や見た目を変えたくない人はAOLがオススメです。


まとめると・・・・
【Feedly】→GoogleReaderの良いところは継承しつつ後発ならではの様々な機能追加が有りポストGoogleReader最有力候補。
【DiggReader】→発展途上。レスポンスは申し分ないので今後の改良に期待。フォーラムがあるのでDiggを推したい人は投稿すると良いかも?
【AOLReader】→まんまGoogleReader。個人的には1番お気に入り。Feedlyの様に機能豊富では無いが必要十分なGoogleReaderの機能を有しているので保守的な人にお勧め?

入門chef-solo写経中

chefをやってみたかったのでまず下記を参考に環境構築

「写経」から始めるChefクックブックの作成 - インフラエンジニアway - Powered by HEARTBEATS

ただ、最初からmysalの設定というまずは「Hello World」をしたかった自分としてはこれじゃ無い感。
(さらにrvmの他にrbenvでインストールする方法も発見後日要実験)
chef-solo で学ぶ chef の基本動作 - jedipunkz' blog

と言うわけで入門Chef-soloをご購入。
そのまま5章まで写経。
5章で最新のknife-soloを[rake install]ところでこける。

先人が解決方法を見つけているらしく下記実行して無事通過。
原因は lib/knife-solo/resources/patch_cookbooks/chef-solo-search 以下のファイルがごっそり無くなっていたこと。
ごっそり無くなった理由はsubmoduleになっていたかららしい。
Git Submoduleとは
git submodule init
git submodule update

knife-solo v0.3.0のrake installでabortedする場合 - F.Ko-Jiの「一秒後は未来」

Android Studio インストールでつまづいた(WIN7_64bit)

Android Studioをインストールしてみる

上記を参考にしてインストールしようとするも下の様なエラーが出て先に進めず。。。

f:id:tya_ko_suke:20130516120736p:plain

JAVA_HOMEが無かったので作るも駄目。
試しに再起動も駄目。
JDKを1.7_17からJDK1.7_21に更新しても同じ。

NO------------!!
っとなっているところでYahoo!リアルタイム検索を使って同じような事象が無いか検索。



・・・・・


ありました。
どうやら32bitのSDKが必要なみたいです。

と言うわけで入れてみると。。。。


f:id:tya_ko_suke:20130516121110p:plain


北北!
あとは画面に従ってインストール。

f:id:tya_ko_suke:20130516121502p:plain
f:id:tya_ko_suke:20130516121616p:plain

無事。完了!
早くいじりたいけどそろそろ仕事に戻ろう。


他にも下記のような事象もあるようなのでこちらも要チェック。

Android Studioが起動してくれないよ!(解決)

JavaのListについて

For-eachでよくやってしまうミス。
忘れないようにメモ

以下の様にするとfrutListのNoが最後に設定したNoになってしまう。

String[] fruitNameArray = {"apple","banana","orange"};
List<Fruit> fruitList = new ArrayList<A>();
Fruit fruit = new Fruit();
for(String fruitName : fruitNameArray) {
	int i = 1;
	fruit.setNum(i);
	fruit.setValue(fruitName.getValue);
	fruitList.add(fruit)
	i++;
}
for(Fruit fruit : fruitList) {
	System.out.println(fruit.getNum()+":"+fruit.getValue);
	/**
	*3:apple
	*3:banana
	*3:orange
	**/

正しい結果を得るには毎回Fruitクラスを生成するようにすれば良い。

String[] fruitNameArray = {"apple","banana","orange"};
List<Fruit> fruitList = new ArrayList<A>();
for(String fruitName : fruitNameArray) {
	Fruit fruit = new Fruit();
	int i = 1;
	fruit.setNum(i);
	fruit.setValue(fruitName.getValue);
	fruitList.add(fruit)
	i++;
}
for(Fruit fruit : fruitList) {
	System.out.println(fruit.getNum()+":"+fruit.getValue);
	/**
	*1:apple
	*2:banana
	*3:orange
	**/

参照型を使用しているときは参照渡しとか値渡しについて常に考えないといけない。