DirectoryIteratorの活用

PHP

主な仕様 PHP: DirectoryIterator - Manual 再帰的にディレクトリを削除する is…

ファイルアップロードとバリデーション

拡張子によるバリデーション Model array( 'extension' => array( 'rule' => array( 'extension', array('jpg', 'jpg', 'pdf'), ), 'message' =>'ファイルのタイプが違います' ), ), ); View typeにはfileを指定 Form->create( 'モデル名', array( 'type' =…

PHPあれこれ

PHP

ファイルダウンロード機能

【CakePHP2.x】Hashあれこれ

コードがシンプルになる 'マッチャ'を使うと細かい条件指定が可能 array(5) { ["id"]=> string(1) "1" ["label"]=> string(5) "hchuno" ["status"]=> string(6) "有効" } [1]=> array(5) { ["id"]=> string(1) "3" ["label"]=> string(7) "mychuno" ["statu…

Ajaxを使ってPOST送信

jQuery $.ajaxでデータを送る 構文 $.ajax({ type: 'POST', url: CakePHPのAction名, data: { '渡したいデータ名': データの値 }, success: function(response) { } error: function(xhr, status, error) { } /* xhr.status:エラーコードを確認できる statu…

業務で作成されるドキュメントの種類や特徴について

経緯 最近、業務で各種ドキュメント作成をしていて思うところがあったので、頭の中を整理する意味で書き出してみることにした。 ドキュメントの種類 環境構築やツールの仕様方法に関するもの 頻繁に参照されたり更新される ドキュメント通りに操作しないと動…

テストコードあれこれ

Composerを使ってPHPUnitをインストールする composer.jsonの中身 "require-dev": { "phpunit/phpunit": "3.7.*" } composerのインストールコマンドを叩いてPHPUnitをインストール $ ./composer.phar install --dev PHPUnitがインストールされたかどうかを確…

MySQLのhaving句

重複するレコードから特定の1件のみを取得するSQL 例 テーブルAとテーブルBをJOIN Bの’id’カラムが最大値になるものと、AをJOIN 外部キーはuser_id SQL SELECT a.id, b.id FROM table_a AS a INNER JOIN table_b AS b ON a.id = b.user_id GROUP BY a.id HAV…

同一idのレコードのうち、特定のカラムが最大のレコードだけを各々抽出する

SQL

やりたいこと 以下の様なテーブルとレコードがあったとして。 id prefecture_id age 1 47 23 1 19 42 2 47 39 2 19 58 3 19 11 idが同じもののうち、ageが最大のものだけを抽出 更にprefecture_idごとの数を数える 方法 いきなり「group by id」としてしまう…

プリペアドステートメントでWHERE INを使おうとしたが…

ToDo プリペアドステートメントのIN句のところに、カッコで囲まれたプレースホルダを書く プレースホルダにはカンマ区切りの文字列を渡す 例 $mychuno_ids); $result = $this->query($sql, $p…

Shellの実行あれこれ

コマンドラインで実行 $ /var/www/hogehoge/app/Console/cake シェルクラス名 cronに設定($ crontab -e)して実行 */10 1-21 * * * /var/www/hogehoge/app/Console/cake シェルクラス名 Chefにcronの設定を書いて実行 cron 'hogehoge_cron' do action :create…

INNER JOINする時の注意点

$contains, 'conditions' => $conditions, 'joins' => array( array( 'type' => 'INNER', 'table' => 'mychuno_users', 'alias' => 'MyChunoUsers', 'conditions' => '◯◯◯…

Chefのレシピあれこれ

cronの設定 cron 'setting_for_mychuno' do user 'vagrant' command '/var/www/mychuno/cakephp/app/script/post.sh' minute '*/10' hour '1-22' end サーバ側で、 $ crontab -l 等で設定を確認すると、 # Chef Name: setting_for_mychuno */10 1-22 * * * /…

Javascriptあれこれ

変数が"undefined"かどうかを確認する 「typeof」を活用する。 var id = $(this).attr('id'); if (typeof id !== "undefined") { parameterIndex = id.lastIndexOf('hoge'); } バリデーションチェック 入力必須 数字もしくはカンマ メールアドレス形式 ◯◯日…

【Vagrant】ディレクトリやファイルのパーミッションでハマッた件

とあるファイルのパーミッションを設定するレシピを、 file "/var/www/mychuno/mychuno.sh" do mode "755" action :create only_if { ::File.exists?("/var/www/mychuno/mychuno.sh") } end のように書いて、 $ vagrant provision をすると、ログには、 mode…

bootstrap-datetimepicker.jsあれこれ

「◯分おき」を実現する方法 デフォルトでは1分おきに時間指定可能になっていたので、本体のソースを確認すると、 DateTimePicker = function (element, options) { var defaults = { 〜〜〜 minuteStepping: 1, という記述があり、これだ!と確信。 datetime…

メソッド名を可変にする

PHP

渡された変数によってメソッド名を書き換えて実行したい場合、例えば、 findItems() findHogeItems() findGehoItems() …という三種類のメソッドを使い分けたいときは、以下の様な方法でメソッド名を可変にして実行することができる。 function executeByStat…

【CakePHP2.x】CakePlugin::load()でエラー

エラーの内容 新しいプラグイン(仮にBとする)を導入するため、Config/bootstrap.phpの CakePlugin::load(‘A’); となっていたところに、 CakePlugin::load(‘A’, ‘B’); としたところ、 ”Unsupported operand types” というエラーが発生した。 原因 上記のload…

GithubとComposer管理

Githubに追加したプロジェクトをComposerで管理する。 GithubとPackagistとの連携 Githubのリポジトリ毎の設定画面 Composerのダウンロード curl -s http://getcomposer.org/installer | php composer.jsonの作成 Packagistでアカウント作成 https://packagi…

Lisp事始め

参考図書 Land of Lisp Homebrewのインストール こちらを参照→ http://brew.sh/ CLISPのインストール $ brew install clisp

【iTerm2】よく使うデフォルトショートカット

タブ 新規作成 command+t 閉じる command+w 移動 command+左右の矢印 スクリーン フルスクリーン command+enter ウィンドウ ペイン分割 縦 command+d 横 command+shift+d ペイン移動 次へ command+] 前へ command+[ 補完 オートコンプリート comman…

日付関数で遊ぶ

PHP

date()を使ったあれこれ

イニシエーション・ラブ

読了。Side-Aを読み終わった時は肩透かしを食らった感じ。 Side-Bを読み始めてしばらくすると違和感を覚え、ラストであれ?と思い、そういうオチだったのか…!と気づく。たしかにミステリーだった。

Vimの正規表現アレコレ

任意の文字列を繰り返す (例) ○○.●●● という文字列に対して、 「.●●●」 だけ消す場合 :%s/\..*//gc ※*は「直前の文字を0回以上繰り返す」の意味 正規表現rをn回繰り返す 構文 r\{n\} (例)三桁の数字を表現 [0-9]\{3\} 具体的には… 「Vimで三桁の数字を消す」…

【CakePHP2.x】パンくずリスト

CakePHP1系でもgetCrumbList()が使えるように、必要なものをCakePHP2から移植。 '<a href="%s"%s>%s</a>', 'tag' => '<%s%s>%s</%s>', 'ul' => '<ul%s>%s</ul>', 'ol' => '<ol%s>%s</ol>', 'li' => '<li%s>%s</li>', ); protected $_crumbs = array(); public…

【CakePHP2.x】routes.phpの設定あれこれ

似たようなルーティングを適用させる Config/routes.php の設定は上から順に適用される。 Router::connect('/hoge/*’, 〜 Router::connect('/hoge/:type’, 〜 Router::connect('/hoge/view/:id’, 〜 としてしまうと、後半2つは無視されるので、 Router::conn…

【CakePHP2.x】複数のチェックボックスをチェックした時にPOST送信させる

View側 <div id="div_no_id"> <form action="" method="post" id="form_no_id"> <dt>チェックボックス</dt> Form->create('menu', array('type'=> 'get')); echo $this->Form->input( 'industry', array( 'type' => 'select', 'multiple' => 'checkbox', 'legend' => false, 'div' => false, 'label' => false, 'n…</form></div>

jQueryあれこれ。

チェックボックスが選択されたら、今のURLからGETパラメータを削除したURLにsubmitする jQuery(function($){ $(function(){ $('#divタグのID input[type="checkbox"]').change(function(e){ e.preventDefault(); // 現在のURLを取得 var url = location.href…

以前にコミットしたファイルを復活させる呪文

git

$ git checkout 該当コミットのハッシュ値 その時のファイル名

【CakePHP2.x】Modelのアソシエーションを解除したいとき

belongsToやhasMany等に記述した他のModelとの結びつきを解除したいときは以下の手順を踏む。 actsAs に Containable を記述 'contain' => false を記述する 例えば… public $actsAs = array('Containable'); … $findParams = array(‘contain’ => false); re…