2008-01-01から1年間の記事一覧

RemedieでLDRizeっぽいショートカットが動くようにする

追記: id:mattnさんが以下のパッチを改良していただいて、本家にコミットされましたので本パッチは不要になりました。 動画一覧の表示のところで、j, kで上下に移動して、oで動画を再生できるようにいじってみた。 diff --git root/static/js/remedie.js roo…

gitのブランチ名をRPROMPTに表示する

ググってみると色々あったのですが、あまりシンプルなのがなかったので調べつつやってみましたgit name-rev HEAD --name-onlyみたいなものがあるだろうなとは思いつつ、コマンドが多くてなかなか見つかりませんでした。 _set_env_git_current_branch() { GIT…

gitで以前からアップデートされた変更のdiffをすべてみる

git

svnやsvkをつかっていて今まで一番不満だったのは、 $ svn updateなどをしたときに、リビジョンがいくつになったというのは表示されるのだけど、アップデートする前にsvn infoを打たないとアップデートする前はどのリビジョンだったかわからなくなってしまう…

nestした構造のprocを作る

# ok. bl1 = proc { p "called!!" } #=> #<Proc:0x00636a14@(irb):1> bl2 = proc { [1, 2].each(&bl1) } #=> #<Proc:0x00633788@(irb):2> bl2.call "called!!" "called!!" #=> [1, 2] ふつうは上記のような挙動をするが、 bl = proc { p "called!!" } #=> #<Proc:0x006369b0@(irb):1> bl = proc { [1, 2].each(&bl) } #=> #</proc:0x006369b0@(irb):1></proc:0x00633788@(irb):2></proc:0x00636a14@(irb):1>

札幌Ruby会議01にいってきた

jpmobileでいつもパッチなどを送らせていただいてるid:darashiさんや、wassr上でよくやりとりしてるid:h-sbtさんなど、札幌の面々はいろいろふだんからつきあいがあり、実際に会いたかったので、札幌にいってきた。wassrでの位置情報の地図はこんな感じ以下…

gitで設定ファイルを管理してみる

git

今まで設定ファイルに関してはSubversionで管理した方が単純でよいかなと思っていたのですが、codereposみたいに人ごとにばらばらのファイルを作るよりgitで人ごとに別のブランチの方が、ある変更を見てその一部分の設定だけ自分の設定に取りこんだりとかし…

git-svnでcommitしたときに画像などにsvn:mime-typeがつかなくてえらい目にあう

経験をしたことはありませんでしょうか?自分はなりました。えらい目といってもコミットフックで飛ばしたメールが画像をテキストで表示しようとしててすごいことになっただけですが;) その回避方法はあまり調べても書いてなかったりするのでメモっておきます…

git-svnメモ

今までgit単体ではそこそこ使ってきたのですが、svnに入れる際はあまり使っていなかったのですが慣れてくると使いたくなったので少し調べてみました。ほとんどマニュアルに書いてあることなのですが、個人的にまとめた方が頭に入るのでまとめておきます。 ch…

git勉強会メモ

git

gitメンテナの濱野さんという方の話を聞けるそうなので聞きにいってきました。http://atnd.org/events/93内容の詳細は、既にkinnekoさんが詳しくまとめてくださっているので、自分が感心したところなどを掘りさげてメモ。git commitにvオプションをつけると…

git bisectの使いかた

git

gitを話を聞きに第33回git勉強会に行ってきました。詳しいまとめは http://d.hatena.ne.jp/conceal-rs/20080928/1222612534 http://wota.jp/ac/?date=20080928#p01 などがあるので割愛します。git stashの話が出てきたときに、git stashがいつごろから入った…

gemのパッケージを展開する

gemをインストールはしたくないけど、展開して中身を見たいときのやりかた コマンドラインからやるなら以下のようにすれば一応展開できてるっぽい。 mkdir classx-0.0.4 tar xvf classx-0.0.4.gem -C classx-0.0.4 cd classx-0.0.4 tar xvzf data.tar.gz意外…

インスタンスからdefaultを呼ぶ

http://d.hatena.ne.jp/fbis/20080918/1221717538metaクラスからたどって直接呼び出した方がわかりやすいんではないかと思ったりしました。 package Foo; use Moose; has hoge => ( is => 'rw', lazy => 1, default => sub { 100 }, ); __PACKAGE__->meta->m…

継承可能なクラス属性

Rubyのクラス属性まわりは個人的には結構ややこしいと思っています。クラスに保存できるデータには以下のようなものがあります。 クラス変数 クラスローカル変数( クラスインスタンス変数? ) メソッド クラス変数 @@variableのように表記します。以下1.8での…

JSONからIRCにポストするやつ

以前 http://d.hatena.ne.jp/walf443/20080523/1211497763 でGithubのHookを受けてIRCにポストしたりするやつを紹介したのですが、Github以外の場合からも同じコネクションを叩きたかったりしたので、その部分を分離してJSONから叩けるようにしてみました。c…

ClassX::Role::Logger

ClassXなクラスにこいつをincludeしてやると、標準ライブラリのloggerがattributeとして使えるようになります。 require 'classx/role/logger' class YourApp include ClassX extends ClassX::Commandable include ClassX::Role::Logger def run self.logger…

