半年ぶりに自鯖を組んだ

前回はこんな感じ。

http://journal.soffritto.org/entry/390

今回はこんな感じ。ああ、今回もクレバリーさんです。

・お届け先:檀上 伸郎 様
1.BOXD510MO
価格:8,470円 × 数量:1 = 合計:8,470円
2.W2U800CQ-1GLZJ
価格:4,270円 × 数量:1 = 合計:4,270円
3.ISK300-65
価格:9,370円 × 数量:1 = 合計:9,370円
4.SSDSA2MP040G2R5
価格:12,470円 × 数量:1 = 合計:12,470円

【お買上金額】
商品金額合計:  34,580円
送料:    525円
手数料:   0円
注文金額合計:  35,105円

メモリでかなりケチってますな。CPUがマザーボードに直付けでファンレス。そしてSSD。電源はACアダプタ。という事でファンはケースについてる8cmだけです。とっても静か。起動したのかどうか分からなくて困る。

Shipped Net::Google::DocumentsList 0.01

http://search.cpan.org/~danjou/Net-Google-DocumentsList/

412が時々出る問題が有りますが、いったんリリースしておきます。気をつけて使えば十分使える品質になったと思います。

Google Documents List Data APIがアップデートされた

http://code.google.com/intl/en/apis/documents/changelog.html

今週末いろいろ対応したいなあ。export問題が解決していないので、これも調査する。

  • export問題解決。「Authorization GoogleLogin auth=hogehoge」でauth="hogehoge"としてると動かない。がっくり。
  • 新機能
    • ファイルのコピーができるようになった。
    • ファイルを変換せずにアップロード(.xlsのまま、など)
      • POST /feeds/default/private/full/?convert=false HTTP/1.1
    • ACLのバッチ変更ができるようになった(前からあったっけ?)
      • 面倒だし対応しない
    • ownerの変更ができるようになった。
      • コードに変更なし
    • publish = 公開?できるようになった。
      • 対応する。

Net::Google::DocumentsList の開発版 0.00_01 をCPANにアップしました

冬休みの宿題、と決めてたんですがなんとか開発版の形となりましたが冬休み中にリリースできてよかったです。明日から客先仕事が始まります。この辺↓に出てきます。

http://search.cpan.org/dist/Net-Google-DocumentsList/

このモジュールはNet::Google::Spreadsheetsではスプレッドシートを新規作成できないとか、スプレッドシートの名前を変えられない、などのかゆいところをなんとかしよう、という事で作り始めました。半年以上前に作り始めたんですが、GoogleDocuments List Data API v3.0自体がLabsの状態で、なかなか安定して動かなくて最近まで放置してました。冬休みになったので棚卸しでいろいろ見てたら意外に動くようになってたので、いろいろ機能を追加してリリースまで持っていきました。

が!今のところ、ものすごく肝心なexportメソッドがまともに動きません!これはいたい。これさえできればファイル変換ツールとしても使えたり非常に強力なんですが、僕の環境では動きません。gdata-issuesにも投げたんですがWorksForMeと言われて瞬殺されてしまいました。もういっかい再現コード書いて投げてみようと思います。

まだもうちょっと内部をいじったり、できる事を増やしたりして、exportも動くようにして、 0.01を近いうちにリリースしたいと思っています。

iTunes Remote Control.applescriptというのがあった

さっきのエントリの続きなんです。画面共有で結局を何してたかって、iTunesの再生とかなんです(自宅作業の時ですが)。で、さっきの「Auto Accept.applescript」の下に「iTunes Remote Control.applescript」というのがあって、これを使うと「play」とか「next」とか「pause」とかを送ればそうしてくれたんです。が、僕の環境ではスクリプトがsyntax error吐いて動きませんでした。こいつの実体は /Library/Scripts/iChat/iTunes\ Remote\ Control.applescript 。見てみると、バックスラがエンマークに化けててそこでこけてたので直したら動いた。べんりー。

see also: http://maketecheasier.com/mac-osx-remote-control-your-itunes-via-ichat

iChatの画面共有で自宅のMacを操作する

自宅のMacを外からいじりたいことってありますよね。

  • sshでログイン
  • afp/sambaでマウント
  • どこでも My Mac で画面共有、マウント

などがあると思いますが、iChatの画面共有が意外にお手軽だったのでご紹介。

  • AIMのアカウントを二つ用意して、自宅MacとMacBookのそれぞれでログインしておく。
  • お互いのアカウントをAIMメンバーリストに登録する
  • 自宅MacでAIMメンバーリストに登録したMacBook側のアカウントを選択してcmd+Iで情報を表示
    • "自分の画面を共有"への参加依頼を自動で受け付けるように設定

http://14.media.tumblr.com/tumblr_kvqzx0rq9u1qzlr8co1_500.png

  • MacBook側から自宅Macを選択して画面共有を依頼

自宅Mac側でログインしてないと使えないのが問題かもしれませんが、スクリーンロック中でもパスワード入れられるし、全画面で使える(Finderに統合されてるVNCだとウィンドウの中でDockをいじるときにイライラしたりします)のでいいですね。

ことしのまとめ

