swk's log 最新ページ / カテゴリ最新ページ / 前ページ 1 2 3 4 5 6 7 8 9 次ページ / page 4 (9)

tech - from swk's log

2006-01-16 Mon

* Perl の foreach [tech]

ちょっとだけはまったのでメモ.

% perl -e '%x=(1=>1,2=>1,3=>1); foreach $i (keys %x) { print "$i\n"; $x{4}=1 if $i==2; }'
1
2
3
% perl -e '@x=(1,2,3); foreach $i (sort @x) { print "$i\n"; push(@x,4) if $i==2; }'
1
2
3
% perl -e '@x=(1,2,3); foreach $i (@x) { print "$i\n"; push(@x,4) if $i==2; }'
1
2
3
4

むー,気持悪い.Perl よくわかんね.

2006-01-12 Thu

* 自動チューニングギター [tech]

年末に見て,すげーとか思って,ちょっと気になることがあったので調べて から書こうと思ったまま忘れてた.CNET の記事で思い出したので書く.

何が気になったかというと,「カポタスト自動認識」機能.え? どうやって 認識するの?

で,ちょっと調べた限りでは,どうやら事前に弦のゲージ (太さ) を指定し ているらしい.えーと,弦長 L,張力 T,弦の線密度 ρ のとき,基本周波 数は f = {1/2L} * sqrt(T/ρ) だから,T (ブリッジで測定している?) と ρ (既知) がおおよそ分かって f が観測できれば L がおおよそ定まる,と いうことでいいのかな.7 フレットまでしかダメ,という制約の理由がうま く説明できないので何か違うかも知れない.

これってブリッジのところが専用の機械に置き換わるから,やっぱりトレモ ロアーム (ブリッジを動かして全弦のテンションをまとめて変える) をつけ たりとかは難しいんだろうか.どっちかというと,エレクトリックギターで 自動チューニングが一番欲しくなるのはアームを使う場合,特に音程の上げ 下げ両方できるようにブリッジをフローティングにしている場合なんだけど な.1 本の弦のテンションを変えると他の弦も変わっちゃうので.それこそ 自動フィードバック制御の出番だと思うのです.

2006-01-05 Thu

* lightbox.js [tech][firefox]

わー,これいい.何がいいって,JavaScript が使えなくてもちゃんと画像 にアクセスできるのがすばらしい.

と思ったけど,firefox で見える場合と見えない場合があるな (PC によっ て違う).何が違うんだろう…と思って調べると,ツール - オプション - Web 機能 - JavaScript の詳細設定で,「画像を別のものに置き換える」が オフになっていた.まあこれオフになっていると Google Maps も動かない しな.許容範囲内か.(ちなみに firefox 1.5 には,そもそもこのオプショ ンがないらしい.入れ換えようか)

あとこれって,あまり大きな絵が開くと,戻るときに反射的に Back の操作 をして前のページに戻ってしまうところがちとアレかな,とか思ってみたり. JavaScript で Back をフックしたりとかできないのかな.

2006-01-05 Thu

* GET と POST [tech]

The "get" method should be used when the form is idempotent (i.e., causes no side-effects). Many database searches have no visible side-effects and make ideal applications for the "get" method.

http://www.w3.org/TR/html4/interact/forms.html#h-17.13.1

GET は副作用がない (たとえばデータベースを書き換えたりしない) 場合に 使うべきである.らしい.

あうー,そ,そうだったのか….つうか言われてみればそういう名前ですね. 考えもしなかった….

で,慌てて自分が書き散らかしたものを見てみたけど,気づいた範囲では結 果的に正しく使い分けていたようでちょっと安心.

2006-01-04 Wed

* retrievr - Flickr から落書き検索 [tech]

面白い.原理はウェーブレット圧縮.

ちょっと遊んでみた.形とかの認識はちょっと厳しい感じ.色の分布とかは 意外とよく再現しているかも.

あと,色の微妙な違いに敏感すぎるんではなかろうか.まあでも色の扱いは 試行錯誤の結果だと書いてあるので,こんなものなのかも.

「あの写真はどこだっけ,確かこんな感じ」という用途にはまだ難しそうだ けど,「こんな雰囲気の写真が何でもいいから欲しい」という用途にはそれ なりに使えるかも知れない.

2006-01-01 Sun

* MSX2 機を十数年ぶりに動かしてみるテスト [tech]

「何がきっかけでコンピュータなんか好きになったんだ」などと親が聞くの で「小学生のときに買ってもらったパソコンが原点かな」と答えると,そん なもの買った記憶はないとか言う.というわけで押入れから取り出してみた. (実物を見せても思い出してくれませんでしたが)

fsa1mk2/20060102-000454.jpg fsa1mk2/20060102-000614.jpg

Panasonic の MSX2 機,FS-A1 MkII.キーボードは JIS 配列だったんだな. A の左が Ctrl なのは偉い.

せっかくなので動かしてみよう.家庭用テレビにつなぎます.

