2009/02/18

wget でファイル送信

wget (1) でファイルを送信する必要が生じたので、 ブラウザでファイルを送信する際のパケットをキャプチャして 通信内容を調べてみる。

想定しているのは input type='file'enctype='multipart/form-data' を指定した フォームによるファイル送信処理。
通常の http ヘッダ以外に "Content-Type""boundary"wget (1) の --header オプションで指定し、 multipart/form-data 形式に整形した送信するファイルの内容を --post-data オプションで指定するだけで送信できる。
Content-Type'multipart/form-data'boundary は送信するデータの中に含まれない 任意の文字列を指定すれば問題ない。

multipart/form-data 形式は以下の形式に整形する。

--任意の文字列
Content-Disposition: form-data; name="フォーム名"; filename="ファイル名"
Content-Type: text/plain
(空行)
ファイルの中身
(空行)
--任意の文字列

実際にコマンドライン形式に記述するとこの様になる。

wget --header="Content-Type: multipart/form-data; boundary=バウンダリ" \
	--post-data='
--バウンダリ
Content-Disposition: form-data; name="フォーム名"; filename="ファイル名"
Content-Type: text/plain

ファイルの中身
         :

--バウンダリ
	' 送信先URL

スクリプトの場合などはシェル変数などを利用すると、 もう少し見やすいスクリプトになるだろう。

	:
	:
# バウンダリ文字列は世界標準時基準時点からの秒数とする
boundary="boundary-`date '+%s'`"
# 受信する cgi の <input type="file" name="..."> で指定されるフォーム名
formname="フォーム名"
# 送信するファイル
filename="ファイル名"
# 送信するファイルのデータ
contents="`cat ${filename}`"

# multipart/form-data 形式のデータ生成
data="
--${boundary}
Content-Disposition: form-data; name='${formname}'; filename='${filename}'
Content-Type: text/plain

${contents}

--${boundary}
"

# ファイルの送信処理
wget --header="Content-Type: multipart/form-data; boundary=${boundary}" \
    --post-data="$data" 送信先 URL
	:
	:

2009/02/16

VAIO type P

まさかこの Blog に "VAIO" なんてカテゴリが出来るとは…

高校生の頃の痛い原体験のトラウマに(若干大げさな表現)により、 以来ずっと sony (というか sony 製品)が嫌いだった。
特に VAIO という PC は色んな意味で大嫌いだったので、 とことん忌避して来たのだが…ここにきて VAIO を手にする事になるとは。
本当にジーンズの尻ポケットに入るサイズながら(はい、実際に入れました)、 タッチタイピングできるキーボード(しかも英語キーボード選択可能)、 スティックポインタ、ファンレス+SSD による完全 0 スピンドルなど、 ソニーが、そして VAIO が大嫌いでも選んでしまう魅力にあふれてる。

初期状態でインストールされている Windows VISTA は重くて使いづらいいので、 ダウングレード権を行使するために高価な Windows VISTA business を選び、 早速 Windows Xp をインストールしてみる。
ネット上で公開されている偉大な先人達の努力の結晶を有り難く参照しつつ、 ワンセグ、無線LAN、インスタントモード、ノイズキャンセリングヘッドフォン、 VAIO Media Plus、Bluetooth などを Windows Xp でも使える様にセットアップすると、 非常に快適なモバイルマシンとなった。



ちなみに上記のダウングレード権の公使に関する件で 初めてマイクロソフトのカスタマサポートにメイルで問い合わせをしたのだが、 意外にも(失礼)親切・丁寧な回答に驚いた。

2009/02/05

議論

コピペですが、確かにこういう人いるんだよなぁ…

例:「犬ははたして哺乳類か」という議論をしている場合、 あなたが「犬は哺乳類としての条件を満たしている」と言ったのに対して 否定論者が…

  1. 事実に対して仮定を持ち出す
  2. 「犬は子供を産むが、もし卵を生む犬がいたらどうだろうか?」

  3. ごくまれな反例をとりあげる
  4. 「だが、時として尻尾が2本ある犬が生まれることもある」

  5. 自分に有利な将来像を予想する
  6. 「新しいものは必ず批判される、犬に羽が生えないという保証は誰にもできない」

  7. 主観で決め付ける
  8. 「犬自身が哺乳類であることを望むわけがない」

  9. 資料を示さず自論が支持されていると思わせる
  10. 「世界では、犬は哺乳類ではないという見方が一般的だ」

  11. 一見関係ありそうで関係ない話を始める
  12. 「ところで、カモノハシが卵を産むのは知っているか?」

  13. 陰謀であると力説する
  14. 「それは、犬を哺乳類と認めると都合の良いアメリカが画策した陰謀だ」

  15. 知能障害を起こす
  16. 「何、犬ごときにマジになってやんの、バーカバーカ」

  17. 自分の見解を述べずに人格批判をする
  18. 「犬が哺乳類なんて言う奴は、社会に出てない証拠。現実をみてみろよ」

  19. ありえない解決策を図る
  20. 「結局、犬が卵を産めるようになれば良いって事だよね」

  21. レッテル貼りをする
  22. 「犬が哺乳類だなんて過去の概念にしがみつく右翼はイタイね」

  23. 決着した話を経緯を無視して蒸し返す
  24. 「ところで、犬がどうやったら哺乳類の条件をみたすんだ?」

  25. 勝利宣言をする
  26. 「犬が哺乳類だという論はすでに何年も前に論破されてる事なのだが」

  27. 細かい部分のミスを指摘し相手を無知と認識させる
  28. 「犬って言っても大型犬から小型犬までいる。もっと勉強しろよ」

  29. 新しい概念が全て正しいのだとミスリードする
  30. 「犬が哺乳類ではないと認めない限り生物学に進歩はない」

