2017-02-14 Tue

macos上のpyenvで任意のPythonのインストールに失敗したら

pyenvでPython 3.6.0使おうと思ってinstallしてみたら「zipimport.ZipImportError: can't decompress data; zlib not available」って言われてコンパイル失敗。

pyenvは最新版。macosは10.11.3のEl Capitan。

僕はPythonのインストールすらできないのか。

[overlast@]$pyenv install 3.6.0
Downloading openssl-1.0.2g.tar.gz...
-> https://yyuu.github.io/pythons/b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33
Installing openssl-1.0.2g...
Installed openssl-1.0.2g to /Users/overlast/.pyenv/versions/3.6.0

Downloading readline-6.3.tar.gz...
-> https://yyuu.github.io/pythons/56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43
Installing readline-6.3...
Installed readline-6.3 to /Users/overlast/.pyenv/versions/3.6.0

Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...

BUILD FAILED (OS X 10.11.3 using python-build 1.0.7-12-g235eea3)

Inspect or clean up the working tree at /var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487
Results logged to /var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487.log

Last 10 log lines:
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__main__.py", line 4, in <module>
    ensurepip._main()
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__init__.py", line 189, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__init__.py", line 102, in bootstrap
    _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/xy/g9d8p2x14kz1f82097l4fx140000gp/T/python-build.20170213192331.22487/Python-3.6.0/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1


なるほど。こういう意味不明なエラーはLinuxでは出ないからXCodeがらみっぽい。

zlibのインストール


こういうときは、まずはzlibを入れ直す。

[overlast@]$brew install zlib
==> Installing zlib from homebrew/dupes
==> Downloading https://homebrew.bintray.com/bottles-dupes/zlib-1.2.11.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring zlib-1.2.11.el_capitan.bottle.tar.gz
==> Caveats
This formula is keg-only, which means it was not symlinked into /usr/local.

macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/zlib/lib
    CPPFLAGS: -I/usr/local/opt/zlib/include
For pkg-config to find this software you may need to set:
    PKG_CONFIG_PATH: /usr/local/opt/zlib/lib/pkgconfig

==> Summary
🍺  /usr/local/Cellar/zlib/1.2.11: 12 files, 374.5K



xcode-selectのインストール


次にmacos使ってるときは、xcode-selectを入れ直す。
実行したらmacosがxcode-selectをダウンロードしてくれる。

[overlast@]$ xcode-select --install
xcode-select: note: install requested for command line developer tools


ここまでやったら一旦、Pythonのinstallを試みる。

[overlast@]$pyenv install 3.6.0
Downloading openssl-1.0.2g.tar.gz...
-> https://yyuu.github.io/pythons/b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33
Installing openssl-1.0.2g...
Installed openssl-1.0.2g to /Users/overlast/.pyenv/versions/3.6.0

Downloading readline-6.3.tar.gz...
-> https://yyuu.github.io/pythons/56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43
Installing readline-6.3...
Installed readline-6.3 to /Users/overlast/.pyenv/versions/3.6.0

Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
Installed Python-3.6.0 to /Users/overlast/.pyenv/versions/3.6.0


いけた。

今回はいろいろあって何故かmacos上で書いてるから、いろいろ対処方法が未知な不具合で困りそう。


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2016-02-25 Thu

2016年02月25日(木) 昨日とは違ってとても快調

昨日の朝あれほど凄かった頭痛・胃の不快感・貧血・吐き気などは一切無く、とても気持ち良い朝だった。
いったい何だったのだろうか。(後で風邪のひきかけだったのかなと感じた)

会社に向かう道が昨日ほどでは無いけと寒い。
ピリっとした気分で最寄り駅から渋谷に向かった。

電車に乗った時に、たまたま女性の頭が目の前に来たのだが、どう考えても「さんまの蒲焼」の臭いがしてた。
僕も立ち食いそばを食べると頭が醤油臭くなるので、そのようなものだろうなと思ったりした。

会社についてIssueを解決するコードを書いた。
これは週末にテストして、早ければ来週のリリースに反映できると思う。

勢いが余っていたので過去に書いたコードとかも検査してみると、これは完全に駄目だなっていうコードを見つけた。
直すことにして、ある程度直した。直した成果が出るには気長さが必要で多分2ヶ月後位なのではないか。。

ランチを食べるため宮益坂を上がる。牛カツもと村の横を通ったけど、あの列は1時間待ちだ。
宮益坂のもと村も気軽に食べに行けないお店になってしまったか。
結局、吉成で定食を食べた。

午後はデータの精査をしながら少しずつ不具合を減らす作業。
人名と分かっているエントリが人名になるように、辞書の更新に影響出ないような範囲で工夫した。
今日リリースした辞書データは意外と面白い仕上がりになっている。
けど、他の人にはどうでも良いことだ。まだまだ弱点が多い。

夕方は飛行機チケットの取得でワタワタした。
自分で予約しない全てのものは油断ならないということを再確認した。

夜は帰る直前にうっかりDEIMの予稿集を開いてしまい、うっかり辞書の更新を忘れていた。
一応日が変わってすぐにリリースしたので許してください。しかもブログたくさん書きましたし。おやすみなさい。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2016-02-18 Thu

2016年02月18(木) 週に1回くらいはブログ書くか

先日の Hadoop / Spark Conference Japan 2016 に参加した時に、ogi先輩と話して「やっぱり、ブログ書かないと駄目だね」っていう話になった。そして週に1回くらいは中身がなくてもブログ書かこう、とお互いに決意をしたので、まずは実行しておく。

よくよく考えると、ブログは3日坊主の僕がこの11ヶ月くらい mecab-*-NEologd をできているわけだし決意の力はすごい。
特に公に宣言すると自分の言ったセリフが自分の背中を押してくれる感じがする。
NEologd と同様にこのブログも再開できたら嬉しい。頑張ってくれ僕の脳みそ様。

日記を書くか、テーマを決めて書かないとブログは記事としてまとまらない、という初歩的なことを思い出すのに1時間位かかったりしているし、たった3段落書くためにその数倍も書いて消してるので、ブログを書く作業も当面はリハビリが必要になる。

この1時間で分かったことは、この様に外部に公開されたところに自分のためになる文を残しておくことは、とても癒やされる感じがする、ということだ。自分の考えている仕事と関係のない感情的なことを論理抜きにして形にすることは、とても楽しい。何を書くにしてもいちいち理由の説明をしなくて良い。とても楽だ。

このブログも全体としてはダラダラと10年以上書いてるので、今後もダラダラと書いて行けたらと思う。

