Softwareの最近のブログ記事

antipopさんのApp::SocialSKKをさっそくインストールして使ってみた。
これは素晴しすぎる!

使えるまでを軽く説明しておく(Macの場合)。

まずインストール。

# cpan App::SocialSKK
この際 socialskk.pl も同時にインストールされます。
次に $HOME/.socialskk に

plugins:
  - name: SocialIME
  - name: HatenaBookmark
  - name: Wikipedia
こんな感じに書く。
あとはsocialskk.plを起動するだけでApp::SocialSKK使える状態になります。

AquaSKK側での設定は「環境設定」の「辞書」タブで「+」を押して辞書を追加し、辞書の種類を「外部 skkserv 辞書」にし、場所を「localhost:1179」にするだけです。
(ちなみにいままでMacではMacUIMを使っていたのですが、現状のMacUIMだとskkservとskkの辞書を同時に設定できないっぽいので2年ぶりぐらいにAquaSKKに乗り換えました。そしたらAquaSKKがめっちゃ進化していてびびった)

とりあえず「ほってんとり」って書いて変換したら

料理のススメ:これから料理をしようと思っているひとへ - Money does not hurt your heart
ってでた。はてブからうまく取れてるようですね。
まぁ、これはネタとして。

その他にもSocialIMEには郵便番号とかも登録されてるっぽくて、日本語入力モードで「/0000000」(0000000はちゃんとした郵便番号ね)と打って変換を押すとその郵便番号の住所が出てきました(昔は郵便番号データベースをファイルに落したりしてたのを思い出した)。

っていうか実はSocialIMEに郵便番号が登録されてること知らなくてApp::SocialSKK::Plugin::ZipCodeとか作っちまった。悔しい...。

悔しいからソースを公開しておく。

package App::SocialSKK::Plugin::ZipCode;

use strict;
use warnings;
use base qw( App::SocialSKK::Plugin );
use XML::Simple ();
use URI;
use Encode ();

sub get_candidates {
    my ($self, $text) = @_;
    return if !defined $text || $text !~ /^\d{7}$/;

    my $uri = URI->new( 'http://zip.cgis.biz/xml/zip.php' );
    $uri->query_form( zn => $text );
    my $res = $self->ua->get( $uri->as_string );
    if ($res->is_success) {
        eval {
            my $xml = XML::Simple::XMLin(
                $res->content, ValueAttr => [ qw(state_kana city_kana address_kana company_kana
                                                 state city address company) ]
            );
            my @candidates;
            for my $seq ( [ 4..7 ], [ 0..3 ] ) {
                my $val = join( '', map {
                    my $v = $xml->{ ADDRESS_value }->{ value }->[ $_ ];
                    $v ne 'none' ? $v : '';
                } @$seq );
                push @candidates, Encode::encode(
                    'euc-jp',
                    Encode::is_utf8( $val ) ? $val : Encode::decode( 'utf8', $val ),
                );
            }
            return @candidates;
        };
    }
}

1;

__END__

=head1 NAME

App::SocialSKK::Plugin::ZipCode - Retrieves Candidates from Zip Code API

=head1 SYNOPSIS

  # Add a line like below into your .socialskk:
  plugins:
    - name: ZipCode

=head1 DESCRIPTION

App::SocialSKK::Plugin::ZipCode performs retrieval of
candidates from Zip Code API

=head1 SEE ALSO

=over 4

=item * Zip Code API

http://zip.cgis.biz/

=back

=head1 AUTHOR

Yoshiki Kurihara E<lt>kurihara __at__ cpan.orgE<gt>

あ、本題を忘れそうになってしまった。
socialskk.plをログインしたら毎回起動するのはめんどうなのでlaunchdで起動するようにしといた。これはMac OS X 10.5.6でしか動作確認してませんのであしからず。

設定は簡単。$HOME/Library/LaunchAgents/socialskk.plist ってファイルを作って下記の内容にで保存したあとMacを再起動すると socialskk.pl が自動で起動しているはず。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>socialskk</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/bin/socialskk.pl</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/dev/null</string>
        <key>StandardOutPath</key>
        <string>/dev/null</string>
