Get me outta here!

blog.delphinus.dev

vim とか Perl な話題とか……

Menu

Skip to content
  • プライバシーポリシー
  • perl
  • Vim
  • 映画
  • 投稿一覧
  • はじめに

Author Archives

delphinus

【Perl, Windows】使っているコーデックの一覧を得る

2010年2月14日 by delphinus

WMIを使ってコーデックの一覧を得るスクリプト。かなり煩雑で独自表記っぽくなってるけど、これもMooseの勉強の一環ってことで。コマンドプロンプトからperl codec.plとすると次のような結果が得られる。

C:\> perl codec.pl
No.1
Manufacturer: Microsoft Corporation
Name: C:\Windows\system32\MSRLE32.DLL
Path: \windows\system32\
Version: 6.1.7600.16490
Caption: c:\windows\system32\msrle32.dll
Drive: c:
Extension: dll
FileType: Application Extension
Group: Video
CreationDate: 2010/02/11 16:41:07
InstallDate: 2010/02/11 16:41:07
LastModified: 2009/12/19 18:47:46

No.2
Manufacturer: None
Name: C:\Windows\system32\FF_ACM.ACM
Path: \windows\system32\

    〜以下省略〜

表示する情報を制限したり、管理者権限のあるユーザー名とパスワードがわかれば、他のPCにアクセスしてリストを取り出すこともできる。

C:\> perl codec.pl --server コンピューター名 --user ユーザー名 --password パスワード --prop Name --prop Manufacturer
No.1
Name: C:\Windows\system32\MSRLE32.DLL
Manufacturer: Microsoft Corporation

No.2
Name: C:\Windows\system32\FF_VFW.DLL
Manufacturer: None

No.3
Name: C:\Windows\system32\FRAPSV64.DLL
Manufacturer: Beepa P/L

    〜以下省略〜

使っているテクニックについては、日を改めて説明しよう。(一度に書いたらネタが無くなるしね!)

Continue reading →

perl Windows WMI Leave a comment

VimでPerldocを引く(Unix系OS編)

2010年2月13日 by delphinus

100213-0001.png

Perlでごりごり書いてるときに、モジュールのドキュメントが読みたくなることはよくある。GNU Screen + Vimでやってるときは別のウィンドウで「perldoc モジュール名」でもいいのだが、GVimではそういうわけにも行かない。

そんなときに便利なのが次のプラグイン。

PERLDOC2 – Perldoc with sytnax highlighting in vim : vim online
http://www.vim.org/scripts/script.php?script_id=2171

インストールは以下の手順で行う。

  1. CPANからPod::Simple::Vimモジュールをインストール1
  2. ダウンロードしたzipファイルの中身を~/.vimに解凍する
  3. .vimrcに次のような記述を追加
" Perldoc表示用
let g:Perldoc_path=expand("$HOME")."/.vim/perldoc_cache/"

expand以下がキャッシュディレクトリだ。ディレクトリ作成したりするのが面倒なら、単に「expand("$TEMP")."/"」とだけ指定しておけばいいかもしれない。使用法はコマンドモードで

:Perldoc モジュール名

とするとドキュメントが引ける。これだけでも十分読みやすいのだが、いくつか不満点があるので改良した。

Continue reading →

Mac perl Unix系OS Vim Leave a comment

【Perl,Windows】コマンドプロンプトで色付き文字を使う

2010年2月12日 by delphinus

l_3e0774cbecb97d5f081d3f535740e885_orig_3576.png

Unix系OSのコンソールと比べると途方もなく貧弱に見えるWindowsのコマンドプロンプトだが、文字に色を付ける機能くらいはちゃんとある。これを、Unix系OSで書き慣れた書式のまま使えるWin32::Console::ANSIというモジュールがお気に入りだ。

Win32::Console::ANSI – search.cpan.org
http://search.cpan.org/~jlmorel/Win32-Console-ANSI-1.04/lib/Win32/Console/ANSI.pm

#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use Perl6::Say;
use Win32::Console::ANSI;
binmode STDOUT => ":raw :encoding(cp932)";
say "\e[1;32mこれは明るい緑です";
say "\e[41m背景を赤にしました";
say "\e[4m強調してみました";
say "\e[7m反転してみました";
say "\e[m元に戻りました";

別のモジュールと組み合わせることで、もう少しわかりやすい表記にもできる。

Term::ANSIColor – search.cpan.org
http://search.cpan.org/~rra/ANSIColor-3.00/ANSIColor.pm

#!/usr/bin/perl
use utf8;
use strict;
use warnings;
use Perl6::Say;
use Win32::Console::ANSI;
use Term::ANSIColor qw! :constants !;
binmode STDOUT => ":raw :encoding(cp932)";
say BOLD GREEN "これは明るい緑です";
say ON_RED "背景を赤にしました";
say UNDERSCORE "強調してみました";
say REVERSE "反転してみました";
say RESET "元に戻りました";

もっとも、このモジュール(Win32::Console::ANSI)は単なる色付き文字のためのモジュールではなく、ANSIコンソールをエミュレートするものだ。カーソル移動を可能にして画面の好きな場所に文字を出力できたりするらしいが、そこまでは試さなかった。

色の付け方も含めて、Unix系OSの解説がそのまま役に立つだろう。

Bash Prompt HOWTO: ANSI エスケープシーケンス: 色とカーソル操作
http://www.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO-5.html

perl Windows Leave a comment

【Vim】指定されたPerlモジュールのソースファイルを開く

2010年2月11日 by delphinus