本当は画像もペチペチと貼りたい。そのためには、画像を簡単にアップロードできると嬉しい。だが、そのためには今のままでは駄目で、新しいブログシステムを導入するか、ブログポータルに移植する必要がある。勉強になるしまずは前者をやるか。。

あと、記事を書く時はタイマーをかけておくことにしよう。まったく中身は無いが、久々だしこれで良い。おやすみ。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-07-03 Fri

Word2Vec の Web API を作れる word-vector-web-api を公開しました

Word2Vec や GloVe などで構築済みな単語ベクトルのモデルを使った Web API を作ることができる word-vector-web-api を公開しました。🎉🍣🍻🍰🍖



これがあると docker コマンドと1.5 GByte 程度のメモリが使える環境なら、以下の 5 つのコマンドを実行することで(厳密にはもう少し手順がありますが)、以下のサンプルの様な結果(日本語 Wikipedia のダンプデータから word2vec コマンドで作ったモデルを使った Word2Vec の distance アプリケーションと同等の結果)を得られると思います。

$ git clone --depth 1 https://github.com/overlast/word-vector-web-api.git
(略)
$ cd word-vector-web-api
$ ./libexec/download-sample-jawiki-model.sh
(略)
$ ./libexec/create-docker-image-sample-word-vector-web-api-s1.sh
(略)
$ ./libexec/run-docker-container-of-sample-word-vector-web-api-s1.sh
(略)
$ curl "http://0.0.0.0:22670/distance?a1=タモリ"
{"format": "json", "items": [
{"term": "明石家さんま", "score": 0.81528389453887939}, {"term": "さんま", "score": 0.80035871267318726},
{"term": "ビートたけし", "score": 0.79251360893249512}, {"term": "所ジョージ", "score": 0.76938104629516602},
{"term": "とんねるず", "score": 0.7473946213722229}, {"term": "爆笑問題", "score": 0.73406845331192017},
{"term": "司会", "score": 0.72929728031158447}, {"term": "森田一義", "score": 0.72818166017532349},
{"term": "島田紳助", "score": 0.72627973556518555}, {"term": "中居正広", "score": 0.72301918268203735},
{"term": "山田邦子", "score": 0.71929085254669189}, {"term": "笑福亭鶴瓶", "score": 0.71266698837280273},
{"term": "ボキャブラ天国", "score": 0.70373982191085815}, {"term": "笑っていいとも!", "score": 0.70154005289077759},
{"term": "関根勤", "score": 0.70032232999801636}, {"term": "明石家マンション物語", "score": 0.70010024309158325},
{"term": "冠番組", "score": 0.69675129652023315}, {"term": "いいとも", "score": 0.69370967149734497},
{"term": "石橋貴明", "score": 0.68870562314987183}, {"term": "オレたちひょうきん族", "score": 0.68832921981811523},
{"term": "ものまね", "score": 0.68563121557235718}, {"term": "松村邦洋", "score": 0.68541419506072998},
{"term": "ボキャ天", "score": 0.68538647890090942}, {"term": "ウッチャンナンチャン", "score": 0.68278044462203979},
{"term": "テレフォンショッキング", "score": 0.68264764547348022}, {"term": "コーナー司会", "score": 0.68219667673110962},
{"term": "浅草キッド", "score": 0.68129265308380127}, {"term": "今夜は最高!", "score": 0.67805778980255127},
{"term": "今田耕司", "score": 0.67686200141906738}, {"term": "萩本欽一", "score": 0.67244911193847656},
{"term": "みのもんた", "score": 0.67096501588821411}, {"term": "北野ファンクラブ", "score": 0.66866558790206909},
{"term": "中居", "score": 0.66742992401123047}, {"term": "鶴瓶", "score": 0.66699719429016113},
{"term": "志村けん", "score": 0.66617244482040405}, {"term": "大橋巨泉", "score": 0.66485863924026489},
{"term": "上岡龍太郎", "score": 0.66450983285903931}, {"term": "ナインティナイン", "score": 0.66341793537139893},
{"term": "松本人志", "score": 0.66267943382263184}, {"term": "和田アキ子", "score": 0.66127783060073853}
], "query": "タモリ", "method": "distance", "sort": "cosine similarity", "status": "OK", "total_count": 40}


実はかなり前から GitHub 上には公開していたのですが、決して使いやすい状態とはいえませんでした。
なので、かなりシンプルにサンプル出力を試せる状態にしました。

どこがポイントなのか


今回、word-vector-web-api をまとめるに当たってのポイントは以下の3点でした。

- 構築済みの日本語 Wikipedia モデルを配布
- Dockerfile を配布
- インストール手順書を記述

簡単に説明してみます。

構築済みの日本語 Wikipedia モデルを配布

Word2Vec はすぐに試せる構築済みな日本語のモデルがあまり積極的に配布されていなかったので、使っていなかった人も多かったのでは無いでしょうか。

今回は、いろいろ試した結果、Google Drive さんを利用させて頂いてモデルを配布しています。

モデルをダウンロードして解凍するためのダウンローダーを作ってみて、意外と便利だったので今後も再利用していこうと思います。

配布しているモデルは限られた時間の中で複数の前処理を一応試してみて、構築後のモデルを使ってみた結果が一番良さそうなものをアップロードしました。

パラメタの探索とか、定期的なアップデートとか、いろいろな課題がありますがこれはmecab-ipadic-NEologdと同じで、ぼちぼち更新していこうと思います。

今後は日本語 Wikipedia 以外のコーパスを使ったモデルの構築や、Word2Vec より顕著に良い性能がでる手法が出てきたらそれを使っての構築を考えていますので、自前のモデルを構築しない派の方はご期待ください。

Dockerfile を配布

環境構築は Ansible の Playbook とか用意しとけば済むかなと思いましたけど、@chezou さんと @sowawa さんから「Dockerfile 書きましょう」と同日に言われたので、今の時代は Dockerfile が無いと駄目な時代なのだなと勉強になりました。ありがとうございました。

結果として docker build できる環境と 1.5GByte 程度のメモリがあれば、環境に依存するトラブルは少なくなったので良かったです。

実際に製品として使う場合は、Docker のままだと厳しいでしょうし、研究寄りのエンジニアさんは OS に直にインストールしたword2vec-msgpack-rpc-server に直にリクエストした方が無駄が無くてより良いでしょう。



そもそも word-vector-web-api を作ったのは、word2vec-msgpack-rpc-server と nginx-msgpack-rpc-module が個人的に便利なのでオススメしたいけど単体だと試すのが面倒で試してもらえ無さそうだから妥当なパッケージングをしてモデルも付けて配布してより便利な世の中にしよう、という考えがあってのことです。



