2008-01-01から1年間の記事一覧

Web::Scraperを読みながら

Web::Scraperのソースを題材にして、perlで知らなかったことをメモしていく。 Web::Scraperのサンプルコード http://e8y.net/mag/013-web-scraper/ を参考に、ちょっと改変 use Web::Scraper; use URI; # 価格部分を yen という名前で取るスクレイパーを作成…

おもしろそうなモジュール発見vol.1

http://perl-mongers.org/2008/09/perl-kuronekoyamato.html 仕事をしていると、荷物を宅配便で送る業務っていうのがあるんですけれども、宅配便業者さんに引き渡した後、ちゃんと届いたか確認したいってことありますよね。というわけで、今回はPerlでクロネ…

思わず笑ってしまったwww

実際にFromヘッダを偽装したウィルスメールなのだけど。 admin@microsoft.com (xxxxxxxxxxx@yahoo.co.jp) さんからの ""Internet Explorer 7"" という件名のメッセージに、ウィルスに感染またはその疑いのあるファイルが添付されていました。このメッセージ…

.pmのパス

たまに このモジュールどこにインストールされてるっけなぁ? と思うのだが、コマンドがすぐに思いつかない。 (しょせんアマグラマーなので)ということでメモ。 モジュールの検索パスをリスト perl -e 'for (@INC){print "$_\n"}' モジュールがインストー…

File::FindとHTML::Parser

