投稿

5月, 2008の投稿を表示しています

GPLライセンスについて整理

まず基本的なことはwikipediaを読む。ここの記事もがんばって読むと詳しくなった気になれる。あとは本家のよくある質問を読めば、いくつかの疑問は晴れる。GNU General Public Licenseの日本語訳以下はいろんなサイトを見て間違えそうな部分を自分用にメモ。GPLライセンスのコードを利用して作ったソフトを商用利用(お金を取って売る)ことは可能(用途の制限がない)。 課金して売ったとしても、そのソフト(とソースコード)の配布方法に制限をかけることができない。 ソフトを配布(頒布)する場合はソースコードも渡さなければならない(もしくは要求すれば渡すことを明示)。だから個人的に使用する場合はソースコードを公開する必要はない。誰もが手に入れる場所にソフトを公開(頒布)したら、誰もが手に入れる場所にソースコードを公開しないといけない(もしくは要求すれば渡すことを明示)。 Webアプリケーションの場合、カスタマイズしてサーバにインストールして利用するだけなら、例えサーバが外部に公開していようとソースコードを公開する必要はない。そのWebアプリケーションにログインするのに料金が発生しようとGPL違反にはならない。→配布(頒布)してないから GPL準拠のWebアプリケーションをカスタマイズして販売(納品)する場合は、いくらで売っても構わないが、ソースコードを渡さないといけないし、そのWebアプリケーションもGPLとなる。→配布(頒布)しているから どこまでを配布(頒布)しているとみなすかは議論が分かれるところ。個人的な解釈では、そのソフトを別の環境で起動できるな状態で公開するのが配布(頒布)だと思う。 自分の言葉で書いているので、間違っている部分があったら修正します。その他のライセンスについてはここのブログにリンク集が。<2009/7/22 追記>
ライセンス条項の日本語訳をまとめたサイトがあったので覚え書き。OSI承認オープンソースライセンス 日本語参考訳

【CentOS】いらないデーモン(daemon)を削除する

私は昔からVine Linuxを使ってサーバ構築しますが、会社の推奨はCentOSらしいです。VMware上にCentOSをいれて開発してますが、CentOSをインストールした直後はいろいろよく分からないデーモンがたくさん動いていて精神上よくない。(気にしないのが一番よい。)Vineのときはここにメモってますが、CentOSでいらないデーモンを削除しようとしても
# chkconfig --list
のあまりの多さに萎える。誰か一覧で作ってないかなと思ったら、ここにスクリプトが。他にも探せば出てくるかも。ここの人もがんばって調べてた。一応、自分でいらないデーモンをメモってたので置いときます。
# yum remove <名前>
でアンインストールする一覧です。依存関係で他のソフトも一緒に消えることがあります。名前説明sendmailメール配送サービスcups印刷制御サービスypbindNIS バインド情報を管理nfs-utilsNFSを利用するためのツール群。NFS関係のdaemonが消えるbluez-utils
bluez-gnome
bluez-libsbluetoothを使うためのツール群。dhcdbdDHCP D-BUSデーモンpcsc-liteスマートカードを使うためのソフトirda-utils赤外線通信規格「irDA」を使った通信を実現するサービスportmapRPC関連のport mapper
NFSやNISを使用する場合に必要

Sambaの設定ファイルsmb.confメモ