word2vec-msgpack-rpc-server と nginx-msgpack-rpc-module を使って自分の実装を世に広めたり、または word-vector-web-api をカスタマイズして便利な機能を製品に組み込んで見たり、いろいろ試してみてください😊。

インストール手順書を記述

とても詳細な手順書を書きましたので、慎重に読み、コピペすることでつまづく確率が激減すると思います。

Docker 自体や Unix コマンドに関する知識は自分で調べなきゃいけませんけど、それは許してくださいね😓💦。

終わりに


word-vector-web-api は、僕が社内でコンテンツ管理ツール向けなどで作った Web API の OSS 版です。

割と簡単な作りですが、このくらいでもメモリを増やしてサーバプロセスを増やせばレスポンスに関する問題は減ります。

精度に関しては、距離関数よりはモデルの構築手法と検索クエリの作成手法に強く依存するので、word-vector-web-api の外側で解決すべき問題が山積みになっている状態だと思います。

モデルの構築の際には mecab-ipadic-NEologd を使うことで多くの問題が解決できると思います。



リリース済みのものの改善、サンプルモデルの種類の追加、演算に必要なメソッドの追加は予定があるので、今後のアップデートを生暖かく見守りつつ、たま〜に Update してみて下さい。🍻

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-06-23 Tue

mecab-ipadic-NEologd v0.0.2 をリリースした

今日、6/23の朝 [2015-06-23] に、mecab-ipadic-NEologd の v0.0.2 をリリースしました🎉。

https://github.com/neologd/mecab-ipadic-neologd/releases/tag/v0.0.2

前回の v0.0.1 からの大きな差分は以下の5点です。

- 3ヶ月分の新語
- Unicode 6.0以前の絵文字に読みと品詞情報を付与
- IPA辞書に未再録で区切り間違う or 読みを付与できない副詞
- unk.defを変更して記号を記号,一般に
- IPA辞書の一部のエントリの読み仮名誤りを修正

3ヶ月分の新語


v0.0.1以降に新しく再録したエントリは、diff以下で記録しています。

https://github.com/neologd/mecab-ipadic-neologd/tree/master/diff

v0.0.2以降の新語についても diff以下に出力しますのでご参照ください。

Unicode 6.0 以前の絵文字に読みと品詞情報を付与



Unicode 6.0 以前の絵文字への読み付与を行いました。
Unicode絵文字の文中での使われ方によって、品詞情報や付与されると期待される読み仮名が変わることから、一つの絵文字に複数の品詞情報と読み仮名を付与する必要がありました。

このようなタスクに利用できる既存のリソースにmozcの絵文字に関するエントリが挙げられます。

- mozc/emoji_data.tsv at master · google/mozc
-- https://github.com/google/mozc/blob/master/src/data/emoji/emoji_data.tsv

日本語入力用の辞書は複数のキーワードから一つの絵文字にたどり着く用途のエントリになっています。それに対して、形態素解析用の辞書は一つの絵文字にマッチするエントリ群を、その絵文字が出現した文脈にふさわしい順に並べ替えるのが目的になっています。

例えば、日本語入力が⚾️や🏀に「ボール」という文字列で見つかれば良いのに対して、形態素解析ではこれらの絵文字をボールとして扱ったり、競技名として扱ったりする必要があります。

そのため、mozcのリソースを参考にしながら結局全部自分で手打ちする必要がありました。

その結果、意外と面白い仕上がりになっています。



今後は Unicode 7.0 以降の絵文字に対応したり、文脈ごとによりふさわしい品詞情報が選ばれるようにコストを調整したり、より妥当な読み仮名を付与したりします。

IPA辞書に未再録で区切り間違う or 読みを付与できない副詞



IPA辞書とその他のオープンソースな形態素解析辞書の一番大きな違いは、実は用言系のエントリにあると僕は個人的に感じています。

今回は用言の中でもあまり空間が大きくない副詞エントリを充実することに着手しました。

行ったことは以下の二つです。

- IPA辞書に再録されていない副詞を集めて、副詞のシードとする
- 笹野さんの論文で述べられている未知語処理のルールの一部を参考にして、副詞のシードを展開する
-- 参考文献 : 「笹野遼平, 黒橋禎夫, 奥村学: 日本語形態素解析における未知語処理の一手法 -既知語から派生した表記と未知オノマトペの処理-, 自然言語処理, Vol.21, No.6, pp.1183-1205 」
-- https://www.jstage.jst.go.jp/article/jnlp/21/6/21_1183/_article/-char/ja/

このくらいやると、以下のようになります。



「じゅわっ」とか「じゅわっと」が副詞なの?っていうことも議論できると思いますが、副詞的な機能をもつトークンの過分割を抑制することを主目的としており、まずはアウトプットしようということで、このまま出しています。

品詞情報の調整とか、Web固有の曖昧な表記の回収をしてエントリを取捨選択する必要は大いにありますし、原型をどこにマッピングするのかも悩みどころです。

もう少し詳しく書きますね。

IPA辞書に再録されていない副詞を集めて、副詞のシードとする


この作業のために各種形態素解析辞書と Web上をクロールしたエントリからテーブルを作り、そのテーブルから副詞として再録するのが妥当なエントリを高精度なルールと、人手によるチェックで選びました。

今のところ既存の形態素解析辞書が対応できている副詞が再録されていないことが多々あります。

そのようなエントリは「副詞なのか形容詞なのか名詞なのか、、」と迷っているものだったりします。

笹野さんの論文で述べられている未知語処理のルールの一部を参考にして、副詞のシードを展開する


展開する際には色々試したのですが、生成されたエントリ全体を見て、辞書エントリ化しても大きな影響がなさそうに感じた生成ルールだけ足しています。

先行研究は文脈が与えられたうえで行う推定なので、あらかじめエントリ化する場合との違いを感じながらトライ&エラーしていました。

展開する際のルールの一部を挙げておきます。

- 文字 ngram の繰り返し検知と、繰り返し回数の追加
- 「HHっと」などの副詞シードに対して「HHッと」「KKっと」「KKッと」を生成
- 「HHっと」などの副詞シードに対して、長音記号と小書き文字を挿入
- 「HHっ」な副詞シードに対して「HHッ」「HHっと」「HHッと」を生成
- など

unk.defを変更して記号を記号,一般に



今まで、mecab-ipadic-NEologdではunk.defに手を加えていませんでした。

ただ、記号は記号になって欲しいなという気持ちがあったので、SYMBOLだけいじりました。

https://github.com/neologd/mecab-ipadic-neologd/blob/master/misc/dic/unk.def