Perlモジュール名を指定するとそのソース(.pmファイル)を開いてくれるコマンド。已にどっかにありそうな機能ではあるが、勉強のために作ってみた。

使い方

openPM.vimをpluginディレクトリ(Unix系なら~/.vim/plugins、Windowsなら$HOME/vimfiles/plguin)に、searchPM(WindowsはsearchPM.bat)をパスの通ったディレクトリに置き、実行権限を与える。そしてVimを起動し、

:OpenPM モジュール名

で、.pmファイルが開く。モジュール名が指定されなかった場合は、カーソル下にある文字列を認識して開く。

使用例

こんなファイルでカーソルをここにおいて、

100211-0001.png
「:O<Enter>」とすると、モジュールのソースが開く。

100211-0002.png

Continue reading →

perl Vim Leave a comment

Mac OS XにWebalizerをインストール → DNSCacheでハマる

2010年2月10日 by delphinus

webalizer.png

Mac OS XにWebalizerをインストールしてみた日記。とりあえずいつも通りMacPortsを使ってみる。

$ sudo port install webalizer

すると/opt/local/etc/webalizer.conf.sampleというサンプルの設定ファイルが出来ているので、それを見ながらオリジナルのファイルを作成。設定ファイル内のコメントと、ここら辺を見て書いた。

Webalizer について
http://www.sea-bird.org/doc/Solaris8/webalizer2.html
5-7. Webalizer-ログ解析ソフト: 自宅サーバプロジェクト
http://saba.nitty-gritty.org/400web/55_webalizer.html

設定内容は↑のリンク集そのまんまだが、注意すべきところは次の3行。

HTMLHead    <META http-equiv="content-type" content="text/html; charset=euc-jp">
DNSCache    /var/log/apache2/dns_cache.db
DNSChildren 10

まず1行目のHTMLHeadだが、これは作成される解析ページに追加する<meta>タグを指定する。メッセージを日本語にする(方法は下に書く)時には、このタグがないと文字化けしてしまう。

2,3行目はDNSキャッシュの指定だ。一度調べたホスト名をデータベース化しておくことで、解析ページ作成にかかる時間を短縮する。便利なオプションなので必ず指定しておきたい。……のだが、早速実行してみるとこれが問題だった。

Continue reading →

Apache Mac Unix系OS Leave a comment

DBIx::Classのクエリで関数を使う

2010年2月9日 by delphinus

備忘録。

UPDATE users SET password = MD5('mypass') WHERE id = 15;

idが15であるユーザーのパスワードに’mypass’をMD5で符号化して保存する。

みたいなSQL文をDBIx::Class(というか、SQL::Abstract)で表現するにはどうするか。この場合はこう書く。

$schema->resultset( "Users" )
    ->update( {
        password => \"MD5('mypass')",
        id => 15,
    } );

なんてことはない。文字列のリファレンスを値として与えるだけだ。更に応用として次のようなSQLだと、

SELECT CONCAT( 'ID', LPAD( id, 6, '0' ) ) AS member_id FROM users;

usersテーブルからidを取り出し、頭に'ID'を付けて6桁0埋めで取り出す。(id = 15なら'ID000015'となる)

こうなる。

my $it = $schema->resultset( "Users" )
    ->search( undef, {
        "+select" => [ \"CONCAT( 'ID', LPAD( id, 6, '0' ) )" ],
        "+as" => [ "member_id" ],
    } );

say $it->first->get_column( "member_id" );
# 「ID000015」などと表示される
MySQL perl Leave a comment

バッチファイルでPerlスクリプトを書く

2010年2月8日 by delphinus

Perlスクリプトによる実行ファイルを作るとき、Unix系OSでは拡張子が付けないことが多いのだが、Windowsでそれと同じことをやろうとしてもうまくいかない。Windowsではファイルの拡張子によってファイルタイプを判別するようになっているからだ。

Windowsで拡張子のないコマンド(勿論、バッチコマンドとかぶるコマンド名ではいけない)を実行しようとするとどうなるかというと、強制的に「.exe」「.com」「.bat」のどれかが補われる。Perlスクリプトの拡張子「.pl」のままじゃダメってことだ。

じゃあ拡張子「.bat」の中にPerlスクリプトを無理矢理埋め込めばいいんじゃないか?となるわけだ。

以下のファイルを「test.bat」という名前で保存して実行してみると……

#!/usr/bin/perl
use strict;
use warnings;
use Perl6::Say;
say "Hello World!";

Continue reading →

perl Windows Leave a comment

Post navigation

← Older posts
Newer posts →

アカウントでログイン

最近の投稿

  • Moves API のための Perl モジュールを作りました 2013年9月11日
  • ロボットは僕に言った「君は人間じゃない」 2013年7月30日
  • 人は一生に何回キーを叩くんだろう? 2013年7月29日
  • 【Vim】カラースキームを切り替えるたった一つのさえたやりかた 2013年7月23日
  • 【WordPress】「前の記事」「次の記事」のリンクにサムネイルを付ける 2013年7月17日
  • 【Powerline】Git branch セグメントが Mac OS X で動かない? 2013年7月16日
  • 【Vim】80桁教信者の憂鬱 その2(ホットキーでトグル、他) 2013年6月24日
  • 【vim】80桁教信者の憂鬱 2013年6月20日
  • 【MacVim】メニューバーでアイコンが見えない! 2013年6月19日
  • 【unite.vim】set_substitute_pattern は衰退しました(その2) 2013年6月18日
Proudly powered by WordPress | Theme: Something Fishy by Caroline Moore.
blog.delphinus.dev
Proudly powered by WordPress | Theme: Something Fishy by Caroline Moore.