Excelを読むにはPerlとPHPのどちらが便利?

Excelのデータを読む必要が出てきました。
稼動しているシステムでは表向きはPHP、内部はほぼPerlという、
純粋なPHPプログラマにはお手上げのシステムです。
もちろん私はPerlerなので、痛くも痒くもありませんが。

さて、例によってPerlとPHPの間にゴングが鳴らされました。
Perlはお決まりのものがあるので置いといて、PHPのPEARでExcelを探してみると・・・

  1. Spreadsheet_Excel_Writer: Package for generating Excel spreadsheets
  2. Structures_DataGrid_DataSource_Excel: DataSource driver using Excel spreadsheets
  3. Structures_DataGrid_Renderer_XLS: Renderer driver using PEAR::Spreadsheet_Excel_Writer

この3つがヒットしました。
ちなみに、PECLには登録なしでした。
なんかいまいちっぽいので、PEARに登録の無いものを探してみることに。

PHPExcelなるものを発見しました。
このライブラリを取り上げているサイトは多いけど、
実際に使っていたり、サンプルコードを掲示しているサイトが一つも無い・・・
Documentを読んだ限りでは多機能だとわかりますが、
本当に動くかどうか検証されていないものをシステムに入れるわけには行きません。

やはり使い慣れたPerlモジュール「Spreadsheet::ParseExcel」の出番ですか・・・

CentOS5.2にWebminをインストールする

CentOS5.2が基本的な構成でインストールを完了したところから始めます。

CentOS5.2はopenssl、PerlのNet::SSLeayモジュールが既にインストール済みなので、Webminのパッケージをダウンロードしてこればいい。

http://jp.webmin.com/download」にある上から2つ目の「webmin-1.430-1.noarch.rpm」を保存
 ↓
