アクセスカウンタ

たまには呪文をとなえてみるか:仕事版

プロフィール

ブログ名
たまには呪文をとなえてみるか:仕事版
ブログ紹介


弱弱お爺さんPGのebaの仕事版ページです。
Perl、Javascript、雑記を中心に記事をUPしてます。

目次1
目次2

おおー、いつの間にか3000HIT。外部の人が全然来ないことを思えば、結構増えてきましたねー。

#コメント&トラバは大歓迎ですが、最近忙しくて気づかない事があります。その際はご容赦を(^-^;)。あと、トラバには言及リンクが必要です。反映まで数日必要かもしれません。


help リーダーに追加 RSS

[Perl] BDBのアクセスを高速化したい。その2

2008/11/20 19:20
こんばんは。
サッカー日本代表が勝ちましたね。3−0。夜中起きていた甲斐があったってもんです。
個人的には玉田と田中がよかった。あの二人でこれからも行ってほしい。というか、日本の攻撃陣は小兵だけれど、すばやく延々と動くタイプがあってるんじゃないかと思いましたよ。この調子で来年もがんばってほしいなー。
さて、本題は、BDBの高速化してぇという話です。

BDBのa.dbに7000件エントリが入っています。
それに対して、O_RONLYとO_RDWRの差を調べてみる。

#!/usr/local/bin/perl

use DB_File;
use Benchmark;

my $bb = new DB_File::BTREEINFO;
timethese(
100, {
rdwr => \&rdwr,
rd => \&rd,
});

sub rdwr {
tie %db, 'DB_File', "a.fcd", O_RDWR | O_CREAT, 0640, $bb;
while (each %db) {}
untie %db;
}

sub rd {
tie %db, 'DB_File', "a.fcd", O_RDONLY, 0640, $bb;
while (each %db) {}
untie %db;
}


結果

$ perl o.pl
Benchmark: timing 100 iterations of rd, rdwr...
rd: 11 wallclock secs ( 9.04 usr + 1.93 sys = 10.97 CPU) @ 9.12/s (n=100)
rdwr: 15 wallclock secs (11.69 usr + 1.70 sys = 13.39 CPU) @ 7.47/s (n=100)


あら、思ったより差がついた感じ。
これはちょっと実装も考慮してやらんとイカンかもしれません。
でも、そんなにBDBをオープンしまくるような実装はそもそもイカンと思いますわ。


記事へトラックバック / コメント


[雑記] cgiからldap引けないと思ったら、SELinuxか

2008/11/19 10:52
こんにちは。
朝一の会議を設定したら、遅刻*4って、人間が半分しか集まらなかったおじいさんです。少し凹みました。今度遅刻したら×ゲームさせるぞ。
さて、本題は、cgiからldapを引こうとしたら、引けなかった、という話です。

元々は、PerlのCGIプログラムを書いていたわけです。
で、以下のようなエラーが発生した。

IO::Socket::INET: Permission denied at xxxxx.pm line xx.

やってることは、Net::Ldap->newってしてるだけなんですがね。
そこでこんなエラーが出る。

で、コマンドラインから叩くと動く。
ありゃーなんで?とY嬢に相談されてアレコレ調べることに。

で、/var/log/messagesに以下のようなものが。

Nov 18 XX:XX:XX ldap setroubleshoot: SELinux is preventing xxxxxx.cgi (httpd_sys_script_t) "create" to <不明> (httpd_sys_script_t)


SELinux。。。

解除方法はgoogle先生で調べました。

selinuxの解除
 http://wiki.po-popo.com/?selinux%A4%CE%B2%F2%BD%FC

んでもって再起動。
まあ、開発機なのでとりあえずdisableにするのはいいんでしょうけれど、本番はやめましょうね。


記事へトラックバック / コメント


[雑記] youtubeがHDか+

2008/11/18 00:07
こんばんは。
自宅でぼんやりのおじいさんです。
youtubeがHD画質になったというので、早速見てみました。

【YouTube】 URL末尾に「&fmt=22」で動画が超高画質に!
 http://blog.livedoor.jp/dqnplus/archives/1192512.html

