Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; FujitsuToshibaMobileCommun; IS12T; KDDI)auのIS12Tという端末です。
2011年12月16日金曜日
[Windows Phone]USER_AGENT
Windows Phoneのユーザーエージェントです。
2011年12月2日金曜日
[SQL]Update文でCaseを使う
例えば、あるステータスが1の場合に限ってシステム日付を更新するのだけれど、
それ以外の場合は更新したくない場合のUpdate文です。
この時、合わせてステータスは2に更新します。
(わかりにくいせつめいですいません)
MySQLでの確認です。
これはset句に書く順番も関係していますので注意が必要です。
先にStatus = 2を書いてしまうとcaseは思った判定をしてくれません。
それ以外の場合は更新したくない場合のUpdate文です。
この時、合わせてステータスは2に更新します。
(わかりにくいせつめいですいません)
update Table set UpdateDatetime = case when Status = 1 then now() else UpdateDatetime end ,Status = 2 where Primarykey = 100
MySQLでの確認です。
これはset句に書く順番も関係していますので注意が必要です。
先にStatus = 2を書いてしまうとcaseは思った判定をしてくれません。
2011年12月1日木曜日
[PHP]foreachの参照渡しで見落としがちな事
foreach文で参照渡しをした場合、最後の要素が1つ前の要素と同じ値になっちゃう件です。
マニュアルにはちゃんと書いてあるんですけどね。
以下の処理を忘れない事。
$items = array('a','b','c'); foreach($items as &$item){ echo($item); } // --> 'abb'
マニュアルにはちゃんと書いてあるんですけどね。
以下の処理を忘れない事。
unset($item);
2011年11月30日水曜日
[PHP]ディレクトリの再帰削除処理
要件は以下の感じです。
サブフォルダを含めてファイル、ディレクトリを削除する。
ただし、ルートディレクトリは消したくないケースがある。
また、ファイルの最終更新日時が1日以上経ったものだけ削除する。
サブフォルダを含めてファイル、ディレクトリを削除する。
ただし、ルートディレクトリは消したくないケースがある。
また、ファイルの最終更新日時が1日以上経ったものだけ削除する。
function rmdirEx($rootPath , $dirDelete){ if( !is_dir($rootPath)) return; $files = scandir($rootPath); foreach($files as $file){ if ($file == '.' || $file == '..') continue; $fullpath = $rootPath . DIRECTORY_SEPARATOR . $file; if(is_dir($fullpath)){ rmdirEx($fullpath , true ); }else{ $lastUpdateTime = filemtime($fullpath); //更新日時が1日以上前のファイルのみ削除する if( ($lastUpdateTime + (60 * 60 * 24)) < time()) @unlink($fullpath); } } //消せれば消す if( $dirDelete) @rmdir($rootPath); }
2011年11月29日火曜日
ajaxuploadを使った。
ブラウザで画像を選択したら、非同期でアップロードして画像を表示したくて使いました。
配布サイトここ(Ajax Upload)
最新版は完全に作り直されたらしくて、「File Upload」って名前に変わってます。
これも色々と試したみたのですが、UI周りのカスタマイズがいまいち分からなかった。
オプション設定で、template、fileTemplate、classesの当たりを設定すれば良さそう何だけど、
ドキュメントも少ないし、心が折れてあきらめました。
その点、旧バージョンのajaxuploadはiframeとか使って怪しいけど、素直で使いやすいです。
PHP側はこんな感じです。
配布サイトここ(Ajax Upload)
最新版は完全に作り直されたらしくて、「File Upload」って名前に変わってます。
これも色々と試したみたのですが、UI周りのカスタマイズがいまいち分からなかった。
オプション設定で、template、fileTemplate、classesの当たりを設定すれば良さそう何だけど、
ドキュメントも少ないし、心が折れてあきらめました。
その点、旧バージョンのajaxuploadはiframeとか使って怪しいけど、素直で使いやすいです。
$(function(){ new AjaxUpload('file1', { //input type="file"のid action: 'upload.php', //POSTを処理するphp name: 'PostName', //phpで$_FILES['PostName']と使う。 data: {paramA: 'valueA' ,paramB:'valueB'}, //オプションのデータ。$_POSTで渡される onComplete: function(file, response) { //アップロード完了時のコールバック var ret = eval( '(' + response + ')' ); //JSONの展開 if( ret.success ){ $('#imageArea').attr('src', ret.path); //イメージの設定 } } }); );
PHP側はこんな感じです。
//オプションパラメータの受取 $param = $_POST['paramA']; $ret = null; $uploaddir = 'D:\\upload\\'; $filename = basename($_FILES['PostName']['name']) $uploadfile = $uploaddir . $filename; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { $ret = array('success'=>true,'path'=>'/images/' . $filename); } else { $ret = array('success'=>false); } echo htmlspecialchars(json_encode($ret), ENT_NOQUOTES);
2011年11月28日月曜日
2011年11月24日木曜日
[LAMP]ファイルがPOSTされない
画面で数個の画像ファイルをPOSTしたんですけど、サーバー側で受信されていない模様。
トレースログを見たら途中までは処理されて、途中から何も無かったような振る舞いを確認。
つまり、プログラムまでデータが渡っていない。と。
ちょっと調べたらapacheでのpostデータサイズ制限は「LimitRequestBody」で設定らしいです。
httpd.confには当該の記述が無かったので却下。
(デフォルトで無制限?危ないなぁ。。)
次はphp.ini。
それっぽいのいました。
「post_max_size」と「upload_max_filesize」。
upload_max_filesizeは1つ当たりのファイルサイズ上限設定で、post_max_sizeはpostの合計サイズ。
今回は、
upload_max_filesize = 10M
post_max_size = 60M
として、apache再起動で解決でした。
コア php.ini ディレクティブに関する説明
トレースログを見たら途中までは処理されて、途中から何も無かったような振る舞いを確認。
つまり、プログラムまでデータが渡っていない。と。
ちょっと調べたらapacheでのpostデータサイズ制限は「LimitRequestBody」で設定らしいです。
httpd.confには当該の記述が無かったので却下。
(デフォルトで無制限?危ないなぁ。。)
次はphp.ini。
それっぽいのいました。
「post_max_size」と「upload_max_filesize」。
upload_max_filesizeは1つ当たりのファイルサイズ上限設定で、post_max_sizeはpostの合計サイズ。
今回は、
upload_max_filesize = 10M
post_max_size = 60M
として、apache再起動で解決でした。
コア php.ini ディレクティブに関する説明
2011年11月16日水曜日
[ASP]配列の代入は値渡し?参照渡し?
ちょっと久しぶりにASP(classic)を触ったら不安になったので確認しました。
文字列が格納された配列を代入した場合、値渡しでした。
文字列が格納された配列を代入した場合、値渡しでした。
dim a,b,c a = array("あいう","かきく","さしす") '代入 b = a 'bの要素を書き換える b(1) = "けこ" for each c in a response.Write(c & "
") next Response.Write( "
") for each c in b response.Write(c & "
") next
2011年10月27日木曜日
Uploadifyを使った。
複数画像を選択してアップロードする要件があったためUploadifyを使った。
オプション設定も豊富で使いやすいです。
ポップアップウィンドウで使ったのですが、IEではuploader、script、cancelImg、folderのパスを絶対パスで書かないと正常にPOSTされないんですね。
FireFox、Chromeでは相対パスでいけるのに。。。
気が向いたらSafariでも試してみます。
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '/dev/agent/upload/uploadify.swf',
'script' : '/dev/agent/upload/uploadify.php',
'cancelImg' : '/dev/agent/upload/cancel.png',
'folder' : '/dev/images/o_o/',
'auto' : true,
'multi' : true,
'fileExt' : '*.jpg;',
'fileDesc' : 'Image Files (.JPG)',
'queueSizeLimit' : 999 ,
'fileDataName' : 'Filedata' ,
'simUploadLimit' : 1,
'sizeLimit' : 5000000
});
});
登録:
投稿 (Atom)