-アルゴリズムを使うPHPProgramming

ProgramのDownLoad - http://www.socym.co.jp/download/1044/src.zip

サンプルProgramの使い方 - Localhostにsampleのフォルダに一式をコピーして、必要なPHPProgramをクリックする

第1章 PHPと開発環境

01 PHP環境のSetUp方法
VirtualBoxのInstall - http://www.virtualbox/org/wiki/Downloads - VirtualBoxとVagrantをInstallするが、まだまだPHPやApacheなどもInstallし直さなければならないのでVagrantが古いとのErrorが出るので断念

02 各OS向けPHP環境構築のヒント − 略

03 PHPライブラリの管理ツール'Composer' - 略

PHP5.3以降に追加された機能 - Webサーバーになる、無名関数 - closure-test.php
- 名前空間 -

第2章 PHPでよく使うデータ構造

01 PHPの配列について
配列を初期化して要素を表示する - array-basic.php - あまり意味ないので不要であるが、まあ一番初めなので登録する
配列を連想配列として利用 - array-map.php - php5.4以降はarrayを削除できるが、このサイトは不可、atPagesで試すこと - array-map2.php
配列を列挙するときの注意 - array-order.php -5.4以前のやり方で修正、また\nも使えないので<br>に修正
配列を操作するメソッド - 追加と削除 - array-ins-del.php - 5.4以前のやり方で修正、まだ例題どうりに配列の改行が表示されないのでまだまだ修正しなければならないが分からず
任意の位置にある複数の要素を削除する - array-splice.php - 5.4以前のやり方で修正、配列の改行ができないので、配列の区切りが分かりにくいのは同じ
配列の内容をフィルタリングする - array-odd.php - PHP5.3以降の無名関数(クロージャー)が利用されているので、Callback関数を指定しているためか? - 無名関数に変数を代入して分かりやすくする - array-odd2.php - 無名関数は扱えない? - 問題なし、WS10なのでPHPも新しいのが入っている?
配列の各要素に対して処理を行う - 配列の値を2倍にして返す(array_map関数) - array-x2.php - 問題なし、WS10なのでPHPも新しいのが入っている? このほかにもPHPのマニュアルには配列に関する関数の使い方を参照 - http://php.net/manual/ja/ref.array.php

02 データ構造の表現
線形リストについて - list-meibo.php - 配列の末尾にデータを追加してゆく、Random表示を全表示のリストになれば有用
キュー構造 - キューの実装(配列の生データを追加した順番にデータを取り出す) - queue.class.php & queue-test.php -
スタック構造 - スタックの実装(最後に入れたデータを最初に取り出す) - stack.class.php & stack-test.php
リングバッファーの実装 - 動画や音楽用の一定のランダムアクセスをする場合に便利 - ringbuffer.class.php & ringbuffer-test.php
適材適所で使おう

03 データの並べ替え
バブルソート - sort-bubble.php - 外側のループと内側のループで下の要素と比べて交換する
コムソート - sort-comb.php - 離れた要素を比較/交換、最後に隣接する要素を比較、高速になる
マージソート - sort-merge.php - データを分割し、それぞれソート、その後マージ(統合)する、高速になる - 配列でデータを送って初めて成功ではなく、失敗、phpに戻す - sort-merge.html
クイックソート - データを適当な数にして、小さい数を前、大きい数を後方に分割、それぞれのデータを再帰的にソート - sort-quick.php
現実的な解 - 実際の場面では特定のキーに基づいて並べ替えることが多いのでusortというUser定義の比較関数を使ってソートすることになる - sort-custom.php - 複雑になると修正点がはっきりせず、エラーになる - -do- - 配列のソートはhttp://php.net/manual/ja/arrray.sorting.php
unsort()で安定ソートを実現する方法 - sort-students.php - これも配列の中の1つのデータが複雑になるとそのデータの扱い方が難しく、そのデータをどう表すかを解決しなければならない - -do-
動作速度をベンチマーク - PHPのSortが一番速い

04 疑似乱数とシャフルについて
乱数について - random-rect.php - ■を256個出力するベーシックなRandomのプログラム
パスワード生成ツールの作成 - password-gen-ng.php - 予測可能なRandomになるので次の password-gen.php を使うこと - 問題なし、正しく表示されるようだ

