けんちゃんくんさんのWeb日記
2015/2/17

Rubyの洋書を読む会「Working with Ruby Threads」

火曜日はRubyの洋書を読む会の日。今年に入ってからは The Pragmatic Bookshelf | Working with Ruby Threads を読んでいます。

今日はGILをもうちょっと詳しくという感じで、別にいじわるをしたくてGILを導入しているわけではなくて、これに私たちのプログラムが安全に実行できて、レースコンディションに関わる複雑なバグが起きないようにしてくれているんだよ、という話でした。

IO待ちになったスレッドはGILを勝手に開放するってのは当たり前なんだろうけどなるほどなーと思いました。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/16

メンテナブルJavaScriptとテスタブルJavaScript

JavaScript関連の積読を2冊ほど消化しました。

どちらも、(少し前の時代の)JavaScriptという言語では、

  • メンテナブル、テスタブルなコードとはどういうことか
  • それらを評価する方法
  • サポートするツール

というあたりがまとまっていて、リーダブルコードやJavaScript:The Good Partsが頭に入っていると、スムーズに理解できそうな内容でした。

ただ、括弧書きにしている通り、特にツール類は一時代前のものが多いので、2015年ならどうだろうと読み替える必要はあるでしょう。

メンテナブルJavaScript

前半はJavaScript:The Good Partsをより実践的にしたような内容で、良いパーツはわかったんだけど、実際に書こうとするとうまく書けないという人には参考になりそうな内容でした。

個人的には10章あたりからが面白かったですね。

JavaScriptにおけるエラーの考え方、テスタブルJavaScriptにも繋がるオブジェクトの結合度、ブラウザ判定を例とした特徴検出と特徴推定など、なかなか興味深い内容でした。

ツールについては、前述の通りちょっと古いので、最近のナウいツールに読み替えたほうがよさそうです。

テスタブルJavaScript

こっちはかなりツールと細かいコードの書き方に寄っていて、時代と個人の趣向に結構依存しそうな内容だと感じました。

今読むなら、それらの詳細から一歩引いて「ソースコードの定量的な評価の方法」として見ると、コードメトリクスからテストカバレッジ、テストコードの分類などきれいにまとまっているのでおすすめです。

特によかったのは「高いカバレッジの値は誤解を招きますが、低い値は明らかに問題を示しています」というカバレッジに対する考え方ですね。

どちらかと言えばメンテナブルJavaScriptがおすすめ

筆者は二人ともYahoo!のフロトンエンドエンジニアとして大規模なライブラリの開発、メンテナンスをしていたということもあり、でてくるコードはYUIの内部のコードだったりとかなり実践的な内容にはなっていますが、いかんせん時代の流れがはやすぎますね。

テスタブルJavaScriptは今読む必要はないかなと思いますが、メンテナブルJavaScriptは今でも参考になるところは多いなーという印象です。

特に、最初に書いたようにJavaScript:The Good Partsやリーダブルコードは読んだけど、実際どうすんのよ、というところに手が届く数少ない本だろうと思いました。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/14

バレンタイン

今年も手作りのおかしでした。おいしゅうございました。(この写真とは別に、あまったパイ生地でアップルパイが作られていました)

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/14

2015-02-14: 散髪ログ

前回は12月だったのでちょうど2ヶ月くらい。 今回は息子と一緒にいってきた。

いつもは席がけっこう離れるんだけど、空いてたので隣で。トーマスを見ながら静かに切られていた。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2021-09-02 15:32:22 +0900
2015/2/12

boot2dockerのIPがVPNのネットワークとかぶってしまった

家に帰ってVPNを繋いでboot2dockerでコンテナを作ろうとしたら、以下のような感じでエラーになってしまっていました。

$ docker build .
Sending build context to Docker daemon
FATA[0032] Post https://192.168.59.103:2376/v1.16/build?rm=1&t=: dial tcp 192.168.59.103:2376: i/o timeout

VPNを繋いだときだけ問題がおきるのと、IPアドレス帯を見てみたところこれはかぶっちゃってるかなーと思い traceroute 192.168.59.103 してみるとビンゴ。VPNのネットワークに吸い込まれていました。

boot2dockerのIPを変える方法は、boot2docker/boot2docker-cli の configration にあるように boot2docker config の結果をファイルに落としてから変更すればよさそうな雰囲気。

実際やってみると、ネットワークの設定は変更してVMの再起動では当然ダメで、VirtualBoxのホストオンリーネットワークを消してから boot2docker delete > boot2docker init として作り直す必要がありました。(自分でホストオンリーネットワークを変更してもいけると思いますが)