File::FindとHTML::Parserを使ってみた。備忘のためのメモを。 File::Find 指定ディレクトリ配下を再帰的に探索して、発見したらコールバック関数を呼ぶ。 といったところ。 use File::Find; find(\&findFile, "/home/hoge"); sub findFile{ my $path; #ディ…

VirtualHostの設定

サブドメインwwwが指定された時は、通常のDOC_ROOTである/var/wwwを使い、それ以外のサブドメインは/home/mobaを使うようにしてみた。 ※DNS or クライアントのHOSTSで名前解決できることは大前提 <VirtualHost *> ServerName moba.example.jp User moba Group dev DocumentR</virtualhost>…

MobaSiFをインストール

あしかけ2週間、ようやくインストールできた。 はぅぅ。FastCgiWrapperとsuEXECにはまりまくった。 以下参考にしたサイトをメモ。■MobaSiF http://www.webbozu.com/?p=15 http://d.hatena.ne.jp/mobiledeveloper/20080622/1214121178 http://www.omnibase.ne…

suEXECのインストール

Debianを使っているのだが、suEXECのDOC_ROOTやuidminを変更したかったのでApacheのソースからインストールすることにした。忘れないようにメモ。 mkdir ~/install cd install wget http://www.meisei-u.ac.jp/mirror/apache/httpd/apache_1.3.41.tar.bz2 ta…

ユーザー設定/環境変数コマンド

いつも忘れるので、覚書。 ユーザーhogeの設定 adduser hoge usermod -g group_name -d /home/dir/ hoge ディレクトリ設定 chown -R hoge:group_name dir_name

mod_rewrite

恥ずかしながら今まで使ったことがなかったので、試してみた。 リクエストするURLと実体をマッピングするために使えるってことだね。 便利。 ディレクトリの書き換え <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/hoge/(.*)$ /foo/$1 </IfModule> 別のサーバーでも使えるようだ。 R…

ファイルIO

超基本だけど、たまに忘れるので。 use IO::File; my $fh = IO::File->new('./foo.txt','r') or die "cannot create file handle: $!"; my $line = $fh->getline; $fh->close; http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2FIO%3A%3AFile%…

配列と連想配列

以前、javascriptの連想配列の実体はオブジェクトだよーんていう話をどこかで見た(or 聞いた)気がして色々試してみようと思ったら、すでにamachang氏がやっていた。 http://d.hatena.ne.jp/amachang/20070202/1170386546さすが & ありがとぅ!!(面識は…

正規表現でアンカーテキストを取り出す

TextAreaに入力されているアンカーテキスト形式に誤りがないかチェックするため、まずはすべてのアンカーテキストを配列に取り出すことに。 これが意外と難しかった。 function extractAnchors(text) { text = text.replace(/&lt;/g, "<"); text = text.repl…

HTML内の任意の文字列をマークアップする

documentオブジェクトを引数に取る無名関数を定義 関数内でinnerHTMLを取得し、正規表現を利用して置換処理 関数を実行 でOK! 例えば、googleと書いてある文字を黄色でマークアップする。 javascript:(function(d){ d.body.innerHTML=d.body.innerHTML.repla…

正規表現

知らなかったことをメモ(恥ずかしい、、、、) 変換演算子 tr/// #小文字にする $str =~ tr/A-Z/a-z/; デフォルト変数は$_ マッチ演算子、置換演算子、変換演算子は通常入力として $_ が使用される。 パターン結合演算子「=~」は$_以外を対象とする時に使う…

Fast CGIの基礎

perlで使えるモジュール CGI::FastとFCGIの2つがある。 CGI::FastはCGI.pmによって作成されるCGIオブジェクトのサブクラスなので、CGI関連のモジュールを使いたいのであれば、CGI::Fastを使うのがよいと思われる。FCGIについては以下が参考になる。 http://f…

インデント関連

vim

現在行を含めn行について、m文字分左インデントを設ける n:を入力 :.,.+4と表示される 続けて、leftmと入力

エンコーディング

vim

エンコード関連のviコマンドをまとめておく。 OSのエンコード確認 :set enc ファイルのエンコード確認 :set fenc エンコードを指定してファイルを読み直す :e ++enc=euc-jp*1 *1: もちろんeuc-jp以外でもOK

文字列処理いろいろ

内部エンコーディング http://app.blog.livedoor.jp/dankogai/tb.cgi/50276015 Perl 5.8では内部で扱う文字コードもUTF-8です。それ以外のUTFはすべてEncodeモジュールで扱うことが出来ます。 perlスクリプトはUTF-8で書くのが無難ということだね。なお、内…

CGIの基礎

CGI

CGIプログラミングを読んで知らなかったこと/あいまいにしか知らなかったことをまとめる。 第1章 CGIの入力/出力 CGIは標準入力と環境変数を通してウェブサーバからの入力を受け取る。 また、標準出力を通してウェブサーバに結果を渡す。 CGIと代替手段 ■CGI…

Class::Data::Accessor

クラス変数へのアクセサ(継承可)を提供してくれるクラス。 インスタンスごとに値を変えることもできる。 use strict; use warnings; use Class::Data::Accessor; use base qw/Class::Data::Accessor/; #instance value def my $obj = bless { id => '001',…

型グロブ

テストコード use strict; use warnings; package Hoge; our $var = "hoge_var"; { our $var2 = "hoge_var2"; } package Foo; #%Hoge:: have hash keys named as var, var2 print join(', ', keys %Hoge::), "\n"; #%Hoge:: have hash values that are type …

OOP

クラスの基本 use strict; { package Person; use Carp qw(croak); #クラス変数 my $class_var = 'hoge'; #コンストラクタ sub new { ref (my $class = shift) and croak("warn: method 'new' is class method"); my $self = {Name => shift}; bless $self, …

シフト演算

perlでは算術右シフトはできないっぽい printf("-2 >> 1 is %d\n", -2 >> 1); 2 >> 1 is 2147483647 と表示される。試しに、自作関数で2進数表記にしてみると print &decimal2binary(-2), "\n"; print &decimal2binary(-2 >> 1), "\n"; sub decimal2binary {…

vimrcの設定

vim

現在の設定値 "Color syntax on"Tab set tabstop=2 set showmode set autoindent set nonumber set showmatch"Encoding set encoding=utf-8 set fileencodings=iso-2022-jp,cp932,euc-jp,utf-8 メモ: syntax on たいていはファイルタイプを認識してくれるけ…

モジュールをつくってみる

http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/?P=2&ST=develop を参考にした自分用のメモ。必要なものはcpanでインストールしておく。 モジュールとテストをつくる 必要なコマンド $cd /home/user/workspace $module-starter --module=My::M…

ColinuxでDebianを

手元にLinuxサーバが欲しかったので、Colinuxをインストールして使っている。 以下、はまった箇所。 1. ネットワーク設定 無線LANは設定がなかなか難しかった。有線のほうが無難。 2. apt apt-get install hogehoge を実行しようと試みると、e2fsprogsがxx…

プロンプトの表示を変更

ホームディレクトリの.bash_profileに以下を記述して、 export PS1="\u@\W:\\$ " $source .bash_profile でOK 参考) http://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html http://www.ep.sci.hokudai.ac.jp/~inex/y2002/1101/1101_shell.ht…

CGIのdeployスクリプト

deployというほど大げさなものではありませんが。 apacheユーザーとログインユーザーが違うのでいちいちchownやchmodしなければならないのですが、それを解決しようというもの。 #!/bin/bashsudo cp -R /home/kotaro/cgi/*.* /usr/lib/cgi-bin/ sudo chown -…

日本語を読めるようにした

vim

日本語のファイルを読めないので、まず現在のロケールを調べてみる。 #less /etc/default/locale するとなんも表示されない!!!http://debian.fam.cx/index.php?Japanese#content_1_3 を見て調べる。 #apt-get install locales # update-locale LANG=ja_JP…