bashのプロンプトにGitのbranch名を表示させる

最近トピックブランチをきる習慣が定着してきたので、プロンプトにブランチ名を表示させたくなった。

このとおりにやっただけだけど快適になった。

ProductName 入門Git
濱野 純(Junio C Hamano)
秀和システム / 2310円 ( 2009-09-19 )


parseできない浮動小数点のJSON表記

やたらとこけるJSONを出力する商用のツールを追いかけていたら、浮動小数点の表記に問題があった。1.e-2っていうのはJSON的にはmalformed numberなんだろうか?

Perl

use strict;
use warnings;
use JSON;

print decode_json('{"num": 1.e-2}')->{'num'};

実行

$ perl jsontest.pl 
malformed number (no digits after decimal point), at character offset 10 (before "e-2}") at jsontest.pl line 5.

Python

>>> import json
>>> json.loads('{"num":1.0e-2}')
{u'num': 0.01}
>>> json.loads('{"num":1e-2}')
{u'num': 0.01}
>>> json.loads('{"num":1.e-2}')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python/2.7.2/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 8 (char 8)

node-mecabを使おうとしたらSegmentation faultした

恋するプログラムをCoffeeScriptで書いているんだけど、やっと7章まで進んだ。この章ではNode.jsでmecabが使う必要があるので調べてみたらnode-mecabっていうのを見つけた。

コンパイルは出来たんだけど、実際にrequireしようとしたらSegmentation faultした(Mac OSX(10.6)+Node6.8)

デバッグどうすんのかなぁ、あとnvmで入れたnodeってdebugオプションついてんだっけと見よう見真似で実行してみたがさっぱりわからん。

$ gdb --args /Users/kzfm/.nvm/v0.6.8/bin/node t.js
(gdb) run
Starting program: /Users/kzfm/.nvm/v0.6.8/bin/node t.js
...
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x0000000100de8cd1 in btrie_close ()
(gdb) backtrace
#0  0x0000000100de8cd1 in btrie_close ()
#1  0x0000000100de5fbc in MeCab::Dictionary::close ()
#2  0x0000000100dded6a in MeCab::Dictionary::~Dictionary ()
#3  0x0000000100ddb3c2 in MeCab::TokenizerImpl<mecab_node_t, mecab_path_t>::~TokenizerImpl ()
#4  0x0000000100de5844 in MeCab::TaggerImpl::~TaggerImpl ()
#5  0x0000000100de435a in MeCab::createTagger ()
#6  0x00000001007db588 in Tagger::New (args=@0x7fff5fbfddc0) at ../mecab.cc:17

t.js

var mecab = require('mecab')
console.log( mecab.parse("こちら葛飾区亀有公園前派出所"));

いい機会なのでデバッグのやり方を学んでおこう。

ProductName Debug Hacks -デバッグを極めるテクニック&ツール
吉岡 弘隆
オライリージャパン / 3360円 ( 2009-04-27 )


追記 12.02.14

MeCab::createTaggerでこけてるっぽいが、理由がよくわからんlinuxへのインストールはうまくいくのでとりあえずこっちで凌ぐか、別プロセスで呼び出すようにしようかね。

CoffeeScriptで自分のメソッドを呼び出す

exports.Test = class Test
  method_a: () -> method_b()
  method_b: () -> console.log("method b")

がmethod_bが見つからないっていうエラーが出た。

coffee> Test = require("./test").Test
[Function: Test]
coffee> t = new Test
{}
coffee> t.method_a()
ReferenceError: method_b is not defined

小一時間悩んだ挙句@が必要なことに気づいた

exports.Test = class Test
  method_a: () -> @method_b()
  method_b: () -> console.log("method b")

「道は開ける」を読んだ

「人を動かす」とセットで読んでみたんだけど、こっちはあまり響かなかった。自己啓発系はもうごちそうさまですね、本質的な部分は一緒だろうし。

ProductName 道は開ける 新装版
デール カーネギー
創元社 / 1680円 ( 1999-10 )


  • 「起こりうる最悪の事態は何か」を自問しよう
  • やむを得ない場合は、最悪の事態を受け入れる覚悟をすること
  • それから落ち着いて最悪状態を好転させるよう努力をすること
  • 小事にこだわるには人生はあまりに短い

perlのwafで悩んでみた

インフラまわりをやらせてもらえるようになったので、古いCatalystで動いているシステムを一新したくて何に置き換えようかと悩んでいる

Catalyst,Dancer,Mooliciousの比較

これをみるとDancerがいいような気がしてくるんだけど(いつもはFlask使っているので)。

種イモを買ってきた

富士郵便局の隣の國本種苗店でくりじゃがと三太郎を購入

1328941889

秋に植えたひとみ五寸(人参)の種が余っていると思ってたたので人参の種は買わなかったのだけど、家に返ってきてから見てみたら使い切っていたので、今度また人参の種を買いに行こうっと。