fsa1mk2/20060101-222302.jpg fsa1mk2/20060101-222342.jpg

おなじみの MSX ロゴの後,A1 コックピットとかいうソフトウェアがまず動 いて,そこから BASIC を起動します.他にもいろいろゲームみたいなのを 選べるけど,まあ正直言っておまけですね.確か何かのキーを押しながら電 源を入れればいきなり BASIC を立ち上げられた記憶があるけど,覚えてな い.

fsa1mk2/20060101-222500.jpg fsa1mk2/20060101-222540.jpg

BASIC の画面.hello, world など走らせてみる.

fsa1mk2/20060102-000926.jpg

唯一の不揮発記憶はカセットテープでした.残念ながら本体とつなぐケーブ ルが見つからなかったので,当時のプログラムを走らせることは叶わず.

当時のプログラムがつまったテープがこれ.

fsa1mk2/20060102-001006.jpg

ちょwwwww 何この製造元不明テープww

2005-12-28 Wed

2005-12-28 Wed

* サニタイズの話 [tech]

サニタイズの基本.

サニタイズ言うなキャンペーン.

ふーむ.

2005-12-23 Fri

* LaTeX でウォーターマーク [tech] 7 users

ウォーターマークとか透かしとか呼ぶらしいけど,書類の背景にうすーく何 かの文字を (しばしば斜めに) 入れたい場合がある.

これを LaTeX でやりたくて調べてみた.見つかった方法は大きく分けて 2 つ.

(1) EPS 画像ファイルを作って \@oddhead と \@evenhead に貼り込む.

(2) 専用のスタイルファイル dmesh.sty

EPS ファイルを作らなくていい分 dmesh.sty がスマート.素晴らしい.素 晴らしいのだけど,これって「latex をかけた日時」の表示専用なので,任 意の文字列だけの表示は,このままではできない.

で,中を見た.ふむ,ミソは \fancyput か.これなら直接書けそうな気も するぞ.ごそごそ.えーと,

ウォーターマークを入れたいファイルの,\begin{document} の前に以下を 入れてみる.

% derived from:
% 'dmesh.sty' written by Tetsuya Kimata <t_kimata@easter.kuee.kyoto-u.ac.jp>
% $Id: dmesh.sty 16 2005-02-27 13:31:19Z svn $
\usepackage{graphicx}
\usepackage{fancybox}
\usepackage{color}
\fancyput(-0.7in,-9.5in){
 \color[rgb]{0.85,0.85,0.85}{
  \rotatebox{50}{
   \scalebox{10}{CONFIDENTIAL}
  }
 }
}

おお,できた

2005-12-12 Mon

2005-12-12 Mon

* サムスン ポケットプロジェクタ [tech]

12.7センチ×9.45センチ×5.08センチで660グラム

2005-12-11 Sun

* ハードディスク時計 [tech]

前にいた研究室では,流しのところに鏡の代わりにハードディスクのプラッ タが置いてありました.最初はギャグだったはずだけど,いつの間にか定着 してた.今でもあるんだろうか.

2005-12-05 Mon

* ASCII じゃない文字フィルタ [tech]

英語のページを書いていたはずなのに,いつのまにか日本語の文字が混じっ ていて,実は英語圏から見ると化け化けだった.

てなことは,自分自身が書いたページではあまりないんだけど,世の中見回 すと結構あります.

というわけで,以前 ASCII じゃない文字をハイライト表示するゲートウェ イ型フィルタを書いて,某所で内部的に使ってたんだけど,また最近必要に なったので,手直しして,せっかくなので公開してみる.

  • http://www.kagami.org/noascii/ (ここのサーバには Crypt::SSLeay がインストールされていないので,https なページは開けません.)

その他の既知の問題としては,

  • パスワード認証がかかっているページを開くのは無理 (やりたくない)
  • a 要素以外でのジャンプに未対応 (だから frame なページはダメ)
  • title の中に non-ascii な文字があると気持ち悪いことに
  • 元のファイルに base 要素があった場合はそのままにしといた方がいい?

などがあります.

ソースはこんな感じ:

#!/usr/bin/env perl -T

use strict;
use Jcode;
use CGI;
use URI;
use HTML::Parser;
use HTML::Entities;
use LWP::UserAgent;

&main;

sub main
{
    my $query = new CGI;
    my $script_uri_copied = URI->new($query->url());

    # ヘッダ出力
    print $query->header(-type => 'text/html', -charset => 'EUC-JP');

    # ハイライトの色: デフォルトは cyan
    my $color_str = $query->param('color');
    my $color_code = &hilight_color($color_str);

    # EUC に変換した HTML を取得
    my $http_response = &get_html($query->param('uri'));
    my $uri_base = $http_response->base;
    my $html_code = Jcode->new($http_response->content)->euc;

    # Parser を起動
    my $handler_text = &handler_text_closure($color_code);
    my $handler_start = &handler_start_closure($script_uri_copied, 
                                               $uri_base, $color_str);
    my $hp
      = HTML::Parser->new(default_h =>
                          [sub { print shift; }, 'text'],
                          text_h =>
                          [$handler_text, 'text'],
                          start_h =>
                          [$handler_start, 'tagname, attr, attrseq, text']
                         );
    $hp->parse($html_code);
}

