WindowsでRails x Herokuと仲良くする

困ったこと

  • Gemfile.lock には platform 情報が入ってしまうので、Un*x系 のプラットフォームと Windows を混ぜてしまうと Gemfile.lock に diff ができる
  • Heroku は Windows で作った Gemfile.lock を無視する

このコンボで Windows で Rails アプリの開発に参加すると Gemfile.lock が無視されるので Heroku に git push 後の bundle install で意図せず各種 gem のバージョンが上がって build に失敗したりする。

解決策

  • Gemfile.lock の diff だけを commit しておく
  • この commit を削除するか revert して Heroku に git push

CIでどうする

  • CircleCI を使っている
  • 特定の branch にだけ Windows からの commit が入るようにしてある
  • 専用の staging 環境を用意してあり CircleCI から Heroku に deploy している

前提で、以下のような deploy スクリプトを用意した。

git config --global user.name <name>
git config --global user.email <addr>
git checkout .
git revert --no-edit <hash>
git push -f git@heroku.com:{repos} <branch>:master

基本的には CircleCI オススメ設定の

git push <remote> $CIRCLE_SHA1:master

と書いている部分を、

git push <remote> <branch>:master

に変えたうえで、Gemfile.lock に変更が入った commit を revert で取り除いたのち push しているだけ。

※ 途中 checkout してるのは bundle install やら npm install の際に commit 済みのコードが一部書き換わるため。

今回の方法で解決できないこと

今回のケースは基本が mac での開発で、途中一部に Windows を混ぜたものなので Heroku に無視されない Gemfile.lock が用意できており、Gemfile.lock の diff だけを消す方法を採れたが、最初から Windows で開発する場合は Linux を用意する1か、JRuby 使えと Heroku さんは仰っております。

Getting Started on Heroku with Ruby (Microsoft Windows) | Heroku Dev Center

まぁ LL Web を Windows でやっちゃダメというのを改めて思ったのでした。

  1. Windows で開発する場合? 

複数のGeohashでどのようなエリアを作れるか確認できるツールを書いた

一ヶ月前に GeohashのグリッドをGoogle Maps上に再現するツール書いた

  • Google Maps の上に
  • 単一の Geohash を描画でき
  • 地図の移動と連動させられる

というツールを書いたんだけど、これは単一の Geohash で何がどの程度表現可能なのかを確認するために作ったものだった。実際にはそのときにも書いたけど単一の Geohash で表現可能なエリアが人間の意図したエリアと 1:1 に対応しないケースが必ず出てくるというかすでに出ていて、

  • 複数の Geohash で表現可能なエリアを可視化するツール

が欲しいなと思っていた。

で、書いた。

gist: 595515 - Geohash Visualizer 2, multiple geohashes can be drawn on google maps- GitHub

兼六園周辺を複数の Geohash で表しているところ

基本的なアイディアは以前書いたものと同じで、コードも大半はそのまま流用。単に複数の Geohash を textarea に書けるってだけ。複数書けるので map の移動との連動は不可能になり、Geohash に該当する Polygon の再描画のタイミングは map そのものを再描画したときと明示的に Geohash を与え直したときだけになったので、バージョン1より軽く動くかも。

UI がダサイのは仕様です。ほんとは 1 と 2 を使いやすく統合できるとかっこいいんだろうけど、もう力尽きた。

Geohashエリア確認ツール2

すぐ動くバージョンも置いたのでなんのこっちゃと思う人はとりあえず LatLng に表示されている Geohash を textarea にコピペして適当に頭から 5, 6 文字のものに縮めて [ geohash ! ] ってボタンをクリックしてみるとなんとなく分かると思う。

本当は LocalStorage とか使って使いやすいアプリに仕立てられるとそこそこ使えるツールになりそうな気がするんだけど、今はとりあえず確認できるだけー。

※ 細かい話だけど、hash ってもしかして複数形ないんじゃ? だとするとなんかすごく恥ずかしいコードになってしまったけど、もう直す気力ないんでいいんです。