ネットワーク内にLinuxを導入したらWindowsのファイル共有を使えると効率がいいので、Sambaをインストールして設定していますが、その設定ファイルsmb.confをメモのために置いときます。< 2017/06/26 追記 > 
CentOS7向け最新記事はこちら。【CentOS7】開発用仮想マシンに設定するsmb.conf
インストールした直後はとりあえず/etc/samba/smb.confに次の記述して保存。 [Samba_Conf]
    comment = Samba config
    path = /etc/samba
    guest ok = No
    browseable = Yes
    write list = root sambaのユーザにrootを追加$ pdbedit -a root追加したらsambaを再起動$ /etc/rc.d/init.d/smb restartそのあとWindowsからネットワーク経由でサーバにアクセス。下に書いてあるsmb.confに上書きしてsambaを再起動。 日本語が含まれているので文字コードを注意。 再起動後はたまにsambaユーザが消えるので$ pdbedit –Lで確認。いなかったらもう一回rootユーザを追加。 $ pdbedit -a rootsambaを自動起動させる。 $ chkconfig smb on以下smb.confの中身[global] #動作モード
    smb ports = 139#ユーザの認証する方法(user, server, domain, share)
    security = user #Unix Windows互換機
    dos charset = CP932
    unix charset = UTF-8
    display charset = UTF-8
    #ファイルモードをウィンドウズ風に
    dos filemode = Yes
    dos filetimes = Yes
    dos filetime resolution = Yes…

【PHP】全角、半角を変換して統一させたい

PHPではmb_convert_kanaという便利な関数があり、全角/半角変換をしてくれます。マニュアルはここ。まだ使う機会はないですが、そのうち使うことになりそうなのでメモ。

【PHP】入力した値がShift-JISか判定する(文字コード判定)

データベースの文字コードがEUC-JPとかShift-JISとかだと、ユーザが入力したデータが文字化けしないでちゃんとデータベースに保存できるかチェックしたいときがあります。PHPだとmb_check_encodingという便利な関数があるので、これでチェックすればいいやーと思っていましたが、実装してみるとうまく判定してくれず。ソースファイルの文字コードによって返値が変わってくる。例えば、UTF-8nのファイルに次のコードを記述して実行すると値はfalse。var_dump( mb_check_encoding( '1', 'Shift-JIS')); //全角の1これは正しい?使い方間違っている?しょうがないので、mb_check_encodingはあきらめて、mb_convert_encodingを使って、一度チェックした文字コードに変換して、元に戻した結果が同じかどうかでチェックすることに。こんな感じ↓$sMoji = "1";
$sTemp = mb_convert_encoding($sMoji, 'Shift-JIS'); //変換
$sTemp = mb_convert_encoding($sTemp, 'UTF-8', 'Shift-JIS'); //元に戻す
if ($sMoji === $sTemp) {
    echo "Shift-JISで表現できる文字:$sMoji";
} else {
    echo "Shift-JISで表現できない文字:$sMoji";
}ちなみにShift-JISで表現できない文字で有名なのが森鴎外の鴎(かもめ)がメでなくて品となっている「鷗」という文字。「かもめ」とか「おう」で変換すれば出てくる。さらにmb_internal_encodingを使って現在の文字コードを取得すれば、汎用的になる。↓こんな感じかな。(試してはないです)$sMoji = "1";
$sEncode = mb_internal_encoding();
$sTemp = mb…

Google八分?Googleのインデックスから削除された?

イメージ
昨日おもむろに自分のブログを見ようと「se suganuma」とgoogleの検索窓から入力してみました。いつもならトップに自分のブログが出てきていましたが、この日はなぜか自分のブログが出てこない・・・。2ページを見てみるとやっといつかのエントリーが出てきましたが、これはもしや噂に聞く「google八分?」と思い、google八分について調査しました。ここに自分が本当にGoogle八分なのかの確認方法と対応方法が載っているので参考に。Googleの検索窓に自分のブログのURLを記述して検索してみて、自分のブログが出てくればとりあえずGoogleのインデックスから削除されている訳ではないようです。このブログの場合もちゃんと表示されたので、Googleのインデックスから削除されてないことは分かりました。
GoogleのWebマスターツールにも登録してありますが、こっちを見ても特に変わったことはありませんでした。怪しいと思ったのは、↑この記述があったので、このときになんか悪いサイトとして判断されたのかなーと思っています。 なんででしょうね?Googleのウェブマスター向けガイドラインを読んで、心当たりがありそうなのは会社へのリンクがいっぱいあったので過剰なSEO対策として判断された?引用が著作権違反と判断された?もしくは誰かに通報された?ぐらいかなーとりあえずSEO対策で会社へのリンクをいっぱい付けてたのは削除してみました。それが原因かは分からないですが、今日になって「se suganuma」で検索するとちゃんとトップに出てきてくれたので、時間が経てば元に戻るような気はしてます。一時的なものだと祈りつつ・・・。