sub hilight_color
{
    my ($color_str) = @_;
    my %color_hash = ('cyan'    => '#00ffff',
                      'magenta' => '#ff00ff',
                      'yellow'  => '#ffff00',
                     );
    
    return $color_hash{$color_str} || 'cyan';
}

sub get_html
{
    my ($uri_str) = @_;
    my $uri = URI->new($uri_str)->canonical;

    # http と https のみ対応
    if ($uri->scheme ne 'http' && $uri->scheme ne 'https') {
        &print_error("scheme not supported: $uri_str");
        exit;
    }
    
    # ファイルを取得して EUC に変換
    my $ua = LWP::UserAgent->new;
    my $res = $ua->get($uri->as_string);

    if (!$res->is_success) {
        print $res->error_as_HTML;
        exit;
    }
    if ($res->content_type ne 'text/html') {
        &print_error("not an HTML: " . $res->content_type);
        exit;
    }

    return $res;
}

sub handler_text_closure
{
    my ($color_code) = @_;
    my $style = "color: black; background-color: $color_code;";

    # テキスト部分で,8 ビットめが立っているところと立ってないところの
    # 境界を検出してタグを挿入する.
    return sub {
        my ($text) = @_;

        $text = " $text ";

        $text =~ s/([\x00-\x7f])([^\x00-\x7f])/$1<b style=\"$style\">$2/g;
        $text =~ s/([^\x00-\x7f])([\x00-\x7f])/$1<\/b>$2/g;

        $text =~ s/^ //;
        $text =~ s/ $//;

        print $text;
    };
}

sub handler_start_closure
{
    my ($script_uri, $uri_base, $color_str) = @_;
    my $is_base_set = 0;

    # タグもちょっといじる
    return sub {
        my ($tagname, $attr, $attrseq, $text) = @_;

        if (!$is_base_set && $tagname ne 'html' && $tagname ne 'head') {
            # html と head 以外が初めて出て来る場所の直前に base を挿入
        
            print "<base href=\"$uri_base\">\n";
            $is_base_set = 1;
        }
    
        if ($tagname eq 'a' && defined($$attr{href})) {
            # a の href の中身を,この CGI を経由するように変換する
        
            print '<a href="', 
                  &wrap_uri(encode_entities($$attr{href}), 
                            $script_uri, $uri_base, $color_str),
                  '"';
            print map {
                $_ eq 'href'? '': " $_=\"" . encode_entities($$attr{$_}) . '"';
            } @$attrseq;
            print '>';
        } elsif ($tagname eq 'meta'
                 && $$attr{'http-equiv'} =~ /^Content-Type$/i) {
            # content-type を指定する meta があるなら,EUC に書き換える
            
            print '<meta http-equiv="Content-Type"', 
                  ' content="text/html; charset=EUC-JP">';
        } else {
            print $text;
        }
    };
}

sub wrap_uri
{
    my ($arg, $script_uri, $uri_base, $color_str) = @_;

    $script_uri->query_form(uri => URI->new_abs($arg, $uri_base),
                            color => $color_str);

    return $script_uri->as_string;
}

sub print_error
{
    my ($s) = @_;
    print "<html><body>$s</body></html>\n";
}
関連記事:
[2006-04-23-1] ASCII じゃない文字をハイライトする bookmarklet

2005-12-05 Mon

2005-12-03 Sat

* 超小型汎用PC [tech]

スタパ先生が Mac Mini っぽい PC をさぐっている.

んー,どっちもベアボーンなのか.前者は BTO セットがある.OS (WinXP) まで載っけた価格で9万円くらい.値段は結構するんだな.

2005-11-28 Mon

* Mew のファイルを Outlook Express で読み込むと添付データが壊れる(ことがある)件 [tech]

というわけで [2005-11-22-1] 続き. どうも末尾 1 文字が落ちているっぽいという調査結果が報告されている.

しかし POP で取って来た場合になぜ大丈夫なのかはこれでは説明がつかな い,とされている.

…いや,説明つくんじゃないかな.Mew が改行を LF にしてファイル保存し ているからじゃない? というわけで改行を CRLF に変えてから開いてみると, 無事開いた.

つまり,

  • Outlook Express は CRLF--[boundary] を区切りとして添付ファイルを切り出すときに,LF の前が本当に CR かどうか調べずに切り落としている
  • RFC2045 的に正しいメール形式であれば LF が CR を伴わずに出て来ることはないはずなので(って理解で合ってます?),その実装は一概には非難できない
  • Mew の保存ファイルはあくまで Mew のファイル形式であって,それが RFC822/RFC2045 準拠だとは誰も言ってないから,改行が CRLF じゃないからと言って非難できない (なんかいろいろ議論があって Mew では改行は LF に統一することになったらしい)

