Mac OSX で PostgreSQL の dblink をソースからインストール、構築する

MacPorts などによらずにソースから dblink を導入、構築する方法。
意外と難しかったので記録に残しておく。
Mac OS X 10.6.4 と postgresql-8.4.2 で確認。

ビルド、インストール

ここ の手順で、 /usr/local 配下に postgresql-8.4.2 をビルド・インストール済みである前提。

dblink のソースは、 postgresql-8.4.2 のソースに contrib として含まれている。まず、postgresql をビルドしたソースディレクトリに移動して、dblink モジュールのビルド実行。

$ cd /usr/local/postgresql-8.4.2/contrib/dblink
$ ls -l
total 160
-rw-r--r--@ 1 testnoda  admin    489 11 11  2007 Makefile
-rw-r--r--@ 1 testnoda  admin  59923  9 13  2009 dblink.c
-rw-r--r--@ 1 testnoda  admin   2431  6 10  2009 dblink.h
-rw-r--r--@ 1 testnoda  admin   5606  6 10  2009 dblink.sql.in
drwxr-xr-x@ 3 testnoda  admin    102 12 10  2009 expected
drwxr-xr-x@ 3 testnoda  admin    102 12 10  2009 sql
-rw-r--r--@ 1 testnoda  admin   1816  4  5  2008 uninstall_dblink.sql
$ make

ビルドが終わると dblink.so ができているので、 root になった後 make install 実行。

$ sudo su
Password:
# pwd
/usr/local/postgresql-8.4.2/contrib/dblink
# ls -l
total 360
-rw-r--r--@ 1 testnoda  admin    489 11 11  2007 Makefile
-rw-r--r--@ 1 testnoda  admin  59923  9 13  2009 dblink.c
-rw-r--r--@ 1 testnoda  admin   2431  6 10  2009 dblink.h
-rw-r--r--  1 testnoda  admin  46132  9 19 19:57 dblink.o
-rwxr-xr-x  1 testnoda  admin  43960  9 19 19:57 dblink.so
-rw-r--r--  1 testnoda  admin   5568  9 19 19:57 dblink.sql
-rw-r--r--@ 1 testnoda  admin   5606  6 10  2009 dblink.sql.in
drwxr-xr-x@ 3 testnoda  admin    102 12 10  2009 expected
drwxr-xr-x@ 3 testnoda  admin    102 12 10  2009 sql
-rw-r--r--@ 1 testnoda  admin   1816  4  5  2008 uninstall_dblink.sql
# make install
# cd /usr/local/pgsql/lib/
# ls -l dblink.so 
-rwxr-xr-x  1 root  admin  43960  9 19 18:33 dblink.so
# exit
$

構築

次は dblink.sql を実行してデータベースに dblink を登録するが、ソースフォルダにある dblink.sql を使うとエラーが出て登録できない。

$ su - postgres
Password:
$ cd /usr/local/postgresql-8.4.2/contrib/dblink/sql
$ ls -l
total 32
-rw-r--r--@ 1 testnoda  admin  12891 Jun  7  2009 dblink.sql

$ /usr/local/pgsql/bin/createdb local
$ /usr/local/pgsql/bin/psql local -f dblink.sql 
SET
SET
SET

:
:
:

psql:dblink.sql:375: ERROR:  function dblink_connect_u(text, text) does not exist
\set ORIGINAL_USER :USER
\c - dblink_regression_test
psql:dblink.sql:378: \connect: could not create socket: Too many open files
$ /usr/local/pgsql/bin/dropdb local
$

データベースに正しく登録するためには、 pgsql フォルダにインストールされているほうの dblink.sql を使用する。

$ whoami
postgres
$ /usr/local/pgsql/bin/createdb local  
$ cd /usr/local/pgsql/share/contrib/
$ ls
dblink.sql		plr.sql			uninstall_dblink.sql
$ /usr/local/pgsql/bin/psql local -f dblink.sql 
SET
CREATE FUNCTION
CREATE FUNCTION

:
:
:

CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
$ 

Xcode3.2.1

実は春に購入したiMacは勤務先に持って行ったため、秋に新しく出たSnow LeopardiMacを購入した。

Xcode3.2.1は前回の手順では不具合がでるようなので、3.2.2を待とうもう少し調べてみようと思っている。


(2010/1/6追記)

Xcodeで新規にプロジェクトを作成すると、通常は下記のように「x86_64」がでるらしい。

しかし、前回の手順でプロジェクトを作成すると、下記のようにアクティブアーキテクチャが「i386」と「ppc」しかでてこず、この状態でデバッグをしようとするとエラーが出るようである。

もう少し試行錯誤して調べてみようと思う。

Acrobat 9 Pro の「文書を比較」機能はダメ

Acrobat 9 Pro の「文書を比較」機能は、同じ内容のPDFを比較しても「文書に違いがあります」という結果を出す場合がある。

