サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
夏の料理
sutara-lumpur.hatenadiary.org
最終更新: 2014-12-15 説明を簡潔にするため、JavaScriptのみを例に挙げます。 なお、現在はTwitter本家から正式なライブラリが公開されているので、そちらを参考にするのがいいと思います。 https://github.com/twitter/twitter-text 以下は、私が勝手に作り上げた非公式な抽出方法です。 日本語ハッシュタグを抽出する正規表現見やすくするために改行とタブを入れています。 おおまかに説明すると、タグとして使える文字というものがあり、それがハッシュの直前に存在していないかを調べています。 また、ハッシュタグの直後に別のハッシュタグが接していないかどうかを否定先読みで調べています。 / (?:^|[^0-9A-Za-z_〃々ぁ-ゖ゛-ゞァ-ヺーヽヾ一-龥0-9A-Za-zヲ-゚]+) [##] ( [0-9A-Za-z_〃々ぁ-ゖ゛-ゞァ-ヺーヽ
jQueryの.clone()メソッドで、入力フォーム一式をまるごとコピーするようにしています。 その後、idの通し番号のみを書き換えています。 デモhttps://codepen.io/sutara79/pen/mjLyWr 応用 追加したフォームを削除したい場合は、下記の記事をご覧ください。 http://d.hatena.ne.jp/sutara_lumpur/20111113/1321169720 より汎用的なjQueryプラグインを作りました。 jquery.addInputArea.js
『CakePHP Users in Japan』のフォーラム内の同名のスレッドには CakePHPのModelの設定の仕方が載ってますが、素のSQLでは どう書くんでしょうか? ★目指す結合テーブルの形 チーム№リーダーサブ 1安藤鹿島 2斉木竜口 team(外部キーを持ち、基礎となるテーブル) idleader_id (外部キー)sub_id (外部キー) 112 234 member(外部キーが参照するテーブル) idname 1安藤 2鹿島 3斉木 4竜口 ■外部結合する場合のSQL ※teamが優先される(team内の空白・無効セルがある行も表示される) SELECT team.id AS "チーム№", Leader.name AS "リーダー", Sub.name AS "サブ" FROM team LEFT JOIN member AS Leader ON team.lead
【CakePHP1.3.2】 $this->Model->save()以外のタイミングでバリデーションしたい場合validates()で検証し、エラーがあれば、メッセージを invalidFields()で取り出す。 【コントローラ】 if(!empty($this->data)){ //モデルのインスタンスにデータをセットする $this->Model->set($this->data); if($this->Model->validates()){ //------------------------- //バリデーション成功 //------------------------- //すでにバリデーションは済んでいるので、 //save()の第2引数はfalseとする。 $this->Model->save($this->data, false); } else { //------
【CakePHP1.3.2】 ログインパスワードを変更する場合の入力項目は、 現在のパスワード 新しく設定したいパスワード 確認のためパスワードを再入力 …というのが一般的だと思います。 これをCakePHPで行なおうとする場合、Authコンポーネントで ハッシュ化されたパスワードの扱いが問題になると思います。 【例1:失敗】 //現在のパスワードを確認 $user = $this->User->read(); if( $user['User']['password'] != $this->Auth->password($this->data['User']['password_confirm']) ){ //パスワード不一致 $this->Session->setFlash('現在のパスワードが間違っています。'); return; } 【例2:成功】 //現在のパスワードを確認 $lo
最終更新: 2012-07-24 例:ビューテンプレート内 # http://localhost/Cake_appli/model/action/ の場合 $path= $this->webroot; # '/Cake_appli/' が格納される ほかに、(おそらく)AppHelperを継承する全てのヘルパーで webroot()メソッドが使えるようなので、 (CakePHP2.x系) $path = $this->Html->webroot; $path = $this->Form->webroot; (CakePHP1.x系) $path = $html->webroot(); $path = $form->webroot(); $path = $paginator->webroot(); $path = $javascript->webroot(); # いずれも'/Cake_ap
結論 (2018年8月2日現在)検索対象にマルチバイト文字が含まれていても、抽出したい文字に含まれていなければ不要。 しかし安全のため、どんな時でもパターン修飾子"u"を付けるべき。 実験 デモ: http://sandbox.onlinephpfunctions.com/code/dab6f408a93e5113f5db0def7e58014f3a1c1ff2 <?php $subject = '漢字abcdひらがな한글Кириллица'; $patterns = array( '/\w+/', '/\w+/u', '/[a-z]+/', '/[a-z]+/u', '/[あ-ん]+/', '/[あ-ん]+/u' ); $v = phpversion(); echo "PHP: {$v}<br>"; echo "検索対象: {$subject}<br><br>"; foreach ($p
【CakePHP 1.3系】 最終更新:2011年12月07日 結論以下のようなURLを生成すればよい。 【通常】 1ページ目 http://example.com/posts/search?keyword=hoge 2ページ目以降 http://example.com/posts/search/page:2/keyword:hoge 【検索文字列にスラッシュが含まれる場合】 1ページ目 http://example.com/posts/search?keyword=hoge/fuga/piyo 2ページ目以降(スラッシュを独自にエスケープしている) http://example.com/posts/search/page:2/keyword:hoge~!fuga~!piyo 解説はじめは悩む必要はありません。 【ビュー】 echo $form->create('Post', array(
最終更新:2012/02/05 文字列の中からURLを抽出すうえで、なるべく簡単な正規表現に したいとき、僕は下記のように書くことにしました。 /(?:^|[\s ]+)((?:https?|ftp):\/\/[^\s ]+)/空白文字と全角スペース以外の文字すべてを受け入れています。 ちょっとやり過ぎな気もしますが、『http://家庭教師.jp/』などの 日本語でのURLというものもあるようなので、こうなりました。 半角英数記号のみを受け入れるなら下記ですが。 【外部ページ】正規表現:正しいURLかどうか調べる - phpspot http://bit.ly/wKrBmC
最終更新: 2012-11-11 ※ 分岐の必要はありません。 全てのブラウザで"keydown"が適しています。 残り使用文字数を表示するなど、キー入力のたびに何らかの処理を おこないたい場合、キー入力を検知するイベントハンドラとして "keypress"と"keydown"どちらがいいのでしょうか。 結論は、Operaは『keypress』、それ以外は『keydown』、でした。 Operaの更新により、すべて"keydown"で正しく検知できます。 【実験用ページ】 http://www.usamimi.info/~sutara/sample/jq_key.php 実験結果 keypress keydown Delキー Backspace その他 Delキー Backspace その他 Firefox 16.0 ○ ○ ○ ○ Chrome 23.0 × ○ ○ ○ Safari 5
最終更新: 2018-08-18 Googleアカウントの設定メール送信に使いたいGoogleアカウントでログインし、下記のページを開きます。 https://myaccount.google.com/lesssecureapps 「安全性の低いアプリの許可」を有効にします。 XAMPPの設定対応バージョン XAMPP 7.2.2 (Windows 10) XAMPP 5.6.12 (Windows 10) XAMPP 1.8.3 (Windows 7) 下記の設定ファイルを書き換えた後、Apacheを再起動すればOKです。 xampp\php\php.ini [mail function] ; 下記の設定はそのままでよい。 SMTP=localhost smtp_port=25 ; sendmail_path を下記の値にする。 ; sendmail_path の項目が存在しなければ、
(CakePHP2.2.1 でも確認しました。 2012-07-24) 『http://』から始まってルートまでの絶対パスを、 たとえば『http://hoge.com/Root/』のようなURLを取得するには、 ビューでは下記のようになります。 <?php echo $html->url('/', true) ?> これをコントローラ内で行うには、 $hoge = h(Router::url('/', true));と書くしかないんでしょうか。 専用のメソッドなどは用意されていないのでしょうか。 まあ、べつにこれで問題ないから構わないのですが(-_-;)
※ 更新終了 ajaxComboBoxへ合流しました。 Updating is closed. This plugin was unified with "jquery.ajaxComboBox". jquery.ajaxComboBox simple mode: http://www.usamimi.info/~sutara/ajaxComboBox/#sample07 Latest version : 1.5.4 (2012/02/10) jQuery 1.7以降で動作します 目次 (Contents) → デモ、ダウンロード (Demo, Download) → 特徴 → 設置方法 → オプション → 更新履歴 デモ、ダウンロード (Demo, Download) 【デモ (Demo)】 ajaxSuggest【日本語版】 (for Japanese) ajaxSuggest【英語板
【CakePHP 1.3.2】 CakePHPのデフォルトの状態で、どこまでセキュリティ対策が 施されているのかを実験します。 【実験方法】デバッグを"2"に設定し、予想される攻撃によってどのような SQLが生成されるのかを確認します。 【/app/config/core.php】 Configure::write('debug', 2); 1. SQLインジェクション 【実験環境】下記の3つのメソッドについて、CakePHPの対応を見てみます。 read() find() findById() 【コントローラ】 function view($id){ //【1】 $this->data = $this->User->read(null, $id); //【2】 $this->data = $this->User->find('first', array('conditions'=>arr
前回の方法では、仮登録ユーザを削除する処理をcronからだけでなく ブラウザでURLを入力しても実行できてしまうという欠点がある、と CakePHPのフォーラムで指摘を受けました。 今回は、CakePHPコンソールから独自のシェルを実行する、という処理を cronで自動的に行えるようにします。 環境 Ubuntu 10.04 XAMPP for Linux 1.7.3a CakePHP 1.3.2 データベース:SQLite2 独自のシェルを作成有効期限の過ぎた仮登録ユーザを検索・削除する処理です。 シェルの名前は『refresh』です。 【/vendors/shells/refresh.php】 class RefreshShell extends Shell{ var $uses = array('User'); function main(){ $conditions = array
(追記: 2012-07-24) CakePHP 2.2.1では、セッションが消える恐れのあるコードは発見されませんでした。 他に気になる点がなければ、Security.levelは'high'や'medium'でも問題ないと思います。 【おすすめ設定】 【/app/config/core.php】 Configure::write('Security.level', 'low'); 【理由】下記のように、"low"の場合だけリファラの検査が 行われないからです。 【/cake/libs/cake_session.php】 switch ($this->security) { case 'high': $this->cookieLifeTime = Configure::read('Session.timeout') * Security::inactiveMins(); if ($ini
(最終更新日: 2014-01-13) CakePHP 2.4.3では、Bake用にパスを一時的に変更する必要などはありません。 (SQLiteファイルの場所) /app/database/test.sqlite3 (/app/Config/database.php の記述) class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Sqlite', 'database' => './database/test.sqlite3' ); CakePHP+SQLiteで制作すべく、勉強中です。 SQLiteでbakeを使用する際は、database.phpの 『'database'=>』のパス設定を一時的に変更しなくては ならないようです…。 - 【環境】CakePHP1.2.5, PHP5, SQLi
もう、通常のJavascriptでAjaxする方法は忘れてしまいましたが、 エラーやタイムアウトなどを受けてAjax通信を中断するには、 xhr.abort(); // xhrはXMLHttpオブジェクトを格納している のように、"abort()"メソッドを使うようです。 jQueryでも上記の"abort()"が使えますが、どうやらXMLHttpオブジェクトを 『$()』で囲んでjQueryオブジェクトにしなくてはならないようです。 【訂正:2012年2月13日】 jQueryでも同じでした orz 逆に、jQueryオブジェクトのメソッドとしてabortを呼び出そうとすると失敗します。 (jQuery 1.3.1、1.7.1 で確認しました。) jQuery: // 失敗 var xhr = $.get("test.php"); $(xhr).abort(); // 成功 var xh
$hoge = $('<table></table>'); $hoge.append('<tr></tr>'); と設定して、 $table.children('tr') でtrにアクセスできないのはなぜだろうと思っていたら、 自動的にtbodyが追加されてたんですね。 <table> <tbody> <tr></tr> </tbody> </table> こうなっていた、と。 道理で、範囲が直下の子要素までの『children()』では アクセスできなかったわけです。 自動的にtbodyが追加されるのは、IEへの対策だそうです。 ↓ 『IE6ではテーブル要素の動的生成時にtbodyを生成しないとだめみたい』 http://docolog.cocolog-nifty.com/papalog/2007/11/ie6tbody_f14c.html そもそも、tableの直下にtrを入れずに、t
最終更新: 2018年8月2日 目次 結論 実験 実験結果一覧表 古いブラウザでの実験結果 結論 以下のように求められます。 ※ IE6, 7, 8は対象外です。 1. 表示領域の幅 (スクロールバー含まず) = document.documentElement.clientWidth; $(window).width(); // jQuery 2. 表示領域の高さ (スクロールバー含まず) = document.documentElement.clientHeight; $(window).height(); // jQuery 3. 表示領域左上のX座標 (文書左端から表示領域左端までの距離) = window.pageXOffset; window.scrollX; // pageXOffsetと同等(エイリアス) $(window).scrollLeft(); // jQuery
Latest : v7.5.2 (2018-07-25) 目次 (Contents) デモ、ダウンロード (Demo, Download) 紹介 (Introduction) ライセンス (License) 設置方法 PHP以外のサーバサイド言語での利用 オプション 更新履歴 デモ、ダウンロード (Demo, Download) Demohttps://sutara79-php.herokuapp.com/demo/jquery.ajax-combobox/ GitHub https://github.com/sutara79/jquery.ajax-combobox/ CakePHP + ajaxComboBox + MySQL (Cake2.x) https://github.com/sutara79/ajaxComboBox_for_CakePHP (Cake1.3) https:/
PHPでのヒアドキュメントの使い方…。 職業訓練の講義で教わったのは 1 : print や echo で使う print <<< EOF 〜複数行の文を直接記述〜 $hoge ←変数は展開される EOF; というものでした。 てっきり、『print』や『echo』とセットでしか使えないのかと 思ってましたが、変数内で使うこともできるようで…。 2 : 変数内で使う $name = '田中'; $sex = '男'; $hoge = <<< EOF <p> 私の名前は $name です。<br> 私の性別は $sex です。 </p> EOF; echo $hoge; ところで、以前は、ヒアドキュメント内では配列やオブジェクトのメンバ変数は 使えないものと勘違いしていたため、 変数に代入してから使う 一時的にヒアドキュメントを中断する 『printf()』を使う などの苦肉の策を講じていま
このページを最初にブックマークしてみませんか?
『sutara-lumpur.hatenadiary.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く