というわけで,誰も悪くないみたい.強いて言うなら Mew のファイルを無 理に eml だとして読み込んでいる私が悪いですかそうですか.

# ていうか eml 形式ってどこかにちゃんと定義されてるのかな

さてどうするか.あまり美しくないけど LF → CRLF 変換したテンポラリファ イルをかますしかないかな気味.

#!/bin/sh

tmpf=$1.$$.eml

cleantmp () {
  /bin/rm -f /tmp/$tmpf
  exit
}

/usr/bin/sed 's/$/^M/' /cygdrive/v/Mail/inbox/$1 > /tmp/$tmpf
/cygdrive/c/Program\ Files/Outlook\ Express/MSIMN.EXE "/eml:C:\\cygwin\\tmp\\$tmpf"
cleantmp

さあ何かつっこみどころ満載のスクリプトが来ましたよ.

まずえーと,^M って書いてるところは CR (0x0d) なので注意.

次に,cygwin だからなのか何なのかわかりませんが,シグナルを trap し ようとして「trap cleantmp INT」とか書くと,「trap: bad signal INT」 とか言われちゃうので,シグナル処理はさっくり無視してます.何かの拍子 にテンポラリファイルが残っちゃうかも知れないので注意.

あとですね,基本的動作としては,MSIMN.EXE (Outlook Express) を起動し ている行でそのまま MSIMN.EXE の終了まで待って,その後 cleantmp を呼 んでテンポラリファイルを消す,というつもりなのですが,既に MSIMN.EXE が動いている状態でこれを呼ぶとこの行では止まらないので,cleantmp が 即時呼ばれます.そのためタイミングの関係でごく稀にファイルを開き損ね ます.これが気になる人は,どうしましょうね.cleantmp の前に

sleep 3

とでも書いときましょか.うわあ,だせえ.

関連記事:
[2007-06-16-1] メール破産しそうな人から返信を受け取るコツ
[2005-11-22-1] Outlook Express で eml 形式のメールを開く

2005-11-27 Sun

* Intel Inside なギター [tech]

どうもイロモノっぽい.

Gibson のディジタルギターはもうちょっと本気な感じなのにな.

6 弦独立してディジタル出力…よりも,イーサネットケーブルがギターから 延びている絵にぐっと来たのを覚えている.(イーサネットプロトコルを使っ ているわけではなさそうだけど)

関連記事:
[2006-09-02-2] BEHRINGER USBギター iAXE393

2005-11-26 Sat

* バクテリアでイメージセンサ [tech]

1 平方インチあたり 100 メガピクセル相当.

露光時間 4 時間つうのがちょっと….

2005-11-22 Tue

* PowerPoint 廉価版 [tech]

1 年間 7,980 円は高いよな.って思うのはアカデミックプライスに慣れて いるからなのか.

むしろ,こっちの方が驚いた.知らなかった.

※通常版・アップグレード版・アカデミック版のインストール可能台数について: ソフトウェアを最初にインストールしたデバイスを主に使用する方が専用に使用する別の 1 台の携帯用デバイスに、ソフトウェアの追加のコピー1部をインストールすることができます。

「携帯用デバイス」の定義って何かな.携帯すれば OK? タワー型 PC でも 背負って歩けば OK?

2005-11-22 Tue

* Outlook Express で eml 形式のメールを開く [tech]

普段,メールは UNIX 上の Mew で読んでるのだけど,添付ファイルを保存 して Windows で開く,てのが面倒なので,そういう必要が生じたときは (まあ毎日のように生じるのだが)

> "C:\Program Files\Outlook Express\MSIMN.EXE" /eml:X:\Mail\inbox\12345

とかして Outlook Express で直接開いている.X:\Mail\inbox はもちろん Mew のinbox をネットワークドライブとして割り当てた場所.実際には,

#!/bin/sh

/cygdrive/c/Program\ Files/Outlook\ Express/MSIMN.EXE "/eml:X:\\Mail\\inbox\\$1"

なシェルスクリプトを cygwin から実行する,みたいなことをしている. (ミソは /eml: をつけるところなわけだが,この技は確か ここ の中の人に教えてもらったと思う)

で,しばらく何の問題もなく使えていたのだが,ごく稀に添付ファイルが壊 れてまともに開けないケースがあることに最近気づいた.

壊れるケースに共通しているのは,

  • そのメールが Mozilla/5.0 で作成されたもので,
  • 添付ファイルが Excel の場合

という点.逆にこの条件が満たされたときに常に壊れるかどうかは調べ切れ ていない.

Mew から save this part (y キー) で保存したファイルと,Outlook Express で読んで壊れてしまったファイルとを比較すると,先頭近辺と末尾 近辺が数バイトずつ異なっているみたい.

試しに,同じメールを Outlook Express で直接 pop で受信してみると,何 の問題もなく開ける.この場合の添付ファイルと,壊れてしまった添付ファ イルを比較すると,末尾に zero なバイト列がちょっと増えているだけの違 いのようだ.むー.(てことは,Mew で保存したものとも違うということだ)