05 データの保存と読み込み
データの保存と読み込みについて - PHPの標準関数 serialize()について - serialize-test.php - 何かよくわからぬが()の種類を変えるとうまくゆくようだ
JSON形式の記述方法 - serialize-json.php - 何かよくわからぬが()の種類を変えるとうまくゆくようだ - 汎用としてserialize-json_okuri.htmlを作成、配列なのでうまくゆくか疑問
XML形式について - XMLをPHPで扱う - xml-test.php - PHP の配列データをXMLに変換 - serialize-xml.php
YAMLについて - http: //yaml.org/

第3章 便利なアルゴリズム

01 迷路の自動生成
棒倒し法による迷路の自動生成 - maze1.php - 汎用は作る意味なし
穴掘り法による自動生成 - maze2.php - 同上

02 暗号化について - シーザー暗号について - caesar.php - Shiftを入れる欄に3番目の文字が変換される? どういう処理なのかがもう一つ理解できず
- 最強の暗号アルゴリズム - OnetimePad - otp-test.php -

03 公開鍵暗号とハッシュ関数 - openssl-test.php - これで作った秘密鍵と公開鍵で暗号化と複合化を行う - openssl-pubkey-test.php -
復号できない暗号化アルゴリズム - sha256-test.php - 利用できるアルゴリズムの一覧表示を行う - hash-list.php
ユーザー認証システムを作ってみよう - index.php - C3のなかにUserautのFolderがないので不可

04 逆ポーランド電卓の作成 - rpn.php - 間にスペースを空けて単独の数値に独立させないとErrorになる -

05 中置記述の計算機の作成 - calc.php - C3のなかにこのFileがないので不可 -

06 時間をめぐるアルゴリズム - 日時の計算 - time-test.php - 汎用として time-test_okuri.htmlを作成
- 予定日までのCountDown - 予定日の表示 - time-mktime.php - 汎用として time-month_okuri.htmlを作成 - Mktimeの動きが理解不能なので不可
- 予定日までのCountDown - time-diff.php - 汎用 として time-diff_okuri.htmlを作成 -
- 3ヶ月後の日付を求める - time-month.php - 汎用として time-test_okuri.htmlを作成
- Tableを作らずmktimeで3ヶ月後を計算 - time-month2.php (基準:2018-11-1)
- strtotimeで一番Simpleなやり方 - time-month3.php (基準:2018-1-1)
2038年問題について - 32bitと64bitでは動きが違う - time2038.php - 汎用(ある1点のみなので汎用は不要)
日時の計算について(DateTimeクラス ) - PHP5.2以降(C3のなかにこのFileがないので不可) - datetime-test.php
特定の日付を求める - datetime-7days.php (C3のなかにこのFileがないので不可)
日医の差を計算する - datetime-diff.php (C3のなかにこのFileがないので不可)
月間カレンダーの描画 - datetime-cal.php (C3のなかにこのFileがないので不可)

07 Webサイトのスクレイピング
Webサイトからのデータ収集 -
標準的なPHPのスクレイピング - test1.html のデータを scraping-test1.phpで取り出す - 汎用 (id,name,priceの3つを取り出しているのである意味汎用である)
素のPHPをScraping - SimpleXMLを使う -test1.htmlのデータを scraping-test2.php で取り出す - 汎用 (同上)
Goutteライブラリで手軽にScraping - goutte.pharをまずInstallしておく - 限界が多いようなのでInstallやscraping-mmlbbs1.phpは省略
Goutteのインストール - scraping-mmlbbs2.php - 例題どうりにデータが得られず失敗
WebブラウザのDeveloperToolも役立つ - GoogleChrome/addressbarのみぎにある三アイコンからその他のツール->DeveloperTool->Elements
ログインが必要なWebサイトにAccessする - http://uta.pw/sakusibbs/ - お気に入りの一覧を取得 - scraping-sakusibbs-getfav.php - 失敗、 require_once(Goutte\Client.php) がないため?

08 ナップサック問題について - knapsack-force.php - (C3のなかにこのFileがないので不可)

第4章 日本語とテキスト解析

