watchコマンドをつかってディレクトリを監視

watchコマンドは引数で与えられたコマンドを定期的に実行して表示するだけのツール。

例えば空のディレクトリにファイルがつくられるのを見たいとき。lsを連打するのではなく。watch lsすれば監視することができる。

それ以外にも、以下のようにすればディスク容量を監視できる。

phpでcontent-typeを指定してバイナリファイルを送信

readfile()を使うのがいいらしい。

ここではコンテントタイプにapplication/x-xpinstallを指定している。Content-Dispositonなどをつければ保存させるときのファイル名をしていできる。ただしファイル名が日本語の場合はURLエンコードしないとならないと思う。

duplicityを使って暗号化バックアップ

duplicityは圧縮+暗号化+差分だけバックアップできるコマンドラインツール。しかし実際に使ってみるとバックアップサーバがリモートにあるときなんどもパスワードを聞かれてうざかったのでここではあらかじめパスワードなしでsshでバックアップサーバに接続できるようになっている(参照

ローカルの/var/www/html 以下を192.168.0.99のbackedユーザのbackディレクトリに圧縮して暗号化してバックアップ。

最初の実行ではフルバックアップされる。同じコマンドを行うと次からは差分だけがバックアップされる。

ローカルにバックアップするにはfileプロトコルで指定する。URLプロトコルを使っているほうはバックアップサーバになる。

元に戻すにはURLプロトコルのほうを先に持ってくる。

パスワードなしでリモートでコマンドを実行する

OpenSSHをパスワードなしで利用する。キーペアを使う。

接続元でキーペアを作る。

いろいろ聞かれるがすべてエンターを入力すると、~/.ssh以下にキーペアがつくられる。

秘密鍵id_rsaと公開鍵id_rsa.pubができた。この公開鍵をリモート(ここでは192.168.0.99)にコピーする。ここではリモートのユーザ名はローカルと同じ。

sshdのrsa鍵を置くファイルをsshdの設定を調べてそのファイルに追加する。ここではリモートはUbuntuでファイルは ~/.ssh/authrized_keys になっている。Ubuntuの場合はデフォルトでProtocol 2になっている。

rsaの公開鍵認証が有効になっているか確認する。

sshdサーバを再起動。

ローカルからパスワードなしで接続できるか確認する。

MSYSとMingWでwin32のDLLをつくる

MingWとMSYSはインストールされているものとする。

以下のファイルwinhello.cを作成する。

MSYSシェルからコンパイルする。

成功するとwinhello.dllができる。

これをrundll32.exeを使って実行してみる。

できた。

gccの標準のインクルードパスを調べる

gccのインクルードパスと言っても、#includeを処理するのはプリプロセサなので、まずgccがどのプリプロセサを使うかを調べて、そのプリプロセサからインクルードパスを調べなければならない。

なので最初にgccが使うプリプロセサを調べなければならないが、まともな方法がわからないので、以下のソースを-vオプションつきでコンパイルしてそこから探してみる。

これでcc1を使うことがわかったが、すでにここにインクルードパスが出力されるので目的は達成してしまった。

それでも少しまともにやってみると以下のようにできた。

追記

でいいらしい。

Linuxサウンドシステムの歴史

Linuxのサウンド関係が複雑なので、いままで調べたものプラス自分の想像で歴史的に記述。

サウンドがなかった時代

ビープ音しかならなかった。

サウンドハードデバイスができて来た

Sound Blaster 16来た。アプリはこれを直接叩いた。他のハードもできて来たが最初はSB16エミュレーション機能をハードがもっていた。

OSSできた

SB16的なインターフェースにまとまってきたので、これをOSSとしてまとめた。これで統一的なインターフェースができた。ソフト開発者はOSSを使えばいいようになった。/dev/dspに音データを流し込む。

ミキシングはハードでやっていた。でもソフトでやるほうがいいじゃんてことになってきた。

aRtsやESDできた

ハードがミキシングしなくなったので、ソフトでやることにした。aRtsとESDができた。どちらも新しいサウンドシステムを提供する。ここでミキシングしてOSSに送ることにした。アプリケーションはこれに合わせて書き換えられた。

これによって2つのアプリが同時に音を鳴らせるようになった。(いままでは1つのアプリが同時にならせるだけだった?)

でもaRtsとESDの両方同時に鳴らすことはできなかった。どうじにOSSに送ることはできない。ちなみにaRtsは主にKDEで使われ、ESDはGnomeで使われた。

この時点でいろいろなアプリが出てきてしまった。OSSに直で送るアプリ、aRtsやESDをつかうアプリ、OSSに直で送るやつがいるとaRtsやESDが鳴らせなくなる。

SDLやlibaoできた

そこで、OSS、aRts、ESDをラップするライブラリSDLやlibaoができた。

ALSAできた

ところがOSSのライセンスが変わってしまった。もうOSSは止めてALSAを作ることにした。ALSAならMIDIも流し込める。ソフトミキシングもできる。OSSのためにOSSエミュレーションもできるようにした。

ところがALSAは難しく、OSSエミュレーションがよく動くのでアプリはOSSで書かれた。ただ問題があってOSSエミュレーションはソフトミキシングができなかった。

PulseAudioできた

ごちゃごちゃしてきて訳がわからなくなったが結局2つのアプリで同時に鳴らせないのでPulseAudioでやることにした。ALSAのデータはPulseAudioに送ることにした。そこでミキシングして出せばいいようにした。

しかし現在のfedoraなどではOSS直のアプリはPulseAudioには行かないように設定されている。padspコマンドを使えば、OSS直アプリのOSS出力をPulseAudioに送れるようになっている。

aRtsやESDがどうなっているのかは調べてない。

fedora10のapacheログをawstatsで解析

ここではfedora10でvirtual hostでサーバを運営していて、ホスト毎に解析する。

awstatsのインストール

awstats.confの作成

www.example.comは実際のホスト名に変える。

confの編集

# vi awstats.www.example.com.conf

以下の3箇所を自分のに合わせて編集

apacheの設定ファイル編集

Allow from に 192.168.0.を加える

ブラウザで確認

サーバを再起動後、ブラウザで以下を開いて確認する。192.168.0.100はサーバのアドレス
http://192.168.0.100/awstats/awstats.pl?config=www.example.com

アップデートは一時間後とに行うように設定されてるようだ。/etc/cron.hourly/awstats 参照

Fedora10のvmware player 3で音割れする

VMware Player 3.00からデフォルトでALSAを使うようになっている(多分)。ALSAはPulseAudioに出力するため、重くなると思われる。

PulseAudioはサウンドサーバで、複数のアプリで同時に音を鳴らせるようにするためのようなもの。PulseAudioを使えば、VMwareを起動しながら、ホストでも他のアプリで音を鳴らせるようになる。

ALSAを使わずサウンドを独占して使うようにするには以下のようにOSSを選択する。

.NET2.0のアプリがWindows2000でネットワークフォルダから起動できない

ネットワークフォルダ上にある.Net Framework 2.0でつくったアプリを実行すると落ちる。ゾーンのセキュリティが原因のようなので以下のように直す。

[コントロールパネル]→[管理ツール]→[Microsoft .NET Framework 2.0 構成を開く。

Microsoft .NET Framework 2.0 構成

[ゾーンセキュリティの変更]をクリックし、セキュリティ変更ウイザードで変更する。
<img src="http://ambiesoft.fam.cx/blog/wp-content/uploads/2010/03/zoneserurity-150x142.png" alt="" title="zoneserurity" width="150" height="142" class="alignleft size-thumbnail wp-image-1723" />

イントラネットの信頼度を変えればローカルネット上のファイルに適用される。信頼済みサイトを適用する場合にはあらかじめサイトを登録しておく(インターネットオプション)。以下参照。

上図のcomputernameは実際の信頼するコンピュータ名。ネットワークドライブを指定してもいい。