なんだかさっぱり分からない.Outlook Express が悪いのか,Mozilla/5.0 が悪いのか.

まあ別に Outlook Express が好きなわけではさらさらないので,他に

  • eml 形式のファイルで,しかも拡張子が eml じゃないファイルを
  • コマンドラインから直接開ける

ような Windows 用メールクライントがあればいいんだけど.何かないかな.

(追記) boundary パラメータを Mew っぽくすれば開けるようになるという 話がトラックバックで報告されてます.ちょっと試したのですが,私の環境 では特に改善しませんでした.ついでに書くと,こちらでは Excel が「ファ イルへのダメージが深刻であり修復は不可能です」とあきらめるくらいに壊 れてます.何か違う問題なのかも知れません.

(追記2) 何やら状況が判明した気味です.詳細はこちら → [2005-11-28-1]

関連記事:
[2005-11-28-1] Mew のファイルを Outlook Express で読み込むと添付データが壊れる(ことがある)件

2005-11-21 Mon

* 初代ファミコンに同梱されていたマンガ [tech]

あー,覚えてる覚えてる.

「LSIって何?」に対する答えは,実はスルーされてるな.

2005-11-16 Wed

* マッチ箱大の LED プロジェクタ [tech]

フィンランド Upstream Engineering,マッチ箱くらいのプロジェクタを試 作.

画像

http://www.upstream.fi/about.html

光源がロウソクであれLEDであれ、光は本来あらゆる方向に向かって照射される。Upstreamは、光を光源の近くに集め、その大部分を狙った目標めがけて照射するという、複雑なマイクロ光学システムを開発した。

http://japan.cnet.com/news/tech/story/0,2000047674,20090967,00.htm

ここに図がある,けどよく分からんな.

2005-11-15 Tue

* DOCTYPE スイッチ [tech]

はー,知らなかった.システム識別子の有無で挙動が変わるのか….

関連記事:
[2006-07-05-3] HTML の table で,ヘッダを固定にしてデータ部だけスクロール

2005-11-15 Tue

* スタイルシートで 2 段組,3 段組 [tech]

扱いが楽なのは float かな.2 段組なら left と right の float を並べ るとよい.float をつけたものには常に width をつける方がよいみたい. 下に来るブロックに clear: both をつけるのを忘れないこと.

position: absolute でやると,垂直方向の長さが合ってないときにずれた りして面倒な場合がある.ただし,HTML 内の記載順に依存しないので,メ ニューバーを後から記載したいときには便利.

2005-11-10 Thu

* えきねっとの検索技術 [tech]

長野に出張予定.なのだけど次の日の昼には仙台にいなくてはいけない.え きねっとで検索する.

上諏訪発,11/15 12:30 仙台到着を条件にすると.

  上諏訪 (06:30発) ─ あずさ2号 → (09:26着) 東京 
         (09:56発) ─ はやて9号 → (11:37着) 仙台

な経路が出て来た.

実はこれは一発では出て来なかった. これの前に 12:00 到着を条件にしてたんだけど,

  上諏訪 (06:30発) ─ あずさ2号 (08:40着) → 立川
         (08:45発) ─ 中央線快速 (08:50着) → 西国分寺
         (08:55発) ─ 武蔵野線  (09:26着) → 南浦和
         (09:36発) ─ 京浜東北・根岸線 (09:48着) → 大宮(埼玉)
         (10:02発) ─ Maxやまびこ107号 (11:48着) → 仙台  

とかいうのが出て来て,前掲のやつは出て来ない.ちょwww いやがらせか. つうか到着時間すら遅いじゃねえか.

えきねっとの路線検索は信頼できないって結論でいいですか? それともえき ねっとに限らずよくあることなんでしょうか.

関連記事:
[2006-07-29-1] JR東日本 - おトクなきっぷ検索

2005-11-09 Wed

* バッファオーバフローと上方/下方成長スタック [tech]

スタックが上方成長だからといって安全なわけではないという簡潔な例が紹 介されている.

foo()
{
  char buf[10];
  gets(buf);
}

Bugtraq: Re: Smashing the stack, From: Bill Sommerfeld

ふむ,明快だ.

2005-11-08 Tue

* Emacs で家計簿ごっこ [tech]

Emacs で何かの値段でも,カロリーでも,何でもいいや,何かをリストアッ プしているとします.

1435
1350
2300
1350

急に合計したくなりました.ただし Emacs しか使えません.さてどうしま すかね.

これだけなら lisp interaction に移って

(+
1435
1350
2300
1350
)

とかするのが楽かな.

じゃあ,品名も書いてたらどうしましょう.

a 1435
b 1350
c 2300
d 1350

kill-rectangle/yank-rectangle でいいじゃん,てのは敗北くさいので,ちっ と関数でも書きますかね.

