CakePHP3:コントローラでCSRF対策とセキュリティコンポーネントをOFFにする

CakePHP3.4ではこう書きます: public function beforeFilter(Event $event) { parent::beforeFilter($event); $this->Auth->allow( ['index'] ); // indexへのアクセスにおいてSecurityコンポーネントをOFFにする $this->Security->config('unlockedActions…

CakePHP3:特定のコントローラをBasic認証の対象外にする

とある開発においてSMSの送信をすることがあり、SMSの事業者からコールバックを受ける必要がでてきました。 開発環境でBASIC認証をかけているので、コールバックを受けるURLだけを開放したい。 だけどCakePHPでは.htaccessによってURLをrewriteしているので…

URI.jsでURLをパースする

URLをパースするの、面倒ですよね。URI.jsが便利なので使いましょう: <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/URI.js/1.19.0/URI.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script> let uri = new URI(); let functions = ['hostna…</head></html>

CakePHP3:findで特定のカラムの値を抜き出す

いつももやもやするので、備忘録として。仮にこんなデータがあるとします: id name 1 New York 2 Tokyo 3 London そして次のデータを抜き出したいとします: ['New York', 'Tokyo', 'London'] 実行するのはこいつです: $this->loadModel("Cities"); $citie…

HTML5 AudioとWeb Audio APIの違い

実際にやってみて、気づいた点を列挙します。 対応ブラウザ HTML5 AudioはIE11やモバイルを含めて対応しています。 Web Audio APIはIE11で未対応です オーディオファイルのダウンロード HTML5 Audioでは何もしなくても分割ダウンロードが行われます(ブラウ…

Huawei P10 Liteに機種変更しました

auのSHL23を使っているのですが遅いです。Snapdragon 800なのに…そしてAndroid 4.2とOSが古く試験に利用するには不適切なことから機種変更をしました。できればおさいふケータイが使える国産端末がよかったのですが高いのですよね。安い端末だとシャープのSH…

CakePHP3:PagesのURLをルーティングする

Pagesはページをどんどん作れて便利ですがURLが長いですよね/Pages/display/ページ名。 そこでルーティングを使ってこれを短縮します。 書くまでも無いかもしれませんが…routes.phpに次を追加します: $routes->connect('/ページ名', ['controller' => 'Page…

Huawei P10 Liteのカメラ

業務でAndroid端末が必要になって買いました。26000円。 動作はサクサク、ingressもサクサク動きます。 さてカメラをiPhone 6sと比較してみました: 上がiPhone 6s、下がP10 Liteです。 パット見、P10 Liteのほうが綺麗ですよね。 ただ、暗部を見てみるとiPh…

米国の州のSQLデータ

ご自由にご利用ください。country_idは1にしています: INSERT INTO states (id, name, abbrev, country_id,display_order) VALUES (1,'Alabama','AL',1,990); INSERT INTO states (id, name, abbrev, country_id,display_order) VALUES (2,'Alaska','AK',1,…

CakePHP3:URLのマッピング(ルーティング)

仮に、こちらのURLを: /Japan/Posts/view/10 PostsControllerのviewアクションにマッピングしたいとします。 (つまりJapanってのはURLに入っているけど捨てることになります) この場合、routes.phpに次を追加します: $routes->connect('/:country/Posts/…

CakePHP3:モバイル端末を検出する

サーバ側でモバイル端末を識別するニーズがあり、MobileDetectというのを導入してみました: mobiledetect.net 導入方法ですが、composerを使うと簡単です: composer require mobiledetect/mobiledetectlib Cakeの中のプログラムから利用するには、useを使…

jQuery:Cycle2プラグインでスライダーを実現する

Cycle2というとても使いやすい、jQueryのプラグインがあります。 幾つか詰まった点があったのでここで紹介します。 基本的な使い方 まず、jQueryとこのプラグインを読み込みます: <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script src="http://malsup.github.com/jquery.cycle2.js"></script> 次に画像タグを以下のように<div>で括ります: <div class="cycle-slideshow"> …</div></div>

WordPress:アクセス数の多いページをサイドバーに表示する

お客様より、アクセス数の多いページをサイドバーに表示したいとの相談があり、調査してみました。 Wordpress Popular Postsというプラグインを使うと、実現できます。 アクセス数を計測する対象を固定ページと投稿の両方、固定ページだけ、投稿だけから選べ…

WordPress:固定ページをカスタマイズする

固定ページに投稿の一覧を差し込みたいな、と思っていてやり方を探っていました。 大きく分けて3つ、やり方があります: 1) page-ID.phpを作成する wp-content/themes/テーマ名のディレクトリに移動すると、page.phpというファイルがあります。 これをコピー…

WordPress:メニューの言語を変更した場合の副作用

WordPress初心者なのですが、メニューの表記を英語にしたいな、と思ってここをいじってみました: すると驚いたことに、TOPページに表示するコンテンツのうち、 一部を抜粋する機能が動かなくなったのです: 本来はこうあるべきです: 対策ですが、サイト全…

CakePHP3:ブラウザにファイルをダウンロードさせる

mp3のようなファイルを配信する場合、次のように書きます: $this->autoRender = false; $download_file = $file_dir . DS . $file_id . ".mp3"; $response = $this->response->withFile($download_file); return $response; このままでは、mp3がその場で再…

VirtualBox:LAN内の他のマシンから、ゲストOSに接続する

VirtualBoxの中にCentOSを立ててとあるウェブアプリケーションを開発しているのですが、 IE11での動作確認をする必要がでてきました。VirtualBoxはMac上で動いているのでどうすればいいのか? 調べてみたら、先人の方がちゃんとやり方を公開してくださってい…

Javascript:クラスじゃないのにthisを参照できる?

以下のコードを書いても動くのであれ?と思いました: function getArea(width, height){ this.width = width; this.height = height; return this.width * this.height; } console.log(getArea(10,20)); // 200 thisと書いていますが、これはクラスをnewし…

Mac OS:ダブルクリックしてiTerm2のターミナルを開く

ようやくやり方がわかりました(実はこれまで調査してなかった) iTerm2から、起動したいホストのプロファイル名を読み取ります: スクリプトエディタの起動 スクリプトエディタを起動します スクリプトエディタに以下の内容を記述します tell application "…

Mac OS:スクリプトエディタが見つからない

iterm2のターミナルを開くショートカットを作るべく、AppleScriptを作成することにしたのですが、 スクリプトエディタが見つからない(笑 Finder > 移動 > アプリケーション で「ユーティリティ」の中にありました:

IE11を便利に使う

普段は利用を敬遠しているIE11ですが先程、ちょうどよい用途を見つけました。 PlaycodeでJavascriptを勉強しているとき、Chromeを使うと「あれ、これES2015なのにBabel通さずに動くな…」ということがあります: そこでIE11の出番です。同じコードをIE11で動…

すべてクワッドコア以上?の第8世代Coreプロセッサ

LenovoがThinkpad X280・T480・T480sなどを発表しました。 第8世代のCoreプロセッサ搭載とのことです: news.mynavi.jp news.mynavi.jp T470s買わなくて(買えなくて)よかった! 第8世代のCoreプロセッサが何であるか調べてみると…どうやら、 すべて4コア…

Facebook:シェアを実装する際のポイント2点

一回目の表示で画像が表示されない Facebookで最初にシェアをした際に画像が表示されないことがあります。 この場合は、画像の横幅と高さを以下のように指定するとうまくいきます: <meta property="og:url" content="http://thebaker.hatenablog.com"/> <meta property="og:type" content="website" /> <meta property="og:title" content="Thebaker's blog" /> </meta></meta></meta>

Display PortとHDMIの変換アダプタのナゾ

この手の変換アダプタ、変換できる方向は双方向ではないのですね。 Cable Mattersの102018Aは「入力DisplayPort→出力HDMI」の変換アダプタですが、 逆方向、即ち「入力HDMI→出力DisplayPort」には使えないのです: 結局、代わりに別の変換アダプタを買いまし…

Postgresql:シーケンスが加算されないナゾ

先日、データベースのシードファイルを作って初期データを投入。 その後、ブラウザから追加のデータを登録しようとしたところ 「プライマリキーが重複しているよ」といったエラーが出ました。 原因は、PostgresqlにINSERTする際、プライマリキーの値を指定し…

Javascript:変数の初期化の落とし穴

数字を格納する予定の場合は初期化必須ですね。 以下のコードを実行するとNaNが出力されます: function sum(){ var total; // total =0 とすべき for(let i=0;i

CakePHP3:日付のフォーマット、YYYY vs yyyy

CakePHP3のi18nFormatはとても便利な関数ですが、年の指定をyyyyと書くべきところをYYYYと記述すると落とし穴があります yyyyは、カレンダー上の年です。例えば、2017年12月31日の場合、yyyyの値は2017です: $timezone_string = 'America/Los_Angeles'; $ye…

JsFiddleの代替サービス:PLAYCODE

JsFiddleって、コードを変更してからUPDATEを押してRUNするのが面倒だなと思ってました。 またconsole.logを見るにはブラウザのデベロッパツールを開かねばならない…(裏技もあるみたいですが) そこでPLAYCODEを使ってみました。書いたコードは即座に実行さ…

Javascript:関数の中の変数の怪

引き続きこちらの本の4.3.3章を: 改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで作者: 山田祥寛出版社/メーカー: 技術評論社発売日: 2016/09/30メディア: 大型本この商品を含むブログを見る すごく面食らった現象?仕様?に遭…

Javascript:varの有無の違い

明けましておめでとうございます。元日から、こちらの本でJavascriptの勉強をしています: 改訂新版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで作者: 山田祥寛出版社/メーカー: 技術評論社発売日: 2016/09/30メディア: 大型本この商…