プログラミング

PHP者がRubyを学んだ時のメモ

いろいろ勝手が違って戸惑いました。日付と時刻表示現在の日付と時刻を下記のような形式で取得したい場合。2013-07-30 06:19:55PHP echo date('Y-m-d H:i:s');RubyDateクラスを呼び出さなくてはなりません。 様式もかなり異なっています。 require 'date' pu…

(HTML5)datalist要素は現時点では使いものにならない

現時点ではブラウザによって表示や動作がバラバラです。 さらに、datalistをCSSで装飾することもできません。 下記のデモページを色々なブラウザで開いて試してみてください。(デモページ) http://www.usamimi.info/~sutara/sample2/html5_datalist.html試し…

Twitter API v1.0 から v1.1への中途半端な移行記

Twitter API v1.0が廃止されていました。 公開中のサイトを一刻も早くv1.1へ対応させなくてはなりません。 まだ途中ですが、備忘録を残しておきます。目次 環境 APIを使っている箇所を探す 修正時の注意点 感想 環境 開発・メンテナンスはLinux機で行なって…

PDOにおいて、テーブル名やフィールド名で予約語を使いたい

最終更新: 2013-08-15 【SET sql_mode='ANSI_QUOTES' について】 MySQLの場合だけ実行しないとエラーが発生することがわかりました。 該当箇所のコードを修正しています。Yahoo!知恵袋で質問しました。 http://detail.chiebukuro.yahoo.co.jp/qa/question_de…

(XAMPP for Linux)phpMyAdminにアクセスできない

環境XAMPP for Linux 1.8.1 OS: LMDE Xfce PC: DELL Dimension 1100 クリーンインストールするたびに行なっていた、おなじみのXAMPPの初期設定を終えてphpMyAdminを開いたら下記のような画面に。 "アクセス禁止"とな!? "新しいXAMPPのセキュリティコンセプト…

CakePHP2.xのlibディレクトリを共用する(ローカル環境限定)

現状 複数のサイトでCakePHPを使っている。 CakePHPのライブラリは、サイトごとに存在する。無駄である。 CakePHPの更新のたびに、全てのlibディレクトリを入れ替える。無駄である。 ├── WebSite01 │ ├── app │ └── lib │ ├── WebSite02 │ ├── app │ └── lib…

クッキーでフォームを復元(jquery.addInputAreaに対応)

一般的に、フォーム入力後の確認画面に進んだ後でブラウザ操作で戻ると、入力内容は消えてしまっています。 (ブラウザによっては自動で保存してくれるものもありますが) 一旦ページ遷移したフォームを復元する場合は、クッキーを使うのが一般的だと思います…

jquery.cookieでjsオブジェクトをJSONで保管するメモ

要望 フォームの入力情報をクッキーに保存したい。 1つのクッキーに複数の項目の情報をまとめて保存したい。 解決策jQueryプラグインの"jquery.cookie"を使うことで全て解決しました。 外部: https://github.com/carhartl/jquery-cookie デモ: https://codep…

(CakePHP2.x) "TwitterAPIでOAuth認証"の古いコード修正のメモ

