CakePHP3:containとmatchingとinnerJoinWithの違い

メソッド 関連するデータを取得するか? 関連するデータに対して条件を設定し、元のテーブルを絞り込めるか? contain ○ ☓ matching ○ ○ innerJoinWith ☓ ○

CakePHP3:bakeの落とし穴

とても便利なbakeですが、hasOneのリレーションを設定してくれないという特徴があります。 テーブルの例 例えば、次のようなテーブルがあるとします: usersテーブル user_profilesテーブル bakeした結果 Users hasMany UserProfilesというモデルが生成され…

CakePHP3:アソシエーションされているデータをsaveの前に変更する

リクエストデータを変更する場合 $data = $this->request->getData(); $data['order_data']['name'] = "新しい名前"; $order = $this->Orders->patchEntity($order, $data); エンティティのプロパティを変更する場合 $order->order_data->name = "新しい名前…

CakePHP3:コントローラで発行されたクエリをログする

debugkitを入れていればSQLは確認できますが、リダイレクト等が入っていて確認できない場合があります。 その対策です。 bootstrap.phpの変更 bootstrap.phpにこれを追加します: Log::config('queries', [ 'className' => 'File', 'path' => LOGS, 'file' =…

.sshディレクトリを作る

install -d -m 700 ~/.ssh (umask 077; touch ~/.ssh/authorized_keys) これで正しいパーミッションで作成できます。

Git:ブランチを作ってそこに移動する

git

git branch -b 新しいブランチ名

Git:ブランチを削除する

git

ローカルの場合 ローカルブランチ一覧を表示 git branch マージ済みのローカルブランチを削除 git branch -d ブランチ名 マージ済みか否かを問わないで、ローカルブランチを削除 git branch -D ブランチ名 リモートの場合 リモートブランチ一覧を表示 git br…

Vue:Invalid Host Header

vue-cliを使ってこちらのチャットプログラムを作ってみたのですが、ローカルホスト外からアクセスするとInvalid Host Headerというエラーがでる。対処方法ですが、ルートディレクトリに以下の内容のvue.config.jsを作ると解消します: module.exports = { de…

Vue.js:フォーカスの当たっている要素のIDを取得する

こんな感じでいけます: created: function() { // ブラウザ以外で実行の場合、documentが無いと怒られるための確認 if(typeof window !== 'undefined') { // フォーカスが変わったらfocusChanged関数を呼ぶ document.addEventListener('focusin', this.focu…

Vue.js:配列の中のオブジェクトの値をリアクティブに変更

こんな感じにVue.setを用います: <div id='app'> <ul> <li v-for="artist in artists">{{artists.firstname}} {{artists.lastname}} {{artists.age}}</li> </ul> <form> <input type="button" value="年齢を5際、若くする" v-on:click="reduceAge"/> </form> </div> var app = new Vue({ el: '#app', data: { artists: [ { lastname: 'セザンヌ', fi…

AWS:AMIで利用してないスナップショットを探して削除する

自分が所有するAMIの一覧を取得 aws ec2 describe-images --owners self | jq '.Images[] | {ImageId}' | jq '.[]'| sed 's/"//g' 自分が所有するAMIのスナップショットIDの取得 aws ec2 describe-images --owners self | jq '.Images[]["BlockDeviceMapping…

AWS:parse error: Invalid numeric literal at

jqを使って、describe-imagesの出力をパースしようとしてもエラーばかり・・ 理由は.aws/configにoutput=textと書いてあったためでした…削除したら直ったw

Vue.js:computedに引数を渡せない

速習vue.jsという本を読んでいて、以下のサンプルコードが出てきました: お題 <html lang="ja"> <body> <div id="app"> <form> <label for="name">メールアドレス:</label> <textarea v-bind:value="emails.join(';')" v-on:input="emails = $events.target.value.split(';')"></textarea> <ul> <li v-for:"email in emails">{{ email }}</li> </ul></form></div></body></html>

フリーランスじゃないけど孤独がつらい

6月から会社員になりました。が、100%自宅勤務です。 会社の人と会話するのは週に1回のSkype MTG。 奥さんが働き出したので昼間は、話す相手が待ったくいません。 よって寂しい。 今日、自転車やさんでタイヤ交換の話で盛り上がって心が満たされました。 こ…

SVN:特定のファイルだけをignoreする

svn

仮に、/var/www/htmlにhoge.txtというファイルがあり、svnで管理したくないとします。 現時点でsvn statusとすると、 ? hoge と表示されるとします。 この?を消すには次のようにします: cd /var/www/html svn propedit svn:ignore . もし svn: E205007: 環…

Git:リモートにのみあるブランチをローカルに持ってくる

git

ローカルに、masterだけがあるとします。 リモートにはhogeというブランチがあるとします。 単純にcheckoutを試みると次のエラーがでます: git checkout hoge error: pathspec 'stripe' did not match any file(s) known to git. hogeをローカルに持ってく…

SSL:FujiSSLをSSLストアで購入し、CentOS7のApache2.4に設定する

CSRの生成 秘密鍵作成に必要な疑似乱数の生成 sudo bash mkdir /etc/httpd/ssl cd /bin ./openssl md5 * > /etc/httpd/ssl/rand.dat 秘密鍵の作成 ここで入力するパスフレースはどこかにメモしておきます: ./openssl genrsa -rand /etc/httpd/ssl/rand.dat …

CakePHP3/ImageMagic:画像のオリエンテーション(向き)を正しくする

EXIFにオリエンテーション(回転)が設定されている画像をアップロードすると、Chromeはそのオリエンテーションを尊重して表示します。 これを回避するためにこんなコンポーネントを作りました: class FixOrientationComponent extends Component { public …

ImageMagick:画像の周りにパディングをつけてセンタリングする

シェルを叩く場合 convert original.jpg -gravity center -background white -extent 1024x768 padded.jpg なお、-gravity centerの場所をこのようにするとうまくいきません: convert original.jpg -background white -extent 1024x768 -gravity center pad…

インチダウン

私は初代IS250のversion Sに乗っているのですが、乗り心地の悪さとロードノイズの多さに悩んできました。 今回、タイヤが寿命に近いためインチダウンを行いました。 インチダウン前のタイヤはブリジストンのレグノGR-XT。サイズは前が225/40R18、後ろが255/4…

CakePHP3:テンプレートで必要なjavascriptをレイアウトで読み込んだjavascriptの後に読み込ませる

jQuery等のライブラリをレイアウトファイルで読み込ませ、その他のJavaScriptファイルはテンプレート側で必要に応じて読み込む方法をどうやったらよいか、 前から悩んでいたのですが、以下、動く方法が1つ見つかりました。 レイアウトファイルの一部 append(…

CakePHP3:ルート以外のコントローラが全て404

結構ハマりました。結論からいうと、AllowOverrideの設定をhttpd.confで正しく設定しているか確認してください。

jQuery:フォームを送信する前に中身を操作する

<form id='create_order'> <input name='firstname'> </form> というフォームをajaxでPOSTしたい、だけど、firstnameを差し替えたいとします: function submitOrder() { var data = $("#create_order").serializeArray(); data.forEach(function (item) { if(item.name === 'firstname') { item.value = 'thebaker';…

Outlook:SSL/TLS/STARTTLSの謎

Outlook.comとOffice 365ブラウザ版のOutlookには、IMAPの通信経路の暗号化の選択肢として次の3つがあります: なし SSL TLS SSLだと993番に接続できますが143番はNGです。 TLSだと143番に接続できますが993番はNGです。 おそらく、ここでいうSSLは「SSL/TLS…

試乗:インプレッサG4 2.0i-S

先日カローラスポーツを試乗したので、比較対象としてインプレッサG4を試乗してきました。 内装 地味ですが頑張っています。ドアの内側のドアノブがちゃんとメッキになっている。 (新型クラウンのRS Advanceはプラにメタル調の塗装なんですよ) 室内 広いで…

MySQL/MariaDB:AUTO_INCREMENTが減る場合

MySQL8より過去のバージョン、および、MariaDB10.2.4より前のバージョンでは再起動の結果、AUTO_INCREMENTの値が減ることがあります。 再起動後、SELECT MAX(id) FROM テーブル名で取得した値を使ってAUTO_INCREMENTを設定しているようです。

試乗:カローラスポーツ(ガソリン車のGグレード)

メディアでのレビューが良いので気になってカローラ店に見に行ってきました。 この車、先代のオーリス時代はネッツとトヨペットでの扱いだったのに 今回からはカローラ店専売だそうです。 さて、内装ですが意外によかったです。新型クラウンの半額なのにまあ…

Apache 2.4:特定のIPからのアクセスはBasic認証を不要とする

<Location /> <RequireAny> AuthType Basic AuthName "Protected" AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user Require ip xxx.xxx.xxx.xxx </RequireAny> </Location>

ハワイでの海外旅行保険(キャッシュレス対応の提携医療機関)

5月に、カカアコで日本人旅行者が公衆トイレで襲われたという気の毒な時間がありました。 その際の治療費が応急処置だけで700万円超… 私は毎回、海外旅行保険に入っているので安心だと思っていたのですが、 キャッシュレスサービスに非対応の病院だと困りま…

PayPal:User authentication failed

ちょっとハマりました。Bashでセキュアトークンは取得できるけど、同じ情報をPHPから投げると表題のエラーになる。 原因はパスワードに記号が入っているためでした(私の場合は$)