【PHP】【DOM】ノードをコピーする方法

PHPのDOMを使ってXMLを操作していると、別々に作ったDOMを一つのノードにまとめたい場合があります。cloneNodeとか使って簡単にできるかと思ったけど、ちょっとつまずいたのでメモ。最初に書いたコード↓$objDom2 = new DOMDocument();
$objDom2->encoding = 'UTF-8'; 
//文字化け対策.
$objDom2->formatOutput = true;  //字下げや空白を考慮してきれいに整形した出力を行う。.
$objNode = $objDom2->appendChild( $objDom2->createElement('copy') );
$objNode->appendChild( $objAddNode->cloneNode(true) );
echo $objDom2->saveXML();単純にもう一つDOMドキュメントを作ってコピーしたいノードをcloneNodeを使って追加しようとしてる。しかし、これだと'Wrong Document Error'で怒られる・・・。JavaScriptだとできたのに・・・。調べてみるとimportNodeを使って、現在のDOMドキュメントに関連づけを変更しないと追加できないみたい。修正したコード↓$objDom2 = new DOMDocument();
$objDom2->encoding = 'UTF-8';
//文字化け対策.
$objDom2->formatOutput = true;  //字下げや空白を考慮してきれいに整形した出力を行う。.
$objNode = $objDom2->appendChild( $objDom2->createElement('copy') );
$objNewNode = $objDom2->importNode( $objAddNode, true );
$objNode->appendChild( $objNewNode )…

【PHP】XMLReaderでXMLを高速に処理をする

ここここでDOMとSimpleXMLについて書きましたが、調べていくうちに目にとまるようになったのがXMLReaderなるもの。XMLReaderを使うとread()を行うたびに階層(ノード)単位で読み込んでいくので、すべてのXMLを読み込まなくても、必要な階層(ノード)に辿りついた時点で処理を行えます。そのため、大きなXMLファイルを扱う場合などメモリの消費を抑えることができ、高速に処理ができるようです。ここにサンプルコードがあるのでメモ。マニュアルはここ。XMLReaderはPHP5.1.0以上であればデフォルトで組み込まれているので、インストールは不要。大量のデータをXMLでやり取りする場合は必須となりそう。

【PHP】SimpleXMLを使ってXMLを直感的に操作

