Home > Archives > 2010年4月 Archive

2010年4月 Archive

1 2 3

【Python 事始め】YAMLで書いた設定ファイルを読み込む

Python で YAML を扱うためにはサードパーティのモジュールが必要だ。Perl で言う cpan コマンドに当たるのは easy_install というものらしい。

easy_installとは
http://morchin.sakura.ne.jp/effective_python/easy_install.html

モジュールのインストール

ブラウザで ez_setup.py をダウンロードして実行する。

C:\> python ez_setup.py

これで Python をインストールしたフォルダ直下の Scripts フォルダに easy_install.exe という実行ファイルが作成される。

Python で YAML を扱うモジュールは PyYAML というのがいいみたい *1 。インストールは次のコマンドをたたくだけだ。

C:\> D:\Python26\Scripts\easy_install PyYAML

Continue reading

「シャッター アイランド」感想

最初に感想の結論から言ってしまうと、肩すかし食らった感じだった。公開前から各種サイトや TVCM で「衝撃の結末!」と煽りまくり、あまつさえ、実際の上映前に「この映画のストーリーには謎が含まれています」「あらゆるところにヒントが隠されています」などとテロップが出る始末。よほど難解で解釈に悩む映画化と思っていたのだが……。

ラストにオチをきちんと解説しちゃうんだもんな〜。いい映画だし、スコセッシ監督の映画の中では一番面白かったと思うけど……。

以下はネタバレ含むので注意。

Continue reading

【Python 事始め】Windows アプリを作ってみる

業務で使う簡単なアプリを JScript や Perl を使って作っていたのだが、なんか飽きてきたので Python を始めてみた。まず一番初めにコンソールアプリを作るお勉強。所謂“exe 化”。Perl で言う PAR(参照 : 、)に当たるものは Python では py2exe らしい。

py2exe モジュールについて
http://python.matrix.jp/modules/py2exe.html

FrontPage - py2exe.org
http://www.py2exe.org/

Continue reading

【MovableType】テンプレートで Switch 文を使う

記事にタグを付けまくっていたら、タグクラウドが混沌として訳のわからない状態になってきた。一定数以上の記事に付いているタグだけを表示できたらよいのだが、タグクラウドを生成するために使っている <mt:Tags> タグではそのような制限が出来ない。そこでこのプラグインを使う。

MT のコメントのカスタマイズ - lucky bag
http://www.lucky-bag.com/archives/2005/05/comment_style.html

Movable Type plugin: MTSwitch - Arve Bersvendsen
http://virtuelvis.com/archives/2003/03/mtswitch

このプラグインによって switch ~ case ~ default 文のような条件分岐が書けるようになる。タグクラウドを生成するウィジェットを次のように変更してみた。

Continue reading

SandS (Space and Shift) を使おう!【keyhac 編】

日本語キーボードドライバで英語配列を使う【keyhac 編】」に続いて、keyhacSands の設定を行ってみる。

そもそも SandS とは何かというと、親指シフト配列キーボードの特徴のうち、「ホームポジションに手を置いたときに親指の位置にあるキーを修飾キーとして使う」機能だけを通常の JIS(あるいは ASCII)配列のキーボードで実現するものだ。具体的には、Space キーを Shift キーの代わりとして使うことである。

  1. Space キー単体を押したときはスペースを表示し、
  2. Space キーを押しながら 4 キーを押すと、「$」記号を表示する。

こんな機能が実現できる。タイプするときにほとんど働いていない親指を使うことで、Shift Control Tab Enter などの打鍵で忙しい小指を休ませることが狙いだ。ただ、Space キーを押して一定時間(数十~数百ミリ秒)を上記 1. 2. の判定に使うので、単にスペースを入力したいときは僅かに待つことになる。そこは慣れるしかない。

では実際の設定方法を載せておく。……そのまま引用しただけだけども。

# config.py
from keyhac import *

def configure(keymap):
    keymap_global = keymap.defineWindowKeymap()
    keymap.replaceKey("Space", "RShift")
    keymap_global["O-RShift"] = "Space"

http://d.hatena.ne.jp/mobitan/20081128/1227792452

Continue reading

「第 9 地区」感想

ちょっと路線変更。映画の感想ネタもちょくちょく置いていきます。べ、別に Perl ネタで書くことなくなった訳じゃないんだからね!


映画『第 9 地区』予告編


あ…ありのまま、今日起こったことを話すぜ!

「俺は SF を見に行ったと思ったら始まったのは人種差別問題を扱った社会派映画だった。と思ったらやっぱり戦争モノで最後はロボットに乗って戦う映画だった。」

な、何を言ってるのかわからねーと思うが、今日の感想はそんな感じ。さすがアカデミー作品賞ノミネートは伊達じゃない。一口も二口も違った「SF 映画」だった。

