Rails勉強会を開催しました
Rails勉強会@東北第0回を26日に開催しましたよ。皆さん、色々とレポートしてくれているので、私は後半の雑談部分でのプレゼンというか紹介したものについて。紹介したのはなでしこ、PXDoc、Wink、FireFoxExtension各種。以下順不同で。
なでしこのデモは2つ。フラッシュでデモしました。まず一つは、RailsアプリからCSV出力したファイルを、なでしこでExcelのひな形ファイルに、貼付けるというプログラム。ソースはこれだけ。
エクセル起動
エラー監視
デスクトップ&「求人票雛形.xls」を、エクセル開く
デスクトップ&「kyujinhyou.csv」を開く
エラーならばおわり。
(A1)へそれをエクセル一括設定。
デスクトップ&「求人票」へエクセル保存。
デスクトップ&「kyujinhyou.csv」を削除。
おわり
もう一つは、Railsとは関係なく、Excelで表を作成し、なでしこでそれをhtmlのtableに変換してサーバにftpでアップロードするというプログラム。
というか、Railsの勉強会なのに、いきなりなでしこのソースで始まってしまって本当すみません。
ただ、なでしこは、個人的にWindows環境(特にOffice環境)でのグルー(糊)として、非常に有用であると考えています。
PXDocもフラッシュでデモ。RailsアプリからPXDoc用にXMLを出力し、PXDocを使って印刷するというもの。印刷した帳票はひと月分の出勤簿。
出力されるXMLはcontrollerに、ヒアドキュメントでダイレクトに書いちゃってます。その部署のユーザー分の出勤簿をひと月分生成するので、ユーザデータでeachし、その中でひと月分の出勤簿データをeachしてます。ヒアドキュメントもユーザでeachする時に全体を生成、ユーザ情報を埋め込み、出勤簿データでeachしてる時に、1日ずつ行を生成して出勤、休暇等のデータを埋め込んでいます。大雑把に書くとこんな感じ。
def pxd @users = User.find_all result_string=<<-EOD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <pxd paper-type="A4" name="pxd_print"> EOD for user in @users @timecards = Timecard.find(:all, :conditions =>["YEAR(input_date) = ? AND MONTH(input_date)",year,month) ~~描画用にユーザデータ整形等の処理。 result_string<<<<-EOE <page> <svg version="1.1" width="21cm" height="29.7cm" viewBox="0 0 21000 29700" preserveAspectRatio="xMidYMid" fill-rule="evenodd" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> ~~以下帳票全体描画、途中#{user.name}ユーザ名など埋め込み EOE for timecard in @timecards ~~描画用に出勤簿データ整形等の処理。 result_string<<<<-EOF ~~以下一日分の行を描画、途中#{timecard.inpute_date}などを埋め込み EOF end result_string<<<<-EOG </svg> </page> EOG end result_string<<<<-EOH </pxd> EOH send_data result_string, :type =>"application/pxd" end
勉強会に出られた方ならわかるかと思いますが、実際にはエラー処理とか、出力用のデータ整形等で相当長く汚いコードです。本来なら整形処理は追い出すべきでしょうし、ヒアドキュメントではなくテンプレートにすべきかと思います。
Winkは、上記のデモフラッシュを作成したソフト。紹介だけ。
FireBug(定番)
Web Developper(定番)
View Source Chart(htmlソースを構造化して表示)
LiveHTTPHeaders(Web DevelopperでもHTTPヘッダー見れるけどReplay機能で、リクエストを送れる)
SCRAPBOOK(ローカルにひたすら溜め込み。取り込んだ後のソース元urlの更新もOK)
ColorZilla(良さげな色はこれでいただき)
Greasemonkey&RDocをインクリメンタルサーチするgreasemonkeyスクリプト(secondlifeさん作)
その他、Ajax使ってるかと聞かれたので、回答。会社名のインクリメンタルサーチと、郵便番号で、住所、都道府県を自動補完するautocompleteを使ってます。あと、その場では忘れてましたが、ユーザの順番並び替えのためにソートも使ってます。
勉強会でのプレゼン等についてはざっとこんな所でしょうか。