痛いニュース経由とかで知るのってのはどうかと思いますが、マクロスFの高画質版を見て驚きました。
 http://jp.youtube.com/watch?v=f96MkdB0gRo&fmt=22

えーっと、某ストリームとか、某動画サイトとかホンマどうするんでしょうね?
あの画質の悪さと言ったらたまらんです>某ストリームサイト。
まあ、それほど画質にはこだわっていないのでヨイのですが、でもやっぱり高画質のがいいです。

個人的には番組を見たいときに見たいので、HD画質で放送局や制作会社から出して欲しいんですが。
CMあってもいいです。Amazonアフェがあってもいいです。
好きなときに見たいんで。これができればパソコンからテレビの方に流してガンガン番組を垂れ流して見るんですが。

こうなると光回線に乗り換えるかな。

ほか、適当なニュース。

驚きのExcel 超早技ベスト15 これは便利!
 http://ascii.jp/elem/000/000/189/189102/
 →とりあえず、こういうのは覚えておいて損はない。
  こういう細かいところで、作業効率が大きく変わると言っても過言ではないので。
  あと、PGならば正規表現を覚えておけって。

あなたも「天才」になれる? 10000 時間積み上げの法則
 http://lifehacking.jp/2008/11/the-law-of-10000-hours/ 
 →なんかこれっておじいさんの実感と違うんですよね。
   天才と呼ばれる人は練習時間が多いだけだってのは凡人には気持ちよく聞こえそうだけれど、
   10000時間かあ。そう簡単なモノではないですねえ。
   
   しかし、これを見ていると中学・高校って奴はどうなんだと思ってしまいますね。
   三年という時間を無駄にすごしている気がしなくもないです。
   あ、そうか。午後から全部部活にすりゃいいんだ。そうすれば、専門分野はレベルアップする
   ような気がします。

「ミク」「リン・レン」に続く「CV03」 サンプル音声公開
 http://www.itmedia.co.jp/news/articles/0811/17/news026.html
 http://blog.crypton.co.jp/mp/2008/11/vocaloid2_23.html
 →むう、これは。
  正直な所、女性ボーカルの頂点はMEIKOだと思ってるので、それを超えてもらわないと困るんだが。
  聞いた感じ、まだ微妙・・・

3Dプリンター
 http://www.itmedia.co.jp/news/articles/0811/16/news001.html
 →これはおもしろそうですが、、、、個人で買えないんですよね。
  そもそも、おじいさんは3Dアニメとか作れませんw


まあ、こんなところで。


記事へトラックバック / コメント


[本] 無料でできるフォトレタッチ GIMP

2008/11/14 00:38



本屋でGIMP本を探していたら見つけた一冊。
とりあえず、操作がわからん、という人にはいいかもしれません。
おじいさんもそうでした。

非常にわかりやすく、かつフォトレタッチはこうするんだよ、というのが載っています。
特にありがたかったのは、写真を合成した場合にどうやってつなぎ目をなめらかにするか、という方法なんかは全然しらなかったので、助かりました。
1980円ってちょっと高い気がするけれど、まあ損した気分はしなかったです。


記事へトラックバック / コメント


[Perl] EUC SJISの重なっている領域を出力する

2008/11/12 12:01
メモ程度。
なぜかといえば、EUC,SJISの原典にあたっていないので、バージョンによって色々かわってるかもしれないし。

参考
 http://smdn.invisiblefulmoon.net/programming/tips/shiftjis_eucjp/

内容は、単純に文字コードがかぶっているといわれる、1byte目E0H-FCH, 2byte目A1H-FCHの漢字を出力するものです。

#!/usr/local/bin/perl

for ($b1 = hex("e0"); $b1 <= hex("fc"); $b1++) {
printf("%x a1- %x fc: ",$b1, $b1);
for ($b2 = hex("a1"); $b2 <= hex("fc"); $b2++) {
print pack("H*",sprintf("%x%x",$b1,$b2));
}
print "\n";
}


たとえば、"珈琲"なんて漢字はこれに含まれています。
なので、この単語だけで文字コード判定すると、EUCとSJISのどちらか区別つかねーとなりますね、ハイ。

