CSVのマッピングができる何かを作ってみた


https://github.com/hidenba/millionaire


使い方とかはwikiページ見てもらえばいいとして、何がやりたかったかってお話。
CSVを読み込む時って外部システムのデータを取り込んでごにょごにょしたい時が多いのかなぁと思うんだけど
これが意外とCSVのデータ自体が信用できなくて、こちらが意図しない形式のおかしなデータが入ってきて
「あーとりこめねーとりこめねーしねーしねー」
とか
「ちょwwwwなにこのデータwwwこんなの想定してないっすよwww」
とか
「うわwww変なデータが入ってるwww」
とか
取り込んじゃった後に「手パッチつれえwwwwww」
みたいな感じで、残念極まりない感じになることが多いなぁと。
そんな状況を回避するために毎回毎回、CSVデータの中身を保証するための何かを書くためにマッピングしてゴニョゴニョやるのにつかれたので
簡単にマッピングできてvalidationまで掛けられるお得なやつを作ってみたよってお話でした。
たまにCSVデータを検索したくなる時があるので検索もできるようにしといた。


現状だと単体のCSVにしか対応してないだけど、複数のCSVで関連がある場合なんてのも多々あるのでその辺りも何とかしたいなぁと。
あとは、検索の幅を広げたり、読み込み設定(エンコーディングとかセパレータ)が記述したり(できないのかよwww)とかとかとか
ぼちぼちひま見つけて作っていきますわ。


一点注意点というかなんというか
CSVファイルの中身を全部読み込んでメモリ展開するので潤沢な資源のある環境じゃないと残念なコトになるかもだ

OSXにプログラミング用フォントRictyを入れてみた

基本的にはインストール手順に従ってやっていけばいいのだが,
パッケージ管理にHomeBrewを使っているので,
フォントを生成する段階でセグフォで落ちてしまったのでひと通りの手順をメモ


Version 3.0.0からはフォントは自分で生成しなくてはならなくなったようだ
プログラミング用フォント Rictyから最新版をダウンロード

tar zxvf Ricty-3.0.2.tar.gz


fontfogeをインストール

brew install fontfoge 


Inconsolata(OpenType file)をダウンロードしてrictyを展開したフォルダにコピー
http://levien.com/type/myfonts/inconsolata.html

cp Inconsolata.otf Ricty-3.0.2 


Migu 1Mをダウンロードしてrictyを展開したフォルダにコピー
http://mix-mplus-ipa.sourceforge.jp/download.html

 unzip cd Migu-1M-20110610.zip
 cp Migu-1M-20110610/*.ttf Ricty-3.0.2


Rictyの生成

cd Ricty-3.0.2
ricty_generator.sh Inconsolata.otf Migu-1M-regular.ttf Migu-1M-bold.ttf

ここで,セグフォでおちる。

Ricty のビルド中に fontforge が segmentation fault でクラッシュする問題 - EAGLE 雑記をみてみると--enable-doubleをはずすとうまく行くみたい的なことが書いてあるので早速試してみる


brewのfontfogeの設定をちょこっと書き換える

brew edit fontforge

すると,viか何かが起動するので--enable-doubleの行を削除して保存
再度,fontforgeをインストールする

brew install fontforge


改めてRictyの生成

ricty_generator.sh Inconsolata.otf Migu-1M-regular.ttf Migu-1M-bold.ttf


無事にインストールされたのでEmacsのフォント設定
~/.emacs.d/init.el的な何か(.emacs的な物)
.emacs分割のすゝめ - KAYAC engineers' blog

(set-face-attribute 'default nil
                   :family "Ricty"
                   :height 160)
(set-fontset-font
 nil 'japanese-jisx0208
 (font-spec :family "Ricty"))

これで,Emacsでもいい感じでフォントが表示されています。

JRubykigi2010でLTの発表をしてきました

LT発表者の面々とタイトルを見る限り,あからさまに場違いな僕。
そんな事を考えても仕方が無いので,たんたんと事例紹介をしてきました。
恐らく,笑いは一番とったハズだが,それでいいんだっけか????
会場ドン引きの中,5分間お付き合いいただきありがとうございます。
何が心残りって,本題に後2枚スライドが届かなかったこと。。。。
まぁ,練度が足りないので,当然といば当然の結果かな
最後になりますが,拙いLTにお付き合いいただきましてありがとうございました。

今日の資料はに上げておきました。http://www.slideshare.net/hidenba/j-ruby-kaigi2010lt

rspec-modeをrake意外で使う方法

Railsプロジェクト以外でrspec-mode(GitHub - pezra/rspec-mode: An RSpec minor mode for Emacs)を使おうと思ったらエラーが出て動かなかったのでメモ


デフォルトのままだとrake specを使用してしまうので.emacsに以下を追記

(custom-set-variables '(rspec-use-rake-flag nil))
(custom-set-faces )

これで,specコマンドを使用するようになる。
しかし,コレでも動かないので,空でも良いのでRaikefileを用意することでspecが流れるようになります。


ちなみに,rake specを使用する場合の簡単なRakefikeの例

require 'rake'
require 'spec/rake/spectask'

desc "Run all spec"
Spec::Rake::SpecTask.new('spec') do |t|
  t.spec_files = FileList['spec/**/*.rb']
end

今年もやるよXP祭り

