はじめに
BenSampo/laravel-enum を利用して、Laravel で Enum を使う方法を整理した。
※機能が豊富なので、自分が使った範囲のみ。
TL;DR
- ローカライゼーションやバリデーションが簡単に実現できる
<select>
のオプションもtoSelectArray()
で簡単に設定できる- 他にも機能がいっぱいある
BenSampo/laravel-enum を利用して、Laravel で Enum を使う方法を整理した。
※機能が豊富なので、自分が使った範囲のみ。
<select>
のオプションも toSelectArray()
で簡単に設定できるAWS S3 Bucket 内のオブジェクトの ACL(アクセス権限) を一括で変更する方法を調べた。
S3のパーミッションの設定を一括変更する | ハックノート の通り
aws
コマンド(AWS CLI) を設定aws s3 ls --recursive s3://my-bucket/
でバケット内のオブジェクトを再帰的に取得aws s3api put-object-acl --acl private
でパブリックアクセス不可に設定awk
, xargs
と組み合わせて、1件ずつ処理を行うLaravel で 全角カタカナ・半角英数記号 に変換しつつバリデーションする方法について整理した。
要件としては下記。
prepareForValidation
でバリデーション前の処理mb_convert_kana
で全角・半角の変換regex
ルールで正規表現を使ってバリデーションツールチップを簡単に表示できる atomiks/tippyjs を触る機会があったので、簡単に使い方を整理した。
本記事は tippy v5 系を利用しているので、最新 v6 系(2020/08/01 現在)と挙動や設定が異なる可能性あり
tippy(<target>, { content: 'my tooltip' })
でツールチップを設定<target>
はセレクタ(#id
など)でも、Node(document.querySelector('#id')
など)でも OKcontent
に HTML も設定可能tippy(<target>, { content: '<strong>my tooltip</strong>' })
tippy(<target>, { content: 'my<br>tooltip', allowHTML: true })
theme: 'light
のように指定「画像クリックで拡大」を簡単に実現できる imgix/luminous を触る機会があったので、簡単に使い方を整理した。
デモページ を見ると、何ができるのかがすぐわかる。
npm i luminous-lightbox
でインストール<script src="https://cdnjs.cloudflare.com/ajax/libs/luminous-lightbox/2.3.2/luminous.min.js"></script>
<a href="拡大画像"><img src="サムネイル"></a>
に対して以下を実行new Luminous(document.querySelector('a'))
LuminousGallery
を使用new LuminousGallery(document.querySelectorAll('a'))
Rails で sitemap_generator
を使って sitemap(sitemap.xml.gz
)を作成する方法にについて整理した。
実運用で使うであろう whenever
と組み合わせたバッチ処理についても合わせて整理した。
sitemap_generator
, whenever
を追加してインストール[bundle exec] rails sitemap:install
で config/sitemap.rb
を作成sitemap.xml.gz
に出力したい内容を記述[bundle exec] rails sitemap:refresh
で public/sitemap.xml.gz
の作成や更新[bundle exec] wheneverize
で config/schedule.rb
を作成rake 'sitemap:refresh'
)を記述[bundle exec] whenever --update-crontab
で cron ジョブの設定Laravel でネストした構造(リレーション)において、取得するカラムを絞りつつ Eager Load する方法についてまとめた。
:
の後に ,
区切りでカラムを列挙.
で繋げるwith
に渡す引数を分けて書くwith(['posts:title', 'posts.images:url'])
/events?areas=1,2,3
のような URL で検索などの処理を行う際に、良い感じにバリデーションする方法を調べた。
※なるべく自前で各値が DB の値と一致するかを検証したくないよね、というお話。
prepareForValidation
内でデータを変更すると幸せになれるgetValidatorInstance
でもいけるかも(試してない)Cordova の iOS ビルドなどで ios-deploy
を使っていて、以下のエラーが出た場合の対処方法。
1 | ... |
ちなみに、自分の環境ではビルド・デプロイまではできるが、Mac に繋いで Safari 経由でのデバッグができない(iOS デバイスを認識しない)という状態だった。
ios-deploy
をアンインストール→再インストール で解決rm ~/Library/Developer/Xcode/DerivedData/ios-deploy-*
mv
でリネームするのが良いnpm un -g ios-deploy
npm i -g ios-deploy
JavaScript で 16進数 ランダム文字列を簡単に生成する方法を調べた。
CDN を使う方法(chance.js)、npm からインストールする方法(crypto-random-string)についてまとめた。
chance.string({length: 8, pool: '0123456789abcdef'})
cryptoRandomString({length: 8})