まきどきは人参が3/20以降で、大根が3月下旬だそうです。

大根は初めての挑戦なのでちょっと楽しみだ。

それから葉物は今年はプランターで育ててみることにした。

ProductName プランターでおうち畑 (ブティックムックno.935)

ブティック社 / 1050円 ( 2011-04-14 )


人を動かす

読んだのは文庫版のほうだけど

ゲーミフィケーションが内発的動機づけを促すデザインを考えることであれば、それをface to faceというか人間-人間系のインタラクションの中でうまくやるようなデザインを考えているのが自己啓発系の本だろうなぁと思ったので名著と言われるカーネギーの「人を動かす」を読んでみた。(まぁ読む順番としては逆な気もするが)

内容としては受け手側である方の内発的な動機づけをどう引き出すか?そのためにどう自分をデザインするかという観点で読むと色々発見があって面白いです。

本書を読む前は「馬鹿にむかって馬鹿だと接してナニが悪いんだ?サイエンティフィックに正しければそれでいいだろう」と思っていたが、読後にはそういうやり方はシステムのデザイン方法論としては間違っているかなと思い直した。対人関係ももう少しかんがえようっと。ゲーミフィケーションを使ってシステムを改善しようとしているのに、一番重要な自分っていうインターフェースのデザインが悪かったら結局楽しくないだろうしな。

ProductName 人を動かす 新装版
デール カーネギー
創元社 / 1575円 ( 1999-10-31 )


  • およそ人を扱う場合には、相手を論理の動物だと思ってはならない
  • 強い欲求を起こさせる
  • 議論に負けてもその人の意見は変わらない
  • 相手が反対するのは関心があるからで、大いに感謝すべきだ
  • 人にものを教えることはできない。自ら気づく手助けができるだけだ
  • 相手が即座にイエスと言える問題を選ぶ
  • 相手に思いつかせる
  • 命令せず意見を求める
  • わずかなことでも惜しみなく褒める

6次産業

これは高次のほうからのアプローチかな。体験を売るというあたりに立脚しているビジネスだな。 まぁそうしないとNPOっていう考え方にはならんしなぁ。

ProductName 日本の田舎は宝の山―農村起業のすすめ
曽根原 久司
日本経済新聞出版社 / 1680円 ( 2011-10-15 )


一次産業に高次の産業のオンするっていう立場だと根っこに売る物があるので、如何に売るかっていう視点にとらわれてしまうので、こういうやり方も面白いなぁと思った。

でも、強い一次産業に支えられた6次っていうほうが安定感があるような気がするんだが。

ProductName 農はショーバイ!
松木 一浩
アールズ出版 / 1365円 ( 2010-09-15 )


ゲーミフィケーションをどうデザインしていくか?

例えば職場なんかでも新規アイデア募集(インセンティブとして採用された方には図書券)なんてことをやったりするけど、そういう外発的動機付けのやり方だと持続力がないわけですね。

ちょっと前にOSQAを職場に導入してみたんだけど、ユーザーが職場全体の1割にも満たなくて、ちょっと苦戦している。新規登録がめんどくさいってのもあるだろうから、それはOpenIDでも使ってなんとかするとしても、参加したいと思わせるような仕掛けを作るのがなかなか難しいですね。

結局のところ内発的動機付けでポコポコとやる気がわいてくるようなフレームワークを考えないといけないわけだが、そういうのに対してゲーミフィケーションって名前がついてるようなので、よさげな書籍をチョイスして読んでみた。

本書はゲーミフィケーションをマーケの観点からバズワードとして捉えてマネマネとあおるようなないようでなくて、モチベーションのコントロール手法をどうやって社会に応用するかという観点からまとめてあるので、モチベーション3.0とかReality is Brokenなんかを読んだことのある人にはおすすめですね。

話の流れが、「ソーシャルメディアとは」から始まって「ソーシャルゲーム」の話しにながれて、モチベーションとは?ゲーム以外の事例の紹介という感じになっている。

ProductName ソーシャルゲームはなぜハマるのか ゲーミフィケーションが変える顧客満足
深田 浩嗣
ソフトバンククリエイティブ / 2310円 ( 2011-09-14 )


カイヨワによる遊びの分類

  • 競争
  • 偶然
  • 模倣
  • あいまい

プレイヤーのタイプ

  • アチーバー(達成意欲重視)
  • エクスプローラー(好奇心重視)
  • ソーシャライザー(交流重視)
  • キラー(競争心重視)

ゲーミフィケーションフレームワークの適用

  • 利用者と目的の理解
  • 可視化要素の検討
  • 目標要素の検討
  • ソーシャルアクションの検討
  • プレイサイクルの検討
  • ゲーミフィケーション適用後の改善の検討