すごい.すごいけど,LED は百歩譲るとして,主記憶が普通に半導体なのが興醒めだ.とかいうのはちょっと酷だろうか.でもやっぱり
主記憶がレジスタより速くてどうする
とつっこまずには居られない.
1パケットの入力を受けたネットワーク・プロセサは,パケットのヘッダから送り元や送り先のIPアドレスを取得した後,そのIPアドレスと1対1に対応するメモリ番地へ書き込み処理を行う。書き込み処理を受けた統計エンジン側では,そのメモリ番地に対応するカウンタに1を加算する。これにより,送受信したパケットの数をIPアドレスごとにカウントできる。
この記述通りだと,32 ビット分のメモリ空間を占有するんじゃね?
ちょっとだけはまったのでメモ.
% 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 よくわかんね.
年末に見て,すげーとか思って,ちょっと気になることがあったので調べてから書こうと思ったまま忘れてた.CNET の記事で思い出したので書く.
何が気になったかというと,「カポタスト自動認識」機能.え? どうやって認識するの?
で,ちょっと調べた限りでは,どうやら事前に弦のゲージ (太さ) を指定しているらしい.えーと,弦長 L,張力 T,弦の線密度 ρ のとき,基本周波数は f = {1/2L} * sqrt(T/ρ) だから,T (ブリッジで測定している?) と ρ (既知) がおおよそ分かって f が観測できれば L がおおよそ定まる,ということでいいのかな.7 フレットまでしかダメ,という制約の理由がうまく説明できないので何か違うかも知れない.
これってブリッジのところが専用の機械に置き換わるから,やっぱりトレモロアーム (ブリッジを動かして全弦のテンションをまとめて変える) をつけたりとかは難しいんだろうか.どっちかというと,エレクトリックギターで自動チューニングが一番欲しくなるのはアームを使う場合,特に音程の上げ下げ両方できるようにブリッジをフローティングにしている場合なんだけどな.1 本の弦のテンションを変えると他の弦も変わっちゃうので.それこそ自動フィードバック制御の出番だと思うのです.
わー,これいい.何がいいって,JavaScript が使えなくてもちゃんと画像にアクセスできるのがすばらしい.
と思ったけど,firefox で見える場合と見えない場合があるな (PC によって違う).何が違うんだろう…と思って調べると,ツール - オプション - Web 機能 - JavaScript の詳細設定で,「画像を別のものに置き換える」がオフになっていた.まあこれオフになっていると Google Maps も動かないしな.許容範囲内か.(ちなみに firefox 1.5 には,そもそもこのオプションがないらしい.入れ換えようか)
あとこれって,あまり大きな絵が開くと,戻るときに反射的に Back の操作をして前のページに戻ってしまうところがちとアレかな,とか思ってみたり. JavaScript で Back をフックしたりとかできないのかな.
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.
GET は副作用がない (たとえばデータベースを書き換えたりしない) 場合に使うべきである.らしい.
あうー,そ,そうだったのか….つうか言われてみればそういう名前ですね.考えもしなかった….
で,慌てて自分が書き散らかしたものを見てみたけど,気づいた範囲では結果的に正しく使い分けていたようでちょっと安心.
「何がきっかけでコンピュータなんか好きになったんだ」などと親が聞くので「小学生のときに買ってもらったパソコンが原点かな」と答えると,そんなもの買った記憶はないとか言う.というわけで押入れから取り出してみた. (実物を見せても思い出してくれませんでしたが)
Panasonic の MSX2 機,FS-A1 MkII.キーボードは JIS 配列だったんだな. A の左が Ctrl なのは偉い.
せっかくなので動かしてみよう.家庭用テレビにつなぎます.
おなじみの MSX ロゴの後,A1 コックピットとかいうソフトウェアがまず動いて,そこから BASIC を起動します.他にもいろいろゲームみたいなのを選べるけど,まあ正直言っておまけですね.確か何かのキーを押しながら電源を入れればいきなり BASIC を立ち上げられた記憶があるけど,覚えてない.
BASIC の画面.hello, world など走らせてみる.
唯一の不揮発記憶はカセットテープでした.残念ながら本体とつなぐケーブルが見つからなかったので,当時のプログラムを走らせることは叶わず.
当時のプログラムがつまったテープがこれ.
ちょwwwww 何この製造元不明テープww
ウォーターマークとか透かしとか呼ぶらしいけど,書類の背景にうすーく何かの文字を (しばしば斜めに) 入れたい場合がある.
これを 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} } } }
おお,できた.
* [köpa piller ] försäljning pillerköpa piller http://... (2016-09-02 14:11:31)
* [] beställa pillergenerisk piller http... (2016-08-31 14:11:30)
* [EdwardPl] Elimite is a <a href=http... (2015-08-20 01:33:40)
英語のページを書いていたはずなのに,いつのまにか日本語の文字が混じっていて,実は英語圏から見ると化け化けだった.
てなことは,自分自身が書いたページではあまりないんだけど,世の中見回すと結構あります.
というわけで,以前 ASCII じゃない文字をハイライト表示するゲートウェイ型フィルタを書いて,某所で内部的に使ってたんだけど,また最近必要になったので,手直しして,せっかくなので公開してみる.
その他の既知の問題としては,
などがあります.
ソースはこんな感じ:
#!/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"; }
!!!!!
スタパ先生が Mac Mini っぽい PC をさぐっている.
んー,どっちもベアボーンなのか.前者は BTO セットがある.OS (WinXP) まで載っけた価格で9万円くらい.値段は結構するんだな.
というわけで [2005-11-22-1] 続き.どうも末尾 1 文字が落ちているっぽいという調査結果が報告されている.
しかし POP で取って来た場合になぜ大丈夫なのかはこれでは説明がつかない,とされている.
…いや,説明つくんじゃないかな.Mew が改行を LF にしてファイル保存しているからじゃない? というわけで改行を CRLF に変えてから開いてみると,無事開いた.
つまり,
というわけで,誰も悪くないみたい.強いて言うなら 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
とでも書いときましょか.うわあ,だせえ.
* [Jeferson] Me dull. You smart. That\'s just what I ... (2013-07-03 13:53:09)
どうもイロモノっぽい.
Gibson のディジタルギターはもうちょっと本気な感じなのにな.
6 弦独立してディジタル出力…よりも,イーサネットケーブルがギターから延びている絵にぐっと来たのを覚えている.(イーサネットプロトコルを使っているわけではなさそうだけど)
1 平方インチあたり 100 メガピクセル相当.
露光時間 4 時間つうのがちょっと….
* [Essy] Good points all around. Truly appercaite... (2013-07-03 13:23:44)
普段,メールは 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: をつけるところなわけだが,この技は確か ここ の中の人に教えてもらったと思う)
で,しばらく何の問題もなく使えていたのだが,ごく稀に添付ファイルが壊れてまともに開けないケースがあることに最近気づいた.
壊れるケースに共通しているのは,
という点.逆にこの条件が満たされたときに常に壊れるかどうかは調べ切れていない.
Mew から save this part (y キー) で保存したファイルと,Outlook Express で読んで壊れてしまったファイルとを比較すると,先頭近辺と末尾近辺が数バイトずつ異なっているみたい.
試しに,同じメールを Outlook Express で直接 pop で受信してみると,何の問題もなく開ける.この場合の添付ファイルと,壊れてしまった添付ファイルを比較すると,末尾に zero なバイト列がちょっと増えているだけの違いのようだ.むー.(てことは,Mew で保存したものとも違うということだ)
なんだかさっぱり分からない.Outlook Express が悪いのか,Mozilla/5.0 が悪いのか.
まあ別に Outlook Express が好きなわけではさらさらないので,他に
ような Windows 用メールクライントがあればいいんだけど.何かないかな.
(追記) boundary パラメータを Mew っぽくすれば開けるようになるという話がトラックバックで報告されてます.ちょっと試したのですが,私の環境では特に改善しませんでした.ついでに書くと,こちらでは Excel が「ファイルへのダメージが深刻であり修復は不可能です」とあきらめるくらいに壊れてます.何か違う問題なのかも知れません.
(追記2) 何やら状況が判明した気味です.詳細はこちら → [2005-11-28-1]
* [Cleberson] Artielcs like this are an example of qui... (2013-07-05 03:22:08)
あー,覚えてる覚えてる.
「LSIって何?」に対する答えは,実はスルーされてるな.
フィンランド Upstream Engineering,マッチ箱くらいのプロジェクタを試作.
光源がロウソクであれLEDであれ、光は本来あらゆる方向に向かって照射される。Upstreamは、光を光源の近くに集め、その大部分を狙った目標めがけて照射するという、複雑なマイクロ光学システムを開発した。
http://japan.cnet.com/news/tech/story/0,2000047674,20090967,00.htm
ここに図がある,けどよく分からんな.
* [Jady] These topics are so confsunig but this h... (2013-07-04 19:22:37)
はー,知らなかった.システム識別子の有無で挙動が変わるのか….
長野に出張予定.なのだけど次の日の昼には仙台にいなくてはいけない.えきねっとで検索する.
上諏訪発,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 いやがらせか.つうか到着時間すら遅いじゃねえか.
えきねっとの路線検索は信頼できないって結論でいいですか? それともえきねっとに限らずよくあることなんでしょうか.
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 っていう表計算パッケージがあるらしいけど,ちょっと求めているものとは違う感じ.
なんだやっぱみんなデーモン君好きなんじゃん.とか思った.
こっちが新ロゴです.
こっちではありませんww
あと,ドラゴンボールにも似てるよね.(とか言ったら誰か作ってくれたりしないかなあとか言ってみるテスト)
MS Word で,ある特定のファイルを開いて縦スクロールをががっとすると,かなりの再現率でフリーズするようになった.他のファイルだと大丈夫.別にこのファイルが特別重いファイルだというわけでもないんだがなあ.
ぐぐってみると,IME 辞書の修復をすると回復するという説があって,最近身近でもそういう例があったのでやってみた.
しかし直らない.単に 辞書が消えただけ になってしまった.うがー.
で,腫れ物に触れるかのように作業をしているのだが,スクロールバーをドラッグせず,ホイールも回さない限りは大丈夫,ということが経験上分かって来た.Ctrl-G でジャンプとか使いまくるようになりましたよ,ええ.
副作用として,他のアプリケーションで普通にホイールを回すのに一瞬ためらうような症状が現れるようになってしまった.どうしてくれる.
PowerPoint も Excel もまあ慣れて来たというか,変なところはあるけどそれなりに使えるソフトウェアだと認められるようになってきたけど,Word だけはダメだ.消えて無くなって欲しい.
パイプライン処理を世界で最初に採用した汎用コンピュータは何か?
ちょっと機会があって調べてみた. Hennessy and Patterson (3rd edition, 2002) の A.11 節によると,IBM-7030 (Stretch) らしい.1961年に Los Alamos で最初に稼働.
* [Charleigh] Deep thikinng - adds a new dimension to ... (2013-07-03 20:15:07)
キヤノン,手のひらサイズのプロジェクタ.光源はレーザ.独自のアナログ MEMS ミラーを使う.走査しているらしい.てことはミラーアレイではなくて単一のミラーなのかな.レーザの安全性はどうなんだろ.実用化時期は未定.
東芝,136×100×55mm で 0.5kg のプロジェクタ.光源は LED.消費電力 15W でバッテリで動く.明るさは一般的なプロジェクタの 1/100 くらいで,専用スクリーンじゃないときついらしい(ていうかむしろそのスクリーン技術がすごいな).2006年1月発売予定とか.
ついでに今年1月頃の記事.TI / 三菱の LED のやつ.121×97×47mm で 0.4kg.2005年8月発売とあるがその後どうなったんだろ.
cf. PLUS の現行製品の小さいやつ.
研究者らは15×8の格子に並んだ黄色いドットのパターンがすべてのカラーページに繰り返し印刷されていることを発見したと、EFFの技術者セス・スコーエン氏は説明する。
これらのドットは拡大鏡を使うか、青い光を当てたときにのみ見える。青い光の下では黄色いドットは黒に見える。
各国のEFF支持者やスタッフがさまざまなFedEx Kinko'sで印刷したテストページを分析したところ、研究者らはこれらドットの一部がプリンタのシリアル番号に対応することを発見した。ほかのドットは印刷した日付や時間に対応している。
どうせなら元のファイルのパス名とか URL とか刷り込んで欲しいよね,ってそういう問題じゃないですかそうですか.
さらにどうせなら,非接触の無線タグが紙に印刷できると嬉しい.ファイルを印刷するとその MD5 か何かがタグとして印刷されて,あとから机やら本棚やらのどこにあるかさくっと locate してくれる,なんてのキボンヌ.
無線タグアンテナをプラスチックに印刷,なんてのはでき始めているみたいだけど,普通の紙に,プリンタでできる印刷のみで,ってのはやっぱまだ先なのかな.
* [Alma] At last! Someone who understands! Thanks... (2013-07-04 22:13:56)
中身見てないけど,FLEXlm とか,Makefile とか,TeX とか,sendmail.cf とか,PostScript とか,ping (icmp_seq で答えを返す) とか,そういうのが面白そう.
単に上位ディレクトリをたどっただけじゃなくて,../../../ みたいなのを URL につっこんだのが問題視された? lynx だったから [2005-01-29-4] ってのはあまり関係なかったのかな.それにしてもどうかと思うが.
素晴らしい.tab キーで試行錯誤した頃 [2005-09-05-2] がなつかしい.
j で次.k で前.おお vi キーバインド [2005-08-28-1] だ.
* [Jennica] That\'s the perfect inishgt in a thread ... (2013-07-03 12:58:19)
んー,そういう Unix 用のフィルタコマンドくらいどっかにあるんじゃないかな.で,C-u M-| すればいい.
とか思って csv2txt でぐぐってみたらこんなの発見.
おお使えそうじゃん,とか思って試してみたが…なんかものすごい代物であった.
というわけで突然ですが
のコーナー.(cf. [2005-08-29-1])
なんかここ最近では断トツに衝撃的なコードであった.出直して来いって感じ.
とか思っているうちに dkiroku さんのフォローがついていた.
なるほど.よさげ.
ジョージア工科大.UbiComp2005 で発表.
多くの CCD カメラ等が再帰性反射特性を持っていることを利用して検出するらしい.ストロボ炊いて赤目になるのと同じ原理.
個人用とか,組織内用とかにローカルな 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 辺りを入れておくとよいようだ.
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; };
どうやら 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 では不定だから,とかいう理由ではないっぽい.
はて,この技法ってそもそも何で知ったんだっけなあ.何かの本か雑誌の記事だとは思うんだけど.
というか DVD 付防水テレビというのが正しいのか? 防水 CD プレーヤ探してたら見つけた.
外部アンテナ端子も防水になっているらしい.しかし別売アンテナコードは微妙に高いな.9 月末ごろ発売.9 インチので 6 万円前後?
ムラウチドットコムだと会員価格で52,800円.うーん,物欲上昇中.
最終更新時間: 2011-05-21 03:43
* [Elda] Thanks for introducing a little rational... (2013-03-22 04:05:47)