記事へトラックバック / コメント


[雑記] google toolbarをはずしたら、マシンが軽くなった

2008/11/11 21:09
こんばんは。
マシンが重くて苦しんでるおじいさんです。
会社のマシンってのは、マシンスペックが足りない足りない。メモリ1.2GBってあっという間ですよ、ハイ。

それで、少し前からいらないサービスなんかを削除していたわけなんですが、本日は同僚のM氏に

 「Google Toolbarって結構仮想メモリ使うから外すといいよ」

と教わって、外してみました。
Google Toolbarのnotificationが200MBぐらい使用していました。
これを削減削減(^-^;)
ちなみに、同僚のM氏は明日出張なのですが、飛行機が欠航して代わりの便をさがすのに四苦八苦してりましたワ。

他に重いのっていうと、

 ・ウィルススキャンソフト 合計210MB
  →さすがにこれは終了させられない。。。
 ・firefox 100-300MBぐらい。アドオン入れすぎ、ページ開きすぎかな。

ちなみに、現状でどれぐらい重いかっていうとですね、朝出社して、firefoxを起動完了するまで10分ぐらい。その間はエクセルも開かないしワードも開けない、仕事にならんというぐらいです。
IE8βを起動すると20秒程度かかります。

一度安定してしまえば、ソコソコ動くのでやってられますけれど、これがそうじゃなかったらブチ切れてますよ。
メモリを4GBぐらい積みたいです。さて、予算をぶんどってこねば。



記事へトラックバック / コメント


[雑記] 写真のレタッチ

2008/11/11 00:45
こんばんは。
諸般の事情で写真のレタッチをしているおじいさんです。
やー、奥が深い。まったくわからん状態からの手探りですが、あれこれやるのは結構たのしいですね。

さて、使っているのは、、gimpです。

gimp
 http://gimp-win.sourceforge.net/
 ->Windows版ですが。

レタッチについてなんですが、色々調べたけれど、大体Photoshopでやっとりますな。
GIMPの人はあまり多くないみたい。ただ、本は出てる事は出てる。

で、優しく書かれていたのが以下。
 http://www.perfectsky.net/gimp/

無料でできるフォトレタッチ GIMPのサポートページ
 http://doronpa.voxx.jp/gimp/

助かりますよ、GIGAZINEさん
 http://gigazine.net/index.php?/news/comments/20060712_gimp_photoshop_tutorial/
 

うーん、結構時間がかかるなあ。大変です。
記事へトラックバック / コメント


[雑記] IMAPのソートコマンド

2008/11/07 23:24
こんばんは。
そろそろ帰宅するおじいさんです。
IMAPのRFCのメモです。

Internet Message Access Protocol - SORT and THREAD Extensions
 http://tools.ietf.org/html/rfc5256

位置づけはPROPOSED STANDARDです。
でも、ほとんどのIMAPサーバってSORTできますよね。


Example: C: A282 SORT (SUBJECT) UTF-8 SINCE 1-Feb-1994
S: * SORT 2 84 882
S: A282 OK SORT completed
C: A283 SORT (SUBJECT REVERSE DATE) UTF-8 ALL
S: * SORT 5 3 4 1 2
S: A283 OK SORT completed
C: A284 SORT (SUBJECT) US-ASCII TEXT "not in mailbox"
S: * SORT
S: A284 OK SORT completed


おじいさんが使っている、PerlのMail::IMAPClientモジュールもちゃんと使えるようで、一安心。
しかし、結構便利ですな。
REVERSEできるし。
あと、Dateのソートでは、タイムゾーンも考慮してくれるようです。
結構高性能ですね。

さて、問題はどのサーバがどれぐらいサポートしてるか、って所ですね。後で調べねば。

記事へトラックバック / コメント


[雑記] AtokでPerlとか

2008/11/05 23:22
こんばんは。
卓球で後輩にこてんぱんにやられたおじいさんです。
さすがに歳には勝てませんな。まー、相手は県大会X位とか。ブランクがあるにせよ、桁がちがうわけで。で、そーゆー人を片手であしらうような福原愛選手とかってどの程度の相手なんでしょうね?
想像がつきませんが。
さて、本日のエントリは適当なもの。