2009/02/03

Walking

目を背けたくなる現実という名の腹部に対して、 いつまでも目を背けている訳にもいかずに一念発起。
職場までの片道約 5km の道のりを歩いて通勤してみた。

あまり焦って歩かずに片道 1 時間程度かけてのんびり歩いてみると、 ナニゲで気持が良いという事に気が付いた。
特に普段より 30 分程度早起きして歩く往路が気持よく、 梅の花が綺麗に咲いている景色なども楽しめた。
普段は車であっという間に通り過ぎてしまう景色をじっくり見てみると、 新たな発見や思わぬ光景が目にできて中々嬉しい事である。





そういう訳で今日は足の裏(?)が筋肉痛です

2009/02/01

DNS DDoS

詐称された IP address から `. IN NS' という query を投げる DNS DDoS 攻撃が最近流行っているらしい。
この query に対して root servers のリストを応答すると、 わずか数バイトの問い合わせに対して数百バイトの応答が発生してしまうので、 詐称された IP address に膨大なトラヒックが集中してしまい、 結果として DDoS攻撃 分散型サービス拒否攻撃 Distributed Denial of Service attack となってしまうらしい。

bind は既に対策が実施されており、 `. IN NS' query に `refused' と応答する様になったので、 対策されていない DNS の管理者は早急に対策するした方が良いと思う。

2009/01/31

URL

当ブログの URL を blog.mitz.jp から blog.bsdhack.org に変更しました。

全然深い意味はないのですが、 blog.bsdhack.org のトップペイジに当ブログへのリンクを追加したのでドメインを合わせた次第です。
元々当ブログの色味自体が bsdhack.org という感じだったので、 寧ろ正しいドメインに戻したという感じかも?
blog.mitz.jp でアクセスした場合 blog.bsdhack.orgRewrite で飛ばしていますので、 bookmark されている方は気が向いたら変更して下さい。

2009/01/24

25th Anniversary

1984年1月24日に De Anza 大学にて Jobs によって "Insanely great!(メチャクチャすごい)" という言葉で Macintosh が発表された。

それから 25年たった今でも Macintosh は "Insanely great" だと思う。
アイコン・アニメーション・音声合成など、 当時としては画期的というには新しすぎる概念を パーソナルコンピュータの世界に持ち込んだ功績は大きいと思う。

2009/01/19

FreeBSD で BlueTooth マウスを利用する

最近は BlueTooth を内蔵しているハードウェア(特にラップトップ)が増えたが、 勿論 FreeBSD からも BlueTooth マウスは利用可能である。
特にラップトップの場合少ない USB ポートを占有しないので、 BlueTooth マウスは非常に嬉しいハードウェアだといえる。
プラネックスから発売されている USB 接続タイプの Bluetooth ドングル BT-MicroEDR2X と、日本では発売されていないが Logicool の V470 という BlueTooth マウスを入手したので FreeBSD でも利用してみる。

BlueTooth マウスを利用するためにはカーネルモジュールをロードする必要がある。 シェルプロンプトから kldload (8) を実行してロードしてもよいが、 /boot/loader.conf に以下の記述をすることで 起動時に自動的にカーネルモジュールをロードする様になる。

netgrph_load="YES"
ng_ubt_load="YES"
vkbd_load="YES"

Logicool の V470 の場合は底面にデバイスアドレスが明記してあるので、 BlueTooth 機器との接続を管理している hcsecd (8) コマンドの 設定ファイル /etc/bluetooth/hcsecd.conf に登録しておく。

device {
	bdaddr  XX:XX:XX:XX:XX:XX;
	name    "任意の名称";
	key     nokey;
	pin     nopin;
}

デバイスアドレスが不明な場合は hccontrol (8) コマンドを実行して 情報を取得する。
# hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
        BD_ADDR: XX:XX:XX:XX:XX:XX
        Page Scan Rep. Mode: 0x1
        Page Scan Period Mode: 0x2
        Page Scan Mode: 00
        Class: 38:01:0c
        Clock offset: 0x5f95
Inquiry complete. Status: No error [00]

BlueTooth マウスのデバイスアドレスを /etc/bluetooth/hosts に登録する。
XX:XX:XX:XX:XX:XX	任意の名称

bthidcontrol (8) コマンドで BlueTooth マウスの情報を取得し 定義ファイルに出力した上で、bthidd (8) コマンドを実行すると BlueTooth マウスが利用可能となる。

# bthidcontrol -a 名称 query > /etc/bluetooth/bthidd.conf
# bthidd -c /etc/bluetooth/bthidd.conf

2009/01/15

concierge

携帯電話の TVCM で提供しているサービスを 「コンシェルジュ」と表現している事に違和感を覚える。

改めて辞書を引くまでもなく"執事" は英語にすれば "butler" だし、 フランス語にすれば "majordome" になるんだよなぁ。
あの CM を見ると "執事" =「コンシェルジュ」と勘違いしている風に見える。

既に「コンシェルジュ」という言葉や概念は日本に定着してると思うし、 「コンシェルジュ」という概念を前面に押し出すなら あえて「執事」なんて言葉を出さなければ良いのにと思う。

2009/01/14

銀河英雄伝説

創元SF文庫から発刊されている事を知ったので年末年始で10巻一気読み。
15年振り位に全巻読破したけど新刊から20年程経過した今でも新鮮だ。

今だにヤン・ウェンリーの台詞を読むと富山敬の声が頭の中に聞こえてくる。


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.