雑記帳 2006年 7月第5週

2006/07/23 Sun.

起きたら16時だし!こんなことは日常茶飯事なので、今さら驚くこともないか。適当にあれこれやって過ごすことに決定。
とりあえず名作の「花の慶次」全18巻を読破。やっべ、これ面白いわ!あと数回は読み直すハメになりそうな作品だ。

2006/07/24 Mon.

このソース」をPerl用に作り変えようと思ったんだけど、Perlは文字列置換は楽だし二次元配列はあまり使わないから中断。

use strict;
package Utilities;
;#
;#  デバッグログを出力する
;#    param : 出力メッセージ
;#
sub debugLog {
    my $message = shift;
    my ($sec, $min, $hour, $day, $month, $year) = localtime (time);
    $year += 1900;
    $month++;
    my $time = sprintf ("%04d/%02d/%02d %02d:%02d:%02d", $year, $month, $day, $hour, $min, $sec);
    open (FILE, ">>Utilities.log");
    flock (FILE, 2);
    print FILE $time . " : " . $message . "\n";
    close (FILE);
}
;#
;#  標準出力を行う
;#    param : 出力メッセージ
;#
sub println {
    my $message = shift;
    print $message . "\n";
}
;#
;#  時刻を取得する
;#    return: 「YYYY/MM/DD HH:MM:SS」の文字列
;#
sub getTime {
    my ($sec, $min, $hour, $day, $month, $year) = localtime (time);
    $year += 1900;
    $month++;
    return sprintf ("%04d/%02d/%02d %02d:%02d:%02d", $year, $month, $day, $hour, $min, $sec);
}
;#
;#  設定ファイルをハッシュとして取得する
;#    param : 設定ファイルのパス
;#    return: 設定ファイルのハッシュ
;#
sub getHashIni {
    my $file = shift;
    open (INI, $file);
    flock (INI, 1);
    my @ini = <INI>;
    close INI;
    my %INI;
    foreach (@ini) {
        chomp $_;
        if ($_ =~ /^\#|^[(.+)]$|^\/\/|^\[(.+)\]$/ || $_ eq "" || index ($_, "=") < 0) {
            next;
        }
        my $key = substr ($_, 0, index ($_, "="));
        my $value = substr ($_, index ($_, "=") + 1, length ($_));
        if ($key ne "") {
            $INI{"$key"} = $value;
        }
    }
    return %INI;
}
;#
;#  文字列を指定文字数(バイト数ではない)に切り詰める
;#    param : 切り詰める対象の文字列
;#    param : 文字列を何文字に切り詰めるかの数値
;#    param : スクリプトの記述文字コードを"jis", "sjis", "euc"のいずれかで
;#    return: 指定文字数に切り詰めた文字列
;#
sub cutString {
    require 'jcode.pl';
    my $data = shift;
    my $length = shift;
    my $script_code_type = shift;
    &jcode::convert (\$data, "euc", $script_code_type);
    my $ascii = '[\x00-\x7F]';
    my $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]';
    my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
    my @chars = $data =~ /($ascii|$twoBytes|$threeBytes)/og;
    my $return;
    for (my $count = 0; $count < $length; $count++) {
        $return .= $chars[$count];
    }
    &jcode::convert (\$return, $script_code_type, "euc");
    return $return;
}

1;

この程度なら外部化しないでも、ファイルごとに書いた方が手間がかからなさそうだよな。もっと色々あれば話は違うけど。
今日は職場でちょっと時間あった時に、「pingを拒否するサーバーにpingを打つようなスクリプト」を拾って色々見てみた。
実際に動かそうとしても、何故か職場のマシンのPerlに「Time::HiRes」が無いし。PPMを使おうにも、何故かインストール失敗。
いやね、モジュール使う時って「use CGI::Carp qw(fatalsToBrowser);」とかって書くじゃん。そこの引数の意味がわからん。
関数の継承だか何だからしいけど、Javaでいうところのextendsってことでいいの?どこかに良さそうな解説サイトは無いかな?