(defun tmp-sum2 (xs)
  (if (null xs) 0 (+ (cadr xs) (tmp-sum2 (cddr xs)))))

(tmp-sum2 '(
a 1435
b 1350
c 2300
d 1350
))

2 列の代わりに n 列にするとか,n 列の m 列めにするとか,いろいろ一般 化できるけど,nthcdr 使えばいいだけなので省略.

じゃあ,単価と数量だとしてみようか.

a 1435 2
b 1350 1
c 2300 1 
d 1350 5

んー,こうか.

(defun tmp-sp23 (xs) 
  (if (null xs) 0 
    (+ (* (cadr xs) (car (cddr xs))) (tmp-sp23 (nthcdr 3 xs)))))

(tmp-sp23 '(
a 1435 1
b 1350 2 
c 2300 4
d 1350 2
))

何か機械的拡張になってきたな.飽きた.


こういうことをもっとお手軽にできるものって,Emacs にはないのかな.あ るいは elisp でもっと簡潔に書けたりするんだろうか.

dismal っていう表計算パッケージがあるらしいけど,ちょっと求めている ものとは違う感じ.

2005-11-04 Fri

* FreeBSD 新ロゴ決定 [tech]

なんだやっぱみんなデーモン君好きなんじゃん.とか思った.

freebsd new logo
http://blog.tyuu.com/?eid=228420

こっちが新ロゴです.

red halo
http://www.jmuk.org/d/?path=2005/11/02

こっちではありませんww

あと,ドラゴンボールにも似てるよね.(とか言ったら誰か作ってくれたり しないかなあとか言ってみるテスト)

2005-11-02 Wed

* Word が不安定 [tech]

MS Word で,ある特定のファイルを開いて縦スクロールをががっとすると, かなりの再現率でフリーズするようになった.他のファイルだと大丈夫.別 にこのファイルが特別重いファイルだというわけでもないんだがなあ.

ぐぐってみると,IME 辞書の修復をすると回復するという説があって,最近 身近でもそういう例があったのでやってみた.

しかし直らない.単に 辞書が消えただけ になってしまった.うがー.

で,腫れ物に触れるかのように作業をしているのだが,スクロールバーをド ラッグせず,ホイールも回さない限りは大丈夫,ということが経験上分かっ て来た.Ctrl-G でジャンプとか使いまくるようになりましたよ,ええ.

副作用として,他のアプリケーションで普通にホイールを回すのに一瞬ため らうような症状が現れるようになってしまった.どうしてくれる.

PowerPoint も Excel もまあ慣れて来たというか,変なところはあるけどそ れなりに使えるソフトウェアだと認められるようになってきたけど,Word だけはダメだ.消えて無くなって欲しい.

2005-11-01 Tue

* はてなを OS にたとえると [tech]

OS にたとえれば,はてなは Windows

ちょwwwwほめてることになるんかそれはww

2005-10-28 Fri

* 最初のパイプライン型計算機 [tech]

パイプライン処理を世界で最初に採用した汎用コンピュータは何か?

ちょっと機会があって調べてみた. Hennessy and Patterson (3rd edition, 2002) の A.11 節によると,IBM-7030 (Stretch) らしい.1961年に Los Alamos で最初に稼働.

2005-10-27 Thu

* 小型プロジェクタいろいろ [tech]

キヤノン,手のひらサイズのプロジェクタ.光源はレーザ.独自のアナログ MEMS ミラーを使う.走査しているらしい.てことはミラーアレイではなく て単一のミラーなのかな.レーザの安全性はどうなんだろ.実用化時期は未 定.

東芝,136×100×55mm で 0.5kg のプロジェクタ. 光源は LED.消費電力 15W でバッテリで動く.明るさは一般的なプロジェ クタの 1/100 くらいで,専用スクリーンじゃないときついらしい(ていう かむしろそのスクリーン技術がすごいな).2006年1月発売予定とか.

ついでに今年1月頃の記事.TI / 三菱の LED のやつ.121×97×47mm で 0.4kg.2005年8月発売とあるがその後どうなったんだろ.

cf. PLUS の現行製品の小さいやつ.

2005-10-25 Tue

* Matlab のアレなところ [tech]

>> A = [1 -2; 3 -4];
>> B = [1 - 2; 3 - 4];
>> whos A B
  Name      Size                   Bytes  Class

  A         2x2                       32  double array
  B         2x1                       16  double array

Grand total is 6 elements using 48 bytes

2005-10-23 Sun

* Gmail Maniacs [tech]

Gmail は,何かまだちょっと抵抗あるんだよな.わたしゃもう古い人間なん ですかね.

2005-10-18 Tue

* Xerox のプリンタが紙面に追跡コードを埋め込んでいる? [tech]

研究者らは15×8の格子に並んだ黄色いドットのパターンがすべてのカラー ページに繰り返し印刷されていることを発見したと、EFFの技術者セス・ス コーエン氏は説明する。

これらのドットは拡大鏡を使うか、青い光を当てたときにのみ見える。青い 光の下では黄色いドットは黒に見える。

