30012007 Linux
コマンドでちょっと列だけいじりたいときについcolと打ってしまう。
日経Linux [Linuxコマンド集] cut : テキスト・ファイルの各行から文節を取り出します
ファイルの各行から指定した文節を取り出す。取り出すとき,指定する数字は複数指定できる。また,"m-n"のように数字の間にハイフンを入れるとmからnまでのバイト,文字およびフィールドを指定でる。
Text::CSV::Simpleとか使って簡易コマンドつくると便利かもと思った。
30012007 Linux
コマンドでちょっと列だけいじりたいときについcolと打ってしまう。
日経Linux [Linuxコマンド集] cut : テキスト・ファイルの各行から文節を取り出します
ファイルの各行から指定した文節を取り出す。取り出すとき,指定する数字は複数指定できる。また,"m-n"のように数字の間にハイフンを入れるとmからnまでのバイト,文字およびフィールドを指定でる。
Text::CSV::Simpleとか使って簡易コマンドつくると便利かもと思った。
ありがたい。色々勉強になりました。
Hatena::Diary::Neko::kak 500 Internal Server Error - CatはしらんけどSledgeなら
基本コントローラーでRSを作りまくってstashにぶち込みまくって Viewの方で実際にクエリを実行する感じですね。
というわけでcookbookみながら悩んでみた。いじってるのは、こんな感じのテーブルなので、

user_bookmarksテーブルに対してイテレータをまわすことにした。 あとcatlystだとautoっていう最初(のほうに)に呼ばれるメソッドがあるので、そこにユーザーが存在するかどうかのバリデーション書いた。
sub auto : Private { my ($self, $c, $action, $username) = @_; $c->stash->{user} = $c->model('PblDB::User')->single({name => $username}); unless (defined($c->stash->{user}) || $c->req->path =~ m!^bookmarks/?$!) { $c->response->redirect($c->uri_for('/')); return 0; } return 1; } sub default : Private { my ( $self, $c ) = @_; $c->stash->{user_bookmark_it} = $c->model('PblDB::UserBookmark')->search( {user_id => $c->stash->{user}->id}, { prefetch => [qw/user bookmark/], join => [qw/user bookmark/], order_by => 'me.id DESC' } ); }
あと、ユーザーバリデーションしてる件に関しては、
livedoor クリップ - Hatena::Diary::Neko::kak 500 Internal Server Error - CatはしらんけどSledgeなら
個人的には、バリデーションでユーザがいるかどうかはチェックしないなー。 そこでユーザの存在がわかっちゃうとあれかなと。まぁ、場合によるね。
とか
ってやった場合に、ユーザがいない場合にそんなメソッドがないよってエラーになっちゃうので、バリデーションしたというのが経緯なのだが、join使えば、
sub default : Private { my ( $self, $c, $action, $username ) = @_; $c->model('PblDB::UserBookmark')->search( {'user.name' => $username}, { prefetch => [qw/user bookmark/], join => [qw/user bookmark/], order_by => 'me.id DESC' } ); }
と書けばよいのでこれでもいいかもしれんと思った。
あと、実際のサービスでそういった場合の処理はどうしてんのかなと気になったので僕が使っているSBSで調べてみた。
ふむー。
28012007 京都
学生の時にお世話になった教授が今年で退官されるのだが、主催のシンポジウムがあるので、最初で(おそらく)最後の桂キャンパスに行ってきた。
僕が卒業してから何年か経ってからキャンパスが移ったのだが行くのは初めて。
建物は綺麗、でも、、、、
京都タワーちっちゃすぎ
かなり田舎だ。僕の頃は百万遍のすぐ近くで、飲みに行くにも本屋に行くにも便利だった。よく理学部前の焼き鳥屋台でアホほど呑んでたっけ。あと、やたらと量の多いカレー屋もよく行った(ダブカツ中とかよく言ってたけどそれより上のレベルは食えんかった)。
あとは交通が不便で、京都駅からのバスって一時間に一本くらいしかないのな。余裕をもってでたつもりが結局タイトなスケジュールになってしまい。昼飯食い損ねたし、帰りもやたらシビアで、電車に飛び乗ったので結局、京都グルメはせずにただ行ってただ帰ってきただけになってしまった。
セミナー後の懇親会では10年くらいぶりの同期にあったりとか、よく一緒にzettai-mu行ったりした後輩にあったりとかしていろいろ話せて楽しかった。オープンソースのオフィスソフトにかかわってたりとか、プレステの超有名レーシングソフトのプログラマーしてたりとか、みんな頑張ってんだナァと刺激を受けた。
むー僕もブーたれてばっかいないでとりあえず前向きに頑張らんと。とりあえずは今シーズン中に540くらいいけるようになりたい。
というのは冗談で、まぁ僕もいろいろと頑張らねばと思った次第。
あと、ここでも出てたけど、いろんなとこで量子化学のできるヒトが欲しいって話を最近よく聞くけど、量子化学というか理論的にきちんと考察できるような人材を製薬企業(だけじゃないけど)が求めてるってのは、研究ロジックが発見的なものから工学的に制御していく(していくべきだ)って方向にシフトしつつあるのかなとか思った。
というようなことはFDAも言ってんだっけ?
28012007 静岡
26012007 music
最近zeroDBを筆頭にニンジャとジャズトロばっか聞いてる。
amon tobinのbloodstone EPをiTMSで。
2007年3月リリース予定のAmon Tobinの待望のNew Album「Foley Room」のメイキング映像が2本公開されていますが、いやいやいや、このセンスは驚愕に値します。 一見一聴、硬くて無機質っぽく思えるんだけど、肉感があって絶妙に艶かしいいぃぃぃ。
ビデオクリップもカッコよい。
26012007 TT
セッションのユーザー名と、パスに含まれているユーザー名が同じ場合にeditのリンクを出したいときとか、^/kzfm$みたいなマッチをさせたかったので調べた。
こんな風にmatchというメソッドを使うといいそうだ。
[% name = 'Larry Wall' %] [% matches = name.match('(\w+) (\w+)') %] [% matches.1 %], [% matches.0 %] # Wall, Larry
Template ToolkitのVMethodってほかにも結構いろいろあんのね。
25012007 perl
FC5のyumでいれたImageMagick,ImageMagick-perlはCrop,Resizeしても正方形にならずに3:2のまま縮小されてしまう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/perl use strict; use warnings; use Image::Magick; my $i = Image::Magick->new; $i->Read("test0.jpg"); # 640x480 $i->Crop(geometry => '480x480+80+0'); $i->Resize(geometry => '48x48'); $i->Write("test2.jpg"); |
バグか。FC6だと解消されてるみたいだけど。結局
$i->Resize(width => '48', height => '48');
と書くことで望む結果は得られたが、無駄に手間取った。
25012007 東京
今度の出張帰りに寄る。
富久長の杜氏日記:吟醸バー蔵66 - livedoor Blog(ブログ)
恒例になりつつある吟醸バーが今年も1月18日から開店しています。 場所は昨年同様、東京駅八重洲南口。地下1階のキラピカ通り。
24012007 catalyst
HTML::Widgetで改行の入れ方が分からん。
[% widget_result.as_xml %]
とやると、一行でずらずら出力されてしまふ。
あと、Day 19 - HTML::Widget tricksなどを参考にいじってみたりしているが、イマイチよさが伝わってこない。
というわけで、明日も引き続き調べてみることにする。