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

移動します

d:id:aereal+techで書きます

こっちで書くようにする

foo(&nil)

nil.respond_to? :to_proc # -> false [].map(&nil) # -> #<Enumerator: []:map> なんでEnumeratorがかえってくるんだ? としばし悩んだ。 def foo block_given? ? yield : puts("not given") end foo(&nil) # -> "not given" foo { puts "Hello" } # -> "Hello" つまりブロック引</enumerator:>…

access_hatena.jsでサブダイアリも補完できるようにした (あとvimprのコミッタになった)

fixed complement sub diaries · dd01081 · vimpr/vimperator-plugins · GitHub しかし d.hatena.ne.jp 以外では404になるので、dでのみ補完対象にするというのもアリかとおもわれます。

git-svnのある生活

リポジトリをもってくる % git svn clone -s svn+ssh://user@example.com/path/to/repos/trunk 作業用ブランチを切って作業 % git checkout -b working % touch README % git commit -a -m 'add README' Subversionのリポジトリにコミット % git checkout ma…

他の言語から学ぶべきこと

Ruby Pros if文などが式である (値をもつ) ブロックの構文いいよね すべてがオブジェクトなのいいよね 豊富なリフレクションAPI duck typing Cons Fileクラスとか雑然としている IOとFileとDirとPathnameを統合すべきだとおもう ファイルパスの表現としてのP…

Swafというswf_rubyのラッパを書いた

swaf | RubyGems.org | your community gem host aereal/swaf · GitHub swf_rubyという、SWFのバイナリを動的に書き換えるライブラリがあるのですが、インターフェースが少々低水準で再利用するときに冗長になりがちだったので、抽象化したインターフェース…

あたらしくGemをつくるときもBundlerで

% bundle gem mygem これで mygem というディレクトリが作られてその配下にいろいろつくられます。ちなみにかってにGitのリポジトリがつくられるので、Mercurialとかつかってる人やおれみたいにgit-flowをつかいたいよ、っていう人は rm -rf .git/ してから…

CentOS 5.6にMySQL 5.5を入れる

CentOSのリポジトリにはMySQL 5.0しかないので5.1以降を使うにはサードパーティのリポジトリを利用しなければならないんだけど、とりあえず公式のrpmから入れることにする。 MySQL :: Download MySQL Community Server MySQL-{client,devel,server,shared}-5…

Rubyでコードを書くときのルール

モンキーパッチを適用するときは、必ずモジュールを書いてからそれをincludeさせるようにする class String def /(that) "#{self}/#{that}" end end こういうコードを書くのはイケてないという考え方。 module StringExtension def /(that) "#{self}/#{that}…

CoffeeScriptとJasmine-NodeでBDD

aereal/kanasan.coffee · GitHub (あとで書く)

#kanasancoffee に参加した

kanasan.coffee 参加した。CoffeeScriptは名前と概要だけは知っているよ程度で、そこそこ手間をかけて環境を整えたわりになにもしていなかったり、腐ったかんじになっていたのでとてもいい機会に勉強会にいけてよかったとおもう。 CoffeeScriptの文法につい…

Homebrewを ~/homebrew (など) で運用する

既存のHomebrewをアンインストールする cd `brew --prefix` rm -rf Cellar brew prune rm `git ls-files` rmdir Library/Homebrew Library/Aliases Library/Formula Library/Contributions rm -rf .git rm -rf ~/Library/Caches/Homebrew Installation · mxc…

AquaSKKの起動キーバインドをかえてみる

/Library/Input Methods/AquaSKK.app/Contents/Resources/keymap.conf を ~/Library/Application Support/AquaSKK にコピーする。 9c9 < SKK_JMODE ctrl::j --- > SKK_JMODE meta::hex::0x20 これでCmd-Spaceで起動したりかなモードに移行したり変換を確定し…

