Linuxの最近のブログ記事



fedora11にて.



sudo yum install screen

.screenrcはこんなん(takaてんてーからもらった):



caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= @%H - %LD %d %LM - %c"



GNU screenをインストールして実行してみたら、ステータスラインが表示されない。なぜかと思ったら.screenrcが.screeenrcだったので修正したところまた表示されない。なんでやねんと思いながら確認すると今度は.sceenrcになってた。死にたい。


ちゃんと.screenrcに修正したらびっくりするくらい表示が崩れた。あとで調べたところわかったのだけど、



  1. 日付表示内の日本語が化ける

  2. 文字列の長さが1行を溢れて2行になる

  3. 溢れた部分を最下行に残して、残りは下から2行目に浮かぶ

  4. 常に表示されるのは最下行だけ


という流れでステータスラインが表示されなかったようす。


そんなこととはつゆ知らず、takaてんてー(なぜか工事中の図書館で騒音に苦しんでいたらしい)と悩みに悩んで、次のような流れに:



  • debug onにしてみる

    • してみたら「-DEBUGでビルドされてないので無理!」とか言われたのでGNU screen 4.0.3を落としてきて--DDEBUGをつけてビルドしてみる

    • が/tmp/debugに吐かれたものを見てもイマイチ意味がわからない(なんかlsの実行結果みたいなものがあった



  • tscreen 0.4.9を落としてきてビルドしてみる

    • うまく表示された。ただし文字化けしている。文字化けしている?




文字化けしている?そもそも設定ではステータスラインには:



Friday 28 August



みたいな感じで表示されることを期待しているし、takaてんてーのほうではそのように表示されている...



tnzk: 冷静に考えたらtakaてんてーのだと日付って英語で表示されてて
tnzk: 化ける要素ないと思うんだけど
opentaka: 普通にLANG=POSIXやからねぇ
tnzk: ああ。。。
tnzk: ストイックすぎるw
tnzk: 真似できねえw
opentaka: wwwww

ためしにLANG=POSIXで起動してみる:



$ LANG=POSIX screen

してみたところ、めちゃめちゃ正常に表示された。


というような経緯で冒頭の問題の原因がはっきりした。消極的に、ステータスラインに日本語を表示しないことで対応することに。



defencoding utf-8
encoding utf-8 utf-8
escape ^]v
vbell on
vbell_msg "(OxO)"
caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= [%t] - @%H - %Y/%m/%d %c:%s"

