RubyKaigi2011(二日目)に参加してきた

今日も午後から参加してきた。@a_matsudaさん、@yharaさんの話が聞けなくて、寝坊してしまったことを激しく後悔している。 5 years know-how of RSpec driven Rails app. development. / @moro 最近のrspecやfixture-replacementを使ったテストの書き方のノ…

RubyKaigi2011(初日)に参加してきた

午後から参加してきた。 とりあえず箇条書きのメモを載せておく。あとで感想を書こう。 Ruby を利用した大規模ウェブサービスの開発・運用 / @hotchpotch cookpadの中の話。extensionsがとても興味深かった。 この後のgithubとかもそうなんだけど、テスト=C…

scopeでtwitterっぽいルーティング

「Ruby on Rails 3 アプリケーションプログラミング」のルーティングの項をパラパラとめくっていたら、scopeを使ってtwitterっぽくトップレベル(?)にユーザ名を持ってくるようなルーティングができることを知ったのでメモ。 概要 例えばroutes.rbには次の…

perlのpackage越しのサブルーチン呼び出し時の引数

perlでpackage越しのサブルーチンを呼ぶ際に"::"と"->"だと引数が違う気がしていたけど、あまりよく考えていなかった。というわけでこんなスクリプトを書いた。 $ cat package_args.pl #!/usr/bin/env perl package Foo; use Data::Dumper; sub bar { print …

nginx + unicorn + Rails on Mac

とりあえず動かしてみたのでメモ。 unicornを動かす まずはgemをインストール。 $ gem install unicorn unicornの処理を設定する $ cd <RAILS_ROOT> $ vi config/unicorn.rb <RAILS_ROOT>/config/unicorn.rbはこんな感じ(nginx + unicorn を試してみたからほぼそのまま拝借): # ワ</rails_root></rails_root>…

Macでpkill

homebrewでproctoolsをインストールする。 $ brew install proctools

has_manyな関連先をまとめてINSERTする

fields_for、accepts_nested_attributes_forを使って、has_manyな関連先をまとめてINSERTする方法。ソースはgithubに上げておいた。ちなみにRails 3.0.8。 Post has_many Tags through Taggingsというモデルがあったとする。 とりあえずscaffoldはこんな感じ…

geminaboxでローカルにgemをホストする

geminaboxを使ってローカルにgemをホストしてみる。 (とりあえずでやってみただけなので、手順等にミスがあるかも) まずはサーバを立てる rvmとpowが入っている前提で。 ~/var/geminabox 以下を使うとする。 $ rvm use 1.8.7@geminabox --create $ gem ins…

LaunchAgentsで標準出力・エラー出力を設定する

LaunchAgentsで起動しているデーモン等で標準出力・エラー出力先を指定するには、StandardOutPathとStandardErrorPathを設定する。 例えばmemcachedでは次のようにする(ちなみにhomebrewでインストールした)。 vi ~/Library/LaunchAgents/com.danga.memcac…

Samba上でTortoiseSVNを扱うときの設定

メモ。 create mask = 664 # ファイル作成時のマスク directory mask = 664 # ディレクトリ作成時のマスク delete readonly = yes # readonlyなファイルを削除可能にする unixだとディレクトリに書き込み権限があればreadonlyなファイルも削除できるけど、wi…

rubygemsをバージョンを指定して更新

メモ。 gem install rubygems-update -v update_rubygems バージョンの一覧はrubygems.orgなどで確認するとよい。

Catalystで未定義アクションのテンプレートを描画

Railsだとコントローラにアクションが定義されていなくても、リクエストに応じたビューのテンプレートファイルが存在すればそれが描画される(ルーティングはされてる必要がある気がする)。 で、Catalystでもそうなってるのかと思ったけど、どうやらそうな…

Catalystでnamed_scope風実装

泣きながらPerl/Catalystを書いている今日この頃です。慣れない言語は辛い。 PerlのORマッパーであるDBIx::Classを使ってるんですが、とりあえずDBIx::Class beginnersを見ると、使い方の指針やFat Modelっぽい書き方が載っていて大変良いです。ActiveRecord…

git-svnを使う際に参考になるサイト

git-svnを使うことでsubversionのリポジトリをgitで操作できる。 チェックアウトしてからの作業の流れは次のような感じ。 svnリポジトリからgit-svnでチェックアウトしてきてgitのローカルリポジトリに変換 gitでローカルリポジトリに変更をコミット ローカ…

perlbrew+cpanmでperlの環境を作る

仕事でperlを触ることになったのでとりえずperlbrewとcpanmを入れてみた。 下準備 とりあえずホームディレクトリにbinを作ってパスに追加する。 $ mkdir -p ~/bin $ export PATH=$HOME/bin:$PATH # ~/.zshrc等にも追加 $ cd ~/bin perlbrewを入れる ホームデ…

4/20のTokyo Rubyist Meetupに行ってきた

