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が効いていない件のメモ
SquidをSSLでもリバースプロキシとして動かそうと思ったけど
/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で上記のような感じにしておくと、rspecとrspec-railsはgithubからインストールされるので
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ができちゃう優れものなのかしら?
近いうちに試してみよう。