01 正規表現を覚えよう
正規表現について
PCREで正規表現 - 文字列の置換 - re-pcre.php - 汎用 - re-pcre.html - ただし数値を0-9へ制限しているので__now__は動かず
鬼車で正規表現(文字Encodingができる) - 文字列の置換 re-oni.php - 汎用 - re-oni.html - 同上
PHPで正規表現を扱うときの注意 - 変数を展開する文字列""ではなく、展開の無い文字列''を利用すること
正規表現の基本的なメタ文字について
特殊文字「¥」- \\「\を表す」、\n「改行」、\t「タブ」、\d「数字」、\D「数字以外」、\s「タブやスペースなどの空白文字」、\S「空白以外の文字」、\w「アルファベッドや数字」、\W「単語構成文字以外」- $pat = '([0-9]+)\:([0-9]+)\:([0-9]+)';
位置を表す正規表現「^」「$」- 先頭と末尾 たとえば 「^p」は先頭のpianoやpoolはマッチする - $pat = '#\.png$#'; pngで終わるかを判定 .はメタ文字なので\でエスケープ
任意の一文字「.」- $pat = '\^s..y$\'; sから始まり、..の任意の2文字をはさみ、yで終わる4文字の単語
文字集合「[xyz]」- [a-d]は[abcd]と同じ、「0-9」は数字のいずれか
文字集合の否定「[^xyz]」- 記述された文字以外の文字にマッチさせる、「^0-9」は数字以外を表す
直前のn回以上の繰り返し -「*」0回以上の繰り返し、「+」1回以上の繰り返し、「?」0か1回以上の繰り返し、「{n,m}」n回以上m回以下の繰り返し 部分マッチキャプチャ「(re)」- キャプチャした文字列をreで記録し、全体または部分が一致した部分を返す - re-capture.php - 文字化けしたものをUTF-8へ変換したのちそれを新たにSAVEすれば対策済みの新たに文章を残せるようだ。一応SISとEUCの変換用があるので汎用である。
正規表現マッチで赤緑青の成分を抽出 - re-capture2.php - もうひとつ動きが理解できないので今後の修正まで待つ、色の成分を調べて何の意味があるのか?
選択「(aa|bb)」- (台湾|中華)の両方を選択できるように記述 - re-select.php -汎用は同じものになるがあげておく - re-select_okuri.html - 4択の送りに対して、受けが中華と台湾料理の2択なので動いても汎用にはならず、受け手側に選択後の結果も選べないと意味がない
パターン修飾子について - mパターンが複数行として扱えるようになるので重要

02 日本語の文章を扱うための知識
文字エンコーディング -
文字エンコーディングの変換 - mb_convert_encoding(string $str[$utf8], string $to_encoding["SJIS"], mixed $from_encoding) - 文字化けが起こっているアプリに追加してうまく行くかを試すこと - mb_convert.php - 汎用も作成 mb_covert_encoding.html/php ただしUTF-8で作成しているので、SJISで送ると両方文字化けする
文字エンコーディングの特徴を調べよう -
ASCIIについて - ascii.php - 結果を得られず、原因不明
ISO-2022-JPについて - JISコード - iso-2022-jp.php - 改行を入れると表示されないので元へ戻す
Shift-JISについて - "\"(0xSC)がJISコードと被る
EUC-JPについて - Unix/Linuxで使われる、Escapeを使わないで、ASCIIが利用してない上位ビットを立てることで、文字を判別
Unicode(UTF-16/UTF-8)について - HTML5では標準のEncoding
Unicodeコードポイントから文字を得る - 文字ごとにコードポイントがあり、PHP7ではEscape処理がサポートされている - mb_unicode.php - PHP7なので扱えない
それ以前のVersionではjson_decode()を使って出力させる - mb_unicode2.php
あるいはUTF-8で1バイトずつ文字列を指定 - mb_unicode3.php - 汎用はコード文字を表示させる手間があるので現実的ではない
正規表現(PCRE)でUnicodeを利用する - \x(hhh)\の形式でコードポイントを指定できる - mb_kana.php - 汎用はカナのみを選ぶ用途がないので不要

03 形態素解析について
形態素解析エンジンについて - MeCabについて http://taku910.github.io/mecab/ バージョン0.996(2013-02-18) - C:\Program Files\MeCabにInstall済み - 使い方がLinax風なので確認ができず
PHP拡張(php-mecab)を使う場合 -InstallがLinax風なのでできず、これ以降のphpのアプリも確認できず

04 頻出語句の抽出と辞書のカスタマイズ - 03と同じ