4/20のTokyo Rubyist Meetup - After the Earthquakeに行ってきた。Twitterのハッシュタグは#trbmeetup (あとで書く)

これはやっておいて損はないよ

これは新卒準備カレンダー 2011春という企画に向けたエントリです。 このエントリでは「エンジニアをやるならこれはやっておいて損はないよ」ということを書いてみようと思います。 まだまだ社会人2年目のヒヨッ子なのでそれ以外にも大事なことはあるかと思…

Titanium MobileでTableViewのフィルタリング

Ti.UI.SearchBarを使うとTi.UI.TableViewの絞り込みがとても簡単に実現できる。 たとえばuserの一覧を表示しているTableViewを、user.nameの値で絞り込みができるようにするには、 // SearchBarを作る var searchBar = Ti.UI.createSearchBar({ showCancel: …

Titanium Mobileでローカルのjsonファイルを読み込む

ローカルのResources/users.jsonを読み込みたい場合、 // Ti.Filesystem.Fileを返す var file = Ti.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory, 'users.json'); // Ti.Filesystem.File.read()はTi.Blobを返すのでtoString()して文字列に変…

Titanium Mobileでconsole.logを使う

Titanium Mobileにはconsole.logが無いらしい。ぐぐってみたらTi.API.info()を使えばいいみたい。 var console = { log: function(str) { return Ti.API.info(str); } }; Ti.API.info()を直で使うべきなのかもなぁ。

__FILE__と$0

FILE はそのコードが書かれているファイルを指し、$0は起動されたスクリプトを指す。 「FILE は実行中のプログラムのファイル名」が詳しい。 先程の記事に載せたgistではこれを利用してサンプルプログラムを末尾に記述している。

コマンドラインアプリ作成にちょっと便利なStringの拡張

githubをうろうろしていたら「なるほど」と思ったコードを見つけたのでメモっておく。 get-twitter-oauth-token / bin / get-twitter-oauth-token (gistじゃないので残念ながら埋め込むことができない。コピペするのも微妙なのでリンクだけ提示しておく) …

ChromeでWeb版Belugaのテキスト入力欄をリサイズ可能に

Web版Belugaのテキスト入力欄はデフォルトでリサイズ不可になっていて使いづらい。というわけでGoogle Chromeのユーザースタイルシートを使ってこの設定を上書きした。 Mac OSXではGoogle Chromeのユーザースタイルシートは~/Library/Application\ Support/G…

MechanizeをMac OSXにインストール

MechanizeはNokogiriに依存しており、Nokogiriはlibxml2とlibxsltに依存している。 libxml2はhomebrewで提供されているのでそれを利用し、libxsltはソースから入れる。 $ brew install libxml2 # libxml2 v2.7.7 $ wget ftp://xmlsoft.org/libxml2/libxslt-1…

RMagickで枠線を付ける

RMagickを使って画像に枠線を付ける方法。 require 'rubygems' require 'RMagick' input = "/path/to/input" # 元画像 output = "/path/to/output" # 書き出し先 thick = 10 # 枠線の太さ color = "black" image = Magick::ImageList.new(input) # 上下左右…

CentOSでmysqldを自動起動する設定

このさくらのVPSサーバを再起動させた際にMySQLが自動的に立ち上がってなくて、どうやらchkconfigの設定が抜けていたようなので、下記の手順で設定した。 # cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld # chmod +x etc/init.d/mysqld …

jQuery mobileでブラウザネイティブのselectダイアログを使う

jQuery mobileでselect要素を使うとbodyの後部に選択ダイアログ用のdiv要素を追加してそれっぽく表示してくれる(デモ)。 ただAjaxで動的にoption要素を生成するような場合だとjQuery mobileの初期化に行われるDOMツリーの書き換えのタイミングと合わなくて…

RSpec 1.3でカスタムマッチャ

ある処理で行われるファイルの移動が適切かどうかテストしたかったので、カスタムマッチャを作ってみた。使用したのはRSpec 1.3.1。 目標のspec lambda { foo }.should move_file(src, dest) チェックする項目 fooメソッドを実行する前にsrcにファイルが存在…

javascriptでcanvasに図形を描く

MDNのCanvasチュートリアルを参考にやってみた。 基本となるHTML: <html> <head> <meta name="charset" content="UTF-8"> <title>canvas</title> </head> <body> <canvas id="canvas1" width="100" height="100"></canvas> <script type="text/javascript" src="draw_figures.js"></script> </body> </html> 以降、draw_figures.jsを変更…

watchrでautospecみたいなこと

watchrで更新のあったファイルに対してrspecを実行する方法。 secondlifeさんの記事を読んで、取り急ぎやってみた。 $ gem install watchr $ gem install ruby-fsevent # Mac OSXの場合 $ gem install rev # Linux/*BSDの場合 $ cd (RAILSアプリのルートデ…