.vimrcのmap/noremap

.vimrcにキーマップを設定することができます
今までmapとnoremapの違いをあまり意識して使えていなかったのでメモしておきます。

map 入力値 代わりに呼び出される処理

という表現で入力される。

map 代わりに呼び出される処理の内容にmap設定がされている場合は再帰的にマッピングする
noremap 代わりに呼び出される処理の内容が呼び出される


参考URL:
Vim documentation: map

Sys::Syslogを使ってロギング

PerlでSyslogへの出力を行いたい時は、Sys::Syslogを使うと簡単に出力できます。

出力先のファイルは/etc/syslog.confにて設定を行います。以下を追加しました。local6というファシリティを利用する前提。syslogはlocal0からlocal7まで自由に設定できるようになっているので6というのは適宜変更してください。

local6.*                    /var/log/{ログファイル名}

confを変更したときは、syslogdの再起動が必要です。

$ ps axuw | grep [s]yslogd
$ kill -HUP {syslogdのpid}

で再起動をします。

以下のようにログを出力します。

#!/usr/bin/perl
use Sys::Syslog qw(:DEFAULT setlogsock);

#Unixドメインソケットを通じて出力する
setlogsock 'unix';

#ログ出力元, 出力方式, ファシリティ
openlog(__FILE__, 'pid', 'local6');

#優先度, ログメッセージ
syslog('notice', 'message');

closelog();

syslog経由でログを出力しておくと、ネットワークを通じて他のサーバにログを送信するなどの設定が簡単にできるので便利ですね。

MENTAを使ってみる

MENTAを使ってみた。簡単にセットアップできていい感じです。
app/controller以下のフォルダ階層を3階層目以上深く掘って.plファイルを作成しその中でrun関数を定義して動作確認をしたところ以下のようなエラーが発生した。

Might be a runaway multi-line // string starting on line 3

フォルダ階層を1階層もしくは2階層に上げたところ問題なく動作したのでMENTAのバグだろうか?
引き続き使ってみる。

  • apachehttpd.confに以下のような記述を入れる。(menta.cgiを見せたくない場合はrewrite ruleでよしなに設定する方がよいと思う。)
    <Directory /var/www/html/menta>
        DirectoryIndex menta.cgi
        Options ExecCGI
        <FilesMatch "(\.(mt|p[lm])|~)$">
            Order deny,allow
            Deny from All
        </FilesMatch>
    </Directory>
  • menta.cgiの中に直接プログラムを記述しない。保守性の観点からmenta.cgiは変更の可能性もあるため。
  • 本番環境におく前にはdemoなどのチュートリアルフォルダを削除する必要がある
  • デフォルトでは公開ディレクトリにsqliteファイルがおかれるような設定になっているので非公開フォルダに移した方がよい。
  • app/controller以下にURL構成に従って.mtファイルもしくは.plファイルを配置していく
  • 簡単なページであれば.mtファイルでよいと思うが、.plファイルにロジックを記述してrender関数でテンプレート処理を任せる方が常に一方向の呼び出しとなってよいと思う。
  • .mtファイル内からはpluginフォルダに記述されたメソッドを呼び出すことができる。
  • .plファイル内でuse MENTA::Controller;を記述しておくと、いろいろ便利な関数が呼び出せる。
escape_html unescape_html raw_string config render param mobile_agent uri_for static_file_path docroot AUTOLOAD redirect is_post_request render_and_print redirect finalize upload current_url

ATOK 定額制サービス入りました

ずっとアップデートが保証されているということだったので入りました。
http://www.justsystems.com/jp/products/atok_teigaku/
ソフトウェアをこうやって定額ランニングビジネスに変換するのはマイクロソフトなどもあまり成功できていないので、ぜひジャストシステムさんにはがんばってほしいですね。

それにしてもこのレベルのソフトウェアを月額300円ってお手頃だと思います。

ちなみにThunderbirdを使っているとCtrl+Shift+Rで全員返信しようとすると、ATOKのショートカットキーとバッティングするので、ATOKプロパティからキーカスタマイズでCtrl+Shift+Rを削除しました。