ここの続き。PHP5のDOMでXMLを操作するときにXpathの記述方法のめんどくささに萎える。JavaScriptみたいにselectSingleNodeとかselectNodesとか書きたくなるけど、これができない。DOMXpathを使うとこんな感じ$objDom = new DOMDocument();
$objDom->preserveWhiteSpace = false; //余分な空白を取り除く.
$objDom->load('sample.xml'); $objXpath = new DOMXPath($objDom);
$sQuery = '//root/comment';
$objSelectNodes = $objXpath->query($sQuery);
echo $objSelectNodes->item(0)->nodeValue;echo $objSelect->item(0)->getAttribute('id');Xpathを記述しようと思うだけで別のオブジェクトを生成しないといけないので、非常にめんどくさい。こういう場合はSimpleXMLを使うと非常に分かりやすくなる。上のコードをSimpleXMLを使って書くとこんな感じ$objDom = new DOMDocument();
$objDom->preserveWhiteSpace = false; //余分な空白を取り除く.
$objDom->load('sample.xml'); //SimpleXMLの方が扱いやすいので変換.
$objXml = simplexml_import_dom($objDom);
$sQuery = '/root/comment';
$objSelectNodes = $objXml->xpath($sQuery); //配列で返る.
echo $objSelectNodes[0];       //nodeValueへの参照.
echo $objSelectNodes[…

【PHP】DOMを使ってXMLを操作(導入インストール編)

イメージ
PHPでXMLを扱いときによく使われるのがDOM。気をつけないといけないのがPHP4とPHP5では使用するメソッド名がかなり違うので、システム構築する際は環境をちゃんと確認しないといけない。どっちでも動くように作り込むのはかなり大変そう・・・。参考PHP4:DOM XML関数
$dom = domxml_open_file($xmlfilename);PHP5:DOM Function
$dom = new DOMDocument;
$rtn = $dom->load($xmlfilename);ちなみにインストールは簡単でPHP5の場合
# yum install php-xml
# service httpd reload
で終了。phpinfoで確認するとDOMの項目が表示されている。 JavascriptでDOMを使ったことがあるなら、PHP5のメソッドは見慣れたものばかりなのでプログラムは(比較的)作りやすい。
なぜならPHP5で標準DOMインターフェイスに対応したから。参考
でもXpathを使った記述方法は、JavaScriptに比べめんどくさい。その辺はSimpleXMLと組み合わせて使うと幸せになれる。
これについてはまた後日書きます。
PHP4で作りたいときはここのマニュアルを参考に。
PHP5はこっち。 XMLを読み込むサンプルコード $objDom = new DOMDocument(); $objDom->preserveWhiteSpace = false; //余分な空白を取り除く. if ($objDom->load('sample.xml')) { return $objDom; } else { return null; } preserveWhiteSpaceはインデント部分の余分な空白を取り除いてくれるので、空白で悩まされなくていい。ファイルに書き出すときのサンプルコード $objDom = new DOMDocument(); $objDom->encoding = 'UTF-8'; //文字化け対策. $objDom->formatOut…

【PHP】YouTubeの新APIを使って動画をアップロードする

YouTubeの新しくなったAPIを調査中。2008/3/13のニュース記事Googleが公開しているドキュメントに従ってサンプルコードを流用して書いていけばとりあえず動画の投稿はできた。まずはここからZend Frameworkをダウンロードしてくる。現在の最新は1.5.2。使うのはlibrary/Zend以下のファイル群。実際に動かすときには、このlibraryにパスが通っている必要がある。こういう方法とか開発中の最新バージョンがほしい場合はここを参考にsubversionクライアントを使って取得する。私の場合はこれで取得。次にYouTube APIで必要な開発コードを取得する。ここから。YouTubeでアカウントを登録してない場合は登録する。とりあえずAPIを使って投稿したいだけならば、ここにZendが作ったサンプルコードが置いてあるので、これを使うだけでも動作確認はできる。しかし、このコードだとユーザが自分のアカウントを入力しないといけない。実現したかったのは共通のアカウントを使っての動画投稿(いちいちアカウントを入力しない)。以下、実際のコードです。これを実行するとファイルを参照するフォームが表示されるので、ファイル選択後→uploadボタンクリックで投稿できるはず。とりあえずはここまで。<?php
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); $sDeveloperKey = 'AI39...'; //YouTubeAPIの開発コード
$sAccount = 'account'; //YouTubeアカウント名
$sPassword = 'password'; //YouTubeログインパスワード $sMovieTitle = 'My Test Movie'…

VisualSourceSafe(VSS)での改行コード問題

バージョン管理システムにVSSを使っていて、linux用のシステム開発をしていると改行コードがおかしくなっていることに気付くことがあります。改行コード「LF」で作成したファイルをチェックインしてチェックアウトすると「CR+LF」なっている・・・。エディタによっては気付かないことも多いですが、秀丸とかは賢いので「LF」と「CR+LF」が混じっている環境でも、それなりに表示してくれるらしいです。私の使っているxyzzyだと「^M」でおかしいところを表示してくれるので気付きました。どうやら日本語(2byte文字)の直後の改行コードがおかしくなるみたいなので、日本語で終わる行は「.」(ドット)を追記して改行するルールで開発しているところもあるみたいです。改行コードが混在しているのは気持ち悪いですが、システム的には問題なく動作するようです。ここの人も愚痴っていた。バージョン管理システムはSubversionの方がよいかもね。Visual Studioと連携できるし。ここちなみにCRは「Carriage Return : 行頭復帰」。LFは「Line Feed : 改行」の略。参考