IPA辞書の一部のエントリの読み仮名誤りを修正


これはWeb上でMeCabの読み付与に関するtweetを見ていて気がついたのですが、確かに読み仮名がかなり明らかに最適ではないエントリがありました。

ただ、誤りがある位置のヒントがあって誤りを探すのと、全体を漠然と探すのとでは難易度が大きく違います。

https://github.com/neologd/mecab-ipadic-neologd/tree/master/misc/patch

前者は今後も個人的に続ければ良くて、後者はハッカソンとかで複数の辞書エントリ作成タスクの適合者な方と一緒に、目標を定めながら(例 : 今回は動詞!とか)行うのが良いのかなと思っています。




おわりに


3ヶ月分の成果の一部をまとめて v0.0.2 をリリースしました。

次の v0.0.3 は形容詞対応が終わったら出そうと思います。

定期的なアップデートは次の3ヶ月も継続します。まずは一年続けてみます。

3ヶ月経ってみたら、GitHub の unique cloners が1000を超えていて(ありがとうございます)、いろいろな人が形態素解析を利用しているのだなという雰囲気は感じました。でも、どこでご利用頂いてるのかは教えて頂けた分以外は全くわかりません。

mecab-ipadic-NEologd をご利用頂いている方は事例をネット上で呟いたり、イベントでご発表いただいたり、 @overlast まで DM などでコッソリ教えて頂けますと、とてもやる気が出ますので、是非教えてくださいね。

今後もよろしくお願いいまします。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-04-02 Thu

2015年04月02日 必要なら結論を訂正することの必要性

昨日は帰宅中に風邪が治った感じを感じながら帰宅したのだけど、
実際にはまだ喉が痛く、朝方は咳が酷い。
治るまであと2日くらいか。体内時計のズレはあっさり治った

やっぱり日記を書かないと蓄積されない。
頭の中を整頓する効果もあるので、テンパってる時以外は書くようにしたい。
何もない日は自分の Tweet を拾ってエントリにしていく様にしよう。

昨日からやってたデータから無駄なフィールドを消す処理の実装は夕方に突然終わった。
あいかわらず工数の見積もりを間違うけど、今回は良い間違えだった。
削減の結果、無圧縮の状態でデータ長を元の1/3にする処理ができた。
今後はこれを使えば良いだろう。
xzで圧縮すると言っても、時間が有限なので元データは小さい方が嬉しい。

木曜なのでアルゴリズムイントロダクションの輪読。
なんと細々と続いて2冊目に突入した。めでたい。
15章の内容は動的計画法。平和な内容で素晴らしい。
帰納法をサボらないで使わないと駄目、という教訓を得た。

夕方はとあるプログラムを書いていた。
このプログラムはイメージ的には、殺虫剤を食らって10秒後に起き上がるゴキブリに対して、薬剤節約のため9秒ごとに殺虫剤をかける、みたいな処理が必要。

以前書いたことがあって、ふんわりイメージしながら書いたら普通にロックした。
こういう時に助けてくれるロックフリー王子がいたら良いのだけど弊社に王子は来ない。
まもなく解決方法を思い出して安心したけど、今日頑張ると日が変わるなと思ってやめた。

夜遅いけど K さんの新卒入社祝いのためいつも空席がある北海道へ。
隣に座ってみてなかなか奇跡的だと感じた。そしてめでたい。

人生の分岐点に立ったときに10歩だけ楽じゃ無さそうな方向に進んで様子をみたり、
ちゃぶ台返しする前にひっくり返したらやばそうなものを避けてみたり、
そういうことを考えてみることは大切で、人生が大きく変わるのだなと改めて思った。

あと、@Yappo さんが温泉ソムリエっぽくなってて、次から次にオススメ温泉を教えてくれた。
「ほったらかし温泉ってすごい名前だな〜neologdで拾えてるのかな拾えてた行ったみたいな」などと考えてた。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-04-02 Thu

LINE DEVELOPER DAY_2015 Tokyo が 2015 年 4 月 28 日に開催

2015 年 4 月 28 日に、LINE DEVELOPER DAY_2015 Tokyo というイベントが開催される。

- LINE DEVELOPER DAY_2015 Tokyo 開催のお知らせ
-- http://developers.linecorp.com/blog/ja/?p=3479

開催日時: 4月28日(火) 10時開場
場所: 渋谷ヒカリエ 9F ヒカリエホール
参加費: 無料


タイムテーブルを見てみたら、僕も見てみたい発表がいくつかあった。
あとで録画を YouTube とかで見られる様になったら嬉しいと感じた。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-04-02 Thu

Treasure Data が凄そう

朝起きたら @myui さんと @kamipo さんが Treasure Data に入社してた。
おめでとうございます ^^。


Treasure Dataには、@tagomorisさんが3月入社で、@kamipoさんと私@myuiが4月入社と、事業拡大に向けてエンジニアの採用強化中です。


新しい概念を考案・構築して実現する能力を持っている方々が輝くのは自分にとって目標になるし、おまけに友人知人なので嬉しい。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-04-01 Wed

2015年04月01日 年度初め効果なのかふと我に返る

今年度はアウトプットの年なので、3日坊主でも何でも、多少どこかに自分の考えたことを書いておかないと、アウトプットしたものが無意味な存在になった時に何も残らなくなるなと思った。

年度末の日報を眺めると辞書の公開が決まったあたりから日常生活に割く時間が足りなくなっていたようだ。
今日になって突然、何となく回ってなかった部分に気が回る様になってきた。

午前は辞書の更新作業とその後始末。これは今後数年粛々とやりたい。

ランチにかけて歴史的経緯のあるデータから無駄なフィールドを見つけて削る処理を書く。
以前にも書いたことがあるけど、その時よりも無駄なフィールドが増えていて、何となくクーロン城の映像が頭に浮かぶ。

夕方前はデンソーアイティーラボラトリさんで @uchumik さんと雑用。
多人数でやると消化が速いが、一人でやると悩みそうな作業。
この作業を来年一人でやって悩む可能性があるのかと思うと悪寒で鳥肌が立つ。
他方、どうせやるなら効果的にやらないとなという真面目な思いで頭が満たされている。
今年は何もトラブルが起きずに最後までいくと良いですね。

帰り際に DSIRNLP 07 を4/29にやることにする。
会場はデンソーアイティーラボラトリさんなので、とてもありがたいし安心感がある。

夕方はまた戻ってデータの削減作業。
これは、地味にあと数日かかる気がしてきた。

