タグ

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

  • local::libを使った非rootでのCPAN環境構築 - hide-k.net#blog

    miyagawaさんが紹介されていたlocal::libを使って非rootでのCPAN環境を作ってみました。平たく言えばさくらインターネットのレンタルサーバで一般ユーザーでCPAN環境を作ってみました。 とはいえ、多くは先人たちの otsune's FreeBSD memo :: ユーザー領域にCPANをインストールする方法 さくらインターネットでCPAN - Charsbar::Note と大差ありません。 まずはlocal::libのアーカイブを取得・解凍します。最新のバージョンは1.003001です。 wget http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.003001.tar.gz tar xzvf local-lib-1.003001.tar.gz cd local-lib-1.003001 ots

  • hide-k.net#blog: Re: Re: CatalystのNEXTが気持ち悪い説

    Re: CatalystのNEXTが気持ち悪い説 - D-6 [相変わらず根無し] そもそもメソッドの中で親クラスのメソッドを呼ぶタイミングがその他のロジックの前か後かはこのエントリに書いてある継承順云々とはまた違う気がする。書いてあるコードを見ても、それは普通のOOってそういうもんなんじゃないの、としか言いようがないんだが。 ちとうまく伝えることができなかったので、補足。 そもそも表題がまずかったですね。正しくは 「CatalystがPluginにNEXTを使うのが気持ち悪い説」 ですね。ごめんなさい。 で、言いたかったのはOOにおける多重継承の同一メソッド名の呼び出し順序解決としてのNEXTやClass::C3に気持ち悪さを感じているのではなくPluginにおけるメソッド拡張手段としては気持ち悪いということです。 http://b.hatena.ne.jp/miyagawa/#bo

  • hide-k.net#blog: CentOSでDBIC最新版を使うときの注意

    WARNING: DBIx::Class::StartupCheck: This version of Perl is likely to exhibit extremely slow performance for certain critical operations. Please consider recompiling Perl. For more information, see https://bugzilla.redhat.com/show_bug.cgi?id=196836 and/or http://lists.scsys.co.uk/pipermail/dbix-class/2007-October/005119.html. You can suppress this message by setting DBIC_NO_WARN_BAD_PERL=1 in your

  • Fedora Core 6 に Flex 2 をインストールして遊ぶ

    最近、仕事でFlex2を触り始めました。結構楽しいです。 Flashアプリケーションが無料で、しかもタイムラインとか意味不明なことを考えずに作れるのがとっても魅力です。 で、Fedora Core 6にインストールしたのでその手順のメモ。 まずはJavaの環境が必要なので整えます。 せっかくなのでJDK 6をインストール。(日フォントの設定などは今回関係ないので省きます。) SUNからパッケージを持ってきてインストール。 $ sudo ./jdk-6-linux-i586-rpm.bin Javaの環境設定。 .bash_profile export JAVA_HOME=/usr/java/jdk1.6.0 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$

  • hide-k.net#blog: CentOSにRed5を入れてみる

    そろそろみんな飽きてきた観もあるustreamです。 で、これと同じようなサービスをやるにはFlash Media Serverが必要なんでしょうが、むちゃくちゃ高いです。 で、これとほぼ同じ機能を提供してくれる(正確にはRTMPサーバーになるんだろうか)OSS、Red5をCentOS 5に入れたので、メモ。 antのインストール makeにantを使うのでantをyumでインストール。 $ yum install ant JDKのインストール antをインストールするとjava-1.4パッケージがインストールされるけど、コンパイルと実行にはjdk1.5以上が必要なのでSunからJDK 5以上をダウンロードしてインストールしてデフォルトのVMを1.5に切り替え。 詳しくはこの辺。 JAVA_HOMEの指定をしないとコンパイルでこけるので注意。 JAVA_VERSIONの指定はしてもしなく

  • hide-k.net#blog: Catalyst

    あちこちで叫ばれている、むやみやたらにCatalystのPluginを作るべきではない運動。(この辺はトクヒロムさんがキャンペーンを張ってるので一読して方がいいです。) まー言われていることはもっともで、ComponentでできることはComponentにすべきなわけです。 で、拙作のCatalyst::Plugin::RequestTokenなる代物も一部finilizeを使っているものの、明らかにControllerにするべきなので、C::P::RequestTokenをdeprecateさせてCatalyst::Controller::ReqeustTokenってのをとりあえず作ってCPANでリリースしました。 使い方は package MyApp::Controller::Foo; use base qw(Catalyst::Controller::RequestToken);

  • hide-k.net#blog: TTでDBICのhas_manyなメソッドを使う

    よくわからない表題ですが要は・・・ MyApp::Schema::TopicsとMyApp::Schema::Commentsが1:nの関係にあるとして package MyApp::Schema::Topics; use strict; __PACKAGE__->has_many('comments' => 'MyApp::Schema::Comments'); 1; こんなアクションで sub list : Local { my ( $self, $c ) = @_; my $topics = $c->model('Topics')->search({}); $c->stash->{topics} = $topics; $c->stash->{template} = 'list.tt'; } TTで素でやる場合 <html> <body> <ul> [% WHILE (topic =

  • hide-k.net#blog: Safari 3 Public Beta for Windowsを試してみた

    ITMedia News: 米AppleWindows版Safariをβ公開 米Appleのスティーブ・ジョブズCEOは6月11日に開催された開発者会議、Worldwide Developers Conference(WWDC)基調講演で、自社のWebブラウザSafariをWindows Vista、XP向けに投入すると宣言した。即日同社のWebサイトから公開β版がダウンロード可能になった。 というわけで、早速試してみた。 Apple - Safari 3 Public Beta 3 で、こんな感じ。 日語は設定で日フォントを指定してもレンダリングされず。 検索フォームとかも崩れてるのが嫌な感じ。 ついでにadsenseもうまくレンダリングしてくれてない感じ。 ま、betaですから。 で、機能や特徴のほうですが 一般的なブラウジングがIE7より2倍、Firefox 2より1.6

  • hide-k.net#blog: Lucene Web Serviceのインストール

    DBIx::Class::Indexer::WebService::Luceneを使ってみたいので、まずはLucene Web ServiceをCentOS 5にインストールしてみたメモ。 ちなみにLucene Web ServiceとはJavaで出来てる検索エンジンLuceneにREST APIでアクセスできるようにしたWebアプリケーションです。これにより他の言語からも使いやすくなるということ。 Lucene Lucene Web Service perlのwrapper WebService::Luceine DBICから検索エンジンにアクセスするモジュール DBIx::Class::Indexed そのLucene Web Service Indexer DBIx::Class::Indexer::WebService::Lucene JDK 6のインストール *基的にこのエント

  • hide-k.net#blog: DBIx::Class::DigestColumnsがちょっと便利になった件

    以前、DBIx::Class::DigestColumnsの問題というエントリーでDBIC::DigestColumnsがいまいち使いづらいようなことを書きましたが、今年に入ってアップデートされてちょっと便利になった模様。 ユーザー管理で生パスワードを保存したくない場合には結構便利なコンポーネントです。 テーブルを作って create table users ( id integer not null primary key, username text not null, password text not null ); schemaクラスはLoaderにまかせて package MyApp; use strict; use base qw/DBIx::Class::Schema::Loader/; __PACKAGE__->loader_options( components =>

  • hide-k.net#blog: Catalyst::Model::DBIC::Schemaでのトランザクション管理

    以前 Catalyst::Model::DBIC::Plainでのトランザクション管理 というエントリーを書きました。 Catalyst::Model::DBIC::Plainってあたりが時代を感じさせます。 Cookbokにもありますが現在のDBIx::Classでトランザクションを管理する場合には$schema->txn_do($coderef)を使うとトランザクションの開始からコミット、ロールバックまでやってくれます。 my $schema = CD::Schema->connect(...); $txn = sub { my $artist = $schema->resultset('Artists')->create( { name => $name, } ); my $album = $schema->resultset('Albums')->create( { title

  • hide-k.net#blog: Chained ActionでスマートなURL

    Chained Actionを使った例でこんな記事がありました。 /user/ ユーザー一覧 /user/add ユーザー追加 /user/[ユーザー名] [ユーザー名]の詳細 /user/[ユーザー名]/edit [ユーザー名]の編集 /user/[ユーザー名]/delete [ユーザー名]の削除 というURL構成を再現するのに package MyApp::Controller::User; use strict; use warnings; use base 'Catalyst::Controller'; sub _parse_PathPrefix_attr { my ( $self, $c, $name, $value ) = @_; return PathPart => $self->path_prefix; } sub root : Chained('/') PathPrefi

  • 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: パスワードの保存方法

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

  • hide-k.net#blog: DBIx::Classでauto insert/update datetime

    とっても便利なDBIx::Class::InflateColumn::DateTimeですが、前にも書いたとおり作成日時、更新日時などの設定が面倒です。 LyoさんのDBIx::Class::DateTimeColumnsはその辺がRails likeになっていてお気に入りだったので取り込んで見ました。 package DBIx::Class::InflateColumn::DateTime::Auto; use strict; use warnings; our $VERSION = '0.01'; use base qw/DBIx::Class::InflateColumn::DateTime/; use DateTime; __PACKAGE__->mk_classdata( datetime_timezone => 'local' ); __PACKAGE__->mk_classd

  • 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

  • 1