cakephp1.2 database.phpのdefaultに設定されているDBのテーブルはModelファイルの作成が必須ではない

ClassRegistry::init('ModelName');こんな感じでmodelsフォルダに存在しないModelを読み込んでいた場合に、何故かエラーになる場合とならない場合があって1時間くらいはまってしまったのでメモ。どうやらdatabase.phpで$defaultに設定されたDBのテーブルだと…

php sqlのIN句をarray_fillでキレイにまとめる

以下のようにすれば一行で$idの数だけ?を記述するin句が作れる i.id in ('. implode(',', array_fill(0, count($id), '?')). ')str_repeatを使う方法もあるようだけどこっちの方がキレイ

cakephp1.2 通常のSQLとO/Rマッパーとのselectの結果の違い

今更だけどメモ。cakephpでO/Rマッパーというかfindとかした時の結果と、通常のsql(query)を実行した時の結果の違いについて。通常のsqlを使用した場合 sql $sql =<<<SQL select * from users u inner join posts p on p.user_id = u.id where u.id=1 SQL; pr($this->User->query($sql)); 結果 Array ( [0] => Array ( [u] => Array ( [id] => 1 [user_name] </sql>…

mysql group_concatとfind_in_setのまとめ

group_concatはgroup byで複数行をまとめた際に、まとめられた列のデータをカンマ区切りで表示する機能。find_in_setはカンマ区切りのデータを絞り込む機能。この2つを組み合わせることで、本来なら副問合せ等の複数のSQLに分けないと出来ないようなことが一…

bootstrap ハンバーガーメニューを常に表示する方法

bootstrapのハンバーガーメニューをどのサイズでも常に表示させたい場合Customize and download · Bootstrap @grid-float-breakpoint => 9999pxとか大きい値にする※9999とか気持ち悪いんだけど他に方法が無さそうだったので仕方なくこうする

widows8.1でIonic1.3のサンプルアプリをブラウザとandroid端末で動作させる手順

windows8.1環境で確認Getting Started with Ionic - Ionic Framework こちらの手順に従うhttps://nodejs.org/en/ node.js v6.9.1 インストールコマンドラインで実行 npm install -g cordova ionic(終わるのに15分くらいかかる) ionic start myApp tabspcでの…

CordovaやらIonicやらOnsenUIやらAngularJSやらその辺のまとめ

ここ最近ecサイトをbootstrap&cakephpで作っていて調べものをしている時に表題の技術の事を調べたのでざっくりまとめ。まずAngularJSって何よ。jQueryでいいじゃん。って昨日までは思っていました。しかしAngularJSを使うと今までwebサイトの概念として当た…

php 例外時のデバッグは__toStringが便利

php

__toString実行しておけばエラーの呼び元とか行数とか出してくれるので便利サンプル log($e->__toString()); }

sql joinの条件とwhereの条件の違いについて

ケース1 left join t2 on t2.t1_id = t1.id AND t2.status = 'ERROR' ケース2 left join t2 on t2.t1_id = t1.id 中略 where t2.status = 'ERROR' ケース1の場合は結合前の条件となるため、ERRORでないt2のデータもNULLとしてデータを取得する。 ケース2の場…

css div内のある要素だけ余白を無視したい場合はネガティブマージンを使えばよい

css

例えばdiv内に15pxのpaddingが設定されていてその中にimgタグを入れるケースでimgタグだけ15pxのpaddingの設定を無視したい場合、imgタグに-15pxのmarginを設定してやれば、imgタグにはpaddingが適用されなくなる。

css display:table display:table-cell について

css

floatとか使わなくてもtableのように分割できて便利。vertical-alignも使える。後でまとめること。

jquery slickとphotoswipeを連携する

前記事 jquery bxsliderとphotoswipeを連携する - 技術ブログbxsliderの挙動がスマホだといまいち(スワイプ中にスクロールしてしまう等)だったのでslickに変更。http://kenwheeler.github.io/slick/ slick http://photoswipe.com/ photoswipeslickで画像をス…

centos5.11 vim8インストール手順

centos5.11 vim7.4インストール手順 - 技術ブログ gitからvimを落とすと最新のvim(現時点だとvim8が最新)になるため、このページのvim74をvim8に置き換えてインストールすればok

php fatalエラーの補足方法

バッチがメモリ不足等で落ちた場合にFatalエラーが発生するけど通常fatalエラーはtry-catchはおろか、set_error_handlerでも補足できない。 そのためregister_shutdown_functionを使う必要がある。

cakephp1.2 バッチ(Shell)からControllerのメソッドを呼びたい

Shell側は以下のようになる Users = new UsersController(); } function main() { $this->Users->func(); } } 通常ShellからControllerのメソッドを呼ぶような事はしないんだけど、今回はpro…

cakephp1.2 queryで更新系SQLを実行した時の戻り値はtrueではない

例えば以下のような処理があったとして query($sql, $param); sqlが正常に完了してもqueryの戻り値は【trueにはならず】に【空のarray()】が返る。 はい、1時間はまりました~。貴重な人生の1時間を無駄にしました~。空のarrayなので【if(!$ret)】とかで判…

