タグ

ProgrammingとPerlに関するagwのブックマーク (433)

  • どのクラスで定義されたメソッドなのか : にぽたん研究所

    Perl のはなし。 弊社のあるエンジニアが、とあるクラスを継承している他のクラスで呼出可能なとあるメソッドについて、そのメソッドがそのクラス内に定義されていないので、んじゃどこで定義されてるのか?というのを調べるのに時間がかかってた模様。 そんなの @ISA 配列を再帰的に見て、シンボルテーブル + UNVERSAL::isa() の組み合わせで発見出来るだろうなーと思ったので、簡単なテストを書いたら、アッサリ発見出来た。 こういうモジュール欲しい!という人も多いんじゃないかと思ったので、どうせなら CPAN にうpしようかなと思いつつ、reinvent the 車輪なんじゃないかな?とかも思いはじめ、某 CPAN Author だらけの IRC チャンネルで識者の意見を賜ってみた。 「このモジュールで出来るよ!」 という話がなかったので、んじゃ、ちゃんとしたのを作って contribu

    どのクラスで定義されたメソッドなのか : にぽたん研究所
  • Class::DBI で疑似的カラムを扱う : にぽたん研究所

    最近、SQL で WHERE 句に入らず、ORDER BY やら GROUP BY もされず、かつ MAX() だとか MIN() だとかを求められる必要もない、言うなれば「取るに足らない値」とかを、個別のカラムに持たず、そういうのを一気にまとめて text 型のカラムに入れたりすることがあったりする。 例えば、住所録を作ろうなんつって、テーブルを組みたいわけだが、そもそも WHERE 句に入る要素なんて名前ぐらいしかないなぁ…という場合は CREATE table address ( id int unsigned NOT NULL auto_increment, name varchar(255) NOT NULL default '', props text, PRIMARY KEY (id), KEY (name) ); こんなようなテーブルを一個作っておいたりして。 要するに、n

    Class::DBI で疑似的カラムを扱う : にぽたん研究所
    agw
    agw 2006/09/13
    Class::DBI::Plugin::PseduColumns
  • 続・配列から効率良くプレースホルダを作る : にぽたん研究所

    前に書いた「配列から効率良くプレースホルダを作る」の続編です。。 TMTOWTDI な Perl だけあって、色々面白い解がありますね。 Powered By iwai.ug - [Perl] プレースホルダの作成って、こうすれば速いのか! ちなみに自分は、今までこんな感じでした↓ sub placeholder_from_array { return join(',', ('?') x @_); } 確かに、配列を作るのに map() を使うより、このほうが倍近く高速になりますね。 あと、もう一つ、 はてなブックマーク - 他人の切抜 / 2006年08月11日 よりobfuscatedな解: 「return @_?"?".",?"x$#_:"";」。 id:another さんの解をほんの少しだけ見やすくすると sub placeholder_from_array { return @

    続・配列から効率良くプレースホルダを作る : にぽたん研究所
  • 配列から効率良くプレースホルダを作る : にぽたん研究所

    my @a = qw(foo bar baz); こんな配列から ?,?,? という文字列を使いたい場合があります。 例えば、 SELECT * FROM hoge WHERE user_id IN (?,?,?); みたいな SQL にする場合のプレースホルダを作ると言った具合に。 社内 IRC で、clouder さんが言い出して、 18:27 <clouder>join(',', map('?', @a)) 18:27 <clouder> こんなのしか思いつかない。。 と言う。 まぁ、それが妥当というか、普通それが思い浮かぶよなーって思ってたら、会社の dos さんという人が 19:15 <dos> '?,' x @a; で s/,$//; というソリューション とか、異様なことを言い出した。 sub placeholder_from_array { return join(',',

    配列から効率良くプレースホルダを作る : にぽたん研究所
  • naoyaのはてなダイアリー - コネクションプーリングの話

    かなりながーいエントリになる予定なので,結論だけ最初に書くとこんな感じ. この話題については自分も あとで書く と言って書いてなかったので書いてみますよ。2006年の下期にもなってコネクションプーリングかよというツッコミもありそうですが、あとで書くといったら書くの。あとで読むといったら読む。 普通「コネクションプーリング」と言ったら、主に二つの役割があると思います。話を簡単にするためにウェブアプリケーションに限定して言及します。 ウェブアプリケーションから DB への接続を開けっ放しにして、接続に必要とされるオーバーヘッドをカットして双方の負荷を下げる。 ウェブアプリケーションと DB への接続を「使いまわす」ことで、同時接続数を節約する。 というもの。 mod_perlDB と接続維持するとコネクション数増えて云々という話は主に前者のみについての話になります。Apache::DB

    naoyaのはてなダイアリー - コネクションプーリングの話
    agw
    agw 2006/09/13
  • ln, log, log10 - まじかんと雑記

    一般に、プログラミングにおいて、対数は三種類ある。自然対数と、常用対数と、一般の底の対数だ。問題は、それらの表し方について統一的な決まりがないことだ。 一般的な関数電卓では、ln が自然対数を表し、log が常用対数を表す。そして任意の底についての対数を直接に計算する機能はないことが多い。一方、プログラミングにおける各種ライブラリなどにおいては、log が自然対数を表し、log10 が常用対数を表すことが多いような気がする。 というように、表記法が大まかに二つあるので、#Script においてはどうすべきか悩んでいる。 任意の底の対数については、log という名前の関数に二つの引数を渡すという点においてはバライエティがなくても、底と真数のどちらを先にするかという順番の問題がある。 とりあえず、いくつかのプログラミング言語(のライブラリ)について、対数をどのように指定するか調べた結果が次の表

    ln, log, log10 - まじかんと雑記
  • hoge_mugeをHogeMugeにする - Unknown::Programming

    っていうのをやってくれるCPANモジュールとか無いかな。 ワンライナーでやるならこんな感じ? my $str = q{hoge_muge}; print join q{} , map { ucfirst lc } split /_/ , $str; # HogeMuge で、逆の場合 my $str = q{HogeMuge}; print join q{_} , map { lc } $str =~ /([A-Z][a-z\d]*)/g; # hoge_muge これが限界?

    hoge_mugeをHogeMugeにする - Unknown::Programming
  • Elementary, ... Googleで「はらへった」と検索するとピザが届くようにするまで

    日曜は、Plagger を初めてちゃんとさわってみました。 Plagger の概略は、miyagawaさん自身による このYAPC::NAのPDF がわかりやすいです。要するに、 『ネットからフィードを集める → (ごにょごにょする) → 出力する』をするものです。 この「集める」や「ごにょごにょ」や「出力」の部分に、ブロックを重ねるようにしてモジュールを重ね、自分の好きな起承転結にできるという点が実に Perl ぽい着想です。風がふけば桶屋がもうかるフレームワークと呼んでいます。 Subscription::Bloglines / Publish::Gmail まあ、まずは普通に使ってみようということで、「Bloglines から集める」→ (エントリごとに分割、RSS 広告除去、文の内容をできるだけ収集→ Bloglines、Delicious へのリンク付与、はてブ登録数付与) →

    Elementary, ... Googleで「はらへった」と検索するとピザが届くようにするまで
  • プログラミングと開発者のためのCodeZine:CGI::Applicationを用いたアプリケーションの実装(Perl, CGI, Application, フレームワーク)

    はじめに PerlCGIアプリケーションを作るフレームワークの1つが、CGI::Applicationです。CGI::ApplicationにはどのようなCGIアプリケーションにも必ず存在する定型処理があらかじめ用意されており、自ら記述するコードの量を減らすことができます。また、プラグインによって、足りない機能を補えます。稿では、CGI::Applicationとデータベースを用いた基礎的なCGIアプリケーションの実装方法を解説します。対象読者Perlで何らかのCGIアプリケーションを作成したことのある方。CGI、DBI、HTML::Templateモジュールを使用したことのある方。フレームワークを使用したことのない方。 動作環境 Perl 5.8以降を使ったCGIアプリケーションが正しく動作するWebサーバが必要です。また、以下の依存モジュールをCPANで導入しておいてください。

  • hide-k.net#blog: いつでもどこでも、すぐに Class::DBI を使いたい

    仕事でレンタルサーバー上でCGIを書く羽目になったのですが、root権限はおろかシェルも使えない環境なのでCatalystにどっぷりつかっていたボクとしては面倒くさくて気が狂いそうです。 特にDB周り。 DBI直たたきなんて非人間的な作業をやっているとバグつぶしだけで頭がおかしくなりそうです。 で、なんとかClass::DBIだけでも使えないか調べて見ました。 CDBIが依存しているクラスでXSを使っているのはversionとCloneだけです。 それならある程度環境が整っているレンタルサーバーならなんとかなるだろうってことで調べて見ると、都合のいいことにversionは--perl_onlyオプション付きでMakefile.PLすればPure Perlなクラスを作成してくれるし、CloneはClone::PPなるPure PerlなCloneクラスがありました。 で、やってみました。

  • KCatch.pm / Perl CGI エラーメッセージをブラウザに表示

    KCatch.pmPerl CGI で発生する Internal Server Error を補足して、 エラー内容を HTML としてブラウザ画面に表示してくれるモジュールです。 エラーの発生した行番号なども表示されるので、サーバ上での開発に最適です。 安定版ダウンロード: KCatch-1.13.tar.gz TAR.GZ (2002/07/01版) 開発版ダウンロード: KCatch.pm SVN (CodeRepos) CodeRepos にソースを移動しました!(2007/12/23) KCatch.pm のもっとも簡単な使い方 KCatch.pm のより適切な使い方【オススメ】 KCatch.pm の主なオプション 頻出エラーメッセージ マニュアル 英語版 (Ver.1.13対応) マニュアル 日語版 (Ver.1.10対応) KCatch ニュース KCatch.pm

  • ぽっぺん日記@karashi.org(2006-07-21)

    _ 101fwy.com向けのEntryFullTextでentryタイトルが空になってしまう件 101fwy.com向けのEntryFullTextを途中まで書いたの続き。 しげふみメモ:PlaggerでYahooTOEICデイリーミニテストをGmailへ(改訂版)としげふみメモ:PlaggerでCOOKPADのピックアップレシピをGmailへを読んで、Revision 580の BreakEntriesToFeedsを使ってみたところ、entryタイトル件が付くようになった。 まぁ、entryタイトルが空でも俺としては問題はないのだが、どうするべきかなー。 Tags: Plagger | | | | | | | Permalink _ Plagger::Plugin::Publish::Gmailの送信メールにSubjectを強制的に付ける場当たり的なパッチを書いてみた どんなとこ

  • perlオブジェクト指向プログラミング /lib/mailmag

    Object Oriented Programming w/ Perl melma! を使って発行しているたメールマガジンです。 Perl のオブジェクト指向やテスティング、デザインパターンなどの話題を中心に、2週間に1回程度発行していますした。 Name Last modified Size Description Parent Directory 26-Aug-2005 13:02 - 15/ 09-Mar-2001 16:23 - 16/ 21-Sep-2001 03:43 - 17/ 29-Mar-2001 20:22 - 18/ 13-Apr-2001 03:30 - 19/ 02-May-2001 12:30 - 20/ 17-May-2001 00:08 - 21/ 31-May-2001 11:58 - 22/ 09-Jun-2001 14:49 - 23/ 05-Jul-

  • CGI::Cookie - Netscape クッキーへのインターフェース

    CGI::Cookieモジュール by Hippo2000(2000/8/9,2001/5/14,2002/7/14) CGI::Cookieモジュールなのです。 原の著作権はLincoln D. Stein.氏がお持ちです。詳しくは著作権情報をご覧ください。 内容等が間違っていたら修正します。ご連絡ください。 (2002/7/14) みのむしさんからの指摘を受けて2ヶ所、誤字を訂正しました。 (2001/5/14) ゴン太さんからの指摘を受けて1ヶ所、誤字を訂正しました。 目次 名前 概要 説明 CGI::Cookieの使い方 新しいクッキーの作成 ブラウザへのクッキー送信 以前のクッキーの回復 クッキーの取り扱い 作者情報 バグ 参考資料 名前 CGI::Cookie - Netscape クッキーへのインターフェース 概要 use CGI qw/:standard/; use CG

  • 環境変数 | futomi's CGI Café

    みなさんが作ったホームページにどのような人がアクセスしてきたかを知りたいと思いませんか? 環境変数というものを使って、ある程度のことを知ることができます。 環境変数は、アクセスしたブラウザーがサーバーに対して送信されますので、 これらの情報はサーバー側で受け取ることができます。 Perl スクリプトでは、予約変数である %ENV に自動的に入ってきます。 %ENV は連想配列ですね。実際に環境変数の一覧を表示する CGI を作ってみましょう。 この CGI は連想配列 %ENV のキーをソートして表形式に出力しています。 #!/usr/bin/perl print "Content-type: text/html; charset=utf-8\n"; print "\n"; print "<!DOCTYPE html>\n"; print "<html><head><meta charse

  • Beginners guide - ClassDBI

  • Class::DBI - シンプルなデータベース抽象クラス - perldoc.jp

    名前¶ Class::DBI - シンプルなデータベース抽象クラス 概要¶ package Music::DBI; use base 'Class::DBI'; Music::DBI->connection('dbi:mysql:dbname', 'username', 'password'); package Music::Artist; use base 'Music::DBI'; Music::Artist->table('artist'); Music::Artist->columns(All => qw/artistid name/); Music::Artist->has_many(cds => 'Music::CD'); package Music::CD; use base 'Music::DBI'; Music::CD->table('cd'); Music::CD->c

  • Complex many to many - ClassDBI

  • Complex many to many example - ClassDBI

  • Class::DBI(CDBI)で多対多(many_to_many) - babie, you're my home

    なんかググっても全然良い例に出会えないの。誰も使ってないか、誰も嵌らないかどちらかだ。 半日つぶした。many_to_many が早くできて欲しいね。 テーブルはこんな感じだとする。(code がイけてねぇ〜。中間テーブルぐらい id 入れれば良かった…) CREATE TABLE Users ( code varchar(8) primary key, passwd varchar(255) not null ); CREATE TABLE CourseUsers ( user_code varchar(8) not null, course_code varchar(255) not null, primary key (user_code, course_code) ); CREATE TABLE Courses ( code varchar(5) primary key, name

    Class::DBI(CDBI)で多対多(many_to_many) - babie, you're my home