水曜日なので夕方は Python によるデータ分析入門の輪読。
読み進むにつれて、その便利っぽさが本当に便利なのか怪しくなってくる。
裏側でどう処理しているかが分かるし、高速って言っても裏はC/C++だろうし。
ループ処理が書いてあると見通しが悪い、と感じる人と、処理が隠蔽されているとキモいしAPIがキモイ、って感じる人と、いいろなんだろうなと思う。
とはいえ、大変に普及しているライブラリなのだから、その使い心地から感じるものがあるまでは使わないとなと思う。

ここしばらくの寝る前の体調を思い浮かべると、体のリズムが理想より5時間ずれている気がする。
風邪もほぼ治ったので今日から戻していく。しばらくランチ後に眠いだろう。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2015-04-01 Wed

文字情報基盤の文字をJIS範囲の文字への変換するMJ縮退マップ

約6万字の文字情報基盤の文字を約1万字のJIS範囲の文字に変換するためのMJ縮退マップというデータが試験的に公開されている。そのうち正式版が出るようだ。

こういうデータは計算機上で扱う文字の種類数を減らしたい人間からするととてもありがたい。

MJ縮退マップとは

MJ文字情報一覧表で整備されている戸籍統一文字と住民基本台帳ネットワークシステム統一文字を合わせて整理した、約6万文字の文字情報基盤の文字(MJ文字集合)と、約1万文字のJIS X 0213(JIS第1水準~第4水準)の文字との対応関係を、辞書や人名に係る各種告示等を根拠として整理した物です。


以下を組み合わせてフィルターを作ることになるようだ。

- MJ縮退マップVer.0.1(検証版)の公開
http://mojikiban.ipa.go.jp/4141.html

- MJ文字情報一覧表Ver.004.02
-- http://mojikiban.ipa.go.jp/1311.html

それにしても、実際にUTF-8なコードで雑に使える map 構造するまでにちょっと面倒だなという印象。

ほぼ文字と文字の組だけで示してくれれば良いのに、キーとなるMJ******な文字を
別のテーブルから持ってこないといけない。ダルい。でも、活用するしか無い。

多分そのうち活用させていただきます。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2014-01-23 Thu

ドメインを失効しそうになった

この記事は2014年01月23日に書いた。

うっかりoverlasting.netの費用を払い忘れていて、ドメインを失効しそうになった。
数日プログが見えなかったかも知れない。

プログを書くために入力フォームにアクセスして気がついた。

次に失効するかも知れないのは2017年01月20日[2017-01-20]である。
3年後に気をつけよう。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2014-01-20 Mon

日本の県名にマッチする正規表現

ググってすぐに見つからなかった日本の県名の正規表現を、
主に観賞用としてPerlでRegexp::Assembleを使って生成した。

生成した正規表現は以下。コピペ用。

(?^u:(?:(?:(?:[富岡]|和歌)山|(?:[広徳]|鹿児)島|(?:[石香]|神奈)川|山[口形梨]|
福[井岡島]|[佐滋]賀|宮[城崎]|愛[媛知]|長[崎野]|三重|兵庫|千葉|埼玉|奈良|
岐阜|岩手|島根|新潟|栃木|沖縄|熊本|秋田|群馬|茨城|青森|静岡|高知|鳥取)県|
大(?:分県|阪府)|京都府|北海道|東京都))


使うときはコピペして、xとかで冗長な正規表現を許容するか、改行を消して使う。

生成コードは
https://github.com/overlast/private/blob/master/lang/perl/nlp/wikipedia_ja/generate_prefecture_name_regexp.pl
に置いておいた。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2014-01-20 Mon

日本語Wikipedia中の国名にマッチする正規表現

日本語Wikipedia中の国名にマッチする正規表現が欲しかったんだけど、
ググっても見つからなかったので、PerlでRegexp::Assembleを使って生成した。

ソースはWikipediaの国の一覧。
http://ja.wikipedia.org/wiki/%E5%9B%BD%E3%81%AE%E4%B8%80%E8%A6%A7

生成した正規表現は以下。コピペ用。

