PhpStormで半角スペース、タブの表示/非表示設定
PhpStormで半角スペースやタブの表示、非表示を切り替える設定項目。
- IDE Settings > Editor > Appearance
『Show whitespaces』にチェックすると表示、チェックを外すと非表示になる。
redmine+svnで『リポジトリに、エントリ/リビジョンが存在しません。』が出る場合の対応
redmine+svn(オレオレ証明書)な環境で、下記のようなエラーが出る場合の対応メモ。
Server certificate verification failed: certificate has expired, certificate issued for a different hostname, issuer is not trusted (...
検索すると何件か引っかかる下記の対応が、自分の環境だと何故か上手くいかない。
RedmineでSSL自己証明書Subversionリポジトリにアクセスする方法 - TrinityT’s LABO
redmineでSubversionリポジトリにhttpsでアクセスする|成長の果実
リポジトリに、エントリ/リビジョンが存在しません(オレオレ証明書でSSL) - snit21の日記
なので、一度許可した証明書をコピーする方法で対応。
$ svn list https://example.com/hoge/ 『常に承認する」を選択
ホームディレクトリ配下に『.subversion』が作成される為、/var/www配下へコピー
$ sudo cp -a ~/.subversion /var/www/ $ sudo chown -R apache:apache /var/www/.subversion
これでOK。
FuelPHPのForm::radioとラベルの関連付け
※FuelPHPの想定バージョンは1.7
Form::radioにラベルを関連づける為のメモ。
Form::radioでradioボタンを作成し、そこにラベルを関連づけしようとすると、Form::labelはidにformのprefixが付くのに対し、Form::radioはprefixが付かないので若干ややこしい。
対応案1
Form::radioでprefix付きのidを指定する。
(label側のidにprefixが付くのを見越し、radio側のidを付けてしまう)
<?= Form::radio('status', 1, Input::post('status') != '0', array('id' => 'form_status_1')) ?> <?= Form::label('有効', 'status_1') ?> <?= Form::radio('status', 0, Input::post('status') == '0', array('id' => 'form_status_0')) ?> <?= Form::label('無効', 'status_0') ?>
生成されるHTML
<input id="form_status_1" name="status" value="1" checked="checked" type="radio" /> <label for="form_status_1">有効</label> <input id="form_status_0" name="status" value="0" type="radio" /> <label for="form_status_0">無効</label>
対応案2
prefixを自動的に付けないようにする。
(idへのprefixの自動付与をやめ、radioとlabelで同じidを指定する)
app/config/form.php <?php return array( 'auto_id_prefix' => '' );
<?= Form::radio('status', 1, Input::post('status') != '0', array('id' => 'status_1')) ?> <?= Form::label('有効', 'status_1') ?> <?= Form::radio('status', 0, Input::post('status') == '0', array('id' => 'status_0')) ?> <?= Form::label('無効', 'status_0') ?>
生成されるHTML
<input id="status_1" name="status" value="1" checked="checked" type="radio" /> <label for="status_1">有効</label> <input id="status_0" name="status" value="0" type="radio" /> <label for="status_0">無効</label>
FuelPHP ヘッダー/フッター等のパーツの呼び出し
ヘッダーやフッター等のパーツを個別にテンプレートファイルとして持っている場合、楽をして、コントローラ側でセットせずに、『render』(View::render()のエイリアス)をView側で直接呼び出す事が多い。
これってあり?なし?
http://fuelphp.com/docs/classes/view.html#/function_render
renderを使用する場合
View)
<?= render('header') ?> ... <?= render('footer') ?>
コントローラでセットする場合
Controller)
<?php class Controller_Hoge extends Controller { public function action_index() { $view = View::forge('hoge'); $view->header = View::forge('header'); $view->footer = View::forge('footer'); return $view; } }
View)
<?= $header ?> ... <?= $footer ?>
PHPだとこんな感じ?某一覧抽出
id:yutakikuchi氏のPythonのサンプルコードをPHPで実装するとこんな感じ?
アダルトフィルタ実装に向けたA○女優リストの自動抽出 + α - Yuta.Kikuchiの日記
<?php $base_url = 'http://ja.wikipedia.org'; $url_list = [ '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%82%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%8B%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%95%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%9F%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%AA%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%AF%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%81%BE%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%82%84%E8%A1%8C', '/wiki/AV%E5%A5%B3%E5%84%AA%E4%B8%80%E8%A6%A7_%E3%82%89%E3%83%BB%E3%82%8F%E8%A1%8C' ]; foreach ($url_list as $url) { preg_match_all('|<li><a href="(?P<url>.*?)".*?>(?P<name>.*?)</a>.*?((?P<initial>.).*?</li>|u', file_get_contents($base_url.$url), $match, PREG_SET_ORDER); foreach ($match as $m) { if (preg_match('|\A/w/|', $m['url'])) continue; $html = preg_replace('/\r|\n/', '', file_get_contents($base_url.$m['url'])); preg_match('|スリーサイズ</a>:</th><td nowrap="nowrap">(?P<bust>\d+) - (?P<waist>\d+) - (?P<hip>\d+) cm|', $html, $size); preg_match('|ブラのサイズ</a>:</th><td>(?P<cup>[a-zA-Z])|', $html, $bra); echo sprintf("Name:%s\tBust:%s\tWaist:%s\tHip:%s\tBra:%s", $m['name'], $size['bust'] ?: '-', $size['waist'] ?: '-', $size['hip'] ?: '-', $bra['cup'] ? strtoupper($bra['cup']) : '-' ).PHP_EOL; sleep(5); } }
ファイル出力、面倒くさいから書いてないや。
あと、久々にブログ書いた...
『Percona Toolkit for MySQL』をRPMでインストール
『Percona Toolkit』をRPMでインストールする為のメモ。
1. 必要なパッケージのインストール
『Percona Tookit』インストールに必要なパッケージのインストール
$ sudo yum install perl-Time-HiRes perl-IO-Socket-SSL
2. rpmのダウンロード
http://www.percona.com/ へアクセスしrpmをダウンロード
『Software』 > 『Percona Toolkit for MySQL』 > 『Download Latest』 > 『RPM』
$ wget 'http://www.percona.com/redir/downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.3-1.noarch.rpm'
3. インストール
$ sudo rpm -ivh percona-toolkit-2.2.3-1.noarch.rpm
FuelPHP+MySQLでSHOWコマンドの結果を取得
※2013/06/05追記
クエリタイプにDB::SELECTと指定するだけで大丈夫なようです。
参考) http://d.hatena.ne.jp/Kenji_s/20130605/fuel_db_query
id:Kenji_s さん情報ありがとうございます。
- 想定バージョン : FuelPHP 1.6
FuelPHPで『SHOW PROCESSLIST』や『SHOW WARNINGS』等のSHOWコマンドの結果を取りたかったんだけど、下のやり方だと対象の件数しか取れない。。。
<?php $result = \DB::query('SHOW PROCESSLIST');
pdoを使ってたので、コアの『database/pdo/connection.php』を確認したところ、以下の記述。
<?php ... if ($type === \DB::SELECT) { // Convert the result into an array, as PDOStatement::rowCount is not reliable if ($as_object === false) { $result = $result->fetchAll(\PDO::FETCH_ASSOC); } elseif (is_string($as_object)) { $result = $result->fetchAll(\PDO::FETCH_CLASS, $as_object); } else { $result = $result->fetchAll(\PDO::FETCH_CLASS, 'stdClass'); } // Return an iterator of results return new \Database_Result_Cached($result, $sql, $as_object); } elseif ($type === \DB::INSERT) { // Return a list of insert id and rows created return array( $this->_connection->lastInsertId(), $result->rowCount(), ); } else { // Return the number of rows affected return $result->errorCode() === '00000' ? $result->rowCount() : -1; }
SHOW使った時点で件数しか取れないのね。
しょうがないので、以下のようにして取得。
<?php $db = \Database_Connection::instance(); $result = $db->connection()->query('SHOW WARNINGS'); foreach ($result as $val) { echo $val['Message']; }