XP祭り2010のスタッフミーティングが行われて今年のXP祭りのボンヤリとした概要が浮かび上がってきた感じです。

XP祭り2010 〜 アジャイル学園祭(仮) 〜
と題して、2010年9月4日(土)に早稲田大学西早稲田キャンパスにて開催します。
なんでアジャイル学園祭かって話なんですが、XP祭りに参加することでアジャイル全方位を網羅する
ワークショップに参加できたり講演を聞けるというなんとも壮大なテーマをもって、大部屋で同時に
様々なワークショップをやってみようという試みです(わいわいがやがややるのが学園祭っぽいねって感じ)


アジャイル全方位って何だってのもあるのですが、ぶっちゃけ何でもよいと思ってます。
XP・スクラム・リーン・TDD・品質・儲かるXP・UX・マネジメント・分散SCM・LTの作り方・ネタ系等々多種多様なワークショップや
講演を行い参加者一人一人が興味のあるところに行ってもらったり勝手に喋ってもらったりしてもらって
楽しんでもらえればと思っています。


休憩時間や開いた時間を使ってアンカンファレンスを開催できるスペースも用意してみようかなんて案も出ているので
当日急にしゃべりたくなったとか何かをやりたくなったとしても安心です。


そんなわけで、全方位をスタッフだけで網羅するのは難しいのでワークショップや講演の公募を行います。
公募方法等は待て続報!!(あれ?YouRoomでやるんだっけ?)

詳細(仮)はこの辺を見てもらうと分かると思います。
http://r31.youroom.in/entries/29397

UbuntuのSquidで--enable-sslが効いていない件のメモ

SquidSSLでもリバースプロキシとして動かそうと思ったけど
/etc/squid/squid.confにhttps_portのタグを書いてもエラーが起こっていたのでメモ

http://ubuntu-ky.ubuntuforums.org/showthread.php?t=68246#2にそれっぽいのがあったので
その通りにやってみたがopensslのヘッダがないってエラーが出たのでlibssl-devを追加したらうまく動いたので、次の手順で大丈夫なはず。

apt-get source squid
sudo apt-get build-dep squid
sudo apt-get install devscripts build-essential fakeroot libssl-dev
cd squid-xxxx
emacs debian/rules
"Configure the package” sectionに下記を追加
--enable-ssl \ 
./configure
debuild -us -uc -b
cd ..
sudo dpkg -i squidxxxx squid-commonxxxx


以下squid.conf

refresh_pattern . 2 100% 2 ignore-reload

cache_mem 4 MB

negative_ttl 0

icp_port 0

http_port 80 accel vhost

https_port 443 accel vhost cert=/etc/squid/ssl/newcert.pem key=/etc/squid/ssl/private.key

cache_peer localhost parent 8080 0 no-query originserver

acl all src 0.0.0.0/0.0.0.0

http_access allow all

visible_hostname localhost

access_log /var/log/squid/access.log

Rails3.0βはじめました。

なにが変わったかよくわかってないけど、βリリースされたと聞いたので、
Rails3.0βをさわってみたよ。
2.x系との違いはhttp://guides.rails.info/3_0_release_notes.htmlをみると良いと思う。

Rails3.0のインストール。

$sudo gem install tzinfo builder i18n memcache-client rack /
  rake rack-test rack-mount erubis mail text-format /
  thor bundler

$sudo gem install rails --pre

次に、プロジェクトの作成。

$rails myApp -d mysql --edge

railsコマンド

2.x系と変わったのがscript/consoleとかscript/generateが無くなりrailsコマンドであれこれやるようになった。
script/generateは

$rails g xxxx

script/consoleは

$rails c

script/serverは

$rails s

たぶん新しいコマンド

$rails db

ってすることで、database.yamlに設定してある、DBコンソールが開きます。

bundler

2.x系のconfig.gemに変わってgem管理をしてくれるらしい。
RAILS_ROOTにGemfileってファイルがあるので、そこにあれこれ書いていくと幸せ。

# Edit this Gemfile to bundle your application's dependencies.
source 'http://gemcutter.org'

## Bundle edge rails:
gem "rails", :git => "git://github.com/rails/rails.git"

## Bundle the gems you use:
gem "mysql"
gem "haml"

## Bundle gems used only in certain environments:
gem "rspec", :group => :test, :git => "git://github.com/rspec/rspec.git"
group :test do
  gem "rspec-rails", :git => "git://github.com/rspec/rspec-rails.git"
end

rspec-rails2.0

railsも3.0なことだしrspecも2をさわってみた。
bundlerで上記のような感じにしておくと、rspecrspec-railsgithubからインストールされるので
2系の最新のものがガスガスはいる。
試しに、modelをgenerateしてみた。

$rails g rspec:model Hoge

なんということでしょう。specファイルしか作られない。。。。
rails g modelとかやってからrails g rspec:modelやらないの行けないのかしら。。。。

コマンドを眺めてみるとrspec:installなるものがあったので試し打ち。
すると、spec_helper.rbやらspec.optsなんかが作られた模様。
http://github.com/rspec/rspec-rails/blob/master/README.markdown

気になってること

ActiveModelがなにやら便利そうな予感。
ActiveRecordじゃないモデルでValidationができちゃう優れものなのかしら?
近いうちに試してみよう。