Landscape トップページ | < 前の月 2003-08 2003-09 次の月 2003-10 >

Landscape - エンジニアのメモ 2003-09

月ごとの記事一覧
2007年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2006年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2005年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2004年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2003年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2002年: 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
日ごとのページ
2003-09/ 1日 2日 3日 4日 5日 6日 7日 8日 9日 10日 11日 12日 13日 14日 15日 16日 17日 18日 19日 20日 21日 22日 23日 24日 25日 26日 27日 28日 29日 30日

2003-09-30 (Tue)

* Postgres でインデックスを使う max()

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Postgres]

[pgsql-jp: 31147] Re: MAX関数が遅い。
http://ml.postgresql.jp/pipermail/pgsql-jp/2003-September/00 ...
max() はシーケンシャルスキャンになってしまうが、ORDER BY と LIMIT を使うことで
インデックススキャンできる。
select mas_no from g_master order by mas_no desc offset 0 limit 1;
Limit  (cost=0.00..3.24 rows=1 width=4)
  ->  Index Scan Backward using g_master_pkey on g_master  (cost=0.00..166442.75 rows=51427 width=4)


2003-09-29 (Mon)

* PostgreSQL .Net Data Provider

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Postgres]

.Net で postgres を使うためのライブラリ。

The npgsql Project -- .Net Data Provider for PostgreSQL
http://gborg.postgresql.org/project/npgsql/projdisplay.php
LGPL の模様。

PostgreSQLDirect .NET Data Provider
http://crlab.com/pgsqlnet/
商用製品で、standard 版が99ドル。

2003-09-28 (Sun)

* 「テスト可能な」アプリケーションの設計

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [プログラミング]

Javaコードの診断: 「テスト可能な」アプリケーションの設計
http://www-6.ibm.com/jp/developerworks/java/020125/j_j-diag0 ...

2003-09-18 (Thu)

* C# の変数のスコープ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [C#]

C# では、ローカル変数はどこまでスコープ内になるのか。

- 結局ブロック

ブロック単位のレキシカルスコープのようだ。
foreach ではループ変数になったら、例外的にそのブロック内に限定される。
ここら辺は perl と一緒だな。

3.7 スコープ
http://www.microsoft.com/japan/msdn/library/default.asp?url= ...

8.5.1 ローカル変数宣言
http://www.microsoft.com/japan/msdn/library/default.asp?url= ...

2003-09-17 (Wed)

* Partimageに関する覚え書き

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux] [バックアップ]

http://buxus.s31.xrea.com:8080/pukiwiki/pukiwiki.php?%5B%5Bp ...
パーティションをまるごとバックアップするツール。
ネットワーク越しにバックアップすることもできる。
パーティションは unmount してある必要があるけど。

2003-09-16 (Tue)

* 大規模サイトの為のLinuxカーネルチューニング

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux]

* 【PostgreSQLウォッチ】第1回 PostgreSQLの次期版7.4の性能を検証

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Postgres]

* bit version UNIX Frequently Asked Questions

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [unix]

http://www.ne.jp/asahi/tao/elis/bitfaq/
内容は古いが普遍的。読み物としてはいいんじゃないかな。

* 連載 改訂版 C#入門

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [C#]

2003-09-13 (Sat)

* Unattended Windows XP CD - Introduction

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [メモ]

2003-09-12 (Fri)

* スーパーファミコンを改造してデジタル出力

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [ゲーム] [音楽] [メモ]

http://www.alpha-ii.com/Info/snes-spdif.html

これでダンジョンマスターなどの CD 化されていない音源をデジタルで保存できる。改造は大変だろうけどね。

VORC
http://www.vorc.org/cgi/log_reader.cgi?cmd=day&cate=& ...
2003/8/20
スーパーファミコンのサウンドをデジタル出力

SNESampでお馴染みのAlpha-II Productionsが、Super NES (Super FAMICOM) に
S/PDIF端子を取り付け、そのサウンドをデジタル出力させる方法を紹介しています。
Cirrus LogicのCS8405A-CSというチップを配線するだけのごくシンプルな改造で
実現できるのが興味深いところです。

Alpha-II - Information: SNES + S/PDIF
http://www.alpha-ii.com/Info/snes-spdif.html
Adding a digital audio out to the SNES isn't difficult.  (Well, if you're not afraid of a soldering iron.)  The DSP in the SNES outputs a raw 32kHz 16-bit stereo signal.  In order to get this signal into a consumer digital receiver it needs to be reformatted to the S/PDIF standard.

To create an S/PDIF out I'm using a digital transmitter made by Cirrus Logic.  In particular the CS8405A-CS (SOIC), which you can get for around 3 USD.  The CS8405A will take a raw data stream and reformat it to the IEC60958 specification.

2003-09-10 (Wed)

* JavaScript の isInNet() は DNS を引けない環境では遅くなる

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [JavaScript]

- proxy.js/proxy.pac を使うとなぜか遅い