?^u:(?:ア(?:ル(?:(?:[バメ]ニ|ジェリ)ア|ゼンチン)|ン(?:ティグア・バーブーダ|
[ゴド]ラ)|メリカ(?:連合国南部連合|合衆国)|フ(?:ガニスタン|リカ)|イ[スル]ランド|
ゼルバイジャン|ラブ首長国連邦)|モ(?:ン(?:テネグロ|ゴル国)|ーリ(?:シャス|
タニア)|ル(?:ディブ|ドバ)|(?:ロッ|ナ)コ|ザンビーク)|セ(?:ント
(?:クリストファー・ネイビス|ルシア)|ルビア(?:・モンテネグロ)?|(?:ーシェ|
ネガ)ル)|ス(?:(?:ウェーデ|ペイ|ーダ)ン|リ(?:ランカ|ナム)|ロ(?:バキ|ベニ)ア|
ワジランド|イス)|(?:中(?:華(?:人民共和|民)|央アフリカ共和)|朝鮮民主主義人民共和|
プロイセン王|大韓民)国|マ(?:(?:ケドニア|リ)共和国|ーシャル諸島|ダガスカル|
レーシア|ラウイ|ルタ)|コ(?:ンゴ(?:民主)?共和国|ートジボワール|スタリカ|ロンビア|
ソボ|モロ)|エ(?:(?:ストニ|チオピ|リトリ)ア|(?:ルサルバ|クア)ドル|ジプト)|
イ(?:ンド(?:ネシア)?|ラ[クン]|スラエル|エメン|ギリス|タリア)|ト
(?:(?:リニダード・トバ|ー)ゴ|ル(?:クメニスタン|コ)|ンガ)|パ(?:ラ(?:グアイ|オ)|
プアニューギニア|キスタン|レスチナ|ナマ)|カ(?:(?:ザフスタ|メルー)ン|ーボベルデ|
ンボジア|タール|ナダ)|サ(?:ン(?:トメ・プリンシペ|マリノ)|(?:ウジアラビ|モ)ア)|
バ(?:(?:ーレー|チカ)ン|ングラデシュ|ルバドス|ヌアツ|ハマ)|ブ(?:ル(?:キナファソ|
ガリア|ネイ|ンジ)|ラジル|ータン)|ベ(?:ネズエラ|ラルーシ|トナム|リーズ|ルギー|
ナン)|チ(?:ェコ(?:スロバキア)?|ュニジア|ャド|リ)|ボ(?:(?:スニア・ヘルツェゴビ|
ツワ)ナ|リビア)|リ(?:(?:トアニ|ベリ|ビ)ア|ヒテンシュタイン)|ウ(?:ズベキスタン|
クライナ|ルグアイ|ガンダ)|ニ(?:ュージーランド|カラグア|ジェール|ウエ)|フ
(?:ィ(?:ンランド|リピン|ジー)|ランス)|(?:(?:赤道ギ|ケ)ニ|ユーゴスラビ)ア|キ
(?:(?:プロ|リバ|ルギ)ス|ューバ)|ガ(?:(?:イア|ー)ナ|ンビア|ボン)|オ
(?:ーストラ?リア|マーン|ランダ)|ソ(?:ビエト連邦|ロモン諸島|マリア)|ナ
(?:(?:イジェリ|ミビ)ア|ウル)|ル(?:クセンブルク|ーマニア|ワンダ)|ギ(?:ニア
(?:ビサウ)?|リシャ)|シ(?:エラレオネ|ンガポール|リア)|タ(?:ジキスタン|ンザニア|
イ王国)|ド(?:ミニカ(?:共和)?国|イツ)|グ(?:アテマラ|ルジア|レナダ)|ジ(?:ャマイカ|
ンバブエ|ブチ)|ミ(?:クロネシア連邦|ャンマー)|南(?:アフリカ共和国|スーダン)|ク
(?:ウェート|ロアチア)|ポ(?:ルトガル|ーランド)|東(?:ティモール|ドイツ)|ザ
(?:イール|ンビア)|ハ(?:ンガリー|イチ)|ペル(?:シア帝国|ー)|ロ(?:ーマ帝国|シア)|
(?:ネパー|ツバ)ル|ラ(?:トビア|オス)|レ(?:バノン|ソト)|ホンジュラス|デンマーク|
ノルウェー|メキシコ|ヨルダン|日本))(?^u:(?:ア(?:ル(?:(?:[バメ]ニ|ジェリ)ア|
ゼンチン)|ン(?:ティグア・バーブーダ|[ゴド]ラ)|メリカ(?:連合国南部連合|合衆国)|
フ(?:ガニスタン|リカ)|イ[スル]ランド|ゼルバイジャン|ラブ首長国連邦)|モ
(?:ン(?:テネグロ|ゴル国)|ーリ(?:シャス|タニア)|ル(?:ディブ|ドバ)|(?:ロッ|ナ)コ|
ザンビーク)|セ(?:ント(?:クリストファー・ネイビス|ルシア)|ルビア
(?:・モンテネグロ)?|(?:ーシェ|ネガ)ル)|ス(?:(?:ウェーデ|ペイ|ーダ)ン|リ
(?:ランカ|ナム)|ロ(?:バキ|ベニ)ア|ワジランド|イス)|(?:中(?:華(?:人民共和|民)|
央アフリカ共和)|朝鮮民主主義人民共和|プロイセン王|大韓民)国|マ(?:(?:ケドニア|リ)
共和国|ーシャル諸島|ダガスカル|レーシア|ラウイ|ルタ)|コ(?:ンゴ(?:民主)?共和国|
ートジボワール|スタリカ|ロンビア|ソボ|モロ)|エ(?:(?:ストニ|チオピ|リトリ)ア|
(?:ルサルバ|クア)ドル|ジプト)|イ(?:ンド(?:ネシア)?|ラ[クン]|スラエル|エメン|
ギリス|タリア)|ト(?:(?:リニダード・トバ|ー)ゴ|ル(?:クメニスタン|コ)|ンガ)|パ
(?:ラ(?:グアイ|オ)|プアニューギニア|キスタン|レスチナ|ナマ)|カ
(?:(?:ザフスタ|メルー)ン|ーボベルデ|ンボジア|タール|ナダ)|サ
(?:ン(?:トメ・プリンシペ|マリノ)|(?:ウジアラビ|モ)ア)|バ(?:(?:ーレー|チカ)ン|
ングラデシュ|ルバドス|ヌアツ|ハマ)|ブ(?:ル(?:キナファソ|ガリア|ネイ|ンジ)|
ラジル|ータン)|ベ(?:ネズエラ|ラルーシ|トナム|リーズ|ルギー|ナン)|チ
(?:ェコ(?:スロバキア)?|ュニジア|ャド|リ)|ボ(?:(?:スニア・ヘルツェゴビ|ツワ)ナ|
リビア)|リ(?:(?:トアニ|ベリ|ビ)ア|ヒテンシュタイン)|ウ(?:ズベキスタン|クライナ|
ルグアイ|ガンダ)|ニ(?:ュージーランド|カラグア|ジェール|ウエ)|フ
(?:ィ(?:ンランド|リピン|ジー)|ランス)|(?:(?:赤道ギ|ケ)ニ|ユーゴスラビ)ア|キ
(?:(?:プロ|リバ|ルギ)ス|ューバ)|ガ(?:(?:イア|ー)ナ|ンビア|ボン)|オ
(?:ーストラ?リア|マーン|ランダ)|ソ(?:ビエト連邦|ロモン諸島|マリア)|ナ
(?:(?:イジェリ|ミビ)ア|ウル)|ル(?:クセンブルク|ーマニア|ワンダ)|ギ
(?:ニア(?:ビサウ)?|リシャ)|シ(?:エラレオネ|ンガポール|リア)|タ(?:ジキスタン|
ンザニア|イ王国)|ド(?:ミニカ(?:共和)?国|イツ)|グ(?:アテマラ|ルジア|レナダ)|ジ
(?:ャマイカ|ンバブエ|ブチ)|ミ(?:クロネシア連邦|ャンマー)|南(?:アフリカ共和国|
スーダン)|ク(?:ウェート|ロアチア)|ポ(?:ルトガル|ーランド)|東(?:ティモール|
ドイツ)|ザ(?:イール|ンビア)|ハ(?:ンガリー|イチ)|ペル(?:シア帝国|ー)|ロ
(?:ーマ帝国|シア)|(?:ネパー|ツバ)ル|ラ(?:トビア|オス)|レ(?:バノン|ソト)|
ホンジュラス|デンマーク|ノルウェー|メキシコ|ヨルダン|日本))


使うときはコピペして、xとかで冗長な正規表現を許容するか、改行を消して使う。

生成コードは
https://github.com/overlast/private/blob/master/lang/perl/nlp/wikipedia_ja/generate_country_name_regexp.pl
に置いておいた。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2014-01-11 Sat

新年会 + #DSIRNLP 5 を開催しました & 動画UPしました

新年会とデータ構造と情報検索と言語処理勉強会 #DSIRNLP の第5回目を開催しました。
ご発表、ご参加頂いたみなさま、どうもありがとうございました。



