2013/05/09(木)Perl製Wiki MojoMojo メモ #01 インストール編
一応メンテナンスされている MojoMojo というWikiがあったのでインストールしました。インストールで少しハマりどころがあったのでメモです。
git clone https://github.com/mojomojo/mojomojo.git
cd mojomojo
perl Makefile.pl
(多分エラーが出るのでエラーメッセージ見て必要なモジュールを入れる)
cpanm http://cpan.metacpan.org/authors/id/B/BO/BOBTFISH/Catalyst-Devel-1.37.tar.gz
(↑は1.38だと動かないため)
sudo yum install libxslt-devel.x86_64
perl Makefile.pl
make
make test
cp mojomojo.conf mojomojo_local.conf
vim mojomojo_local.conf
# イカを編集
user **** (一応ユーザ名を変更)
dsn dbi:SQLite:__HOME__/db/sqlite/mojomojo.db
# 編集終わり
mkdir db/sqlite -p
touch db/sqlite/mojomojo.db
./script/mojomojo_spawn_db.pl
# ↓が表示される
Creating a new wiki ...
dsn: dbi:SQLite:./db/sqlite/mojomojo.db
wiki name: MojoMojo
admin username: admin
admin password: admin
admin name: ****
admin email: ****@localhost
anon email: anonymous.coward@localhost
Deploying schema to dbi:SQLite:./db/sqlite/mojomojo.db
Creating initial data
Success!
# 表示終わり
./script/mojomojo_server.pl -p 3020
# 以下 nginx の設定
server {
listen 80;
server_name ドメイン名;
access_log アクセスログのパス;
allow 自分のIP;
deny all;
location / {
proxy_pass http://127.0.0.1:3020; # 3000番使用済みのため
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# nginx の設定終わり
↓のように動きます。
編集がリアルタイムで反映されて中々良い感じ。
参考サイト:
2012/12/30(日)CPANの「Lingua::JA::WordNet」が「日本語WordNet 同義対データベース」に対応
例えば「おしまい」っていう名詞の同義対が欲しければ↓だけでOKです。
#!/usr/bin/env perl
use strict;
use warnings;
use Lingua::JA::WordNet;
my $wn = Lingua::JA::WordNet->new;
my @synonyms = $wn->Synonym( $wn->WordID('おしまい', 'n') );
print "@synonymsn";
出力↓
お仕舞 お仕舞い どん詰まり エンディング エンド フィニッシュ ラスト 仕舞 仕舞い 完 完了 完結 尻 幕切れ 留め 終 終了 終幕 終焉
「同義対データベース」の詳細に関しては「日本語WordNet」のWebサイトを参照してくだしあ。Synonym メソッドのみモジュールに同梱のデータベースでないと動かないで注意!
ダメ出しは常時受け付けておりますぜよ。
2012/10/10(水)Perl勉強メモ #002 それホンマに画像?(File::LibMagic)
中身が↓の「image.png」ってファイルをサーバに置いてIE6でアクセスすると普通にJSを解釈してアラートが出てくるので画像を画像と見抜く必要があります。(徳丸本によるとIE7でもJSを解釈する)
<script type="text/javascript">alert('XSS');</script>
それがFile::LibMagicでできるようなのでインストールします。
cpanm File::LibMagic -v
Can't link/include 'magic.h', 'magic'
libmagicがないっぽいのでやり直し↓
yum install file-devel
cpanm File::LibMagic -v
Perlのコード↓(image.png以外は拡張子に対応した普通のファイルです)
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/say/;
use File::LibMagic;
my @files = qw/image.png libmagic.pl
kubota4.png hentai.jpg yui.gif footer.js/;
my $libmagic = File::LibMagic->new;
for my $file (@files)
{
say "$file:";
say $libmagic->checktype_filename($file);
say $libmagic->describe_filename($file);
print "\n";
}
出力↓
image.png:
text/plain; charset=us-ascii
ASCII text, with no line terminators
libmagic.pl:
text/plain; charset=us-ascii
a /usr/bin/env perl script text executable
kubota4.png:
image/png; charset=binary
PNG image data, 118 x 118, 8-bit/color RGBA, non-interlaced
hentai.jpg:
image/jpeg; charset=binary
JPEG image data, EXIF standard
yui.gif:
image/gif; charset=binary
GIF image data, version 89a, 29 x 32
footer.js:
text/plain; charset=us-ascii
ASCII text
他にもCPANには「File::MimeInfo::Magic」もあるけど試せていません。画像だけならここまでしなくても良いかもしれませんが、ライブラリ使っとくのが無難でしょうかね。