</dict>
</plist>


今日、突然QuickSilverが落ちるようになってしまいました。

具体的にどう落ちるようになったかというと、自分はログイン時にQuickSilverを起動するようにしているのですが、ログインにQuickSilverが一旦起動して直後にアラートを出して落ちてしまいます。

しかたがないので再度手動で起動してみるも1分もしないうちに、またアラートを出して落ちてしまいます。

ちなみにConsoleを見ると

[0x0-0x48048].com.blacktree.Quicksilver[341] Quicksilver(341,0xa021ffa0) malloc: *** mmap(size=1645342720) failed (error code=12)
[0x0-0x48048].com.blacktree.Quicksilver[341] *** error: can't allocate region
[0x0-0x48048].com.blacktree.Quicksilver[341] *** set a breakpoint in malloc_error_break to debug

こんなエラーです。

で、とりあえずググってみたら解決方法が見付かりました。このGoogle CodeのQuickSilverのIssue Trackerに書いてありました。

結論としてはQuickSilverのPasteboard History用のファイルに巨大なデータが入ってしまっていたからで、下記のように $HOME/Library/Application Support/Quicksilver/Shelves/QSPasteboardHistory.qsshelf を削除すれば解決します。

% cd ~/Library/Application\ Support/Quicksilver/Shelves/
% ls -lh QSPasteboardHistory.qsshelf
-rw-r--r--  1 username  staff   785M Dec  5 14:50 QSPasteboardHistory.qsshelf

ちなみに自分の QSPasteboardHistory.qsshelf の容量を見てみたら785MBもありました。ひょえー。なんでこんなに貯まってたのかわかりませんがものすごい量ですね。さらにさらに中身を見たらぜんぶテキストデータだったので、どんだけ貯まってるんだって感じです。

ということで、これを削除してQuickSilverを起動しなおしたら落ちることもなくなりました。

必ずしもこの方法で直るとは言えませんが、1つの方法としてメモしておきます。

こないだ書いた「Subversionのsvn:externalsというプロパティ」の続きです。

先日あるプロジェクトにさっそくこのsvn:externalsを設定したてみたのですが、1つのディレクトリに他の2つのプロジェクトを設定しようとしてはまりました。

先の記事ではコマンドラインベースの設定方法だったため、実は2つのプロジェクトを同時に設定することが出来ないということに気付きました(ごにょごにょやればできそうですが)。

それでどうやるのかなぁと調べてみたら別に難しいことはなく、前回「svn propset」とやっていたところを以下のように「svn propedit」というコマンドにしてやることでプロパティを複数行編集できるようになります。
% svn propedit svn:externals extlib
こうするとSVN_EDITOR、VISUAL、EDITORなどの環境変数で設定されたエディタが立ち上がるので、そこに
otherproj01 http://svn.example.com/repos/otherproj01/trunk
otherproj02 http://svn.example.com/repos/otherproj02/trunk
などと書いて保存することで複数のプロジェクトを設定できるようになります。
上記の場合はotherproj01とotherproj02という2つのプロジェクトをsvn:externalsプロパティに設定することになります。

なお、前回書くのを忘れたのですがsvn propsetやsvn propeditをした際は当然それをコミットする必要があります。
プロパティを設定したらsvn commitを忘れずに。

今までは、あるプロジェクトで複数の外部モジュールを使っていたときは個別にsvn updateして更新を確かめたりと面倒な作業があったのですが、この設定を知ってからはそんなことをする必要もなくなり気苦労の1つが減った感じです。

Fetching external item into 'path/to/example'
Updated external to revision 12345.
Subversionを使ってて「svn update」するとよく上記のようなのがでることがあるんだけど、今までどっか別のライブラリ取ってきてるんだろうなぐらいのことはわかってたんだけど、ちゃんと知らなかったので調べてみた。