proxy の 設定を一元化するために、2003-06-18 で作成した proxy.js を使っている。しかし、自宅では快適なのだが、仕事場での Web アクセスがどうも遅い。仕事場用の設定は自宅用に比べて条件判定が多いせいだろうと考えていたのだが、CPU の使用率が跳ね上がっている訳でもない。そもそも、この程度の条件分岐なら今時の CPU の負担になることはあり得ないだろう。

- どの条件判定が遅いのか?

どの条件判定で遅くなってるいるのかを調べてみたところ、IsInNet() が遅いことがわかった。

- 調査

Google で isinnet を検索すると、似たような事例がヒットした。

[infotalk,08846] Re: Auto Proxy Config
http://web.archive.org/web/20021130081646/http://www.brl.ntt ...
DNS を引けない環境だと遅くなることがあるとのこと。名前解決が出来ないのではなく、DNS を引けないことが原因らしい。

つまり、DNS サーバが設定されてないとか、DNS サーバが落ちているときなどでもこの症状が出るようだ。解決策は示されていなかったが、どうやら私が遭遇している環境と一致しているようだ。この事例、1996年の頃のものなのだが、今でもこんな謎な症状を引きずっているのか・・・。1996年というと netscape 全盛期だ。となると、おそらく Mozilla も同じなんだろうなあ。

- isInNet() が遅いことへの対策

今までの proxy.js では、IsInNet() を使って 10.0.0.0/8 と 10.84.135/24 かどうかを判定していた。これを shExpMatch() で判定することにした。

単純な比較なので、ホスト名が 10.84.135. で始まっていればイントラネットでもインターネットでも DIRECT になる。さすがに 10. で始まるホスト名をすべて DIRECT にしてしまうと、インターネット上のホストに DIRECT でアクセスしてしまうおそれがあるので、今回は 10. の条件は削除することにした。10ch.tv とかいうドメインにアクセスするときに困りそうだしね。

ついでに 2chtubo もアップデート。local.tubo.img も 壷を経由するようにした。

2003-09-09 (Tue)

* データベースのリストアでユーザ情報が壊れる

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [MS SQL Server]

MS SQL Server2000 に本番サーバからダンプしたデータをテストサーバにリストアしたところ、データ自体は正常にリストアされたようだが、どうもユーザ情報やログイン情報が変わってしまっているようだ。Google で SQL Server データベース リストア ユーザを検索すると MS の Knowledge Base がヒット。

データベースをリストアしたとき、ダンプ元とリストア先のユーザ情報・ログイン情報が異なる場合、リストア先でユーザ情報・ログイン情報が壊れるというバグだった。

回避方法はログイン情報とユーザ情報を作り直す、だそうだ。手間がかかるなあ。

KB274188 [SQL]PRB: 対応するログインの存在しないユーザー
http://support.microsoft.com/default.aspx?scid=kb;JA;274188

KB168001 [SQL]PRB: リストア後のユーザーログイン、権限エラー
http://support.microsoft.com/default.aspx?scid=kb;JA;168001

ディスク障害などでリストアするときも同じ問題が発生しそうだな。

2003-09-08 (Mon)

* crontab の @reboot

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux]

http://yoshi.init.org/diary/?20030904#20030904
DWN 35th より、サーバ reboot 時に個々のユーザが自動的にプログラムを起動させる
init.d のような仕組みが欲しいという話題に、Watson が
How about using @reboot lines in users' crontabs instead? とコメントしている。
そんな方法があったのか…。と言うことで試しに crontab -e に
@reboot echo 'hello, world' > /tmp/boot.log
と言うのを追加して reboot してみたらちゃんとファイルが出来てました。

ユーザ権限で使えるところが良い。いろいろ使い方が広がりそうだ。たとえば・・・。・・・。・・・。無いな。まあそのうち何か必要に迫られて使うときが来るでしょう。

* 箇条書きリストを作る正規表現

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

・Linux
・Apache
・PostgreSQL
を、
<ul>
<li>Linux</li>
<li>Apache</li>
<li>PostgreSQL</li>
</ul>
に置き換える正規表現。

「引用部分を <blockquote></blockquote> で囲む正規表現」を使えば、文字列中から ・ で始まる部分を抽出できるだろう。あとは、・ から次の ・ の終わりまでを <li></li> で囲めばいい。しかし、どこを終わりと見なせばいいんだろう? 改行までだと、複数行の時に困る。

そうだ、最初の ・ の前と、最後の ・ の後には空行を入れさせるようにすればいいのかな。

・Linux
・Apache
・PostgreSQL
こんな感じ。ちょっと面倒かもしれないけど。そうすれば複数行に渡るリストでも大丈夫だ。
でも、複数行のリストって、そんなに使うかなあ? 行末まででもいいような気がしてきた・・・。

* 引用部分を <blockquote> </blockquote> で囲む正規表現

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

chalow 0.19 から。
### 引用 (quote): "| ..." か "> ..."
if ($remove_quote_mark == 1) {
my $a;
s!((^\t((\||>)[^\n]*)\n)+)!'<blockquote>'.($a = $1,
    $a =~ s{^\t(\||>)\s?}{\t}gm, $a).'</blockquote>'!gme;
} else {
    s!((^\t((\||>)[^\n]*)\n)+)!<blockquote>$1</blockquote>!gmx;
}