05 検索と置換と抽出と削除
文字列の操作で役立つ命令 - strpos() 文字列の検索 - 比較演算子を使うときは===を使うこと、strpos-test.php
- strstr() 見つけた場所から末尾までを取り出す - strstr-test.php
- substr() 文字列の部分抽出、引数がマイナスのときは後ろから数える - substr-test.php
- 文字列の部分削除 substr()を使って任意のところを削除されるが、結果のつなげて表示ができていないので、もう一つ分からず - substr-delete.php
- 文字列の分割と統合 - explode()とimplode() - カンマ(,)で文字列を分割し、ハイフン(-)で連結して表示 - explode-test.php
- 文字列の置換 - str_replace() - explode("-"、$str)をimplode("/"、explode("-"、$str))することと同じ - str_replace-test.php
JSON5のパーサーを作る - 検索しても何のアプリかよくわからないので省略

06 レーベンシュタイン距離と文章の類似度の検出
文章が似ているかどうか
レーベンシュタイン距離について -
レーベンシュタイン距離の計算プログラム - lev-distance.php - どこかに誤りがあるためか表示されず
標準関数のlevenshtein()は使えない?! - ngram-unagi.php - どこかに誤りがあるためか表示されず

07 マルコフ連鎖で文章の要約
マルコフ連鎖について - marcov.inc.php - どこかに誤りがあるためか表示されず
マルコフ連鎖ブラウザ版を作ろう - marcov-web.php - どこかに誤りがあるためか表示されず

第5章 画像とアルゴリズム

01 画像処理について
GDライブラリを使う - XAMPPでPHPをInstallした場合にはすでにInstallされている
ImageMagicライブラリを使う - http://www.imagemagick.org/script/binary-relases.phpからDownloadしてかつ、PECLからphp_imagick.dll (http://windows.php.net/downloads/pecl/realese/imagick/)をDownloadして、php/extフォルダにコピーし、その上でphp.iniにextension=php_imagick.dllを追記
サイズの異なる複数のサムネイルを作る - resize-icon.php - スマホ用なので、png形式で、jpg形式の設定と異なるので使えない - nameを送付でおくってresizeする汎用の方が使えるかも - resize-jpg.html/phpを作って試すが失敗
画像を回転・反転させる - image-rotate.php - 画像の回転をやるが、失敗、GDのまだiniの設定が出来ていないようだ
ImageMagickを使って反転と回転を行う - image-orientation.php - 失敗

02 CAPTCHAの実装
c5/captcha/form.php & genImage.php - 割合簡単に表示は成功

03 類似画像の検索について
サンプル画像のDownLoad http://www.vision.caltech.edu/Image_Datasets/Caltech101/Caltech101.html
HistogramIntersection - 類似色検索 - histogram-make.php & histogram-common.inc.php - CommandLineでDIRを指定するので不可
ヒストグラムから類似画像を検索する - histogram-find.php - エラーのためか動かず、難しくて原因不明
AverageHash - 類似形状検索 -ahash-make.php & ahash-common.inc.php - CommandLineでDIRを指定するので不可
AverageHashで類似画像を検索する - ahash-find.php - エラーのためか動かず、難しくて原因不明