会場を提供していただきました、スマートニュース株式会社のみなさま、どうもありがとうございました。
# スマートニュースさんは今後も各種勉強会に会場を提供してくださるそうです。

続きを読む

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2013-12-21 Sat

どんなコードを書いたのか忘れた頃に役立つコメントの書き方

少し前にIRCやTwitterで @tagomoris さんらが、コードに対して執拗にコメントを書くことを推奨していたのを見かけた。



自分も気をつけなければと思い影響を受けたので、ブログに書いておく。

でも、多分、ほんとに当たり前のことしか書いてないんだと思う。

続きを読む

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2013-12-11 Wed

不満をネット上で公開するときのTips 10+α

「ネガティブなことはネットに書かない方が良い」という意見を個人的に観測する機会が多いですが、ブログに書くことでしか不満を解消できないほどに追い詰められた精神状態になることは、ごく普通にあります。

たとえば、ゴルフサイトを一日中眺めている上司から突然「ちょっといいですか? 1+1は?」と聞かれて普通に「2ですよね」と答えたら「いや、それは2では無い可能性もあるのではないかな?」などと言われたら、「え?何を言ってるんだユーは別に数学者じゃないし物理学者でもないだろ頭大丈夫ですか?」と思いピヨッてしまうのは無理も無いのです。と僕は思っています。

ということで、不満をネット上でぶちまけるときに気をつけたいことを書いてみます。

続きを読む

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2013-12-08 Sun

Photoshop CCとLightroom 5が月額1000円で利用できるキャンペーン

2013年12月11日 追記


キャンペーンが2013年12月31日までに延長されました。以下から1000円/月ライセンスをGetできます。


2013年12月08日に書いた本文(日付だけ修正)


@941さん経由で自分も入ってみて、Lightroom 5をしばらく使ってみたところ「普段からスマホで写真を撮ってるけど写真補正とか超ダルいと思ってる人(= 僕)」にオススメな感じがしたので紹介します。

Adobe公式ストアからもCreative Cloud特別プランに参加すると、月額1000円で「Photoshop CC」と「Lightroom 5」が利用できます。
2013年12月31日まで (期間限定) に年間プランにサインアップしていただいた場合、どなたでも月額 1,000円でご利用いただけます。


さらにオマケで「20 GB のクラウドストレージ」と「Behance ProSite」が利用できるのですが、個人的にそれはどうでも良くて、つまり、あと18日くらいでキャンペーンが終わっちゃうかもしれない。

もともと Photoshop のパッケージ版が欲しくてライセンスを買ったのですが、同時に利用できるようになった Lightroom 5 の具合があまりにも良かったので記事を書こうと思ったわけです。

ということで以下ではLightroom5を最初に使ったときのことしか話してません。

たとえば、以下のように、下北沢の踏切でiPhone5Sを使って撮影した、なんか暗くてボケてる、とても微妙な写真があったとします。
IMG_2411.JPG

この写真が「レンズ補正:自動」+「ホワイトバランス:自動」+「階調の調整:自動」をしただけで以下のようになります。
IMG_2411-1

実は最初にとても適当に自動補正を試したのがこの写真だったのですが

「お、おうっ・・・。」

ってなりました。眠いなーって思いながら試してたけど、目が覚めた。

スマホの写真でこんな画像が手元に残るようになるんですね。しかも一瞬で。
技術の進歩ってすごいですね。これが見られただけで「得した〜」って思えます。

元の写真と較べて金属の色がスッキリしており、自分の目では見ていたけど写真では消えていた情報がクッキリ見える。
しかも元の写真でとれていなかった水平方向と垂直方向の歪みを撮ってくれるので、自分の写真の下手さがカバーされています(ただし補正された時の敗北感がすごいです)。

実際にはよく見ると気になる箇所があるので、調整する箇所をしぼって段階的に補正したり、自動ではなくて自分で様子を見ながら補正したりすれば良さそうです。
が、自動でこれだけいい感じなら、何も補正しないよりマシで、そのマシ感だけで個人的に十分だったりもします。
# 一生に一度、みたいな写真だけ丹念に補正すると思います

補正してる時はこんな感じです。
2013-12-08 23.02.04

分かりやすいインターフェイスなので簡単な操作なら説明書なしでいける程です。

月額1000円のライセンスが購入できる期間は、2013年12月31日までなので「もしも延長されなければ」あと18日ちょっとです。
物理的なパッケージでソフトを買った場合にはlightroom5だけで12000円を超えるので、今後のアップデートに合わせた買い直しを考えるとPhotoshop CCとLightroom5で年間12000円はとても安いですよね。
20GBのクラウドスレージも個人的には使う予定が無いけど、嬉しい人には嬉しいでしょうね。

ただ、年末なので「もう一回延長!!!」なんてこともあるような気もします。(すでに二回延長している)


投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2013-11-22 Fri

どんなに細かいものでもチャレンジする前に聞く

今日は某実装を某豆乳系アプリ0.5リットル入りで使えないと諸々お話にならないので、そのための作業の続き。

といっても、お昼位には電話でいろいろ対応すべきことが多くて、断続的に電話に出ていた。
あとは以下の様なウキウキなTweetをしてしまったせいで、ずっとiPhoneがブルブルしてた。不覚。



今日、一番詰まっていたのはOCaml環境をCentOS 6.4上に構築することだったけど、この面倒なことに1/6日位使ってしまった後で、@unnonounoさんに聞いたらよかったですね、という結論になった。
その後30分で作業が区切れたのはいいけど、今後はもっと細かく他人の知識を借りようと強く思った。

コンパイルの合間に、某フレームに某アプリからコードを移した。
最終的には設定を1つ書いて、スクリプトをアクション数分だけ作ったら済むようにしたい。
そのためにはフレームの中にどれだけ小さく押しこむかがポイントになるんだろう。
最初に考えた設計に穴があるとこがあって、やってるうちに形が見えてくるみたいになってて、反省点が多い。

ocamlbrewはかなり良い。ocamlとopamをインストールして、うまく配置する、という難易度の高いタスクをワンラインで実現できる。
これでsudo経由でもomakeが使いやすかったら、もっと良かった。
omakeはユーザ権限で使わないこと多いわけだし。

OCaml地獄の合間にやった線形代数勉強会はもう終盤で、回転マトリックスが今日で終わって来週は固有値。
長いことちゃんと使ってないせいで曖昧になってる知識を固め直すのはとてもためになる。
線形代数は年明けから、お昼休みに30分やることにして別のテキストをやる予定。