フォーマット指定子は次のURLから参照できる(一部だけっぽい...


forコマンド

| コメント(0) | トラックバック(0)



Q: 連番のファイルをどうこうしたい


http://example.com/photos/0001.jpg ... 0022.jpgというようなファイル群を一括で手に入れたい。


Cheep Answer



$ wget http://example.com/photos/0001.jpg
$ wget http://example.com/photos/0002.jpg
$ wget http://example.com/photos/0003.jpg
...
$ wget http://example.com/photos/0021.jpg
$ wget http://example.com/photos/0022.jpg

Better Answer



#!/usr/local/bin/ruby
22.times do |i|
s = "%02d" % (i + 1)
`wget http://example.com/photos/00#{s}.jpg`
end

Best Answer



$ for i in `seq -w 1 22`
for> wget http://example.com/photos/00$i.jpg




  • サーバのzshが日本語を受け付けないことに気づく

    • bashで試すと通るので調べてみると、どうやらzsh 4.2.xはそもそも扱えないらしい



  • 4.3.xのインストール

  • 最新版は4.3.10だった

  • ダウンロードして展開、./configure --prefix=/usr/local

  • make && sudo make install

  • /usr/local/bin/zshにバイナリが置かれるので、/etc/shellsに追記

  • chshする

  • 日本語とおった!



筑波大学Linux User Group、通称「つくらぐ」での第2回勉強会が開催された。実は第1回も開催されており、かつ僕も参加していた。第1回勉強会の直後につくらぐメンバーになったので、僕が運営側として参加するつくらぐ勉強会は今回が初めてとなる。



  • 発表内容

  • 運営の観点から

  • 次回への雑感

  • まとめ


発表内容


1.GNU/Linux入門 part 2 - opentaka (blog, @)

発表資料


代表opentakaによるGNU/Linuxについての概説。大まかには以下の3つの内容:



  1. 第1回のおさらい

  2. Linuxを使う上で困ったときにどうすれば良いか

  3. OSSプロジェクトに参加するために


全体を通して、「英語と英語圏文化に物怖じせずに飛び込んでいこう」というメッセージが込められているように感じた(発表者のバックグラウンドから僕がバイアスをかけすぎただけかもしれないが)。


とりわけ質疑応答ではそのことについての議論が交わされた。「OSSプロジェクトではドキュメンテーションがなおざりにされがちだが、翻訳者のモチベーションをどう維持すべきか」といったような話。


このことについて参加者から、「英語の課題で翻訳させればいいのでは」という過激で興味深い意見が出ていた。大学は一応学問する機関なのだから、これは確かに僕も有意義であると思うし、実現できると面白い。


具体的には、



  1. 教授がOSS開発関係者である

  2. 英語の講義の担当教員に翻訳したいドキュメントを渡す

  3. 担当教員が学生にそれぞれ割り当てる

  4. 翻訳されたものを集め、OSS関係者の教授がプロジェクトに送る

  5. 翻訳したドキュメントの評価がそのまま学生の成績になる


みたいな仕組みだと面白いのかな。学生が不正に評価を操作することができるのが問題かなー。本質的に防ぎようがないし、どうしたものかしら。


2. Mono と.NET Framework - techno(blog, @)

発表資料


副代表technoたんによるMonoの紹介。



  1. .NET Frameworkの紹介

  2. Monoプロジェクトが始動するまでの経緯

  3. Mono用IDE Mono Developの紹介

  4. Monoを使ったアプリケーション開発の実演


個人的に面白かったのは、Monoプロジェクトが一気に活性化した経緯。いわく、次のような流れだったそうだ:



  1. オバマ大統領の演説がストリーミング配信された

  2. が、SilverLightによるものだったのでLinuxユーザは見ることができない

  3. 誰かが「Linuxでもオバマの演説を見るために、.NET Frameworkの移植を進めよう!」と声を上げる


このことの真偽を僕は確かめたわけではないけれど、充分に説得力がある。確かに当選・就任当時、件の大統領はそれだけのセンセーションを抱えた存在だった。多数の人に共通した意思や期待があるとき、その力を使ってプロジェクトを推し進めることが可能だ。これは一般の企業活動も同じ。


オープンソースプロジェクトを推進するにあたって、時事というものも利用する余地がある、というのは覚えておく価値がありそうだ。


それから、ほとんどの参加者はMonoの名前は知っていたようだが、実際に使ってみたことはなかったようで(かくいう僕もそうだ)、最後の実演の際には歓声が上がったりもしていた。確かにLinuxでビルドしたバイナリファイルが、そのままコピーしてWindowsで動く(またはその逆)には結構インパクトがあって、こういう見せ方は真似したいなあ。


それにしても、てくのたんは前回も今回も、実行環境を完璧に整えるためにデスクトップPCを会場に持ち込むという離れ業を使っていっていて、すさまじい情熱だなあと毎回思う。つくらぐ名物にしませんか?w>本人


3. USBデバイス開発に見るLinuxのオープン性 - tnzk(blog, @)

発表資料


最後は僕の発表。大雑把な内容は以下のとおり:



  1. USBデバイス開発の概要

  2. 汎用USBドライバ/ライブラリlibusbの紹介

  3. Linuxからの制御の実演

  4. Windowsでの開発との比較


タイトルにもあるとおり、もっとも大きなテーマは「LinuxはWindowsと比較して開発環境が整備されていることが多い」というもの。特に、他分野の開発者が少しマニアックな領域に手を出そうというとき、その入門の手立てがわかりやすく準備されている、ということを伝えたかった。これに関してはある程度伝わったのではのではないかなあと思っている。


それからいくつかの小さなテーマ。個人的なもの。



  • なるべくゆっくり喋る

  • スライドに(専門的な話|ネタ)を仕込んでおいて、実際に使うかどうかは適宜判断する


前者は、大筋でうまく行ったけど言葉に詰まったときに崩れてしまった印象がある。けど参加者の内数名に聞いてみたら「そこまででもなかった」とのことだったので、あまり気にしないことにしておく。


後者は、それ自体はうまく行ったものの、必然的に「使いまわし感」みたいなものが出てしまうことがわかった。当然今回の発表資料は新たに作成したものなのだけど、使いまわしの資料を運用でカバーしているような印象を与えるような気がしたので、次回までの対策を考えることにする。


運営の観点から


いくつか問題があった。


会場(中央図書館セミナーC室)の都合上、プロジェクタが利用できなかった

当初はプロジェクタの利用できる部屋を予定していたが、これは確保できなかった。対策として、てくのたんがディスプレイを2枚持ち込み、会場テーブルの中央と端に設置することで、なるべくどの席からでもスライドが見えやすいようにした。


付随する問題として、開催準備の手間がかなり増大してしまった。これもプロジェクタが利用できれば起きなかったこととはいえ、実際にそれは確保できず、開幕が少し遅れてしまって参加者の皆さまにはご迷惑をおかけしたので、この場で言うのも何ですがお詫びします。


参加者数が予想を上回り、椅子が不足した

こちらは会場の変更に関わらず発生した問題。こちらも参加者の皆さま、とりわけ椅子を割り当てることが出来なかった方にはお詫びします。


もう少し大きい会場はないのだろうか?といって、それをするならするで広報活動もちゃんとしないといけないなー。今回はチラシ一枚とmixiでの宣伝だけだったので、次回からはもっと力を入れられるといいなあ。


次回についての雑感



  • 広報活動をもっと精力的に行う

  • 発表者にも色んな層が欲しい

    • 入門者が聞きにきて「むずかしい!」という第一印象を持ってしまうのを避けたい




まとめ


第2回勉強会参加者のみなさま、お疲れさまでした!


円滑に進んだ上、議論も非常に盛り上がって勉強会らしい勉強会になったことがとてもうれしいです。


上でも少しだけ書きましたが、色々な層・色々な分野・色々な感覚の方が参加・発表していただけることを僕は個人的にとても期待しています。そのほうが絶対楽しくなるはず!


というわけで、今回の参加者のあなたも、今回は残念ながら都合が合わなかったあなたも、是非次回・第3回勉強会にお越しください。


みなさまお疲れさまでした!




オチなし危険!!


最近順次OSをFreeBSD 7.1に置き換えているようで、各所で問題が起きている様子。恐ろしいなあ。


と思っていたら自分のところにも災禍が。Tracにアクセスしてもまったくレスポンスが返ってこない。同サーバ内で動かしている別のCGIは動作していたので、ネットワーク周りに問題があるわけではなさそう(余談ながら、この問題のためTracにアクセスを繰り返していたところ「CPU時間食いすぎ!」とさくらからCGIの実行制限をかけられてしまって、そのことが問題の切り分けを難しくしていた)。


問題の解明


レスポンス返ってこないのでは何ともし難いので、とりあえずシェルからtrac.cgiを実行してみることに。確かTracはPython製だった気がするのでpythonで動かすと、



$ python trac.cgi
File "trac.cgi", line 2
LD_LIBRARY_PATH=/home/USER/local/lib;export LD_LIBRARY_PATH
^
SyntaxError: invalid syntax

げ、そんな根本的なことかよ、というか何で今までそれで動いてたの?と思ったら、さくらでTracを動かすに当ってtrac.cgiはシェルスクリプトとして作成していたことを思い出す。中を覗いてみると、



$ less trac.cgi
#!/bin/sh
LD_LIBRARY_PATH=/home/USER/local/lib;export LD_LIBRARY_PATH
TRAC_ENV=/home/USER/var/trac/repo;export TRAC_ENV
PYTHONPATH=/home/USER/local/lib/python:/home/USER/local/lib/python/site-packages;export PYTHONPATH
/usr/local/bin/python /home/USER/www/trac/trac_.cgi

だったので、shで動かす。



$ sh ~/www/trac/trac.cgi
/home/USER/local/lib/python/site-packages/pysqlite2/dbapi2.py:27: RuntimeWarning: Python C API version mismatch for module pysqlite2._sqlite: This Python has API version 1013, module pysqlite2._sqlite has version 1012.
from pysqlite2._sqlite import *
pthread_cond_wait: Unknown error: 0

とのこと。調べてみると、



OSバージョンアップによる主な変更点:


(略)


Python Python 2.4.5 → 2.5.2


http://www.python.org/download/releases/2.5.2/NEWS.txt


お知らせ|「さくらのレンタルサーバ」OSバージョンアップならびに新機能提供開始に伴うメンテナンスのお知らせ | さくらインターネット

というわけなので、まあそういうことなのでしょう;)


