2012年1月13日金曜日

再帰的ディレクトリ配下のファイル一覧をリストアップ

再帰的ディレクトリ配下のファイル一覧をリストアップ、サブフォルダも含むが、出力はフラットのファイル一覧のハッシュ配列
キーはファイルの最後更新時間、値はファイル名。
注意、更新時間全く一緒のファイルが存在したら、
ファイル名は常に上書きされて、最後のファイルのみ残す形になる!

$dir = "/test";  
$fs = lastestFiles($dir, true);
print_r($fs);

function lastestFiles($dir,$init = false)
{
    $root = scandir($dir);
    static $result = array(); //staticで宣言すること
    if($init){
      $result = array(); //外部から呼ばれた時はstatic変数を初期化する
    }
    foreach($root as $value)
    {
        if($value === '.' || $value === '..') //これはスキップ
        {
          continue;
        }
        if(is_file("$dir/$value")) //ファイルならstaticハッシュに入れる
        {
          $result[filemtime("$dir/$value")]=$value;
          continue;
        }
        lastestFiles("$dir/$value"); //サブフォルダなら再帰する
    }   
    return $result;   
}

再帰的ディレクトリ配下すべてのファイル一覧、サブフォルダーの中身も含む、構造のまま取得

$dir = "/mp3";
$fs = listFiles($dir);
p($fs);


function listFiles($dir) 
{ 
    $root = scandir($dir); 
    foreach($root as $value) 
    { 
        if($value === '.' || $value === '..') {continue;} 
        if(is_file("$dir/$value")) {$result[]="$dir/$value";continue;} 
        if(is_dir("$dir/$value")) {$result[] = listFiles("$dir/$value");continue;} 
    } 
    return $result; 
} 

function p($v){
  print "
";
  print_r($v);
  print "
"; }

2012年1月12日木曜日

Excel97ではUnprotectがエラーでる

Office2007で開発したVBAをOffice97にも動くようにして欲しい....といわれて、仕方なくexcel97を借りてテストする(今時97を手に入れられるだけでもすごいよね)
見事エラーがでした!
"Run-time error '1004': Method 'Unprotect' of object '_worksheet' failed"
単純にworksheet.Unprotectのところからエラーが発生してびっくりしました。オブジェクトブラウザーで調査したらちゃんとworksheetオブジェクトはUnprotectメッソドあります、何か悪かったか全く検討もつかない。

早速G先生に聞くことにした、英語圏で同じ悩みを抱えている人を見つけた。
http://www.xtremevbtalk.com/showthread.php?t=98712

解決策は(汚いけど)これ:
  myWorkSheet.Range("A1").Activate  '←これを追加、任意のセルを選択してからunprotectを実行
  myWorkSheet.Unprotect  '本来ならここでエラーがでる
以上


2012年1月10日火曜日

Google Docsを同期できるソフトの紹介

便利なツールの紹介です。

ツール名:
syncdocs

効果:
・Google Appsのドキュメントをローカルで同期することによって、本来ブラウザーでしかアクセスできないDocsをローカルディレクトリのよ
うに簡単にアクセスできる。
・Google Docsとローカルミラーディレクトリ双方に加えた変更(追加・編集・削除)はすべて同期されるので、とても便利
・削除は気をつけてください。誤削除されでもDocsのゴミ箱から復旧できる。
・無料版は上限10,000ファイルの制限があるそうです。⇒十分足りると思います。

インストルとセットアップは簡単、アカウントとパスワードを入れるだけ。
デフォルトのローカルミラーディレクトリは「\My Documents\My Google Docs」です。

Google製のアプリではなく3rd party製ですが、PCWolderなどに紹介されたので個人的におすすめしたいです。

ここからダウンロード:
http://www.syncdocs.com/download-syncdocs/
残念ですが、まだ日本語化されたない

追伸:
ここで日本語版ダウンロードできるだそうです、検証はしていない。
http://sourceforge.jp/projects/sfnet_syncdocs/

2012年1月3日火曜日

PHPのif分岐のもう一種書き方、よくHTMLで利用する

PHPのif分岐のもう一種書き方。"{"じゃなく":"
<?php if($hi=="hello"): ?>
Hello
<?php elseif($hi=="good morning"): ?>
I say: <?php echo $hi; ?>
<?php else: ?>
Good Night
<?php endif; ?>