31日でも通常運行してますがまあ今年のまとめを。年始にはこんな事言ってたんですね。

  • 営業状況
    • 大きめのスポット案件を2件、一応つつがなく終えられた
    • 1件でっかく失注した。
    • 年明けの案件が一本打診あり。とりかえすぞー
    • 定期の案件は堅調。引き続きしっかりやりましょう。
    • 絶対黒字で!
  • 技術的な事
    • Net::Google::Spreadsheetsを作って1年たった。外国の人からメールをもらう事が増えてうれしかった。
    • Gourmetspotがらみでいろいろ勉強できたけど成果になっていない。しっかり作りきる。
    • Catalystはまずまず使えるようになってきた気がする。
    • 最近だとTokyoCabinetが便利につかえるようになってきた。
    • お金をもらってする仕事以外の時間の捻出に難があった。年末はがーっと時間が取れてるのでいい感じだけど、もっと安定して時間をさこう。
  • その他
    • ちょっと体調が低調だった気がする。というか今か。健康第一。
    • あらかた出費がすんだ気がするので来年は出費を減らせる予定。
    • リーグとれたらうれしいけどまあそこまでは無理かなぁ。

Geo::Google::StaticMaps::Navigationというのを作ってる

地図的な基礎がないのでsinとかcosとかわかりませーん、ということで地図に線を引いてなんとなく使えそうなメソッドを探しながらやってます。やっとまともに隣の地図につながるようになった。

各地点でsize=500x500&span=0.64,0.64&zoom=9の地図を出してその中に入る最大の四角形をひいてみたりして。

  • 東西の経度差は一定
  • 南北の緯度をGeo::Mercatorでmercateした差は一定
  • http://gist.github.com/264554
  • spanとsizeでzoomは変動する
  • zoom指定があればzoom優先
  • zoom=9&size=500x500のとき、だいたいspan=0.64,0.64
  • zoomとsizeからだいたいのspanを割り出して次の地図のURLを導出する → これから
  • http://github.com/lopnor/geo-google-staticmaps-navigation
  • Geo::Google::StaticMaps に寄生するようにしよう

→ということでリリースしました。予定地はこちら↓

http://search.cpan.org/~danjou/Geo-Google-StaticMaps-Navigation/

Plack::Middleware::ReverseProxyつくった。

この前のPlackathonのときにmiyagawaさんやkazeburoさんに教わりながらyappoさんのHTTP::Engine::Middleware::ReverseProxyをPlack用に書き換えてたのがずっとほったらかしになってたので、cpanにうpしました。

以下メモ

mod_proxy_http.cより

    /* X-Forwarded-*: handling
     *
     * XXX Privacy Note:
     * -----------------
     *
     * These request headers are only really useful when the mod_proxy
     * is used in a reverse proxy configuration, so that useful info
     * about the client can be passed through the reverse proxy and on
     * to the backend server, which may require the information to
     * function properly.
     *
     * In a forward proxy situation, these options are a potential
     * privacy violation, as information about clients behind the proxy
     * are revealed to arbitrary servers out there on the internet.
     *
     * The HTTP/1.1 Via: header is designed for passing client
     * information through proxies to a server, and should be used in
     * a forward proxy configuation instead of X-Forwarded-*. See the
     * ProxyVia option for details.
     */

    if (PROXYREQ_REVERSE == r->proxyreq) {
        const char *buf;

        /* Add X-Forwarded-For: so that the upstream has a chance to
         * determine, where the original request came from.
         */
        apr_table_mergen(r->headers_in, "X-Forwarded-For",
                         c->remote_ip);

        /* Add X-Forwarded-Host: so that upstream knows what the
         * original request hostname was.
         */
        if ((buf = apr_table_get(r->headers_in, "Host"))) {
            apr_table_mergen(r->headers_in, "X-Forwarded-Host", buf);
        }

        /* Add X-Forwarded-Server: so that upstream knows what the
         * name of this proxy server is (if there are more than one)
         * XXX: This duplicates Via: - do we strictly need it?
         */
        apr_table_mergen(r->headers_in, "X-Forwarded-Server",
                         r->server->server_hostname);
    }

ってことはやっぱり普通に外側のproxyがつけたX-Forwarded-*に、内側のproxyがコンマでつないで付け足していくんやね。

→ということで、(自分で設置したはずの)一番後ろのものしか信用できないはず。なので、remote-addrは一番後ろのものをつかう。http-hostはクライアントがどういう名前で呼んでるか、なので一番外側の、一番前のものを使う。で問題ないだろうか。→やっぱり、直近のものだけを信用する事にした。ので、多段proxy使う人はこのモジュールを使うんじゃなくて、自分で書きましょう。→ということで、↓ここに出てきます。

http://search.cpan.org/~danjou/Plack-Middleware-ReverseProxy-0.02/

openid4u.net復旧しました

11月末まででsakura.ne.jpのレン鯖から撤退したんですが、そこで動かしていたopenid4u.netをやっと自宅に持ってきました。従来はなんとベタ書きのCGIで書いていて、それをこっちでも動かすのはいくらなんでもないだろう、ということでArkで全面書き直しました。なかなか動かなくて、coderepos.orgがなんでこんな短いコードできれいに動いてるのか大変嫉妬しました。ソースはこちらです↓

http://github.com/lopnor/openid4u.net

まだいろいろがちゃがちゃしてますねぇ。