pgAdminで更新処理ができない!?

イメージ
pgAdminでダミーのデータを挿入しようとテーブルを右クリック→データビューで開いてみると、あれれ・・・更新ができない。なんでだろーと思いましたが、ちゃんとpgAdminが教えてくれていました。プライマリキーがないテーブルはpgAdminで更新できないみたいです。

PostgreSQLのロック(Lock)モード

ここでデータベースの行ロックとテーブルロックについて書きましたが、実際selectとかupdateのコマンドを送ったときにどういうロック状態になるか調べたのでメモ。PostgreSQL(8.3.1)のみ。ここにあるのを表にしただけ。注意点としては、これらのロックモードはテーブルレベルで保持しているため、例えばROW EXCLUSIVEモードは同じテーブルの別の行に対しては競合しないが、同じ行に対しての更新処理に関しては、後にモードを取得しようとしたコマンドが待たされる。ロックモード説明競合するモードコマンドACCESS SHARE最も制限の弱いロックモードACCESS EXCLUSIVESELECTROW SHARE行単位に共有ロックEXCLUSIVE,
ACCESS EXCLUSIVESELECT FOR UPDATEROW EXCLUSIVE行単位に排他ロックSHARE,
SHARE ROW EXCLUSIVE,
EXCLUSIVE,
ACCESS EXCLUSIVEUPDATE,
DELETE,
INSERTSHARE UPDATE EXCLUSIVE同時実行されるスキーマの変更およびVACUUM コマンドの実行から、テーブルを保護SHARE UPDATE EXCLUSIVE,
SHARE,
SHARE ROW EXCLUSIVE,
EXCLUSIVE、
ACCESS EXCLUSIVE(FULLなしの)VACUUMSHAREテーブル全体に共有ロックROW EXCLUSIVE,
SHARE ROW EXCLUSIVE、EXCLUSIVE、
ACCESS EXCLUSIVECREATE INDEXSHARE ROW EXCLUSIVE同時1個のトランザクションのみ取得可能ROW EXCLUSIVE、SHARE、
SHARE ROW EXCLUSIVE、EXCLUSIVE、
ACCESS EXCLUSIVEEXCLUSIVEテーブ…

データベースの行ロックとテーブルロック

Oracle, SQL server, PostgreSQL, MySQLなどのリレーショナルデータベースはロックという機能をサポートしていて、複数ユーザによる同じデータへのアクセスを保証しています。ですが、各データベースでロックの仕組みは微妙な違いがあります。この辺の違いを理解していないとバッチ処理などで一つのトランザクションで大量のデータ更新を行う際に、はまりやすくなります。↓表にしてみましたが、どれも基本行ロックで、明示的にテーブルロックにするなどのコマンドは用意されているので、ロック状態は任意に設定できます。データベースロック備考Oracle行ロックどれだけロックが増えても行ロック。その分メモリを食う。参考。SQL Server行ロック→テーブルロック
システムのリソースが少なくなると行ロックからテーブルロックに自動的に変更(ロックエスカレーション機能)。参考MSDN
SQL Server 2005 と Oracle 10g の真実PostgreSQL行ロックメモリ上に変更された行の情報を記憶しないので同時にロックできる行数に上限はない。ただしテーブルに書き込むため、定期的にVACUUMしてあげないといけない。
8.3では自動でVACUUMしてくれるらしい。wikipediaMySQLMyISAM:テーブルロック
InnoDB:行ロックとテーブルロック MyISAMとInnoDB
詳細はこちら。行ロックの利点と欠点がMySQLのサイトにあったのでメモ。ほとんどの場合ロックを気にしなくても大丈夫ですが、IDの採番はちゃんとロックしないと重複したIDとなる場合がありえる(めったない)。ちゃんとロックしないと駄目でしたー
とか
この処理のおかげで他の処理はみんなタイムアウト!
というのは運用後に発覚する場合がほとんどなので、はまると痛い。