ATOKダイレクトAPI for Perl/Rubyで気軽にATOKを拡張しよう!
 http://journal.mycom.co.jp/articles/2008/11/04/atok2008/index.html

知ったのは昨日だったかな。この記事で知りました。
おじいさんも自宅ではATOK使い。
何かつくってみるかなーと思いました(ネタがないw)がその前に、下調べ。

本家
 http://www.atok.com/useful/developer/api/index.html
 http://d.hatena.ne.jp/ATOKDirect/
 →こちらで積極的にサポートされている模様。

む。ATOKダイレクトはおもしろそうだ。つーか、はてながあって、なぜWikipediaがないw
さて、早速インストールを。。。
あれ??
そうか、おじいさんはATOK2007は買ったんですが、ATOK2008を買ってなかったですねorz
#その前は2005年頃、20003年頃と二年に一度購入してる。そのくせ、一度もユーザ登録してないのよ。

今頃気づいてどおする。
とりあえず、無料体験から始めるかな。
月300円なら、バージョンアップも楽ちんだし。

記事へトラックバック / コメント


[一行古報] リンク整理

2008/11/01 16:17
こんにちは。
今日もちょっとだけ働かされているおじいさんです。ちょっと風邪気味だから倒れていたいです。ええ。
さて、今日はやたらとたまったリンクの整理。古い話ばっかりです。

「プロフ」の何が問題か (1/3)
 http://plusd.itmedia.co.jp/lifestyle/articles/0810/15/news013.html
 →なるほど、プロフだと体を張ったギャグしかないわけで、エスカレートしつづけると痛いって事ですね。
  そこまでやる必要ないだろうに、というのは大人の感覚ですかねえ。
  まあ、子供の場合、つっぱしっちゃうというのはありますけれども。

芸術の秋にProcessingでスケッチプログラミングを始めてみよう
 http://www.atmarkit.co.jp/fwcr/design/tool/processing01/03.html
 →ヒマがあったら取り組みたい、Processingネタ。
  へー。。

第4回:ベイズの定理でプロジェクトの失敗を予測
 http://www.thinkit.co.jp/article/139/4/
 →発想は面白いんですが、その人のうそつきを^判定するっていう最後のページの例はどうなんだかと
  思わざる得ない。。

ゆとり、キーボードの意味を知る
 http://d.hatena.ne.jp/project_the_tower2/20081025/1224920510
 →そうか。この世代は実際にタイプライターを叩いたことがないのか、と愕然。
  おじいさんは、タイプライターは結構叩きましたよ。仕事ではありませんが。
  地元の商店街では、なぜかわからんのですが、絵の具屋にタイプライターが沢山おいてありましたな。
  一体どうしてか店主にも聞いていないのでわかりませんが、どういう関連があったのやら。

ポリスチャンネル
 http://www.police-ch.jp/wanted/
 →少し前に、Web2.0的なこういうサイトをできないかと考えていました。
  警察、被害者、追いかける人の3者にとって都合のいいサイト。
  ただ、懸賞金をかけるのは結構難しそうだと断念した覚えがあります。
  よって、元ネタん所をはっつけておきます。

なんか非常にとりとめなくなりましたが、こんな所で。

記事へトラックバック / コメント


[本] ハイパフォーマンスWebサイト

2008/10/28 23:50


うーん、いい本なんだが、ぶっちゃけすぎてないですかね。


A章 フロントエンドのパフォーマンスの重要性
B章 HTTPの概要
1章 ルール1:HTTPリクエストを減らす
2章 ルール2:CDNを使う
3章 ルール3:Expiresヘッダを設定する
4章 ルール4:コンポーネントをgzipする
5章 ルール5:スタイルシートは先頭に置く
6章 ルール6:スクリプトは最後に置く
7章 ルール7:CSS expressionの使用を避ける
8章 ルール8:JavascriptとCSSは外部ファイル化する
9章 ルール9:DNSルックアップを減らす
10章 ルール10:JavaScriptを縮小化する
11章 ルール11:リダイレクトを避ける
12章 ルール12:スクリプトを重複させない
13章 ルール13:ETagの設定を変更する
14章 ルール14:Ajaxをキャッシュ可能にする
15章 米国トップ10サイトの分析