ClassXがclassからmoduleになりました

東京Ruby会議01で発表したところ、ClassXがclassじゃなくてmoduleの方が便利じゃね?とか、使いたいけど、classになってるばかりに使えなさそう。と言う声が多かったので、どうせ誰も使ってないよね?ということで変えてしまいまいた。つまりこういうふうに使…

ClassX::Commandableで簡単CLIアプリ

東京Ruby会議の懇親会で一番反響が良かったのはClassX::Commandableだったということでブログでもあたらめて紹介しておく。MooseにはMooseX::GetoptとかMooseX::App::Cmdという便利なモジュールがあったのでMooseX::GetoptをパクってClassX::Commandableとい…

東京Ruby会議01で発表しました

Akasaka.rbの活動の一環として東京Ruby会議01でClassXについて発表してきました。スライドは http://github.com/walf443/classx/tree/master%2Fdoc%2FTokyoRubyKaigi01_classX.pdf?raw=trueからDLできます。発表すると、 http://github.com/walf443/classx/t…

ClassX::Declare

東京Ruby会議01で高井さんにどうよといわれたやつ。 http://github.com/walf443/classx/tree/28f1694a54968cb56c674fe62a6f2b6ad35a46b9/lib/classx/declare.rb↑のやつには使うとどんな風にできるかの説明がなかったので書いておきます。http://gist.github.…

RubyCocoaでFluent Interfaceはどうか

http://subtech.g.hatena.ne.jp/secondlife/20080709/1215530958のFluent InterfaceはRubyCocoaの呼びだしで使えたらうれしいかもと思った。今はobjc_sendをつかって、 NSTimer.objc_send(:scheduledTimerWithTimeInterval, 120,- :target, self, :selector,…

ClassX::ValidateでHashをチェックする

http://d.hatena.ne.jp/rubikitch/20080710/1215641240メソッドの引数にHashをとるのはいっぱいあるときでもきれいに書けるので個人的にはあまり嫌いではない。classXを使うとHashのチェックが柔軟にできるよというおはなし。 require 'classx/validate' cla…

メソッドの渡すHashもきっちりチェックしたい

http://d.hatena.ne.jp/walf443/20080524/1211650071前の記事でコンストラクタに渡せるHashのキーと値を宣言的に書くことで見通しが良くなると書きましたが、コンストラクタに限らず、メソッドにオプションとして渡すHashもきっちりチェックしたいはず。とい…

デフォルトのオプションと:isおよび:requiredオプションの廃止

classXで、Mooseをなぞるのをやめてアクセサの宣言のデフォルトの設定を変更しました。 :writableオプションを指定しない限りは、アクセサはwriterをpublicにしないようになりました。これは、単にreaderを定義する時は、オプションを明示的に定義する必要は…

メソッドの渡すHashもきっちりチェックしたい

http://d.hatena.ne.jp/walf443/20080524/1211650071前の記事でコンストラクタに渡せるHashのキーと値を宣言的に書くことで見通しが良くなると書きましたが、コンストラクタに限らず、メソッドにオプションとして渡すHashもきっちりチェックしたいはず。とい…

Rack::Auth::IPをリリースしました

GitHubPostRecieverでGitHub以外からのpostは受け付けたくなかったのでRackでIPのアクセス制限ができるRack::Auth::IPというミドルウェアを作ってみました。rackupのファイルの中で、 require 'rack/auth/ip' # ローカルネットワークにアクセスを制限する us…

classXを使うと何がうれしいか

http://d.hatena.ne.jp/walf443/20080520/1211239672で触れた宣言的なアクセサをGitHubPostRecieverに試しに適用してみた + has :host, :is => :ro, :kind_of => String, :required => true + has :port, :is => :ro, :kind_of => Integer, :default => 6667…

Commit Bot for GitHub

GitHubでは、プロジェクトのコミットをfollowして興味のあるプロジェクトのコミットのみをまとめてみれるのですが、毎日それらを全部見るのはなかなか大変だったりします。興味のあるプロジェクトの場合、割とfreenodeにIRCのチャンネルがあって、そこにjoin…

Mooseっぽい柔軟なアクセサ

最近perl界隈で話題のMooseをちょくちょく弄ってみたりしているのですが、宣言的なアクセサは見通しも良くなるし、なかなか良いなと思ったんでRubyでもそれっぽく動作するやつを書いてみました。Mooseっぽくコンストラクタも勝手に用意するようにしてみたの…

ブロックの解釈の仕方をカスタマイズする

DSLみたいなものを作ろうとしてると、どうしてもブロックを俺俺文法で解釈させたくなって調べてみた。ParseTreeというライブラリを使うとRubyのコードをS式に変換することが出来る。 S式に変換できるのは、モジュール単位、モジュールのメソッド単位、文字列…

rspec-fixutre 0.0.1をリリースしました

先日言っていた機能はまだ足してはないのですが、一通り個人的に使いたい機能を動くようにして、テストも充実させたのでgemにしました。 gem install rspec-fixtureでインストールできます。http://coderepos.org/share/changeset/6563で、単純なテストがい…