暗幕と、緑文字。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告|
  3. トラックバック(-)|
  4. コメント(-)

foldersearch_showimg.php

◎foldersearch_showimg.php(Folder search下フレーム画像表示用スクリプト)

##### このスクリプトの簡単な説明 #####

初めはfoldersearch_search.phpで生成したリンクから呼び出され、GETデータを取得。指定された画像ファイルを表示します。以降は現在表示している画像ファイルの前後をリンクとして表示し、自分自身を呼び出します。
画像ファイルがApacheのDocumentRootの下に無い場合は、Apache上で公開するためにhttpd.conf等でAliasをきっておく必要があります。(要はDocumentRootをもう一つ作るようなイメージですが)

Debian GNU/Linux 3.1(Sarge)のApache2だと、/etc/apache2/sites-available/defaultに
Alias /Alias名/ /実際のディレクトリ名/
<Directory "/実際のディレクトリ名/">
 Options MultiViews
 AllowOverride None
 Order allow,deny
 allow from 許可するIPアドレス
</Directory>
こんな感じ?

また、画像ファイルのサイズ(ピクセル数)を取得するためにGDライブラリを使用しています。
インストール方法はPHPのお勉強の鏡(カガミ)を参照。

画像の大きさを調整がチェックしてある際は、画像の大きさを調整して表示します(ただし検索ボタン押下時の設定を引き継いでいるため、このスクリプトが呼び出されてからチェックを入れたり外したりしても効果はありません)が、画像表示領域のサイズは自動検出ではなくて決め打ちのため、自分のブラウザに合わせた設定が必要です。(複数クライアントの時はif文などで振り分けが必要です)


##### このスクリプト解説 #####

-----/DocumentRoot/foldersearch/foldersearch_showimg.php ココカラ-----
001:<?php
002: require_once('../php/buhin/MyPrn.class.php');
003: $print_area = new MyPrn();
004:
005: if ( $_ENV['OS'] == 'Windows_NT' ) {
006:  $path_convert = 'print_area';
007: } else {
008:  require_once('../php/buhin/MyPrn.class.php' );
009:  $print_area_u8 = new MyPrn('UTF-8');
010:  $path_convert = 'print_area_u8';
011: }
012:
013: $print_area->start_html();
014:
015: if ( !( $F_H_C = @fopen("//".$_SERVER['REMOTE_ADDR']."/c\$/foldersearch_user_color.ini" , "r") ) ) {
016:  $F_H_C = @fopen("foldersearch_default_color.ini" , "r");
017:  if (!$F_H_C) {
018:   exit($print_area->conv("♪あべんど♪カラー設定ファイルが見つかりません。"));
019:  }
020: }
021:
022: while ( $readline = fgets($F_H_C) ) {
023:  $readline = str_replace("\n" , "" , $readline);
024:  $readline = str_replace("\r" , "" , $readline);
025:  $readline = explode( "," , $readline);
026:  $h_color_data[$readline[0]] = $readline[1];
027: }
028: fclose($F_H_C);
029:
030: print("<body text=\"$h_color_data[body_text]\" bgcolor=\"$h_color_data[body_bgcolor]\" link=\"$h_color_data[link_color]\" vlink=\"$h_color_data[vlink_color]\">\n");
031:
032: $c_now_file_path = stripslashes(rawurldecode($_GET[filepath]));
033: $c_now_file_path = $$path_convert->conv($c_now_file_path);
034:
035: $i_img_adjustment = $_GET[adjust];
036:
037: $c_now_dir_name = dirname($c_now_file_path);
038:
039: ereg( "/([^/]+)$" , $c_now_file_path , $c_now_file_name );
040: $c_now_file_name = $c_now_file_name[1];
041:
042: $print_area->prn_brcr($c_now_file_path);
043:
044: $a_now_file_info = getimagesize($c_now_file_path);
045:
046: $print_area->prn_brcr( 'width:' . $a_now_file_info[0] . 'pixel' . ' height:' . $a_now_file_info[1] . 'pixel' . ' File size:' . filesize($c_now_file_path) . 'byte' );
047:
048: $h_dir_handle = opendir($c_now_dir_name);
049:
050: $i_search_flg = 0;
051: $c_prev_path_name = NULL;
052:
053: while ( $c_path_name = readdir($h_dir_handle) ) {
054:
055:  if ( ( $c_path_name == '.' ) or ( $c_path_name == '..' ) ) { continue; }
056:
057:  if ( is_dir ( $c_now_dir_name . $c_path_name ) ) {
058:   continue;
059:  } else {
060:   if ( mb_eregi( "(jpg|jpeg|gif|png|bmp)$" , $c_path_name ) ) {
061:    if ( $i_search_flg == 1 ) {
062:     $i_search_flg = 2;
063:     break;
064:    }
065:    if ( $c_now_file_name == $c_path_name ) {
066:     $i_search_flg = 1;
067:    } else {
068:     $c_prev_path_name = $c_path_name;
069:    }
070:   }
071:  }
072: }
073:
074: if ( $c_prev_path_name ) {
075:  $print_area->prn( ' ' . '<A href="foldersearch_showimg.php?filepath=' . rawurlencode( $c_now_dir_name . '/' . $c_prev_path_name ) . '&adjust=' . $i_img_adjustment . '"><<</A>' );
076: } else {
077:  $print_area->prn( 'TOP' );
078: }
079: if ( $i_search_flg == 2 ) {
080:  $print_area->prn_brcr( '<A href="foldersearch_showimg.php?filepath=' . rawurlencode( $c_now_dir_name . '/' . $c_path_name ) . '&adjust=' . $i_img_adjustment . '">>></A>' );
081: } else {
082:  $print_area->prn_brcr( 'END' );
083: }
084:
085: $c_now_file_path = str_replace("/実際のディレクトリ名/" , "/Alias名/" , $c_now_file_path);
086: $c_now_file_path = str_replace( "%2F" , "/" , rawurlencode($c_now_file_path) );
087:
088: if ( $i_img_adjustment == 1 ) {
089:  $i_blowser_heigth = 850;
090:  $i_blowser_width = 1100;
091:  $i_heigth_per = $i_blowser_heigth / $a_now_file_info[1];
092:  $i_width_per = $i_blowser_width / $a_now_file_info[0];
093:
094:  if ( ( $i_heigth_per > 1 ) && ( $i_width_per > 1 ) ) {
095:   $print_area->prn_brcr( '<IMG src="' . $c_now_file_path . '" alt=""></td></tr>');
096:  } elseif ( $i_heigth_per > $i_width_per ) {
097:   $print_area->prn_brcr( '<IMG src="' . $c_now_file_path . '" alt="" height="' . $a_now_file_info[1] * $i_width_per . '" width="' . $a_now_file_info[0] * $i_width_per .'"></td></tr>');
098:  } else {
099:   $print_area->prn_brcr( '<IMG src="' . $c_now_file_path . '" alt="" height="' . $a_now_file_info[1] * $i_heigth_per . '" width="' . $a_now_file_info[0] * $i_heigth_per .'"></td></tr>');
100:  }
101: } else {
102:  $print_area->prn_brcr( '<IMG src="' . $c_now_file_path . '" alt=""></td></tr>');
103: }
104:
105: $print_area->end_html();
106:?>
-----/DocumentRoot/foldersearch/foldersearch_showimg.php ココマデ-----

32~33行目表示するファイルパスをGETデータから取得。

35行目画像の大きさを調整するか否かをGETデータから取得。

37行目ファイルパスからディレクトリ部分を抜き出す。

39~40行目ファイルパスからファイル名を抜き出す。(basename関数はファイル名が全角に対応していないみたいです)
使用するのがmb_ereg関数だとうまくいかない場合があるのでeregにしました。