(12:14追記)pysqlite2.5.5入れてみてもダメだった


Pythonとpysqliteのバージョンがあってないのかなーと考え、とりあえず最新版らしい2.5.5を入れてみる。次のサイトを参考にしてみた。


錯綜するさくらインターネットでのpysqliteインストール - 常山日記



$ python setup.py clean
$ python setup.py build
$ python setup.py install --home=$HOME/local

そしたらセグフォするようになった\(^0^)/


(28日 16:00追記)symlink python->python2.4をpython->python2.5に変更してセグフォしなくなる



  • id:hktechnoたんに相談してみた。

  • ~/local/lib/pythonから~/local/lib/python2.4へのシンボリックリンクがあったのでこれを削除

  • 改めてpython2.5に向けて張る。

  • shで実行してみる。


まとめると以下のとおり。



$ cd ~/local/lib
$ rm python
$ ln -s python2.5 python
$ sh ~/www/trac/trac.cgi
No module named trac.web
Traceback (most recent call last):
File "/home/emp-cyas/www/trac/trac_.cgi", line 19, in <module>
from trac.web import cgi_frontend
ImportError: No module named trac.web
Status: 500 Internal Server Error
Content-Type: text/plain

Oops...

Trac detected an internal error: No module named trac.web

Traceback (most recent call last):
File "/home/emp-cyas/www/trac/trac_.cgi", line 19, in <module>
from trac.web import cgi_frontend
ImportError: No module named trac.web

