タグ

mineに関するhide-Kのブックマーク (74)

  • ActionClassのChain - とほほのN88-BASIC日記

    typesterさんから sub method :ActionClass('Foo') :ActionClass('Bar') {} 的なことできないかっつー話があって、当然できると思ったので即答で「できる」と嘘をついちゃった。 Catalyst::Controllerのregister_actionsからcreate_actionを呼んでて sub create_action { my $self = shift; my %args = @_; my $class = (exists $args{attributes}{ActionClass} ? $args{attributes}{ActionClass}[0] : $self->_action_class); unless ( Class::Inspector->loaded($class) ) { require Class::I

    ActionClassのChain - とほほのN88-BASIC日記
  • Catalystのデフォルトのconfigフォーマットが変わった - とほほのN88-BASIC日記

    [Catalyst] IMPORTANT: To all Catalyst::Whatever Authors, please read and ACT YAML is not an appropriate configuration format for use in perldoc because both yaml and perldoc are sensitive to white space. Therefore they interact. Even worse they interact in different ways depending on the formatter being used. CatalystのコンポーネントやプラグインのPODにはYAMLの設定例を書かない方がいいよとのこと。PODとYAMLともにwhitespace sensitiveってのが理由。

    Catalystのデフォルトのconfigフォーマットが変わった - とほほのN88-BASIC日記
  • hide-k.net#blog: Perl-users.jp

    Perl-users.jp - 日Perlユーザのためのハブサイト 以前より Shibuya.pm 界隈では、初心者や複雑な Perl の話題をキャッチアップ出来ない Perl 利用者をどうすくい上げるか、という議論を盛んに行っておりました。 Schwern の言う通り Perl で検索してもなかなかいい情報にたどり着けなかったりと、それは酷い現状をどうにかしたいという思いは YAPC::Asia 2008 のスピーカー陣に共通するものであると思っています。 Yappo++ 前のエントリーでも紹介したSchwernのPerl Is unDeadに対するYappoスタンダードの答えがこれ。すばらしい。 前々からmiyagawaさんを初めとする最前線を張っている人たちと、レンタルサーバーで掲示板をインストールするのに四苦八苦してる人たちの間の隔たりがすごいなーとか思ってたので、その辺を埋め

    hide-K
    hide-K 2008/05/20
    SEOアゲ
  • hide-k.net#blog: CatalystCon#1

    CatalystCon#1に行って来たよ。 一応スピーカーとして話してきたよ。 で、感想。 MVC論 - dann とってもJava的で懐かしかった。 Controller::Resouces - ikasam_a 出て意外と早く触ってたけど、やっぱ便利 ROAって妙に説得力がある $c Catalystの歴史の話が面白かった Pluginはなるべく作らない方向で やっぱり時間足りなくて途中で加速装置が働いてた コピペをしないための10の方法 - typester catalyst.plを最初に否定した人なので説得力あった 最後のほうは苦しかった Model::Apadtor - hide-k ここにあげておいた Catalyst☆Complex - tokuhirom Sledge::Request::Catalyst どっちがウケか結論が出てなかったので気持ち悪い HTTP::Se

  • 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: CatalystのNEXTが気持ち悪い説

    Soozy Conference #4あたりからtokuhiromさんが声を大にして言っているCatalystのNEXT気持ち悪い説。 酒の席でこの話になるたびに奥の座敷から大声で呼び出されるCatalystのNEXT気持ち悪い説。 気を抜いてDBICを褒めるとClass::C3も同じじゃねーかとDisられるCatalystのNEXT気持ち悪い説。 僕も激しく同意。なのでちょっとまとめておく。 NEXTを使う場合、こんな感じかと。 use strict; use warnings; use NEXT; package PluginA; sub foo { print "A"; shift->NEXT::foo; } package PluginB; sub foo { print "B"; shift->NEXT::foo; } package Object; use base qw/

  • hide-k.net#blog: Web::Scraper 0.15とcisco_scraper.pl

    以前書いた Web::ScraperでCISCO RECORDSをスクレーピングという記事に対してBig Sky :: Web::Scraper 0.15で何が変わったのか...とおまけでWeb::Scraper 0.15での添削例として扱ってもらったので、さらにリプライ。 treeを壊さずやるとすれば、TextNodeを参照するのがいいかと思います。 例えば、XPathのnode()を使い、番号指定で取得します。だた現状のWeb::ScraperではTextNodeはショートカットで参照出来ませんので、以下のようにstring_valueを返すように手を加えると上手く行きます。 問題が一つ。 添削してくださったパッチだと process '//li/node()[4]', 'title' => sub {$_->string_value;}; となっているのですが、4番目とは限らないんで

  • hide-k.net#blog: Web::ScraperでCISCO RECORDSをスクレーピング

    いまさらWeb::Scraperを使ってみました。 使うネタがなかったのがスルーし続けた一番の理由だったのですが、それではいけないと思い、CISCO RECORDSの商品情報を取得するスクリプトという、僕以外誰も興味がないスクリプトを書いてみました。 cisco_scraper.pl #!/usr/bin/perl use strict; use warnings; use Web::Scraper; use URI; use YAML; use Data::Dumper; my $uri = shift; my %scraper; $scraper{'link'} = scraper { process 'a', 'name' => 'TEXT'; process 'a', 'uri' => sub { return URI->new_abs( $_->attr('href'), $u

  • hide-k.net#blog: vimでJavaScriptを整形

    最近猛烈にJavaScriptを書く機会が増えたのでvimで整形ツール欲しいなと思っていました。 で、YappoさんのJavaScript::Swellを使ってみることにしました。 CPANでインストールしてこんなラッパー作って ~/bin/js_swell.pl #!/usr/bin/perl use strict; use JavaScript::Swell; my $data; while (<>) { $data .= $_; } close IN; print JavaScript::Swell->swell($data); .vimrcかなんかにこんな風に書いたら map ,jt <Esc>:%! ~/bin/js_swell.pl<CR> こんなコードが var i=0;if(i++){var a=-1;} vimから:,jtでこんな風になりました var i = 0; i

  • 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: vimでCSSTidy

    ここ一週間CSSと戦い続けているわけですが、どうもCSSは苦手です。当社比で普通の人の3倍時間がかかってる気がします。 特に勢いでCSSを書いているとソースがグッチャグチャになって収集がつかなくなってしまうので、整形ツールを探したらありました。 CSSTidy そのまんまです。 C++のソースを持ってきて $ unzip csstidy-source-1.2.zip -d csstidy $ cd csstidy $ chmod a+x compile.sh $ ./compile.sh でコンパイル。 出来上がったcsstidyを好きなディレクトリに入れておきます。 基的な使い方は $ csstidy 入力ファイル [オプション] [出力ファイル] なのですが入力ファイル名に"-"を指定すると標準入力を渡せるので.vimrcに map ,ct <Esc>:%! ~/bin/cssti

  • hide-k.net#blog: DBICでTwitterのユーザー関係を表してみる

    追記: 勘違いしてたので別エントリーで補足 Twitterで言うところのfavorites、followers、friends。 もごもごで言うところの片想い、想われ、両想いの関係をDBICで表してみました。 まず関係の定義から。 favorite(片想い): AがBをお気に入りに入れるとAから見てBはfavoriteな関係(片方向) follower(想われ): Bから見てAはfollowerな関係(片方向) friend(両想い): Aのお気に入りに入ってるBがAをお気に入りに入れると両方から見てfriendな関係(双方向) で、テーブル設計ですが、それぞれをテーブルとして持ってもいいのですが、関係を追加するごとにあちこちのテーブルを見なきゃならんので、一個のテーブルで済ましてみました。 要は user_linksテーブルを使ってusersを自己結合なmany-to-m

  • 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でマルチバイトを取り扱うときのまとめ

    #前に社内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: Flex2でFileRefクラスを使ったファイルアップロード

    Flex2でとりあえずやってみたかったのがこれ。 * ファイルサイズは5Mbytesが上限です。 * 実際にはファイルの保存などは行ってません。 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="120" creationComplete="initApp()"> <mx:Script> <![CDATA[ import flash.events.* import flash.net.FileReference; import mx.controls.Alert; private var max_size:int; private var post_url:Str

  • 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: 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: 続 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