2014-09-01から1ヶ月間の記事一覧

地味に待ち遠しいDockerの新機能

DockerfileのENV コマンドで、複数の環境変数を一度に指定できるようになるらしい。 Allow ENV to set multiple variables in one layer · Issue #2333 · docker/docker · GitHub 従来は複数の環境変数を設定するには、ENVを繰り返さなければなりませんでし…

Goでも独自型をrangeしたい!chanを使う

Go

Pythonでは__iter__メソッドを定義すれば((Rubyでは.eachメソッドを定義してEnumerableをincludeすれば、C#ではGetEnumerator()メソッドを定義すれば、 PHPではIteratorを実装すれば))、 晴れて独自のコレクション型でも、foreach文などでループできるように…

Goによるデザインパターン - Strategy パターン (2)

Strategy設計の失敗 前回で、HTMLとテキストでレポートを出力するコードを書きました。その中でFormatter interfaceを定義し、その具象型としてPlainTextFormatter HTMLFormatterを定義するというStrategyパターンを採用しました。 しかし、気になる点が無い…

Goのinterface - 使う側で定義する

Goのinterfaceは「使う側」が定義するもの 前回Formatter interface、Formatterを使ってレポートを出力するReport struct、 Formatterの実装PlainTextFormatterとHTMLFormatterを定義しました。 type Formatter interface { OutputStart() OutputHead(text s…

Goによるデザインパターン - Strategy パターン (1)

例:レポートを出力するクラス。 レポートをHTMLで出力するstruct*1を作ったあなた。上司からプレーンテキストでも出力してくれと言われてしまいました。とりあえず、フォーマットを引数で指定するようにしたのですが・・・ *1:レポートの内容はフィクション…

ただ動くだけのdockerコンテナを作る

DBもapacheも何も要らない、空っぽのdockerコンテナが欲しい。 ただし、1度起動したら、docker stopするまで起動しっぱなしでいて欲しい。 回答 pseudo-tty付きのBashを走らせれば良いようです。 docker run -itd base bash -c "bash --rcfile <(echo \"trap…

補遺:ECMAScript6を使うのは5年ぐ(略)+なぜTypeScriptではないのか?

前回の「ECMAScript6を使うのは5年ぐらい時期尚早だった」が舌っ足らずで、はてぶでコメントがついていたので補足 trasuerを使えば後で移行できる・・・とは限らない koba04さん Traceur使ってES6で書いておくとそのまま移行出来るメリットはあると思う http…

ECMAScript6を使うのは5年ぐらい時期尚早だった

新製品のWEB UIを作ることになりました。 「functionって書くのダルいから、CoffeeScriptにしましょうよ」 「でもCoffeeScriptって、そろそろオワコンじゃないか?」 「ちょっと待てよ、そろそろES6(ECMAScript6、JavaScriptの次期標準、後述)が使えるよう…

Golangビルド時に、サブパッケージ内の変数をいじる

Go

mainパッケージに変数を埋め込みたいとき Goで作ったアプリで --version 用にバージョン番号とビルド日時を埋め込みたい。 そんな時、-ldflagsを使えばいいのはwell-knownだと思います。 go build -ldflags=" -X main.compiled 'ビルド日時' -X main.version…