2010/10/24(日)postgreSQL にて、initdb時と違う文字コードで DB 生成

2017/10/12 04:10 サーバ運営・管理
最新の postgreSQL は、 9.0。
しかし、当方では検証を終えていないので、8.4.x を使用しています。

UTF-8 なDBを作成しようと、
createdb -U hoge -E utf-8 exampledb

としたところ、
createdb: database creation failed:
ERROR: new encoding (UTF8) is incompatible with the encoding of
the template database (EUC_JP)
HINT: Use the same encoding as in the template database,
or use template0 as template.

※見やすいように適当に改行しています。
 実際の表示体裁は、画面幅一杯で折り返して表示します。

という、横文字エラーメッセージ出て作成できません。
散々既出のようですが、メモ代わりということで。。
横文字は解読が苦手orz だが、いろいろサイトを訪ねあたってみると、どうも、template0 を使って生成しろ、ということらしい。。

当方では、initdb (サーバに初期化データベースをインストール)時に、文字コードを EUC-JP にしました。こんな感じ:
initdb -D /db --encoding=EUC_JP --locale=C

この場合、EUC-JP 以外の文字コードでDBを生成する時はこうしないといけないようです。
createdb -U hoge -E utf-8 -T template0 exampledb

これで何事も無かったかのように UTF-8 なDBが生成できました。
何でこんなことになったのかは、知りません。orz

2010/10/21(木)adiary は、ModPerl::Registry ではまともに動作しない

2017/10/12 04:08 サーバ運営・管理
adiary は、AGPLv3ライセンスで提供される、オープンソースのブログシステムです。
携帯電話閲覧にも対応し、wiki も意識しているようです。
記事保存DBに postgreSQL が利用できます。
利用価値の高いソフトウェアです。
Perl(5.6以上のバージョンが必要)で動作し、Apache2 のWorker MPM、mod_perl2 対応としています。

adiary の場合、このmod_perl2 対応というのが曲者。Apache側の設定を、以下のようにしないと、まともに動作しません:

<Directory "*******">
Options ExecCGI
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
PerlOptions +ParseHeaders

Order allow,deny
Allow from all
</Directory>

ModPerl::Registry は、1回目の実行で、コード解析結果をバイナリでメモリ上に保持しておき、高速化を図るモード。それ故、200% - 2000% の高速化になるのです。

ModPerl::PerlRunは、Perl インタプリタをメモリ上に保持し、実行の度にコード解析して実行するモード。このモードでは、数10ms 実行時間が短くなる程度。

ちなみに、mod_perl を無効にしても、勿論、きちんと動作します。
変数の初期化を端折っていると、このような不可解な現象になるのです。
perl では、変数宣言しなくても、勝手に未定義値で初期化する仕組みなので、案外あり得る現象です。

adiary で mod_perl がまともに動作しないという方は、Apache上でのmod_perl 設定を確認してみるとよいでしょう。

2010/10/13(水)SoftBank 3G携帯はある意味デリケート

某携帯サイト制作で、気づいたこと。
UTF-8 いわゆるUnicode で制作する場合に特に注意すべきこと。
<meta content="text/html; charset=utf-8" http-equiv="content-type">
と、最初記述していました。
これだと、シミュレータ上では、きちんと表示されるのに、いざ実機確認すると、文字化けしたり、全く表示されなくなったりするのです。
すなわち、この <meta> タグは無視されます。

ページのコードが Shift_JIS の場合は、特に問題起きません。
保証はしていないようですが、多くの SoftBank 携帯は、ページの文字コードは、デフォルトで Shift_JIS であると決め打ちする挙動のようです。

文字コードを指定する <meta> タグは以下のとおりに記述しないと、正しく認識されないようです。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
パラメータの順番・値はこの通りにしないと駄目です。

このことについて携帯キャリアに質問しても『仕様です』と突っぱねられる(少なくとも Vodafone時代は そんな対応だった)ので、時間の無駄です。

なぜ Unicode で制作しているか。
それは、比較的近い将来に多言語共存環境が予測できる為です。
ということで参考にどーぞ。

2010/10/05(火)こんなエンジニアはいらない

2017/10/12 04:06 一行放談
・手が汚れるのを嫌がる奴
 ― 泥遊びくらい出来ないと、例外なく頭でっかちになり、求めている本質に基づく判断ができないのです。

・ハンダ付けができない奴
・得意分野以外の技術を見下す奴
・自分で調べないで、何でも聞く奴
 ― 質問は、自力解決できない時にするもの。

・オームの法則すら判らない奴
・自分が設計した回路や装置に最後まで責任持たない奴

2010/09/16(木)Chrome に印刷プレビューは無い

2017/10/12 04:05 雑多なトピック
仕事の某所依頼元から、
「印刷プレビューすると、一部が白抜きになるんですけど・・・」
という問い合わせが来て、何のことかとしばし考える。。

ブラウザではちゃんと表示されるのですが、確かに印刷プレビューすると、白抜きになるのです。

こんな感じでCSS使っていると、提起の現象は発生します。

<HTML側>
<div class="info3">
 有限会社 ○○○○○○<br>
</div>

<CSS側>
div.info3 {
 font-family: "MS ゴシック", "Osaka";
 font-size : 38px;
 background-color: #ffcc33 ;
 border-style: solid ;
 border-color: #ff6600 ;
 padding : 5px ;
}


この状態で、ちょうど、background-color が全く機能しない状況になります。
これは、IE や Firefoxのツールバーで、

