タグ:Perl ( 31 ) タグの人気記事
Perl の my と local と our
すっきりした>< - YoshioriのBlog
our 名前をスコープに限定. local 値をスコープに限定. my 名前と値の両方をスコープに限定

local と my - IT戦記
404 Blog Not Found:perl - myとourとscopeと
[Perl] my と local と our の違いについて - TAKESAKOのはてな出張所

 Yoshioriさんのエントリの言葉が、それぞれの特徴を端的に言い表していて面白い。ただ、分かりやすいのは、やっぱり竹迫さんの説明かな。

 僕自身が、この辺の local と my (と our)の違いが分かったと言えるようになったのは、「Effective Perl」の23章を読んでからかなぁ。「Effective Perl」は、local とか my とかで悩むぐらいに Perl に慣れた頃に読むと、役に立つ本だと思う。

Effective Perl (ASCII Addison Wesley Programming Series)
Amazon.co.jp: Effective Perl (ASCII Addison Wesley Programming Series): 本: ジョセフ・N. ホール,ランドル・L. シュワォーツ,Joseph N. Hall,Randal L. Schwartz,吉川 邦夫
[PR]
by fkmn | 2008-01-10 23:55 | IT
__FILE__ eq $0
「どう書く」の弾さんの投稿を読んでたら、たまに

if (__FILE__ eq $0){
# ...
}
ってコードが出てきて、どういう意味か分からずに気になっていたんだけど、「Programming Ruby」(なぜかRuby(笑))に答えが書いてあった。

 ユーザによって直接起動されたファイル内に存在する場合にだけコードを実行する時に、__FILE__定数と$0変数を組み合わせて使う事がよくあります。(中略)このようにすると、テストコードは、ライブラリのソースが直接起動された場合にだけ実行され、他のプログラム内で require されている場合は実行されません。

# ライブラリのコード
# ・・・
if __FILE__ == $0
# テスト...
end

「プログラミングRuby 第2版 言語編」p.292

だ、そうです。試してみたら、確かに Perl でもそういう動作だった。

というか、ググってみたらすぐに答えが見つかるしw。不覚・・・。
[PR]
by fkmn | 2007-12-09 23:55 | IT
Shibuya Perl Mongers テクニカルトーク #8 に行ってきました
Shibuya Perl Mongers : Shibuya Perl Mongers テクニカルトーク #8

30分ぐらい遅れて、Yappo さんの発表の最後の方からの参加。

ちょこちょこと、感想をば。

JavaScript::Writer (gugod さん)
 質問で出てたように、これでクロスブラウザな JavaScript コードを書けるようになったら、かなり使えそう。というか、実用云々の前に、普通に面白い内容だった。wantarray のあたりとか。

Practical Web Scraping with Web::Scraper (miyagawa さん)
 YAPC::EU の発表+α。Web::Scraper の CLI は、初めて使った時には、ビビった。

Twiki (今津英世 さん)
 Twiki って、初めて聞きました。今度、試してみよう。

僕の夏休み? (Emerson Mills さん)
 会社が変わって、アジャイルの活動をしているらしい。実は、Scrum って、名前しか聞いた事なかったりします。

6年前に作ったプログラムにテストコードを書きました ^^); ~~ テスト駆動開発の薦め (Yuumi さん)
 実際に、どう TDD したのか、その辺の話をもう少し聞きたかったです。
 Perl は Test::Base とかのテスティングフレームワークが充実してるんで、TDD しやすいですよねぇ。他の言語だと、なかなかそこまでのものがないので、なかなか TDD できてません。

Plagger。みんなで使えば恐くない。 (makotokaga さん)
 Geek じゃない人にも Plagger を、ってのはいい着眼点だな、と思いました。開発するのが楽しそう。

続イメージファイト (TAKESAKO さん)
 面白すぎw。もはや、ネタなのか本気なのかの区別がつかないw。

リビドー駆動開発によるPlaggerとCatalystを使った(Mashup)サイト開発 (yusukebe さん)
 トリにふさわしい、勢いのある発表でした。Erogeek の名にふさわしい、正しいリビドーの使い方。