端末で保存した場所に移動
(ルート権限でデスクトップに保存した場合は# cd /root/Desktop
 ↓
rpm -Uvh webmin-1.430-1.noarch.rpmでインストール完了
 ↓
ブラウザで「https:・・127.0.0.1:10000/」にアクセス
 ↓
ユーザーとパスを入力してWebminにログイン
 ↓
左フレームーの「Webmin > Webmin Configration」
 ↓
右フレームの「Language」
 ↓
「Display in language」のメニューを「Japanese(JA_JP.UTF-8)」に選択
 ↓
「Change Language」ボタンで確定
 ↓
ブラウザを更新

以上で全て日本語に変わる。
めでたしめでたし。

SSL証明書インストールに関するメモ

Windows Server(IIS)で使っていたSSL証明書を、Apacheに移し変える作業が必要になっていましたが、なかなか解決の糸口が見つからず2ヶ月ぐらい経過してしまいました。SSL自体の理屈はシスアドでも個人情報保護士でも必要な知識なので理解はしてますが、実際の設定となると上手くいかないものです。いろいろ調べてみても、どのサイトも説明がまちまちでなかなか理解に苦しみました。ここではメモを書き起こすことで、頭に叩き込むことにしました。

まず、拡張子に惑わされないこと。当たり前ですが、拡張子がファイルの内容を証明できるわけではありません。解説サイトに出てくる拡張子には、pem、key、cer、crtというものがありました。SSLも歴史が古いですから、きちんと取り決めがあると思い込んでいたのが最初の間違いです。

つぎに、必要なファイルの呼び方がまちまちなこと。サーバーにインストールする証明書は、秘密鍵です。外部に洩らすような管理をしてはいけません。この秘密鍵は、ほぼ秘密鍵と呼ばれていますが、サイトによっては証明書とだけ呼ばれていることもあります。(ちなみにこのサイトでは秘密鍵という説明が全然無く、どこかのサイトをパクったものの、バレないように編集したら肝心な事が抜けてしまったのではないでしょうか。)

そして、CSRを元に認証局より発行されるのが公開鍵です。先ほどの秘密鍵と公開鍵が対になって暗号化通信が成立します。この公開鍵はサーバー証明書と呼ばれたり、サーバーID(Verisign)と呼ばれています。SSLの解説では、基本的にこの2つについて説明されています。なので、文章上の知識はここまでが限界です。

そして、今でもよく分かっていないのが中間証明書。CA証明書などと呼ばれています。証明をしてもらうための仲介的な存在らしいです。紹介状とでも言いましょうか。もうちょっと正確に知識を吸収するべきなのでしょう。善処します。

秘密鍵
このファイル名はおおよそ*.keyとなっています。一部サイトでは*.pemや*.key.pemとされています。秘密鍵かどうかを確認するには、ファイルの内容を確認します。「-----BEGIN RSA PRIVATE KEY-----」で始まり、「----END RSA PRIVATE KEY-----」で終わります。場合によっては「RSA」が無いものもあるようです。「PRIVATE KEY」という文字列があればほぼ間違いないでしょう。
CSRファイル
認証局に認証してもらうために提出するファイルです。秘密鍵を基にした(秘密鍵そのものとある解説サイトもあるけど、秘密鍵を送ると秘密鍵の意味が無いので間違いと思われ)情報と、サーバーの管理者情報から生成されたファイルは、*.csrとなっています。一部サイトでは*.csr.pemやcsr.pemとされています。CSRファイルかどうかを確認するには、ファイルの内容を確認します。「-----BEGIN CERTIFICATE REQUEST-----」で始まり、「-----END CERTIFICATE REQUEST-----」で終わります。もしくは「-----BEGIN NEW CERTIFICATE REQUEST-----」で始まり、「-----END NEW CERTIFICATE REQUEST-----」で終わります。「CERTIFICATE REQUEST」という文字列があればほぼ間違いないでしょう。
公開鍵
認証局より送り返されてくるファイルです。COMODOの場合はサーバ証明書と中間証明書が書庫ファイルになってメールに添付されます。Verisignの場合はメールの本文に挿入されるので、新規にファイルを作成しコピペして保存することになります。このファイルの保存名が*.cerや*.crtといったものから、certificate.txtなど、ファイルの内容を連想するにも困難なものまであります。COMODOの場合は中間証明書が*.ca-bundleでした。ファイルとしては公開鍵なので、内容を確認すると「-----BEGIN CERTIFICATE-----」で始まり、「-----END CERTIFICATE-----」で終わります。公開鍵に関しては見て回ったサイトの中ではどれも一致していました。
ルート証明書
これは認証局を証明するためのファイルです。公的な認証局ではなく、独自に証明する場合はオレオレ証明書などと呼ばれます。基本的にはブラウザに既にインストールされています。ここではオレオレ証明書については説明しません。一部サイトではサーバ証明書とルート証明書が混同して解説されています。このようなサイトもパクっ(以下略)。このファイルは公開鍵なので、上記公開鍵と同じ「-----BEGIN CERTIFICATE-----」で始まり、「-----END CERTIFICATE-----」で終わります。

ネトゲアンテナが新システムに移行しました

自分用のツールとして開発してからはや3年。
ローカルでの処理が前提だったため、HTML書き出しをFTPでアップするというトンデモシステムのまま2年近く続いていました。
しかし、いいかげんどうにかしなければということで、結構前から弄ってはいたのですが、
何かと忙しく、路頭に迷いそうにもなりながらも改修を続けていました。
テストを何度か行い、大きな問題はなさそうなので、いつ切り替えようかと思っていましたが、
まとまった時間ができたので更新することにしました。

完全以降までは時間がかかりますが、
これからもネトゲアンテナをごひいきにしていただきますようお願いいたしますm(_ _)m

なぜだかいつもフルスクラッチ

このサイトは最近WordPressに移行したので、いろいろと楽(だが面倒)なのですが、
ここ以外の趣味ページやお仕事ページはなぜか一から書き起こしてます。
テンプレートが使えないような独自のものがほとんどだからなのですが、
この仕事量を普通に金額にしたら相当な額ですね。
フルスクラッチとはいえ、自分用のテンプレートがあるのですが、
一から作った完全オリジナル。
いつか限界が来ないことを祈りつつ(それなりに柔軟に作ってはいますが)
今日も980円のUSBキーボードをこれでもかと叩きまくる。

Flash MXにはマイターリミットが無い

Flashに図形を描く機能を持たせたツールを作ってますが、
PostScriptにはあるはずの機能が無いことに気がつきました。
そう、線をつなげた場合の角のパラメータ、マイターリミット。
検索してみたらAdobeのサイトに行き着いたのでlistStyleの項目を読んでいくと、
このパラメータを指定できるのはFlash8からということで、少々困ったことに。

う~ん、角は尖って欲しいんだけどなぁ・・・

ActionScript2には円を描く関数が無い?

今頃にFlash MXを引っ張り出してActionScriptの勉強してます。
図形で円を動的に描こうと思って調べているとdrawCircleなる関数があるという。
しかしよくよく調べていくと、この関数が使えるのはActionScript3からだとか。
わざわざ数式を用意するのと、インスタンスを使うのではどちらが軽いんだろう。
Flash9は高いしなぁ~

お助けツールに罫線文字登場

文字で絵を表示する文化がアスキーアート、
罫線で文字を表示するのは・・・罫線文字?
ということで、罫線文字に変換するサービスを公開しました。
変換できる文字は英数字ぐらいですが、結構使えるかもしれません。
penlaboと小文字で書くとこうなります。

    ┏━┓  ┏┓    ┏┓
┏━┫━┣━┫┣━┓┃┗┳━┓
┃┃┃━┫┃┃┃┃┗┫┃┃┃┃
┃┏┻━┻┻┻┻━━┻━┻━┛
┗┛

PENLABOと大文字で書くとこうなります。

┏━┳━┳━┳┳┓┏━┳━┓┏━━┓
┃┃┃━┫  ┃┃┃┃┃┃━┗┫┏┓┃
┃┏┫━┫┃  ┃┗┫  ┃━━┃┗┛┃
┗┛┗━┻┻━┻━┻┻┻━━┻━━┛

Flashでカーソルの座標を得る

Flashを始めました。
JavaScriptで処理するにも、いろいろと限界もありますし、
ActionScriptを利用すれば非常に簡単に実行できることもあったりします。
クロスブラウザを気にしなくていいのが最大の利点でしょうか。

さて、基本となるカーソルの座標取得方法です。

_root.onMouseMove = function(){
  trace( _root._xmouse + '/' + _root._ymouse );
}

window.onunloadでハマる

ブラウザの履歴操作をイベントとして捕捉しようと調べていましたが、
ブラウザによってwindow.onunloadの挙動が微妙に違うようです。

window.onunload対応表(動作確認:Windows Vista)
ブラウザ 戻る 更新 進む 閉じる(タブ) 閉じる(ウィンドウ)
Internet Explorer 7.0
Firefox 2.0
(lolifox0.3.6)
Firefox 3.0
Opera 9.51 × ×
(ブラウザの進む機能は無効)
× ×
Google Chrome ベータ

細かい仕様は確認していませんが、Operaはスクリプターにとってはあまり歓迎されない実装をしているようです。

(※この比較表は、ブラウザの履歴機能と、HTML内のち通常リンクで検証しており、historyオブジェクトによるページ推移は考慮されていません。)