セグフォしなくなった!ちゃんとエラーメッセ-ジを返してくれるようになったので対処しようがある。


id:hktechnoたんありがとう!!!!!!!!!!!!


(28日 22:17追記)諦めました


どう考えても再インストールしたほうが早いと判断して修復を諦めました\(^0^)/


次回は確実に動作報告のあるバージョンの組み合わせでインストールしようと思います。というかそういう情報をまとめたサイトってないのかなー。今は色んな人の部ログから断片的な情報を集めることしかできない。




PMMLは会津大学の西村先生が作ったMML拡張とそのコンパイラの実装。LinuxでMMLコンパイラといえばSPICE(電気回路シミュレータにあらず)が有名(っぽい)が、なんとなく適当にインストールしたらあっさりは動かなかったので、こんなん(NOTE:PDF)見つけてPMMLへの手がかりを得る。


入手とインストール


丸井綜研


会大のPMMLの公式サイトはアクセスできない状態らしいのだが、FTPサーバからPMML自体は入手できる様子。


URL: ftp://ftp.u-aizu.ac.jp/u-aizu/pmml/pmml-0.2p1.tar.gz


これをダウンロードして展開すると、INSTALLには「適宜Makefile書き直せ」とか初心者を蹴り殺すようなことが書いてあるがスルーしてビルドする。


とダメなので上記のサイトの「重複した宣言文」なるセクションの処理を施す。で、今度こそビルド。



$ wget ftp://ftp.u-aizu.ac.jp/u-aizu/pmml/pmml-0.2p1.tar.gz
$ tar xvzf pmml-0.2p1.tar.gz
$ cd pmml-0.2p1
$ make && make install

と、大コケした。make時だかinstall時だかわからないが、次のようなエラーが。



TLS definition in /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in input.o



libc.so.6とか絡んでるしぶっちゃけもう読む気にならないような感じだがとりあえず検索。


すると何か結構良くあるトラブルらしい:



/usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o