目次はそのままレビューシートに使えそうだ。
おじいさんがいいなと思ったのは二点。ルール1の箇所にあるCSSスプライト、ルール11のリダイレクトを減らすという点。ルール13のETagについては、まだ理解が追いついてない。。
それ以外の、ルール3や、ルール4、ルール7、ルール8、ルール10なんかは常識でしょう。
それらが非常にわかりやすく書かれている。

でも、ルール14のAjaxをキャッシュ可能にするって、なんかイマイチです。
やり玉に挙がっているのは、Yahoo!Mail(US)とGoogleスプレッドシート。
メールをキャッシュしろとか、スプレッドシートをキャッシュしろって、本にも書いてありますが、本当にプライバシーの観点からどうかと思いますが。


それでざーっと本書を読んだ感想ですが、ちょいとペラペラかな、ハック系に近い感じ。
薄くても非常に有益なものなんですが、今やれ、すぐやれ、さあやれってな雰囲気があって、じっくり腰を据えて読む類の本ではないと感じました。

記事へトラックバック / コメント


[グルメ] 焼き肉くにもと

2008/10/27 23:51
一月に一度程度、B級グルメができればと望みつつ。
#なんか、別館の方に移してきた方がいいような気がしてきた。

焼き肉くにもと
 http://www.8929kunimoto.com/

店は浜松町駅の西側、貿易センタービルから南へ数分。高速の手前にある。
私が友人と入ったのは本店の方で、前日に予約して向かった。本店の前には謎の空き地があり、場所は割合わかりやすいか。店は二階建てで広くない。こぢんまりとしているが、暖かく人情のある雰囲気だ。
店員に案内され二階へ。ざぶとんの上にあぐらをかいて、まずはビールを一杯飲んだ。卓のかずは多くなく、どの席からも女将の顔が見えるので、声をかければすぐに来てくれる。

今回は予約した時に肉の種類を指定した。
3900円の上出来と、5000円の上、10000円の別格である。
頼んだのは、5000円の上。

特に指定をせずにおまかせ。
出てきた肉は上肩ロース、バラ、もう一つ出てきていたが、失念した。塩とタレの両方だ。
ちなみに、私個人はタレが好きな方である。
卓の上にどかんと鉢を置いて炭火の上に七輪を置き、焼く。

うまい肉なので、いずれも焼きすぎてはいけない。
塩からいただく。柔らかさ、塩加減、肉の厚みが絶品であっという間に食べてしまう。肩ロースが特によかった。どう良かった、とは海原雄山ではないのでうまく説明できない。
「うめぇうめぇ」
と熱々の肉を口の中で噛み、踊らせて、あっという間に胃の中に落ちていく。

タレの方は塩以上にいけた。この辺りは好みの問題もあろう。
なんだかわからないが、若干塩の肉が一切れの肉が大きく、数はタレの方が多かった。

オススメを食べた後は、くにもとだからという事で、ほるもん系へ。
ミックスホルモンを注文する。
レバー、ミノ、シマチョウ、ハツ(だと思う)を塩で。
レバーは下手な店では食感が最悪で、気分がわるくなる。くにもとではシャクシャクという感じで、いける。シマチョウが塩でぴりりとしており、うまい。ミノ、ハツを平らげ、ご飯を注文することなくさらなる肉を頼む。

切り落としを頼むと、二人分じゃなくて、三人分のような量。平盛じゃなくて、大盛りをたのんじゃったか。
だが、タレの切り落としがうまい。最初に食べたバラには及ばないが、量で圧倒。
これならいくらでもいける。
途中、サラダを頼みつつ、うまい肉を楽しむ。

結局、二人で合計二万円であった。
カルビ最高!という以外の肉の深淵を十分に堪能した夜であった。


記事へトラックバック / コメント


[Perl] BDBのアクセスを高速化したい。失敗orz