42行目ファイルのフルパスを表示(画面表示一行目)

44行目GDライブラリを使用して画像のサイズ(ピクセル)を取得。

46行目ピクセル数(横×縦)、ファイル容量(バイト)を表示(画面表示二行目)

48行目表示する画像ファイルの前後を取得してリンクを生成するためにディレクトリハンドラをオープン。

50~51行目フラグ及び、現在表示しているファイルの一つの前のファイル名を保持する領域を初期化
 ※53~72行目のwhileループを抜けた際の状態
  $c_prev_path_name = NULL : 今回のファイルが最初の画像ファイルである。
  $i_search_flg = 1 : 今回のファイルが最後の画像ファイルである。
  $i_search_flg = 2 : 次の画像ファイルがある。

74~78行目現在表示している画像ファイルが最初の画像ファイルで無い場合、前の画像ファイルを呼び出すリンク(<<)を表示。最初の画像ファイルの場合は'TOP'と表示

79~83行目現在表示している画像ファイルが最後の画像ファイルで無い場合、次の画像ファイルを呼び出すリンク(>>)を表示。最後の画像ファイルの場合は'END'と表示

85~86行目簡単な説明で書いたとおり、パスをAlias名に置換します。

88~103行目画像の表示。画像の大きさを調整するする場合は、89~90行で指定したサイズに収まるように計算して表示します。(縦横の比率は崩さない)
スポンサーサイト
  1. 2007/06/28(木) 23:02:13|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

foldersearch_search.php

◎foldersearch_search.php(Folder search下フレーム検索結果表示用スクリプト)

##### このスクリプトの簡単な説明 #####

foldersearch_makelist.phpで作成しておいたsearch_folder.txtを読み込んで、検索対象となるディレクトリ(直下に画像ファイルがあるもののみ)を抽出し、テーブルにして表示します。
表示欄のリンク'>>'をクリックすることでfoldersearch_showimg.phpを呼び出すと、そのディレクトリの一番最初の画像ファイルを表示します。
※画像を表示するためには、画像が保存してあるディレクトリがApacheで公開されていなければいけません。(詳しくはfoldersearch_showimg.phpの説明を参照)


##### このスクリプト解説 #####

-----/DocumentRoot/foldersearch/foldersearch_search.php ココカラ-----
001:<?php
002: require_once('../php/buhin/MyPrn.class.php');
003: $print_area = new MyPrn();
004:
005: if ( $_ENV['OS'] == 'Windows_NT' ) {
006:  $path_convert = 'print_area';
007: } else {
008:  require_once('../php/buhin/MyPrn.class.php' );
009:  $print_area_u8 = new MyPrn('UTF-8');
010:  $path_convert = 'print_area_u8';
011: }
012:
013: $c_search_folder_file_path = "./search_folder.txt";
014:
015: $print_area->start_html();
016:
017: if ( !( $F_H_C = @fopen("//".$_SERVER['REMOTE_ADDR']."/c¥$/foldersearch_user_color.ini" , "r") ) ) {
018:  $F_H_C = @fopen("foldersearch_default_color.ini" , "r");
019:  if (!$F_H_C) {
020:   exit($print_area->conv("♪あべんど♪カラー設定ファイルが見つかりません。"));
021:  }
022: }
023:
024: while ( $readline = fgets($F_H_C) ) {
025:  $readline = str_replace("¥n" , "" , $readline);
026:  $readline = str_replace("¥r" , "" , $readline);
027:  $readline = explode( "," , $readline);
028:  $h_color_data[$readline[0]] = $readline[1];
029: }
030: fclose($F_H_C);
031:
032: print("<body text=¥"$h_color_data[body_text]¥" bgcolor=¥"$h_color_data[body_bgcolor]¥" link=¥"$h_color_data[link_color]¥" vlink=¥"$h_color_data[vlink_color]¥">¥n");
033:
034: if ( !( $_POST[fm_s_search_start] ) ) {
035:  $print_area->end_html();
036:  exit;
037: }
038:
039: if ( $_POST[fm_c_search_foldername] == NULL ) {
040:  $print_area->prn_brcr('検索条件を入力してください');
041:  $print_area->end_html();
042:  exit;
043: }
044:
045: if ( $_POST[fm_b_img_adjustment] ) {
046:  $i_img_adjustment = 1;
047: } else {
048:  $i_img_adjustment = 0;
049: }
050:
051: if ( $_POST[fm_b_check_test] ) {
052:  $print_area->prnr($_POST);
053:  $print_area->end_html();
054:  exit;
055: }
056:
057: $a_search_folder_list = file( $print_area->conv($c_search_folder_file_path) );
058:
059: $c_search_char = $print_area->conv( $_POST[fm_c_search_foldername] , $print_area->get_cs() );
060:
061: $print_area->prn_cr('<table border="2">');
062: $print_area->prn_cr(' <tr><th>フォルダ名</th><th>ファイル数</th><th>ファイルサイズ</th><th>表示</th></tr>');
063:
064: if ( $_POST[fm_b_cache_clear] ) {
065:  clearstatcache();
066: }
067:
068: reset($a_search_folder_list);
069: while ( list( $key , $c_search_folder_list_line ) = each($a_search_folder_list) ) {
070:
071:  if ( mb_eregi( $c_search_char , $print_area->conv($c_search_folder_list_line , $$path_convert->get_cs() ) ) ) {
072:   $c_search_folder_list_line = str_replace("¥n" , "" , $c_search_folder_list_line);
073:   $c_search_folder_list_line = str_replace("¥r" , "" , $c_search_folder_list_line);
074:
075:   $h_dir_handle = opendir($c_search_folder_list_line);
076:
077:   $i_dir_size = 0;
078:   $i_dir_file_count = 0;
079:   $c_first_file_name = NULL;
080:
081:   while ( $c_path_name = readdir($h_dir_handle) ) {
082: 
083:    if ( ( $c_path_name == '.' ) or ( $c_path_name == '..' ) ) { continue; }
084:
085:    if ( is_dir ( $c_search_folder_list_line . $c_path_name ) ) {
086:     continue;
087:    } else {
088:     if ( mb_eregi( "(jpg|jpeg|gif|png|bmp)$" , $c_path_name ) ) {
089:      $i_dir_size = $i_dir_size + filesize( $c_search_folder_list_line . $c_path_name );
090:      $i_dir_file_count++;
091:      if ( !($c_first_file_name) ) {
092:       $c_first_file_name = $c_search_folder_list_line . $c_path_name;
093:      }
094:     }
095:    }
096:   }
097:   if ( $i_dir_file_count == 0 ) { continue; }
098:
099:   $print_area->prn_cr( ' <tr><td>' . $c_search_folder_list_line . '</td><td align="right">' . $i_dir_file_count . '</td><td align="right">' . $i_dir_size . '</td><td align="center"><A href="foldersearch_showimg.php?filepath=' . rawurlencode($c_first_file_name) . '&adjust=' . $i_img_adjustment . '">>></A></td></tr>' , $$path_convert->get_cs() );
100:  }
101: }
102: $print_area->prn_cr('</table>');
103: $print_area->end_html();
104:?>
-----/DocumentRoot/foldersearch/foldersearch_search.php ココマデ-----

34~37行目POSTデータとしてfm_s_search_start(検索開始)が渡されていない時は、foldersearch_index.phpから呼び出されたと思われるため、HTML終了タグを書き出して終了。

39~43行目fm_c_search_foldername(検索対象文字列)がNULLの時は検索を行わず、エラーを表示して終了。(全件表示は'.'を指定)