【Linux】ログイン認証にLdapを設定する

イメージ
ネットワーク内にLDAPサーバがあるなら、ユーザ認証はそれを使った方が楽なので、LinuxでLDAPサーバを参照するためのメモ。コマンドは
# authconfig
または
# authconfig-tui
でコマンドラインで設定できるツールが起動する。vineの場合はauthconfig、centosの場合はauthconfig-tuiだった。↑のようにLDAPを使用するとLDAP認証を使用にチェックして次へ。LDAPサーバのアドレスとベースDNを設定すれば完了。再起動する必要はないので、logoutして誰かLDAPユーザでログインしてみる。

Linuxのディレクトリ構成

イメージ
Linuxに外からソフトやドキュメントを持ってきたとき、どこのディレクトリに配置したらいいか迷うときがあります。なので、Linuxのディレクトリ構成についてのメモ。ここを読めばまるっと解決。Linuxのディレクトリ構成はFHS(Filesystem Hierarchy Standard)という名で定義されているらしい。↓ここから転載。

Xampp For Linux(Lampp)でサーバ構築と設定

Linuxでサーバを構築する際にapache, mysql, phpなどのいわゆる「LAMP」を個別にインストール設定してもよいですが、Xampp for Linuxを使うと有名なライブラリ(PEARやGDやmbstringなど)を一括でインストールしてくれるので便利です。既にapacheがインストールされている場合は停止、削除しときましょう。ダウンロード、インストールの仕方はここを参照。ちなみに私はFirefoxでダウンロードしようとしたら途中で失敗してしまいました。(なぜ?)動かすだけならとっても簡単。ただMySQLの管理者(root)にパスワードが設定してなかったり、FTPで外からアクセスできたりとセキュリティはざるになっているので、ファイヤーウォールの設定や各configファイルの設定は適切に行う必要があります。このブログに少し書いてあります。セキュリティ関連の設定もそのうち書こうかな・・・以下は起動時に自動で立ち上がるようにする設定です。 # cp /opt/lampp/lampp /etc/rc.d/init.d/
# chkconfig --add lampp<2009/04/10 追記>
初期設定。まずは起動
# /etc/rc.d/init.d/lampp startデフォルトでProFTPDは起動させない
# /etc/rc.d/init.d/lampp stopftpデフォルトでSSLは使わない
# /etc/rc.d/init.d/lampp stopsslデフォルトでmysqlは起動させない
# vi /etc/rc.d/init.d/lampp
startmysqlで検索してコメントアウト
# $0 startmysql %apacheユーザを追加(ログインできないようにする)(home directoryも作らない)
# useradd -M -s /sbin/nologin apacheすでにapacheユーザがいるかどうかは
# less /etc/passwd
で確認。グループは自動でapacheグループが作られる。
# less /etc/group
で確認。/opt/lampp/etc/httpd.confのUserとGroupをnobo…

【CentOS】yumで追加パッケージ群DAG(RPMforge)を追加する

CentOSをデフォルトでインストールした状態だと、yumで検索するリポジトリには、多くの有名なソフトが登録されていません。たとえばffmpegとか。そこで多くのサードパーティ製パッケージを供給しているDAG(RPMforge)をyumの検索するリポジトリに追加します。詳しく知りたい人はここで(英語)。追加するのは簡単。下記コマンドを実行するだけ。CentOS5.i386の場合。最新バージョンはここを参照して確認。rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm実行すると/etc/yum.repos.d/に
rpmforge.repo
mirrors-rpmforge
が作成され、yum updateをやれば最新のリポジトリに更新される。< 2012/04/10 Modified >
Installの方法は下記Siteが参考になる。AdditionalResources/Repositories/RPMForge - CentOS WikiUser Guide - Repoforge< Related Posts >SubversionをCompileしてsvnコマンドを使用(RPMとYUMを使う方法を追記)