なるほどなるほど。
m オプションを使い、^ を各行に適用させる。
あとは \t で始まり、> か | が存在し、改行で終わる行を + でグループ化する。
それらを <blockquote></blockquote> で囲む。

分岐してるのは、置換後の文字列に > と | を 残すかどうかを分けるため。
引用記号の > と | を残さないようにしてる方は、さらに正規表現で置換してるのか。

ところで、
s!((^\t((\||>)[^\n]*)\n)+)!<blockquote>$1</blockquote>!gmx;
正規表現オプション x は不要だろう。
x は正規表現中にの空白文字を無視するオプション。
これを使うことで、コメントを埋め込んだり、インデントを付けたりできる。

* Google サーバの IP アドレス

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Google]

DNS の生死を確認するために、IP アドレスで接続したいときがある。
以前は大学のアプリケーションサーバのアドレスを使っていたが、もっとわかりやすいアドレスがいいだろうということで、Google サーバ群の IP アドレスを調べてることにする。

Google で Google サーバ IP アドレスを検索するとヒット。
Googleサーバー ホスト名IPアドレス
http://bingoall.net/google/googleserver.html

- 3つほど抜粋しておく

http://216.239.33.100/
http://216.239.41.100/
http://216.239.55.100/

* ping してエラーだったらメールするシェルスクリプト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [シェルスクリプト]

土曜日、日曜日と、スイッチの障害が発生した。しばらくスイッチを監視しなければならない。監視を楽にするために、サーバが IP reachable かどうかをチェックして、エラーだったらメールするスクリプトを書いた。これを cron で一分毎に実行する。
#!/bin/sh

echo `date`

TARGET_IP='10.122.23.254 10.122.23.249 10.122.23.1';
for ip in $TARGET_IP; do
        ping $ip -c 4
        if [ $? -ne 0 ]; then
                echo 'ping error'
        mail -s "Ping Error at ${ip}" example@example.com, example@example.com << EOF
        Ping Error at ${ip} `date`
EOF
        fi;
done

2003-09-07 (Sun)

* VS.NET のプロジェクト参照とファイル参照

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net]

VS.NET で、他のプロジェクトを参照する方法の違い。

- プロジェクト参照

プロジェクトソースツリーを参照する。
参照している DLL のプロジェクトが現在編集中のソリューションに含まれていれば、ソリューション全体のソースを再取得し、ソリューションをリビルドすることで同時に DLL も再コンパイルされる。

- ファイル参照

ファイルパスを指定して、DLL ファイルそのものを参照する。
DLL のソースがが更新された場合、再コンパイルが必要。
DLL のソースが現在編集中のソリューションに入っていても、そのプロジェクトの DLL 出力先と参照ファイルのパスが一致していない場合、古い DLL を参照し続ける可能性がある。

2003-09-06 (Sat)

* シェルスクリプトで直前のコマンドの終了コードをチェック

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [シェルスクリプト]

直前のコマンドの終了コードは $? という特殊変数に格納される。
こんな感じでテストできる。超便利だね。
if [ $? -ne 0 ]; then
  echo "Error";
else
  echo "OK";
fi

2003-09-05 (Fri)

* VS.net で DLL の参照を解決できない

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [.net]

VSS でプロジェクトの作業フォルダを修正し、VSS にあるソリューションを、VS.NET の「ソース管理から開く」で取得しても、先ほどの修正が反映されない。

IIS から該当するソリューションオブジェクトを削除して、もう一度「ソース管理から開く」を
実行してもダメ。

なんでだろう・・・? Windows だからリブートすれば直るんだろうか? 週明けに前任のプログラマに確認しよう。

2003-09-02 (Tue)

* Google 検索する url を出力する one liner

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

$ perl -lne 's/([^\w ])/"%".unpack("H2", $1)/eg; tr/ /+/; printf("http://www.google.co.jp/search?num=50&lr=lang_ja&ie=euc-jp&q=%s\n", $_)'

こんな風に使う。
$ echo 'Linux 日本語' | perl -lne 's/([^\w ])/"%".unpack("H2", $1)/eg; tr/ /+/; printf("http://www.google.co.jp/search?num=50&lr=lang_ja&ie=euc-jp&q=%s\n", $_)'
http://www.google.co.jp/search?num=50&lr=lang_ja&ie= ...

- alias しておこう。

alias googleuri='perl -lne '"'"'s/([^\w ])/"%".unpack("H2", $1)/eg; tr/ /+/; printf("http://www.google.co.jp/search?num=50&lr=lang_ja&ie=euc-jp&q=%s\n", $_)'"'"

としておけば、
$ echo 'Linux 日本語' |googleuri
http://www.google.co.jp/search?num=50&lr=lang_ja&ie=euc-jp&q=Linux+%c6%fc%cb%dc%b8%ec
となる。

2003-09-01 (Mon)

* bash で ' と " のエスケープ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [bash]

"P's" という文字を echo で出力させたい。

- " を '"' に、' を "'" に置き換える。

$ echo '"P'"'"'s"'
"P's"

なんか他にもエスケープしなければならないケースがあるようだ。
上記の方法を使うときは、もう一度テストが必要だろう。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。