45~49行目fm_b_img_adjustment(画像の大きさを調整)にチェックが入っているかどうかを、99行目でGETデータとしてfoldersearch_showimg.phpに送るため評価しておく。(チェック時'1'、非チェック時'0')

51~55行目fm_b_check_test(ちぇっく?)にチェックが入っているときはPOSTデータを表示して終了(デバッグ用ルーチン)

57行目foldersearch_makelist.phpで作成しておいたsearch_folder.txtを配列$a_search_folder_listに読み込んで、それが終了するまで69~101行目を繰り返す。

61~62行目テーブルタグの開始

64~66行目fm_b_cache_clear(clearstatcache?)にチェックが入っていた時、ファイルキャッシュをクリアする。

69~101行目$a_search_folder_listが終わるまで以下を繰り返す。

71行目ディレクトリパスが検索対象文字列を含んでいた場合、75行目でディレクトリハンドラをオープンする。

77~79行目ディレクトリに含まれる画像ファイルの総サイズ、ファイル数、最初のファイル名をクリア

81~96行目ディレクトリ直下の画像ファイル(対象は拡張子がjpg,jpeg,gif,png,bmpのもの。大文字小文字関係なし)の総サイズ、ファイル数、最初のファイル名(フルパス)を取得。

97行目対象ディレクトリの直下に画像ファイルが無かった場合は、次のディレクトリの検索(69行目からのループ)に戻る。

99行目対象ディレクトリの直下に画像ファイルがあった場合はテーブルの1ラインとして、ディレクトリパス名、ファイル数、総ファイルサイズ、最初の画像ファイルへのリンク(URLエンコードをする)を表示。

102~103行目テーブルタグを閉じて終了
  1. 2007/06/26(火) 21:36:28|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

foldersearch_makelist.php

◎foldersearch_makelist.php(Folder search検索用リストファイル作成)

##### このスクリプトの簡単な説明 #####

foldersearch_top.phpで「FILELIST作成」ボタンを押したときに動作するスクリプト。
あらかじめtarget_folder.txtで指定しておいたディレクトリ以下のディレクトリを全て取得してsearch_folder.txtに書き出します。
この時点ではディレクトリの下に画像ファイルがあるかどうかは関係なし。

##### スクリプト解説 #####

-----/DocumentRoot/foldersearch/foldersearch_makelist.php ココカラ-----
001:<?php
002: require_once('../php/buhin/MyPrn.class.php');
003: $print_area = new MyPrn();
004:
005: require_once('../php/buhin/MyFlcon.class.php');
006:
007: if ($_ENV['OS'] == 'Windows_NT') {
008:  $file_control = new Myflcon('../php/buhin/MyPrn.class.php');
009:  $path_convert = 'print_area';
010: } else {
011:  $file_control = new Myflcon('../php/buhin/MyPrn.class.php' , 'UTF-8');
012:  require_once('../php/buhin/MyPrn.class.php' );
013:  $print_area_u8 = new MyPrn('UTF-8');
014:  $path_convert = 'print_area_u8';
015: }
016:
017: $print_area->start_html();
018:
019: $c_target_folder_file_path = "./target_folder.txt";
020: $c_search_folder_file_path = "./search_folder.txt";
021:
022: if ( !( $F_H_C = @fopen("//".$_SERVER['REMOTE_ADDR']."/c¥$/foldersearch_user_color.ini" , "r") ) ) {
023:  $F_H_C = @fopen("foldersearch_default_color.ini" , "r");
024:  if (!$F_H_C) {
025:   exit($print_area->conv("♪あべんど♪カラー設定ファイルが見つかりません。"));
026:  }
027: }
028:
029: while ( $readline = fgets($F_H_C) ) {
030:  $readline = str_replace("¥n" , "" , $readline);
031:  $readline = str_replace("¥r" , "" , $readline);
032:  $readline = explode( "," , $readline);
033:  $h_color_data[$readline[0]] = $readline[1];
034: }
035: fclose($F_H_C);
036:
037: print("<body text=¥"$h_color_data[body_text]¥" bgcolor=¥"$h_color_data[body_bgcolor]¥">¥n");
038:
039: if ( !($c_target_folder_file_path) ) {
040:  exit($print_area->conv("♪あべんど♪サーチフォルダ指定ファイルが見つかりません。"));
041: }
042:
043: $a_target_folder_file_store = file( $print_area->conv($c_target_folder_file_path) );
044:
045: while ( list( $key , $c_target_folder_file_line ) = each($a_target_folder_file_store) ) {
046:  $c_target_folder_file_line = str_replace("¥n" , "" , $c_target_folder_file_line);
047:  $c_target_folder_file_line = str_replace("¥r" , "" , $c_target_folder_file_line);
048:
049:  if ( isset($a_search_folder_list) ) {
050:   $a_search_folder_list = array_merge( $a_search_folder_list , $file_control->fldir_array( $print_area->conv( $c_target_folder_file_line ) , 3 ) );
051:  } else {
052:   $a_search_folder_list = $file_control->fldir_array( $print_area->conv( $c_target_folder_file_line ) , 3 );
053:  }
054: }
055: 
056: $F_H_L = fopen( $c_search_folder_file_path , "w");
057: flock( $F_H_L , LOCK_EX );
058:
059: while ( list( $key , $c_search_folder_list_line ) = each($a_search_folder_list) ) {
060:  fwrite( $F_H_L , $$path_convert->conv_cr($c_search_folder_list_line) );
061: }
062:
063: flock( $F_H_L , LOCK_UN );
064: fclose($F_H_L);
065:
066: $print_area->prn_brcr('終了');
067: $print_area->end_html();
068:?>
-----/DocumentRoot/foldersearch/foldersearch_makelist.php ココマデ-----

5~15行目でMyFlconクラスをインスタンス化。
MyPrn.classの解説でも書いたとおり、Debianサーバのsambaはファイル名の文字エンコードにUTF-8を使用しているので、UTF-8を指定してのインスタンス化になります。
Debianサーバ時はパスの変換用にMyPrnクラスを新たにUTF-8でインスタンス化。
以後は一々環境のチェックをしなくてすむように、$path_convertを可変変数として使用します。

43行目でtarget_folder.txtを配列に読み込み、指定されたディレクトリが無くなるまで、45~54行目を繰り返します。

45~54行目で指定されたディレクトリ以下のディレクトリを取得し、結果を配列にマージしていきます。

56~64行目で取得したディレクトリのパスをsearch_folder.txtに書き出します。
  1. 2007/06/25(月) 23:19:58|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

今日観たDVD(70bg)

今日とか言いつつ、先々週観たDVDの感想を。(書くだけ書いて忘れてた)