Continue reading

【Perl】設定ファイル中に定数を使う

前の記事「【Perl】いろいろな形式で設定ファイルを読む」では Config::Any モジュールを使って設定ファイルを読み込む術を書いた。設定ファイルを書いていると中に定数を置きたい場合がある。例えば、以下のような設定があったときに、__FindBin__ は実行ファイルへのパスに置き換えて欲しい。

---
log_dir: __FindBin__/log
image_dir: __FindBin__/image

コード例

use Config::Any;
use Path::Class;
my $cfg = Config::Any->load_stems( ... );
my $img = dir( $cfg->{image_dir} )->file( "sample.png" );

このような機能を実現するには、Data::Visitor::Callback モジュールを load_stems (load_files) メソッドの filter オプションで使用するといい。

use Config::Any;
use Data::Visitor::Callback;
use FindBin;
my $cfg = Config::Any->load_stems( {
    stems => [qw! config !],
    filter => sub {
        Data::Visitor::Callback->new(
            plain_value => sub {
                $_ // return;
                s/__FindBin__/$FindBin::Bin/eg;
            },
        )->visit( shift );
    },
    use_ext => 1,
    flatten_to_hash => 1,
} );

Continue reading

【Perl】いろいろな形式で設定ファイルを読む

外部から設定ファイルを読み込む方法はいろいろあるが、一番お手軽なのは Config::Any モジュールを使うことだ。このモジュールを使うと様々な形式のファイルを一つの命令で読むことが出来る。

コード例

load_stems メソッド

基本は、これを使っておけば間違いない。stems オプションに指定した文字列に、対応した拡張子を自動的に補ってファイルを探してくれる。

#!/usr/bin/perl
use strict;
use warnings;
use Config::Any;
use YAML::Syck;

my $cfg = Config::Any->load_stems( {
    stems => [qw! config !],
    use_ext => 1,
    flatten_to_hash => 1,
} );

print Dump $cfg;

load_files メソッド

読み込むファイルを指定したいときはこれ。files オプションには複数のファイル名を指定でき、その中で存在するファイルだけが読み込まれる。

my $cfg = Config::Any->load_files( {
    files => [qw!
        config.json
        config.yml
    !],
    use_ext => 1,
    flatten_to_hash => 1,
} );

Continue reading

日本語キーボードドライバで英語配列を使う【keyhac 編】

Windows で英語キーボードを使いたい!」では Autohotkey を使って、日本語キーボードドライバを使いながら英語配列にする技を書いた。今度は keyhac というソフトを見つけたので使ってみた。Autohotkey でうまく動かなかった SandS *1 や、XKeymacs であったいくつかの問題 *2 もこれで解決したっぽい。

まずは手始めに、使っている HHK を日本語キーボードドライバのまま、英語配列化する設定ファイルを書いた。他のキーボードで使う場合はキーコード等をいじる必要があるかもしれない。Python という言語は初めて使ったけどおもしろいねえ。簡潔で、初級者でも内容がすぐわかるという取っつきやすさは Perl と正反対だ。早速本を買ってきたので少し勉強してみよう。

Continue reading

ヤダヤダ演算子、他、Perl 5.12 の新機能

割と大きな変更が多かった Perl 5.10 と比べて Perl 5.12 の変更点は小粒。内部的なことはよくわからんので、文法上の新機能を(わかる範囲で)いくつか纏めてみた。

http://perldoc.jp/docs/perl/5.12.0/perl5120delta.pod

1. ヤダヤダ演算子

「未実装であること」を表す演算子「...」が追加された。Perl6 に載る予定の機能みたいだけど、このネーミングは何なんだw 実際に英語でも「Yada Yada Operator」である。以前のバージョンからある(そしてほとんど使われていない)範囲演算子「...」と紛らわしい。未実装な関数(ブロック)に対するプレースホルダとして使うことが狙いだ。こんな風にして使う。

my %funcs = (
    f1 => sub { "OK!" },
    f2 => sub { 0 .. 9 },  # 範囲演算子
    f3 => sub { 0 ... 9 }, # 範囲演算子
    f4 => sub { ... },     # ヤダヤダ演算子
);
for ( sort keys %funcs ) {
    print "$_ => ";
    eval { say $funcs{ $_ }->() };
    $@ and say $@;
}

出力

f1 => OK!
f2 => 0123456789
f3 => 0123456789
f4 => Unimplemented at F:\TEMP\VINCF.tmp line 5.

Continue reading

1 2 3

Index of all entries

Home > Archives > 2010年4月 Archive

Feeds
CC Licence

Creative Commons License

このブログはクリエイティブ・コモンズでライセンスされています。

W3C Validation

I ♥ validator

Return to page top