ファイル(F)→印刷プレビュー(V)→ページ設定(Alt+U)

で表示されるウィンドウにて、

背景の色とイメージを印刷する(C)

にチェックを入れた状態(IE8の場合)にしておくことで解決します。
ところが、Chrome は印刷プレビューがありません。
なので、白抜きになってしまう可能性があります。
つか、Chrome で印刷操作したら、見事に白抜きになってしまいました...orz

また、強引に印刷プレビューをつけることは出来るようです。
Google Chromeで印刷プレビューを使う方法 〔適宜覚書-Fragments〕

この方法は、IE8 の機能を使うだけなので、Chrome の印刷プレビューは出来ません。
IE8 で印刷するイメージが表示されます。

つまり、Chrome の機能にて、印刷の縮小サイズなどの設定が出来ず、正しい印刷イメージが表示できないので不便を強いられます。こだわりがある方は注意が必要です。

2010/07/25(日)こんな IT/ICT 技術屋はいらない

2017/10/12 04:02 経営
・Webサイトを「ほーむぺーじ」という奴
 ― HP 社と間違うことがあるし、失礼になりかねないので、業界のまともな人間は敢えて言わないのです。

・IT/ICT屋を自称するくせに、電子メールの返信に全文引用する奴
 ― 基本的マナーがなっていないので、信用に値しません。どうしてもいうなら徹底的に直していただく。

・Linux と Unix を混同する奴
・GUI 環境でないと駄目とごねる奴
・手が汚れるのを嫌がる奴
 ― 泥遊びくらい出来ないと、例外なく頭でっかちになり、求めている本質に基づく判断ができないのです。

・新しいものが最善だと勘違いする奴
・流行りものが最善だと勘違いする奴
・自分の環境が相手も皆同じだと決め付ける奴
 ― 特に Windows 派に多い。ブラウザひとつとってもIE は特殊です。Opera にも IE ほど致命的なものはないですが、癖があります。

・3文字略語を多用して、技術・知識の高さを披露しようとする奴。
 ― 逆効果で、視野の狭い奴と判断します。

・ハードウェアの知識が皆無な奴。
・2進数、8進数、16進数、論理演算が解からない奴。

2010/07/25(日)FreeBSD 8.1R リリース

2017/10/12 04:01 サーバ運営・管理
昨日の朝、リリースアナウンス来ました。

○主な点
・ZFS ローダ(BOOT時?) を追加
・ZFS サブシステムのうち、zpool をversion 14 にアップデートした
・UFSファイルシステムと ZFS ファイルシステムにて、NFSv4 ACL 設定サポートを追加した。
 対応ユーティリティ cp(1), find(1), getfacl(1), mv(1), setfacl(1)
・UltraSPARC IV/IV+, SPARC64 V を新たにサポートした。
・PowerPC G5 にて SMP(マルチCPU構成の意) をサポートした。
・BIND 9.6.2-P2 にした。
・sendmail を 8.14.4 にアップデートした。
・OpenSSH を 5.4p1 にアップデートした。
・GNOME を 2.30.1 KDE を 4.4.5 にした。

以下、英文です:
リリースノート http://www.freebsd.org/releases/8.1R/relnotes.html
不具合情報 http://www.freebsd.org/releases/8.1R/errata.html

サポート期限は Type=Extended のため、 2012/07/31 になる見込みです。
FreeBSD 8.0 の保守サポートは、 2010/11/30 で終了予定なので、8.0R を稼動させている場合は、それまでに 8.1R にアップデートすることが求められます。

2010/06/13(日)SpamAssassin 3.3.1 の起動エラーを解決する

2017/10/12 04:01 サーバ運営・管理
あちこちで既出だが、やっぱり填まる、、ということで、、
SpamAssassin 3.3.x を perl のCPAN などでインストールし、設定も完了、いざ起動しようとすると、、

 exited or timed out without signaling  production of a PID file: exit
255 at /usr/local/bin/spamd line 2588.


のようなエラーが出て起動しなくなるというもの。
起動前に 一緒にインストールされる /usr/local/bin/sa-update を一度手動実行しないと駄目なようです。
動作に必要なファイルをこのコマンドで作成するのかな、、

/usr/local/bin/sa-update を手動実行後、/usr/local/bin/spamd を実行すると、すんなり起動されます。

2010/06/13(日)FreeBSD 7.3R portupgrade に関するトラブル(1)

2017/10/12 04:00 サーバ運営・管理
OpenLDAP 2.4.22 インストール、X11関係のライブラリを portupgrade かけようとしたときに、
*** Error code 1 (ignored)
/libexec/ld-elf.so.1: Shared object "libstdc++.so.4" not found, required by "groff"


のようなエラーが出て、構築が中断してしまうことがあります。
libstdc++.so.4 というのは、古いダイナミックライブラリで、現在は libstdc++.so.6 になっています。
上記では、groff コマンドが libstdc++.so.4 を要求したので、エラーになっている模様。

この手のエラーが出るコマンドは、以前は /usr/local/bin 配下にあったものが、 /usr/bin 配下に移動しているのが主な原因。
/usr/bin 配下にある該当コマンド実行ファイルを、単純に /usr/local/bin にコピーするか、/usr/local/bin 配下の該当コマンドファイルを削除することで解決します。

/usr/local/bin 配下にあった該当ファイルは、タイムスタンプが 2005 年から 2006年あたりのもので、古い実行ファイルであることが原因のようです。

当方では、単純に /usr/bin 配下から /usr/local/bin 配下にコピーして解決。