2006/07/25 Tue.

今日はメモばっかり。ブックマーク代わりにでも色々と貼っておこう。お気に入りに突っ込むと、絶対見つけられなくなる。

混乱していた「JRE」と「JDK」、「SDK」の意味を「e-words」での検索結果より貼ってみる。あぁ、JREってVMのことか。
んで、職場で「Eclipse」を導入してアプリの開発をやってみたので、設定等でかなり参考にしまくった「EclipseWiki」でも。
CLASSPATH関係の修正がWikiだと微妙にわかりにくいので、Wikiの簡単に噛み砕いてメモ代わりに貼っておくことにする。

  1. 日本語化してあるのを前提に、「ウィンドウ」から「設定」を開く。
  2. 「Java」の項目から「インストール済みJRE」を選択して、JREのホームディレクトリを設定する。
  3. 「デフォルト・システム・ライブラリーの使用」のチェックを外し、Windowsの環境変数CLASSPATHのjar等を指定する。

プロジェクト単位での実行は、メニューから「実行」を開いて「実行」を選択。ここでたまに突っかかったりしてしまう。
実行が初回のプロジェクトは「構成の作成、管理、および実行」の画面が開いたら「新規」ボタンを押下して設定を追加する。
デフォルトで表示されているものは別のプロジェクトの実行情報であり、ここを下手に書き換えると動かなくなる。
また、プロジェクトを実行する際には、実行対象プロジェクトを開いてアクティブな状態にしてから実行しないとエラーが出る。
どうでもいいことなんだけど、「Sun Microsystems」が「太陽」に対して「Eclipse」が「日食」や「月食」って意味なのは面白い。

次に、「Eclipse」でのjarファイル作成とimportについてのメモ。はぁ、何つーか、IDEに関しては知らないことばっかりだな。
このソース」をjar化して、プロジェクトでimportして実際に利用してみる。まずは、このUtilitiesのプロジェクトを作成する。
一応自分ではこのソースは「Utilities.java」として使っているので、ファイル名はこれと同等のものであるという前提で。
まずは、このソースにpackage宣言を追加。ここでは「package Utilities;」と文頭に追記する。次に、これをjar化してみる。
ただ、そのソースがデフォルトのパッケージにあるとコンパイルが通らんので、パッケージ名と同等のフォルダ下に移動させる。
「ファイル」の「エクスポート」を選択して「JARファイル」を指定。リソースにUtilitiesプロジェクト下のUtilitiesパッケージを選択。
オプションを適当に指定して、エクスポート先ファイルを指定して終了。これでjarファイルが作成されるので、早速使ってみる。
このjarファイルを用いるソースに「import Utilities.*;」を追記。命名規則は「パッケージ名.クラス名」となっているので注意。
要するに、パッケージ名が「Utilities」であり、その中にある「Utilities」を含む全てのクラスを用いるという宣言という意味。
ソースに宣言を追記したら、そのソースがあるプロジェクトのプロパティから「Javaのビルド・パス」で「外部JARの追加」を行う。
先ほど作成したjarファイルのパスを指定すれば、コンパイル時のCLASSPATHにそのjarが設定され、コンパイルが通るはず。
……非常に面白いんだけど、どうにも「IDE」(一応貼っておくか)は慣れないな。DOS窓からコマンド叩く方が慣れてるし。

2006/07/26 Wed.

Javascriptでクラス化を使ってみる。とは言うものの、どう見てもただの連想配列です。Javascriptはこんなのも動くのか。

