Drupal で、XMLRPC を使う方法(初級)

Drupal を他のサイトやアプリケーション、プログラムと連携させるには、XMLRPC で連携させるという方法がある。Drupal は XMLRPC サーバになれるから、自身の作製したモジュールから XMLRPC サーバのハンドラ(XMLRPCクライアントから呼ばれるメソッドのこと)を書いてあげればよい。サーバ側はロジックを書くことに専念できるので、これだけでも Drupal を使うメリットでもあるはずだ。 すべては hook_xmlrpc がヒントとなる。セオリーに従って api.drupal.org を調べてみるのではあるが、説明されているようで私には理解不能だった^^;ドキュメントが整えられているようで中身がよくわからないのが現状の Drupal である。まぁここのサンプルでスラスラ理解できる人は、よほど優秀なプログラマーだろうからこのサイトには訪れて来るまい(笑)
Drupal を他のサイトやアプリケーション、プログラムと連携させるには、XMLRPC で連携させるという方法がある。Drupal は XMLRPC サーバになれるから、自身の作製したモジュールから XMLRPC サーバのハンドラ(XMLRPCクライアントから呼ばれるメソッドのこと)を書いてあげればよい。サーバ側はロジックを書くことに専念できるので、これだけでも Drupal を使うメリットでもあるはずだ。 すべては hook_xmlrpc がヒントとなる。セオリーに従って api.drupal.org を調べてみるのではあるが、説明されているようで私には理解不能だった^^;ドキュメントが整えられているようで中身がよくわからないのが現状の Drupal である。まぁここのサンプルでスラスラ理解できる人は、よほど優秀なプログラマーだろうからこのサイトには訪れて来るまい(笑)

Drupal で、古くなったノードを hook_cron で削除する方法

Drupal のドキュメントは、すっごく整備されているようでいて内容を見ると実はよくわからないのがほとんどである。この hook_cron についても、https://drupal.org の過去ログからやっと探し出したものだ。 ポイントは、node_delete を呼び出す前に必ず
<?php

global $user;
$user = user_load(array('uid' => $node->uid));

?>
と、global $user を $node のもの($node が持つ uid)にしてあげるということである。 Win32 プログラミングで CreateProcessAsUser の前に hTokenImpersonateUser が必要なのと同じようなノリなのだろう。以下の例は、30日以上前のノードを hook_cron (この例では example_cron) で処理する方法。
Drupal のドキュメントは、すっごく整備されているようでいて内容を見ると実はよくわからないのがほとんどである。この hook_cron についても、https://drupal.org の過去ログからやっと探し出したものだ。 ポイントは、node_delete を呼び出す前に必ず
<?php

global $user;
$user = user_load(array('uid' => $node->uid));

?>
と、global $user を $node のもの($node が持つ uid)にしてあげるということである。 Win32 プログラミングで CreateProcessAsUser の前に hTokenImpersonateUser が必要なのと同じようなノリなのだろう。以下の例は、30日以上前のノードを hook_cron (この例では example_cron) で処理する方法。

Linux で、postfix を使ってイントラネットからメールを送信する方法

Fedora Core 6 の場合、デフォルトの MTA (Mail Transfer Agent) は sendmail となっている。で、実験用 Linux サーバをイントラネットに置いてメールを出そうとしたら、Connection Refused というエラーメールが返ってきてしまった。どうもイントラネットから外へのポート 25 がふさがっているから外部のホストにつながらないらしい。 そこで sendmail の設定をいろいろと調べてはみたものの、やっぱり sendmail.mc とか sendmail.cf は呪いたくなります。結局挫折。今までの人生の中で何度か sendmail を設定する機会があったが、いずれもよくわからなかった。
Fedora Core 6 の場合、デフォルトの MTA (Mail Transfer Agent) は sendmail となっている。で、実験用 Linux サーバをイントラネットに置いてメールを出そうとしたら、Connection Refused というエラーメールが返ってきてしまった。どうもイントラネットから外へのポート 25 がふさがっているから外部のホストにつながらないらしい。 そこで sendmail の設定をいろいろと調べてはみたものの、やっぱり sendmail.mc とか sendmail.cf は呪いたくなります。結局挫折。今までの人生の中で何度か sendmail を設定する機会があったが、いずれもよくわからなかった。

Apache 2.0 で、cgi-bin ディレクトリ以外で index.cgi を有効にする方法

https://yourdomain.com/ にアクセスしたときに、実際は https://yourdomain.com/index.cgi でアクセスさせるためには、どうしたらいいだろう? Fedora Core 6 だと、/etc/httpd/conf/httpd.conf という設定ファイルの中で、 AllowOverride というオプションが NONE になっているから、/var/www/html 配下に置いた .htaccess がデフォルトだとすべて無効になっているのである。 …というわけで、まずは /etc/httpd/conf/httpd.conf の中で、 AllowOverride というオプションが NONE になっている箇所を探して( セクションの中)、AllowOverride All にした上で、以下のように /var/www/html/.htaccess を設定すればよい。
https://yourdomain.com/ にアクセスしたときに、実際は https://yourdomain.com/index.cgi でアクセスさせるためには、どうしたらいいだろう? Fedora Core 6 だと、/etc/httpd/conf/httpd.conf という設定ファイルの中で、 AllowOverride というオプションが NONE になっているから、/var/www/html 配下に置いた .htaccess がデフォルトだとすべて無効になっているのである。 …というわけで、まずは /etc/httpd/conf/httpd.conf の中で、 AllowOverride というオプションが NONE になっている箇所を探して( セクションの中)、AllowOverride All にした上で、以下のように /var/www/html/.htaccess を設定すればよい。