IT Junk Box
- May, 2010 -
2010.05.01(土)
■ PC-9821 の隠しPCIスロット [pc98]
現在所有してる PC-9821V13/S5C2 には、隠しPCIスロットがあります。ケースの方
に穴が無いので開けないと PCI カードを追加できないんですが、厚さが 1.5mm 程も
あり電動ドリルを使わないと厳しそうなんですが、そのためだけに電動ドリルを買う
のもなぁということで放置したままです。
■ DOS の通信ソフト mTCP [Net] [DOS]
PC/XT のパソコンでも、使えるようにと今なお開発中のようです。DOS のツールを
見ていると古いパソコンを使い続ける拘りのある人が、多いような気がします。
Borland Turbo C++ 3.0 とアセンブリー言語を使ってるようですが、ソースは当分公
開しない方針だとか。
2010.05.02(日)
■ Firefox が落ちる [Net] [FreeBSD]
先月も書きましたが、他の文字でも落ちました。Firefox のバージョンは、3.6.3
です。ここに貼り付けるとまずいので、hex コマンドで
0x00000000: e3 8e a5 e3 8e a5 e3 8e - a5 e3 8e a5 e3 8e a5 20
前回は UTF-8 の 'e3 88 bb' でしたが、今回は 'e3 8e a5' でした。
■ LLVM 2.7 メモ [LLVM] [GCC]
LLVM 2.7 のベンチマーク (すぐりふひとのプログラミングメモ)
ia32 での結果のようですが、x86-64 だとどうなんでしょう。
2010.05.03(月)
■ サイマルラジオに「FM たちかわ」も [Net] [Radio]
■ GNU/Hurd QEMU image の更新 [Hurd]
Arch Hurd, updated Debian GNU/Hurd QEMU image (GNU Hurd)
GNU Hurd も密かに(?)進んでるみたいです。66% の Debian packages を利用できる
とそうな。
2010.05.05(水)
■ python でも UNDUMP [python] [FreeBSD] [Linux]
1年ほど前に ruby で作ってみたんですが、python に慣れるために作ってみました。
下記のスクリプトを undump.py で保存します。
#!/usr/bin/env python
# -*- mode:python; coding:latin-1 -*-
import sys
import re
import binascii
argv = sys.argv[1:]
for x in argv:
try:
with open( x ) as f:
for line in f:
line = re.sub( r'^0x\w{8}: ([\w\s]{23}) - ([\w\s]{23}).+$', r'\1 \2', line )
bindat = binascii.a2b_hex( line.replace( ' ', '' ).strip( ) )
sys.stdout.write( bindat )
except IOError:
print "Can't find file:", x
hex コマンドで16進数のテキストファイルを作って
> hex /usr/bin/env >env.hex
ファイルを編集して、また実行ファイルを作ります。
> undump.py env.hex >envh
2010.05.06(木)
■ nawk でも UNDUMP [awk] [FreeBSD] [Linux]
昨日に続いて nawk でも作ってみました。gawk と違って16進の数字を認識してく
れなかったり、strtonum() が無いので function を使ったりして置換しています。
下記のスクリプトを undump.awk で保存します。
#!/usr/bin/awk -f
# usage: undump.awk [filename]
/^0x[0-9a-fA-F]+:/ {
sub( /^0x[0-9a-fA-F]+: /, "" )
sub( / - /, "" )
$0 = substr( $0, 1, 46 )
gsub( / /, "" )
for ( i = 1; (i <= length( $0 ) && i<=32 ) ; i += 2 ) {
hexs1 = substr( $0, i, 1 )
hexs2 = substr( $0, i+1, 1 )
dec = hex2dec( hexs1 ) * 16 + hex2dec( hexs2 )
printf("%c", int( dec ))
}
}
function hex2dec( hexchar, dec ) {
if ( hexchar ~ /[0-9]/ ) { dec = hexchar }
else if ( hexchar ~ /[aA]/ ) { dec = 10 }
else if ( hexchar ~ /[bB]/ ) { dec = 11 }
else if ( hexchar ~ /[cC]/ ) { dec = 12 }
else if ( hexchar ~ /[dD]/ ) { dec = 13 }
else if ( hexchar ~ /[eE]/ ) { dec = 14 }
else if ( hexchar ~ /[fF]/ ) { dec = 15 }
return dec
}
[ 5月 8日追記]
微妙に修正しました。
■ SuperH Linux だそうな [Linux]
2010.05.07(金)
■ FreeBSD/amd64 の SYSCALL [x86-64] [FreeBSD] [Linux]
FreeBSD/amd64 のソースファイル /usr/src/sys/amd64/amd64/exception.S にある
IDTVEC(fast_syscall) の部分を見るとシステムコールの引数は、このようにレジス
ターに割り当てているようです。Linux と同じだったとはね。
・ システムコール番号 : rax
・ 引数1 : rdi
・ 引数2 : rsi
・ 引数3 : rdx
・ 引数4 : r10
・ 引数5 : r8
・ 引数6 : r9
また、64ビットモードの syscall では、命令の RIP を rcx に保存して RFLAGS を
r11 に保存します。sysret は、rcx から RIP にコピーして r11 から RFLAGS にコ
ピーします。だから、rcx と r11 は、破壊されるので必要であれば、保存しておか
ないといけないようです。
2010.05.08(土)
■ Ubuntu 10.04 LTS Desktop Remix CD 日本語版公開 [Linux]
Ubuntu 10.04 LTS Desktop 日本語 Remix CD リリース (Ubuntu Japanese Team)
古い 10GB ほどの HDD にインストールしてみようかと思います。
なぜ私は openSUSE Weekly News の翻訳チームにいるのか (なるひこさん)
普通は、続かないと思います。
■ Python スクリプトを Ruby スクリプトに [Python] [Ruby]
2010.05.09(日)
■ mp3 系のストリーム配信の再生や保存 [Net] [Radio]
先月作った「ストリーム配信の再生や保存」用のスクリプトで mp3 系の配信も扱え
るようにしました。こちらに置いています
1行なので mplayer のオプションの -playlist を使いました。
-playlist
Play files according to a playlist file (ASX, Winamp, SMIL, or
one-file-per-line format).
NOTE: This option is considered an entry so options found after
it will apply only to the elements of this playlist.
FIXME: This needs to be clarified and documented thoroughly.
■ 玄箱 HG のクロック [Linux] [NetBSD]
2010.05.10(月)
■ Echofon(TwitterFox) を 1.9.6.4 に更新 [Net]
■ Haiku R1/Alpha 2 公開 [Haiku]
Haiku Project Announces Availability of Haiku R1/Alpha 2 (Haiku Project)
- インストールガイド (英語)
- Haiku USB メモリを作る (英語)
去年の9月に R1/Alpha 1 が、公開されているので待ってた人も多そうな。
仮想環境より USB メモリや HDD で動かしてみたいなぁ。
2010.05.11(火)
■ Opera 10.10 for FreeBSD [Net] [FreeBSD]
Opera 10.53 Beta for FreeBSD (FreeBSD - the unknown Giant)
今まで使ってなかったので、ports から Opera 10.10 をインストールして、動かし
てみました。特に問題もないので、Firefox で表示できない文字があるときに使うこと
にしました。
シフトキーを押しながらクリックすると新しいタブで開くそうな。
■ Google 日本語入力がオープンソースに [Chromium] [Linux]
Google 日本語入力がオープンソースになりました (Google Japan Blog)
- オープンソース化されていないものはなんですか?
Windows/Mac OS 用クライアント/インストーラや辞書登録ツール、環境設定ツールなどの GUI により実現されているツールです。
もうインストールして使ってる人をちらほらと見かけました。
2010.05.12(水)
■ Ruby ラーメン [世間] [ruby]
松江市の食品会社が「Rubyラーメン」発売、売り上げの一部でRuby支援 (ITpro)
「Ruby on 松江ラーメン・キュービックシリーズ」発売だとか。
地元の山陰中央新報の方では、紹介されていないようです。
[ 5月18日追記]
実際に食べてみた人を見かけるようになったので、メモしておきます。
■ るなえむ (LEMM) v5.04c 公開 [DOS] [pc98]
「マルチスレッドのサンプルプログラム」も新しくなっています。
2010.05.13(木)
■ awk で複数行を読む [awk]
「プログラミング言語AWK」(P79-80)によると RS を空行にすると複数行を読み込む
ようになり、レコードは約3000文字になるそうな。テキストファイルで試してみると
$ awk 'BEGIN{RS=""}{print length}' note.txt
24
124
62
165
68
80
なぜか2行とか3行とかしか読まないようです。バイナリーファイルだと
$ awk 'BEGIN{RS=""}{print length}' sedawk.tar.gz
46454
$ awk 'BEGIN{RS=""}{print length}' sedawk2.tar.gz
10121
12431
31213
と、こちらも不思議な動作です。
2010.05.14(金)
■ 「Humble Indei Bundle」が、オープンソースに [Games] [Linux] [MacOSX] [Windows]
「Humble Indei Bundle」、オープンソース化へ (SourceForge.JP Magazine)
Lugaru goes open-source (Wolfire Games Blog)
ゲーム集の「Humble Indei Bundle」から「Lugaru HD」、「Aquaria」、「Gish」、
「Penumbra Overture」が、オープンソースになるそうな。「Lugaru HD」は、既に
GPL2 で公開されています。
■ LANG 環境変数の変更 [Linux]
LANG 環境変数の変化 (Ubuntu Weekly Topics)
10.04以降,GDM経由でログインした場合はLANG環境変数に*.utf8形式の値が入ります(これまでは*.UTF-8形式)。日本語環境の場合,これまでのja_JP.UTF-8に代わり,ja_JP.utf8が入ることになります。通常,glibcのロケールサポートを利用したソフトウェアであれば,これまで通り動作しますが,LANGに*.UTF-8式の値が含まれていることを期待するソフトウェア(LANG環境変数に含まれる文字列を直接パースして文字コードを切り替えるような実装を行っているもの)が,正常に動作しなくなっています。
知らないと考え込んでしまいそうな。
2010.05.16(日)
■ dosbox 0.73 をインストール [DOS] [FreeBSD]
FreeBSD/amd64 に引っ越してから、dosbox を使っていなかったのでインストール
しました。ports でインストールしただけなんですが、timidity++ が CONFLICTS に
なってるので使っていると工夫が必要かもしれません。
> cd /usr/ports/emulators/dosbox/
> make && make install
> make clean
dosbox を起動すると見慣れない画面なので、設定ファイル ~/.dosboxrc を見ようと
すると ~/.dosbox/dosbox-0.73.conf に変わっていました。パラメータが微妙に変わっ
てるところもありますが、同じような設定で構わないようです。
2010.05.17(月)
■ Google による無線LANの通信傍受 [Net] [世間]
Street Viewの車がWiFiの個人データを集めていた (TechCrunch Japan)
世界中でGoogleストリートビューカーが無線LANの通信を傍受して保存 (GIGAZINE)
・SSID(Wifiネットワーク名)
・MACアドレス(無線LANルータに与えられたユニークな名前)
・暗号化されていないペイロードデータ(WEPなどで暗号化されていない通信データ)
Googleストリートビュー車、WiFi通信内容も「誤って」収集 (Engadget 日本版)
Googleの言い分によれば「車は移動する」うえ、無線のチャンネルを1秒に約5回切り替えるので、集めたデータは断片的なものにすぎないとのこと。
なるほど、ストリートビューは、個人情報を収集するためのサービスだったとはね。
無線LANの情報と建物の情報、そして GPS の情報、さらに gmail とか Public DNS の
情報を使って何をするんでしょう?
2010.05.18(火)
■ ruby 1.9 の文字コードの判定 [ruby]
ruby 1.9 でファイルを読む場合、文字コードを適切に設定してやらないとエラーに
なってしまいます。
#!/usr/bin/env ruby19
# -*- coding: utf-8 -*-
if RUBY_VERSION >= '1.9'
Encoding.default_external = "utf-8"
end
while ARGV.size > 0
inFile = File.open( ARGV.shift )
inFile.gets( nil )
inFile.close
if ( ~/<title>([^<]+)</ui ) then
print $1, "\n"
end
end
上記スクリプトのように utf-8 の .html ファイルを読んで、そのまま比較すると
こんなエラーが出ます。
> ./test.rb test.html
./test.rb:12:in `~': invalid byte sequence in UTF-8 (ArgumentError)
from ./test.rb:12:in `'
下記のように読んでから、.force_encoding( "utf-8" ) して文字コードを設定すると
エラーは、出なくなります。
#!/usr/bin/env ruby19
# -*- coding: utf-8 -*-
if RUBY_VERSION >= '1.9'
Encoding.default_external = "utf-8"
end
while ARGV.size > 0
inFile = File.open( ARGV.shift )
if RUBY_VERSION >= '1.9'
inFile.gets( nil ).force_encoding( "utf-8" )
else
inFile.gets( nil )
end
inFile.close
if ( ~/<title>([^<]+)</ui ) then
print $1, "\n"
end
end
このように ruby の方の判定ミスがあるので、文字コードが違うくらいは、エラーで
なく警告(warning)ぐらいにしておいてくれたら、変なエラーで時間を無駄にする人も
減ると思うんですが、困ったことです。
■ fdisk から gpart に [FreeBSD] [PC]
PC-BSD FreeBSDインストールバックエンドpc-sysinstall (FreeBSD Daily Topics)
sysinstallはディスクのパーティショニングにfdiskを使っていますが,pc-sysinstallではfdiskではなくすべてgpart で処理するように移行を進めています。こうすることでGPT/EFIにおける新機能が扱えるようになります。
gpart を探してみると 8.0 では、最初からインストールされてるようです。
2010.05.19(水)
■ ld コマンドで ELF64 のオブジェクトファイルを .COM ファイルに [DOS] [FreeBSD]
1年ほど前に ELF32 のファイルで試してみたんですが、現在は FreeBSD/amd64 な
ので ELF64 のファイルでも試してみました。 elf32 で出力していたところを elf64
にするだけで、ld スクリプトは同じままで .COM ファイルを作ることができました。
$ yasm -f elf64 -o hello.o hello.asm
でも、ELF32 のオブジェクトファイルだと、エラーが出て .COM ファイルを作れませ
んでした。
■ Yasm 1.0.1 公開 [PC]
Yasm 1.0.1 Release Notes (Yasm)
先月公開されたばかりなんですが、修正版が公開されたようです。
・ Fix ELF32 shared object relocations (#202).
・ Ignore [warning] directive (#201).
2010.05.20(木)
■ 最近のカーク船長? [Video]
『スター・トレック』でカーク船長を演じてたウィリアム・シャトナー氏だそうで、
現在 79 歳だとか。
■ 動画コーデック「VP8」がオープンソースに [動画] [Net]
Googleがメディアフォーマットプロジェクト「WebM」を発表 (SF.JP Magazine)
VP8はOn2が開発したビデオコーデックで、Googleは同日、BSDライクなライセンスの下でソースコードを公開した。現在普及しているビデオコーデックの1つに「H.264」があるが、利用にライセンスが必要となるなどの背景があることから、2月にGoogleがOn2を買収した後、Free Software FoundationはVP8をフリーにするよう要求していた。
2010.05.21(金)
■ eComStation 2.0 公開 [eComStation] [OS/2]
2010.05.22(土)
■ Linux ラップトップ購入ガイド [Linux]
The Novice Guide To Buying A Linux Laptop (nixCraft)
詳しく書かれてるけど、ノービスだとパソコンにどのチップが使われているかわか
らないという人も多いんじゃないのかな。ラップトップということで買ってみないと
わからない機種も多そうです。
■ FreeBSD 8.1-RELEASE のリリースサイクル [FreeBSD]
Release cycle for 8.1-RELEASE begun (FreeBSD - the unknown Giant)
FreeBSD 8.1 Release Process (The FreeBSD Project)
予定では、7月10日ぐらいに公開になりそうです。
2010.05.23(日)
■ サイマルラジオの alias リスト更新 [Net] [Radio]
先月公開した alias のリストに「ラヂオつくば」、「PORT WAVE」、「FM CASTLE」、
「FM HANAKO」を追加しました。こちらに置いています。bash や zsh だったら、その
まま使えるはずです。再生には、mplayer が必要で、「FM CASTLE」と「FM HANAKO」
では、さらに wget と sed も必要です。
・ ラヂオつくば (茨城県つくば市)
・ エフエムポートウェイブ (三重県四日市)
・ FM CASTLE (京都府福知山市)
・ FM HANAKO (大阪府守口市)
24時間放送でないところは、放送時間を確認してから聞いてみて下さい。
リストに入っていないのは、下記の放送です。「FMいしがき」は、IP アドレスを直接
指定するためで、「FM-N1」は、専用のツールが必要なためです。
・ FMいしがきサンサンラジオ (沖縄県石垣市)
・ えふえむ・エヌ・ワン (石川県石川郡野々市町)
■ VirtualBox 3.2 と VMWare Workstation 7.1 [PC]
VirtualBox 3.2 vs. VMWare Workstation 7.1 (Tech Broiler)
環境が違い過ぎるなぁ。
2010.05.24(月)
■ ラヂオつくばを聞いてみた [Net] [Radio]
2010.05.25(火)
■ Linuxベースのロボット「Qbo」 [Robot] [Linux]
Linuxベースのロボット「Qbo」、間もなく登場? (SourceForge.JP Magazine)
「人工視覚、音声認識、音声合成」などの分野の実験用だそうな。
TheCorpora 社の説明を見ようとアクセスしたら、登録が必要でした。
■ PDPCLIB 3.00 公開 [DOS] [Windows] [OS/2] [MVS]
パブリックドメインなライブラリーの PDPCLIB 3.00 が、公開されてました。
DOS は、Turbo C++ 1.01 と Open Watcom 1.6 に対応してるそうな。
2010.05.26(水)
■ FreeBSD の Summer of Code 2010 [FreeBSD]
FreeBSD Summer of Code 2010, 18のプロジェクト (FreeBSD Daily Topics)
まだ先のことかと思っていましたが、今年の SOC なんですね。
Ports CollectionのベースコンパイラをGCCからLLVM Clangへ移行させる取り組み
2010.05.28(金)
■ Assembly Language Book for Linux [PC] [Linux]
x86 Assembly Language Books and Links
Linux 用の本として Assembly Language Step By Step, Third Edition が、紹介
されています。内容は、IA32 が対象のようで x86-64 には対応していないようです。
2010.05.29(土)
■ DOS の mTCP FTP の転送速度が速いらしい [DOS] [Net]
freedos wiki : Networking : TCP-IP Applications : mTCP
mTCP FTP 15 sec.
curl 23 sec.
WatTCP FTP 51 sec.
WATT32 FTP32 51 sec.
Datalight Sockets FTP client 69 sec.
Arachne 1.93 104 sec.
NCSA Telnet ftp 149 sec.
CUTCP FTP v. 2.2 155 sec.
EZNOS2 231 sec.
上記は、Compaq Contura Aero 486SL 33MHz (20MB RAM) に FreeDOS 1.0 の環境で
4MB の mp3 をダウンロードしたときの時間だそうです。
DOS の通信ソフトは、インターバルタイマーの 55ms の割り込みを使っているもの
が、多いので遅いのは確かなんですが、Watt-32 は 10ms の割り込みのはずなので、
リアルモード版の WatTCP と同じだと考え難いです。
TEEN の ftp と比較してみたいところですが、DOS 専用にしてたパソコンが、壊れて
しまい試せないのが残念です。
2010.05.30(日)
■ サイマルラジオの予約録音 [Net] [Radio]
サイマルラジオ (SimulRadio)の予約録音を試してみました。
こんなスクリプトファイルを作って
#!/bin/sh
PATH=/usr/local/bin:/usr/bin:/bin
URI=mms://ir298.com/IRTsukuba/radiotsukuba.asx
TODAY=`date +"%m%d%H%M"`
FILE=tsukuba${TODAY}.wma
cd /home/user
mplayer -novideo -cache 64 $URI -dumpstream -dumpfile $FILE
おまじない crontab -e で登録して
58 12 * * 0 /home/user/file/radio/tsukuba.sh
2 14 * * 0 /usr/bin/killall -3 mplayer
放っといたら、ファイルに保存されているといった具合です。