そういえば今日も @mamoruk さんがプログラミングの課題の組み立て方とか、実力の引き上げ方で悩んでいたな。
結構気になっている。気になっているといえば、@uchumik さんのからあげ食べ放題も気になっている。
あと、テンプラニーニョ(MARQUES DE RISCAL TEMPRANILLO)はお買い得っぽいので気になった。

気がついたら日をまたいだけど、来週は私用で作業時間が短くなる日があるし、まー別にいいやと思った。
明日は18時起きだし早く寝よう。

なぜ急に日記をかいているのか。それは以下を読んだら、あー、って思った。
あとは、部屋を整頓したら紙ベースの日記とか手帳が出てきて、適当メモも大切よなって思った。

http://narumi.blog.jp/archives/1103763.html
でも毎日書くなると、淡々とどうでもいいことを書くしかないわけで、まったく力が入ってこない。これは楽。べつにバズらなくともどうってことはない。だって明日も書くんだから。


ほんとに適当にでもいいからやってメモっておいて、未来の自分が「過去の俺、ときどき頭いいやん」みたいに思う時があったらいいんでしょうね。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2013-11-22 Fri

CentOS 6.4 に OCaml と OPAM をインストールするなら ocamlbrew を使おう

CentOS 6.4 は OPAM を使ってOCamlをインストールするのが難しい。
理由はopamが必要とするglibcc 2.14が入っておらず、glibc 2.12が入っているからだ。

opam を使いはじめるときによくやる方法でインストールしようとするとこうなる。

$ wget http://www.ocamlpro.com/pub/opam_installer.sh
$ sudo sh ./opam_installer.sh .
[sudo] password for overlast:
Downloading OPAM...
Initializing with compiler
opam: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by opam)


OSのバージョンはこんな感じ。

$cat /etc/redhat-release
CentOS release 6.4 (Final)


いろいろ調べた結果、glibc 2.14をインストールするのはセンスがない行為で、そこまで追い込まれたらソースからインストールするのが定石っぽかったのでそうしようとしていたけど、作業が煩雑で辛い。

弱音を吐いたら@unnonouno 神が助け舟を出してくれた。



あああああああ、それ@unnonounoさんのTweetで見てたわー。

ということで、出来上がる寸前の自力インストールをするための作業ログを消し、ocamlbrewについて書く。

ocamlbrew で OCaml 4.00.1 と OPAM 1.1.0 をインストール


ocamlbrew を使った OCaml 4.00.1 と OPAM 1.1.0 をインストールは非常に簡単だ。

curl -kL https://raw.github.com/hcarty/ocamlbrew/master/ocamlbrew-install | env OCAMLBREW_FLAGS="-r" bash


とやるだけ。

死ぬほど待つとOCamlとOPAMのインストールと opam init までが終わる。

インストール先は標準では$HOME/ocamlbrew以下。

シェルに設定を足す


僕は .zshrc に以下のような設定を足した。

# ocamlbrew
# how to install : curl -kL https://raw.github.com/hcarty/ocamlbrew/master/ocamlbrew-install | env OCAMLBREW_FLAGS="-r" bash
# OPAM configuration
if [ -d ${HOME}/ocamlbrew ] ; then
  export PATH=${HOME}/ocamlbrew/ocaml-4.00.1/bin:$PATH
  export OPAMROOT=${HOME}/ocamlbrew/ocaml-4.00.1/.opam
  eval `opam config env`
fi


その後、source ~/.zshrc する。

omakeとounitをインストール


ここまで来ると、あとはとても簡単。

opam install omake ounit extlib


などと任意のocaml環境を作れる。

けど、個人的にはocamlbrewが見つかるまでの数時間が苦行すぎて ocaml アレルギーになりそうだった。
# ocamlbrew を見つけられなかったので自業自得である・・・。

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |

2013-11-18 Mon

最初にした設計を最後まで維持するのは正解なのか

今日は青汁とりんごを半分を食べて家を出た。

通勤中に僕と同じ身長なのに1.2倍程度の速さで歩く人を見かけた。
どうやら歩幅が大分違うようだ。歩調を揃えても差は広がるばかり。
僕が1.2倍速で歩くには、股関節周辺の柔軟性と大腿筋などの筋力を強化する必要がありそうだ。

筋力と言えば、僕の前頚骨筋(脛の筋肉)は他人と較べてぜんぜん縮み方が足りないことが分かった。
なんで気がついたかというと、いわゆるヤンキー座りで休んでいる友人が多かったので気がついた。
僕は足の裏をベタッと地面に付けてしゃがんだ体勢を維持できない。
ストレッチが必要なのか、筋力強化が必要なのか、から考える必要がある。

金曜日に注文したものがあるのだけど、月曜の朝まで1通も確認メールが来なくて不安になる。
発送するまでメールを返さないやつかな。。

Web Intelligence 2013 のサイト(http://cs.gsu.edu/wic2013/wi)を眺めて、
WPRSM'13のPaperのタイトルを眺めたけど、どの論文もWeb上からはまだ見つからない。
若干気になるタイトルもあったので、後で公開されるといいな。

今日はくしゃみや咳をしてる人がやけに多い印象をうけた。
そろそろマスクを買う時期のようだ。

朝から頭痛がひどかったけど、どうやら大半は腹痛と連動していたようだ。
お腹がおさまったら頭痛もほとんど消えた。

食べ物の臭い、とくに動物性タンパク質の入った料理の味を想起するがするととたんに集中力が下がる。
鼻栓か強力な空間脱臭機が無いなら、トイレにでも行くのが正解だろう。

社内で販売しているお弁当の2つの業者のうち1つが変わって、弁当にもろインスタントではない味噌汁が付くようになった。
お湯をいれて作る味噌汁よりも気分的においしいので、とくに食べたい弁当が残ってないときは味噌汁がおいしい側を選べば良い気がする。

27Fにエレベーターがまったく来なくてお昼には4分も待ったけど、17Fから27Fまで各階で止まったらそんなものなので、単にとても混む時間帯だったということだろう。

15時以降はMTGが続き、MTG後にテストと実装を繰り返し、20時ごろに仕事をやめて、21:30まで「Shadows over Camelot: The Card Game 」と「Holmes 13」を1回ずつ遊んだ、「Shadows over Camelot: The Card Game 」は記憶ゲーなのでもう少しシステム側でプレイヤーを邪魔すべきだ。「Holmes 13」は簡単版クルード。ほとんどカードの配布とプレイ順だけで勝者が決まってしまう気がした。

帰宅した後は夕食を食べて早々に寝た。

# 22日にメモを発見したのでそのまま投稿するけど、技術関連のメモが足りてませんね!!

投稿者:としのり  日時:23:59:59 | コメント | トラックバック |