2016/10/07

macOS Sierra にした

気が向いたので Mac OSX Yosemite から macOS Sierra にアップデートしました。

Snow Leopard -> Mountain Lion -> Yosemite のタイミングでクリーンインストールしているので、一つ飛ばしくらいのペースで掃除したくなるようです。


クリーンインストール手順としてはこちらを参考にしました。
Yosemite の時に Time Machine でバックアップを取って、 Sierra にアップデートした後に SSD をフォーマットして再インストール。
フォーマットの際に Case-Sensitive な方を選んだら Yosemite の時は Case-Sensitive じゃなかったようで復元できませんと言われてしまった。
もう一度フォーマットして入れなおし。


Time Machine から復元するのは account と Computer & Network Settings のみ。
/usr/local の下とかを掃除したかったので account の other data は復元せず。
ついでに Application も無しで。そうすると Application 本体は無いけれど入れ直すと設定は残ってたりします。


クリーンインストールした後の環境再構築は Homebrew を入れただけ。
使っていた Formula は Brewfile にまとめていたので brew bundle しておしまい。
私が Brewfile を書いた時とフォーマットが変わっていた + bundle コマンドが分離されて Brewdle になっていたのでそこだけ変更したくらい。
Application もほとんど Cask で入れていたので brew bundle でまとめて入れてしまう。


ちょっと気になった点としては
zsh を起動した時に

Ignore insecure directories and continue [y] or abort compinit [n]?
と出てくる。
compinit でロードされるディレクトリのパーミッションが怪しいと出るようです。具体的には group に write がたってた。
compinit した時に指摘されたディレクトリを chmod g-w して解決。


という感じでそんなに変なこともなく移行完了。
130G くらい空いてすっきり。
今のところ Sierra の評判はそんなに良くないのだけれどどうなるかな。

2016/09/29

Implementing a JIT Compiled Language with Haskell and LLVM を chapter 3 までやってみた

Haskell + LLVM で言語を作ってみる Implementing a JIT Compiled Language with Haskell and LLVM というページがあったのでちょっとやってみました。
LLVM-IR を吐くところまでは動いたのでそのメモ。
作成した repository は github の atton-/kaleidoscope にあります。


ページに書かれているコードを写経していたら chapter 3 くらいから問題発生。
Webに書かれていることを写経してもコンパイルが通らない。
本家のコードを chapter 2 で定義した Syntaxchapter 3 で定義された Syntax は違うようです。
他にもWebには書かれていない関数があったりしたので、エラーが出たら本家のコードを見つつ chapter 3 の Code Generation までは書けました。

ここで追加で問題発生。 llvm-general を ghci から使おうとすると

<interactive>: /usr/lib/llvm-3.5/lib/libLLVMSupport.a: unhandled ELF relocation(RelA) type 42