IPの設定回りを以下のようにざっくりと変更したところ、VPNを繋いでいても問題なく動くようになりました。めでたしめでたし。

...
HostIP = "172.16.59.3"
DHCPIP = "172.16.59.99"
NetMask = [255, 255, 255, 0]
LowerIP = "172.16.59.103"
UpperIP = "172.16.59.254"
...
created_at: 2015-08-06 01:43:33 +0900
updated_at: 2020-03-22 08:27:27 +0900
2015/2/5

幼稚園の発表会を見てきました

息子の幼稚園で発表会があるとのことだったので、今月付与されたばかりの有給を利用して参加してきました。

ダンスや歌、劇など30分ちょっとくらい見てました。

最後に先生も言っていたけど、1年前は入園式で静かに座っていることもできなかった子供達が、これだけできるようになるのは本当に集団生活と先生様々というかんじ。

あと1年、元気に過ごしてくれるといいな。

(運動会ほどは動きがないので写真もそれなりに撮れたような気がします)

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/5

SCRUM MASTER’S NIGHT! VOL.7 に参加してきました

午前中は有給をとって息子の発表会を見て、夜はスクラムマスターじゃないけどこれに参加してきました。

テーマ選びでは Regional Scrum Gathering Tokyo 2015: Schedule の 「Scrum or not?」 というパネルディスカッションのテーマを決めるというやつにしました。

ファシリテータは川口さんで、出てきた意見の分類の仕方と流れの作り方はさすがだなーいう感じでした。

肝心のパネルのテーマは(この通りになるかどうかはおいておいて)、各社大規模にスクラムを導入しているけど、最初の導入過程から、レイトマジョリティへの対応、プロセスの効果や評価の方法、そして今後の事へと、特に前半はかなり興味深い内容になりそうでしたので、みなさん Regional Scrum Gathering Tokyo に行きましょう!

結構早めに終わったので、他のテーブルを眺めたり、一緒にいった @kurotaky のお悩み相談テーブルにjoinしたりしてわいわいやっていました。

懇親会ではsushi的なものもあり、DeNA様ありがとうございました!

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/4

ハンドメイドマーケット minne でバーンといくぞ!!1

会社の決算説明会でいろいろと発表になったようです。

GMOペパボ、異例の「利益ゼロ」予想 ハンドメイド市場「minne」拡大へ積極投資 - ITmedia ニュース

諸事情でスーツを持っていないために会場には行けなかったのですが、 USTのチャンネル を見ながらTwitterを見たりしていました。

こういう体験は初めてだったので、個人的にはとてもよい経験ができたと思っています。

というわけで、今年は ハンドメイドマーケット | minne(ミンネ) でバーンといくので、ビッグウェーブにのっかりたい人、その裏でしっかり売上利益をあげいかないといけないサービスを支えたいエンジニア、両方とも絶賛募集中なのでぜひご応募ください!

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/3

みんなで恵方巻を食べた

オフィスに大量の恵方巻がデプロイされていたのでみんなで食べました。

家に帰ってからは、申し訳程度に息子と豆まきをしたのでした。

幼稚園では鬼役の先生とかがいたのかなーと聞いてみたら「鬼の面が置いてあって、終わったら持っていかれた」という証言をしていた。なるほど。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2015/2/2

入門docker - ローカルでビルドしたバイナリが入らないように注意しよう

本日の私の生産性を著しく低下させた件について共有させていただきます。

とあるフロントエンドアプリケーションを動作させるためのDockerコンテナを作っていたのですが、Dockerfileをこんな感じにしていたんです。

FROM dockerfile/nodejs-bower-grunt

...

ADD package.json /app/
RUN npm install

ADD bower.json /app/
RUN bower install --allow-root

ADD . /app/

...

ちょっとこみいった事情があったのでonbuildではないのですが、手元の環境でbuildしたイメージを実行しようとしても grunt imagemin:dist でエラーになってしまう。しかし、リモート(具体的には mookjp/pool の中)だとその部分は動いている。(その先が動かなかったのでデバッグしたかった)

エラーメッセージでググっても npm cache clean しろとか、apt-get で入れてる optipng を消せとか言うので docker run -i -t {imagename} /bin/bash していろいろやっていたら、./node_moduels 内にある optipng の実行ファイルが壊れており、ADD . /app/node_modules がローカルのものに上書かれていることにようやく気付いたのでした…

手元で node_modules を消してbuildしたら無事動くものができあがったのでした。つらい。

みなさんもローカルで docker build するときはバイナリが入らないように注意しましょう…

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2020-03-22 11:02:25 +0900
新しい記事へ 古い記事へ