さっそぐググってみると、これはSubversionのsvn:externalsというプロパティの機能らしく、たとえば自分のプロジェクトのリポジトリ内で他のプロジェクトのライブラリを使いまわしたいときなどに、このプロパティを設定しておくだけで、あたかも自分のプロジェクトの中にあるライブラリのようにsvn updateコマンドで他のプロジェクトのライブラリを更新してくれるというものらしい

で、具体的な使い方なんだけど、たとえば自分のプロジェクトのextlib/の中にotherprojという名前でhttp://svn.example.com/repos/otherproj/trunkをひもづけたいと思ったら、
% svn propset svn:externals 'otherproj http://svn.example.com/repos/otherproj/trunk' extlib
property 'svn:externals' set on 'extlib'
とかやればいい。この状態でsvn updateするとextlib/otherprojが更新されるようになります。

このプロパティを消すには以下のようにすればOK。
% svn propdel svn:externals extlib
property 'svn:externals' deleted from 'extlib'.
ちなみに、そのディレクトリにどんなプロパティが設定されているか確認したければ以下のようにproplistコマンドでわかります。
% svn proplist -v extlib
Properties on 'extlib':
  svn:externals : otherproj http://svn.example.com/repos/otherproj/trunk

PicLensっていういろいろな画像サイトでの閲覧を楽にできるソフトがあって、Safari用にインストールしてみたのですが動かない!

いろいろ調べた結果、Safari3.1では動かないということがわかりました。しょんぼり。

Safariはあきらめて、Firefoxで使うことにしました。

LDRizeをSafariのGreaseKitで使っています。
便利ですよね。

LDRと同様にvキーでやれば別のタブで開くのかと思いきや同じタブ内で開いてしまうので、なんだろーと思ってたんだけど、さっきoキーで別タブで開くことを知りました。

常識ですか?
LimeChat for OSXがバージョンアップしたみたい。こないだの記事で書いたCmd+wの挙動も治ってるようなので、こちらを使うことにしました。

いまのところほぼ満足なんですが、1つだけ要望があるとすれば「チャンネルリストのソート」をしたいなと思います。
もし自分で実装できるようなら実装して、よさげだったらパッチを送ろうかと思ったりしてます。

ソースをみてみよーっと。
MacにSwitchしてからIRCソフトはずっとLimeChatを使っています。

なぜLimeChatかというと、そのIFがemacsのIRCソフトと似ていて、自分の理想のIFだったからです。

でも1つだけ難があって、ここにある最新の0.17だとCmd+wを押したとたんにアクティブなチャンネルをpartしてしまうという挙動になっていました。
他のアプリのウィンドウを調子にのってばしばし閉じているときにたまたまLimeChatにフォーカスがあたった途端にその時見ていたチャンネルをpartしてしまうといういやんな仕様でした。

で、今日たまたま#yokohama.pm@freenodeでそれを言ってみたところ、世界のmiyagawaさんが「最新版ならアラートでるよ」ってことで、さっそく最新版をもってこようと思ったのですが、どうやらダウンロードできる形では置いてないらしく、gitで最新のソースを落してきて、それをビルドしたもので試してみたら無事アラートが出るようになりました。

協力してくれたsakonさんにも感謝です。
ありがとうございました。

miyagawa++
sakon++

それにしてもRubyCocoaは面白そうだなぁと思いました。
今度なにか作ってみよ。
Firefox3 beta5が2日にリリースされました。

Mac OS Xで試しにダウンロードしてみて使ってみたのですが描画が2に比べて早いような気がします。
あくまで体感ですが。

今2で使ってるアドオンの多くが3では互換じゃなかったので、それを外してるせいかなと思い、
同じアドオンにして試してみたのですが、やっぱり若干3の方が早い感じです。

もう少し(6月ぐらい?)経ったら正式リリースすると思うので、それまでbeta5を使いつつ待っていようと思います。

simple-hatena-modeみたいにemacsでMTに記事を書きたいと思って探してみたらmapaeというのをみつけたので早速インストールしてみた。

それなりに動いてるんだけど、投稿したりするためのPerlのソースがちょっとごちゃごちゃしてて拡張性がなさげ…。

検索

広告

OpenID対応しています OpenIDについて
Powered by Movable Type 4.22-ja