●DEATH NOTE -デスノート-
http://wwws.warnerbros.co.jp/deathnote/
http://www.vap.co.jp/deathnote/m/index.html
ジャンプ本誌にて連載されていた、原作・大場つぐみ(≒ガモウひろし)、作画・小畑健の同名漫画を実写映画化したもの。一応原作は全部読んでます。コミックスは買ってないので、細部は忘れていますが。
で、原作を知っている人間の視点で観ると、あの長ったらしいシナリオを良くまとめて映画の体裁を整えたな、と。
無理やり尺を短くしてるんでかなり強引な展開も目立ちますが、一応原作のエッセンスを残しつつちゃんと観られる映画になっています。
ただ、ラストにLがキラを嵌めるやり方は、原作のLならこんな選択肢は選ばなそうな感じでしたが。(それとも、こんなようなエピソードもあったんだっけか?最後にライトが情けない人間になるのは原作どおり)映画のLは原作のLとニア(因みにニアは影も形もありません)の性格が微妙に混ざっている感じですね。俳優ははまり役でしたけど。椅子の座り方とか携帯の持ち方とか原作のマンマです。(そういえば、私が一時期欲しかったPDA型の携帯使ってましたね。Vodaphoneだっけか?)
あと、原作の頃から思ってましたけど、ライトの「キラ」->「(記憶を失って)キラを憎む」->「キラに戻る」って流れは、人間の精神的に耐えられ無さそうな気がするんですよね。せめて、もうちょっと葛藤があってもいいような。
死神はCGで再現されてましたけど、アレは微妙ですね。CG自体の出来はいいんですけど、やっぱり話が途端に胡散臭くなってしまいます。死神は画面には出さずに、声だけの存在としてストーリーを構成したほうが現実味があって面白い作品になった気もします。
その他、楽しく突っ込めるところも結構あります。
警視庁長官が白いマフラーを首から垂らしてたりとか(ヲイヲイ)、警視庁で使われている犯罪者データベースのUIが無駄に凝っていたり(特撮モノのコンソールみたい。お役所の仕事に使うんだからあんなに派手なわけないって)、ミサの拘束具が原作マンマ再現されてたり(趣味の世界)、Lが食いすぎだったり(NG出した時大変そうだね)と、まぁネタ映画としてもナカナカ。
あ、あとレッチリの主題歌がやたら印象に残りました。


●スタンド・バイ・ミー
若かりし頃何度か観てるはずなんですがいまひとつストーリーを憶えていなかったので、あらためて観てみました。
で、観てるうちに徐々に思い出してきました。子供の頃、この映画の影響で線路を歩いていくのに憧れたな~とかね。流石にやったことは無いけど。
今更私なんかが解説するような映画じゃないですが、折角なので気になったところだけ。
主人公達は12歳の少年4人のグループですが、主役のゴーディ以外は悪ぶってタバコを吸ってます。全然そんな記憶無かったんでちょっと驚き。昔はよくTVで放映していたように思うんですが、最近あまりやってない気がするのは青少年への影響を考慮してとかなんでしょうかね?
キャストも全然記憶に無かったんですが、リーダー格のクリスを初めみんなそれなりに整った顔立ちをしていて、ショタ系のウケも良さそうですね。
中でもクリスは演技も達者で、配役的にも実にリーダーっぽい性格のリーダーで格好良いです。ちょっと老成しすぎかな?って感もありますけど。
因みにクリスの中の人のリバー・フェニックスは将来を嘱望されながらも若くして死亡。ヤクのやりすぎだったみたいです。この映画がクリスが死んだことを知ったゴーディのモノローグから始まることを考えると、ちょっと因縁めいたものを感じますね。
さて、ありきたりですがやっぱり名作はいつ観ても良いな~と再認識しました。私にしては珍しく昔の友人を懐かしんでみたり。
  1. 2007/06/24(日) 21:53:58|
  2. アニメとか|
  3. トラックバック:0|
  4. コメント:0

foldersearch_index&top.php

◎foldersearch_index.php(Folder searchアクセス用スクリプト)

##### このスクリプトの簡単な説明 #####

特に解説の必要も無いでしょう。
ただ単にフレームを切っているだけのスクリプト。というか、純粋なHTMLファイルにしてしまっても何の問題もありません。
当ツールを使用するときはこのスクリプトにアクセスします。


##### このスクリプト解説 #####

-----/DocumentRoot/foldersearch/foldersearch_index.php ココカラ-----
001:<?php
002: require_once('../php/buhin/MyPrn.class.php');
003: $print_area = new MyPrn();
004:
005: $print_area->start_html( 'Folder search' );
006:
007: $print_area->prn_cr( '<FRAMESET rows="5%,95%">' );
008: $print_area->prn_cr( '<FRAME name="top_frame" src="./foldersearch_top.php">' );
009: $print_area->prn_cr( '<FRAME name="main_frame" src="./foldersearch_search.php">' );
010: $print_area->prn_cr( '</FRAMESET>' );
011:
012: $print_area->prn_cr( '</html>' );
013:?>
-----/DocumentRoot/foldersearch/foldersearch_index.php ココマデ-----

解説らしい解説もありませんが、フレームを5%、95%に区切っているのは普段は「FILELIST作成」ボタンは見えてなくても良いという判断からです。(ツールのスクリーンショットではあえて見える状態にしてありますが、普段は「検索対象文字列」の列しか見えてません)
私のブラウザのサイズだと、5%がちょうど良いんです。




◎foldersearch_top.php(Folder search上フレーム表示用スクリプト)

##### このスクリプトの簡単な説明 #####

二つに分けられたフレームの内、上フレームの表示を行うスクリプトです。
上フレームは常に「検索対象文字列」~が表示されていますので、他にスクリプトはありません。
ボタンやチェックボックスの意味はツールのトップを参照してください。


##### このスクリプト解説 #####

-----/DocumentRoot/foldersearch/foldersearch_top.php ココカラ-----
001:<?php
002: require_once('../php/buhin/MyPrn.class.php');
003: $print_area = new MyPrn();
004:
005: $print_area->start_html();
006:
007: if ( !( $F_H_C = @fopen("//".$_SERVER['REMOTE_ADDR']."/c¥$/foldersearch_user_color.ini" , "r") ) ) {
008:  $F_H_C = @fopen("foldersearch_default_color.ini" , "r");
009:  if (!$F_H_C) {
010:   exit($print_area->conv("♪あべんど♪カラー設定ファイルが見つかりません。"));
011:  }
012: }
013:
014: while ( $readline = fgets($F_H_C) ) {
015:  $readline = str_replace("¥n" , "" , $readline);
016:  $readline = str_replace("¥r" , "" , $readline);
017:  $readline = explode( "," , $readline);
018:  $h_color_data[$readline[0]] = $readline[1];
019: }
020: fclose($F_H_C);
021:
022: print("<body text=¥"$h_color_data[body_text]¥" bgcolor=¥"$h_color_data[body_bgcolor]¥">¥n");
023:
024: print('<form action="./foldersearch_search.php" method="post" name="search_area" id="search_area" target="main_frame">' . "¥n");
025: $print_area->prn( '検索対象文字列:' );
026: print('<input type="text" name="fm_c_search_foldername" size="40" maxlength="80">');
027: $print_area->prn( '<input type="submit" name="fm_s_search_start" value=" 検 索 開 始 ">' );
028: $print_area->prn( '画像の大きさを調整?' );
029: print('<input type="checkbox" name="fm_b_img_adjustment" value="0N" checked>');
030: $print_area->prn( 'clearstatcache?' );
031: print('<input type="checkbox" name="fm_b_cache_clear" value="0N">');
032: $print_area->prn( 'ちぇっく?' );
033: print('<input type="checkbox" name="fm_b_check_test" value="0N">');
034: $print_area->prn_brcr("");
035: print('</form>');
036:
037: print('<form action="./foldersearch_makelist.php" method="post" name="makelist_area" id="makelist_area" target="main_frame">' . "¥n");
038: $print_area->prn_brcr( '<input type="submit" name="fm_s_move_filelist" value="FILELIST作成">' );
039: print('</form>');
040:
041: $print_area->end_html();
042:?>
-----/DocumentRoot/foldersearch/foldersearch_top.php ココマデ-----

7~20行目の間で画面表示用のカラーファイルの読込と連想配列への格納を行っています。
22行目ではそれを使用してBODYタグを書き出しています。
この処理は私の作るツールでは共通して使用していく・・・ハズ。まぁ、前にPerlで作ったSYSLOGのビューアー(06/10/21のエントリー)からの流用ですが。そっちの方は職場のサーバに置いてみんなで使うのが前提だったので個人用のカラー設定画面とか作りましたけど、このツールではそんなモノ無し。変えたいときは直接iniファイルを弄ります。
因みにファイルの書式は
-----/DocumentRoot/foldersearch/foldersearch_default_color.ini ココカラ-----
body_bgcolor,#000000
body_text,#00FF00
link_color,#FF0000
vlink_color,#FFFF00
-----/DocumentRoot/foldersearch/foldersearch_default_color.ini ココマデ-----
こんな感じ。