bootstrap ドロップダウンメニューがパネルの下に隠れてしまう件

z-indexも効かず、1時間はまったので(いや正確には昨日の夜これが分からなくてそのまま寝てしまったので実際は4時間は無駄にした。でもそのおかげで睡眠がとれたから±2時間のマイナスとしておこう。と思ったけど本当はその後8km走るはずだったし損失はそこそ…

brackets 改行時の自動インデントを無効にする方法

デバッグ>環境設定ファイルを開くbrackets.json //以下を追加 "smartIndent": false 低予算で始められるおすすめのFX口座はこちら。 http://s2fx.com/ranking/856.html

bootstrapのカスタマイズ方法

通常、既存のbootstrap.cssをカスタマイズしたい場合、別途custom.css等を作ってそれで上書きをするんだけど、例えばグリッドを12から24に変更したい場合だと、上書きするやり方ではできなそうだったため以下調べたやり方2つ。ビルドをしない方法 Customize…

jquery フォームのコピーについて完全に忘却していたので一生忘れないためのメモ

html <ul> <li>test1</li> <li>test2</li> </ul> こんなhtmlがあって、1つ目のliをコピーしてulに追加したいとする。そこでまずコンソールにコピー元のhtmlを表示する。javascript console.log($("ul li:first")); chromeのコンソールの結果 [li, prevObject: n.fn.init[1], context: do…

cakephp1.2 モデルのリレーションを全解除する

AppModel.php public function unbindModelAll($reset = true) { foreach(array('hasOne','hasMany','belongsTo','hasAndBelongsToMany') as $relation){ $this->unbindModel(array($relation => array_keys($this->$relation)), $reset); } } 参考サイト モ…

jquery bxsliderとphotoswipeを連携する

http://bxslider.com/ bxslider http://photoswipe.com/ photoswipebxsliderで画像をスライド表示させ、画像クリック時にphotoswipeで拡大表示させたい場合の話。 普通に実装すれば問題無くできる。ただ注意するところとして、photoswipeはデフォルトだとfig…

win10 chrome 「ホストを解決しています」でネットが遅くなった時の対処法

DNSのキャッシュはブラウザだけじゃない。PC内にも存在している。 - 技術ブログ まずこれでキャッシュクリアを試してみたけど改善されず。ルーターを再起動してもダメだった。試行錯誤したところ「Google Public DNS」を使うことで解消された。 方法としては…

jquery エレメントのデバッグを分かりやすくする方法

How do I console.log a jQuery DOM Element in Chrome? - Stack Overflow デバッグに関する面白い回答があった。例えば↓のようなhtmlがあったとして、 <div> <label> <input type="radio" class="flat" name="radio1" value="0" />チェック1 </label> <label> <input type="radio" class="flat" name="radio2" value="1" />チェック2 </label> </div> findの結果を見たい場合、…

jquery bootstrapのiCheckでflat指定したradioボタンを選択する方法

はまったのでメモ。html <div> <label> <input type="radio" class="flat" name="radio" value="0" />チェック1 </label> <label> <input type="radio" class="flat" name="radio" value="1" />チェック2 </label> </div> jquery $(function(){ // ↓flat指定ありの場合 $("div").find('input').eq(0).iCheck('check'); // ↓flatを使わない通常の選択方法 //$("di…

bootstrap3 グリッドシステム col-sm やら col-xsの意味について

bootstrapのグリッドシステムを利用する際にcol-smやらcol-xsを指定する。詳細はこちら CSS · Bootstrapグリッドって分かりにくいんだけど、ポイントは12分割がベースってこと。 例えば <div class="col-sm-6 col-xs-12">hoge<div> <div class="col-sm-6 col-xs-12">hoge<div>みたいな指定をした場合、col-sm即ちタブレット以上サイズ(pc</div></div></div></div>…

mysql5.6が突然起動しなくなった件の原因と対策

昨日まで動いてたmysqlが突然起動できなくなった。以下、ログ周りのオプションを変更してみた時のエラーログまとめ # error1 /usr/sbin/mysqld: File './mysql-bin.000023' not found (Errcode: 28 - No space left on device) 2016-09-14 08:52:37 23762 [E…

メールの符号化について

受信したメールをprocmail経由でphpに渡してゴニョゴニョする時に失敗した件のまとめ。まずメール送信の仕組みから分かっていなかった。初期のメールではASCIIの7bitデータのみが想定されていたため、現在でも添付のバイナリやマルチバイトである日本語は7bi…

centos パスワード無しでscpする手順

サーバー1からサーバー2にパスワード無しでscpするための手順■サーバー1の作業 サーバー1鍵作成 ssh-keygen -t rsa保存場所やpassphrase聞かれるけど全部エンターでok デフォルトだと以下の場所に秘密鍵と公開鍵が作成される .ssh/id_rsa .ssh/id_rsa.pub公…

jquery qtip2をレスポンシブ対応する方法

javascript - qTip viewport adjustment not working - Stack Overflow これを見れば分かる。要はpositionにviewportを追加しないといけなかった。低予算で始められるおすすめのFX口座はこちら。 http://s2fx.com/ranking/856.html