2008/10/27 16:12
こんにちは。
ですまーちはようやく終わりのようです。なんとかブログにかけるような技術的な調査とかも行っているおじいさんです。
で、お題ですが、DB_Fileモジュールで使っている、BDBのアクセスを高速化したいんですよ。

DB_File
 http://perldoc.jp/docs/modules/DB_File-1.805/DB_File.pod

今回使っているのは、BTREEINFO形式のDBでして、cachesizeとかが無指定なので、指定してやったら早くなるんじゃないんか?という所です。

先に結果から。DBにはおよそ7000レコードぐらい入っていて、5MBです。全レコードを取得する処理で比較してみました。なお、cacheありでは$b->{'cachesize'} = 10485760;を指定してみました。


$ perl c.pl
Benchmark: timing 100 iterations of cache, nocache...
cache: 9 wallclock secs ( 5.28 usr + 2.80 sys = 8.08 CPU) @ 12.38/s (n=100)
nocache: 6 wallclock secs ( 5.07 usr + 0.94 sys = 6.01 CPU) @ 16.64/s (n=100)


あ。。。指定しない方が早いorz
VM上でやっているせいか、結果がくるくる変ります。
まあ、この程度のキャッシュを指定した所で、なんらかわらねぇって事ですね。

まー、そもそも、BDBに関してこの辺の情報がすくなすぎなんですよ。困りモンです。
ソース嫁って事なんですかね。さすがにそれはあまりにも面倒。。。
記事へトラックバック / コメント


[雑記] 破綻

2008/10/24 21:44
今週だけで、8月9月10月頭のプラス分全部はき出しちゃったorz

記事へトラックバック / コメント


[Perl] UTF8フラグのついていない文字列をquotemetaしてはいけない

2008/10/17 20:05
相変わらず忙しいので口上は省略。

結果 上がUTF8フラグなし。下がUTF8フラグあり。

$ perl a.pl
SV = PV(0x9ff7b00) at 0x9ff76a8
REFCNT = 1
FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8)
PV = 0xa00d370 "\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"\0 [UTF8 "\x{3042}\x{3044}\x{3046}\x{3048}\x{304a}"]
CUR = 15
LEN = 16
Wide character in print at a.pl line 8.
あいうえお

$ perl a.pl
SV = PV(0x9b2db00) at 0x9b2d648
REFCNT = 1
FLAGS = (PADBUSY,PADMY,POK,pPOK)
PV = 0x9b4af90 "\\\343\\\201\\\202\\\343\\\201\\\204\\\343\\\201\\\206\\\343\\\201\\\210\\\343\\\201\\\212"\0
CUR = 30
LEN = 32
\綵\\綵\\綵\\綵\綵\



元プログラム。コメントはつけたり外したりして、実施。

#!/usr/bin/perl

#use utf8;
use Devel::Peek;
my $a = "あいうえお";
$a = quotemeta($a);
Dump($a);
print $a;

記事へトラックバック / コメント


[雑記] 音楽ファイルのノイズを減らしたい>Audacity

2008/10/17 01:13
こんばんは。
今日も午前様のおじいさんです。理由はというと、自業自得なんですが、特に9月は疲れ切っていて、プログラムの品質がいかんですよ。関係者諸氏には多大な迷惑をかけてもうしわけないです。
ようやく、終わりが見てきたので、なんとか。。
さて、それはおいといて、今日のネタは音楽ファイルの編集の話です。

実の所、こういう事はあまり得意じゃないんですよね。
さる事情があって、インタビューをした音楽ファイルがあるんですが、こいつのノイズがひどい。
で、なんとかノイズを減らそうとおもって格闘していたわけです。

まず、このソフトを使いました。
 Audacity
  http://audacity.sourceforge.net/?lang=ja
 初心者講座
  http://pohwa.adam.ne.jp/you/music/aud/bgnr.html

プチプチっとしたノイズなんかであれば、こいつの「効果」にあるノイズ除去で片付きます。
で、その後に色々と調整をかけていたんですが、

 「風がマイクにあたって、ボコボコする音はどうやっても消せない」

