新春のご挨拶
新春のお慶びを申し上げます。旧年中は大変お世話になりました。本年も何卒宜しくお願い申し上げます。また皆様のご健康とご多幸をお祈り申し上げます。
さて酉年ですので、酉年にちなんで一つ読みたいと思います。
ト・・・飛ぶ鳥を落とす勢いで、
リ・・・リラックスして、
ド・・・どこでもどんなときも、
シ・・・重田です。
おあとがよろしいようで。
本年も宜しく。
« November 2004 | Main | January 2005 »
新春のお慶びを申し上げます。旧年中は大変お世話になりました。本年も何卒宜しくお願い申し上げます。また皆様のご健康とご多幸をお祈り申し上げます。
さて酉年ですので、酉年にちなんで一つ読みたいと思います。
ト・・・飛ぶ鳥を落とす勢いで、
リ・・・リラックスして、
ド・・・どこでもどんなときも、
シ・・・重田です。
おあとがよろしいようで。
本年も宜しく。
今年一年はいろいろとお世話になりましてどうもありがとうございました。
今年はプロジェクトマネジメントを学びました。情報処理技術者試験でプロマネは惜しくも不合格でしたが、自分にとっては非常にプラスに発展しました。
今年は経営について学びました。企業を運営するために最も重要なリソースは何か、肌で体験することが出来ました。
今年は組込み系開発について学びました。これまでのオープン系との違いを身をもって認識しました。
今年は転職を意識しました。自分のキャリアパスを真剣に考えました。
今年はドラッカーと出会いました。自分の価値観が変わった気がします。
今年は世界の中心で愛を叫ぶ(TVドラマ)を見てたくさん泣きました。負けず嫌いを容認できるようになりました。
今年は起業することを選択肢の一つと考えました。世の中を変えられそうな気持ちになったとき、とてもわくわくしました。
来年はかなり露出を増やして、どんどんアピールしていきたいと思います。私は幸いにして、世界で通用できるスキルを持っています。それを活用しない手はないでしょう。そして、私は自分の進みたい方向へ一歩、また一歩と進みます。私はおそらくこの業界では後発です。しかし皆さんに追いつくことは出来ます。そして追い越して見せます。
来年もより一層のご愛顧を賜りたく、努力する所存でございます。何卒宜しくお願い申し上げます。
最後に皆様のご健康とご多幸をお祈り申し上げます。
それでは良いお年を。
LDAP linux HOWTO
LDAPを立てるかどうかは判らないが、備忘録としてエントリしておく。
Ash Multimedia lab.のJavaのHello World!カスタムタグ
こちらはカスタムタグを簡単に理解するための導入編としては非常に良いと思う。
タグライブラリについてはSunのJavaServer Pages Standard Tag Libraryで、カスタムタグに関する仕様についてはSunのサイトDevelopment with JSP and XML-- Part III: Developing JSP Custom Tagsが良いかもしれません。
JavaでHello WorldやJavaDeveloper連載などのサイトも内容充実です。
キーワードを指定して AdWords に登録されている広告の検索ができます。
情報のギブアンドテイクについてメールで友人とやりとりした。良いこと言ったなぁと思ったので、メモしておこう。
友人:キーワードは情報の交換ですね。こっちも知識を与えないと、おしえてクンばっかりぢゃだめだから。
私:外に知識を出すことで、自分がさらに学ぶことにつながります。おそらく何かを知るためにも最も良いのは、人にそれを教えることだと思います。相手は”教えて君”になっているから、こっちがそれ以上の知識を持っていないと敵わない。それを意識的に行うことで、周りから見ると、「アイツは有益な情報をもっているよね」ってことになるし、こっちはその分もっと知識がアップすることになる。
さらにスキルに付随するコミュニティっていうのは最終的には友が友を呼ぶので、気がつくと最高のレベルの人と肩を並べることも可能だ。つまりは自分を磨きつづけるために、情報発信を絶えず行うことこそ、有益な情報を常に得つづけるポイントだと言うことです。やはり議論が成立するような人と会話したいもんね。
と、私は思うので、来年からはもっと外の世界に飛び出す予定です。世界に名前が知れるようになりたいもんね。折角、世界で通用する技術を持っているんだから。
観光情報Webサービス実証プロジェクト成果 公開資料(2004.4.2)
Webサービスはセキュリティ面でのワーキングがまとまらない状況でありながらも、徐々に浸透してきている。特にAmazon.comやGoogleといったAPI公開による功績は大きい。私はSOAPが出てきた当初からUDDIリポジトリの公開によるASPサービスは一つのビジネスであると考えていた。現実的にはNTTデータやmicrosoftといった巨大企業が無料でUDDIリポジトリを公開しているので、それをビジネスとして扱うことが可能かは不透明だ。しかし少なくとも企業単位によるプライベートUDDIリポジトリの公開のニーズはある。昨今、ようやくXML データベースの実用性が高まってきた。そろそろ構築していっても良いと思う。
UDDIについてはUDDI - Webサービスのレジストリ -が良いだろうか。
媒体の種類を取るのに、GET CONFIGURATIONコマンドもあるが、Read TOC/PMA/ATIPコマンドでもそれは可能である。
ググったら、こんなサイトに出会った。さすがはLinux。
Index: linux-2.6.7-ck/Documentation/cdrom/00-INDEXのpkt_media_speed()関数で次のようにしている。
/*
* reads the maximum media speed from ATIP
*/
static int pkt_media_speed(struct pktcdvd_device *pd, unsigned *speed)
{
struct packet_command cgc;
struct request_sense sense;
unsigned char buf[64];
unsigned int size, st, sp;
int ret;
init_cdrom_command(&cgc, buf, 2, CGC_DATA_READ);
cgc.sense = &sense;
cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP;
cgc.cmd[1] = 2;
cgc.cmd[2] = 4; /* READ ATIP */
cgc.cmd[8] = 2;
ret = pkt_generic_packet(pd, &cgc);
if (ret) {
pkt_dump_sense(&cgc);
return ret;
}
size = ((unsigned int) buf[0]<<8) + buf[1] + 2;
if (size > sizeof(buf))
size = sizeof(buf);
init_cdrom_command(&cgc, buf, size, CGC_DATA_READ);
cgc.sense = &sense;
cgc.cmd[0] = GPCMD_READ_TOC_PMA_ATIP;
cgc.cmd[1] = 2;
cgc.cmd[2] = 4;
cgc.cmd[8] = size;
ret = pkt_generic_packet(pd, &cgc);
if (ret) {
pkt_dump_sense(&cgc);
return ret;
}
if (!buf[6] & 0x40) {
printk("pktcdvd: Disc type is not CD-RW\n");
return 1;
}
if (!buf[6] & 0x4) {
printk("pktcdvd: A1 values on media are not valid, maybe not CDRW?\n");
return 1;
}
st = (buf[6] >> 3) & 0x7; /* disc sub-type */
sp = buf[16] & 0xf; /* max speed from ATIP A1 field */
/* Info from cdrecord */
switch (st) {
case 0: /* standard speed */
*speed = clv_to_speed[sp];
break;
case 1: /* high speed */
*speed = hs_clv_to_speed[sp];
break;
case 2: /* ultra high speed */
*speed = us_clv_to_speed[sp];
break;
default:
printk("pktcdvd: Unknown disc sub-type %d\n",st);
return 1;
}
if (*speed) {
printk("pktcdvd: Max. media speed: %d\n",*speed);
return 0;
} else {
printk("pktcdvd: Unknown speed %d for sub-type %d\n",sp,st);
return 1;
}
}
GET CONFIGURATIONコマンドはCD-RWの速度(Normal/High/Ultra)が取れないので、そのくらいの粒度が必要な場合に使える。また、buffer[6]の落とし方次第で以下のようにも取れる(ようだ)。実際に試していないけど。(w試したら、全然違ったわい!
switch ((buffer[6] >> 6) & 0x01)
{
case 0: // CD-R
case 1: // CD-RW-NS
case 2: // CD-RW-HS
case 3: // CD-RW-US
case 4: // DVD-R
case 5: // DVD-RW
case 6: // DVD+R
case 7: // DVD+RW
}
ユーザー定義変換のチュートリアル
ユーザ定義型を作ってみた。キーワードは、struct・operator・implicit・explicitといったところだろうか。これはまだまだ理解できない部分があるし、面倒だ。自作したために保証できない面が大きいし、リスク高いなぁ、これ。
public void Func() {
using (FileStream fs = new FileStream("test.txt", FileMode.Read)) {
using (StreamReader sr = new StreamReader(fs)) {
// 処理する
}
}
}
このコードは下記のコードとまったく同じ意味です。実際、これらのコードのILを見比べると100%まったく同じです。
ということなんですよ。興味深いなぁ。知らなかったなぁ、usingにこんな機能があるなんて。System.Windows.Forms.FormクラスももちろんIDisposableインターフェースが組み込まれているわけですが、例えば次のようなことをやると、即Dispose()メソッドが走ります。気をつけてね。(w
public void Func() {
FileStream fs = new FileStream("test.txt", FileMode.Read);
try {
StreamReader sr = new StreamReader(fs);
try {
// 処理する
}
finally {
if (sr != null) {
sr.Dispose();
}
}
}
finally {
if (fs != null) {
fs.Dispose();
}
}
}
public class Form1 : System.Windows.Forms.Form
{
}
public class Sample
{
using(Form1 form = new Form1())
{
form.Show();
}
// 上のブロックが終わるときにDispose()が走るので、
// 折角ShowしたFormが消えるのだ。(w
}