ghq/fzf で選んだリポジトリに対応する tmux の session を作ったり探したりするスクリプト
gist41201c4579d17253b7bd26e699c6dccb
といったことを行うスクリプトです。
session の current directory がリポジトリのルートに設定されるので、別のシェルを使いたいときは tmux new-window
などで新しい端末を開けば cd する必要もありません。
作業リポジトリを切り替えたいときも、このスクリプトを起動して選ぶだけで、以前の session があれば記憶とともに蘇ることでしょう。
Wikipedia の作り方 / How to make Wikipedia
こんにちは。アプリケーションエンジニアの id:mechairoi です。
この記事は はてなエンジニアアドベントカレンダー2014 の10日目です。
昨日は id:hatz48 さんの Mackerel と fluentd でサービスの状態を可視化する - Hatena Developer Blog でした。
今日は Wikipedia の作り方について紹介します。
必要なもの
スチロール半球 450m/m【ディスプレイ用品・デコレーション】
- 出版社/メーカー: ドガ
- メディア:
- この商品を含むブログを見る
- 2つ必要。
- 出版社/メーカー: 清水製作所
- メディア: Tools & Hardware
- クリック: 2回
- この商品を含むブログを見る
- スチロールを切るのに使います。
- プリンタ、 白の塗料、 セロテープ、 やわらかい鉛筆、 はさみ、のり、お休みの日
作り方
なんとたった7ステップで完成です。
1. くっつける
450mmの半球が届くと想像より大きくてテンションがあがってしまいますが落ち着きます。輪っかにしたセロテープで2つの半球を貼りあわせて球にします。あとで剥がすのでさらっと貼るとよいでしょう。
2. 補助線をひく
くっつけた球にやわらかい鉛筆で補助線をひきます。
Wikimedia official marks/About the official Marks - Wikimedia Foundation のいろんな方向からみたWikipediaの様子が参考になります。
「W」と「И」の間を通っている線(上図の赤線)が赤道だとすると、南極と北極を結ぶ線を等間隔に10本ひいてから、赤道に平行な線を北半球と南半球に3本づつひきましょう。半球のつなぎ目(上図の青線)と赤道を直交させるとよいでしょう。
やわらかいメジャーやIKEAでもらえる紙の定規があると捗ります。
3. 下書き
スチロールカッターで切断する線を下書きします。
ステップ2と同じように Wikimedia official marks/About the official Marks - Wikimedia Foundation をみながら手で雑に書いていきます。ついでにピースに対応する文字も書いておきます。リンク先は各方向から見た様子と展開後とで文字の配置が微妙の異なるので嵌らないように気をつけましょう。
もちろんピースが無いところは自由に想像を膨らませて書きます。
4. スチロールカッターで切る
仮止めしたセロテープを剥がし、スチロールカッターで切ります。
一定のペースでカッターを動かすとなめらかに仕上がります。下書きから多少ずれても問題ありません。球の中心から出るレーザーで切るようなイメージでカッターを動かすとやりやすいかもしれません。スチロールの厚みでピースの噛み合わせがうまくいかないところもあるので断面の内側を削って調整します。削り過ぎると安定しなくなるのでほどほどに。半球の境界と重なったピースはセロテープでくっつけます。
ここまでくればパズルを組み立てて遊ぶのもよいでしょう。
5. 白く塗る
下書きで汚れたピースの表面を塗料で白く塗って綺麗にします。塗る前にピースの裏に対応する文字を書いておくと後で楽です。
6. 文字を入れる
Wikimedia official marks/About the official Marks - Wikimedia Foundation にある文字のSVGを Inkscape とかで適当に並べて印刷します。印刷した文字をはさみで切ってのりで浮かないように貼ります。文字のまわりに白い部分が残ってもほとんど目立たないのでシュッとやるとよいでしょう。
7. 装う
かぶって仮装パーティに向かうもよし、分解してコンパクトなまま持ち込んで現地で組み立てるもよしです。お気に入りのTシャツとコーディネートするのもオススメです。
おわりに
はてなでは、パーティを一緒に盛り上げてくれる方やScalaエンジニアも募集しています。
Wikipedia への寄付もお願いします。
Ways to Give - Wikimedia Foundation
明日は id:shimobayashi さんの予定です。よろしくお願いします!
追記
Wikipedia の作り方 - *iroi*塗装の塗料なにつかったんだろう。ポスカ?
2014/12/10 13:40
最初は
のマット ホワイトつや消しでやってたんですが、量が足りなかったので2年前に使った
の残りを使いました!
emacs から git-browse-remote で GitHub をいい感じにひらく
カーソル位置とかリージョンで選んだ範囲をブラウザで開けるやつです。
C-u
つけると --rev
になるのがおしゃれポイントです。
以上です。
Slick の lifted embedding で FOR UPDATE する
mechairoi/slick-for-update-sample · GitHub
Slcik の lifted embedding で 無理やり FOR UPDATE
できようにするサンプル
slick-for-update-sample/Driver.scala at master · mechairoi/slick-for-update-sample · GitHub
みたいに PostgresDriver を継承した MyPostgresDriver を作って,
import MyPostgresDriver.simple._ class CoffeesForUpdate(tag: Tag) extends Coffees(tag) with ForUpdateTable val coffeesForUpdate = TableQuery[CoffeesForUpdate]
val q = for { c <- coffeesForUpdate if c.price < 9.0 s <- suppliers if s.id === c.supID } yield (c.name, s.name) q.list
のように書くと
select x2."COF_NAME", x3."SUP_NAME" from "COFFEES" x2, "SUPPLIERS" x3 where (x2."PRICE" < 9.0) and (x3."SUP_ID" = x2."SUP_ID") for update of x2
みたいにちゃんとFOR UPDATE
するクエリが吐かれる。
FOR UPDATE
は DBMS によって文法が結構違うのでリポジトリのは PostgreSQL でしか使えない。
Docker を使って Haskell を Heroku の cedar stack 用にコンパイルする
Heroku で Haskell を動かす方法は http://daimatz.hateblo.jp/entry/2013/02/09/164531 のように buildpack を使うとデプロイ時に Heroku のホストでビルドできて便利です。しかしビルド時間が15分までで Yesod などを使っていると間に合わず、手元で Ubuntu 10.04 向けのバイナリを作って push などする必要があります。Ubuntu 10.04 で開発してる人はもうあまりいないと思いますので、最近流行っている Docker を使って cedar stack 向けにビルドできるようにしてみました。
ビルドに使う Docker image は cedar 用のものに ghc と cabal-install をインストールして作りました。
サンプルプロジェクトは
- https://github.com/mechairoi/docker-heroku-cedar-ghc-demo
- http://docker-heroku-cedar-ghc.herokuapp.com/
にあります。デプロイするには READMEに書いてある通り、docker
とか heroku
コマンドをインストールして、リポジトリをクローンして
git clone https://github.com/mechairoi/docker-heroku-cedar-ghc.git
Heroku の アプリケーションを作って、
heroku create --stack=cedar
ビルドしてpush すれば
make build git checkout -b deploy git add -f dist/build/heroku-haskell/heroku-haskell git commit -m "build" git push heroku deploy:master
デプロイできると思います。Yesod でも deploy/Procfile に従って package.json などを配置して Makefile を修正すれば動くはずです。
make build の中身は
sudo docker run -v ${PWD}:/workspace -t mechairoi/heroku-cedar-ghc /bin/bash -xc 'cd /workspace/ \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config sandbox --sandbox=/workspace/.heroku-cabal-sandbox init \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config install --dependencies-only \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config configure \ && cabal --sandbox-config-file=./heroku.cabal.sandbox.config build --builddir=./dist-heroku \ && strip --strip-unneeded ./dist-heroku/build/heroku-haskell/heroku-haskell'
のようになっていて、Docker のホスト側をマウントして cabal sandbox を作ってるので2回目からはパッケージのダウンロードもなくビルドできます。Vagrant と違って起動も早いし Docker 便利ですね。