各国のEFF支持者やスタッフがさまざまなFedEx Kinko'sで印刷したテストペー ジを分析したところ、研究者らはこれらドットの一部がプリンタのシリアル 番号に対応することを発見した。ほかのドットは印刷した日付や時間に対応 している。

どうせなら元のファイルのパス名とか URL とか刷り込んで欲しいよね,っ てそういう問題じゃないですかそうですか.

さらにどうせなら,非接触の無線タグが紙に印刷できると嬉しい.ファイル を印刷するとその MD5 か何かがタグとして印刷されて,あとから机やら本 棚やらのどこにあるかさくっと locate してくれる,なんてのキボンヌ.

無線タグアンテナをプラスチックに印刷,なんてのはでき始めているみたい だけど,普通の紙に,プリンタでできる印刷のみで,ってのはやっぱまだ先 なのかな.

2005-10-18 Tue

* Emacs のキーボードマクロ [tech]

Emacs のキーボードマクロは,elisp を書くまでもないなあってときにとて も便利なので多用している.で,ふと保存したくなったけどやり方忘れてた.

name-last-kbd-macro で名前をつけて,insert-kbd-macro で elisp を挿入 する,と.

まあ名前つけたくなるくらいのものだと大抵は elisp で書きたくなるんだ けどな.(だから忘れるわけで)

2005-10-16 Sun

* ハノイの塔のいろんな実装 [tech]

中身見てないけど,FLEXlm とか,Makefile とか,TeX とか,sendmail.cf とか,PostScript とか,ping (icmp_seq で答えを返す) とか,そういうの が面白そう.

2005-10-16 Sun

* lynx でアクセスして逮捕の件,有罪判決 [tech]

単に上位ディレクトリをたどっただけじゃなくて,../../../ みたいなのを URL につっこんだのが問題視された? lynx だったから [2005-01-29-4] ってのはあまり関係なかったのかな.それにしてもどうかと思うが.

2005-10-14 Fri

* bloglines がホットキー対応 [tech][bloglines]

素晴らしい.tab キーで試行錯誤した頃 [2005-09-05-2] がなつかしい.

j で次.k で前.おお vi キーバインド [2005-08-28-1] だ.

2005-10-12 Wed

2005-10-04 Tue

* CSV からテキストな表に [tech]

んー,そういう Unix 用のフィルタコマンドくらいどっかにあるんじゃない かな.で,C-u M-| すればいい.

とか思って csv2txt でぐぐってみたらこんなの発見.

おお使えそうじゃん,とか思って試してみたが…なんかものすごい代物であっ た.

というわけで突然ですが

こんな csv2txt は XX だ

のコーナー.(cf. [2005-08-29-1])

  • 出力は空白区切りだけだ (これはまあよしとしよう)
  • コマンドラインオプションに短縮形がない
  • しかし help には短縮形が記載されている (まあ書き間違いは誰にでもあるさ)
  • デフォルトの入力区切り文字が「;」だ (ssv2txt?)
  • 標準入力・標準出力を使わない Σ(゜д゜;)
  • 内部的な実装はオブジェクト指向な perl module なのだが,メソッドが new しかない
  • しかも $csv = Text::CSV2TXT->new("hoge.csv", @opt); などとすると,hoge.csv.txt に出力が書き込まれる仕様だ.以降 $csv は使用されない

なんかここ最近では断トツに衝撃的なコードであった.出直して来いって感じ.


とか思っているうちに dkiroku さんのフォローが ついていた.

なるほど.よさげ.

2005-10-03 Mon

* 次期 TurboLinux (FUJI) [tech]

Wine ベースの互換技術 David (フィリピン SpecOps 社) を搭載して,

マイクロソフトのOfficeやInternet Explorer、Lotus NotesなどのWindowsアプリケーションを「Linux上で違和感なく使うことができる」(同社)

らしい.どこまでほんとなんだろう.

2005-10-02 Sun

* 隠し撮り防止技術 [tech] 2 users

ジョージア工科大.UbiComp2005 で発表.

多くの CCD カメラ等が再帰性反射特性を持っていることを利用して検出す るらしい.ストロボ炊いて赤目になるのと同じ原理.

2005-09-29 Thu

* pukiwiki からローカルなファイルにリンクを張る [tech][firefox]

個人用とか,組織内用とかにローカルな pukiwiki を動かしといて,そこか らローカルな (あるいはイントラネット内の) ファイルを参照したいときが ある.

のだが,pukiwiki は http(s) と ftp と news しか自動リンクしてくれな いようだ.しかたないので力技発動.

lib/func.php と lib/make_link.php の中に数ヶ所

https?|ftp|news

なところがあるので,ここに file をがしがし付け加えていく

https?|ftp|news|file

これで

file://fileserver/sharename/

みたいのにリンクを張ってくれるようになってくれて幸せ.

ただし,firefox はローカルなファイルは開いてくれない.拡張機能の ieview 辺りを入れておくとよいようだ.