【PostgreSQL】CentOSでPostgreSQLを設定

イメージ
以下yumでインストールした場合。 設定ファイルの場所は/var/lib/pgsql/data/pg_hba.conf<ユーザの作成>
インストール直後はユーザ「postgres」がデータベースのスーパーユーザになっているのでpostgresに切り替えて作業
# su postgres次のコマンドでユーザ「sa」を作成
# createuser --createdb --no-adduser --pwprompt sa
引数の意味はなんとなく分かると思うけど、ここに説明があります。削除するときは
# dropuser saユーザの一覧をみたいときは
# psql
postgres=# select * from pg_user;ここまでできたらpgAdminを使って「sa」でログインし、リモートで管理した方が楽。手動でコマンドを書きたいときはここを参考に。リモートで接続できない場合は、設定ファイルで許可してないか、ポートが開いていない。ファイヤーウォールの設定は
# system-config-securitylevel-tui
を使う。ここを参考に。
Other portsに5432:tcpと記述すればOK.
設定後、同じコマンドで見てみると↓のように設定されている。<2008/5/24 追記>
インストールした直後では外部から接続できないようにPostgreSQLが設定されている場合があるので、ここを参考に /var/lib/pgsql/data/postgresql.conf のlisten_addresses='*'にする。あとクライアントの認証方法が/var/lib/pgsql/data/pg_hba.confに記述されているので、外からはユーザ名とパスワードを使って認証するので下記のように設定する。host all all 192.168.0.0/24 md5これは192.168.0.0~192.168.0.255までパスワードを使ってのログインを許可する設定。IPアドレスの表記法についてはwikipediaで。

【PHP】XML-RPCを使ってサーバの機能を呼び出す

XML-RPCとはXMLを使った遠隔手順呼び出し(Remote Procedure Call)を行うためのプロトコル(取り決め)です。詳しくはWikipediaで。よく分からない人はここを読んだほうがいいです。実際に試してみる方法ですが、Windows環境ならばXamppをインストールすればPEARのXML-RPCパッケージも同時にインストールされるので、手軽に試すことができます。Linux環境の場合はPEARのXML-RPCパッケージがインストールしてあるか確認が必要です。あとはここにあるサンプルコードを参考にすれば動作確認ができます。ほとんど同じですが、私が書いたのも置いときます。クライアント側のソースにデバッグモードにするのと3秒でタイムアウトにする処理が入ってます。●サーバ側(呼び出される側)のソース<?php
require_once 'XML/RPC/Server.php'; $map = array("sample.sumAndDifference" => array("function" => "foo"));
$s = new XML_RPC_Server($map); function foo ($params) {
    global $XML_RPC_erruser; // import user errcode value
    $p1 = $params->getParam(0);
    $p2 = $params->getParam(1);
    $v1 = $p1->scalarval();
    $v2 = $p2->scalarval();
    $value = new XML_RPC_Value($v1+$v2, "int");
    return new XML_RPC_Response($value);
}
?>●クライアント側(呼び出し側)のソース<html>
<head>
<title&…

【PHP】Docblockコメントの書き方

Docblockとは/**と*/で囲まれたドキュメント用のコメントブロックです。これを規約に従って記述すると、みんなが読みやすく、phpDocumentorなどで自動ドキュメント生成もできます。サンプルはPEAR(ペア)のコーディング規約を参考に。ここが詳しく説明されています。英語が大丈夫ならここ(// {{{ および // }}} ) って折り畳みマーカだったのね。