Bootstrap の Modal を promisify して async/await で直列に書けるようにする

js から Bootstrap の Modal を表示してそのモーダル上での操作に応じてなにかしたいとき(典型的には確認ダイアログとか)、Modal を Promise として扱えるようにしておくと async/await で直列に書けて便利です。 const promisifyModal = (modal, param) =…

MySQL の行ベースレプリケーションで multi delete するとレプリケーションが止まる件

MySQL で行ベースレプリケーションしていて、特定の操作を行ったときにレプリケーションがエラーで止まる事象が発生しました。 そのときの調査のログや対応の方法のメモ。 原因調査 まず、レプリケーションのスレーブでレプリケーションの状態を見ました。 m…

Alpine Linux の php で CP932 な CSV をストリームフィルタを使って読む

tinc で Window 10 -> CentOS 7 な VPN を作る

tinc は Windows 10 でも使えるので、Window 10 -> CentOS 7 な VPN を試してみました。Window 側の作業は基本的に管理者として実行された cmd.exe で行っています。 サーバの設定 前回作業した CentOS 7 -> CentOS 7 な VPN のサーバ設定は基本的にそのまま…

tinc で CentOS 7 -> CentOS 7 な VPN を作る

tinc というものを使えば簡単に VPN ができるようなので試してみました。 クライアント/サーバ型で VPN 作ります。クライアント・サーバともに CentOS 7 です。VPN の端点は次の通り IP アドレスにします。 Server: 192.169.255.1 Client: 192.169.255.2 tin…

Cloudflare DNS + Docker + Let's Encrypt + Nginx で TLS->TLS なプロキシを作る

要するに次のことを行います。 Nginx で TLS->TLS なプロキシを作る TLS は Nginx でいったん切る 証明書は Let's Encrypt で取得する Nginx は http はリッスンさせないので DNS 認証を使う ドメインは Cloudflare で管理している ゾーンの委任やレコードの…

curl で相手が突然死すると無限に待ってシグナルでも死なない件

PHP

なんで今さら ZF1 やねんという話ですが、Zend_Http_Client_Adapter_Curl の timeout は接続のタイムアウトなので、Read/Write も含めたタイムアウトである request_timeout が未指定だと接続後に相手が突然死すると無限に待ちます。 ネットワーク経路のステ…

FLIP で要素の移動のアニメーション

Vue.js のチュートリアルを読んでいて FLIP という要素の移動のためのアニメーションの手法を知りました。 https://jp.vuejs.org/v2/guide/transitions.html https://aerotwist.com/blog/flip-your-animations/ 要するに・・ First. 要素の最初の状態を取得 …

CSS の attr がトグルボタンの ON/OFF でテキストを変えたいときに便利だった

CSS

HTML/CSS でチェックボックスを用いたトグルボタンをで実装しているとき、トグルの ON/OFF でテキストの文言も変えたいときは css だけでは難しいので js でやってましたが、css でも attr を使えば js 無しでできることを最近知りました。 次のように HTML …

Docker Desktop が重いのでリモートサーバの Docker で開発できるようにしてみた

Docker Desktop が重くて仕方ないのでリモートサーバの Docker へ unison で同期して開発できるようにしてみた。 Docker Remote API のセットアップ どこかのリモートサーバに普通に Docker をセットアップした後、Docker Remote API を有効にします。 まず…

AWS Certificate Manager Private Certificate Authority 素振り

AWS

AWS のマネージドなプライベート CA の AWS Certificate Manager Private Certificate Authority を素振りしたメモ。 費用 https://aws.amazon.com/jp/certificate-manager/pricing/ プライベート CA ごとに 400 USD の月額と、プライベート証明書を発行する…

Gitlab CI のアーティファクトをブランチやタグとジョブ名を指定して特定のファイルを取得

以下のような URL で、ブランチやタグとジョブ名を指定して最新のアーティファクトから特定のファイルを取得できます。 https://example.com/projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name https://example.com/<namespace>/<project>/-/jobs/artifacts/<ref>/r</ref></project></namespace>…

WSL のコマンドラインから Windows 10 の通知を送るメモ

WSL

トースト通知というの? いくつかツールを試してみたメモ。 Growl For Windows Windows 10 の通知ではなく独自の通知が実装されています。 Chocolatey でサクッとインストールできるかと思いきや、インストールに失敗します。 https://chocolatey.org/packag…

docker-compose で MySQL レプリケーション環境をサクッと用意する

本番環境は MySQL のマスターとリードレプリカのスレーブで構成されているものの、ローカル環境はシングル構成なこと、よくあります。 そういうとき、レプリケーション遅延が原因による不自然な表示・・不具合が生じることがあったりするので、docker-compos…

Gitlab Runner のジョブに Amazon ECR のイメージを使う

思うとことあって Qiita に移しました → https://qiita.com/ngyuki/items/719e877c52415e398148

PHP 製のデータベースのスキーマ定義を差分で適用するツール「dbdatool」

データベースのスキーマ定義の変更、いわゆるデータベースのマイグレーションついて、スキーマ定義の差分を SQL とかそれ用の DSL とかで作成し、リポジトリ管理してマイグレーションツールで実環境に適応するのが多いと思います。 この方法はわかりやすくて…