04 画像の顔認識
PHP Face Detectionを使う - GDさえ使えれば動かせるので、まずGDを設定しなければならない - LocalhostがEnabledになっていたので、image-thumbnail.phpで試すがうまくゆかず
<?php // 縮小後の横サイズ。縦サイズは元の画像と縦横比が同じになるように調節する define(ResizeX, 300); //============================================================================ // JPEGファイルがアップロードされたか? if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (is_uploaded_file($_FILES['UpFile']['tmp_name'])) { if ( mb_strpos($_FILES['UpFile']['type'], 'jpeg') ) { // JPEG画像を読み込む $im_inp = ImageCreateFromJPEG($_FILES['UpFile']['tmp_name']); $ix = ImageSX($im_inp); // 読み込んだ画像の横サイズを取得 $iy = ImageSY($im_inp); // 読み込んだ画像の縦サイズを取得 $ox = ResizeX; // サイズ変更後の横サイズ $oy = ($ox * $iy) / $ix; // サイズ変更後の縦サイズ // サイズ変更後の画像データを生成 $im_out = ImageCreateTrueColor($ox, $oy); ImageCopyResized($im_out, $im_inp, 0, 0, 0, 0, $ox, $oy, $ix, $iy); // 画像の表示 header("Content-type: image/jpeg"); header("Cache-control: no-cache"); ImageJPEG($im_out); // メモリーの解放 ImageDestroy($im_inp); ImageDestroy($im_out); exit; } } } else { ?> <html> <head> <title>画像の縮小表示</title> </head> <body> <form enctype="multipart/form-data" method=post action="/php/gd/" target=_brank> <h1 align=center>画像の縮小表示</h1> <p> <input type=file name=UpFile size=60> <input type=submit value=" 縮小表示 "> </p> </form> </body> </html> <?php } ?>
PHP Face Detection を使う - face-detection-p.php - GDが確認できないので、動かないようだ
OpenCV[について - http://opencv.org/からInstallするが、なかなか難しいようだ

05 EXIFと位置情報の利用について
Exifとは - exif.php - 汎用としてexif_okuri.html & phpを作成するが、src="images/tree.jpg"のところが送りで送付をする方法を考えること
位置情報を利用する - exif_gps.php - これも上と同じで、必要ならばimagesのフォルダにコピーして、書き換えて表示させるようにすること

第6章 機械学習

01 ベイジアンフィルタについて - Fieg/BayesのライブラリをInstallするため断念

02 サポートベクターマシン(SVM)について - これもSVMのInstallが必要なので不可

03 ニューラルネットワークについて - FANNのライブラリーが必要なので不可

04 味噌ラーメンと塩ラーメンを分類する - Flickrで画像をDownloadするのが前提なので不可 - Flickrの登録成功 名前 kazuo shirai ニックネーム hhkcq044@yahoo.com パスワード xxxxx123 -
FlickrライブラリのInstall - https://github.com/dan-coulter/phpflickr.git - sampleにあったので、c6/phpflickr/phpFlickr.phpをそのまま使う
画像を一気にDownloadするProgram - c6/ramen/get-image.php - 複雑になってしまいどこに問題があるかが分からず
無関係の画像を削除 - 種痘で削除し、sio-test と miso-test をそれぞれ20枚づつ作成
学習データの作成 - 画像からカラーヒストグラムで判定 - c6/ramen/histogram-lib.inc.php と get-data.php
味噌ラーメンと塩ラーメンを学習 - c6/ramen/train.php
Webのインターフェイスを作る - c6/ramen/ramen-ui.php

第7章 レポート出力とデータの可視化

01 PDFによるレポート作成 - TCPDFの公式サイトから、tcpdf_6_2_13.zipをダウンロードして、D:\xampp\php\tcpdfに解凍します。 php.iniを編集します。include_pathに先ほどのtcpdfフォルダーを追加します。- tcpdf.orgが変わっているのでDownloadできず, manualをよく読んでから行うこと - FPDIも必要なので断念
include_path = "Q:\xampp\php\PEAR;Q:\xampp\php\Smarty-2.6.26\libs;Q:\xampp\php\PHPMailer_v5.1;D:\xampp\php\tcpdf;"
簡単なPDF出力 - c7/fpdi-hello.php - エラーになる Warning : require_once(vendor/tecnickcom/tcpdf/tcpdf.php) [ function.require-once ]: failed to open stream: No such file or directory in D:\xampp\htdocs\sample\c7\fpdi-hello.php on line 2 及び Fatal error : require_once() [ function.require ]: Failed opening required 'vendor/tecnickcom/tcpdf/tcpdf.php' (include_path='.;D:\xampp\php\pear\;D:\xampp\php\tcpdf;') in D:\xampp\htdocs\sample\c7\fpdi-hello.php on line 2
日本語をPDFに出力する - fpdi-hello-ja.php - fonntのDIRを作成し、フォントを準備するためhttp://ipafont.ipa.go.jp/からDownloadする必要があるので省略
画像の埋め込み - fpdi-image.php - 画像を埋め込むには、Image()メソッドを使う - require-onceが参照できないので同じく不可
図形の描画 - fpdi-line.php - require-onceが参照できないので同じく不可
既存PDFに書き込む - fpdi-receipt.php - require-onceが参照できないので同じく不可
ファイルへ保存 - fpdi-file.php - require-onceが参照できないので同じく不可

02 Excelファイルの入出力 - excel-hello.php - これもLinaxでないとDLできないようなので断念か?
ライブラリ-PHPExcelについて - https://github.com/PHPOffice/PHPExcel
How to use - 下記のようにこのリポジトリの中にPHPExcelのライブラリを配置します。
git clone https://github.com/nouphet/PHPExcel_server_environment.git - cd PHPExcel_server_environment - git clone https://github.com/PHPOffice/PHPExcel.git - php get_server_environment.php
既存Excelファイルを読み込み
セルの計算結果を得る
複数の値を一気に設定する

03 グラフの描画 - pChart、 JpGraph、 PHPlot など - http://jpgraph.net 、 http://www.pchart.net/ 、 http://phplot.sourceforge.net/
PHPlotを使ってみよう - http://phplot.sourceforge.net/phplotdocs/ - これもLinaxでないとDLできないようなので断念か?
簡単な折れ線グラフを描画する - phplot-line.php

04 アルゴリズムを可視化してみよう

補講 - 認証のProgramの作成

須磨高同窓会用
INDEX.HTML - <a href="./okuri_form.html">
OKURI_FORM.HTML - <FORM ACTION="okuri_form.php" METHOD="post">
OKURI_FORM.PHP - <a href='../suma18/'>

英語研究会用
INDEX.HTML - <a href="./php/bbs/okuri_form.html">
OKURI_FORM.HTML - <FORM ACTION="okuri_form.php" METHOD="post">
OKURI_FORM.PHP - <a href='./top.html'>

2004_PHP実践のツボ

(2) PHPによるBASIC認証 - auth_basic.php - 入力されたユーザ名とパスワードの正当性は評価していないので、少し高度な認証が必要
auth_basic_advanced.php - BASIC認証の機能はブラウザに依存するので、ブラウザの動きに左右される
auth_form.php - フォームによる認証

2010_独習PHP

フォーム認証の実装 - DATABASEの用意 - selfphp.sqlを利用して実験
- 認証フォームを用意 - login.php - <form>タグのactionオプション、USER名の入力要素、PASSWORDの入力要素は必須
- 認証SCRIPTを用意 - MyAuth.php - 複雑すぎてわからず、またAUHも導入していないのでエラーになるだろう
- ContentPageにMyAuth.phpを実装 - content.php - 認証済みのUSERをLogoutさせるにはlogoutメソッドを使用 - logout.php
補足:USER情報を管理する場合の注意点 - usrテーブルのうち、uid(主キーであること)/passwd(32桁以上を確保)は必須、

2011_PHP+MySQL_Webシステム構築

2-8-2 フォームとPHPのやり取り - 表示画面のHTML - smp2-88.htm - 役割:<FORM>タグのaction属性に、クリック後に呼び出すPHPファイル名を指定 - フォーム部品にはname属性<INPUT size="35" type="text" name="username">を指定 - クリックの判定には、プッシュボタンにもname属性<INPUT type="submit" value=" 登録 " name="exereg">を指定
- 次に呼び出される側のPHPファイルを作る - smp2-89.php - type属性がsubmitとなっているボタンがクリックされると、<FORM>タグのaction属性に指定されたファイルが呼び出されて、そのページへジャンプし、PHPであればそのスクリプトが実行される、その時<FORM>〜</FORM>タグで囲まれた中にあるフォーム部品に入力された値や選択された値の情報が渡される - 呼び出されたphpファイルでは、渡された情報を$_POSTという名前の配列の変数に対するname属性と同じ名前の文字列Indexによって取得する - form_php.htm/phpで試して、かつShift-JISに変換して、送付と表示が成功、あとはMySQLに挿入するProgramを追加して完成になる。

補講 - GDライブラリを使う

2011_PHP+MySQL_Webシステム構築

Column - GDライブラリによる画像処理 - 元の画像ファイルの縮小版を作って通信量を抑えて時間を短縮できる - smp5-04.php - albumの中のdataに保存して、その一つを指定して成功、あくまでもPHP内にあるJPGのものしか縮小しないので、MySQLの中では使うことは難しくあまり使い道なし。- sm_1383872242.jpgができたようである。しかしほかの記録などでHTML内の画像を張り付けたりするときは便利かも - dc_library.phpとcd_library.phpの連携でalbumの中のDATAを選んで、縮小版を作るアプリを作製した

htdocs/album/data/resampled.htmlを作成した - 実験で成功 − photolib/photo/resampled.htmlにも移植して成功