2002年7月13日(土) 昨日は夏祭りで友だちと会って飲んできちゃったよ
● momongaのCDイメージ
mkisofsで作ってみたですよ。んで、CDに焼いてHEAD修行マシンを起動しても、起動してくれない。ハードディスクにあるWindows98が来てしまう。どうしてだろう?と思ったら、mkisofsで-bオプションを付けずにイメージを作ってました。ルートにcdboot.imgが見えるという。しくしく。
今度こそ…もしうまくいったらどこかでダウンロードできるようにします。
● MHonArcの作るアーカイブのHTMLの番号が、メールのサブジェクトの番号と一つずれている
Nyan2さんツッコミありがとうございます。ちらりと見てみたのだけれど、簡単に直せるオプションはなさそうです。TODOファイルに書いてあるし…。
今後の課題ということで。
● momongaあけっぴろげ計画 -トップページ進出編
Momonga Projectのwwwページの トップは、 例えば日本語だと、お知らせのxmlデータが入っているannouncement.jaを、 xsltのスタイルシートindex.xsl.jaによって整形して生成しています。 このトップページに、cvsレポジトリからcheckoutしてきた、 それぞれのRPMパケッケージのspecファイルの更新情報を加えます。
その時に問題になるのは、スタイルシートにxmlデータを適用するソフトウェア xsltprocが、xmlファイルを一つだけしか入力に取れないということです。 このため、xsltprocを通す前に、二つのxmlデータを一つのファイルに統合する必要がありました。
Nyan2さんに教えたいただいた、
xi:includeを使えばいいんだろうな、と想像はしたものの、
どうもうまくいかない…。
結局、原因は、xsltprocに--xincludeオプションを加える必要があった、 というオチでした。トホホ。
- index.xml.ja
<?xml version='1.0'?> <information xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="announcement.ja"/> <xi:include href="a/all.xml"/> </information>
- announcement.ja : お知らせのファイル
- a/all.xml : レポジトリから取り出したspecファイルの情報
- index.xsl.ja : スタイルシート
を用意しておいて、
xsltproc --xinclude -o index.html.ja index.xsl.ja index.xml.ja perl -p -i -e "s/%26amp;/&/g" index.html.ja
すると、見事にRPM更新情報の入ったトップページができました。 もう少し細かいところを修正したら公開できるのではないかと思います。 わくわく。
● momongaのCDイメージ解決編
grubでしか起動しなくなったHEADマシンで以下の手順で作りました。
- まず必要なパッケージだけcheckout。
いままではコのレポジトリだったので。
cvsの-dオプションは適当に読みかえてくださいね。
cd ~ mkdir Momonga cd Momonga export CVS_RSH=ssh cvs -d :ext:hoge@cvs.momonga-linux.org:/home/cvs checkout tools cvs -d :ext:hoge@cvs.momonga-linux.org:/home/cvs checkout pkgs/rpmrc for pkg in momonga `cat /usr/share/doc/momonga-0.5.8/packages* | sort -u`; do dir=`LANG=C rpm -qi $pkg | ruby -n -e 'puts $1 if $_ =~ /.*Source RPM: *(.*?)-d[^-]*-d[^-]*/'` if [ -d pkgs/$dir/CVS ]; then cvs -d :ext:zunda@cvs.momonga-linux.org:/home/cvs update pkgs/$dir else cvs -d :ext:zunda@cvs.momonga-linux.org:/home/cvs checkout pkgs/$dir fi done - rpmvercmpのビルド
cd ~/Momonga/tools make
- 設定ファイルのコピー。eucじゃないと嫌だという勝手なやつ。
cd ~/Momonga/pkgs nkf -e ../tools/example.OmoiKondara >| .OmoiKondara
- オモコン
../tools/OmoiKondara
- できなかったパッケージの修正とかソース取とかをして、 オモコンをくりかえす。
- できあがったパッケージのインストール
- momongaの飼育。とりあえずはtさんが揃えてくださったパッケージのリストで。
mkdir ~/momonga-install sudo /usr/lib/momonga/buildtree ~zunda/momonga-install ~zunda/PKGS sudo /usr/lib/momonga/buildinstall ~zunda/momonga-install TZ=UTC sudo mkhybrid -r -J -V "momonga_020713" -b images/boot.img -c images/boot.cat -o ~zunda/momonga_020713.iso ~zunda/momonga-install
このISOイメージをCD-Rに焼いて、起動すると、 言語の選択、キーボードの選択をして、bashが起動します。 ここから手でインストール作業をすすめていけるハズですが、今日はここまで。
このISOイメージを公開しようかと思ったのですが、162MBもあるので、 このホストには置かせてもらえず、 www.momonga-linux.orgでもちょっと控えた方がいいかな?という気も。 どうしようかな?
● ジャッキー・チェンの映画
ここ何か月か、夜遅くにジャッキー・チェンの古い映画をやってる。ドイツ語に吹替えられてて何を言ってるのかわからないんだけど、けっこうドタバタしてておもしろいんだな。
2003年7月13日(日) 夏である
● Oper für alle
オペラフェスティバルの一環として、ナショナルシアターの前の広場に大きなスクリーンを置いて中の演目を中継する催しがあります。外で見るのは無料で、たくさんの人がつめかける。
今年は、去年立ち見をしたファルスタッフでした。広場の構造からスクリーンは西を向いているのですが、夕日が直接当たっても画面が見えるのがすごい。残念ながら路上オーケストラほど音質がよくなく、娘はぜーんぜん興味を持たなかったのですが…。
● ドイツの人は運転が下手か?官僚がアホなのか?
そうそう。オペラを眺めた帰りにいつもはすいている高速道路が突然渋滞になりました。前方は他の高速との合流地点があるのですが、それにしても突然なのでもしかしたら事故かも?と思ってのろのろ進んでいく。合流地点を過ぎても渋滞は続き、反対方向の車線にパトカーの青いライトが*1。反対側でも事故かーと思っていると、こちら側にもパトカーが。
結局、反対方向の車線から車が一台、中央分離帯をつきやぶってこちらの車線に転がってきたようでした。乗用車の外装はぐしゃぐしゃで、窓やドアに中央分離帯の土が付いています。ドライバーらしき女性が警官と呆然としながら話していたので、怪我人は居なかった(か、既に救急車で運ばれていたっか)ようなのでした。
もし目の前に反対車線から自動車が飛んできたら、と思うとぞっとします。他に事故車らしき自動車が停まっていなかったのがよかった。
しかし。
週に2回くらいは何かの事故をみかけてます。交差点でぶつかってたり、路肩の林につっこんでたり。引っ越しの時にはわき道からのろのろと出てきたトラックにぶつかりそうになったんだった。こっちを確認してから出てくるな。どあほー。
「信号が消えてる時は青」とか、交差点のあちら側に信号が無くて信号待ちの時はほぼ90度横にある信号を見ていないといけない(ので発車するまで前は見られない)、とか、80km/h制限の道路の交差点に信号が無いとか、理解に苦しむ交通ルールの多いドイツだけど、事故の原因にならないように気をつけないと。そして、巻き添えを食いませんように…。
*1 ドイツのパトカーや救急車の警告灯は青です。
2004年7月13日(火) ずんこが寝坊すると家族が寝坊する
● [memo] PDFファイルをWWWブラウザ内で閲覧しないようにする
Mozillaのpluginsディレクトリからdllを消してもいつの間にか復活しやがるしなー、と思ってあきらめていたら、「NetNews便り」(みるく著、Unix magazine 2004年6月号、p.161-)にありました。
特権ユーザーになって、Acrobat Readerを起動し、Edit-Prefernceの左のカラムからInternetを選び、Display PDF in browserのチェックをはずす。
制限付ユーザーに戻ると、この項目のチェックはついたまま選択できなくなっているけれど、MozillaからPDFファイルへのリンクをクリックすると、ハードディスクに保存するかどうか尋ねてくれました。
しかし、ユーザーインターフェースの違うアプリケーションを同じウインドウの中に表示するのは間違えてるよね?ね?どうしてこんな使いにくいものがデファクトスタンダードになってるんだろう?
(追記)制限付きユーザーでは1回ログオフしちゃうとダメなようでした。特権ユーザーになって、常用ユーザーの種類を特権ユーザーに昇格させて設定を変えてから制限付きユーザーに戻したらうまくいったみたい。なんだかなぁ。
● 石紙さま命日
やっとよく飛ぶようになった紙飛行機は屋根の上へ。次の雨で昇天されることでしょう…。
● [memo] NAT越えWake-on-Lan実装編
以前書いた、 wake-on-lanの受信側の設定はできてきました。 ルーターでは、ポート9にきたパケットを192.168.1.255に中継するように設定して、 起こされる側のマシンでは、BIOSのPowerの項目とACPIの項目で wake-on-lanを有効にしました。
起こす側はマジックパケットを送出しないといけないのですが、 少なくともLinuxではローカルなネットワークにブロードキャストする時には パケットのオプションを設定しないとEACCESSになるようでした。 家では無線LANを使うので、 iwgetidで家に居るかそれ以外の場所に居るか判断できるはず。 下記のようなスクリプトで、 仕事場からも家からも、電源を入れることができるようになりました。 お手元で使う場合には、起こされるマシンのmacアドレスと、 ローカルに居るか出先に居るかの判定を適当に変えてくださいね。
#!/usr/bin/env ruby
# sends out a magic packet to wake up your PC
#
# Copyright (c) 2004 zunda <zunda at freeshell.org>
#
# This program is free software. You can re-distribute and/or
# modify this program under the same terms of ruby itself ---
# Ruby Distribution License or GNU General Public License.
#
# target machine
mac = 'XX:XX:XX:XX:XX:XX'
# target network
case `/sbin/iwgetid`
when /ESSID:"XXXX"/
host = '192.168.1.255'
local = true
else
host = 'example.com'
local = false
end
require 'socket'
port = 9 # Discard Protocol
message = "\xFF"*6 + [ mac.gsub( /:/, '' ) ].pack( 'H12' )*16
txbytes = UDPsocket.open do |so|
if local then
so.setsockopt( Socket::SOL_SOCKET, Socket::SO_BROADCAST, true )
end
so.send( message, 0, host, port )
end
puts "#{txbytes} bytes sent to #{host}:#{port}."
● FreeBSDマシンの/がfullに
最近は面倒くさくてsuしてportupgrade -r -fするようになってきたのだけれど、/root/.ccacheが肥大化していたという罠だった。/var/ccacheにどかしてsymbolic linkして逃げよう。
そもそもsuしてportを作りたくはないんだけれど、時々rootのパスワードを訊かれるので放っておけなくなってしまうのだ。
(追記) /varもすぐいっぱいになってしまった。/usrに移動。
2006年7月13日(木) 月が明るかった
● [memo] Faillmalloc
おくじさんが30分で作られたライブラリ。すごい発想!mallocとfreeの対応づけは気をつけてたけど、これは確かになかなか確かめられるものじゃない。
さっそく手元で作ってるソフトにリンクしてみたい。でも今日は遅いので明日。
(追記)…と思ったんだけど
$ for i in 1 2 3 4 5 6 7 8 9 10; do ls; done セグメンテーション違反です ls: memory exhausted ls: memory exhausted ls: memory exhausted セグメンテーション違反です セグメンテーション違反です ls: memory exhausted ls: . セグメンテーション違反です セグメンテーション違反です
あれあれ。
そして手元のソフトも何度かSIGSEGVをもらっている。わはは(笑いごとじゃない。)
2007年7月13日(金) 長い一週間でした
● 更新プログラムをインストールしています
久しぶりに起動したら、「Service Pack 2 for Windows XP Professional, x64 Edition をダウンロード中 (更新プログラム 1個中1個)...」と言ったまま、ぜんぜーんファイルが降りてきてくれません。どうしたものかなあ。
● 放っておいたら進んだ。プログレスバーが表示されないだけでした…ってだめだよねえ。
2008年7月13日(日)
● [memo] luvcview (quickcamteam.net) を作ってみる
たぶん標準的な*1パッケージ構成のUbuntu 8.04に追加でインストールしたのは、libsdl1.2-dev。
あと、Linux UVC driver & toolsより、svn://svn.berlios.de/linux-uvc/linux-uvc/trunkをcheckoutし、libwebcamより、http://svn.quickcamteam.net/svn/qct/Linux/をcheckout。READMEのとおり、一部のヘッダファイルをsymlinkした。
*1 このご時勢コンパイラが入ってたら標準的とは言えないのかな
● 野良ビルドのluvcviewはUbuntu提供のluvcviewと違ってioctl()がInvalid argumentを返す。なぜ…
● [memo] autotoolsで管理するプロジェクトを始めてみる
久しぶりにやろうとすると忘れてしまっていることに気づく。 一度メモしておこう。下記の手順が正しいとは限らないのでご注意ください。
Ubuntuの場合は開発ツールがぜんぜん入ってない。僕の場合は、 automakeを入れる必要があった。
まずdoc/、src/、test/をつくってsrc/に適当にファイルを配置する。
autoscanでconfigure.scanを作ってもらえるので、configure.inに改名して、 FULL-PACKAGE-NAME、VERSION、BUG-REPORT-ADDRESSを編集する。
Makefile.amを作って、SUBDIRS = . test、 test/Makefile.amのcheck_PROGRAMSにとりあえず作ったテストプログラムを書く。 INCLUDES = -I$(top_srcdir)/src も追加。 (追記) TESTS = にも追加しないとmake checkで走らせてくれない。
automakeする。configure.inにAM_INIT_AUTOMAKEが無いと怒られるので、 AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERISION) という行を追加する。
automakeする。aclocal.m4が無いと言われるのでaclocalする。
automakeする。install-shが無いと言われるので、automake --add-missingする。
automakeする。AC_CONFIG_FILES([Makefile])が無いと言われるので、 AC_CONFIG_FILES([test/Makefile]) という行と一緒にconfigure.inに追加する。
automakeする。INSTALLが無いと言われるのでautomaek --add-missingする。 COPYINGとしてGPL3がsymlinkされる(Ubuntu)。えええっ!?
automakeする。NEWS、README、AUTHORS、ChangeLogが無いといれる。 COPYINGも一緒に編集する。
automakeする。Makefile.inとtest/Makefile.inができる。
この状態でautoreconfすると、configureができるので実行してみる。 config.h、Makefile、test/Makefileができる。
これで、make checkが走るようになる。 ここで悩ましいのはどこまでレポジトリに登録しておくか。 他のマシンでcheckoutしてすぐ./configureできるようにしたいと思って、 手で書いたファイル以外に、 スクリプト: depcomp missing install-sh aclocal.m4、 生成ファイル: configure Makefile.in test/Makefile.in をsvn addしてみた。 次はコードのtypoの修正から。
● automakeとsubversionを使うプロジェクトでmake commitできるようにする
下記をトップディレクトリのMakefile.amに追記しておくと、 ChangeLogの最初のパラグラフ(空行まで)をcommit logとしてcommitしてくれる。
.PHONY: commit commit: .svn cd $(top_srcdir) && \ log=`sed -n '/^$$/q;p' ChangeLog` && \ svn commit -m "$$log" && \ echo "$$log"
前にも書いたような気がするけど。
● error: expected expression before `struct’
V4L2のioctl(2) APIを呼ぶコードが、上記のコンパイルエラーをもらった。 linux/videodev2.hをincludeしてプリプロセッサだけを通すと、下記のようなコードに展開されていた。
ioctl(…, _IOWR ('V', 36, struct v4l2_queryctrl), …)
_IOWRって何?というわけで、加えて、linux/ioctl.hをincludeするようにしたらコンパイルできるようになった。
脳味噌から汁が出るくらい考える。こともある。
> nga [うちで預かりましょうか?Bフレッツだし もし帯域がすげ〜ことになったら消してしまえばいいだけ出すから(笑)]
> Nyan2 [--xinclude ですが、その情報に近づいていた可能性があります。 手元のドキュメントをxincludeつかって..]
> ずんだあん [お願いしようかな〜。どうやってデータをお渡しするのがいいのかな? > ngaさん それともwww.momonga-l..]
> ずんだあん [と思ってたらmomonga-linux.orgで良さそうだということになりました。またの機会によろしくお願いします。..]
> nga [は〜い]