日記2

朝から焼きおにぎりとおはぎを作った。

スタジオギークスというコワーキングスペースで作業してみた。 ハイパフォーマンスwebサイトという本を読んだ。以下個人的メモ要約(ホントに簡単なものだけど)

  • リクエストを減らす。イメージマップ、CSSスプライト、インライン画像、js,cssのファイル結合
  • Expiresはちょっと無駄があるのでできたらcache controlを使いたい。(リソースキャッシュ寿命管理)
  • gzip圧縮、varyヘッダでプロキシの場合のややこしさをどうたらできるらしい
  • CSSは先頭に、jsは末尾に
  • js,cssは適当なレベルでファイルに分けてキャッシュさせる
  • keep-aliveでDNSルックアップを防ぐ(そもそもハンドシェイクもオーバーヘッドだ)
  • js縮小化
  • リダイレクトを減らす。mod-rewriteやAliasとかいうのでどうにかなるらしいけど調べないと
  • Etagは微妙なので使わない方がいいッぽい

あとspringについていろいろいじったりしてた。serverとクライアントがUNIXドメインソケットでなにやらいろいろやってるというのはうっすらわかったけどちょっとむずかしくてあと一日くらいかかりそう。 大体lib/spring/client/run.rblib/spring/servser.rb, application_manager.rbを読めばよい。

Linuxプログラミングインターフェースの勉強ができなかった(重くてもっていかなかったから)んだけどさっそくソケット通信が出てきてオウ……となった ソケットってファイルディスクリプタとして扱うことができるんだっけ。こんなのがあった。

      def run
        verify_server_version

        application, client = UNIXSocket.pair

        queue_signals
        connect_to_application(client)
        run_command(client, application)
      end

     def connect_to_application(client)
        server.send_io client
        send_json server, "args" => args, "default_rails_env" => default_rails_env

        if IO.select([server], [], [], TIMEOUT)
          server.gets or raise CommandNotFound
        else
          raise "Error connecting to Spring server"
        end
      end

Rails4wayも読めなかった。英語を読むことを習慣にしたいという意図もあるから脱線の方が終わらなくても2,3ページくらいは読み進めた方がいいのかも。

スタジオギークスは作業環境としては結構良かった。ただ本が思ったよりなかったので今度からは自分でもっていかないといけない。