IPA フォント
IPA フォント
各所で話題のフリーで再配布も可能な IPA フォントですが、僕も持ってきて少し使ってみました。噂に違わぬハイ・クオリティに驚き。デフォルトフォントとしてもなんの問題もないくらいの品質です。僕の場合は full screen antialias 環境なので、埋め込みビットマップなどは見てないですけど…。
各所で話題のフリーで再配布も可能な IPA フォントですが、僕も持ってきて少し使ってみました。噂に違わぬハイ・クオリティに驚き。デフォルトフォントとしてもなんの問題もないくらいの品質です。僕の場合は full screen antialias 環境なので、埋め込みビットマップなどは見てないですけど…。
をよーく考えてみたら、みゆきさんと望美ちゃんが出てくるようになったからかも…と思った。
風力発電用の風車を設計している一人のエンジニアが、ふとしたきっかけでヒマラヤの奥地にある貧しい村のための小さな風車を作ることになり、その出来事を中心に、家族のこと、信仰のこと、援助とは何か、ボランティアについてなどさまざまなことを考えるお話1。池澤夏樹さんの本です。
池澤夏樹さんと言えば、高校生の頃にすごく好きでよく歌った「ティオの夜の旅」という曲の詩が池澤さんでした。「夏の朝の成層圏」にある詩なのでしょうか (このタイトルと同じ歌詞も出てきます)、その詩は男性的で非常にスケールの大きい感じだったので、小説もそんな感じなのかなぁと思っていたのですが、この話はどちらかというと僕のようなまだ若い技術系エンジニアの身の丈視点で書かれていて、その点は少し意外でした。でも面白かった。
ちょっとテーマが散漫な感じだったりストーリー的にはいろいろ唐突だったりもしますが2、全体のトーンはとても優しく、理系的素養を持ちつつも、人間自身、さらに霊的なものにも健全な共感を感じる主人公に、僕もすっかり共感してしまいました。これまでの都市集中、中央集権的な流れから、風力発電は必然的に分散を要求する (自然エネルギーは密度が低いので分散させざるを得ないのです)、という話もよかった。そろそろそういうパラダイム・シフトが起こってもいい頃合いだと思うんですよね。
弟に、子供達用のプレゼントとしてもらった DVD をみんなで見ました。面白かった!
見終ってから考えたんですが、この映画の主張ってまさにガンジーさんの主張なのですね。フリックの「困るのはアリじゃない、バッタだ」とか「アリの方が本当はずっと力がある」というようなセリフも、ガンジーさんがインドの人達に言っていたことそのままのように思います。鳥作りの時もその後ホッパーに痛めつけられていた時も、フリックやアリたちは暴力に訴えませんでしたし… (脅すようなしぐさはしていましたが)。←思いっきりみんなで追いたててましたね(^^;。ガンジーさんはそういう性急な行動は戒めていましたが (実際の話でもそういう行動に出る若い人は後を立たなかったのだそうです)、まぁそこは映画なので劇的な展開の方を優先したんでしょうね。
子供達としては「虫から見ると雨つぶはすごく大きいものだ」という点がすごく新鮮だったようで、それ以降雨を見るたびに「ほんとにアリさん溺れちゃいそうだねぇ」と感心しています。あと、特典映像として入っている「ゲーリーじいさんのチェス」も何故かみんな大好き。
携帯機で動作する音声認識による通訳ソフト、っていうのはなかなか魅力的かもしれない1。当初は認識率も低いだろうし認識語彙も少ないだろうけど、着実に成長 (TALK MAN 2 『帰ってきたアホウドリ』、TALK MAN 3 『アホウドリの逆襲』、etc…) させていったら結構面白い存在になるような。今までそれほど PSP 欲しくなかったんですが、これのために買ってもいいかも、と思わせるソフトです。個人的期待大。
またやってきていますが、フィルタルールを下記のように変更してみました。
# antispam.
SetEnvIf Referer "pussy" Spammer
SetEnvIf Referer "sex" Spammer
SetEnvIf Referer "porn" Spammer
SetEnvIf Referer "bestiality" Spammer
SetEnvIf Referer "beastiality" Spammer
Order deny,allow
Deny from env=Spammer
「sex」や「porn」が含まれたドメインからはリンクが張れなくなりますが、まぁ実害はないでしょう。
apache 等の prefork daemon の基本的な仕組みって、
って感じなんですね。細かいところではいろいろと気を付けなくてはいけないポイントがあるのかもしれないけど…2。
動作確認に使った簡単なプログラムは下記の通り。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT_NUM 10000 /* 10000 番ポートで待ち受け */
int main(int argc, char *argv[]) {
struct sockaddr_in me;
struct sockaddr from;
socklen_t fromlen;
int sd, opt, fork_count, fd;
int ret, i;
char buf[8192];
if (argc < 2) {
fprintf(stderr, "usage: %s FORK_COUNT\n", argv[0]);
exit(1);
}
fork_count = atoi(argv[1]);
/* socket を準備 */
sd = socket(AF_INET, SOCK_STREAM, 0);
if (sd < 0) {
perror("socket");
exit(1);
}
opt = 1; // 'true'
ret = setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int));
if (ret != 0) {
perror("setsockopt");
exit(1);
}
memset(&me, 0, sizeof(me));
me.sin_family = AF_INET;
me.sin_addr.s_addr = htonl(INADDR_ANY);
me.sin_port = htons(PORT_NUM);
ret = bind(sd, (struct sockaddr *) &me, sizeof(me));
if (ret == -1) {
perror("bind");
exit(1);
}
ret = listen(sd, SOMAXCONN);
if (ret == -1) {
perror("listen");
exit(1);
}
/* 指定された回数だけ fork */
for (i = 0; i < fork_count; i++) {
ret = fork();
if (ret < 0) {
perror("fork");
exit(1);
} else if (ret > 0) {
break;
}
}
/* main loop */
for (;;) {
memset(&from, 0, sizeof(from));
memset(&fromlen, 0, sizeof(fromlen));
fd = accept(sd, &from, &fromlen);
if (fd < 0) {
perror("accept");
exit(1);
}
for (i = 0; i < 3; i++) { /* 3回だけ recv */
memset(buf, 0, sizeof(buf));
ret = recv(fd, buf, sizeof(buf), 0);
if (ret < 0) {
perror("recv");
exit(1);
}
printf("pid=%d, msg=%s\n", getpid(), buf);
}
close(fd);
}
return 0;
}
調査&コーディングで1時間くらい。しかしこの程度のちょっと調べれば分かる知識をありがたがって囲い込んでると、本当に価値のあるモノが見えなくなっちゃうぞ>誰となく。
だそうな。PS2 の時と同じようなスケジュールですね。来年の年末商戦に間に合うか、また春に延びるか。
は、なんだかいつもよりも特撮のクオリティが高かったような。監督の違いでしょうか。それにしても、ジャスミンの回はどうも切ない展開になりがちですね。今回もジャスミンファンは必見!な内容だった…。ヘヴィメタしょって登場する悪役、ってのも素晴らしい。
そういや仮面ライダー剣 (ブレイド) も、睦月と上級アンデッドのみゆきさんが現れてからちょっと面白い感じ。みゆきさんはもうすぐ死んじゃう (封印されちゃう) 予感がぷんぷんしますが、個人的にはもっと活躍して欲しいなぁ。
7/15 から 8/3 へ3週間の延期。がっくし。
うーん、NTT 本気だ。しかし NTT 自身がデバイスまで作るわけじゃないだろうし、どこが製造を担当するんだろう。ここは絶対味方にしておいた方がいいと思うんだけど>Sony 他製造メーカー各社。Blu-ray vs HD-DVD とかやってる場合じゃないですよ。「光ディスク」という概念自体が古くなっちゃうかもしれないんだから…。
珍しく再読。最初に読んだのはエヴァンゲリオンの13話「使徒、侵入」の元ネタはコレかもね、なんて話を fj (!) で読んだのがきっかけでしたから、1996 年頃でしょうか。ストーリーの大まかな流れは覚えていたんですが1、その他の細かい部分はほとんど忘れていたので結構楽しめてしまった。こんなパニック小説だったっけなぁ。今読むとこないだ読んだ「ダーウィンの使者」はまさにコレの焼き直しであることがよく分かる (とはいえ僕は「ダーウィン」の方が好きだな)。
シモンズベアさん的には「ダブル・クラウンの夢よ再び」的な面もあったんだろうか…(←やな奴)。
情報力学とか、宇宙の法則のくだりなんかはちょっとイーガンとの類似を見たりしました。しかしまー最近の物理学の動向を聞きかじってると2、宇宙に対する絶対的なイメージは持ちにくくなってきてますよね…。
2006/1/14 追記。この本の作者はグレッグ・ベアさんであってダン・シモンズさんではないではないぞ>過去の俺。これを書いたときの俺は目ぇ開けて寝ぼけてたのか。
結局、再送処理等に関していろいろ考えているのが面倒になってきたので1、UDP/TCP を混在させて利用可能な形にすることにしました。クライアントはアプリケーション側の要求やいろいろな制約を鑑みてどちらのプロトコルでも好きなように利用できます。DP Reflector の DP は Dual Protocol の DP なのだ(笑。
つまり、完全性や順序性が欲しいアプリケーション (または個々の通信要求) は TCP を使えばいいし、そういったものはいらないのでもっと性能が欲しい場合は UDP を使えば良いと。DP Reflector 側では UDP 時には完全性や順序性を一切保証しませんので、もし UDP を使いつつそういったものが (多少なりとも) 欲しい場合はアプリケーションレイヤーで作りこむ必要があります。
TCP でのやりとりのために追加になったコードと、再送処理が必要なくなったために削除したコードの分量はほとんど同じくらいか、多少前者の方が多いかな、という程度。UDP 版、TCP 版のテストクライアントも含めてありますが、かなりシンプルになったように思うのですがどうでしょうか?
再送処理がなくなった関係で、パケットフォーマットが少し変更されています (シーケンス番号フィールドがなくなった)。また、TCP ストリーム上へのパケットの乗せ方の仕様も追加になりました。さらにチャネルに参加しているクライアントのリストを得る LIST コマンドも追加になっています。
今回も www.digitune.org の 15315 番ポート (TCP/UDP とも) で動かしておきますので、テストにでも使ってくれい>かぴのすけ。
ナチュラルに inner-inner-class を使ってしまった…。うひょー。
referer bomb じゃなくて referer spam というのですね。apache のアクセス制御を使って弾く努力をしてみることにしました。<Directory /> の設定に下記を追加しました。
# antispam.
SetEnvIf User-Agent "Netscape/Mozilla compatible" Spammer
Order deny,allow
Deny from 63.81.44.2
Deny from env=Spammer
いちおう User-Agent と IP アドレス双方で。また別のアドレスから来たら追加していこう。いたちごっこだけど、地道に対処するしかないよね。
昨日の UDP Reflector のプロトコル解説をざっと書いてみました。かぴのすけへの返事でも書きましたが、このページにあるアーカイブには .class、.java 両方とも含まれていますので、実際のソースコードを読んで動きを確認したい方はそちらをご参照ください。
下記プログラム1を実行して www.digitune.org の 15315 番ポート宛に UDP パケットを送信してくれる人募集(笑2。出来ればそのときの送受信パケットダンプもあると助かるんですが…。
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/uio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <sys/errno.h>
extern int h_errno;
int main(int argc, char *argv[])
{
int sd;
char buf[256];
int messagelength;
struct sockaddr_in server;
struct hostent *he;
/* 引数のエラー処理 */
if(argc != 4){
fprintf(stderr, "usage: %s SERVER_NAME SERVER_PORT MESSAGE\n", argv[0]);
exit(1);
}
/* socketの生成。SOCK_DGRAMがudp用 */
sd = socket(AF_INET, SOCK_DGRAM, 0) ;
if(sd < 0){
perror("socket: ");
exit(1);
}
memset((char *)&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[2]));
/* gethostbyname による名前引き */
he = gethostbyname(argv[1]);
if(he == NULL){
fprintf(stderr, "gethostbyname() failed: %s\n", hstrerror(h_errno));
exit(1);
}
memcpy((void *) &(server.sin_addr), (void *) he->h_addr, he->h_length);
/* バッファの初期化 */
memset(buf,0,sizeof(buf));
strncpy(buf, argv[3], sizeof(buf) - 1);
messagelength = strlen(buf);
/* サーバーへの送信 */
if(sendto(sd, buf, messagelength, 0,
(struct sockaddr *) &server, sizeof(server)) == -1){
perror("sendto");
exit(1);
}
memset(buf,0,sizeof(buf));
buf[1] = 0x10;
/* サーバーへの送信 (2) */
if(sendto(sd, buf, 3, 0,
(struct sockaddr *) &server, sizeof(server)) == -1){
perror("sendto");
exit(1);
}
close(sd);
exit(0);
}
昨日の日記の referer がエッチサイトで山盛りになってますね(笑。なんだかなぁ。
というわけで作ってみました。かぴのすくぇの元ソースとは似ても似つかないもの (プロトコルもまったく違う) になってますが、まぁ本質的には似たようなものだということで。ほんとはプロトコルとか説明しないといかんですが、今日はもう遅いのでまた今度。
とりあえずこのサイトの 15315 番ポートで動かしておきます。NAT の設定が間違えてなければ外からも packet 投げつけられるんじゃないかと思いますが、まったく未検証なのでご注意。今週中くらいには検証&説明出来るといいなぁ。
最近は K1 などでレフェリーをされている角田さん1のお子さん達って、「ケンシロウ」と「ユリア」って名前なんですね (本当はカタカナではなく漢字ですけど)。結構びっくり。