という事がわかりました。
イコライザーで、音声以外の周波数を切っても、風の音には当然80Hz〜5000Hzの音は含まれているわけです。
こうなると、波形を直接いじってやるしかないのですが、サンプリング44kHzなんぞの音声をすべての波形にわたって、30分もあるインタビューの音声をいじれるはずがないッ。

挫折しましたorz

これは撮影する時に注意してもらうしかないですな。。

記事へトラックバック / コメント


[Perl] Perl Tips

2008/10/15 17:21
午前様→午前休→定時退社のおじいさんです。
体が持たないので帰ります。。。
それはともかく、Perlの最近知ったTips。


print ("" eq undef)

結果は1でした。初めて知りました。

renameは、ファイルシステムをまたがることができない。
 →http://perldoc.perl.org/functions/rename.html

For example, it will usually not work across file system boundaries,


またがる場合は、File::Copyのmoveを使いましょう。



記事へトラックバック / コメント


[Perl] Subroutine BEGIN redefined at ....

2008/10/12 20:22
最近非常に忙しいので、口上はなしで。
mod_perl上でSubroutine BEGIN redefined at ....警告がでて嵌った件の修正方法。

シンボルを定義しているpmファイルがあって、以下のようにやってた

package MyConst;
use Exporter;
@ISA = qw( Exporter );

use constant hogehoge => 1;

@EXPORT = ( keys( %{ *{MyConst::} } ) );


この時、以下のようなコードを書くとredefined警告が出る模様。

#!/usr/local/bin/perl

use strict;
use warnings;
use MyConst;

sub BEGIN {}


対応 MyConst.pm側の最後を変更。

@EXPORT = (grep !/^BEGIN$/, keys( %{ *{MyConst::} } ) );


つーか全部Exporterするなんて無茶すんな、と。

記事へトラックバック / コメント


[Perl] あるものとあるものをふくまない文字列にマッチする正規表現

2008/10/11 19:25
夕飯の後にアタマの体操と、あれこれ考えていたらできたので、メモ。
Perlの先読み強力すぎ。

b-d, l-o, u-wを含まない箇所にマッチさせてみる。

my $str = q{abcdefghjiklmnopqrstuvwxyz};

while ($str =~ /(((?![b-d])(?![l-o])(?![u-w]).)+)/g) {
print "$1\n";
}


結果

$ perl j.pl
a
efghjik
pqrst
xyz


これを使えば、簡単にUTF8ではない文字列を削除することができそうです。
しっかし、Perl正規表現雑技にのっているやり方はいまだに理解できないです、ハイ。

Perl正規表現雑技
 http://www.din.or.jp/~ohzaki/regex.htm


追記:
foobarhogeから、foo, hogeを含まない箇所を取り出そうとしてみた。
どうも、上の方法だと以下のような結果になって、まだうまく行かない。
うーむ。。。道は険しい。

oobar
oge

記事へトラックバック / コメント


[Perl] Perl Quiz - package名について >すでに思いついた回答はでてました

2008/10/07 14:37
こんにちは。
昨今の株暴落で、同僚がFXでふっとんだおじいさんです。おじいさんもいつ吹っ飛ぶか非常に怖い状況になってきました。。
いやー、こわいですね。それはともかく、Perlネタ


元ネタ
 http://d.hatena.ne.jp/gfx/20081007/1223340787


お題 Q.以下のテストケースが失敗するようなf()を書いてください。ただし,ライブラリを使用してはいけません。回答は一週間後くらいに。


#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
# 何かする
}
f();
is ref(bless({}, 'Foo')), 'Foo';
__END__



・・・おじいさんが思いついたのは、すでにmiyagawaさんが書いていましたorz

http://subtech.g.hatena.ne.jp/miyagawa/20081007/1223347398


#!perl -w
use strict;
use Test::More 'no_plan';
sub f{
*is = \&isnt;
}
f();
is ref(bless({}, 'Foo')), 'Foo';


他の方々の回答も見てみたのですが、さらに別のとなるともう思いつきません。
ヒントのsv_derived_from()は見てみたのですが、さっぱりわからず。
白旗っす。

記事へトラックバック 0 / コメント 1


月別リンク