CloudWatch Agent を試す

AWS

CloudWatch の EC2 のメトリクスだとメモリ使用率やディスク使用率が取れないので別途 Amazon CloudWatch Monitoring Scripts でカスタムメトリクスとして取得したりしていましたが、今日日は CloudWatch Agent を使えばいいだろうので素振り。 残骸はこちら…

RancherOS で KVM+libvirt に固定IPで Docker ホストを作るメモ

KVM+libvirt な仮想化ホストに、ブリッジ I/F で固定IPな Docker ホストを RancherOS で作るメモ。 # RancherOS の ISO をダウンロード wget https://releases.rancher.com/os/latest/rancheros.iso # SSH鍵をダウンロード curl -s https://github.com/ngyuk…

boot2docker で KVM+libvirt に固定IPで docker ホストを作るメモ

KVM+libvirt な仮想化ホストに、ブリッジ I/F で固定IPな docker ホストを boot2docker で作る試行錯誤のメモ。 なお boot2docker は新しい Docker のリリースや kernel の更新以外では更新されないメンテナンスモードになっているようです。 userdata.tar …

Amazon EC2 Auto Scaling を Terraform で素振り

AWS

Amazon EC2 Auto Scaling を ユーザーガイド を読みながら Terraform で素振りしたメモ。残骸はこちら。 Launch Configuration と Launch Template Auto Scaling で起動する EC2 インスタンスを定義する方法は下記の複数があります。 Launch Configuration L…

Amazon Elastic Container Service for Kubernetes (EKS) を Terraform で素振り

少し前に EKS が Tokyo リージョンで使えるようになったので素振りしたメモ。残骸はこちら。 なお、てっきり EKS も Fargate が使えるものだと思っていたのですが、そうでもなかったので(将来的にはできるようになる?)、EC2 でワーカーノード作ってます。…

Amazon Elastic Container Service (ECS) を Terraform で素振り

AWS

ECS を Terraform で素振りしたメモ。Fargate 前提です。残骸はこちら。 Fargate の費用 ECS は EC2 でクラスタを作るか Fargate かを選択できます。Fargate の方がマネージドなので楽ですが割高です。 ざっくりと EC2 の t3 インスタンスを比べてみます。Fa…

virt-builder でサクッと作ったゲストが好みじゃなかった件

だいぶ前に Qiita で virt-builder でゲストを作って virt-resize でリサイズして virt-customize でカスタマイズ という記事を書いていて。 virt-builder ふむふむ便利そう、だがしかしなんか気に入らないので普通にゲスト作るときはやっぱ Kickstart だわ …

MySQL で年月(yyyy/mm)のデータ型と PERIOD_ADD/DIFF

いわゆる請求データみたいなやつで請求年月のような yyyy/mm の値を表すために DATE 側を使うか整数型で yyyymm みたいにするか。 DATE 型で日付を 1 固定で持っていたとして、例えば請求年月が 2018/01 という条件で検索するとき 請求年月 = 2018/01/01 だ…

Doctrine や Eloquent や CakePHP はいかにして差分更新を実現しているか

PHP

Doctrine や Eloquent や CakePHP などの ORM でDBからフェッチしたエンティティの一部の属性だけ変更して保存したとき、テーブルの行全体が更新されるわけではなく、変更した一部の属性だけが更新されますが、それがどう実装されているか気になったので調べ…

MRP(Meal RePlacement:食事代替品)を食してみたメモ

MRP(Meal RePlacement:食事代替品)をいくつか食してみたメモ。 COMP POWDER COMP GUMI COMP DRINK BASE PASTA quick Myoplex (EAS) RAW MEAL (Garden of Life) 自宅での食事ではこの類のものは食しておらず、職場で昼飯や晩飯を食べるときだけ食していま…

監視ツールはいかにしてカウンター値のチェックを行なうのか

1年ぐらい前に諸事情により調べたメモ。 監視ツールでリソース情報とかのメトリクスに対して、○○を超えたら、みたいな閾値のチェックを設ける場合、元の値がディスク使用率とかロードアベレージのようなそのままの値が取れるものなら良いのですが(いわゆる…

MySQL Group Replication 素振り

公式のドキュメントを読みながら素振りしました。 MySQL :: MySQL 8.0 Reference Manual :: 18 Group Replication グループレプリケーションでは、グループのメンバシップ管理、ノードの障害検出、追加ノードの同期、などが自動で行われます。一方でアプリケ…

mysqldump で default-character-set とか hex-blob とか

とある MySQL のダンプファイルをインポートしようとしたところ、次のような警告が表示されました。 Warning (Code 1300): Invalid utf8 character string: 'FFFFFF' インポートに失敗しているわけではないですがやや気持ち悪いです。 原因 blob とかのバイ…

MySQL の GTID レプリを replicate-do-db でフィルタすると欠番になる?

スレーブ側で--replicate-do-や--replicate-ignore-などのルールを使ってフィルタリングをすると、GTIDに欠番ができて、連番が連続しなくなるため、SHOW SLAVE STATUSの出力が大変なことになってしまう。GTIDを用いるときは、フィルタリングしないのほうが無…