↑というエラーが出る場合 errno の扱いに問題があるらしい 以下のいずれか もしくは組み合わせの対処法で



  1. ソースプログラム.c の extern int errno; をコメントアウト

  2. #include がなければ 追加

  3. #include を追加してみる

  4. gccのオプションに –include /usr/include/errno.hを指定


errno.h は glibc 提供のヘッダファイルです djbdns qmail 関連 ucspi-tcp のビルドのときに問題がでやすいようです


UNIXとプログラムとゲーム » Blog Archive » errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o

(整形はtnzkによるが文章は原文ママ)


cat comp/*.c |grep include すると、errno.hはインクルードされているようだったので、4番だけを試す(あと、2と3の違いがわからないんだが、どういうことなんだろ?)。


Makefileを開くと、



CCOPTS = -O



という行がある(tnzkの場合は17行目だった)ので、これを以下のように書き換える。



CCOPTS = -O2 --include /usr/include/errno.h



2つ補足。



  • 先ほど引用したページはミスかどうかで「-include /usr/include/errno.h」となっているが、正しくは「--include /usr/include/errno.h」

  • 最適化オプションが-O2に変更されているが、自分がなぜこうしたのかイマイチ覚えていないしどちらでもあまり影響はないんじゃないかと思う


この変更を加えてからmake && make installすると通る。


使ってみる


試しにとりあえずpmmlを呼んでみたらUTF8の端末では化けたのでnkfを噛ませる:



$ pmml -h | nkf -w
PMML Compiler Release 0.2 (Compiler version 0.67)
Copyright (C) 1997,1998 Satoshi Nishimura
This program comes with ABSOLUTELY NO WARRANTY.

使用法: pmml [オプション] ファイル名
オプション:
-0 format 0 の標準MIDIファイルを生成する
-1 format 1 の標準MIDIファイルを生成する
-2 format 2 の標準MIDIファイルを生成する
-c ch,ch-ch,...
指定されたMIDIチャネルだけを出力する
-d 空のトラックを削除する
-e PMMLソース文字列
PMMLソース文字列を評価する
-f {小節数[:ティック], /マーカ, /マーカ/{+,-}小節数[:ティック]}
指定された位置から演奏を開始する
-h ヘルプメッセージを出力する
-i file 初期化ファイルの名前を変更する
-l file 標準MIDIファイルをロードする (-e 'load("file")' に同じ)
-n ノート衝突時におけるノートイベントの修正を行わない
-o file 出力標準MIDIファイルの名前を変更する
-p 優先度によるイベントのソートを行わない
-q 初期化ファイルを読み込まない
-r N 出力分解能を N に設定する (省略時: 480)
-t {小節数[:ティック], /マーカ, /マーカ/{+,-}小節数[:ティック]}
指定された位置で演奏を中止する
-w 警告出力を抑制する
-F file PMMLソースファイルを読み込む (-e 'include("file")' に同じ)
-I dir dir をソースファイル検索パスの先頭に追加する
-R ランニング・ステータス・ルールを適用しない
-T track,track-track,/trackname/,...
指定されたトラックだけを出力する

普通に使える感じ。


サンプルをコンパイルしてみる。



$ cd examples
$ pmml menuet1.pml
$ cp menuet1.mid ~/public_html/

で、http://example.com/~tnzk/menuet1.midにアクセスする。ちゃんとメヌエットが聞こえたらおっけー!




以前8.4だかを入れたときはデフォルトで有効だったのでちょっと戸惑ったけども、/etc/network/interfacesを修正したら解決。


内容は以下。



auto eth0


iface eth0 inet dhcp



再起動。



$ sudo service networking restart

# ちなみにid:yaakaitoくんの家の周りには野良無線LANがあふれかえっていたので別に解決する必要がなかったかもしれないというのは内緒の話だ!




最近MODxなサイトで文章を書きはじめたので、こちらにもはてなスターとかはてブとかつけたいなあと思い設置することに。スターは公式のガイドがあったので参考にした。


はてブはxusersアイコンと↑Bアイコンを表示することにする。参考になりそうなのは以下。



しかしながらMODxに関する情報がないようなので、テンプレートに追加したコードをまとめておく。


xusersアイコン


テンプレートの任意の場所に次のコードを追加。



<a href="http://b.hatena.ne.jp/entry/[(site_url)][~[*id*]~]">
<img src="http://b.hatena.ne.jp/entry/image/[(site_url)][~[*id*]~]" alt="はてなブックマーク - [*pagetitle*]" title="はてなブックマーク - [*pagetitle*]>">
</a>

↑Bアイコン


テンプレートの任意の場所に次のコードを追加。



<a href="http://b.hatena.ne.jp/entry/[(site_url)][~[*id*]~]">
<img src="/image/b_entry.gif" width="16" height="12" style="border: none;" alt="このエントリーを含むはてなブックマーク" title="このエントリーを含むはてなブックマーク" />
このエントリーを含むブックマーク
</a>

まとめ


スターの表示は次のとおり。フォントが小さいけど気にしないことにした。


f:id:Tnzk:20090308121403p:image


はてブの表示は次のとおり。ちゃんと表示される。↑Bアイコンがそれ単独だと目立たないので、テキストを添えてみることにした。


f:id:Tnzk:20090308121404p:image


参考




とりあえずテンプレートを追加しなければ使おうという気にならない(形から入るタイプ)。


テンプレートを探す


MODx日本語版ページのテンプレートは非常にバリエーションに乏しいので、本家から探す。ときどき落ちてるので、そのときはしばらく待つ。


MODx Content Management System | Resource Listing


アーカイブのダウンロード


気に入ったテンプレートがあったら、これを/modx/assets/templatesにダウンロード。今回は本家より"Andreas_03"をインストールして、展開。



# wget 'http://modxcms.com/assets/snippets/repository/repo_download/download.php?dwnParam=YXNzZXRzL3JlcG9zaXRvcnl8MTc1OHxyZXBvX2Rjb3VudHxyZXBvLTE3NTguemlwfEFuZHJlYXNfMDNfMi4wLnppcA=='
# unzip Andreas_03_2.0.zip
# rm Andreas_03_2.0.zip

管理画面での設定



  • リソース→リソース管理→テンプレートと移動

  • 「テンプレートを作成」のクリック

  • テンプレート名: Andreas03

  • テンプレートの説明: 「@wikiで見たことあるデザイン」

  • テンプレートコード: Andreas03/Andreas03.template.htmlの内容をコピペ

  • ツール→グローバル設定→サイト→デフォルトテンプレートと移動

  • Andreas03を選択

  • 「保存」をクリック


テンプレートの修正


上記設定だとスタイルシートが適用されなかったので、テンプレートを見てみる。



<meta name="keywords" content="_your,keywords,goes,here_" />
<meta name="author" content="_your name goes here_ / Original design: Andreas Viklund - http://andreasviklund.com/" />
<link rel="stylesheet" type="text/css" href="/assets/templates/andreas03/style/andreas03.css" />
<title>[(site_name)] | [*pagetitle*]</title>
</head>
<body>

MODxがDocumentRootにインストールされていることを想定している様子。/modxに入っているので、assetsの前のスラッシュを削除して保存。


完了


f:id:Tnzk:20090211202211p:image


参考




今のところ/trac以降すべて同じ.htpasswdで認証しているので、プロジェクトごとにアクセスを制御することができない。


trac.confでは、



<locationMatch "/trac/[[:alnum:]]+/login">
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/trac/.htpasswd
Require valid-user
</locationMatch>

となっていて、:alnum:?がプロジェクト名になることが想定されてる。


タグつき正規表現が使えたら



<locationMatch "/trac/([[:alnum:]]+)/login">
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/trac/$1/.htpasswd
Require valid-user
</locationMatch>

って感じでいいと思ったんだけど、どうやら使えないっぽい。


どーしようかなー。


2009/2/11 14:40 追記


とりあえずプロジェクト名決め打ちで対処。そのうちどうにかしたいなー。



<locationMatch "/trac/portal/login">
AuthType Basic
AuthName "trac"
AuthUserFile /var/www/trac/portal/.htpasswd
Require valid-user
</locationMatch>

このアーカイブについて

このページには、過去に書かれたブログ記事のうちLinuxカテゴリに属しているものが含まれています。

前のカテゴリはjavascriptです。

次のカテゴリはmemoです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.32-ja