[pgsql-jp: 31147] Re: MAX関数が遅い。
http://ml.postgresql.jp/pipermail/pgsql-jp/2003-September/00 ...
max() はシーケンシャルスキャンになってしまうが、ORDER BY と LIMIT を使うことで
インデックススキャンできる。
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)
.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ドル。
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ドル。
Javaコードの診断: 「テスト可能な」アプリケーションの設計
http://www-6.ibm.com/jp/developerworks/java/020125/j_j-diag0 ...
http://www-6.ibm.com/jp/developerworks/java/020125/j_j-diag0 ...
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= ...
- 結局ブロック
ブロック単位のレキシカルスコープのようだ。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= ...
http://buxus.s31.xrea.com:8080/pukiwiki/pukiwiki.php?%5B%5Bp ...
パーティションをまるごとバックアップするツール。
ネットワーク越しにバックアップすることもできる。
パーティションは unmount してある必要があるけど。
パーティションをまるごとバックアップするツール。
ネットワーク越しにバックアップすることもできる。
パーティションは unmount してある必要があるけど。
http://www.alpha-ii.com/Info/snes-spdif.html
これでダンジョンマスターなどの CD 化されていない音源をデジタルで保存できる。改造は大変だろうけどね。
VORC
http://www.vorc.org/cgi/log_reader.cgi?cmd=day&cate=& ...
Alpha-II - Information: SNES + S/PDIF
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.
* 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 も 壷を経由するようにした。
* データベースのリストアでユーザ情報が壊れる
この記事の直リンク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
ディスク障害などでリストアするときも同じ問題が発生しそうだな。
データベースをリストアしたとき、ダンプ元とリストア先のユーザ情報・ログイン情報が異なる場合、リストア先でユーザ情報・ログイン情報が壊れるというバグだった。
回避方法はログイン情報とユーザ情報を作り直す、だそうだ。手間がかかるなあ。
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
ディスク障害などでリストアするときも同じ問題が発生しそうだな。
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 してみたらちゃんとファイルが出来てました。
ユーザ権限で使えるところが良い。いろいろ使い方が広がりそうだ。たとえば・・・。・・・。・・・。無いな。まあそのうち何か必要に迫られて使うときが来るでしょう。
・Linux
・Apache
・PostgreSQL
を、
<ul>
<li>Linux</li>
<li>Apache</li>
<li>PostgreSQL</li>
</ul>
に置き換える正規表現。
「引用部分を <blockquote></blockquote> で囲む正規表現」を使えば、文字列中から ・ で始まる部分を抽出できるだろう。あとは、・ から次の ・ の終わりまでを <li></li> で囲めばいい。しかし、どこを終わりと見なせばいいんだろう? 改行までだと、複数行の時に困る。
そうだ、最初の ・ の前と、最後の ・ の後には空行を入れさせるようにすればいいのかな。
でも、複数行のリストって、そんなに使うかなあ? 行末まででもいいような気がしてきた・・・。
・Apache
・PostgreSQL
を、
<ul>
<li>Linux</li>
<li>Apache</li>
<li>PostgreSQL</li>
</ul>
に置き換える正規表現。
「引用部分を <blockquote></blockquote> で囲む正規表現」を使えば、文字列中から ・ で始まる部分を抽出できるだろう。あとは、・ から次の ・ の終わりまでを <li></li> で囲めばいい。しかし、どこを終わりと見なせばいいんだろう? 改行までだと、複数行の時に困る。
そうだ、最初の ・ の前と、最後の ・ の後には空行を入れさせるようにすればいいのかな。
こんな感じ。ちょっと面倒かもしれないけど。そうすれば複数行に渡るリストでも大丈夫だ。
・Linux
・Apache
・PostgreSQL
でも、複数行のリストって、そんなに使うかなあ? 行末まででもいいような気がしてきた・・・。
chalow 0.19 から。
なるほどなるほど。
m オプションを使い、^ を各行に適用させる。
あとは \t で始まり、> か | が存在し、改行で終わる行を + でグループ化する。
それらを <blockquote></blockquote> で囲む。
分岐してるのは、置換後の文字列に > と | を 残すかどうかを分けるため。
引用記号の > と | を残さないようにしてる方は、さらに正規表現で置換してるのか。
ところで、
x は正規表現中にの空白文字を無視するオプション。
これを使うことで、コメントを埋め込んだり、インデントを付けたりできる。
### 引用 (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 は正規表現中にの空白文字を無視するオプション。
これを使うことで、コメントを埋め込んだり、インデントを付けたりできる。
DNS の生死を確認するために、IP アドレスで接続したいときがある。
以前は大学のアプリケーションサーバのアドレスを使っていたが、もっとわかりやすいアドレスがいいだろうということで、Google サーバ群の IP アドレスを調べてることにする。
Google で Google サーバ IP アドレスを検索するとヒット。
Googleサーバー ホスト名IPアドレス
http://bingoall.net/google/googleserver.html
http://216.239.41.100/
http://216.239.55.100/
以前は大学のアプリケーションサーバのアドレスを使っていたが、もっとわかりやすいアドレスがいいだろうということで、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/
土曜日、日曜日と、スイッチの障害が発生した。しばらくスイッチを監視しなければならない。監視を楽にするために、サーバが 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
VS.NET で、他のプロジェクトを参照する方法の違い。
参照している DLL のプロジェクトが現在編集中のソリューションに含まれていれば、ソリューション全体のソースを再取得し、ソリューションをリビルドすることで同時に DLL も再コンパイルされる。
DLL のソースがが更新された場合、再コンパイルが必要。
DLL のソースが現在編集中のソリューションに入っていても、そのプロジェクトの DLL 出力先と参照ファイルのパスが一致していない場合、古い DLL を参照し続ける可能性がある。
- プロジェクト参照
プロジェクトソースツリーを参照する。参照している DLL のプロジェクトが現在編集中のソリューションに含まれていれば、ソリューション全体のソースを再取得し、ソリューションをリビルドすることで同時に DLL も再コンパイルされる。
- ファイル参照
ファイルパスを指定して、DLL ファイルそのものを参照する。DLL のソースがが更新された場合、再コンパイルが必要。
DLL のソースが現在編集中のソリューションに入っていても、そのプロジェクトの DLL 出力先と参照ファイルのパスが一致していない場合、古い DLL を参照し続ける可能性がある。
$ 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