24~35行目が「検索開始」ボタンをサブミットとするフォーム。
呼び出すのはfoldersearch_search.phpスクリプト。更新するのは下フレーム。

24~35行目が「FILELIST作成」ボタンをサブミットとするフォーム。
呼び出すのはfoldersearch_makelist.phpスクリプト。更新するのは下フレーム。
  1. 2007/06/23(土) 18:55:11|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

MacOSがアップデート

Mac OS X アップデート(Power PC)10.4.10 22.1MB

以前の話だと(3/14のエントリー)10.4.9がTiger最後のアップデートみたいな話でしたが、Leopardが延期になったせいで10.4.10が用意されたのかな?

●Mac OS X 10.4.10 Update (PPC)
http://www.apple.com/jp/ftp-info/reference/macosx10410updateppc.html
●About the Mac OS X 10.4.10 Update (delta)(6/22 20:45現在、和訳されていない))
http://docs.info.apple.com/article.html?artnum=305533-ja

インストール後は再起動要求が有りますのでご注意ください。


[07/6/25追記]
またしてもアップデート。

Security Update 2007-006(Power PC)1.0 3.4M

●Security Update 2007-006 (PPC)
http://www.apple.com/jp/ftp-info/reference/securityupdate2007006ppc.html

インストール後は再起動要求が有りますのでご注意ください。
  1. 2007/06/22(金) 20:56:11|
  2. PC関連(ニュース)|
  3. トラックバック:0|
  4. コメント:0

MyFlcon.class.php(ファイルコントロール用クラス)

クラス名 : MyFlcon

##### このクラスの簡単な説明 #####

ファイルコントロール周りのツール集・・・のつもりですが、今のところ指定したディレクトリ以下のファイル又はディレクトリ一覧を取得するfldir_arrayメソッドのみのクラスです。
このクラスはMyPrnクラスを使用するため、インスタンス化する際の引数としてインスタンス化元ファイルからMyPrn.class.phpまでのパスを与える必要があります。また第2引数として、ファイル名の文字エンコードを与えることが可能です。

fldir_arrayメソッドの第2引数で出力する対象が異なります。
1->ファイル及びディレクトリをフルパスで返す
2->ファイルのみをフルパスで返す
3->ディレクトリのみをフルパスで返す
4->ディレクトリのみをフルパスで返す(/home/user/testといった構造の場合/homeや/home/userは返さない)


##### このクラスのスクリプト解説 #####

-----/DocumentRoot/php/buhin/MyFlcon.class.php ココカラ-----
001:<?php
002:class MyFlcon {
003: private $print_area;
004:
005: public function __construct( $path , $locales = 'auto' ) {
006:  require_once( $path );
007:  $this->print_area = new MyPrn( $locales );
008: }
009:
010: public function __destruct() {}
011:
012: public function fldir_array( $c_search_path , $i_switch = 1 ) {
013:
014:  $a_fldir_list = $this->fldir_array_sub( $c_search_path , $i_switch );
015:
016:  if ( isset( $a_fldir_list ) ) {
017:
018:   sort( $a_fldir_list );
019:
020:   if ( $i_switch == 4 ) {
021:
022:    $a_fldir_list_copy = $a_fldir_list;
023:    $a_fldir_list_store = $a_fldir_list;
024:
025:    unset( $a_fldir_list );
026:
027:    reset( $a_fldir_list_store );
028:    while ( list( $key_store , $c_fldir_list_store_line ) = each( $a_fldir_list_store ) ) {
029:
030:     reset( $a_fldir_list_copy );
031:     while ( list( $key_list , $c_fldir_list_copy_line ) = each( $a_fldir_list_copy ) ) {
032:      if ( $key_store >= $key_list ) { continue; }
033:      if ( substr_count( $c_fldir_list_copy_line , $c_fldir_list_store_line ) != 0 ) { continue 2; }
034:     }
035:     $a_fldir_list[] = $c_fldir_list_store_line;
036:    }
037:   }
038:  }
039:  return $a_fldir_list;
040: }
041:
042: private function fldir_array_sub( $c_search_path , $i_switch = 1 ) {
043:
044:  $c_search_path = strtr( $c_search_path , "¥¥" , '/' );
045:
046:  $h_dir_handle = opendir( $this->print_area->conv( $c_search_path ) );
047:
048:  while ( $c_path_name = readdir( $h_dir_handle ) ) {
049:
050:   if ( ( $c_path_name == '.' ) or ( $c_path_name == '..' ) ) { continue; }
051:
052:   if ( is_dir ( $this->print_area->conv( $c_search_path . '/' . $c_path_name ) ) ) {
053:
054:    if ( $i_switch != 2 ) {
055:     $a_fldir_list[] = $this->print_area->conv( $c_search_path . '/' . $c_path_name . '/' );
056:    }
057:
058:    $a_fldir_list_under = $this->fldir_array_sub( $this->print_area->conv( $c_search_path . '/' . $c_path_name ) , $i_switch );
059:
060:    if ( isset( $a_fldir_list_under ) ) {
061:     if ( isset( $a_fldir_list ) ) {
062:      $a_fldir_list = array_merge( $a_fldir_list , $a_fldir_list_under );
063:     } else {
064:      $a_fldir_list = $a_fldir_list_under;
065:     }
066:    }
067:   } else {
068:    if ( $i_switch <= 2 ) {
069:     $a_fldir_list[] = $this->print_area->conv( $c_search_path . '/' . $c_path_name );
070:    }
071:   }
072:  }
073:  closedir( $h_dir_handle );
074:  return $a_fldir_list;
075: }
076:}
077:?>
-----/Document root/php/buhin/MyFlcon.class.php ココマデ-----

3行目でプライベートプロパティの$print_areaを定義。
$print_areaはコンストラクトでMyPrnクラスをインスタンス化します。

5~8行目コンストラクタ
ファイル名で使用している文字エンコードにあわせる必要があるため、MyPrnクラスをインスタンス化します。

10行目デストラクタ
特に使用しません。

12~40行目fldir_arrayメソッド
実際に配列を取得するのはfldir_array_subメソッドになるため、当メソッドでは主に後処理を行います。
14行目でfldir_array_subメソッドを呼び出して、その結果を$a_fldir_listに格納します。(存在しない場合はNULL)
16行目で$a_fldir_listがNULLでないことを確認して、存在していれば以下の処理を行います。存在していなければNULLを返します。
18行目で$a_fldir_listを昇順ソートします。(機能スイッチが4以外の場合は、ソート結果をそのまま返します。)
もし、機能スイッチが4だったら20~37行目で最下層のディレクトリのみを取り出して返します。

42~75行目fldir_array_subメソッド
fldir_arrayメソッドから呼び出されるのが前提のため、privateにしています。
44行目で¥を/に変換して、OSに関わらずファイル区切り文字として/を使用するように統一しています。(作ったときはDIRECTORY_SEPARATOR定数を知らなかったもので・・・)
46行目でディレクトリハンドラをオープンし、48~72行目で当該ディレクトリの中のディレクトリ及びファイルを取得します。
50行目は、ディレクトリハンドラに含まれている'.'(カレントディレクトリ)'..'(親ディレクトリ)を読み飛ばしています。
52行目から66行目までが、ディレクトリに対する処理です。
ディレクトリだった際は58行目で自分自身を再帰的に呼び出して、その下のディレクトリ及びファイルを取得していきます。
最終的に指定されたディレクトリ以下のディレクトリ及びファイルを配列として返します。
  1. 2007/06/21(木) 22:49:45|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