friendfeed.rbの最も基本的な使い方

FriendFeed::Client.new.api_login( nick,

                                  remote_key
                                 ).add_entry( title,
                                              opts )

Twitter / wtnabe: friendfeed.rb の使い方。FriendF …

opts は group 名とか与えられる。

Tramp を使ってみた

Carbon Emacs(の、Panther対応版) と Fink の Emacs 22.1 を -nw で使ってるんだけど、なぜか Tramp 自体はインストールされているのに Info ファイルが入ってなかったのでマニュアル参照先をメモ。

ほんとは MacFUSE + sshfs を使ってみようかと思ったんだけど、10.3 では動かなかったので仕方なく。まぁ Emacs で使えりゃよかったんで、別に sshfs は動かなくてもいいわけだけど、なんとなく敗北感。

つかまぁ「実際遅い」し、わ、わざと負けてあげたのよっ!

……。

あーやる気出ねー。

[追記] 遅いっつーのは実際に開いたり閉じたりするときに一瞬感じるだけで、編集中は当然遅くはならない。それよか鍵認証のサーバに対して使えない1のはなんでだorz

[さらに追記] 鍵認証だからじゃなかった。参照先を

/ssh:HOSTNAME:PATH

じゃなくて

/sshx:HOSTNAME:PATH

にしたら通った。どうも接続先の ssh サーバのバージョンによって動きが違うらしく、password 認証の機械でもダメなやつはダメだったし、両方とも sshx にしたら通った。

ssh クライアントのバージョンが古すぎない限りは、default method を sshx にしておくべきかもしんない。

(setq tramp-default-method "sshx")

ですな。ちなみに、鍵認証だろうが2 password 認証だろうが、mini buffer には

Password for /HOSTNAME:

と出る。passphrase だから Password は入れない、とか考えちゃダメ。

cf. tramp で sshx で multihop

  1. password 認証を許可していないのに Tramp に password を聞かれる 

  2. agent使っててもそれ用の設定をしなければ 

Terminal のフォント放浪 → Monaco + ヒラギノに落ち着く

Terminal のフォントを M+ と IPAフォントの合成フォント : フォント一覧 の (3) の 2 にしてみた。OSX のフォントパネルは幅や高さを調整できるので、これまでの Osaka-等幅と同じく 80 * 59 を画面いっぱいで2枚広げることができるように調整。

見やすいじゃないか。

これまでコードは断然ビットマップだ!と思っていたけど、もうあっさり撤回。これでいくことにする。つかね、トシのせいか、細すぎるビットマップよりほどよく肉のついたアウトラインフォントの方が目が楽だ。

※ しかしこのフォント、Grass と一緒に配布してないのはダメなんじゃないのかな?

[追記]ずれる。

カーソル位置と文字の位置がずれる。幅の調整してるからか?と思ったけど無調整でもずれる。うーん。使えん。

VLゴシック にした。

Bitstream Vera Sans Mono も試したけど、標準の設定でほしいサイズに設定するとアンダースコア消えちゃう。行間を大きめに取らないと表示できない。でもそんなことしたら狭い画面がもっと狭くなっちゃう。ProFont も試した。結局 Andale Mono にした。こんでいいんじゃないか?と思ったらこれもだめだ。セミコロンとコロンの区別がつかねー。

ワンサイズ落として Monaco にしてみた。アルファベットのサイズはちょうどいいんだが日本語(たぶん自動でヒラギノが割り当てられている)がずいぶん小さい。うがー。5行減を飲んで他のフォントと同サイズの Monaco にしてみた。見やすいけど狭い…。でも Bitstream Vera Sans Mono よりはスペース効率がよくて視認性にも優れているのでよしとしてみるか。改めて見るとO'Reilly の本のコードみたいでかっこいいじゃないか。

オフってました。

もう完全に。キーボードにまったく触らず、観光旅行。撮った写真は600枚(コンパクトデジカメ + ブローニーの銀塩)程度ですか。