まったく流行ってない自作のサイト。 (http://kitel.moo.jp/) それでも手入れを続けてたら、ある日、ログアウトしたらその後ログインできなくなりました。 どゆこと? 原因はTwitterAPIの仕様が変更したせい、のようです。 今回は、ユーザの情報を取得するAPI…

(JavaScript) OperaでselectionStartする時の注意

テキストボックスの中のキャレットの位置を知るには、IE以外は"selectionStart"を使います。 (HTML) <textarea id="hoge">aaaa bbbb cccc</textarea>(JavaScript) var pos = document.getElementById('hoge').selectionStart; alert(pos);※ (jQuery) var pos = $('#hoge').get(0).selectionS…

(CakePHP2.x)英語・日本語どっち?の判断と切り替えの処理

英語版と日本語版があるサイト。 どちらでページを表示すべきか? どのように切り替えるべきか? 私が採用した方法は下記のとおり。 言語切り替えの方法URLパラメータを使います。 http://example.com/controller/action/lang:eng サイト内のどのページからで…

(CakePHP, SQLite3) conditionsよりorderの方が速い?

自分のサイトで、下記のような条件でデータを検索する必要がありました。 最終更新の新しい順に取得したい。 ただし、スパムのフラグがついていないものに限る。"find"のパラメータはこんな感じ。 $data = $this->TagList->find('all', array( 'limit' => 20…

(CakePHP2.x, SQLite3) paginateで生のSQLを使うには

【最終更新: 2012-11-30】目次 前置き find()ではWHERE句をエスケープできない paginate()で生のSQLを使う ページング用の生のSQLから全件数を取得する 独自paginateの処理を検証 【お手軽!】内部結合の"table"キーに記述する 前置きSQLでワイルドカードとし…

(jQuery) addInputAreaとcpick.jsを併用する

jquery.addInputAreaと、futomiさんが公開しているcpick.jsを併用できるように、cpick.jsを少し改変しました。 【参考】 カラーピッカー.js - JavaScript ライブラリー - HTML5.JP http://www.html5.jp/library/cpick.html デモページ http://www.usamimi.in…

(PHP, MySQL, SQLite3) テーブルのフィールド名一覧を取得するには

SELECT文で全フィールドを取得したい場合、普通は"*(アスタリスク)"を使います。 が、"CakePHP + SQLite3 + query()"の組み合わせで、生のSQLの中でアスタリスクを使うとなぜかエラーにorz そんなわけで、フィールド名一覧を取得する必要に迫られました。 SQ…

(MySQL, SQLite3)大文字小文字を区別する・しない方法いろいろ

目次 原則 MySQL: 大文字小文字を区別させる SQLite3: 『=』で大文字小文字を区別させない MySQL, SQLite3: 『LIKE』で区別させない MySQL, SQLite3: 重複データを探したい 原則下記のような、大文字小文字の種類だけが異なるデータがあるとします。HOGE Hog…

(jQuery)要素にイベントを設定する際、"clone(true)"に備える。

"clone()"で要素をコピーし、 "clone(true)"で、さらにイベントも引き続ことができます。 【参考】 clone(true) - jQuery 日本語リファレンス http://semooh.jp/jquery/api/manipulation/clone/true/ で、下記のようなHTMLソースがあるとします。 <div class="clone"> <button>button</button> <input> </div>…

(SQLite3, MySQL, PHP) 小数点以下は切り上げて整数にしたい

たとえば、あるフィールドの値をすべて2分の1にする場合。 MySQLでは"CEIL()"が使えるので簡単です。 (MySQL) UPDATE tbl SET hoge = CEIL(hoge / 2); しかし、SQLiteでは"CEIL()"を使えません。 上のSQLをPHPで実行すると、下記のような警告が…。 Warning: …

(CakePHP, ロリポップ) $this->referer() が正常に動作しない

(CakePHP 2.2.1) コントローラ内でリファラを取得します。 $url = $this->referer();普通なら『http://hoge.jp/controller/view』のようなURLが入るのですが、ロリポップではなぜか『hoge.jp』となり、まったく使い物になりません。 Cakeのソースから原因を…

(正規表現, PHP, JavaScript) MySQLの改行文字(\n)を、SQLite用に置換したい

たとえば、下記のようなMySQL用のSQLがあるとします。 (MySQL) INSERT INTO tbl VALUES('aaa\naaa', 'bbb\n\nbbb', 'ccc\\nccc', '\\\nddd\nddd');(\n)は、PHPなどでデータを取得した際、改行として扱われます。 しかし、これをそのままSQLiteで使うことはで…

(正規表現, PHP, JavaScript) SQLの区切り文字として使われているバッククオートだけを置換したい

MySQL用のSQLをSQLite用に変換する際に必要な処理です。 (変換前) INSERT INTO `tbl` (`id`, `name`, `explain`) VALUES (1, 'aaa\'\'置換したくないバッククオート→`', '置換したくないバッククオート→`aaaaaa\\'); (変換後) INSERT INTO "tbl" ("id", "nam…

(正規表現, PHP, JavaScript)ある囲み記号で囲まれた文字列を抜き出す。ただし、エスケープされた囲み記号にも対処する。

最終更新: 2012-07-20 17:46 例えば、下記のようにクオート(')で囲まれた文字列を取り出したい場合。 (検索したい文字列) 'aaa' 'bbb' 'ccc'とりあえず、単純に。 (PHP) $str = "'aaa' 'bbb' 'ccc'"; preg_match_all('/\'([^\']*)\'/us', $str, $matches); v…

(PHP) 大容量のファイルを、ブラウザが落ちないように何度かに分けて処理する

以前、MySQLをSQLiteへ変換するプログラムを作りました。 http://d.hatena.ne.jp/sutara_lumpur/20120714/1342269933 が、たった数MBのSQLファイルでも、変換中にブラウザが落ちてしまうことがあります。 "fgets"で1行ずつ処理しているのですが…(-_-;) そこ…

(CakePHP2.2.1 + SQLite3) 生のSQLを実行する際の注意点

最終更新:2012-08-24 原因はいまだ判明しませんが、汎用的な対処法を見つけました。 下記のように"query()"を使って生のSQLを実行する場合。 (コントローラ) $data = $this->User->query('SELECT * FROM "users" LIMIT 10');"*(アスタリスク)"が問題になって…

(CakePHP,PHP,SQLite3,MySQL) SQLで"%"や"_"をエスケープしたい

SQLでワイルドカードとして扱われる"%(パーセント)"や"_(アンダーバー)"そのものを検索したい場合、自前でエスケープしなければなりません。 CakePHPと素のPHPそれぞれでMySQLとSQLite3からデータを検索する場合を考えてみます。 基本的には 自前で"%"や"_"…

PHPでSQLite3を使う

PHP 5.3.0以降なら、特別な設定をしなくてもすぐにSQLite3を使えるようです。 ただ、PHPでの使用法はバージョン2とはかなり異なります。バージョン2

(CakePHP) 現在使用しているデータベースの種類を知りたい

【最終更新 2012-09-09】 テスト環境ではMySQL、本番ではSQLiteを使う、など、ひとつのCakePHPが数種類のデータベースを使う場合があって、現在使用しているデータベースによって処理を分けたいとき。 Config/database.php に記述したデータベースとの接続設…

(PHP, Windows) unlinkする前にfcloseせよ

ほんとに他愛もない話題です (-_-;) PHPで、フォームでアップロードされたファイルを編集後にユーザに送り返し、元のファイルは削除してしまう処理を作ったんです。 で、Linuxでは問題なかったのですが、Windowsでは下記のようなエラーが出ました。 Warning:…

(PHP, jQuery) MySQLをSQLiteへ変換するプログラムを作りました。

Version: 2.1.1 (2014-08-09) デモ GitHub 注意点重要なデータはアップロードしないでくださいWeb上のページでは、重要でないデータベースで変換を試してください。 重要なデータベースを変換する際は、ソースコードをダウンロードして、PHPが動くローカル環…

(PHP, JavaScript)フォーム送信されたファイルを加工後にダウンロードさせる処理

【参考】 ダウンロード後のファイルを削除したい - PHPプロ!Q&A掲示板 http://www.phppro.jp/qa/1339 下記の一連の処理を、cronなど面倒な処理を使わず、 なるべく簡単に、そしてユーザに親切な処理を作ることを目指します。 ユーザがファイルをフォーム送信する。 …