CakePHP4 でチェックボックスを必須にするバリデーション

こんな簡単なことがドキュメントを読んでもわからなかったのでメモ。 multipleOptions('checkboxes', ['min' => 1], '選択してください。') return $validator; } multipleOptions で multiple ルールが追加されます。 2つ目の引数が下記の Validation:multi…

2021年どハマリした曲

どハマリした曲の2021年版です。 2020年の記事はこちら。 s4-ba.hatenablog.jp Mac で Apple Music で曲を聴いていると、アルバムの終わりににテイストの近い曲を自動再生してくれるようになったので、これで好みの曲に出会うことが増えた気がします。 曲名 …

Apache は DocumentRoot に php.ini があればそれを優先する

普段は Docker の公式 PHP イメージ上で開発しているんですけど、 $PHP_INI_DIR/php.ini に設定を記述しても反映されず、いろいろ試した結果 Apache は DocumentRoot に php.ini があればそれを優先する という仕様がありました。 Docker の公式 PHP イメー…

結局、PHP でディレクトリ内のすべてのファイルを操作するにはどうしたらいいのか

PHP

PHP でディレクトリ内を全走査してファイルを操作(高度なギャグ)するときの方法を調べました。 たまにしかやらないから全然身につかないです。 今回は下記のようなファイル構造で target 以下のファイルを操作する場合を考えます。 ~/file_test » tree ./ …

2020年どハマリした曲

どハマリした曲の2020年版です。 2019年の記事はこちら。 s4-ba.hatenablog.jp 2020年は音楽を聴いている時間が半減しました。 YouTube で知らない曲に出会うことも減った気がします。 曲名 / アーティスト名 をタイトルにして公式で聴けるものがあれば埋め…

Web フォーム のシステム設計

UI や項目の設計ではなく、システムとして動作や URL の設計です。 SEO 的なものも考慮しません。 セキュリティに関しても触れないです。 よくあるお問い合わせフォームのようなものを MVC で構築する場合を考えます。 要件 お問い合わせがあったときに、お…

2019年どハマリした曲

どハマリした曲の2019年版です。 2018年の記事はこちら。今読み返すと結構小っ恥ずかしいです。 s4-ba.hatenablog.jp 曲名 / アーティスト名 をタイトルにして公式で聴けるものがあれば埋め込んでおきます。 2018年版は曲が多すぎてページが重くなってしまっ…

CakePHP4 で AppTable を継承する代わりに EventListener を使う

CakePHP4 がリリース されてから、これまで作ってきたものを CakePHP4 でいちから書き直してみてます。 この記事は EventListener の使い方を簡単に説明します。 CakePHP3 でも同じなハズです。 便利な Behavior を使いたい Cookbook では Behavior の例とし…

WordPress を Bedrock で構築する

WordPress 案件に遭遇して初めて一から WordPress を構築したので知見をメモ。 構築にあたっては下記記事を参考にしました。 qiita.com Bedrock は WordPress における Web サイト開発をモダンにし、設定管理を簡単にし、いい感じのフォルダ構成を提供してく…

VS Code のオススメの拡張機能と、そうでない拡張機能

便利な拡張機能を紹介している記事をよくみますが、利用しないものも理由を添えてメモっておくのも大事だと思います。 僕は PHP, HTML, CSS, JS での開発がメインです。 利用していない拡張機能 Bracket Pair Colorizer Bracket Pair Colorizer - Visual Stu…

VS Code で phpcs と phpcbf を利用するときは PHP Sniffer & Beautifier を使うのが最高

PHP のフォーマットは squizlabs/PHP_CodeSniffer を使うのがスタンダードだと思います。 PHP Sniffer & Beautifier は プロジェクト固有のルールで phpcs と phpcbf を実行できる 拡張機能です。 インストール composer で PHP_CodeSniffer をプロジェクト…

【PHP】多次元配列の存在チェックにおける isset と Null 合体演算子とエルビス演算子について

PHP

多次元配列でキーが存在しているかのチェックを頭から行うのが長いなと思って調べてたら、isset は一発で存在チェックしてくれると知りました。 ['b' => 1]]; // isset var_dump(isset($arr['a'])); // bool(true) var_dump(isset($arr['a']['b'])); // boo…

CakePHP3 の Element は自分自身を再帰的に呼び出せる