と出て動かない。
OSX 10.10.5 / Ubuntu 16.04 / Fedora 23 / Fedora24  on Docker で動かしたり stack を使ったりしたが解決せず。
ちなみに OSX では
lookupSymbol failed in relocateSection (RELOC_GOT)
/usr/local/Cellar/llvm35/3.5.1/lib/llvm-3.5/lib/libLLVMProfileData.a: unknown symbol `___dso_handle'
と出て動かなかったです。

https://github.com/DanielG/ghc-mod/issues/762 とかを参考にしながら
--ghc-options="-opta-Wa,-mrelax-relocations=no"
を付けて cabal で install したり stack の stack.yaml に書いたりしましたが動かず。
最終的に ghci では動かないけれど ghc では動きました。どうも良く分からない……
Fedora 23 on Docker で動かした時の Dockerfile はこれです。
一応 Ubuntu 16.04 でも ghc でなら動いたはずです。


Haskell の環境構築とかデバッグとかのノウハウの不足を感じる。
環境構築で結構力尽きた感も若干あるけれどどこまで続くかな。

2016/08/31

FFBT67M/EB を買った

Majestouch MINILA Air US67キー 茶軸(FFBT67M/EB) を買いました。外付けキーボードですね。

普段は MacBookPro のキーボードを使っているのですが、ある時左手首が痛くなる。
何もしてなければ大丈夫なのですがキーボードを使ったり捻ると痛い。
一週間くらい経っても治らないので人に聞いたり調べてみたりする。
なので病院で診察されたわけでは無いのですがどうやら腱鞘炎。
腱鞘炎は薬とかでぽんと治る類いのものでは無いらしく、病院に行っても湿布を貰っておしまいだとか。
普段から気をつけて直すタイプの病気とのことなので、作業時の姿勢を気にしてみることに。

具体的には机とモニタとキーボードの高さ。
手首を痛めた時は机が高く、椅子に座っている時に肘の角度がが90度よりも小さい状態。
メインモニタは MacBookPro のモニタで、サブとして右側に外付けのディスプレイを使っていました。
まずモニタを目の高さにするためにメインモニタをディスプレイに変更。 MacBookPro を右側に置くようにしました。
キーボードは肘の高さくらいになるように机の高さを変更。これで直角になる
ちなみに正しい姿勢の情報源はヘルシープログラマだったかな。

一応効果はあったようで、2週間もするとキーボードを使い続けても痛みは再発しないようになりました。



ちなみにキーボードの選定理由ですが他の人と被らないようにした結果です。
Happy Hacking Keyboard と RealForce はユーザが周りにいたのでそれ以外にしてみようかな、と。
Twitter で黒軸とか赤軸とかがあるのは知っていたのでその辺りを探しに行ってみる。
秋葉原のツクモで 黒/赤/茶/青 軸を試しに打てるコーナーがあって、試してみて一番しっくりきたのが茶軸だったので茶軸を購入。
ちなみに茶軸にしようか赤軸にしようか迷ってました。両方とも軽いので。
黒軸がとても重くて何故長時間使う人向けなのか分からなかった。疲れないのかな。
テンキーはいらないのでUS67キー版を買う。USなのはスパルタンVimとかの影響ですね。

有効にしている DIP スイッチは 2 と 5 です。
control を a の左に持ってきたいので ctrl と caps を交換。
FFBT67M/EB では Esc と ~/` が同じキーで、どちらかは Fn を押しながらでないと入力できない。
普段使いが多いのは ~/` なので Fn を押しながらでないと入力できないように。
vim でも ^[ 派なのであまり困ってないです。
DIP でキー入れ替えした時用にキートップを変えられるようになってるのは良いですね。

使ってみた感想としてはそんなに大きな感想は無し。
タカタカ打ってるのが楽しいくらいかな。
自分がキーボードにそんなにこだわりを持っていないのが分かりました。
Win/Alt/App キーは Mac のキーのどれに対応してるか慣れるのに時間がかかったので次買うなら Apple 純正のやつでも良いかもしれない。

2016/07/13

オープンソースカンファレンス沖縄2016へ行ってきた

2016/07/02(Sat) にオープンソースカンファレンス沖縄2016 へ行ってきました。

OSC沖縄に行くのは三度目でしょうか。
今回もブース展示の手伝いのような参加でした。

今回のブース展示は研究室でやってること+IGDA琉球大学でやってること、でした。
研究室のパネルは画面配信システム TreeVNC と 分散ネットワークフレームワークAlice、独自言語 Continuation based C とそれで実装しようとしているOS Gears OS をまとめたもの。
もう1つのパネルはIGDA 琉球大学でやってることとして Unity で過去に作ったゲームをまとめたもの。

聞いた発表としては Hadoop と Sparkのお話
Hadoop といえば MapReduce という印象でしたが YARN が登場したことで MapReduce 以外の計算もできるみたいですね。派生も大量。
YARN自体は分散されてなく単体で管理してて、リソースのノードを追加するとどんどん容量が増えるように見えるとのこと。
あと HDFS はファイルを三重に保存するらしいのですが、ペタオーダーで三倍になってしまうのは物理的につらいので、これからは45%くらいを分散して配置して容量を節約しよう、みたいな流れがあるとか(具体的なパーセント忘れた)。
Spark は REPL もあるし cluster に入らなくても local で環境を上げてくれたり、通信を減らすために可能な計算はまとめてくれたり、メモリに計算結果をキャッシュできたりと便利お手軽なようです。
なんだかんだ Hadoop は触ったこと無いので始めて聞く話が多かったです。良い入門話だった。
過去の発表のスライドは slideshare に公開しているとのことでしたがこのブログ記事を書いた時点ではOSCのスライドは無かったです。

ブースのお隣りさんは MyDNS の方でした。
MyDNS が個人サービスなのは知らなかった。
ユーザからのIPv4の申告をDBに入れて DNS を提供してる、らしいです。
バックエンドが DB の DNS をメンテしてたりする身としてはあるある話が多かったです。
IPv6 の逆引きを用意しろといった Google の意向には逆らえないとか。
FreeRADIUS で何か踏んだことがあるとか。
ちなみに MyDNS では PowerDNS を使ってるらしいです。
あとIPv4は3万件とかあって年々増え続けてるけれど IPv6 のレコードは3千件程度だとか。
まだ v6 の普及は遠いのかな。

懇親会はビーチパーティー。
会場の撤去を手伝った結果ダウンして早期撤退しました。

今年のアンケートくじ引きとじゃんけんは何も当たらず。残念。

2016/06/26

ハッカーズチャンプルー2016 に行ってきた

2016/06/25(Sat) に ハッカーズチャンプルー2016 に行ってきました。

カンファレンスの部懇親会に参加。
なんだかんだ4年連続で参加していますね。時が経つのは早い。


カンファレンスは Go と Perl 成分が多かった感触。
Mackerel や Infrastructure as a Code の話は「おー所謂モダンな開発って感じかねー」とか思いながら聞いてた。
最近 Go の話を良く聞きますね。 okinawa-go とか。
@CodeHex さんの LT では「Go を始めて触ったけれどここがわかんない」という声も。
分からない部分をきちんと共有するのは重要だと思います。
一番印象に残っている発表は負荷分散の話。
DBの水平分散時にサーバを倍々で増やしていくのはいろいろと都合が良さそう。
キャッシュの話も聞きたかった。
実際巨大なキャッシュや分散が必要になる規模はどのくらいなのだろうか。


懇親会は @tompng さんの minecraft で computer を作った話のインパクトが強力でした。
minecraft やったこと無いですけれど、フラクタルを計算して3Dプリントできるらしい。
なにそれ聞いたことある話と違う、といった感じ。
2時間あっという間でご飯食べる暇がほとんどなかったくらいでした。
今までの懇親会で一番人と話した気がします。
あとおもしろTシャツは印象に残りやすいですし話かけやすくて良いですね。
次は何かおもしろTシャツ着ていこうかな。
学生料金は非常にうれしかったです。ありがとうございました。
それもあってかカンファレンスも懇親会もちらほら学生を見た気がする。
場所がKBCだったことも関係あったりするのかな。


来年はどうなりますかねー。
今年も運営の方々お疲れさまでした + ありがとうございました。