今回はデジタルのデータは全部 iPod に吸い上げたので荷物はずいぶん楽でした。なぜか iPod 本体が充電されたりされなかったりするのでちょっと悩みましたが、実に手軽でよい感じ。あとはこの整理がなげーんだな。まぁコンパクトデジカメだし、そんなにこだわってもしょうがないのは分かっているので、スパスパ判断して削除&補正をやっていきませう。

しかしもう長時間のバス移動が連続するのはやだな。今度はもうちょっと考えよう。

どっちもどっちだなぁ

いやプロ野球加盟申請したライブドアと楽天ですが。

  • ライブドアも楽天も本業は最近買収ばかりでなんだかな
  • ライブドアは社長が目立ち過ぎ、楽天はライブドアや選手会の頑張りでプロ野球界に風穴が開きそうになったら、突然手のひらを返して参入することにした(しかも神戸とか大阪とか言ってたのに急に仙台にぶつけてきたし)。

楽天の方が知名度は高いし、社長は背広姿でたぶん普通の人のウケはいいだろな。これで楽天が認可されたら、なんか「やっぱウマい方が勝つ」みたいでやだね。なんとなくだけど。まぁJリーグのチーム持ってるってのは純粋に強いと思うし、事業計画とかの地力の部分に差があるかもしれない。勝つとしたら普通はそういうところが要因でしょう。

でも。なんつーか既存チーム、既存連盟と同じ不透明な感じがちょっと否めないわけで。その辺がねぇ、気になりますね。仮に楽天だけ申請が通ったらどうしてもそういう見えないところに意識がいっちゃいそう。

ま、どっちが認可されてもどっちも認可されなくても、まぁ個人的にはそれほどたいした問題ではないのですが、IT業界の末席に居るらしい身としては少しだけ気にしてみるわけです。

画面を見ずにディスプレイの解像度を戻す方法

from @IT

あまり使わないし、いざそういうシーンになったらパニクってそうなのでメモ。つーかこういう状態でも safe mode では強制的に VGA になって画面が見れたりするんだから、もう一歩踏み込んで画面の設定を強制的に VGA で保存することができればいいのにね。安全寄りの設定変更を強制することくらいはできてもいいと思う。あまり使えない sefe mode だけど、こういうときには頼らざるを得なくなったりするんだから。

Groovy いいかもなぁ

Groovyに触ってみよう (@IT)

{ } の Java 文法で変数の型付けは動的だしデフォルトで public なメソッドが作れたり、def でクラスに属さないメソッドが作れたりする。素敵な仕様だ。Ruby の end が気に入らないとか Python のインデントが気に入らないとか、資産はやっぱ見逃せないけど Perl は勘弁してとか、PHP は全然安定しなくていやとか、そもそも Java プログラマだとか、結構多くの人にマッチする言語になるような気がする。

JavaVM 上で動くってことは Web のサーバサイドでいちばん手っ取り早いのは Tomcat か?

Windows のセキュリティアップデート CD を 2000 に適用

ちょっとハマったこと

  • IE6 を入れてくるようには薦めてこない
    • 98/me 向けのフォルダの中から自分で ie6sp1 を入れないといけない。このパッケージは 2000 でも使えるものになっている。
  • 当然、IE6SP1 以降のアップデートも全然ない

てことで実はかなりの数のアップデートを WindowsUpdate から入れることになる。Windows Media Player 9 とか、DirectX 9 とか、98 のときにはこれでもかと聞いてくるが、2000 では謙虚なもの。しかしその代わり 2000 をマルチメディアとかいろんな用途に使う場合のセキュリティアップデートには向いていないような感じ。

ひょっとすると一つ一つのアップデートのバイナリは入っているのかもしれないが、GUI は何も助けてくれない。それなら(回線さえ用意できれば)WindowsUpdate の方がはるかに楽。

About

例によって個人のなんちゃらです