階層メニューなどを作るときなんかに再帰的に作れないかなと思ってやってみたらできちゃいました。 CakePHP2 以前でも可能かもしれないです。 どこかでメニューの配列を定義します。 '親1', 'url' => '/parent1/', 'child' => [ ['label' => '子1', 'url' =…

スマホアプリのモックを ReactNative + Expo でつくってみた備忘録

React 未経験なのに React Native + Expo でスマホアプリのモックを作っているので、開発環境の構築からつまずきポイントまでまとめます。 環境は Mac + VSCode です。 各種インストール 先人に助けてもらいます。 qiita.com qiita.com Homebrew は入ってい…

PHP の json_encode で変換後の文字列を僕が読みやすいようにする

PHP

マニュアルにある 定義済み定数 をオプションに指定して json_encode で変換した後の文字列を読みやすいようにします。 変換するのはこのデータ。 's4_ba', 'web' => 'http://s4-ba.hatenablog.jp/', 'language' => '日本語', 'skill' => [ 'languages' => …

2018年どハマリした曲

音楽を聴きながら仕事しているので、かなり長時間音楽を聴いているつもりです。 Apple Music にも加入しているのもあり、ものすごい量の曲を聴ける環境なので、 今どんな思いで聴いているかを忘れないようするための記録です。 その年にハマった曲を記録する…

CakePHP3 で Component と Helper の連携

過去にやったやつの CakePHP3 版です。 s4-ba.hatenablog.jp 同じように Paginator のような Component と Helper を自作します。 CakePHP2 のときと比べてシンプルでわかりやすくなってると思います。 CakePHP 3.6.7 Component が呼ばれたら Helper も自動…

CakePHP3 で「いずれかの入力が必須」を実現するバリデーション

どれか1つが入力されていたら OK とするようなバリデーションです。 Cookbook にもなくてググっても出ないんですけどみなさんどうしてるんでしょうか。 今回は モデルのないフォーム に実装したので、_buildValidator() に記述していますが、モデルのある通…

CakePHP3 のメールの使い方

ババっと調べても痒いところに手が届かない記事ばかりヒットするので自分用にまとめます。 この記事もきっと痒いところに手が届かない記事です。長いです。 2018/7/14 変更 Email の非推奨メソッドを修正 s/from/setFrom/ s/to/setTo/ s/subject/setSubject/…

VS Code で矩形選択するキーボードショートカット

VSCode で矩形選択したくて調べたけどマウス使った `Alt + クリック` っていうつらいやり方ばっかりヒットしてつらかったです。キーボードでやりたい病なのでメモ。

CakePHP3 を Microsoft Web Platform Installer でインストールした IIS で起動するまでの設定

今 PHP の環境は Microsoft Web Platform Installer でインストールしたものなので、その上で CakePHP3 の Welcome ページを表示するまでにしたことを書きます。 IIS 10.0 PHP 7.1.7 For IIS Express CakePHP 3.5.6 Microsoft Web Platform Installer 5.0 Ca…

CakePHP2 で Component と Helper の連携

何がやりたいのかっていうと、Paginator みたいなのを自作したいです。 CakePHP 2.7.5 Component が呼ばれたら Helper も自動で呼ぶ Paginator は Controller 内で public $components = array('Paginator'); で呼び出すと、Helper も自動で使えるようになる…

Visual Studio Code でパスフレーズありの鍵では SSH 接続できない?

Visual Studio Code 上で Git を SSH 接続で利用しようとした時にハマりました。 鍵の生成時にパスフレーズつけたときに clone とかで Permission Denied (publickey) のエラー。コンソールではパスフレーズありでも問題なく clone できたので、原因がよくわ…

Tomcat における JSP の 65535 問題の解決法

65535 問題とは、巨大な JSP ファイルからできた .java ファイルがコンパイルされるときにでるアレです。 具体的には次のエラーが出ます An error occurred at line: [79] in the generated java file: [filepath] The code of method _jspService(HttpServl…

Excel の「競合の解決」を Web アプリケーションで実装した話(再帰的Deferred)

Web アプリケーションを作ってると Excel の機能をそのまま実装してくれってよく言われますよね。 競合の解決を実装した話です。 クライアントサイドの実装についてがメインです。 この記事は Excel の「競合の解決」を実装するために jQuery の Deferred を…

ほとんどのエンジニアには解けるパズル4を解いた

4つめが公開されたので解きました。感想です。 tango-ruby.hatenablog.com 公開が 1/31 で日曜の 22 時だったので公開直後は諦めて今日解きました。 今回は curl 率が低く、いろいろと駆使して解いていったので楽しかったです。 これまでのパズルの中では一…

ほとんどのエンジニアには解けるパズルを解いた

解きました。感想です。 tango-ruby.hatenablog.com tango-ruby.hatenablog.com tango-ruby.hatenablog.com パズル 1 の記事を見つけたときは、REST しらないわ、curl しらないわでスルーしてました。 気づいたら 3 つめまで出てるし、解いてるひとたくさん…

僕の考えたマヨイドーロの解答

CodeIQ に出題されていたマヨイドーロの僕の解答です。 今は設問が見れませんが出題は以下。 codeiq.jp 解答 以下が僕の解答です。 ただただ漸化式をそのままコーディングしただけのあんまり工夫のないコードになりました。 Java7 で提出しました。 import j…

JavaScript のロード時に HTML 要素が取得できないやつ

JavaScript でコードの記述によって実行タイミングが違うので HTML 要素が取得できない場合があります。 仕事中にちょっとハマってしまったのでメモ。 自分でまとめないと忘れると思うので。 冷静になればすぐわかることなんですがね…。 確認したこと 具体的…

自分用 Java EE 用語集

Java EE 関連で3文字の英語が頻出するので自分用まとめです。 まだまだ勉強中でおかしな点がたくさんあるはずなので鵜呑み厳禁です。 間違い等があればご教示願います。Java EE7 準拠です。