<HTML>
<HEAD>
<TITLE>This is Test.</TITLE>
<SCRIPT type="text/javascript">
    var ClassA = {
        /*  クラス変数  */
        sValue : "クラス変数",
        execScript : function() {
            /*  ローカル変数  */
            var sValue = "ローカル変数";
            var msg1 = "クラス変数 : " + this.sValue;
            var msg2 = "ローカル変数 : " + sValue;
            try {
                ClassB.callAlert(msg1 + "\n" + msg2);
            } catch (e) {
                ClassC.callErrorAlert(e);
            }
        }
    }
    var ClassB = new Object();
    ClassB.callAlert = function(msg) {
        alert(msg);
    };
    var ClassC = {};
    ClassC.callErrorAlert = function(e) {
        alert("Error-Message : " + e.description);
    }
</SCRIPT>
</HEAD>
<BODY onLoad="ClassA.execScript();">
</BODY>
</HTML>

JavaやPerlとは変わった書き方が可能みたい。ってか、キーに対する値に関数を設定できるって、誰だこんな仕様を考えたの。
んで、上記のソースを書きながら適当にJavascriptのキーワードを設定。54ケくらいになったけど、多分こんなもんだろう。
とりあえず今日わかったことは、Javascriptではオブジェクトに関数までも突っ込むことができるということか。
連想配列をクラス単位で作成することによって、擬似的にクラス化させることが可能になると。この解釈は正しいのか?
ってか、Javascriptでクラス化が必要なほど複雑なものは書きたくないな。その内に使う機会はあるのかもしれないけど。

で、上記のソースにグローバル変数sValueを追加した場合、ClassA.execScript()内からの参照方法を誰か教えて下さい。

2006/07/27 Thu.

午後の紅茶」が発売開始から20周年ということで、スペシャル版が最近になって色々と発売されているみたい。
スペシャル版は現在では3種類あるようだけど、「カムカムレモンティー」も「茶葉2倍ミルクティー」も飲んだことない。
そこで、先日18日に第三弾ということで発売された「スパークリングレモン」を飲んでみた。出社前にコンビニで購入。

ところで、普段では炭酸になることのない飲み物と言われると、真っ先に候補に出てくるのがコーヒーと紅茶だったりする。
前者の炭酸コーヒーでは微妙に地雷を踏んだような踏まないような気分になっていたので、炭酸紅茶にも不安がある。
買ってしまったものはしょうがないから、とりあえず飲んでみる。朝から喉が渇いてたし、無糖なら飲みやすいと思ったのよ。
で、感想を簡潔に。無甘味のシャンメリー?非常に飲みやすいけど、口当たりがいいから一気に飲んでしまって腹一杯だ。

ドライな刺激・カロリーゼロの無糖スパークリングレモン
スパークリングレモンのドライな刺激に、水出し製法で淹れたダージリン紅茶のほのかな味わいが新しい、
カロリーゼロの無糖炭酸。午後の紅茶からの新提案です。

ごめん、ラベルのこれを見るまで紅茶だってことを忘れてました。これがダージリン?ってか、これを紅茶と呼ぶのか?
内容量が通常のペットボトルよりも少ない410mlだけど、こりゃ500mlも飲めないわ。無糖とはいえ炭酸は腹に溜まるしな。
イレギュラーな炭酸飲料は例の炭酸コーヒーに次いで2つ目だけど、紅茶よりはコーヒーの方が炭酸でも飲める気がする。
キンキンに冷やして飲んだら、この炭酸紅茶も美味しいんだろうけど。あ、炭酸コーヒー飲んだ時も同じこと言ったっけか。

2006/07/28 Fri.

首吊ってもいいですか?はっきり言って泣き喚きたい気分だぞ。そろそろクソ会社の携帯にはいい加減に見切りつけるか?

ボーダフォン、ポータルサイトの名称を「Yahoo!ケータイ」に

センスの欠片も見当たらない。センスってのは直感的なモノだから、ぱっと見てダサいと思えばセンス無いのが確定。
突然ですが、携帯ゲーム機の「NINTENDO64」の開発コードは「ULTRA64」でした。はっきり言って、この名前もダサい。
当初にこの名称が発表された時に抗議が殺到したらしく、その結果に「NINTENDO64」という名称に変更された経緯がある。
今回は新規ではなく買収の結果の名称変更だし、既存ユーザーが抗議を投げかければ名称変更も……どうせ変わらんか。
ちなみに、既存のサービス名称は以下のように変更される予定らしいけど、何だよこの見るからにカスな名称群は。