zgrep 'Mac OS X' /usr/share/man/man1/*

Mac

AppleFileServer.1 BuildStrings.1 CPlusTestRig.1 CpMac.1 DeRez.1 FixupResourceForks.1 GetFileInfo.1 ImageUnitAnalyzer.1 LaunchCFMApp.1 MergePef.1 MvMac.1 PPCExplain.1 ResMerger.1 Rez.1 RezDet.1 RezWack.1 RunTargetUnitTests.1 RunUnitTests.1 …

マウスなどのポインティングデバイスをつかったジェスチャ・ショートカットについて

ポインティングデバイスによるジェスチャ・ショートカットがイケていないのは、少ないジェスチャの組み合わせでショートカットをつくらなければいけないので、必然的に複雑で長い動作を必要とするところにある。また、キーボード・ショートカットは組み合わ…

MacBook Proが嫁になるまで

Mac

つかっているアプリなどについては i use this で随時アップデートするので、そちらをご覧ください。Macを買ったらセットアップのメモとかを書くのが古来よりの習わしになっているようなので、書き記すことにします。 System Preferences Dock サイズを最小…

Adobe Lightroom 3で現像が終わったらGrowlで通知する

mac

growlnotify -m &#39;processed photos&#39; -a &#39;Adobe Lightroom 3&#39; &#39;Done!&#39; こんなかんじのスクリプトをAutomatorの 'Run shell script' で実行するようにする。あとはこれを .app で保存しておく。Lightroom 3の "Export" で出るダイアロ…

RSpec 2 + Growl + ZenTest で自動テスト

$ gem install autotest{,-growl} rspec $ echo 'require "autotest/growl"' >> ~/.autotest $ cd ${PROJ_ROOT} $ touch .rspec $ autotest -cv だいたいこんなかんじ

サブディレクトリを配下に持つディレクトリにシンボリックリンクを張るときに絶対パスと相対パスで挙動が変わる

$ cd $HOME $ ls src/ subdir/ $ ls src/subdir item $ mkdir dst && ls dst/ src/ $ ln -s src/subdir dst/ $ cd dst/subdir cd: no such file or directory: dst/subdir $ rm dst/subdir $ ln -s $HOME/src/subdir dst/ $ cd dst/subdir && ls item Vimの…

メッセージをGrowlに渡すだけのJabberクライアント

めでたくMacBook Proを購入して、Macユーザになったのですが、im.kayac.comの通知をうけとるのに使いもしないJabberクライアントを常駐させるのはかなりイヤンなかんじだったので、RubyでGrowlに渡すだけのスクリプトを書きました。書いた、というかid:cho45…

代入

*, a, b = [1,2,3,4] # a -> 3, b -> 4 *, c, * = [5,6,7] # -> SyntaxError *, (d, *) = [8,9,10] # d -> 10 括弧の有無で意味が変わる。たぶん括弧があるとこう解釈されてる。 *lhs1, lhs2 = [1,2,3] # lhs1 -> [1,2], lhs2 = 3 d, * = lhs2 # d -> 3 多重…

Gestopft, Framework for CLI Application

Gestopftというライブラリを公開しました。 aereal/gestopft · GitHub gestopft | RubyGems.org | your community gem host gem install gestopft でインストールできます。 なんて読むの? ゲシュトップ、でいいとおもいます。GetOptっぽいもの、って考え末…

and/or 演算子

x = "hoge" && puts x # -> SyntaxError y = "fuga" and puts y # -> "fuga" && は優先度が高くて、前者のコードは x = ("hoge" && puts) x と解釈されてしまう。and は優先度が低いので、後者のコードは (y = "fuga") and (puts y) と解釈される。

RSpecの書き方がつかめてきた

describe Person do subject do Person.new( :family_name => "Aoki", :given_name => "Hanae", :age => 20 ) end it "#name is his name." do subject.name.should == "Aoki Hanae" end context "who became a adult" do it "#adult? is true" do subject.a…

tig.rbでURLを含む内容を投稿できない問題を解決する

tig.rb: failed to post urls · dc9eb08 · cho45/net-irc · GitHub このコミットで解決しています。 git pull しましょう。 tig.rbはURLが内容に含まれているときにbit.lyで短縮する、という機能がついていて、APIキーをオプションで渡さないとデフォルトで…

PerlのApp::CLIみたいなやつ

class MyApp < App::CLI::Dispatcher options :verbose, :debug def install(pkg_name) # ... end def uninstall(pkg_name) # ... end def mysubcmd(*args) Class.new(App::CLI::Dispatcher) { def subsub # ... end }.run(args) end private def my_helper …

RSpec2

${PROJ_ROOT}/spec/spec.opts -> ${PROJ_ROOT}/.rspec || ${HOME}/.rspec autotest を走らせるとき ${PROJ_ROOT}/.rspec があると RSpec2 でテストする。 spec -> rspec spec --f[ormat] s[pecdoc] -> rspec --format d[ocumentation] # ~/.autotest Autotes…

エンドポイントをHTTP POSTで叩く てきとうなWAFでWebフロントエンドをつくる ユーザ名とURLをキューに入れる → キューに追加されたら200 OKを返してコネクションを切る ユーザ名からpost先のサービスを取得し、各種サービスへpost できるだけOAuthみたいな…

メモ #4

静的型付けというのは一種の統合テスト環境だとおもっていて、処理系とテスト環境が完全に一体化しているからありがたいのであって、動的型付けであっても同等のテスト環境を整えるのは不可能ではないはず。また、充実したメタプログラミングのためのライブ…