2005-09-28 Wed

* 1bit-Paper [tech]

ちょっと試してみた.うーん,タブレット前提なのかな.マウスじゃ無理ぽ.

2005-09-23 Fri

* 共用体のはなし [tech]

C を勉強し始めたとき,こんな感じで共用体を使って,IP アドレスのうち 特定のバイトとかを取り出すみたいな技法があるのを知って,妙に感心して いた.

struct in_addr {
        union {
                struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
                struct { u_short s_w1,s_w2; } S_un_w;
                u_long S_addr;
        } S_un;
};

その印象が強かっただけに,ANSI C では,共用体のメンバのうち最後に書 き込んだもの以外の値は不定である,ってのを初めて知ったときは結構衝撃 だったのを覚えている.

とかいうことを思い出しながら,FreeBSD の in.h なんか開いたりしたんだ けど,あれ? 何か違う.

struct in_addr {
        in_addr_t s_addr;
};

(http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/netinet/in.h?rev=1.92&content-type=text/x-cvsweb-markup)

どうやら 4.4BSD から持って来た時点で既に共用体じゃなかったようだ. Solaris なんかは最近でも共用体になっていて,ただしコメントで S_addr 以外は obsolete だ,てなことが書いてある.そのちょっと前にこんなコメ ントもあるので,どうやら 4.2BSD の頃は共用体だったっぽい.

/*
 * IPv4 Internet address
 *      This definition contains obsolete fields for compatibility
 *      with SunOS 3.x and 4.2bsd.  The presence of subnets renders
 *      divisions into fixed fields misleading at best.  New code
 *      should use only the s_addr field.
 */

(http://cvs.opensolaris.org/source/xref/usr/src/uts/common/netinet/in.h?r=1.1)

共用体じゃなくなった経緯はこの辺に説明がある.特に ANSI では不定だか ら,とかいう理由ではないっぽい.

 

はて,この技法ってそもそも何で知ったんだっけなあ.何かの本か雑誌の記 事だとは思うんだけど.

2005-09-19 Mon

* カシオ 防水 DVD プレーヤ [tech]

というか DVD 付防水テレビというのが正しいのか? 防水 CD プレーヤ探して たら見つけた.

外部アンテナ端子も防水になっているらしい.しかし別売アンテナコードは 微妙に高いな.9 月末ごろ発売.9 インチので 6 万円前後?

ムラウチドットコムだと会員価格で52,800円.うーん,物欲上昇中.

関連記事:
[2005-12-10-1] 防水 DVD プレイヤ

2005-09-16 Fri

* 文字コードのお手軽判別 [tech]

あるファイルの文字コードを知りたいだけのときは,mule 付属の coco を よく使ってた.

% coco -q < hoge.txt
In (*euc-japan*unix):  10217 bytes

しかし mule が emacs に統合されてからは coco が 入ってないシステムが 多くなって,不便に思ってた.

何がいいのかなあと思ってたけど,less で = を押すのがすごくお手軽で, しかもたいていのシステムで使えると分かった.うーん,盲点.

2005-09-16 Fri

* &quot; [tech]

HTML で,ダブルクウォートで囲まれた属性値の中にダブルクウォートを入 れる必要があったので,エスケープしてやったつもりがうまくいかなくて途 方に暮れていた.

× <input name="bib.author" value="Erwin Schr\&quote;{o}dinger">

のだが,単に &quote; じゃなくて &quot; なだけであった._| ̄|○

○ <input name="bib.author" value="Erwin Schr\&quot;{o}dinger">

2005-09-15 Thu

* タイピング音から入力内容を再生する技術 [tech]

キーボードをタイプする音から,文法知識などを使ってその入力内容を推定 する技術.UCB.

同様の技術は以前からあったけど,タイプする人やキーボードの音響構造ご との事前学習が必要ないってのが今回の提案のミソかな.

しかしむしろ同様の技術が以前からあったってのに驚いた.なんか CPU の 動作音から処理内容を盗聴するとかいうすごいのまであるし.

話を今回のキーボード盗聴の話に戻すと,英語の文法知識を使って 96% の 再現率.ランダムな文字列のパスワードでも,

5文字で構成されたランダム生成パスワードを20回以内の試行回数で90%

らしい.まあ 5 文字はさすがにねえ.10 文字だと 75 回以内で 80% らし い.しかし順調に技術が進展していくとすると危険な話であるのは確かかも.

あと,いわゆる「パスフレーズ」みたいに「長いから普通の文章とかで大丈 夫」とされてるやつはかなり危ないということになるのかも.

音楽をガンガンかけておけばいいとか書いてるけど,それもどうだかな.音 源分離とか音源定位とかも日進月歩だと思うし.

底面の張り(?)がランダムに変わり続けるキーボードなんてのはどうだろう. えらく使いにくそうだが.

最終更新時間: 2008-04-23 08:48


Shingo W. Kagami - swk(at)kagami.org