(旧サービス等名称) (新サービス等名称)
vodafone live! Yahoo!ケータイ
ボーダフォン携帯電話 ソフトバンク携帯電話
ボーダフォンお客さまセンター ソフトバンクお客さまセンター
ボーダフォンショップ ソフトバンクショップ
SMS以外のメールサービス総称 S!メール
Vアプリ S!アプリ
vodafone live! NAVI S!GPSナビ
ボーダフォンライブ!基本料 S!ベーシックパック
ボーダフォンマイレージサービス ソフトバンクマイレージサービス

「ソフトバンクショップ」とかキモいな。ソフトバンクは携帯だけに特化したような異常なイメージを植え付けさせられる。
かと言って「ソフトバンクモバイルショップ」とかになっても結局イマイチだし、要はソフトバンクの存在がイマイチなワケか。
「S!メール」は何を指してんだかわからねえし。この名称を提案した連中もある意味凄いが、承認した連中も凄すぎるぜ。
ってか「Yahoo!ケータイ」、これは酷い。「J-SKY WEB」や「vodafone live!」の方が見た目も呼称も遥かにいいだろ。
しかも、あっても無くても変わらない上に意味不明な「!」だけ継承してんのな。ネーミングセンス以前に発想力無いのか?

ボーダフォン、10月からメールアドレスのドメインに「softbank.ne.jp」を導入

こんなメールアドレスは使いたくないだろ……。どこぞの半島国家と同様、一般人の感情を逆撫でするのが得意なこった。

なお、vodafone.ne.jpのアドレスによるメールの送受信はしばらくの間、利用できるとしている。

これって、結局は既存ユーザーのメールアドレスも強制変更させられるってことか。過去のアドレスは強制破棄?アホかと。
やはり名称ってのは大事なもので、仮に「NINTENDO64」の名称が「ULTRA64」のままだったなら、貴方は買いますか?
別に格好いい名称を捻り出せと言っているワケではなく、違和感の無い名称にしてくれれば、それだけでいいんだけど。
とりあえず、この件に関する「プレスリリースのPDF」があったので貼っておこう。ってかさ、中身を読むと驚くよこれ。

ソフトバンクグループ内の連携により「Yahoo!」ブランドを最大活用

冗談は社長の頭髪量だけにしてくれ。おっと、失礼しました。冗談ではなくてマジなようですね。マジだからこそタチが悪い。

「Yahoo! JAPAN」などソフトバンクグループが持つ多彩なコンテンツやサービス

これも凄い。何が凄いって、コンテンツやサービスの話しか出していない。サポート面に関しては完全放置確定か。
それとも、サービスの中にサポートを含める考え方なのだろうか。なるほど、サポート受けるなら金払えってことですね。

画像は「mixi」の某コミュニティのアンケート結果。マイナスイメージがある際の回答項目である下3つが約73%を占める。
最も投票数が多い項目は51%となってるけど、正確には51.9%。恐らく「int (294 / 566)」として小数点切り捨ててるな。
1日でこの結果だし、時間が経てば経つほど名称変更に「賛成」「どちらでもいい」「反対」の割合は明確化されていくだろう。

2006/07/29 Sat.

質素な生活をしようと思っていたのに、どうしても出費が増えるのは何故だろうか。やはりあざみ野在住の男のせいか。
21時から0時までゲーセンに入り浸るという不健康な週末は既に慣れてしまったが、金のかからない過ごし方も探さんと。
その後は飲み屋でメシ食って、その後で何故か2時間ほど散歩する。こんな感じで夜中に出歩くってのは懐かしいな。