MyPrn.class.php(画面表示用文字エンコード変換クラス)

クラス名 : MyPrn

##### このクラスの簡単な説明 #####

当クラスはmb_convert_encoding関数を使用したconvメソッドを中心とする、文字エンコード変換用のツール集です。
07/06/19のエントリーでも触れましたが、ウチのDebianサーバのsamba上の共有ファイル名はUTF-8を使用しつつデフォルトのロケールはEUC-JP、そして一応Windowsサーバ上でも問題なく動く(つもり)様に作ろうとしたら、色々と文字エンコードを変換しなければならなかったため、クラスを作ってその上でやらせたほうが後々のメンテも楽だろうと言うことで作ってみました。
あと大きな点として、私のサーバマシンはDocumentRootをsambaで共有していて、その上で直接各種スクリプトを'Shift-JIS'で編集しているので、そのまま表示しようとすると文字化けするってのもあります。
なので、日本語の表示はすべからくこのクラスを通します。


##### このクラスのスクリプト解説 #####

-----/DocumentRoot/php/buhin/MyPrn.class.php ココカラ-----
001:<?php
002:class MyPrn {
003: private $character_set;
004:
005: public function __construct( $c_locales = 'auto' ) {
006:  if ( $c_locales == 'auto' ) {
007:   if ( $_ENV['OS'] == 'Windows_NT' ) {
008:    $this->character_set = 'SJIS';
009:   } else {
010:    $this->character_set = 'EUC-JP';
011:   }
012:  } else {
013:   $this->character_set = $c_locales;
014:  }
015: }
016:
017: public function __destruct() {}
018:
019: //キャラクターセットの取得
020: public function get_cs() { return $this->character_set; }
021:
022: //キャラセット変換後の文字列の取得
023: public function conv( $str , $c_locales = 'auto' ) {
024:  if ( $this->character_set == 'UTF-8' ) {
025:   $str = mb_convert_encoding( $str , $this->character_set , $c_locales );
026:   $str = mb_ereg_replace( "¥xE3¥x80¥x9C" , "¥xEF¥xBD¥x9E" , $str );
027:   return $str;
028:  } else {
029:   return mb_convert_encoding( $str , $this->character_set , $c_locales );
030:  }
031: }
032:
033: //標準出力(キャラセット変換)
034: public function prn( $str , $c_locales = 'auto' ) {
035:  print( $this->conv( $str , $c_locales ) );
036: }
037:
038: //キャラセット変換後の文字列の取得(改行コード付)
039: public function conv_cr( $str , $c_locales = 'auto' ) {
040:  if ( $_ENV['OS'] == 'Windows_NT' ) {
041:   return ( $this->conv( $str , $c_locales ) . "¥r¥n" );
042:  } else {
043:   return ( $this->conv( $str , $c_locales ) . "¥n" );
044:  }
045: }
046:
047: //改行コード付標準出力(キャラセット変換)
048: public function prn_cr( $str , $c_locales = 'auto' ) {
049:  print( $this->conv_cr( $str , $c_locales ) );
050: }
051:
052: //キャラセット変換後の文字列の取得(改行コード付&改行タグ付)
053: public function conv_brcr( $str , $c_locales = 'auto' ) {
054:  if ( $_ENV['OS'] == 'Windows_NT' ) {
055:   return ( $this->conv( $str , $c_locales ) . "<br>¥r¥n" );
056:  } else {
057:   return ( $this->conv( $str , $c_locales ) . "<br>¥n" );
058:  }
059: }
060:
061: //改行コード&改行タグ付標準出力(キャラセット変換)
062: public function prn_brcr( $str , $c_locales = 'auto' ) {
063:  print( $this->conv_brcr( $str , $c_locales ) );
064: }
065:
066: //print_r関数をそのままのレイアウトでHTML表示(キャラセット変換)
067: public function prnr( $str , $c_locales = 'auto' ) {
068:  print( '<PRE>' );
069:  $this->prn( print_r( $str, yes ) , $c_locales );
070:  print( '</PRE>' );
071: }
072:
073: //HTMLの終了
074: public function end_html() {
075:  $this->prn_cr( '' );
076:  $this->prn_cr( '</body>' );
077:  $this->prn_cr( '</html>' );
078: }
079:
080: //HTMLの開始
081: public function start_html( $c_title = NULL ) {
082:  $this->prn_cr( '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' );
083:  $this->prn_cr( '<html lang="ja">' );
084:  $this->prn_cr( '<head>' );
085:  $this->prn( '<META http-equiv="Content-Type" content="text/html; charset=' );
086:  if ( $this->character_set == 'SJIS' ) {
087:   $this->prn( 'Shift_JIS' );
088:  } else {
089:   $this->prn( $this->character_set );
090:  }
091:  $this->prn_cr( '">' );
092:  $this->prn_cr( '<META http-equiv="Content-Script-Type" content="text/javascript">' );
093:  $this->prn_cr( '<META http-equiv="Content-Style-Type" content="text/css">' );
094:  if ( $c_title ) {
095:   $this->prn_cr( '<title>' . $c_title . '</title>' );
096:  }
097:  $this->prn_cr( '</head>');
098:  $this->prn_cr( '' );
099: }
100:}
101:?>
-----/Document root/php/buhin/MyPrn.class.php ココマデ-----

3行目でプライベートプロパティの$character_setを定義。
$character_setは文字列出力時のエンコードを保存しています。

5~15行目コンストラクタ
インスタンス化された際に$character_setを決定します。
私の使用環境に合わせて、デフォルトでサーバOSがWindowsの時はShift_JISを使用し、Debianの時はEUC-JPを使用します。
引数を指定することで、任意の文字エンコードを指定することも出来ます。

17行目デストラクタ
特に使用しません。

20行目get_csメソッド
$character_setの内容を返します。

23~31行目convメソッド
mb_convert_encoding関数を使用することで、引数として指定した文字列$strを$character_setの文字エンコードで返します。
$strの元々の文字エンコードは引数$c_localesで指定可能です。省略時は自動検出となります。
24行目で$character_set(変換先の文字エンコード)がUTF-8かどうかを確認しているのは、UTF-8に正しくマッピングされない文字があるのに対応する為です。一例として26行目で行っているのが、所謂'WAVE DASH問題'(私自身説明できるほど理解していないので、知りたい方はググってください)への対応です。(他に問題なのがあれば随時追加予定)もっとエレガントな解決方法があるのかもしれませんが・・・。

34~36行目prnメソッド
convメソッドで変換した文字を出力します。

39~45行目conv_crメソッド
convメソッドで変換した文字に改行コードを付加します。
Windowsは¥r¥n、LinuxやMacは¥nが良いようです。

48~50行目prn_crメソッド
conv_crメソッドで変換した文字を出力します。

53~59行目conv_brcrメソッド
convメソッドで変換した文字に<br>タグと改行コードを付加します。

62~64行目prn_brcrメソッド
conv_brcrメソッドで変換した文字を出力します。

67~71行目prnrメソッド
print_r関数は配列の値を確認する時に重宝しますが、<br>タグが入っていないためブラウザ上での確認には不向きです。
<PRE>タグを使用することで、ブラウザ上での視認性を確保します。

74~78行目end_htmlメソッド
HTMLの終了。

81~99行目start_htmlメソッド
HTMLの開始。
  1. 2007/06/20(水) 23:20:14|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

Folder search(トップ)

ツール名 : Folder search

##### このツールの簡単な説明 #####

このツールの目的は「"ディレクトリ名"で整理された画像ファイルを"ディレクトリ名"で検索。必要に応じて該当ディレクトリの下にある画像ファイルを表示する。」というもの。
殆どの人は、何のためにこんなもんが必要なんだ?と思うでしょうが、ある特殊なニッチ層には必要とされてそうな気もしなくもない。まぁ、少なくとも私は必要としたので作ったわけです。

画面構成はフレームで分けられた所謂2ペイン。
上フレームで検索条件等を入力。下フレームで検索結果の表示&画像の表示へ移行。
070619fs1.jpg

使用手順としては、
1.'target_folder.txt'で検索対象とするディレクトリを指定。(改行して複数指定することも可能)
2.'FILELIST作成'ボタンを押下し、下フレームに'終了'と出るまで待ちます。(timeoutを起こす場合はphp.iniで調整のこと)
3.'search_folder.txt'が作成されていることを確認。

ココまでで準備が完了。検索対象とするディレクトリの下に新たにディレクトリを追加した場合は「2」をやり直します。('search_folder.txt'ファイルは上書きされます)

4.検索対象文字列欄に検索したいディレクトリ名(正規表現が使用可能)を入力して、'検索開始'ボタンを押下します。
 この時'画像の大きさを調整'をチェックしておくと、予めスクリプト内で指定した大きさに画像サイズを調整します。(縮小のみ)
 'clearstatcache?'をチェックしておくと、ファイル検索前にclearstatcache関数を発行してキャッシュをクリアします。(あまり気にしなくて良い)
 'ちぇっく?'をチェックしておくと、下フレームにPOSTデータを表示して終了します。(デバッグ用)
070619fs2.jpg

試しに、'.'を検索して表示したところ。'.'は正規表現で任意の一文字に該当しますので、全ディレクトリが表示されます。
この時、直下に画像ファイル(拡張子がjpg,jpeg,gif,png,bmpのもの)が無いディレクトリは表示されません。
ファイル数とファイルサイズは上記画像ファイルの合計で、その他のファイルは含まれていません。
070619fs3.jpg

舞-HiMEで検索したところ。(ココでは正しく入力しましたが、検索文字列は半角英字の大文字小文字を区別しないようにしています)

5.画像を確認したいときは表示欄の'>>'をクリックします。

6.画像ファイルのフルパスと、サイズ(ピクセル)、容量(バイト)、そして画像ファイルが表示されます。
 次の画像を表示したい時は'>>'をクリックします。前の画像を表示したい時は'<<'をクリックします。
070619fs4.jpg


##### ファイルの構成 #####
ファイル構成は概ね以下の通り。

DocumentRoot/
 |-foldersearch/
 | |-foldersearch_index.php : 実際はFLAMEを切ってるだけ。アクセスはこのファイルに。
 | |-foldersearch_top.php : 上フレーム用
 | |-foldersearch_search.php : 下フレーム用(検索結果表示)
 | |-foldersearch_makelist.php : search_folder.txt作成用
 | |-foldersearch_showimg.php : 下フレーム用(画像表示)
 | |-foldersearch_default_color.ini : 色設定用ファイル
 | |-target_folder.txt : 検索対象ディレクトリ指定ファイル
 | |-search_folder.txt : foldersearch_makelist.phpにより作成される
 |
 |-php/
   |-buhin/
    |-MyPrn.class.php : 画面表示用クラス
    |-MyFlcon.class.php : ディレクトリ取得用クラス

##### 注意点 #####
このツールは私の環境に最適化されています。
私の環境で特殊な点として、OSのロケールはEUC-JPをデフォルトとしているが、samba&netatalkで共有しているファイル名についてはUTF-8を使用している点が上げられます。(ここら辺の経緯は06/12/28のエントリーを参照のこと)
で、検索対象としたいのはその共有ファイルであるため、主にMyPrn.class.phpを使用して小細工をしています。
その他の環境だと、多分そのままでは動きません。(一応Windows環境(Shift_JIS)では動作するように作ったつもりですが)
まぁ、ちょっとした手直しで動くようになるとは思います。(そうでないと'etch'化した時に苦労することになる)
  1. 2007/06/19(火) 22:53:23|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

PHPのお勉強の鏡(カガミ)

趣味と実用とグダグダになっている当ブログのテコ入れを兼ねて、自作のPHPスクリプトを公開するカテゴリを新設しました。
しかしブログというツールは、今ひとつこういった順序立てて書いていく必要のあることには向かない嫌いが有ります。
で、このエントリーをその鏡(カガミ)としようと思います。(要はインデックスですね)
ですので、このエントリーは随時書き換えていく形になります。
そんなことに頭を悩ませるぐらいなら、ブログやめて普通のWebサイトを作れって気もしますが、気にしない気にしない。

まぁ、実のところ本日(07/6/18)現在ネタが一つしかないので、どこまで続くの?って感あり。(早いな、オイ)


##### 環境 #####
さて、スクリプトを載せるにしても基本的な環境を書かないと始まらないと思いますので、以下にズラズラと。

07/6/18現在の環境(変更が有れば随時書き換えます。とりあえず'etch'にしたい気持ちはありますが、未定)

・サーバ側(の関係しそうな情報)
OS : Debian GNU/Linux 3.1(Sarge)
kernel version : 2.4
Apache version : 2.0
PHP version : 5.1

・クライアント側(の関係しそうな情報)
OS : WindowsXP SP2
Browser : Sleipnir2 , Firefox2等


##### ライブラリのインストール作業等 #####
サーバ側のApache2やPHPをインストールしたときのメモは06/12/29のエントリー

その他に必要がある場合は、順次このエントリーに追記します。

とりあえず、最初に紹介する予定のツールではGDライブラリを使用しています。
#apt-get install php5.1-gd


##### 自作スクリプト紹介インデックス(クラス編) #####
ココは、私が作るツールで共通使用する自作クラスのインデックスです。
私の作るクラスは私が使うことを前提にしているため、本来は必要な引数のエラーチェック等を省いていたり、オーバライドさせてはいけないメソッドにfinal修飾子を使用していなかったりしますので注意してください。

MyPrn.class.php : 画面表示用クラス
MyFlcon.class.php : ファイルコントロール用クラス

##### 自作スクリプト紹介インデックス(ツール編) #####
ココは、私が作るツール本体のインデックスです。
先ずはマニュアル的なエントリーにリンクされている、ハズ。

Folder search : 文字通りフォルダ(ディレクトリ)を検索するツール

##### ディレクトリ構造 #####
サーバ側の基本的なディレクトリ構造は以下の通り。

DocumentRoot/~/~.php 各ツールがフォルダ分けされて置いてあります。
DocumentRoot/php/buhin/~.class.php 自作クラスが置いてあります。
  1. 2007/06/18(月) 22:15:47|
  2. 有閑ダンディのPHPツール|
  3. トラックバック:0|
  4. コメント:0

今月の月例Windowsアップデートについて

6月分の月例パッチが公開されました。
(5/9のアップデートからチェックしていなかったので、今回の更新じゃないのも混ざってますが)

まずWGAのアップデートがありました。
・Windows Genuine Advantage 確認ツール (KB892130)
ダウンロード サイズ: 1.1 MB
Windows Genuine Advantage 確認ツールを使用すると、お使いの Microsoft Windows が正規のものであるかどうかを確認できます。確認処理は、インストールされている Windows のプロダクト ID とプロダクト アクティベーション (ライセンス認証) の状態をチェックすることで行われます。


WindowsXP SP2環境でのパッチ内容を記載します。

※「Windowsアップデート」はスタートメニューのWindows Updateから行えます。


◎SP2(2007/5/9時点での最新から)環境のアップデート(IEは6のままです)

更新プログラムの合計:7項目 , 11.3 MB

