タグ

ブックマーク / blog.hide-k.net (14)

  • hide-k.net#blog: 巻き込み重要

    新しい会社に入って3ヶ月が過ぎて、ようやく試雇採用期間も終わり無事正式採用されました。 周りは若い人ばっかりで、なかなか活気があるのですが残念ながら業務の仕組みややり方が古いのも、また事実。僕が思うくらいだから、結構古い。というかベンチャーにありがちな勢いで来ちゃった感じ。 一人、新しいことに敏感な方がいらっしゃるのだが、なかなか忙しい人なので周りを巻き込むまでには至ってなかった感じ。 まぁ、そこはそこ。まだ小回りが利くうちに変えちゃえってことで、勝手気ままに色々巻き込んじゃった。 IRC 元々あって、僕が来たときには結構ログ流れてたんだけど、その前は全然使われてなかった感じだった。くだらないことから何から片っ端から流し始めてマネージャーにも強制参加させたら、みんなちゃんと使うようになった。 wiki 部内wikiみたいなのが元々あったんだけど、ちょっと停滞気味な感じは否めなかったの

  • hide-k.net#blog: Catalyst::Response->redirect()のメモ

    Catalyst::Response->redirect()でちょっとはまったのでメモ。 response->redirectの時点でクライアントにredirectレスポンスが帰って処理が終わると勝手に解釈してたためにはまりました。 例えば a : Global { my ( $self, $c ) = @_; $c->res->redirect($c->uri_for('/')); $c->log->debug('after redirect'); #ここも実行される } さらに end : Privateまで呼ばれるため sub end : Private { my ( $self, $c ) = @_; $c->forward( $c->view('TT') ) unless ($c->response->body); } なんてやってたらtemplateが指定されてないよ、と起こ

    overlast
    overlast 2008/02/25
    さっきはまった
  • hide-k.net#blog: Catalystでマルチバイトを取り扱うときのまとめ

    #前に社内wikiに書いておいたのを公開してみるテスト。 Catalystでマルチバイトを扱う機会があるのは主に ユーザーがフォームで入力する値 ($c->req->param()) データベースからの入出力 (DBIx::Class) それ以外の文字列の評価 View::TTによる出力の生成 FillInFormによるフォームの埋め込み HTTPレスポンス です。 ここでは以下の条件でまとめてみました。 文字コードはUTF8に統一 データベースにはmysqlを使用 下準備 テンプレート、perlのコードは全てUTF8で書きます。 mysqlの文字コードの指定は/etc/my.cnfに [mysqld] default-character-set = utf8 skip-character-set-client-handshake [mysql] default-character-set

  • hide-k.net#blog: 使ってるCatalystのPlugins/Components

    こんなエントリーがあったので進行中のプロジェクトで今のところ使ってるのを晒してみる。 Catalyst::Action::RenderView Catalyst::Model::DBIC::Schema Catalyst::View::TT::ForceUTF8 Catalyst::View::JSON Catalyst::Plugin::Static::Simple Catalyst::Plugin::ConfigLoader Catalyst::Plugin::Dumper Catalyst::Plugin::StackTrace Catalyst::Plugin::Session::* Catalyst::Plugin::Authentication::* Catalyst::Plugin::FormValidator::Simple Catalyst::Plu

  • hide-k.net#blog: perlで機種依存文字を取り扱う

    「D-5 出張版:機種依存文字入りのShiftJISを扱う」を読んで大変タイムリーだったので実験して見ました。 はてぶのコメントでmiyagawaさんが decode("cp932", $buf) でいい気が とおっしゃられているので こんなんで実験してみました。 JISやEUCを取り扱うのでEncode::Unicode::Japanseを使って見ました。 取り扱うtext.txtは機種依存文字や半角カタカナを含んだこんなファイル。 #!/usr/bin/perl use strict; use warnings; use Encode::Unicode::Japanese; use Encode qw/encode decode/; _encode (qw/text.txt shift_jis sjis-utf8.txt utf8/); _encode (qw/text.txt shi

  • hide-k.net#blog: 続 C::P::Email::Japaneseの文字化け対処

    hide-k.net#blog: C::P::Email::Japaneseの文字化け対処 でWAVE DASH問題に何とか対応しようとしてMIME::TT::Lite::Japaneseに手を加えるというトンチンカンなことをやっていましたが、subtech - Bulknews::Subtech - cp932 vs. shift_jisでEncode::Aliasを使えばいいんじゃないかというお話があったのでEncode::Unicode::Japaneseとからめて試してみました。 sub send : Private { use Encode::Alias; use Encode::Unicode::Japanese; define_alias( qr/jis$/i => '"unijp-jis"' ); $c->email( Template => 'email.tt', To

  • hide-k.net#blog: C::P::ConfigLoaderでpath_toを指定する

    C::P::FV::Simpleをmod_perlで動かすときの注意で これだとCatalystビルトインのサーバーで動かす分にはいいのですが、mod_perlで動かす場合にはフルパスで指定する必要があります。 とか言ってたのですがtypesterさんに validator: profiles: __path_to(profiles.yml)__ messages: __path_to(messages.yml)__ って書き方ができるというのを教えていただきました。 C::P::ConfigLoader->finalize_configで s{__path_to\((.+)\)__}{ $c->path_to( split( '/', $1 ) ) }e; って置き換えやってるんですね。 知りませんでした。 不勉強で大騒ぎしてごめんなさい。

  • hide-k.net#blog: localhostのデータベースに対してfederated tableが作れない件

    将来的にデータベースを分散させることを考えて複数のデータベースにデータの種別で分けるよう設計したのですが、こうすると当然joinできなくなります。 まぁ一回一回fetchしてもいいのですが、せっかく便利なDBICのsearch_relatedなんかが使えなくなるのが心苦しかったのでMySQLのfederated tableを試してみることにしました。 理想的にはこんな感じ。 use account; create table users ( id int not null auto_increment, name varchar(16) not null, ... ); use hoge; create table users ( id int not null auto_increment, name varchar(16) not null, ... ) engine=federat

  • hide-k.net#blog: C::P::Email::Japaneseの文字化け対処

    正確には文字化けではないですね。 Catalyst::Plugin::Email::Japaneseを便利に使わせていただいていますが、~が\x{FF5E}で表示されるという報告があがりました。 いわゆるWIDE DASH - FULLWIDTH TILDE問題で、UTF8->ISO-2022-JPでマッピングないというやつです。 正直perl newbieで正解がよくわからんので、MIME::Lite::TT::Japaneseに手を入れるという暴挙にでました。 Lingua::JA::Mailのソースを参考に sub remove_utf8_flag { my $str = shift; utf8::decode($str); $str =~ tr/\x{005C}\x{00A5}\x{2014}\x{203E}\x{2225}\x{FF0D}\x{FF5E}\x{FFE0}\x

  • hide-k.net#blog: パスワードの保存方法

    仕事でパスワードによる認証があるサービスを立ち上げるにあたって、お客さんがパスワードを忘れたときのパスワードの救済措置(いわゆる、「パスワードを忘れましたか?」とか「パスワードリマインダ」ってやつです。)をどーするか、ちょっとした議論(そもそも要件で決めて置けという話もありますが)になったのでまとめてみました。 パスワードの保存方法として大きく三つ考えられます。 1. そのままの文字列として保存 ・認証 ユーザーが入力した文字列と同じかどうか比較するだけです。 ・リマインダ 文字列がそのまま保存されているのでそのまま送ればユーザーはそれを使ってログインできます。 ・問題点 パスワードがそのまま保存されているのでデータベースなどを盗まれたらだだ漏れします。 2. 秘密鍵を使って復号可能なアルゴリズムで暗号化して保存 ・認証 復号できるので保存されているパスワードを復号化してユーザー

  • hide-k.net#blog: C::P::FV::Simpleをmod_perlで動かすときの注意

    Catalyst::Plugin::FormValidator::SimpleでmessagesのYAMLを指定する時やCatalyst::Plugin::FormValidator::Simple::AutoでprofilesのYAMLを指定するときに __PACKAGE__->config( validator => { messages => 'messages.yml', profiles => 'profiles.yml', }, ); てな風にします。 これだとCatalystビルトインのサーバーで動かす分にはいいのですが、mod_perlで動かす場合にはフルパスで指定する必要があります。 いちいち指定するのも面倒だしポータビリティもよろしくない気がするので C::P::FV::Simpleは if ( $setting && exists $setting->{message

  • hide-k.net#blog: Catalyst 5.7のインストール

    Catalyst 5.7をまっさらなFedora 5にインストールしたのでその顛末をメモ。 通常のFedora 5に開発パッケージを追加した程度ではこんな感じにCPANモジュールがプリインストールされていました。 で、ここを見ながら以下の手順でCatalystの開発環境を簡単にインストールできました。 Bundle::CPAN' でBundle::CPANをインストール perl -MCPAN -e 'install Bundle::CPAN' ここからcat-installスクリプトを持ってきて実行 wget http://www.shadowcatsystems.co.uk/static/cat-install perl cat-install Module::Pluggable::Fastを入れておかないとCatalyst::Plugin::ConfigLoaderのテストでこけるの

  • hide-k.net#blog: Perlの教育コスト

    新人教育 - Unknown::Programming まっさらな新人にPerl教えるのって当にきついですね。 専門学校レベルのC言語しかやったことないとかいう人は配列やfor文を凄く好む。 ハッシュやforeach使えよと。 はたまた学校でPerlやってましたとか言う人もstrictってなんですか?ってな状態だし。 というかね、専門学校で教えられてるPerlのレベルがね、10年くらい時が止まってるんじゃねーのか、と思うくらいレベルが低いのがなんとかならんかなと。(ということはPerlでOOPとかstrictとかCPANとかを教えてくれるような専門学校があったら凄い生徒集まるんじゃない!?いやいや、世の中はPHP主流になりつつあるらしいぞ) まさに今この問題に直面しているわけです。 ウチの場合、Perlを一から順序だてて教育期間を設けるほどリソースがないのが正直なところです。 ボクの場

  • hide-k.net#blog: DBIx::Class::ResultSetManagerでResultSetにメソッドを追加

    ActiveRecordなORマッピングはJavaのTorqueを大昔に触ったきりなのでこんな実装デザインが正しいのかどうかわかりませんが、DBIx::Classで package CD::Schema::Albums; use strict; use warnings; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/Core/); __PACKAGE__->table('albums'); __PACKAGE__->add_columns(qw/ id artist title /); __PACKAGE__->set_primary_key('id'); __PACKAGE__->belongs_to('artist' => 'CD::Schema::Artists'); __PACKAGE__->has_many(

  • 1