当日の動画が、ustream に既に上がってるらしいです。仕事速すぎですw。

スライドはここ
[PR]
by fkmn | 2007-10-02 23:55 | IT
Shibuya Perl Mongers テクニカルトーク #8
Shibuya Perl Mongers : Shibuya Perl Mongers テクニカルトーク #8

Journal of miyagawa (1653)」で告知されていたので、申し込みました。

定員が100名なので、割と余裕があるのかと思っていたら、もう既に定員に達してしまった模様

や、今回は運がよかったです。
[PR]
by fkmn | 2007-09-21 23:55 | IT
どう書く?org の残骸
隣り合う二項の差 どう書く?org
整数のリストがxsが与えられたときに、隣り合う2要素の差のリストを作る関数diffを作ってください。

いろいろ試して、結局投稿しなかった残骸を置いておきます。

普通に書いたもの
sub diff {
my @a;
push (@a, $_[ $_ + 1 ] - $_[$_]) for 0 .. $#_ - 1;
@a;
}

pairwise を使いたくて書いてみたもの
use List::MoreUtils qw/pairwise/;

sub diff {
my @a = @_[ 1 .. $#_ ];
my @b = @_[ 0 .. $#_ - 1 ];
return pairwise { $a - $b } @a, @b;
}

関数内で再帰
sub diff {
my $a = shift or return;

sub diff_rec {
my $b = $a;
$a = shift or return;
return ( $a - $b, diff_rec(@_) );
}
return diff_rec @_;
}

[PR]
by fkmn | 2007-08-22 23:55 | IT
Web::Scraper を使ってみた
 遅ればせながら、使ってみた。

 練習ってことで、このブログ(http://fkmn.exblog.jp/)の各エントリのタイトルと本文をscrapeしてみる。

#!/opt/local/bin/perl

use strict;
use warnings;
use URI;
use Web::Scraper;
use Data::Dumper;

my $fkmn_post = scraper {
process 'div.POST_TTLTXT > strong > a',
title => 'TEXT';
process 'div.POST_BODYTXT',
body => 'TEXT';
result 'title', 'body';
};

my $fkmn = scraper {
process 'div.POST', 'posts[]' => $fkmn_post;
result 'posts';
}->scrape(URI->new('http://fkmn.exblog.jp'));

print Dumper $fkmn;

 おおおー、すごいわ、これ。便利便利。コールバック渡して、簡単に書けるのが素敵。しかも、みんな指摘してる通り、ソース短っ!
[PR]
by fkmn | 2007-05-27 23:06 | IT
YAPC::Asia 2007 Tokyo 2日目
 スタッフの皆様、お疲れさまでした&ありがとうございました。

 とにかく、いろいろと刺激の多い2日間だった。実際に仕事で使えそうなアイディアやインスピレーションもいくつかあったし、初めて聞くモジュールも結構あったので、その辺を早速試してみたい。

 mjd が廊下の地べたに座って hack してたのが印象的だった。それから、誰かの着ていた、背中に「use strict;」とプリントされたTシャツを見て、吹きそうになった。

 とりあえず、見てきた session のタイトルだけメモ。それぞれの感想は、後で追記予定。

"Abusing Domain Specific Languages for Fun and Profit" by Jesse Vincent

"Introduction to DBIx::Class" by Jonathan Rockway

"Asynapse - The missing links between servers and clients." by Kang-min Liu

"Patterns in Perl" by Dave Rolsky

"s/ Perl5 Regular Expression / Perl6 Regex and Rule /mixes;" by Yoshinori Takesako

"(Ab)?using Class::C3" by Daisuke Maki

"CDBI => DBIC" by Tokuhiro Matsuno

"CDBI => DBIC" by Tokuhiro Matsuno

" Building Catalyst Applications" by Jonathan Rockway

"Pushmi - Subversion replication system" by Chia-liang Kao

"Assurer - a pluggable server testing/monitoring framework" by Gosuke Miyashita

"Lightning Talks"

"Perl Program Repair Shop and Red Flags" by Mark Jason Dominus
[PR]
by fkmn | 2007-04-05 23:09 | IT
YAPC::Asia 2007 Tokyo 1日目
a0057891_0123544.jpg 楽しいカンファレンスだった。
 スタッフの皆様、お疲れさまでした。2日目もよろしくお願いします。

 以下、個人的備忘録。


全体の印象
  • スピーカーは、語学が堪能な人が多い
  • みんな Catalyst 使ってる
  • スピーカー、オーディエンスともに、Mac率が高い
  • ブラウザでの発表が多い
  • (他人の事は全く言えないけど)質問がもう少し出たらなぁ(特に、MJDさんには申し訳なかった感が・・・)

"Kwiki and the Symlink" by Ingy döt Net
  • Ingy döt Net に改名したよ
  • Kwiki の話
  • モジュールインストール時の依存解決めんどくさいよね -> symlink で、500以上のモジュールをプレインストールしてる
  • Windows とかはノーサポート。
  • スライドは Spork で作った。# で始まる行は、右に表示してくれるよ。

"Virtualization and Package Deployment with EC2" by Emerson Mills
  • ソースの再利用を勧めると、開発環境が複雑化する
  • 仮想化を使って、パッケージではなく、環境をそのまま配布する
  • 現在のツール(makeとか)は、いわば手順書だけど、そういうものとは違うアプローチ。
  • EC2
  • データセンタの仮想サーバ内のWeb Service API

"Higher-Order Parsing techniques for Perl" by Mark Jason Dominus


"perl I18N in 20 minutes" by Dan Kogai
  • Ajax で翻訳しつつ
  • I18Nって? -> 他の言語と文化のために
  • decode/encode, PerlIO, binmode()
  • ここまでのレベルでUnicodeをサポートしてるのは、Perl5だけ!
  • \p{Han} -> 漢字にマッチ
  • \p{katakana} -> カタカナにマッチ
ググったら、こんなエントリーが見つかったのでメモ
MODULE.JP - 日本語に絡むUnicodeブロックとスクリプト(正規表現)


"Perlネットワークプログラミング再考" by Naoya Ito


4/5 以下、追記

"Everything Vox" by Ben Trott
 Voxの中身について。宮川さんの同時通訳付き。
 Catalyst で作ってるらしい。スケーラビリティの話。memchached。テーブルのパーティショニング。Catalyst は充分速い。TT は遅い。静的コンテンツ(JS, CSS)はPerlbal で。
 ref. Six Apart Code

"Inside livedoor 2006-2007" by Tomohiro Ikebe
 4/2に分社したらしい。社名は case sensitive に「livedoor」で(Livedoor とか LiveDoor ではない)。あまり変更の無いページ(サイトのトップページ)は ClearSilver (cのテンプレートエンジン)で。memchached。Crawler に、 XangoParallel::ForkManager で、相互補完的に。

"Perl Worst Practices" by Marty Pauley
 なんか、いろいろと過激。そこまで言わなくてもと思いつつ、微妙に同意。
 バグの原因の95%は変数だから、変数使うな(笑)。オブジェクト指向(Object Orientation, OO)なんて使うな。Perl の OO なんて、POO だ。Javaは(略。

"Perl 6 Today" by Audrey Tang
 Pugs と Perl6 の話。冒頭のスライド(「Perl5の粗探ししてる暇があったら自分で何かやれ。」)に笑った。
 つーか、Perl6ヤバい。色々出来すぎる。さりげに Lisp っぽく
[*] (1.. 10)
みたいな事やってるし(記憶が曖昧なので、syntax がちゃんと合ってるかは微妙)。
[PR]
by fkmn | 2007-04-04 23:10 | IT
IPA セキュア・プログラミング講座のPerlの章の突っ込みどころ
セキュア・プログラミング講座

IPA がこういうのを作ってたのは知らなかった。

 僕もセキュア・プログラミングについてはあまり詳しい方ではないので、ほほうと思いながら読んでみた。そしたら、Perl の項にあまりにもアレなコードが・・・。セキュリティ的にはこれで問題ないのかもしれないけど、それにしてもこれはちょっと・・・。

 というわけで、僭越ながら軽く突っ込んでみるテスト。原文を引用しようとしたら、エキサイトブログが"open XXXX はセキュリティー上使用できません"などとのたまうので、スクリーンショットで失礼(いい加減、エキサイトブログ止めようかな・・・)。

a0057891_019536.gif

  • 2行目のコメント:ソースについてじゃないけど、CGIクラスじゃなくてCGIモジュールというべきではないだろうか?
  • 「use strict」「use warnings」してないのは、どうかと
  • 6行目:CGIモジュールを使ってるのに、なぜHTTPヘッダを自分で打つのか?しかも、なぜ改行がCRLFなんだ?(shebangを見る限り、UNIX か Linux のシステムなはず)
  • 12-14行目:コードが冗長。わざわざ $line なんて変数に代入する必要はない。

 で、上記をふまえて、「僕ならこう書くなぁ」ってのが、以下のコード。やっぱり、エキサイトブログに怒られるので、スクリーンショットで(メンドクサス)。

a0057891_0435946.gif


 これだけじゃなくて、他のコードにもいろいろ突っ込みどころが・・・。たぶん、これ書いた人は、そもそもあんまり Perl に詳しくない人な気がする。識者による修正を希望するところ(予算とか諸々の手続きの関係で、そう簡単に書き直したりは出来ないのかもしれないけど)。
[PR]
by fkmn | 2006-10-24 23:35 | IT
【どハマり】 プロキシの背後からMySQLサーバー (Ensembl) にアクセスできない・・・
 Ensemblから、データを取得するスクリプトをPerlで作ってます。・・・が、大ハマり中。
 PerlのEnsEMBLモジュールをつかって、EnsemblのMySQLサーバーに接続しようとしてるんだけど、なぜか接続出来ず・・・。

 チュートリアル通りに、次のようなスクリプトを作って、実行すると


use Bio::EnsEMBL::DBSQL::DBAdaptor;

my $host = 'ensembldb.ensembl.org';
my $user = 'anonymous';
my $dbname = 'mus_musculus_core_37_34e';

my $db = new Bio::EnsEMBL::DBSQL::DBAdaptor(
-host => $host,
-user => $user,
-dbname => $dbname);

my $gene_adaptor = $db->get_GeneAdaptor();



 下のエラーが表示される。


Could not connect to database mus_musculus_core_37_34e as user anonymous using [DBI:mysql:database=mus_musculus_core_37_34e;host=ensembldb.ensembl.org;port=3306] as a locator:
Unknown MySQL server host 'ensembldb.ensembl.org' (11004) at {EnEMBLモジュールのパス}/Bio/EnsEMBL/DBSQL/DBConnection.pm line 199.



 エラーを見る限り、ensembldb.ensembl.org っていうのをDBI::MySQL がホスト名として認識してないっぽい。このアドレスに ping を打っても、nslookup しても色よい返事が無いあたり、問題はネットワークにありそう。

 Web上でネットワークをテストしてみたらきちんと返事が返ってくる。うーん、やっぱプロキシ?ローカルのMySQLにはちゃんと繋がるし。

 たぶん、こんな感じなんだと思う。
Ensembl (MySQLサーバー) >>> (越えられない壁 (プロキシ)) >>> 僕のPC

 今日一日、ほとんどこれでつぶれたよ。トホホ・・・。誰か、解決方法知らないですか?

5/17 追記
 社内の人に解決策を聞いてみたところ、「MySQLプロトコル(port:3306)用のプロキシが用意されていないから、プロキシを越えるのは不可能じゃないか?」とのこと。うーん、納得。こりゃ、お客さんとこで開発するしかないなぁ・・・。
[PR]
by fkmn | 2006-05-15 23:42 | IT


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX