もう、プログラムなんてスクラッチから書く気がしませんよ

in

「まるごとPerl!」という本をパラパラめくっていたらGD::Barcodeなるモジュールを発見。仕事でバーコードを出力したいというニーズがけっこうあって、VC++で自作したモジュールを使ったりエクセルExcelやらAccessでmsbcode9.ocxを使っていたのですがPerlでお手軽にバーコードが作成できるならこれも1つのテとしてストックしておくに限ると思い早々にトライ。

心配は、GDの名前が示すとおりlibgd関連のライブラリが揃っていないと動かないのではないかという懸念。一応、仕事でもOSX/RedHat環境があるので最終的にはこちらで作成してもいいのですが、やっぱり手元のWin/ActivePerl-5.10環境で動かしたいというのが本音。

ppmはさすがにCPANほどモジュールが揃っていないのでそこが気に掛かるところ。おそるおそる

ppm install GD::Barcode

としてみると一応成功。依存関係も解決してくれたことを期待しつつテストコード

use strict;
use GD::Barcode;

binmode (STDOUT);
print GD::Barcode->new('EAN13','1234567890123')->plot()->png();

(たったこれだけ!いままでの苦労はなんだったんだ!)を実行してみるも、案の定GD::Fontがないよみたいなメッセージ。

あきらめてGD系のパッケージをインストールしようとおもったのだけれど検索してみるとどうもそれらしいのがないみたい。OSXかRedHatでやるかと半ばあきらめつつ一応ググってみたらありました。ppdってサードパーティからも色々あるんですねぇ。

ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/GD.ppd

前にも書いたけれどperlコミュニティの広がりはちょっと驚き。なにかしようと思うと大抵のものはもう用意されているような気がしますよ。これまでExcel出力とかVC++で面倒なことやっていたのもSpreadsheet::WriteExcelでチョロっとできちゃうし。他にも便利そうなライブラリがてんこ盛り。もう、プログラムなんてスクラッチから書く気がしませんよ。

W400生産終了だって

いつかW400買おうなんて思っていたのだが何気なくKAWASAKIのページをみていたらこの有様だ。251-400クラスのロードバイクが全滅。

kawasaki オートバイ

今のオートバイ事情ってこんなもんなのかねぇ。ちょっと寂しい。最後の砦はSRかな。これだけはなくなって欲しくないよ。

perlリファレンスのおどろおどろしい世界

in

仕事でちょっとしたアドレス帳的なデータを扱う必要があって、勉強中のperlでユーザIDをキーにメールアドレスと名前の配列を値としたハッシュを作ろうと思ったのですがいきなり躓きました。単に、CSVからデータを読み込んで突っ込むだけなので大したことない処理だとタカを括ったのですが...最初に書いたのが以下のコード。

Codaがv1.6にバージョンアップ プラグイン機能が追加された

in

Codaがバージョンアップしてます。新しくプラグインの追加が可能になっています。Objective-C用のAPIも公開されていますが、Plug-in Creatorを使って好きなスクリプト言語でプラグインを作成できる機能がウレシイです。

clippy ホットキーカスタマイズ対応しました

やりかけも気持ちが悪いので体調不良にもめげず一気にホットキー設定まで実装しました。

ホットキー設定

ホットキーに関しては最初から、HotKeyLib3の存在をチェックしてあったので迷わずこのライブラリを使いました。使ったのはUIインタフェースの部分だけですが、それだけでもずいぶんと手間を省くことができ短期間で完了することができました。ほんとフレームワークとかライブラリとか公開している方が大勢いて助かります。いつか、僕も受けた成果を還元したいと思う次第ではありますが何時になるやら...

objc-appscriptフレームワークはいたれりつくせり

(続き)

で、肝心の使い方なんですがobjc-appscript FrameworkではAppleScript対応アプリを制御するためのGlueクラスが必要になります。このglueクラス作成のためのツールが、binディレクトリに収納されてている、osaglueになります。このosaglueの中身はpythonスクリプトで実行にはpy-appscript/py-osaterminologyのインストールが必要です。objc-appscript/installページにあるとおり最新版を取得してインストールします。これで準備完了。例えば、Mail.appのglueクラスを作成するには、

AppleScriptは敗北か!?

clippyを公開したら思いのほかダウンロードしてくれた人が多くて、ビックリしました。自分としては、ホットキーが固定であること・自動ペーストができないという中途半端な状態でのアップだったので恐れ入るばかりです。とりあえず、この2つのうち自動ペーストについて現在アップデート中です。

リストコントロールのTIPSあれこれ

昨日は久しぶりにMFCでコードを書きました。データを一覧表示するのにリストコントロールのレポート機能を使ったのですが、使い方をもうすっかり忘れてしまっていてずいぶん時間をかけてしまいました。僕がやることなんて大抵いつも同じなのでテンプレート用サンプルを作成しておけば、後々あちこちのプロジェクトを引っかき回すこともないかと考え、テンプレート的サンプルプログラムを作成しました。

QTClip「もどき」(=clippy)を公開します

会社でQTClipという便利なクリップボードユーティリティを使っているのですが、自宅のマックでも欲しくて作りました。この手のアプリは他にもあるんでいわゆる”再発明”ってことになるんですが、ちょこちょこ作っているのが楽しかったので....

アイディア・仕様は完全QTClipのパクリです(^^ゞ。が、まあ実装は完全オリジナルなのでお許しください。また、QTClipと違うところは、

13区フォントの違い

JISコードの9〜15区の未定義領域にはOSが独自の拡張文字を割り当てていることで有名で、特に13区についてはWindowsでは「まるいち」とか「ローマ数字」なんかを割り当てていて、MacOSXでは(日)になったり(特)になったりちょくちょくと痛い目にあっているわけですが昨日調べたいコードがあってATOKの文字パレットをみていたらなんと13区にWindowsと同じ文字が割り当てられていることに気がつきました!

ヒラギノコード表

Smultron 文字コード判定 2022-JPの追加。

メール関連のテキストを扱う必要があってSmultronでテキストを開こうとしたら予想どおりの文字化け。これまで文字コードの判定には何度か手を入れてきたけれど、ISO-2022-JPは特に何もしてこなかったので、今回はISO-2022-JP対応コードを書いてみました。

Smultron本体のエンコード判定方法の流れはv10.4で追加された新しいメソッド、NSString stringWithContentsOfFile:usedEncoding error:を使うように変わっていて、ここで変換してうまくいかなければguessEncodingFromData:textDataを使うように変更になっていますが、このメソッドSJIS/EUCがダメでちょっとつかえません。

string = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:&error];
if (error != nil || string == nil) {
  if (textData == nil) {
    textData = [[NSData alloc] initWithContentsOfFile:path];
  }
  encoding = [SMLText guessEncodingFromData:textData];
  if (encoding == 0 || encoding == -1) {
    encoding = [[SMLDefaults valueForKey:@"EncodingsPopUp"] integerValue];
  }
}

なので、このメソッドの使用を後回しにしてこれまでどおりguessEncodingFromData:textDataを優先してエンコードを判定、まず判定したエンコードを用いて変換してみる。それでダメな場合にこちらを使うという流れに修正しました。

PSFeed作成直後にプロパティの値が参照できない

in

PubSubフレームワークを使ってちょっとしたツールを作成していますが、PSFeedの更新タイミングが今ひとつはっきりしません。以下のようにURLを指定してPSFeedオブジェクトを作成したのですが、

PSClient* appclient = [PSClient applicationClient];
PSFeed* feed = [appclient addFeedWithURL:[NSURL URLWithString:url]];
NSLog(@"title(%@) URL:(%@)",[feed title],[[feed URL] absoluteURL]);

この時点でURL以外の(例えばtitle)プロパティが取得できません。

Mac Dev Centerがわかりにくい

in

仕事でXCode2.xが必要になって探したのだがなかなか見つからない。どこから行っても最終的にはXCode3.xへたどり着いてしまう。あぁ、また「もうTigerなんか止めなよ」っていうAppleの暗示かと思ったのですがありました。

ClamXavがアップデートされました。エンジンもね。

in

ClamXavがアップデートされています。ClamAVエンジンもv0.93.3にアップデートされているので、やっと"エンジンが古いぜ"などと、うっとうしい警告が表示されなくなりました。

実は、ここ数日ClamAVのmakeを試みていたのですがgccにバグがあるとか言われて頓挫。仕方がないのでgcc-3.3まで戻してみたりして色々悩んでいたんですがうまくmakeできなくて...gcc-3.3のインストール自体がうまくいっていないのか、

Coda v1.5リリース。Subversion機能が統合された!

in

Codaがバージョンアップされたました。Subversionが統合されたとのことで個人的にはかなりウレシイ。skEditの軽さとSubversion統合機能でこれまでその日の気分で2つのソフトを使い分けしていたのですが、今回のSubversion機能追加でCodaへの依存度が高ままるかも。

コンテンツの配信