・Windows 悪意のあるソフトウェアの削除ツール - 2007 年 6 月 (KB890830)
ダウンロード サイズ: 7.7 MB
このツールをダウンロードして実行すると、Blaster、Sasser、Mydoom など感染力が強く悪意のある特定のソフトウェアにコンピュータが感染していないかどうかが一度検査され、該当するソフトウェアの感染が見つかった場合には削除することができます。感染が見つかった場合は、次回のコンピュータの起動時に、このツールによりステータス レポートが表示されます。新しいバージョンのツールは毎月提供されます。お使いのコンピュータでこのツールを手動で実行する場合は、ダウンロード センターからツールをダウンロードするか、microsoft.com からオンライン版を実行してください。このツールはウイルス対策ソフトウェア製品の代用になる製品ではありません。コンピュータを保護するには、ウイルス対策ソフトウェア製品を使用するようにしてください。

・Windows XP 用の更新プログラム (KB927891)
ダウンロード サイズ: 1.2 MB
この更新プログラムは、信頼性に関するものです。 この更新プログラムを使用すると、ソフトウェアの更新中にパフォーマンスに影響が生じる場合があるという Windows インストーラ (MSI) の問題が修正されます。インストール後には、コンピュータの再起動が必要になる場合があります。

・Windows XP 用 Outlook Express の累積的なセキュリティ更新プログラム (KB929123)
一般的なダウンロード サイズ: 309 KB
Outlook Express を使用している Windows ベースのシステムのセキュリティを悪意のあるユーザーがリモートから侵害して、そのシステムを制御できるというセキュリティの問題が発見されました。この更新プログラムをインストールすると、お使いのコンピュータを保護できます。インストール後には、コンピュータの再起動が必要になる場合があります。

・Security Update for CAPICOM (KB931906)
ダウンロード サイズ: 374 KB
A remote code execution vulnerability exists in Cryptographic API Component Object Model (CAPICOM) that allows an attacker who successfully exploits this vulnerability to take complete control of an affected system. CAPICOM can be used as a component of a 3rd party webpage, script or application. You can protect your computer by installing this update from Microsoft.

・Windows XP 用 Internet Explorer 6 の累積的なセキュリティ更新プログラム (KB933566)
一般的なダウンロード サイズ: 1.4 MB
Internet Explorer を実行しているシステムのセキュリティを悪意のあるユーザーが侵害し、そのシステムを制御できるというセキュリティの問題が発見されました。この更新プログラムをインストールすると、お使いのシステムを保護できます。インストール後には、コンピュータの再起動が必要になる場合があります。

・Windows XP 用セキュリティ更新プログラム (KB935839)
一般的なダウンロード サイズ: 192 KB
問題のある Windows カーネルの API を使用している Windows ベースのシステムのセキュリティを悪意のあるユーザーが侵害して、そのシステムを制御できるというセキュリティの問題が発見されました。この更新プログラムをインストールすると、お使いのコンピュータを保護できます。インストール後には、コンピュータの再起動が必要になる場合があります。

・Windows XP 用セキュリティ更新プログラム (KB935840)
一般的なダウンロード サイズ: 120 KB
セキュリティで保護されたチャネルを使用している Windows ベースのシステムのセキュリティを悪意のあるユーザーが侵害して、そのシステムを制御できるというセキュリティの問題が発見されました。この更新プログラムをインストールすると、お使いのコンピュータを保護できます。インストール後には、コンピュータの再起動が必要になる場合があります。

アップデート後に再起動要求が有りますのでご注意ください。

なんか良くわからないの(KB931906)がありますが・・・深刻度「緊急」ということで、アップデートしておきました。リモートコード実行系の脆弱性みたいですね。
それでは皆様、安全なWindowsライフをお送りください。
  1. 2007/06/13(水) 21:47:07|
  2. PC関連(ニュース)|
  3. トラックバック:0|
  4. コメント:0

不定期連載「今日の買い物(第115回)」(50bg)

不定期連載「今日の買い物」コーナー。

今日の買い物はネット通販で。

・Canon電子辞典 IDF-2100VP ¥10,800
・サンワサプライ FCD-DR4SV(BOX型DVDケース) @2,680 × 4
・FCD-DR4SV用追加不織布ケース(30枚入) @380 × 4
締めて¥23,040也。

電子辞典は「広辞苑」「逆引き広辞苑」「ジーニアス英和辞典」「ジーニアス和英辞典」「カタカナ新語辞典」「大修館書店監修 類語辞典」の6コンテンツを内蔵。とは言っても欲しいのは広辞苑と英和和英だったんだけど。
私も勤め人の端くれである以上、たまには人に読ませるための文章を書かなきゃいけなかったりするんですが、そんな時は普段何気なく使っている言葉の用法が本当に正しいのか、急に自信がなくなったり。口で喋ってる分には多少の間違いはスルーされるものですが、文書として残るとなるとわけが違います。・・・主に私の心情的に。流石に職場にも広辞苑ぐらいはあるんですが、私の席からは結構遠いもので(と言っても10mくらいですけど)机の上に欲しかったんですよね。
英和は、私のように外国語が苦手だけどコンピュータを扱っている人にはやっぱり必要かなぁ。エラーとかログとか英語だからね、なんだかんだ言って。和英は、プログラム組む際に変数名とか関数名に困るんだよね。ローマ字にはしたくないからやっぱり和英があると便利。そんな、すぐ出てこないような単語使って、わかりやすいプログラムが組めているのかはともかく。ところでジーニアスって言うと、学生時代の先生のお薦めだったような?
あ~、因みに私の職場、机の上にあるPCは外部には繋がってません。メールだけは通るけど。だからこんなものが必要なのね。
ところで、今時の学生は紙の辞典なんか使ってなくて電子辞典が当然のようです。私もこれを買う前に実際の店舗で眺めてきたんですが、ボリュームゾーンは3万前後らしくそこら付近のモノばかりが置いてありました。
何が入ってるんだよ?ってな50何コンテンツ内蔵とか、英語のヒアリング用にヘッドフォンが付いてたりとか。親も大変だね。

BOX型DVDケースは今回買ったのを含めて遂に10ケース目。
今までは全て上にスタックしてましたが、流石に今回から二列にしました。で、こんな感じで積んでます。
FCD-DR4SV_7.jpg

追加不織布ケースは、引き出し一つに対して5枚くらい入りそうだったので、5*2*10=100枚は追加できるって事で30枚入りを4つ購入。
これで、180枚/ケースだから1,800枚収納可能。空き分を考えると、多分2年くらいは大丈夫のハズ。
それはそうと、DVD満載されたケースはかなり重くて、スタックしたままでは動かせませんでした。当たり前だけど、あんなものでも集まればやっぱり重くなるのね。

#イカンイカン。ブログじゃなくてお買い物報告ページと化している。ということで、PHPで組んだスクリプトを紹介する「有閑ダンディ・プログラミングコーナー」を新設予定。と言っても、まだネタが一個しかないんだけどさ。

●キヤノン:wordtank IDF-2100VP/2100
http://cweb.canon.jp/wordtank/idf-2100/index.html

●サンワサプライ:FCD-DR4SV
http://www.sanwa.co.jp/product/syohin.asp?code=FCD-DR4SV

●サンワサプライ:FCD-FHN30
http://www.sanwa.co.jp/product/syohin.asp?code=FCD-FHN30
  1. 2007/06/09(土) 20:50:03|
  2. 今日の買い物|
  3. トラックバック:0|
  4. コメント:0

如月

05 | 2007/06 | 07
Sun Mon Tue Wed Thu Fri Sat
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Recent Entries

Recent Comments

Recent Trackbacks

Archives

Category

なか~ま(´ー`)人(´¬`)

Search

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。