Adobeに原因を問い合わせたら、「同じ文書でも、別の環境でPDF出力すると、違いがでる場合がある」という回答であった。

「文書を比較」機能が、どういう局面で使用されるのか、Adobeは考えたことがあるのだろうか。。。

ドキュメント管理方針は再検討だ。

ていうか、Proなんか買わなきゃよかった。Standardでよかったよ。金返せ。

「日本のWeb業者は想像以上に残念」に追記をしました。

先日書いた仕事の愚痴に追記してみました。
ただ批判ばかりするのも大人げないと思ったので、自分なりに前向きな文章を追記してみました。

http://d.hatena.ne.jp/testnoda/20090719/1247971861

※「(7/25追記)」以降です。

日本のWeb業者は想像以上に残念

レベルの高い技術者の皆様には、想像もつかないような話でございます。

ホームページ業者というのは、なんだか変なのが多い気がします。ここ1,2年でいくつかのホームページ業者と関わったり、関わった人の話を聞いたりしたのですが、残念だったことを晒そうと思います。

  • 本番サーバに公開されたページを客側の管理責任者が修正したら、「勝手に修正するな。ホームページを取り下げるぞ。」と逆ギレ。
  • HTMLソースを見たらゴミタグの山だったりDIVタグが14個入れ子になっていたりする。
  • 業者が自分のサーバーで客のホームページを公開し、アクセス解析のログをとらず、アクセス数の報告もしない。
  • Safariでしか表示確認していない。
  • 本番サーバのコントロールパネルのパスワードを、客側の管理責任者に無断で変更し報告もしない。
  • 電話営業してきたので、「ホームページいらないです」と答えたら逆ギレ。

よくわかっていない広告代理店やデザイナーがホームページに手を出すというのが、一番危険なパターンのようです。(もちろんわかっている広告代理店やデザイナーもいるけど、自分の経験ではまともなのは全体の15%くらい。)

残念なホームページ業者を判別する方法を考えてみました。

  • 納品のタイミングがどこなのか確認。「本番サーバーにアップロードして公開した時点で納品なんだよね」と聞いて、答えが曖昧だったらNG。
  • ホームページの著作権著作者人格権も客のものだよねは客のもので、著作者人格権の行使はしないよね*1と聞いて、「はい当然です」と答えなかったらNG。
  • 動きや効果を出そうとjavascriptやアニメーションなどをむやみに入れて値段をつり上げようとしたらNG。
  • 作業項目を書いた見積書を出してこなかったらNG。(できれば、その中に「コーディング」というような作業項目があって、それなりの金額を割り振っていればOK。)
  • 自分のサーバーで客のホームページを扱おうとする業者は、できれば却下した方がいいです。レンタルサーバーなんて安いところは月何百円で借りれます。どうしても運用管理まで頼むなら、商用目的で頼んでいるのわかってますよねと念を押した上で、アクセス解析のログを取って毎月報告するよう、契約書に盛り込むか一筆書かせましょう。
  • ブラウザのシェア(IE何%とか、Firefox何%とか)を聞いて、概要を答えられない業者はNG。
  • ちゃんと売り上げをあげてない業者は、せっぱつまって初対面の客にいきなりウェブマスター面しようとするからNG。

自分でホームページやブログを作って効果がなかったり問題が起きたりしても、それは自己責任ですが、他人様のホームページを請け負うのって、まったく意味違うでしょう。

話はずれるかもしれないけど、TOMOYO Linuxのメインライン化の話だって、要するに、今まで自分たちが好きなように作っていたものを、他人様が使えるようにするためにどんだけ努力したかって話ですよ。

少なくとも、お金を頂いて他人様のホームページを制作・運用する、ということについては、免許制度か認定制度を設け、あまりにモラルの低い業者は免許や認定を与えないようにすべきではないでしょうか。

      • -

(7/25追記)

逆に考えれば、ホームページ業者のモラルがこれだけ落ちているという現実は、良心的な信頼できる業者にとってはチャンスだと思います。

自分は、この数ヶ月、あるホームページ業者と打ち合わせをしてきましたが、少なくともその業者は、上記の条件の中で、重要なところをクリアしています。まだ確認していないところもありますが、まず、すべての条件をクリアするだろうという信頼感があります。
決して特別に技術力があるとか、そんなことではありません。

  • まず、自分のサーバーでホームページを扱おうというスタンスを持たず、本番環境について何度も確認してきました。
  • きちんと作業工程を書いた見積書を出し、クレームを出したら、見積書の再提出に応じてくれました。
  • 前回頼んだ仕事から、コーディングが常識的であることがわかっています。
  • ホームページというものの性質、特に、ホームページは更新が重要であるため著作権の扱いをソフトウェアに近く考えるべきということを、理解しているように思えます。
  • なによりも、客の要求に対して謙虚であり、常識的です。

