【Delphiの最新記事】
2008年12月18日
FreeDBからCD情報を取得するためのDISCID算出
ウルトラご無沙汰。
WindowsMediaPlayerなどでは、突っ込んだCDの内容を勝手に調べて、そのアルバム名とかアーティスト情報とか、曲名とかを表示してくれる。これはもちろんCDにその内容が書き込まれているわけではなくて、CDに収録された曲の長さと数の情報から、Internetを通して情報を取得し、それを表示するのだ。
自作のアプリケーションに、この、CDから情報を取得する機能をつけようと思った。
CDをPCに突っ込んで、Explorerで内容を見ると、Track01.cdaといったファイル名のファイルがトラック数だけ存在するのがわかる。これがWindowsが仮想的にCDのTOC情報をファイルとして扱えるように見せている仮装TOCファイルだ。一曲分44バイト。CD一枚分のTOCから、あるアルゴリズムに基づいてDISC_IDを算出してやると、それをもとにFreeDBサーバに対して問い合わせをかけて、CD情報を取得することができる。
で、そのDISC_IDの取得だが、Posix系のOSとかでは簡単に取得するプログラムが流通しているけれども、Windows環境、しかも自分の開発言語であるDelphiにはそんなものない。無いものは作るのがMZユーザDelphiユーザ。早速情報を検索する。続きを読む
2008年04月14日
VB.NETでUDP非同期通信
(少々内容の修正をしました)
複数のマシン上で起動するあるプログラムにおいて、相互に他のマシン上で稼動している同プログラムが、正常に稼動しているかどうかを監視する必要が出た。
方法論としては、たとえばDBサーバに対してログを記録しつつ、それを参照したりといったスター型の構築も出来た(そして今考えれば、そっちが多分簡単だった)けど、ここはあえて、プログラム間で相互に通信を行うことで、他のプログラムの稼動状況を監視してみよう、と思い立った。苦難の道の始まりだったのだけど。
プログラム間で相互に小さなメッセージをやりとりすることで監視する、という方法論に適しているのは、やはりオーバヘッドが少なく、かつ接続を占有しないUDPだろうと思う。最大で10台くらいが相互に監視しあう状況になるので、わざわざTCPでコネクション貼ることもないだろう。
開発言語はVB.NET。すなわち.NETフレームワークの世界でそれを記述することになる。
.NETフレームワーク2.0では、きっちりUDPの非同期通信がサポートされている。
System.Net.Sockets.UdpClientがそれだ。
まず不特定との相手先と通信するためのソケットをインスタンスとして生成する。
続きを読む
方法論としては、たとえばDBサーバに対してログを記録しつつ、それを参照したりといったスター型の構築も出来た(そして今考えれば、そっちが多分簡単だった)けど、ここはあえて、プログラム間で相互に通信を行うことで、他のプログラムの稼動状況を監視してみよう、と思い立った。苦難の道の始まりだったのだけど。
プログラム間で相互に小さなメッセージをやりとりすることで監視する、という方法論に適しているのは、やはりオーバヘッドが少なく、かつ接続を占有しないUDPだろうと思う。最大で10台くらいが相互に監視しあう状況になるので、わざわざTCPでコネクション貼ることもないだろう。
開発言語はVB.NET。すなわち.NETフレームワークの世界でそれを記述することになる。
.NETフレームワーク2.0では、きっちりUDPの非同期通信がサポートされている。
System.Net.Sockets.UdpClientがそれだ。
まず不特定との相手先と通信するためのソケットをインスタンスとして生成する。
続きを読む
2008年03月19日
VB.NETでPingを打つ
さて、今回製造するアプリケーションでは、ネットワークの生死監視を行うにあたり、Pingを利用することになっている。ということで、VB.NET環境化にICMPスタックを組みこまなくてはならな…
…いなんてことは多分ないはずだ。.NET環境でそのあたりがカプセルされたクラスがきっとある。ぐぐって1ページ目にきっとある。
あった。My.Computer.Network.Pingメソッド。
Systemクラスへの別な、そして簡易なアクセス手段として、Myクラスが提供されている。
じゃあ、Pingを打ってみよう…続きを読む
…いなんてことは多分ないはずだ。.NET環境でそのあたりがカプセルされたクラスがきっとある。ぐぐって1ページ目にきっとある。
あった。My.Computer.Network.Pingメソッド。
Systemクラスへの別な、そして簡易なアクセス手段として、Myクラスが提供されている。
じゃあ、Pingを打ってみよう…続きを読む
2008年03月17日
.NET環境下でプロセス一覧の取得
さて、遅ればせながら仕事で.NET環境に触れることになったわけだが、今まで持っていたWin32API関連の知識があまり役立たないことに驚いている。
とはいえ、Web上に情報がかなり多いので、そんなに困らないわけだが。
今回困っているのは、INIファイルの読み書き、Winsockの利用、プロセス一覧の取得、などだが、そのうちプロセス一覧の取得について、ざっとテストプログラムを書いてみたら思いのほかうまくいったので覚書。
なお、System.Management名前空間を利用しているので、参照の追加をしておく必要がある。
続きを読む
とはいえ、Web上に情報がかなり多いので、そんなに困らないわけだが。
今回困っているのは、INIファイルの読み書き、Winsockの利用、プロセス一覧の取得、などだが、そのうちプロセス一覧の取得について、ざっとテストプログラムを書いてみたら思いのほかうまくいったので覚書。
なお、System.Management名前空間を利用しているので、参照の追加をしておく必要がある。
続きを読む
2008年03月14日
Excel_Reviser 最初の一歩
Excel_Reviserの環境構築、というほど大したものでもないが、実行できる状態まで来たので、まずはとりあえず動かしてみる。
まず一番最初に、ExcelReviserを使って、サーバ上にあるExcelファイルをただ表示するだけのスクリプトを記述してみる。
ExcelReviserの特徴は、テンプレートとなるExcelファイルを読み込んで、それに編集をかけて出力することにある。そこで、簡単だけど複数の要素を含むExcelファイルを作ってみる。
テスト要素として、罫線、セルの着色、オートシェイプの貼り付け、セル参照、セルの結合、フォントの指定等を詰め込んだファイルを用意し、サーバに置いておく。
続きを読む
まず一番最初に、ExcelReviserを使って、サーバ上にあるExcelファイルをただ表示するだけのスクリプトを記述してみる。
ExcelReviserの特徴は、テンプレートとなるExcelファイルを読み込んで、それに編集をかけて出力することにある。そこで、簡単だけど複数の要素を含むExcelファイルを作ってみる。
テスト要素として、罫線、セルの着色、オートシェイプの貼り付け、セル参照、セルの結合、フォントの指定等を詰め込んだファイルを用意し、サーバに置いておく。
続きを読む
2008年03月13日
貝印 スピーディみじん切り DA-0400を研ぐ
貝印から発売されていて、大体市場価格が千円前後のスピーディみじん切り器、DA-0400は、そのシンプルな見た目とは裏腹に、いや、シンプルだからこそ、実は非常に使い勝手が良い器具です。
うちでも3年ほど前に購入して便利に使っています。しかしさすがに貝印の刃とはいえ、このところ切れ味が鈍ってきました。最初のころは人参なども問題なく切り刻めていたものですが、このごろは刃先が食い込んで回らなくなる始末。
てなわけで、刃を研いで見ることにします。
続きを読む
うちでも3年ほど前に購入して便利に使っています。しかしさすがに貝印の刃とはいえ、このところ切れ味が鈍ってきました。最初のころは人参なども問題なく切り刻めていたものですが、このごろは刃先が食い込んで回らなくなる始末。
てなわけで、刃を研いで見ることにします。
続きを読む
2008年03月12日
Excel_Reviser入手と展開
2008年03月11日
PHP環境構築…apt-getでPHPのアップグレード
Excel_Reviser向け環境構築を始める。
まずはPHP実験機のセットからなんだが、このマシン、実に2年ぶりくらいに火入れする。ここ2年ほどずっと出向仕事だったので、自宅の開発環境についてまったく気にしていなかったのだ。
電源は入った。ACだけはつなぎっぱなしだったからかな。時計も合っている。すばらしい。
OSが起動する。入れておいたのは古めのVine。カーネル2.4.26。うむ。まあカーネルはいいか。
問題はPHPのバージョン。PHPのバージョンを調べる。
というわけで、Vine環境下でのPHPのアップデートを思い出しつつやってみる。
続きを読む
まずはPHP実験機のセットからなんだが、このマシン、実に2年ぶりくらいに火入れする。ここ2年ほどずっと出向仕事だったので、自宅の開発環境についてまったく気にしていなかったのだ。
電源は入った。ACだけはつなぎっぱなしだったからかな。時計も合っている。すばらしい。
OSが起動する。入れておいたのは古めのVine。カーネル2.4.26。うむ。まあカーネルはいいか。
問題はPHPのバージョン。PHPのバージョンを調べる。
おお古い。Excel_Reviserの動作用件はPHP4.4.1以降なので、これはアップデートしなければならない。[root@localhost root]# php -v
PHP 4.3.10 (cli) (built: Jan 8 2005 22:25:30)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
というわけで、Vine環境下でのPHPのアップデートを思い出しつつやってみる。
続きを読む
無線LANと電子レンジ
ご挨拶にも書いたように、嘱託ならぬ食卓プログラマであり、メインの仕事場は食卓である。
食卓にノートPCを持ち出して仕事していると気が付くことが。
電子レンジを使っていると、無線LANが切れる。
そういえばそんな話を聞いたことがありましたよ。周波数帯がかぶってるとか。
調べてみますと、家の電子レンジの横に張ってあったラベルには、発信周波数2450MHzと。
IEEE802.11bの周波数帯は、2.4〜2.5GHzと…
うむ。かぶってますね。見事なくらいかぶってる。
しかし、無線LANのアクセスポイント、ノートPC、そして電子レンジの位置関係は図に示すような感じになっていて、出力的にそうそう簡単に影響が出るとも思えない。また完全にノイズに消されるわけでなく、リンクだけは残ったままになっている。いったいどういう機序か考えてみた。
2008年03月07日
PHPでExcel出力
PHPに限らず、依然としてWebベースのシステム構築というのは流行中。
Webシステムでクライアントにブラウザを使う仕組みでは、常々苦労するのが帳票類の扱い。一番簡単に考えると、ブラウザで印刷させることになるんだけど、ブラウザの印刷機能というのはそんなに協力なものじゃないから、なかなか管理帳票として綺麗なものが得にくい。特に既存のオフコンベースのシステムなんかをリプレースする際には、絶対に帳票は以前のままで、みたいな要請が出てくることがままある。
最近ではサーバ上でPDFを生成して返す、という手法も多いけど、今回、Excel表でほしい、という要望があったので、ちょっと先行調査してみた。 続きを読む
Webシステムでクライアントにブラウザを使う仕組みでは、常々苦労するのが帳票類の扱い。一番簡単に考えると、ブラウザで印刷させることになるんだけど、ブラウザの印刷機能というのはそんなに協力なものじゃないから、なかなか管理帳票として綺麗なものが得にくい。特に既存のオフコンベースのシステムなんかをリプレースする際には、絶対に帳票は以前のままで、みたいな要請が出てくることがままある。
最近ではサーバ上でPDFを生成して返す、という手法も多いけど、今回、Excel表でほしい、という要望があったので、ちょっと先行調査してみた。 続きを読む