おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2002年07月13日(Sat) 昨日は夏祭りで友だちと会って飲んできちゃったよ

おやじバグ連発な私へ

rubyスクリプトのシンタックスを確認するのは、ruby -c スクリプトでよろし。

おやじバグって、どなたの日記で見たんだっけ?

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マシンで以下の手順で作りました。

  1. まず必要なパッケージだけ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
    
  2. rpmvercmpのビルド
    cd ~/Momonga/tools
    make
    
  3. 設定ファイルのコピー。eucじゃないと嫌だという勝手なやつ。
    cd ~/Momonga/pkgs
    nkf -e ../tools/example.OmoiKondara >| .OmoiKondara
    
  4. オモコン
    ../tools/OmoiKondara
    
  5. できなかったパッケージの修正とかソース取とかをして、 オモコンをくりかえす。
  6. できあがったパッケージのインストール
  7. 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でもちょっと控えた方がいいかな?という気も。 どうしようかな?

ジャッキー・チェンの映画

ここ何か月か、夜遅くにジャッキー・チェンの古い映画をやってる。ドイツ語に吹替えられてて何を言ってるのかわからないんだけど、けっこうドタバタしてておもしろいんだな。

本日のツッコミ(全5件) [ツッコミを入れる]

> nga [うちで預かりましょうか?Bフレッツだし もし帯域がすげ〜ことになったら消してしまえばいいだけ出すから(笑)]

> Nyan2 [--xinclude ですが、その情報に近づいていた可能性があります。 手元のドキュメントをxincludeつかって..]

> ずんだあん [お願いしようかな〜。どうやってデータをお渡しするのがいいのかな? > ngaさん それともwww.momonga-l..]

> ずんだあん [と思ってたらmomonga-linux.orgで良さそうだということになりました。またの機会によろしくお願いします。..]

> nga [は〜い]


2003年07月13日(Sun) 夏である

Oper für alle

オペラフェスティバルの一環として、ナショナルシアターの前の広場に大きなスクリーンを置いて中の演目を中継する催しがあります。外で見るのは無料で、たくさんの人がつめかける。

今年は、去年立ち見をしたファルスタッフでした。広場の構造からスクリーンは西を向いているのですが、夕日が直接当たっても画面が見えるのがすごい。残念ながら路上オーケストラほど音質がよくなく、娘はぜーんぜん興味を持たなかったのですが…。

ドイツの人は運転が下手か?官僚がアホなのか?

そうそう。オペラを眺めた帰りにいつもはすいている高速道路が突然渋滞になりました。前方は他の高速との合流地点があるのですが、それにしても突然なのでもしかしたら事故かも?と思ってのろのろ進んでいく。合流地点を過ぎても渋滞は続き、反対方向の車線にパトカーの青いライトが*1。反対側でも事故かーと思っていると、こちら側にもパトカーが。

結局、反対方向の車線から車が一台、中央分離帯をつきやぶってこちらの車線に転がってきたようでした。乗用車の外装はぐしゃぐしゃで、窓やドアに中央分離帯の土が付いています。ドライバーらしき女性が警官と呆然としながら話していたので、怪我人は居なかった(か、既に救急車で運ばれていたっか)ようなのでした。

もし目の前に反対車線から自動車が飛んできたら、と思うとぞっとします。他に事故車らしき自動車が停まっていなかったのがよかった。

しかし。

週に2回くらいは何かの事故をみかけてます。交差点でぶつかってたり、路肩の林につっこんでたり。引っ越しの時にはわき道からのろのろと出てきたトラックにぶつかりそうになったんだった。こっちを確認してから出てくるな。どあほー。

「信号が消えてる時は青」とか、交差点のあちら側に信号が無くて信号待ちの時はほぼ90度横にある信号を見ていないといけない(ので発車するまで前は見られない)、とか、80km/h制限の道路の交差点に信号が無いとか、理解に苦しむ交通ルールの多いドイツだけど、事故の原因にならないように気をつけないと。そして、巻き添えを食いませんように…。

*1 ドイツのパトカーや救急車の警告灯は青です。

本日のツッコミ(全3件) [ツッコミを入れる]

> タロウ [ドイツ車が頑丈なのって、ひょっとしたらこういう事実があるから?]

> zunda [事実というべきか偏見というべきか…。 事故のときに必要なのはVolvo的頑丈さ(大阪で高速のガードレールに刺さって無..]

> タロウ [まあ、Volvoは別格なんだろうけど、ある程度以上の衝撃だとどの車もあんまりかわらないのかもしれないねえ。]


2004年07月13日(Tue) ずんこが寝坊すると家族が寝坊する

[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に移動。


2005年07月13日(Wed) いろいろトラブル対応

僕自身は電話でやっていただいたことを聞いているだけなのに、なんだかとっても仕事をした気になってしまう。


2006年07月13日(Thu) 月が明るかった

[Ruby] るびま15号出ました

編集させてもらってると、みんなすごいなあ、と思う。僕もがんばろー。

[memo] 星に願いを

東京ナス化計画。GPSが欲しくなるねぇ

[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年07月13日(Fri) 長い一週間でした

更新プログラムをインストールしています

久しぶりに起動したら、「Service Pack 2 for Windows XP Professional, x64 Edition をダウンロード中 (更新プログラム 1個中1個)...」と言ったまま、ぜんぜーんファイルが降りてきてくれません。どうしたものかなあ。

放っておいたら進んだ。プログレスバーが表示されないだけでした…ってだめだよねえ。


2008年07月13日(Sun)

[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 このご時勢コンパイラが入ってたら標準的とは言えないのかな

[memo] dpkgにファイルの持ち主のパッケージ名を表示させる

rpm -qf <パス>に対応するのはdpkg -S <パス>

野良ビルドの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するようにしたらコンパイルできるようになった。

[memo] Ubuntuでパッケージのソースを得る

たぶんDebianでも一緒だろう。

dpkg-devを入れておいて、apt-get source luvcviewなどとすると、カレントディテクトリの下にいろいろコピーしてくれる。

本日のツッコミ(全2件) [ツッコミを入れる]

> kou [そういえば、GNUビルドシステムを使ったパッケージの作り方のチュートリアルがありましたよ。ついでに自動テスト環境もで..]

> zunda [ありがとうございます!TDDの見本ですね。今回はハードウェアが対象なのでどこまで自動化できるか微妙なのですが、慣れれ..]


2009年07月13日(Mon) MSGでいっかいやすみ

SSDのマシンでFirefox 3.5にskkimeで記入していたら、突然5秒ほどの間、文字の入力も含めてFirefox関連のものすべての反応が止まった、OS (Windows XP) 自体は生きていてウインドウの切替えはできた。これがもしかして噂のプチフリーズだろうか?これで僕も時代の流れに乗れた、とか喜んでないで対策を考えなくちゃな。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>