hirakiucの日記

いろいろ

hhkb購入

PFU Happy Hacking Keyboard Professional2 Type-S 白(英語配列)

PFU Happy Hacking Keyboard Professional2 Type-S 白(英語配列)

1ヶ月ほど悩んだ結果、思い切って購入。

まだカーソルキー探したり、ヘコヘコ音に馴染めなかったり、Ctrlキーの位置にいらっとしたり。 慣れるまで我慢強く使い続けねば。

会社用にも安いの買おうかなぁ。

chef solo

お仕事でシステム監視のシステムを構築する必要があり、sensuをいろいろ調べつつようやく目指す仕組みが見えてきた。

そこでchefのcookbookを使って環境を作るのもやっておこうと、今更ながらchef soloのお勉強中。

sensuの仕組みを勉強してるときは、自分で環境作ってhandlerとかmutatorのスクリプト書いてscpして設定してと手作業でやっててちょっと辛めだったけど、chef solo使って環境できるようになるとすごい捗る。

最初のとっかかりがとてもハードル高いけれど、この本読んでみると最初のとっかかりがすぐ見えて楽だった。

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

それにしてもsensu + uchiwaは楽しい。

今はchef-monitorのwrapper cookbookを参考にしつつ、cookbookを作成中。

Mac Book Pro retina

使ってたMacBookAirさんのキーボードがJIS配列で辛くなったのと、そろそろ二年たつのもあって、思い切ってMac Book Pro retina 13inchを購入。

データ移行

  1. 古いMacBookAirと新しいMacをthunderboltケーブルで接続

  2. 古いMacBookAirをrebootして、起動時にTボタンを押しっぱなしで起動(参考

  3. 新しいMacを起動して、データのコピー元に古いMacのHDDを指定

  4. 終わるまで待つ


データ移行は終わったのだけど、brew でinstallした各種パッケージのコマンドが見れない。

パッケージ自体はinstallされてるっぽいけれど、brew --prefix/bin の下にlinkが無いので、unlink && linkで対処。

$ for pkg in `brew list`
do
    brew unlink $pkg && brew link $pkg
done

いくつかのパッケージでWarningが出てたから個別に対応中...。

やっぱりRetinaだけあってキレイな気がする。

あと、やっぱりdiablo3は発熱すごくて動かすのは諦め...。

ソフトウェアの品質とテスト

ソフトウェアの品質についてお勉強が必要になったため、いい本を探してました。

とりあえず、本屋さんで目についたこの本を読んでみました。

テストから見えてくる グーグルのソフトウェア開発

テストから見えてくる グーグルのソフトウェア開発

以下、自分の理解と思った事を混ぜてまとめました。


品質とは

  • 「品質」とは、何も無い状態が最もいい状態。
    • 設計が始まった直後から品質が低下する可能性が増えていく。
    • コードが追加/変更される事によって品質の低下が具体化する。
      • 設計不備、コードの誤り、などなど
    • 「テスト」という手段で、品質の低下を抑止/改善する。

テストとは

  • 品質の低下を抑止/改善する手段。
    • 対象の「製品」の品質を維持/改善する事がゴール。
    • テストの結果をまとめた成果物が目的ではない。
  • 開発ペースを遅くする摩擦をもつものであってはならない。

テストチームの役割

  • テストすること品質の維持を目的としない。
    • 開発者がテストしやすい環境を作り、開発者の生産性を向上する事をめざす。

開発者と品質の関係

  • ソフトウェアの品質は開発者が責任を持つ
    • テストチームだけの責任ではない。

テストプロセス(行程)

  • 各テストプロセス(行程)は、テストの対象/範囲を明確に定義しておく。

    • 呼び方/名称はなんでもいい。
    • 関係する人全員が意識を共有出来ている事が大事。
  • 人間の直感/思考を挟まなくても解けるなら、自動化すべき。

    • できるとこから少しずつ。
    • 「人間の思考領域の一歩手前」までを自動化するを目標に

設計思想

  • 単純性と統一性を守る

いろいろと勉強になりました。

読みながら参考になったページに付箋ペタペタ貼ってたら、付箋だらけになってました。

もっと早く読めばよかった。

MySQLのencoding utf8

MySQLのutf8は3byteまでのUTF8文字しか格納できないらしい。

先日、4byteな絵文字のUTF-8が入ってきてクローラとbackground jobをさばくプロセスがお亡くなりになるという悲しい事に。

4byte文字に対応したutf8mb4なるencodingがあるらしいので、早めにencodingを変えるようにしないといけない。

UIWebViewでload失敗する件

iOSアプリon iOS7 でUIWebViewで指定されたNSURLをロードする動作に失敗する話。

この話は対策がまだ見えてません。

NSString から [NSURL URLWithString:]で作ったNSURLを使って作ったNSURLRequestでloadしてます。

iOS7のsimulator、実機 with iOS7では動作してました。

しかし、test flight経由でinstallしたアプリではUIWebViewで指定したURLがloadされない...。

Organizerのconsoleで見てみると、以下のようなログが出てました。

<Warning>: void SendDelegateMessage(NSInvocation *): delegate 
(webView:decidePolicyForNavigationAction:request:frame:decisionListener:) failed to return
 after waiting 10 seconds. main run loop mode: kCFRunLoopDefaultMode

ただいま、原因を調査中... 。

UITableViewCellのprepareForReueseではsuperを呼ぶこと

uitableview - dequeueReusableCellWithIdentifier returning cells in editing state in IOS 7 - Stack Overflow

UITableViewCellのカスタムクラスを使っているとき、prepareForReuseをoverrideして自身の必要な情報を初期化する。

このとき、superを呼び出していないと、cellの状態がきちんと初期化されない様子。

具体的には、UITableViewから deleteRowsAtIndexPaths:withRowAnimation: でrowを削除した後、同じrowを作ると初期状態で表示されない(削除なボタンが表示されたままな状態になる)

これまでのiOS6まででは特に問題なかった気がする。

iOS7からはきちんとsuperを呼ばないといけないのかも。