[MySQL] アップデート時にGPGキーのエラーで停止してしまう場合

小ネタです。 踏み台サーバであるAmazon Linux2にMySQLのクライアントを入れRDSを操作しているのですが、ある日yum updateをしたら途中で停止してしまいました。

エラーメッセージを眺めるとMySQLをアップデートする際にGPGが原因でコケているっぽい。

$ sudo yum update
(中略)
warning: /var/cache/yum/x86_64/2/mysql57-community/packages/mysql-community-libs-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.

 Failing package is: mysql-community-libs-5.7.37-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

RPMyumではパッケージが改ざんされているか検証するためにGPGキーを利用していることがあるのですが、このGPGキーには有効期限が設定されている関係で一定期間が経つと検証が行えなくなりインストールが停止してしまいます。パッケージを作成する際にGPGキーを別の物に変更した場合も同様の現象になります。

続きを読む

[JavaScript] フォーム部品に値をセットする(まとめ)

前回に引き続きフォーム部品のまとめです。今回はプログラム側から値をセットしたり選択状態をコントロールするお話です。

前回のフォームに入力された値を取得したいという方は以下をどうぞ。 blog.katsubemakito.net

続きを読む

[JavaScript] フォーム部品の入力値を取得する(まとめ)

Webサービスを作る際に必ずと言ってよいほど利用するフォーム部品ですが、ユーザーに入力された値を取得する際にお恥ずかしながら自分でもたまにど忘れすることがあるのと、新旧の情報がごっちゃになっているため脳内の整理も兼ねてまとめておきます。

フォーム部品に値をセットしたり、選択状態をコントロールしたい場合は以下をどうぞ。 blog.katsubemakito.net

続きを読む

ログイン画面にreCAPTCHA v3を導入する

ユーザー登録やログインなどで不安になるのが「ボット」の存在です。

検索エンジンクローラーなど悪意の無いものであればよいのですが、機械的に大量のユーザーを作成されたり、悪意のある人が第三者のアカウントをゲットしようとプログラムを組んで攻めてくる可能性が有名なサービスになればなるほど高くなります。知名度の低いサービスであっても決済情報が保存されているような場合は狙われることもあるでしょう。

そんな心配に比較的かんたんに立ち向かえるのがGoogle社が提供する「reCAPTCHA」です。「私はロボットではありません」のチェックボックスを見かけたことがある方も多いと思いますが、最新版のv3ではこのチェックも不要になり導入のハードルが非常に下がりました。 developers.google.com

今回はこのreCAPTCHAをログインする仕組みに導入するという設定でまとめていきます。

続きを読む

[HTML5] 異なるオリジンのWebStorageの内容を取得する

WebStorage(localStorageとsessionStorage)は同一オリジン内のデータしか読み書きできません。名前空間を分けることでデータの衝突を防いだり、大切なデータを他のサイトから覗き見られることから守ってくれています。

しかしWebサービスを開発していると、サブドメイン間などでWebStorage内のデータを共有したいことがあります。そんなときに使うのが window.postMessage。指定したオリジンにだけWebStorage内のデータを渡したり、逆にデータを受け取ってWebStorage内に保存するといったドメインをまたいでの通信が可能になります。

同一オリジンとは「スキーム(http)」「ホスト(example.com)」「ポート番号(443)」のすべてが同じ場合を言います。詳しくはこちらをどうぞ

続きを読む

「いらすとや」さんのトランプ画像をまとめてダウンロードする

小ネタです。

いらすとや」さんのトランプ画像を使わせていただこうとしたら、1枚ずつ保存しなければならないようで心が折れそうになったため一括でダウンロードできるシェルスクリプトを組みました。……組んだのですが、URLのハッシュ値の法則性を解析するのが面倒だったので、結局すべてのURLのリストを作ることにw

せっかくなので別の方も利用されるかもしれないと思いコードを置いておきますね。悪用厳禁でお願いしますw

続きを読む

[AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js

CloudFrontで参照しているオリジンをLambda@Edgeで変更してみます。

今回はhttp://foo.example.comでアクセスされたら、CloudFrontがオリジンhttp://example.com/foo/へリクエストする設定をします。

正直なところあまり需要は無いと思いますがw この設定が生きてくるのは大量に同様の設定をしなければならない時ですね。設定が必要なドメインが2〜3個であればCloudFront側でディストリビューションを必要なだけ作成する方がわかりやすいです。

というわけで先ほどの例の「foo」の部分はどのような文字列が来ても対応可能なよう設定していきます。

続きを読む

[JavaScript] 数値がゾロ目か判定する

小ネタです。

指定された数値がゾロ目かどうかを判定する正規表現を試してみます。説明するまでも無いと思いますが「1111」「8888」など同じ数だけで構成された数値をゾロ目と言います。

結論から言うと以下の通り。

/**
 * ゾロ目判定
 *
 * @param {number} num
 * @returns {boolean}
 */
function isZorome(num){
  return String(num).match(/^([0-9])\1+$/) !== null
}
続きを読む