window.openerがnullになってしまう

背景と課題 元ウィンドウから、target="_blank" 属性を利用して新ウィンドウを開く 新ウィンドウの window.opener.location.reload(true); という処理で元ウィンドウをリロードする という処理がある日動かなくなり、次のようなエラーがConsoleに出ていた。 …

Laravelのキューで利用するインターフェイスやトレイトについて

Laravelで非同期Jobのサンプルを見ると、色々と登場人物が出てきてよくわからないので整理する。 サンプルで出てくるコードはLaravel7あたりです。

LaravelのCollectionで複数のキーをもとに重複を排除する

公式でも記載されていますが、分かりづらいのでメモ。 下記の例では、brand + type の組み合わせに対して最初のアイテムだけを含む新しいコレクションを作成します。 $collection = collect([ ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'…

Reactでデバッグ用にオブジェクトを表示する

JSONとして pre タグで表示すると良き。 <pre>{JSON.stringify(object, null, 2)}</pre> 第3引数を 2 にするのがコツ

Railsのレールに乗ることの重要性

Railsのレールに乗ることの重要性を再認識し、新しいアプリではMySQLを採用することに決めました。以前作成したレガシーのRailsアプリを再構築するためにMongoDBをデータベースとして採用しようとしましたが、以下の理由により、MySQLを選択することにしまし…

aws-sdk-railsでSQSをActive Jobのアダプターとして使っていたら、DBのPoolを消費しまくっていた件

aws-sdk-railsでSQSをActive Jobのアダプターとして使っていたら、 ActiveRecord::ConnectionTimeoutError (could not obtain a connection from the pool within 5.000 seconds (waited 5.000 seconds); all pooled connections were in use): というように…

目標はSMARTGoalに設定する

プロジェクトで目標を設定する際、次の頭文字をとってSMARTなGoalにすることを心がける。 Specific(具体的な) Measurable(測定可能な) Achievable(達成可能な) Result oriented(結果志向な) Time bound(時間内にできる)

Active StorageのPDFプレビューでUnrepresentableErrorが出る

ファイルアップロード機能に関して、ActiveStorage::UnrepresentableErrorが出ていた。調べてみるとPDFのプレビュー画像生成が失敗している模様。 [547a3405-8d8d-452a-ab91-a7ce23e920f7] ActionView::Template::Error (ActiveStorage::UnrepresentableErro…

クッキーを使った認証の流れについて

Railsにおける認証は、deviseというライブラリで簡単に実装できるため、曖昧な理解をしてきた。これを機に整理する。 多くのWebアプリケーションには何らかの認証システムがあります。ユーザーがユーザー名とパスワードを入力すると、Webアプリケーションは…

O365の条件付アクセスで、レガシー認証ブロック

レガシー認証をブロックする理由 IDとパスワードによる認証のみで、多要素認証ができないため。 MSがあと数年以内にレガシー認証によるアクセスを禁止しようとしているから。 ちなみにレガシー認証の例としては、POP、SMTP、IMAPなど。メールプロトコルだけ…

Win10端末でAzureADから抜けるのに手こずった

一台のパソコンにつき、一つの Azure AD にしか参加できないことを知らずに遊んでいたら、本命の Azure AD に参加できなくなった。 Windows 10の設定画面から解除しようと思ったけどうまくできなかった。次の方法で合ってるかわかんないけど とりあえずメモ…

なりすましメールを防止する(Office365 DMARC編)

DMARCとは なりすましメールの防止技術。 なりすましメールを受信サーバが検知した場合、DNSのDMARCレコードを見て、その後の対応を判断するプロトコル。 設定方法 自身のDNSレコードにTXTレコードを追加する。 Office365側では特に設定は必要ない模様。 DMA…

なりすましメールを防止する(Office365 DKIM編)

DKIMとは なりすましメールを防止する技術。 送信元のメールサーバーが、秘密鍵から生成した署名を挿入する。 受信のメールサーバーが、DNSから取得した公開鍵によって署名を検証する。 もし、送信元のメールサーバーとDNSが異なれば(なりすましメール)で…

rails dbconsoleでDBサーバーに接続する

今更感があるけど、rails dbconsole を利用すると、Railsで設定しているDBに、接続できるんですね。 $ rails dbconsole Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quick…

Railsのログをlogrotateする

Railsの production.log などのログは、際限なく容量が増えるため、古いものから削除するなどの必要があります。これをログのローテーションと言います。 Linuxではlogrotateを使うことが一般的ですが、ローテーション後に、アプリケーションサーバーが新た…

MySQLの「0000-00-00 00:00:00」のデータを更新させたい。

MySQLのDATE/DATETIME型には、利用しないほうが良い「0000-00-00 00:00:00」という値がある。 詳細は他の方に譲るとして、今回はこのあたりをUPDATEしたいと思う。 mysql> UPDATE buildings set created_at = '2004-01-29 00:00:00' where created_at = '000…

マージ済みのリモートブランチを一括削除

git

長年Gitを利用していると、消し忘れたブランチが増えてくるため、一括削除するためのコマンドを紹介する。 マージ済みのリモートブランチを一括削除する $ git branch -r --merged マージ先ブランチ名 | egrep -v "(^\*|除外するブランチ名)" | sed -e 's/or…

ImageMagicによる画像一括変換

フォルダ内にある画像の一括変換。縦横比を維持しつつ、長辺300pxに縮小する。 mogrify -resize 300x300 *

SeleniumIDEのメモ

SeleniumIDEのメモを張り付けて置く。個人的なメモ。 SeleniumIDEメモ

UbuntuでMacのopenみたいなコマンドを利用する

Macで、open . とかでよくFinderを開いていた。xdg-open コマンドが該当するようだ。 .bash_profile に次のように記載する。 alias open='xdg-open' URLを指定すればブラウザも開けるのかい。 open http://google.co.jp

Amazonで電子出版した

親父(元教員)が自分の書いた論文を電子出版したいと言ってきたので、父親が作成したWordファイルを基に EPUB に変換して電子出版した。 EPUB の実態はHTML+CSSだったので、簡単に変換することが出来た。 大きな流れ WordファイルからMarkdownへの変換 Mar…

Amazon CloudFrontでACM証明書を利用する際には、リージョンに注意

で ACM 証明書を使用するには、米国東部(バージニア北部) リージョンで証明書をリクエストまたはインポートする必要があります。 docs.aws.amazon.com

epubcheckで「mimetypeファイルエントリが存在しないか、アーカイブの先頭以外の場所に存在しています.」

epubcheckというEpub向けのW3C製の構文チェッカーがあります。 実行するとありがたい指摘をしてくれるのですが、次のエラーだけは原因が分かりませんでした。 $ java -jar epubcheck.jar ~/tmp/main.epub EPUB version 3.2 のルールを使って検証します. ERRO…

PHPのマジックメソッド

php

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() および __debugInfo() があるみたい。 https://www.php.net/manual/ja/lang…

MySQLでテストデータを大量に生成する方法

各種FWのテストデータ生成ライブラリを使うのもいいけど、この方法もよい。 qiita.com

MySQLにパスワード無しでログインする

ただし、絶対に開発環境などセキュリティが担保されているところで利用してね。 my.cnfに次のように設定する。 [mysqld] skip-grant-tables sudo systemctl restart mysql などでMySQLを再起動させる。

RSS出力していないサイトのRSSを生成するサービス

rss

feed43.com

redis-cliが無くてもRedisの中身を見る

curlで出来る。 $ curl telnet://cache.test.local:6379 keys * *1 $51 foobar_cache:yRjsFE6BL0T3Dn54lxyzJsUathFmyrA5c9it6NqQ

MySQL8でユーザーを作成して全ての権限を付与する

バージョン間の差異なのかうまくいかないことが多いのでまとめておく。 mysql> create user 'your-user'@'%' identified by 'your-password'; Query OK, 0 rows affected (0.01 sec) mysql> create database `your-db-name`; Query OK, 1 row affected (0.01…

Ant Design を利用するときの日付ライブラリは、moment.jsが良さそう

js

Ant DesignというVueとReactのUIフレームワークを利用している。 色々なUIパーツがあって便利なのだが、DatePickerに日付が指定できない。 defaultValue の説明読んでいたら、moment型の指定になっている。dayjsを使っている俺死亡! dayjsやdate-fnsを利用…