客にとって、たくさんの業者に絶望すると言うことは、逆に、信頼できる業者のありがたみ、人材のありがたみが身にしみると言うことでもあります。

自分を含め、客は、交渉の中で浅はかな、間違った要望を出します。しかし、その際、「そんな要望は聞けません、こうしてください」と言われて、小さなプライドを曲げて要求に応じられるかどうかは、その業者が信頼できるかどうかにかかっています。信頼できる相手なら、ありがたみがわかっているから、多少のわがままや不満を言われたとしても、「他の変な業者に頼むよりはましだよなぁ」と譲歩できます。当然のことかもしれませんが、それが交渉力です。信頼関係を築く努力をせず、うわべだけのテクニックだけで要求を通そうとするのは、詐欺師の発想ではないでしょうか。そして、理想論だけで押し切ろうとするのは、せっかくの能力や見識を粗末にする、自分自身への裏切り行為ではないでしょうか。

良心的な業者の皆様は、どうか早く、モラルの低い業者の仕事を奪って業績を伸ばして、Webの仕事は甘くないと言うことを彼らにわからせてください。

現在、ホームページ業者にとって、数十万円程度の小口の仕事は魅力は少ないと思います。しかし、そういった小口の仕事で、良心的な仕事を切望している客は山ほどいます。これは重要なことです。山ほどいる以上、業界そのものへの評価を左右する可能性があるからです。

そういう客は、大半がホームページについて無知です。良心的にやろうとして、客の浅はかさに絶望することも多々あるでしょう。しかし、モラルの低い業者に苦しめられた客は、良心的であることの価値が痛いほどよくわかります。そこを見逃さず、粘り強く交渉して、無意味な妥協をせずに信頼関係を築き上げていってほしいのです。

*1:7/19 追記:一部事実誤認してたので訂正します。著作権を譲渡すると、譲渡した相手に著作物を公表していいと同意したことになりますが、氏名表示権と同一性保持権については別でした。なので、著作者人格権について行使をしないよう同意を取っておく必要があります。契約に盛り込むなど、書面にしておいた方がいいでしょう。

梅田望夫「ウェブ進化論」


昔は、自分は、プログラムを書いたりコンピュータを操作したりする仕事が主だった。しかし、転職した関係で、業者との調整・指示や、一般人への説明のような仕事が多くなり、参考になればと思いこの本を手に取った。
買ったのは1ヶ月くらい前で、その後「日本のWebは残念」の件を知って、これは早く読まねばと思いつつ、ようやく読み終わった。文章を読むのが遅いのが悩みである。


この本には、ネットの「こちら側」と「あちら側」という表現が本の中でよく出てくる。


話は変わるが、自分は、大学の頃空手をやっていた。子供の頃から運動が苦手で、勉強の成績がよくても、体育だけは5段階評価で2とかだったので、コンプレックスがあったわけだ。
打撃系の格闘技がやりたくて空手部に入ったのだが、実は、打撃系の格闘技なら、少林寺拳法部もあった。でも空手部を選んだ。それは、空手と少林寺拳法のどっちが強いかという理由ではなく、その大学の空手部は組手で対外試合に出ていて、少林寺拳法部は出てなかったので、試合に出ている部で鍛えた方が強くなれるんじゃないかと思ったのが理由だった。今考えると、試合に出るから強くなれる、という考えも、必ずしもどうかとも思うが、まぁそのときはそう思った。
その後、まだバブルの残照が残っていた(笑)90年代初頭の数年間を、ボコボコに殴られながら過ごした。あまり強くなれなかったので、部の練習の方針や指導内容に内心不満を持っていた。試合も、ルールがこれでよいのかと疑問を持っていた。試合にもあまり出してもらえず、出てもほとんど勝てなかった。練習がきつかったので、休日はずっと寝てばかりで、あまり遊びにも行かなかった。彼女もできなかった。何年かがんばってみたが、結局やめてしまった。
しかし、今考えてみると、やめたことはともかく、不満を持っていたのは浅はかだったと思う。もちろん、不満を持たないほど、人間は簡単に強くなれるものでもないと思う。しかし、何年間もボコボコに殴られ、試合に出してもらえず、出してもらっても負け、逃げるようにやめたという経験によって、その後もずっと自分の弱さを自己嫌悪しつづけることができた。それは、自分を根底の部分で賢くするということでもあった。


本の話に戻すと、つまり、ネットの「あちら側」という表現は、対外試合をする場所というような感覚に近いのかなぁ、と解釈した。


感想になっているかどうかわからないが、この本を読んでそんなことを考えたり思い出したりした。期待通り、今のコンピュータやネット社会の常識について深いところを考えるという意味で、参考になった。


ウェブ進化論 本当の大変化はこれから始まる (ちくま新書)

ウェブ進化論 本当の大変化はこれから始まる (ちくま新書)