<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Blog</title><description>AWS・Web・スマホアプリ周りのハマりどころを調べて残す技術メモ</description><link>https://blog.afamung.dev/</link><item><title>CloudFormationスタックがACM証明書のDNS検証待ちで12時間後に失敗した</title><link>https://blog.afamung.dev/articles/acm-certificate-dns-validation-cloudformation-12-hour-timeout/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/acm-certificate-dns-validation-cloudformation-12-hour-timeout/</guid><description>Hosted ZoneとACM証明書を同じスタックに入れてDNS検証待ちのまま放置したら、約12時間後にCREATE_FAILEDでロールバックされた。原因の切り分けと、混同しやすいWaitConditionの話。</description><pubDate>Mon, 12 Dec 2022 00:00:00 GMT</pubDate></item><item><title>生成AIで画像の明るさを調整するとロゴが崩れるのはなぜか</title><link>https://blog.afamung.dev/articles/ai-image-brightness-edit-logo-collapse-diffusion-model/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ai-image-brightness-edit-logo-collapse-diffusion-model/</guid><description>某食品メーカーの投稿画像で、生成AIによる明るさ調整のせいでロゴが崩れて謝罪する事例が出た。なぜ軽い調整のはずが文字やロゴまで壊れるのか、拡散モデルの仕組みから整理する。</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ALBはバックエンド証明書を検証しない、が公式仕様だった</title><link>https://blog.afamung.dev/articles/alb-does-not-validate-backend-cert/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/alb-does-not-validate-backend-cert/</guid><description>ALB↔ECS Fargate間をHTTPS化する際、自己署名証明書がそのまま使えるか確認した。ALBがターゲット証明書のチェーン検証をしないことはAWS公式ドキュメントに明記されている。</description><pubDate>Thu, 07 Aug 2025 00:00:00 GMT</pubDate></item><item><title>ALB配下のEC2でnginxって要る？フレームワーク別に見てみた</title><link>https://blog.afamung.dev/articles/alb-ec2-reverse-proxy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/alb-ec2-reverse-proxy/</guid><description>ALB → EC2のWebアプリ構成で、リバースプロキシ（nginx等）を挟むべきかどうか。判断基準と、主要フレームワークごとの直結可否リストをまとめた。</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>ALB配下のhttpdでHTTPS判定がずれる、SetEnvIfで直す</title><link>https://blog.afamung.dev/articles/alb-httpd-https-detection-setenvif/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/alb-httpd-https-detection-setenvif/</guid><description>ALBやCloudFrontの後ろにApacheを置く構成だと、Apache自身は素のHTTPで通信を受けているのでHTTPS判定がずれる。.htaccessのSetEnvIfで補正する方法をメモ。</description><pubDate>Fri, 29 Oct 2021 00:00:00 GMT</pubDate></item><item><title>Amazon Linux 2でOSバージョンを確認する3つのコマンド</title><link>https://blog.afamung.dev/articles/amazon-linux-2-os-version-check/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/amazon-linux-2-os-version-check/</guid><description>/etc/system-release、/etc/os-release、/etc/image-idの3つのファイルで、Amazon Linux 2のバージョンやAMIの詳細情報を確認できる。用途によって見るファイルを変えるとよさそう。</description><pubDate>Sat, 01 Feb 2020 00:00:00 GMT</pubDate></item><item><title>Amazon Linux 2にamazon-linux-extrasでPostgreSQL 11を入れる</title><link>https://blog.afamung.dev/articles/amazon-linux-2-postgresql11-amazon-linux-extras/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/amazon-linux-2-postgresql11-amazon-linux-extras/</guid><description>Amazon Linux 2でyumから直接postgresql11は入らず、amazon-linux-extrasでトピックを有効化してからpostgresqlクライアントパッケージをインストールする手順。</description><pubDate>Mon, 10 Feb 2020 00:00:00 GMT</pubDate></item><item><title>Androidのバッテリー最適化を無効化する権限、実装は簡単だがPlayポリシーでほぼ使えない</title><link>https://blog.afamung.dev/articles/android-disable-battery-optimization-play-policy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-disable-battery-optimization-play-policy/</guid><description>REQUEST_IGNORE_BATTERY_OPTIMIZATIONSでバッテリー最適化を無効化する実装自体は数行で終わるが、Google Playのポリシーで使用条件が厳しく絞られている。実装内容とポリシー上の制約、代替手段について整理した。</description><pubDate>Mon, 01 Jul 2024 00:00:00 GMT</pubDate></item><item><title>Androidのフォアグラウンドサービス起動、5秒以内にstartForeground()を呼ばないとANRになる</title><link>https://blog.afamung.dev/articles/android-foreground-service-5-second-limit/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-foreground-service-5-second-limit/</guid><description>startForegroundService()を呼んでから5秒以内にstartForeground()を呼ばないとForegroundServiceDidNotStartInTimeExceptionでクラッシュする。Android 12以降の通知表示タイミングの変更点も含めて整理した。</description><pubDate>Tue, 25 Jun 2024 00:00:00 GMT</pubDate></item><item><title>ImageViewの幅をmatch_parentにしてもアスペクト比を保つ方法</title><link>https://blog.afamung.dev/articles/android-imageview-adjustviewbounds-aspect-ratio/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-imageview-adjustviewbounds-aspect-ratio/</guid><description>ImageViewでadjustViewBoundsをtrueにすると、match_parentで広げた幅に応じて高さが自動計算され、アスペクト比を保ったまま表示できる。scaleTypeやmaxWidth/maxHeightとの組み合わせで気をつける点も書く。</description><pubDate>Tue, 02 Feb 2016 00:00:00 GMT</pubDate></item><item><title>Android ImageViewのscaleTypeまとめ</title><link>https://blog.afamung.dev/articles/android-imageview-scaletype/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-imageview-scaletype/</guid><description>ImageViewのscaleType各値の挙動を一覧化。centerやcenterCropなどの違いと、指定なし時のデフォルト値について整理した。</description><pubDate>Fri, 04 May 2018 00:00:00 GMT</pubDate></item><item><title>Location.distanceTo()はWGS84楕円体上の近似距離を計算する</title><link>https://blog.afamung.dev/articles/android-location-distanceto-wgs84-not-2d-plane/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-location-distanceto-wgs84-not-2d-plane/</guid><description>AndroidのLocation.distanceTo()はWGS84楕円体をベースに2点間の近似距離を計算する。高度差は含まれないので、必要なら別途計算が要る。</description><pubDate>Tue, 13 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Android の「Muting recently noisy」ログは通知チャンネルの話じゃない</title><link>https://blog.afamung.dev/articles/android-muting-recently-noisy-notification-key/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-muting-recently-noisy-notification-key/</guid><description>Logcatに出る `Muting recently noisy 0|pkg|id|tag|uid` の中身を確認した。通知チャンネルIDではなく、個別の通知を識別するキー。</description><pubDate>Tue, 02 Jul 2024 00:00:00 GMT</pubDate></item><item><title>通知タップでActivityが再描画される原因、PendingIntentのrequestCode被りだった</title><link>https://blog.afamung.dev/articles/android-pendingintent-notification-tap-redraw/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-pendingintent-notification-tap-redraw/</guid><description>サービス経由の通知は再描画されないのに、別経路のローカル通知だけ画面が再描画される問題を調査。原因はPendingIntentの同一性判定にあった。</description><pubDate>Wed, 04 Dec 2024 00:00:00 GMT</pubDate></item><item><title>startForegroundService()後にstartForeground()を呼ばないとクラッシュする</title><link>https://blog.afamung.dev/articles/android-startforegroundservice-crash/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-startforegroundservice-crash/</guid><description>Context.startForegroundService()で起動したサービスが5秒以内にstartForeground()を呼ばずクラッシュした件。Android 8.0以降の制限と対処法をまとめた。</description><pubDate>Fri, 28 Aug 2020 00:00:00 GMT</pubDate></item><item><title>Android StudioのSDKライセンス未承認エラー、macOSでの直し方</title><link>https://blog.afamung.dev/articles/android-studio-sdk-license-not-accepted-macos/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-studio-sdk-license-not-accepted-macos/</guid><description>platforms;android-27とbuild-tools;27.0.3のライセンスが未承認でビルドできなかったので、sdkmanagerで一括承認して解消した。</description><pubDate>Thu, 14 Jan 2021 00:00:00 GMT</pubDate></item><item><title>com.android.supportのバージョン差異をresolutionStrategyで強制的に揃える</title><link>https://blog.afamung.dev/articles/android-support-library-version-resolutionstrategy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-support-library-version-resolutionstrategy/</guid><description>複数ライブラリが異なるバージョンのcom.android.support系artifactを引っ張ってきてビルドが通らなかったので、Gradleのresolutionstrategy.eachDependencyで強制的にバージョンを揃えた。multidex系だけは対象から外す必要があった。</description><pubDate>Mon, 12 Jun 2017 00:00:00 GMT</pubDate></item><item><title>依存ライブラリ経由でREAD_PHONE_STATE権限が紛れ込んでた、tools:node=&quot;remove&quot;で消せる</title><link>https://blog.afamung.dev/articles/android-tools-node-remove-read-phone-state/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/android-tools-node-remove-read-phone-state/</guid><description>自分では使っていないREAD_PHONE_STATE権限が、依存ライブラリのManifest経由でマージ後のAndroidManifestに混入していた。tools:node=&quot;remove&quot;で明示的に除外できるが、ライブラリ側の内部実装次第では動作に影響する可能性がある。</description><pubDate>Mon, 19 Jun 2017 00:00:00 GMT</pubDate></item><item><title>Apacheでメンテナンスモードを作る</title><link>https://blog.afamung.dev/articles/apache-maintenance-mode-with-mod-rewrite/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/apache-maintenance-mode-with-mod-rewrite/</guid><description>mod_rewriteとErrorDocumentで503を返すメンテナンスモードの作り方。Header setがエラーレスポンスに効かない点とRetry-Afterの指定方法だけ押さえれば十分動く。</description><pubDate>Sun, 12 Jan 2014 00:00:00 GMT</pubDate></item><item><title>API GatewayのGETメソッド、bodyの挙動は統合タイプで変わる</title><link>https://blog.afamung.dev/articles/api-gateway-get-method-body-behavior/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/api-gateway-get-method-body-behavior/</guid><description>API GatewayのGETメソッドにbodyを付けて送ると、Lambdaプロキシ統合ではそのまま渡り、HTTP統合・VPC Link統合では既定でドロップされる。両者の違いと回避策を整理した。</description><pubDate>Fri, 26 Apr 2024 00:00:00 GMT</pubDate></item><item><title>API GatewayのVTLで$util.toJson()が配列要素に対して空文字列を返す</title><link>https://blog.afamung.dev/articles/api-gateway-vtl-util-tojson-empty-firehose/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/api-gateway-vtl-util-tojson-empty-firehose/</guid><description>API GatewayとKinesis Firehoseを直接統合してJSON配列を1件ずつPutRecordBatchする構成で、foreach内の$util.toJson($elem)が空になった。$input.json()でインデックス指定して取り直すことで回避できた。</description><pubDate>Tue, 19 Mar 2024 00:00:00 GMT</pubDate></item><item><title>APIレスポンスのルートは配列じゃなくオブジェクトにする</title><link>https://blog.afamung.dev/articles/api-response-root-object-not-array/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/api-response-root-object-not-array/</guid><description>JSONのルートを配列で返すと将来メタ情報やエラー情報を足せなくなる。data配下にラップする構成と、リストが複数ある場合のキー分割について整理した。</description><pubDate>Wed, 25 Mar 2020 00:00:00 GMT</pubDate></item><item><title>Athenaの前方一致検索、LIKEよりstarts_with()の方がいい</title><link>https://blog.afamung.dev/articles/athena-like-prefix-vs-starts-with/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/athena-like-prefix-vs-starts-with/</guid><description>AthenaでURIパスの前方一致検索をする方法を調べた。LIKEの%でもできるけど、starts_with()の方が意図が明確でワイルドカード誤爆もない。</description><pubDate>Wed, 16 Apr 2025 00:00:00 GMT</pubDate></item><item><title>AthenaのTABLE_NOT_FOUND、Webコンソールは通るのにLambdaだけ失敗する</title><link>https://blog.afamung.dev/articles/athena-table-not-found-lambda-glue-permission/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/athena-table-not-found-lambda-glue-permission/</guid><description>Glueテーブルは存在するのに、Lambda(Node.js)からStartQueryExecutionを叩いたときだけTABLE_NOT_FOUNDが返ってきた。原因はLambda実行ロールのGlue Data Catalog権限不足だった。</description><pubDate>Mon, 30 Sep 2024 00:00:00 GMT</pubDate></item><item><title>Auroraのbacking-upステータス、一時停止からの再開で毎回出るが根拠は公式ドキュメントにない</title><link>https://blog.afamung.dev/articles/aurora-backing-up-status-after-resume/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aurora-backing-up-status-after-resume/</guid><description>RDS Auroraクラスターを一時停止から起動すると毎回backing-upになる件を調べた。挙動自体は報告例が多いが、原因を明確に説明した公式ドキュメントは見つからなかった。</description><pubDate>Fri, 23 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Auroraの負荷検証、S3 ReplicationでFirehose出力を複製するだけで足りた</title><link>https://blog.afamung.dev/articles/aurora-load-test-s3-replication/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aurora-load-test-s3-replication/</guid><description>Firehose→S3→LambdaのパイプラインをS3 Replicationで検証環境に複製し、Aurora単体の負荷検証を本番相当データで行う方法。API GatewayやFirehoseの設定変更は不要だった。</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Aurora MySQLはALTER SYSTEM CRASHでインスタンスを強制クラッシュできる</title><link>https://blog.afamung.dev/articles/aurora-mysql-alter-system-crash-fault-injection/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aurora-mysql-alter-system-crash-fault-injection/</guid><description>Aurora MySQL互換のフォルトインジェクションクエリを調べた。ALTER SYSTEM CRASHでINSTANCE/DISPATCHER/NODEを指定すると、フェイルオーバーを伴わずにインスタンスだけを落とせるらしい。</description><pubDate>Wed, 11 May 2022 00:00:00 GMT</pubDate></item><item><title>Aurora PostgreSQLのIOコストが総額の86%だったのでI/O-Optimizedを検討した</title><link>https://blog.afamung.dev/articles/aurora-postgresql-io-optimized-cost-check/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aurora-postgresql-io-optimized-cost-check/</guid><description>db.r6g.xlargeのAurora PostgreSQLで前月のIO課金が総額の86%を占めていた。25%を超えたらI/O-Optimizedという目安に対して、料金構成やパフォーマンス面も含めてどう判断したかのメモ。</description><pubDate>Wed, 30 Oct 2024 00:00:00 GMT</pubDate></item><item><title>Auroraクエリエディタでsearch_pathを設定してもcurrent_schema()がnullになる</title><link>https://blog.afamung.dev/articles/aurora-query-editor-search-path-autocommit/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aurora-query-editor-search-path-autocommit/</guid><description>PostgreSQL(Aurora)のクエリエディタでSET search_pathしてもcurrent_schema()がnullのまま。原因はクエリエディタのオートコミットモードでセッション設定が保持されないことだった。</description><pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate></item><item><title>Aurora Serverless v2、ReaderをCDKで足さないとスケールアウトはしない</title><link>https://blog.afamung.dev/articles/aurora-serverless-v2-reader-scale-out-not-automatic/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aurora-serverless-v2-reader-scale-out-not-automatic/</guid><description>Writerだけでも動くけど、Reader追加は基本手動。ACUのスケールアップと勘違いしやすいので整理した。</description><pubDate>Thu, 14 Aug 2025 00:00:00 GMT</pubDate></item><item><title>AWS CDK(v1)のworkshopをやってみた</title><link>https://blog.afamung.dev/articles/aws-cdk-v1-workshop-sqs-sns/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-cdk-v1-workshop-sqs-sns/</guid><description>cdk initでSQSとSNSサブスクリプションを組む最小構成を試した。生成されるファイル構成とcdk synthの出力を確認した記録。</description><pubDate>Wed, 01 May 2019 00:00:00 GMT</pubDate></item><item><title>AWS CLI v1のバンドルインストーラで特定バージョンを入れる</title><link>https://blog.afamung.dev/articles/aws-cli-v1-bundled-installer/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-cli-v1-bundled-installer/</guid><description>古い環境でAWS CLI v1を入れる必要があったので、公式のバンドルインストーラ手順を確認した。curl→unzip→installの3ステップで、バージョン指定も可能。</description><pubDate>Thu, 18 Aug 2022 00:00:00 GMT</pubDate></item><item><title>AwsCustomResourceのonUpdateでonCreateの物理IDを直接使う方法</title><link>https://blog.afamung.dev/articles/aws-custom-resource-physical-resource-id-reference/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-custom-resource-physical-resource-id-reference/</guid><description>AwsCustomResourceでonCreateの物理IDをonUpdateのパラメータに渡すには、別リソースに分けなくてもPhysicalResourceIdReferenceで解決できる。</description><pubDate>Tue, 10 Sep 2024 00:00:00 GMT</pubDate></item><item><title>送信元IPでIAMアクションを拒否する、NotIpAddressの書き方</title><link>https://blog.afamung.dev/articles/aws-iam-deny-by-source-ip/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iam-deny-by-source-ip/</guid><description>IAMポリシーでaws:SourceIpをNotIpAddressで使って社内IP以外からのアクションを拒否する例。Denyだけでは何も許可されない点と、負の条件の挙動に注意。</description><pubDate>Mon, 12 Aug 2019 00:00:00 GMT</pubDate></item><item><title>IAMユーザー名の変更はコンソールからできない、CLI必須</title><link>https://blog.afamung.dev/articles/aws-iam-user-rename-cli-only/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iam-user-rename-cli-only/</guid><description>IAMユーザーの名前を変えようとしたらWebコンソールにその項目がなかった。CLIのupdate-userに--new-user-nameを渡せば変更できる。</description><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate></item><item><title>iot-data-atsのatsはAmazon Trust Servicesだった</title><link>https://blog.afamung.dev/articles/aws-iot-ats-amazon-trust-services/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-ats-amazon-trust-services/</guid><description>AWS IoTまわりの命名で出てきた「ats」の意味を調べた。テレメトリ系の略称かと思ったら、証明書の署名元を表すAmazon Trust Servicesのことだった。</description><pubDate>Sun, 05 Oct 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoT Core Basic Ingestの料金、0.42ドルじゃなくて完全無料だった</title><link>https://blog.afamung.dev/articles/aws-iot-basic-ingest-free-not-discounted/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-basic-ingest-free-not-discounted/</guid><description>Basic Ingestは通常のブローカー経由より58%安いという回答が来たけど、公式ドキュメントを見たら課金対象外(0円)だった。</description><pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoT発行のX.509証明書、有効期限は一律2049年12月31日だった</title><link>https://blog.afamung.dev/articles/aws-iot-certificate-expiry-2049/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-certificate-expiry-2049/</guid><description>AWS IoT Coreの「AWS IoT generated」なX.509証明書はデフォルト1年ではなく、作成日に関わらず2049年12月31日固定で失効する。自分でCA署名する場合の期限にも公式な上限の記載はなかった。</description><pubDate>Thu, 21 Nov 2024 00:00:00 GMT</pubDate></item><item><title>AWS IoT CoreはCBORペイロードを解釈しない、でも通信量は減る</title><link>https://blog.afamung.dev/articles/aws-iot-core-mqtt-cbor-payload-size/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-core-mqtt-cbor-payload-size/</guid><description>MQTT v3でCBORペイロードを送るとAWS IoT Coreはただのバイナリとして中継するだけだった。でもそれは通信量削減が意味ないという話ではない、というのを整理した。</description><pubDate>Fri, 20 Jun 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoT Core、証明書もIAMも使わずJWTだけで繋ぐカスタム認証の仕組み</title><link>https://blog.afamung.dev/articles/aws-iot-core-mqtt-websocket-jwt-custom-auth/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-core-mqtt-websocket-jwt-custom-auth/</guid><description>モバイルアプリのMQTT over WebSocket接続をAPIログイン後のJWTで認証したい場合、AWS IoT CoreのCustom Authorizerで実現できる。仕組みと実装時にハマりそうな点を整理した。</description><pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoT Coreのトピック、8階層までしか通らない</title><link>https://blog.afamung.dev/articles/aws-iot-core-topic-8-levels-limit/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-core-topic-8-levels-limit/</guid><description>MQTTトピックの階層設計をしてたら9階層で弾かれた。実質8階層までという制限があるらしく、v1の位置と命名の重複を見直して収めた話。</description><pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoTの証明書発行、CSRのCNは実は必須じゃない</title><link>https://blog.afamung.dev/articles/aws-iot-csr-subject-cn-not-required/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-csr-subject-cn-not-required/</guid><description>CreateCertificateFromCsrが検証してるのは公開鍵の要件だけで、Subject（CN/O/OUなど）は一切見ていない。慣例と要件を切り分けて整理した。</description><pubDate>Thu, 10 Jul 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoTポリシーの`+`と`#`はワイルドカードとして機能しない</title><link>https://blog.afamung.dev/articles/aws-iot-policy-wildcard-plus-sharp/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-policy-wildcard-plus-sharp/</guid><description>AWS IoTポリシーのResourceで`+`や`#`はただの文字列として扱われる。ワイルドカードは`*`と`?`を使う必要があり、UUIDのような固定長の文字列は`?`を並べることで桁数だけ固定できる。</description><pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoT RuleでBase64デコードしても、Subscribeしてるクライアントには届かない</title><link>https://blog.afamung.dev/articles/aws-iot-rule-decode-not-delivered-to-subscriber/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-rule-decode-not-delivered-to-subscriber/</guid><description>AWS IoT CoreのRuleが処理した結果は、元のTopicをSubscribeしているクライアントには影響しない。Message BrokerとRules Engineの配信経路が別々になっている話と、Lambda ActionがCBORを直接扱えない制約について整理した。</description><pubDate>Thu, 08 May 2025 00:00:00 GMT</pubDate></item><item><title>AWS IoT Core Topic RuleでMQTTトピックからIDを取り出す</title><link>https://blog.afamung.dev/articles/aws-iot-topic-rule-topic-function/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-iot-topic-rule-topic-function/</guid><description>topic()とtopic(n)でトピックのセグメントを分解できる。正規表現で加工したいときはregexp_replace()を使う。</description><pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate></item><item><title>AWS Organizationsで作ったアカウントの削除、待機7日・30日で閉鎖できるのは10%まで</title><link>https://blog.afamung.dev/articles/aws-organizations-account-removal-wait-and-close-quota/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-organizations-account-removal-wait-and-close-quota/</guid><description>AWS Organizations配下のアカウント削除・閉鎖の制限を確認した。作成後7日は削除不可、30日で閉鎖できる件数は最小10・最大1000の10%まで。</description><pubDate>Fri, 04 Jul 2025 00:00:00 GMT</pubDate></item><item><title>AWSアカウント閉鎖前にQuickSightの課金を止める（Amazon Quickでの解約場所）</title><link>https://blog.afamung.dev/articles/aws-quicksight-unsubscribe-before-account-closure/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-quicksight-unsubscribe-before-account-closure/</guid><description>アカウント閉鎖前に残っていた課金がQuickSight Standard Editionのユーザー料金だった。リソースではなくユーザー単位の課金なので、サブスクリプションごと解約して止めた。</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate></item><item><title>AWS SDK for JavaScript v3でapiVersionはもう指定しなくていい</title><link>https://blog.afamung.dev/articles/aws-sdk-js-v3-apiversion-not-needed/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-sdk-js-v3-apiversion-not-needed/</guid><description>v2ではクライアント生成時にapiVersionでAPIバージョンを固定していたが、v3はサービスごとに1つのAPIバージョンでコード生成されているので、指定しても何も変わらない。バージョンはnpmパッケージ側で決まる。</description><pubDate>Fri, 12 Mar 2021 00:00:00 GMT</pubDate></item><item><title>AWS SDK for JavaScript v3のタイムアウトはrequestHandlerで設定する</title><link>https://blog.afamung.dev/articles/aws-sdk-js-v3-request-handler-timeout/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-sdk-js-v3-request-handler-timeout/</guid><description>v2のhttpOptions.timeout/connectTimeoutはv3ではrequestHandlerのrequestTimeout/connectionTimeoutに変わった。デフォルトはどちらも0（無効）で、requestTimeoutは超えても警告だけなので、例外にしたいならthrowOnRequestTimeoutが要る。</description><pubDate>Tue, 16 Mar 2021 00:00:00 GMT</pubDate></item><item><title>AWS SDK for JavaScript v3のリトライ設定はmaxAttemptsとretryModeで足りる</title><link>https://blog.afamung.dev/articles/aws-sdk-js-v3-retry-maxattempts-retrymode/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-sdk-js-v3-retry-maxattempts-retrymode/</guid><description>v3のデフォルト（standardモード）は指数バックオフとジッターが最初から入っていて、自前で実装する必要はない。変えるのは試行回数（maxAttempts）とモード（retryMode）くらいで、v2のmaxRetriesとは数え方が1つずれる。</description><pubDate>Sat, 20 Mar 2021 00:00:00 GMT</pubDate></item><item><title>AWS Secrets Managerの名前を「ハイフン+英数字6桁」で終わらせると部分ARN参照で詰む</title><link>https://blog.afamung.dev/articles/aws-secrets-manager-hyphen-six-chars-suffix/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-secrets-manager-hyphen-six-chars-suffix/</guid><description>Secrets Managerのシークレット名は末尾が「-」+英数字6文字だと作成自体は通るが、部分ARNでの参照時に本来のARNと誤認されて混乱するらしい。命名の代替案も整理した。</description><pubDate>Thu, 02 Feb 2023 00:00:00 GMT</pubDate></item><item><title>aws ses send-emailでメールを送る、--to/--subject/--textだけで足りるパターンとJSON必須なパターン</title><link>https://blog.afamung.dev/articles/aws-ses-send-email-cli-shorthand-options/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/aws-ses-send-email-cli-shorthand-options/</guid><description>aws ses send-emailはCLIコマンド一発でメール送信できる。--to --from --subject --textの簡易オプションで送る方法と、destination/messageをJSONで渡す方法の2通り。</description><pubDate>Sat, 06 Feb 2021 00:00:00 GMT</pubDate></item><item><title>bashのパラメータ展開方法</title><link>https://blog.afamung.dev/articles/bash-parameter-expansion-colon-undefined-vs-empty/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bash-parameter-expansion-colon-undefined-vs-empty/</guid><description>bashのパラメータ展開4種（:-, :=, :?, :+）の挙動を整理した。加えてコロンを外すと「未定義」のみが対象になり、空文字列は対象外になる点についても書く。</description><pubDate>Sat, 14 Mar 2015 00:00:00 GMT</pubDate></item><item><title>set -eだけでは止まらないパイプラインエラーとpipefailの必要性</title><link>https://blog.afamung.dev/articles/bash-set-euo-pipefail/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bash-set-euo-pipefail/</guid><description>set -e / set -u の基本と、パイプライン内の失敗を set -e だけでは検知できないケースを整理。set -o pipefail を足した set -euo pipefail が実務での定番形になる理由についてまとめた。</description><pubDate>Fri, 15 Mar 2013 00:00:00 GMT</pubDate></item><item><title>bashの文字列判定、-n と -z の使い分け</title><link>https://blog.afamung.dev/articles/bash-string-check-n-z/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bash-string-check-n-z/</guid><description>空でない文字列は -n、空文字列は -z で判定できる。ダブルクオートを外すと単語分割で意図しない挙動になる点に注意。</description><pubDate>Thu, 08 Aug 2013 00:00:00 GMT</pubDate></item><item><title>Bashで文字列を結合する3つの書き方</title><link>https://blog.afamung.dev/articles/bash-string-concatenation-methods/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bash-string-concatenation-methods/</guid><description>Bashの文字列結合を隣接・+=・printf -vの3パターンで試した。それぞれの挙動と使いどころを整理した。</description><pubDate>Wed, 12 Dec 2012 00:00:00 GMT</pubDate></item><item><title>Bedrockのjp.プロファイル、実は大阪も宛先に入っている</title><link>https://blog.afamung.dev/articles/bedrock-jp-cris-osaka/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bedrock-jp-cris-osaka/</guid><description>BedrockでClaude Sonnet系モデルをjp.プロファイル経由で呼んだらAccessDeniedExceptionになった。原因はSCPのexplicit denyで、jp.は東京だけじゃなく大阪も宛先に含む設計だから。</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Bedrock Vision Sonnet 4.6が製品仕様書のOCRで「工」を「エ」と誤読する</title><link>https://blog.afamung.dev/articles/bedrock-sonnet-ocr-kou-to-e-misread/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bedrock-sonnet-ocr-kou-to-e-misread/</guid><description>Bedrock上のClaude Sonnet 4.6に製品仕様書の材質欄をOCRさせたら、折り返し行頭の「工」がカタカナ「エ」に化けた。原因と、なぜ辞書補正で吸収しない判断にしたかをまとめる。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>洋書の表紙をBedrock Visionに読ませたら著者名が印字と違うカタカナ表記で返ってきた</title><link>https://blog.afamung.dev/articles/bedrock-vision-author-name-normalization/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bedrock-vision-author-name-normalization/</guid><description>本の表紙画像をBedrock (Claude) Visionで文字起こししたら、著者名のカタカナ表記が帯や奥付の印字と微妙に違う形で返ってきた。原因と、プロンプトでどこまで直せるかのメモ。</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Bedrock visionのOCRで「No」が「No.」になる、USAやe.g.のピリオド表記と同じ現象なのか</title><link>https://blog.afamung.dev/articles/bedrock-vision-ocr-no-trailing-period/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bedrock-vision-ocr-no-trailing-period/</guid><description>「No」がBedrockのvisionだと「No.」に化ける。U.S.A.やe.g.のピリオド有無の揺れと構造は同じだが、原因は別だった。</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Bedrock Vision (Sonnet 4.6) で縦書きテキストの濁点がブレて読まれる</title><link>https://blog.afamung.dev/articles/bedrock-vision-vertical-text-dakuten-inconsistency/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/bedrock-vision-vertical-text-dakuten-inconsistency/</guid><description>縦書きの区切り記号直後の文字で、Bedrock経由のClaude Sonnet 4.6 Visionが濁点の有無を安定して読めないケースを確認した。temperature=0でも複数画像で再現し、再現のたびに結果が一致しない。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>BLEアドレスで存在しないビットパターンをまとめた</title><link>https://blog.afamung.dev/articles/ble-address-invalid-bit-patterns/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ble-address-invalid-bit-patterns/</guid><description>BLEの48ビットアドレスは全パターンが有効なわけではない。Random系アドレスで禁止されているビットパターンを整理した。</description><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Astro + Cloudflareでこのブログを作った</title><link>https://blog.afamung.dev/articles/building-this-blog-with-astro-cloudflare/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/building-this-blog-with-astro-cloudflare/</guid><description>無料・メンテフリー・広告も載せられる個人ブログが欲しくて、Astro + Cloudflare Workers (Static Assets) で組んだ。選定理由から画像が表示されずにハマったところ、Cloudflareのドメイン戦略まで、構築の経緯を書いておく。</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate></item><item><title>spongeでファイルの先頭に別ファイルを追加する</title><link>https://blog.afamung.dev/articles/cat-mv-prepend-file-content/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cat-mv-prepend-file-content/</guid><description>moreutilsのspongeを使うと中間ファイルなしでファイルの先頭に別ファイルを結合できる。catとmvの組み合わせより短くて、シンボリックリンクを壊す心配もない。</description><pubDate>Wed, 12 Jun 2013 00:00:00 GMT</pubDate></item><item><title>CBORをPostgreSQLに保存するとき、BYTEAかJSONBか分解保存か</title><link>https://blog.afamung.dev/articles/cbor-diagnostic-notation-postgresql-storage/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cbor-diagnostic-notation-postgresql-storage/</guid><description>CBOR診断表記のバイト文字列構文を間違えてたのと、CBORデータをPostgreSQLにどう保存するか設計を整理した。</description><pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate></item><item><title>CDKでAurora PostgreSQLをServerless v2にするとParameterGroupとengine modeで弾かれる</title><link>https://blog.afamung.dev/articles/cdk-aurora-postgresql-serverless-v2-parametergroup-engine-mode/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-aurora-postgresql-serverless-v2-parametergroup-engine-mode/</guid><description>AuroraのCDKクラスターでunversionedエンジンだとParameterGroupが作れず、Serverless v2のengine modeも弾かれることがある。原因とCDK側の直し方。</description><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate></item><item><title>cdk bootstrapは実行端末じゃなく認証情報のアカウントで決まる</title><link>https://blog.afamung.dev/articles/cdk-bootstrap-account-permissions/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-bootstrap-account-permissions/</guid><description>マルチアカウント構成でのcdk bootstrapの権限要件を整理した。--trustと--trust-for-lookupの違いをCDK v2前提でまとめた。</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate></item><item><title>CDKでassetsを使うスタックはbootstrapしないとデプロイできない</title><link>https://blog.afamung.dev/articles/cdk-bootstrap-required-for-asset-stacks/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-bootstrap-required-for-asset-stacks/</guid><description>CDKでassetsを使うstackをデプロイしようとしたら&quot;toolkit stack must be deployed&quot;と言われた。原因はbootstrap忘れで、cdk bootstrapを実行したら解決した。</description><pubDate>Fri, 26 Feb 2021 00:00:00 GMT</pubDate></item><item><title>CDKデプロイでssm:GetParametersがAccessDenied、原因はcfn-exec-roleの権限未アタッチ</title><link>https://blog.afamung.dev/articles/cdk-cfn-exec-role-ssm-getparameters-accessdenied/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-cfn-exec-role-ssm-getparameters-accessdenied/</guid><description>CDK deploy時にchangeset作成でssm:GetParametersがAccessDeniedになった。cdk bootstrapを再実行しても直らず、原因はcfn-exec-roleにポリシーが一切アタッチされていなかったこと。</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate></item><item><title>CDKのHostedZone.fromHostedZoneIdでzoneNameを参照するとエラーになる</title><link>https://blog.afamung.dev/articles/cdk-hostedzone-fromhostedzoneid-zonename-error/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-hostedzone-fromhostedzoneid-zonename-error/</guid><description>fromHostedZoneIdでインポートしたホストゾーンはzoneNameを持たない設計になっていて、参照した瞬間に例外が飛ぶ。原因と回避策、CDK全体でのfromXxx系メソッドの使い分けについて。</description><pubDate>Wed, 09 Jul 2025 00:00:00 GMT</pubDate></item><item><title>CDKロジカルIDの255文字制限、実は240文字+8桁ハッシュの内訳だった</title><link>https://blog.afamung.dev/articles/cdk-logical-id-255-characters-limit/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-logical-id-255-characters-limit/</guid><description>CloudFormationのロジカルID上限255文字は知ってたけど、CDKでどう生成されるか公式ドキュメントで追ったら人間可読部分240文字+8桁ハッシュという内訳だった。物理名の制約とは別物という点も整理した。</description><pubDate>Fri, 06 Dec 2024 00:00:00 GMT</pubDate></item><item><title>CDKで&quot;Uploaded file must be a non-empty zip&quot;、原因はNode v15.6のバグだった</title><link>https://blog.afamung.dev/articles/cdk-non-empty-zip-node-15-6/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-non-empty-zip-node-15-6/</guid><description>CDKでLambdaアセットをデプロイすると非空zipエラーで落ちる件。原因はNode.js v15.6自体のバグで、CDK側の問題ではなかった。</description><pubDate>Wed, 24 Feb 2021 00:00:00 GMT</pubDate></item><item><title>CDKのParamsAndSecretsVersions.V1_0_103で入るレイヤーは:4のままだった</title><link>https://blog.afamung.dev/articles/cdk-params-and-secrets-extension-layer-stuck-at-v4/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cdk-params-and-secrets-extension-layer-stuck-at-v4/</guid><description>Amazon InspectorがNode.jsのLambdaでgo/stdlibのCVEを検出した。原因はCDKのenumで固定されていたParameters and Secrets Extensionの古いレイヤーで、SSMパブリックパラメータ参照に切り替えたら:175になって検出が消えた。</description><pubDate>Sat, 31 Oct 2026 00:00:00 GMT</pubDate></item><item><title>CentOS 6でrpmdbがBDB0100エラーで固まったので__db.00xを消した</title><link>https://blog.afamung.dev/articles/centos6-rpmdb-db-files-lock-error/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/centos6-rpmdb-db-files-lock-error/</guid><description>CentOS 6でyum実行時にrpmdbのBDB0100エラーで固まった時の対処メモ。/var/lib/rpmの__db.00xを削除したら直った。</description><pubDate>Fri, 11 Apr 2014 00:00:00 GMT</pubDate></item><item><title>CentOS 7.xでhostnamectl set-hostnameを使ってホスト名を変更する</title><link>https://blog.afamung.dev/articles/centos7-hostnamectl-set-hostname/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/centos7-hostnamectl-set-hostname/</guid><description>CentOS 7.xでホスト名を変更する手順を実機で確認した。hostnamectl set-hostnameを実行するとすぐにhostnameコマンドの結果にも反映される。</description><pubDate>Sat, 12 Mar 2016 00:00:00 GMT</pubDate></item><item><title>CentOS 7でlocalectlを使って日本語ロケールに設定した</title><link>https://blog.afamung.dev/articles/centos7-locale-localectl/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/centos7-locale-localectl/</guid><description>CentOS 7ではlocaleコマンドの代わりにsystemd由来のlocalectlを使う。ステータス確認、一覧取得、設定変更までの一連の流れをまとめた。</description><pubDate>Tue, 08 Mar 2016 00:00:00 GMT</pubDate></item><item><title>CentOS7 + Squid3.5系でBasic認証プロキシを構築する</title><link>https://blog.afamung.dev/articles/centos7-squid3-basic-auth-proxy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/centos7-squid3-basic-auth-proxy/</guid><description>CentOS7にsquidをyum installし、basic_ncsa_authでBasic認証をかけ、X-Forwarded-ForやViaヘッダーを消すプロキシを構築した手順。当時の設定でつまずきやすい点も合わせて記録。</description><pubDate>Tue, 12 Jan 2021 00:00:00 GMT</pubDate></item><item><title>certbot-autoが1.3.0から1.5.0に勝手にアップグレードされてた</title><link>https://blog.afamung.dev/articles/certbot-auto-1-3-0-to-1-5-0-insecure-permissions/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/certbot-auto-1-3-0-to-1-5-0-insecure-permissions/</guid><description>certbot-auto renewを実行したら1.3.0から1.5.0への自動アップグレードとinsecure permissions警告が出た。2020年6月22日時点でのバージョン整合性を確認したメモ。</description><pubDate>Mon, 22 Jun 2020 00:00:00 GMT</pubDate></item><item><title>ssh-keygen -l で公開鍵のフィンガープリントを確認する</title><link>https://blog.afamung.dev/articles/check-public-key-fingerprint-with-ssh-keygen/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/check-public-key-fingerprint-with-ssh-keygen/</guid><description>authorized_keysやid_rsa.pubなど鍵ファイルをssh-keygen -l -fに渡すと、鍵長・アルゴリズム・フィンガープリント・コメントが一覧できる。複数鍵が並ぶファイルでも1行ずつ出力される。</description><pubDate>Thu, 13 Aug 2020 00:00:00 GMT</pubDate></item><item><title>Health ConnectのパーミッションにClaudeがいた</title><link>https://blog.afamung.dev/articles/claude-android-health-connect/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/claude-android-health-connect/</guid><description>ふとHealth Connectのパーミッション一覧を見たら、Claudeが繋がり先にいた。睡眠・運動データの読み取りやチャート可視化はできるらしいけど、日本ではまだ使えず未確認。利用条件もまとめておく。</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Claude Sonnet 4.6のVision、画像サイズの上限は1568pxだけじゃなかった</title><link>https://blog.afamung.dev/articles/claude-vision-standard-tier-image-size-limits/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/claude-vision-standard-tier-image-size-limits/</guid><description>Bedrock経由でClaude Sonnet 4.6にVisionを使う場合の画像サイズ制限を整理した。長辺1568pxの他にvisual tokenの上限もあって、縦長画像は先にそっちで引っかかることが分かった。</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>CloudFormationのスタック削除で「Role is invalid or cannot be assumed」が出たら消せない</title><link>https://blog.afamung.dev/articles/cloudformation-role-invalid-cannot-be-assumed/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cloudformation-role-invalid-cannot-be-assumed/</guid><description>CloudFormationでスタックを削除しようとすると、使っていたIAMロールが無くて削除に失敗することがある。同じ名前でロールを作り直して削除権限を持たせれば消せる。</description><pubDate>Tue, 08 Jun 2021 00:00:00 GMT</pubDate></item><item><title>CloudFormationスタックがROLLBACK_COMPLETEで更新できない</title><link>https://blog.afamung.dev/articles/cloudformation-rollback-complete-cannot-update/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cloudformation-rollback-complete-cannot-update/</guid><description>ROLLBACK_COMPLETE状態のスタックはUpdateStackが弾かれる。ContinueUpdateRollbackも使えず、削除して作り直すしかない。</description><pubDate>Fri, 27 Sep 2024 00:00:00 GMT</pubDate></item><item><title>CloudFront Functionsでリライトしても、アクセスログには元のURIが残る</title><link>https://blog.afamung.dev/articles/cloudfront-access-log-uri-rewrite-original-uri/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cloudfront-access-log-uri-rewrite-original-uri/</guid><description>CloudFront Functionsのviewer requestでURIを書き換えても、アクセスログのcs-uri-stemには書き換え前のURIが記録される。実測とドキュメントの両方で確認した。</description><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate></item><item><title>CloudFront FunctionsはES5.1固定じゃなかった、cloudfront-js-2.0でES6以降の一部にも対応してる</title><link>https://blog.afamung.dev/articles/cloudfront-functions-js-2-0-runtime/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cloudfront-functions-js-2-0-runtime/</guid><description>cloudfront-js-2.0ランタイムはES5.1準拠に加えてES6〜ES12の一部機能（const/let、async/await、テンプレートリテラルなど）をサポートしている。CDKでruntimeを明示指定する方法と、以前の記事で古くなった部分を確認した。</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate></item><item><title>CloudFrontのDefault Root Objectはサブディレクトリでは効かない</title><link>https://blog.afamung.dev/articles/cloudfront-subdirectory-index-html-cloudfront-functions/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cloudfront-subdirectory-index-html-cloudfront-functions/</guid><description>S3のRESTエンドポイントをオリジンにしている場合、/hoge/へのリクエストでhoge/index.htmlを返すにはCloudFront Functionsでの書き換えが必要。TypeScriptで書いてES5にコンパイルし、CDKのfromInlineで読み込む方法をまとめた。</description><pubDate>Mon, 24 Mar 2025 00:00:00 GMT</pubDate></item><item><title>CloudWatch Logs InsightsでApacheログのステータスコードを集計する</title><link>https://blog.afamung.dev/articles/cloudwatch-logs-insights-count-requires-stats/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cloudwatch-logs-insights-count-requires-stats/</guid><description>ApacheのcombinedログをCloudWatch Logs Insightsでパースし、ステータスコード別に件数を集計するクエリ集。全件カウント、期間指定での一覧表示、urlごとのグループ集計の3パターンをまとめた。</description><pubDate>Mon, 04 Oct 2021 00:00:00 GMT</pubDate></item><item><title>CodeBuildでnpm installをLOCAL_CUSTOM_CACHEでキャッシュする</title><link>https://blog.afamung.dev/articles/codebuild-npm-install-local-custom-cache/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/codebuild-npm-install-local-custom-cache/</guid><description>CDKのCfnProjectでLOCAL_CUSTOM_CACHEを設定し、node_modulesをビルドホストにキャッシュしてnpm installを高速化する方法。</description><pubDate>Fri, 07 Feb 2020 00:00:00 GMT</pubDate></item><item><title>CompanionDeviceManagerでBLE再接続を拾う、ACL_CONNECTEDとGATTコールバックの使い分け</title><link>https://blog.afamung.dev/articles/companion-device-manager-ble-reconnect-detection/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/companion-device-manager-ble-reconnect-detection/</guid><description>CompanionDeviceManagerでペアリングしたBLEデバイスの再接続検知を整理した。ACTION_ACL_CONNECTEDとBluetoothGattCallbackの違い、foregroundServiceType=connectedDeviceに必要な権限、Android 15以降の変更点まで。</description><pubDate>Tue, 18 Jun 2024 00:00:00 GMT</pubDate></item><item><title>composer.jsonのprocess-timeoutでComposerの外部コマンドタイムアウトを伸ばせる</title><link>https://blog.afamung.dev/articles/composer-process-timeout-config/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/composer-process-timeout-config/</guid><description>Composerが内部で実行するgitクローンなどの外部プロセスにタイムアウトがあり、大きいリポジトリだと引っかかることがある。process-timeoutで秒数を変更できるし、0で無制限にもできる。</description><pubDate>Wed, 22 Jan 2020 00:00:00 GMT</pubDate></item><item><title>console.logでネストしたオブジェクトが[Object]で省略される、depth: nullで直る</title><link>https://blog.afamung.dev/articles/console-log-nested-object-depth/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/console-log-nested-object-depth/</guid><description>Node.jsのconsole.logは内部でutil.inspectを使っていて、depthのデフォルトが2。深い階層は[Object]に丸められるので、depth: nullを渡せば全部出る。</description><pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate></item><item><title>cronで日次バッチのログを日付ごとのファイルに分ける</title><link>https://blog.afamung.dev/articles/cron-log-filename-date-percent-escape/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cron-log-filename-date-percent-escape/</guid><description>cronで動かすバッチのログを1本の垂れ流しにせず、日付ごとのファイルに分割する方法をまとめた。dateコマンドをファイル名に埋め込むだけだが、細かい罠がいくつかある。</description><pubDate>Mon, 09 Dec 2013 00:00:00 GMT</pubDate></item><item><title>CSSのtext-autospaceでCJKと欧文の間隔が自動調整できるらしい</title><link>https://blog.afamung.dev/articles/css-text-autospace-cjk-spacing/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/css-text-autospace-cjk-spacing/</guid><description>和欧混在テキストのスペーシングを自動でやってくれるCSSプロパティtext-autospaceを知ったのでメモ。構文とブラウザサポート状況について。</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate></item><item><title>CSVエクスポートで=, +, -, @始まりのセルは弾いた方がいいらしい</title><link>https://blog.afamung.dev/articles/csv-injection-block-formula-characters/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/csv-injection-block-formula-characters/</guid><description>CSVインジェクション（Formula Injection）の話。ユーザー入力をそのままCSVに出力すると、Excelなどで開いたときに数式として実行されてしまうことがある。</description><pubDate>Tue, 15 Dec 2020 00:00:00 GMT</pubDate></item><item><title>curlのプロキシ認証、-xオプションと環境変数どっちで書いても同じ</title><link>https://blog.afamung.dev/articles/curl-proxy-auth-cli-vs-env/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/curl-proxy-auth-cli-vs-env/</guid><description>curlでプロキシ経由通信する時の認証情報の指定方法を、コマンドラインオプションと環境変数の両方でまとめた。</description><pubDate>Sun, 24 Jan 2021 00:00:00 GMT</pubDate></item><item><title>curl --resolveで任意のホスト名をIPに固定する</title><link>https://blog.afamung.dev/articles/curl-resolve-fix-hostname-to-ip/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/curl-resolve-fix-hostname-to-ip/</guid><description>DNS切り替え前の動作確認などでホスト名を特定のIPに向けたい時に使う--resolveの使い方。CentOS6標準のcurl(7.19.7)では使えないので、Hostヘッダーでの代替方法もまとめた。</description><pubDate>Thu, 11 Sep 2014 00:00:00 GMT</pubDate></item><item><title>curlの-wオプションでリクエストの各フェーズの所要時間を分解する</title><link>https://blog.afamung.dev/articles/curl-w-option-request-phase-timing/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/curl-w-option-request-phase-timing/</guid><description>curlの-wオプションを使うと名前解決・接続・リクエスト送信・レスポンス受信の各フェーズにかかった時間を分解できる。TLSハンドシェイクの時間を見るならtime_appconnectも必要。</description><pubDate>Thu, 20 Jun 2019 00:00:00 GMT</pubDate></item><item><title>CursorでError loading webviewが出たけど再起動で直った</title><link>https://blog.afamung.dev/articles/cursor-webview-service-worker-invalid-state/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/cursor-webview-service-worker-invalid-state/</guid><description>Cursorで画像ファイルを開いたら、Service Workerの登録に失敗するエラーが出て表示されなかった。Cursorを完全に終了して起動し直したら直った。直らない場合はキャッシュ削除で対処できるらしい。</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate></item><item><title>dayjs.extend(localizedFormat)はどこで呼ぶのが正解か</title><link>https://blog.afamung.dev/articles/dayjs-extend-where-to-call/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/dayjs-extend-where-to-call/</guid><description>Reactのカスタムフック内でdayjsのプラグイン登録をしようとして、動くけど無駄が多いことに気づいた。結論はエントリポイントで一度だけ登録すること。</description><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate></item><item><title>dayjsでタイムゾーン付きのISO 8601を取りたいならformat()、toISOString()じゃない</title><link>https://blog.afamung.dev/articles/dayjs-tz-iso8601-format-not-toisostring/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/dayjs-tz-iso8601-format-not-toisostring/</guid><description>dayjsのutc/timezoneプラグインは本体に同梱されている。オフセット付きのISO 8601形式で現在時刻を取得するにはtoISOString()ではなくformat()を使う。</description><pubDate>Tue, 21 May 2024 00:00:00 GMT</pubDate></item><item><title>Debian 11 (bullseye)のEOLでdeb.debian.orgのsecurityリポジトリが404になった</title><link>https://blog.afamung.dev/articles/debian-bullseye-eol-security-404/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/debian-bullseye-eol-security-404/</guid><description>DockerビルドでbullseyeのAPTセキュリティパッケージが404 Not Foundになった。原因はbullseyeのLTS終了によるミラーからの削除で、archive.debian.orgへの切り替えで応急処置した。</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>describe-instance-statusでInstanceStatusesが空配列になる</title><link>https://blog.afamung.dev/articles/describe-instance-status-empty-for-stopped-instances/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/describe-instance-status-empty-for-stopped-instances/</guid><description>AWS CLIのdescribe-instance-statusを実行したらInstanceStatusesが[]で返ってきた。原因はデフォルトでrunning状態のインスタンスしか対象にしていないからだった。</description><pubDate>Tue, 26 Nov 2024 00:00:00 GMT</pubDate></item><item><title>devcontainerのremoteEnvでプロジェクト内の.devcontainer/binにPATHを通す</title><link>https://blog.afamung.dev/articles/devcontainer-remoteenv-path-project-bin/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/devcontainer-remoteenv-path-project-bin/</guid><description>devcontainer.jsonのremoteEnvで${containerEnv:PATH}を参照し、リポジトリ同梱のスクリプト置き場をPATHの先頭に追加した。実機で動作確認済みで、効く範囲と実行権限にだけ注意が要る。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>AWS_CONFIG_FILEをdirenvで上書きするとprofileがディレクトリ単位に分離できる</title><link>https://blog.afamung.dev/articles/direnv-aws-config-file-per-directory/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/direnv-aws-config-file-per-directory/</guid><description>案件ディレクトリごとに.aws/config・.aws/credentialsを持たせて、direnvでcd時に参照先を自動切り替えする設定を試した際の確認ログ。</description><pubDate>Sat, 18 Jan 2020 00:00:00 GMT</pubDate></item><item><title>direnvは.envrcを1個しか読まない、階層があっても勝手に合成されない</title><link>https://blog.afamung.dev/articles/direnv-envrc-no-cascade/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/direnv-envrc-no-cascade/</guid><description>direnvは実行時に近い階層の.envrcを1つだけロードする。親の設定も引き継ぎたいならsource_upを明示的に書く必要がある。</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>direnvをbrew/ソースビルドで入れてbashにhookを仕込んでみた</title><link>https://blog.afamung.dev/articles/direnv-install-bashrc-hook/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/direnv-install-bashrc-hook/</guid><description>Homebrewとソースビルドでdirenvを導入し、.bashrcにhookを仕込むまでの手順のメモ。direnv edit .の自動allowの挙動についても触れる。</description><pubDate>Wed, 13 Feb 2019 00:00:00 GMT</pubDate></item><item><title>nohup付け忘れた時disown -hでSIGHUPは防げるけど標準出力は死ぬことがある</title><link>https://blog.afamung.dev/articles/disown-h-does-not-replace-nohup/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/disown-h-does-not-replace-nohup/</guid><description>nohupを付け忘れて実行してしまったプロセスをCtrl+Z→bg→disown -hで延命する手順と、それだけでは不十分なケースについて。</description><pubDate>Fri, 08 Jul 2022 00:00:00 GMT</pubDate></item><item><title>docker attachから抜けるにはCtrl+P、Ctrl+Q</title><link>https://blog.afamung.dev/articles/docker-attach-detach-ctrl-p-ctrl-q/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-attach-detach-ctrl-p-ctrl-q/</guid><description>docker attachで入ったコンテナをそのままにして抜けるショートカットのメモ。Ctrl+P、Ctrl+Qの2ストロークで、docker execでは効かない。</description><pubDate>Fri, 05 Apr 2019 00:00:00 GMT</pubDate></item><item><title>docker-compose 1.25.5をcurlでLinuxに入れる手順を確認した</title><link>https://blog.afamung.dev/articles/docker-compose-1-25-5-curl-install-linux/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-compose-1-25-5-curl-install-linux/</guid><description>GitHub Releasesからバイナリを落として/usr/local/binに置き、/usr/bin/にシンボリックリンクを張るまでの一連の手順が公式手順と一致するか確認した。</description><pubDate>Thu, 30 Apr 2020 00:00:00 GMT</pubDate></item><item><title>docker-compose.ymlのenvironmentに秘密鍵をそのまま複数行で書く</title><link>https://blog.afamung.dev/articles/docker-compose-environment-multiline-value-yaml-block-scalar/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-compose-environment-multiline-value-yaml-block-scalar/</guid><description>Docker ComposeのenvironmentはYAMLなので、リテラルブロックスカラー(|-)を使えば改行込みの値もそのまま渡せる。秘密鍵や証明書をワンライナーにエスケープする必要はない。</description><pubDate>Fri, 24 Apr 2020 00:00:00 GMT</pubDate></item><item><title>docker compose upの--pullオプション、missingでもlatestタグは毎回プルされることがあるらしい</title><link>https://blog.afamung.dev/articles/docker-compose-pull-missing-latest-tag-issue/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-compose-pull-missing-latest-tag-issue/</guid><description>docker composeでイメージを更新する基本手順と--pullオプションのpolicy種類を整理。latestタグ運用時にはmissing指定でも再プルされるケースが報告されている。</description><pubDate>Wed, 04 Jun 2025 00:00:00 GMT</pubDate></item><item><title>docker compose restartではenvironmentの変更が反映されない</title><link>https://blog.afamung.dev/articles/docker-compose-restart-environment-not-reloaded/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-compose-restart-environment-not-reloaded/</guid><description>restartは既存コンテナの再起動だけで設定は再読み込みされない。force-recreateとの違いと、distrolessなコンテナで環境変数を確認する方法について。</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate></item><item><title>docker compose runの--rm忘れでorphan containers警告が溜まってた</title><link>https://blog.afamung.dev/articles/docker-compose-run-rm-orphan-containers/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-compose-run-rm-orphan-containers/</guid><description>docker compose upで毎回出るorphan containers警告、原因を追ったらdocker compose runで作った使い捨てコンテナが--rmなしで残り続けてただけだった。</description><pubDate>Tue, 29 Jul 2025 00:00:00 GMT</pubDate></item><item><title>docker compose watchで「cannot take exclusive lock」が出る原因</title><link>https://blog.afamung.dev/articles/docker-compose-watch-exclusive-lock-error/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-compose-watch-exclusive-lock-error/</guid><description>docker compose watchを二重起動すると出る排他ロックエラーの原因とPIDファイルの場所を調べた。killで直らない場合の対処もまとめた。</description><pubDate>Thu, 09 Nov 2023 00:00:00 GMT</pubDate></item><item><title>dockerコマンドでPermission deniedが出た</title><link>https://blog.afamung.dev/articles/docker-daemon-socket-permission-denied/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-daemon-socket-permission-denied/</guid><description>Dockerデーモンソケットへの接続でPermission deniedになる。dockerグループに入れれば直るが、反映にはログイン仕方に一手間ある。</description><pubDate>Tue, 11 Jun 2019 00:00:00 GMT</pubDate></item><item><title>Dockerで devicemapper: Thin Pool has ... free data blocks エラーが出た</title><link>https://blog.afamung.dev/articles/docker-devicemapper-thinpool-free-space-error/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-devicemapper-thinpool-free-space-error/</guid><description>ディスクには余裕があるのにコンテナのビルド・起動が失敗した。原因はthin poolの空きブロック不足で、未使用コンテナ・イメージの削除とfstrimで解消した。</description><pubDate>Thu, 24 Sep 2020 00:00:00 GMT</pubDate></item><item><title>node:22-bookwormに最新パッチが入ったかはダイジェストで確認する</title><link>https://blog.afamung.dev/articles/docker-floating-tag-patch-version-check/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-floating-tag-patch-version-check/</guid><description>Node.jsのセキュリティリリース後、node:22-bookwormのようなパッチ未指定のタグに修正版が入ったかを確かめたかった。GitHubのDockerfileではなく、配布されているタグのダイジェストと中身のNODE_VERSIONで判断する方法をまとめた。</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate></item><item><title>DockerのHEALTHCHECKでnginxとphp-fpmの生死を判定する</title><link>https://blog.afamung.dev/articles/docker-healthcheck-nginx-php-fpm/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-healthcheck-nginx-php-fpm/</guid><description>DockerのHEALTHCHECK命令が持つ--interval/--timeout/--start-period/--retriesの意味を整理して、nginxとphp-fpmそれぞれのDockerfileに落とし込んだ。docker psとdocker inspectでの確認結果も一緒に載せる。</description><pubDate>Fri, 05 Jun 2020 00:00:00 GMT</pubDate></item><item><title>docker stopでコンテナを止める（個別 / まとめて / タイムアウト）</title><link>https://blog.afamung.dev/articles/docker-images-vs-ps-stop-all-containers/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-images-vs-ps-stop-all-containers/</guid><description>docker stopを使ってコンテナを個別に止める手順と、起動中の全コンテナをまとめて止める手順、および-tオプションをまとめた。</description><pubDate>Sun, 21 Apr 2019 00:00:00 GMT</pubDate></item><item><title>CentOS7・AmazonLinux2・Ubuntu・MacのDockerインストールコマンド一覧</title><link>https://blog.afamung.dev/articles/docker-install-commands-centos-ubuntu-mac/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-install-commands-centos-ubuntu-mac/</guid><description>CentOS7 / Amazon Linux 2、Ubuntu、MacそれぞれでのDockerインストール・起動・自動起動のコマンドを控えておく。</description><pubDate>Wed, 03 Apr 2019 00:00:00 GMT</pubDate></item><item><title>docker logs -f --tail=300の意味を整理する</title><link>https://blog.afamung.dev/articles/docker-logs-follow-tail-300/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-logs-follow-tail-300/</guid><description>docker logsコマンドの-fと--tail=300オプションがそれぞれ何をしているか、実際の使い方と合わせて整理する。</description><pubDate>Sun, 14 Apr 2019 00:00:00 GMT</pubDate></item><item><title>docker cpでMySQLダンプをコンテナに送ってリストアする</title><link>https://blog.afamung.dev/articles/docker-mysql-dump-restore-in-container/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-mysql-dump-restore-in-container/</guid><description>DockerコンテナのDBにダンプファイルをリストアする手順のメモ。docker cpでコンテナ内にコピーしてmysqlコマンドで流し込む。</description><pubDate>Thu, 08 Dec 2022 00:00:00 GMT</pubDate></item><item><title>dockerイメージを個別に消す・全部消す</title><link>https://blog.afamung.dev/articles/docker-remove-images-by-id/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-remove-images-by-id/</guid><description>docker rmiでIMAGE IDを指定して消す方法と、docker images -qで全イメージを一括削除する方法。使用中イメージやdangling imageとの違いも触れる。</description><pubDate>Sun, 28 Apr 2019 00:00:00 GMT</pubDate></item><item><title>docker rmでコンテナを消す、全部消すならdocker ps -q -aと組み合わせる</title><link>https://blog.afamung.dev/articles/docker-rm-container-ps-a/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-rm-container-ps-a/</guid><description>docker rmでのコンテナ削除を個別指定・一括の両パターンでまとめる。稼働中コンテナは事前stopか-fオプションが必要。</description><pubDate>Thu, 25 Apr 2019 00:00:00 GMT</pubDate></item><item><title>Docker runコマンドの実行方法</title><link>https://blog.afamung.dev/articles/docker-run-execution-methods/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/docker-run-execution-methods/</guid><description>docker runの基本的な実行方法をインタラクティブ/バックグラウンドで整理した。-itdと-dの違いや、よく使う付随オプションもまとめている。</description><pubDate>Mon, 08 Apr 2019 00:00:00 GMT</pubDate></item><item><title>DynamoDB LocalでTTLを使うなら、TTL属性をレンジキーにしない方がいい</title><link>https://blog.afamung.dev/articles/dynamodb-local-ttl-attribute-should-not-be-range-key/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/dynamodb-local-ttl-attribute-should-not-be-range-key/</guid><description>トークンテーブルでTTL属性をレンジキーに使う構成を試したが、更新時にキーごと変わってしまう問題があるのでTTL属性はキー外に分離した。DynamoDB LocalではTTLの自動削除も動かない点も合わせて確認した。</description><pubDate>Wed, 13 May 2020 00:00:00 GMT</pubDate></item><item><title>EARSは「イアーズ」と読む、Rolls-Royce発の要件記法</title><link>https://blog.afamung.dev/articles/ears-requirements-syntax/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ears-requirements-syntax/</guid><description>要件定義の型「EARS」を調べた。2009年にRolls-Royceのエンジニアが作った5パターンの構文で、日本語訳や実際の使われ方についてまとめる。</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>EC2のPostfixからAmazon SES経由でメール送信する設定</title><link>https://blog.afamung.dev/articles/ec2-postfix-relay-amazon-ses/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ec2-postfix-relay-amazon-ses/</guid><description>PostfixをAmazon SESのSMTPリレー経由にする設定手順と、書き起こす過程で見つかったハマりどころのメモ。</description><pubDate>Tue, 02 Jul 2019 00:00:00 GMT</pubDate></item><item><title>EC2のルートボリューム使用率が94%だったのでgrowpartとxfs_growfsで拡張した</title><link>https://blog.afamung.dev/articles/ec2-root-volume-growpart-xfs-growfs-resize/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ec2-root-volume-growpart-xfs-growfs-resize/</guid><description>EBSのルートボリューム自体は32GBあるのにパーティションが8GBしか使われておらず容量逼迫していた。growpartでパーティションテーブルを拡張し、xfs_growfsでファイルシステムを拡張して解消した。</description><pubDate>Tue, 23 Jun 2020 00:00:00 GMT</pubDate></item><item><title>Eclipseは-cleanオプションで起動するとプラグインキャッシュを作り直す</title><link>https://blog.afamung.dev/articles/eclipse-clean-launch-macos/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/eclipse-clean-launch-macos/</guid><description>Eclipseのプラグイン一覧やメニューがおかしくなった時、-cleanオプション付きで起動するとconfiguration領域のキャッシュを破棄して再構築してくれる。</description><pubDate>Tue, 19 Aug 2014 00:00:00 GMT</pubDate></item><item><title>ローカルのDockerイメージをECRにpushする</title><link>https://blog.afamung.dev/articles/ecr-push-local-docker-image/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ecr-push-local-docker-image/</guid><description>ローカルでbuildしたDockerイメージをAmazon ECRにpushするまでの手順をまとめる。認証はaws ecr get-loginを使う方法。</description><pubDate>Sat, 28 Mar 2020 00:00:00 GMT</pubDate></item><item><title>ECSのawslogsでロググループ名がaws/始まりだとコンテナが起動しない</title><link>https://blog.afamung.dev/articles/ecs-awslogs-group-name-aws-prefix-reserved/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ecs-awslogs-group-name-aws-prefix-reserved/</guid><description>ECSタスク定義のlogConfigurationでawslogs-groupにaws/ecs/...を指定するとCannotStartContainerErrorになる。CloudWatch Logsの予約プレフィックスが原因で、大文字小文字を区別せず弾かれる。</description><pubDate>Fri, 14 Feb 2020 00:00:00 GMT</pubDate></item><item><title>ECSのbinpack戦略とFargateのタスク分離を公式ドキュメントで確認した</title><link>https://blog.afamung.dev/articles/ecs-binpack-fargate-task-isolation/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ecs-binpack-fargate-task-isolation/</guid><description>ECS(EC2)のbinpack配置戦略とFargateのリソース分離について、公式ドキュメントとAPIリファレンスで裏付けを取った内容。</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate></item><item><title>ECS FargateでnginxとNode.js動かすなら、まずtask cpu 512 / memory 1024でよさそう</title><link>https://blog.afamung.dev/articles/ecs-fargate-nginx-nodejs-cpu-memory-sizing/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ecs-fargate-nginx-nodejs-cpu-memory-sizing/</guid><description>ECS Fargateでnginx+Node.js構成のCPU/メモリ配分を検討した記録。Node.jsならnginx不要なことが多い点と、FargateTaskDefinitionではmemoryLimitMiBを使う点も触れる。</description><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate></item><item><title>ECSのRunTaskで出たAccessDeniedException、原因はFargate platform version 1.3.0の廃止だった</title><link>https://blog.afamung.dev/articles/ecs-fargate-platform-version-1-3-0-retired/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ecs-fargate-platform-version-1-3-0-retired/</guid><description>ECS FargateのRunTaskで「AccessDeniedException: You do not have authorization to access the specified platform.」が発生。IAM権限の問題に見えたが、実際はplatformVersionに1.3.0を明示指定していたのが原因だった。</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate></item><item><title>ECSのタスクロールとタスク実行ロールでは権限の使いどころが違う</title><link>https://blog.afamung.dev/articles/ecs-task-role-vs-task-execution-role/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ecs-task-role-vs-task-execution-role/</guid><description>ECSタスク実行ロールはECRからのイメージ取得とCloudWatch Logsへの出力用、タスクロールはコンテナ内アプリがAWS APIを呼ぶ用。名前が似ていて混同しやすい両者を整理する。</description><pubDate>Mon, 27 Jan 2020 00:00:00 GMT</pubDate></item><item><title>EloquentでUUIDを主キーとして使う</title><link>https://blog.afamung.dev/articles/eloquent-uuid-primary-key/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/eloquent-uuid-primary-key/</guid><description>Eloquentのモデルでauto incrementなintの代わりにUUIDのstringを主キーにする実装をまとめる。コンストラクタで生成する方法はhydrate時にも呼ばれる問題があり、creatingイベントに切り替えた。</description><pubDate>Tue, 08 Oct 2019 00:00:00 GMT</pubDate></item><item><title>S3 EventBridgeイベントのkeyフィルタ、wildcardで直接書けるようになってた</title><link>https://blog.afamung.dev/articles/eventbridge-s3-key-wildcard-filter/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/eventbridge-s3-key-wildcard-filter/</guid><description>EventBridgeのイベントパターンでS3オブジェクトのkeyをprefixとsuffixの組み合わせで絞り込むと実はOR判定になる。2023年10月からwildcardマッチングに対応していて、1つのパターンでAND相当の条件が書けるようになっていた。</description><pubDate>Tue, 22 Oct 2024 00:00:00 GMT</pubDate></item><item><title>fail2banをUbuntuに入れてもsshdジェイルはデフォルトで無効だった</title><link>https://blog.afamung.dev/articles/fail2ban-ubuntu-sshd-jail-not-enabled-by-default/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/fail2ban-ubuntu-sshd-jail-not-enabled-by-default/</guid><description>Ubuntuでfail2banを入れてignoreipだけ設定しても、[sshd]にenabled = trueを書かないとSSH保護は実は動いていない。デフォルトのbantimeが10分と短い点も含めて整理した。</description><pubDate>Wed, 15 Mar 2023 00:00:00 GMT</pubDate></item><item><title>findとxargsで古いログを一括gzip、ファイル名にスペースがあると壊れる</title><link>https://blog.afamung.dev/articles/find-xargs-gzip-log-compress/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/find-xargs-gzip-log-compress/</guid><description>find -mtime +15 | xargs gzip でログを圧縮する処理を書いたが、ファイル名にスペースや改行が含まれると xargs 側で分割が崩れる。-print0 / -0 で対処する。</description><pubDate>Sat, 01 Feb 2014 00:00:00 GMT</pubDate></item><item><title>find | xargs wc -l でディレクトリ配下のファイル数と行数を数える</title><link>https://blog.afamung.dev/articles/find-xargs-wc-line-count-oneliners/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/find-xargs-wc-line-count-oneliners/</guid><description>ファイル一覧・行数カウントの定番ワンライナーをまとめ。findとxargs、wc -lを組み合わせるときにハマった2つの落とし穴（-typeの書き方とglobのクォート漏れ）も合わせて書いておく。</description><pubDate>Wed, 15 Mar 2017 00:00:00 GMT</pubDate></item><item><title>Firehoseの変換Lambda、異常レコードもrecordIdは返さないとエラーになる</title><link>https://blog.afamung.dev/articles/firehose-lambda-transform-record-id-required/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/firehose-lambda-transform-record-id-required/</guid><description>変換対象外のレコードをreturnに含めなかったら&quot;One or more record Ids were not returned&quot;が出た。原因と、OkとDroppedとProcessingFailedの違いについて。</description><pubDate>Tue, 11 Jun 2024 00:00:00 GMT</pubDate></item><item><title>Firehoseの変換LambdaがLambda.InvokeAccessDeniedになるのはARNの修飾子が足りないから</title><link>https://blog.afamung.dev/articles/firehose-transform-lambda-invokeaccessdenied/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/firehose-transform-lambda-invokeaccessdenied/</guid><description>Kinesis Firehoseの変換Lambda呼び出しでLambda.InvokeAccessDeniedが出た。IAMポリシーのResourceに:*を足したら直ったので、その理由も込みで整理する。</description><pubDate>Fri, 10 Jul 2020 00:00:00 GMT</pubDate></item><item><title>Forgejo ActionsのOIDCでAssumeRoleするならaudは3箇所で揃える</title><link>https://blog.afamung.dev/articles/forgejo-actions-oidc-aws-audience/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/forgejo-actions-oidc-aws-audience/</guid><description>Forgejo ActionsからOIDCでIAMロールを引き受けるとき、ワークフローのaudience・IAM IDプロバイダの対象者・信頼ポリシーのaud条件の3つが同じ文字列でないと通らない。audとsubの役割の違いと、タグでステージング／本番のロールを切り替える構成も合わせて整理した。</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate></item><item><title>iOS Safariで電話番号の自動リンクをformat-detectionで消す</title><link>https://blog.afamung.dev/articles/format-detection-telephone-no-ios-safari/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/format-detection-telephone-no-ios-safari/</guid><description>iOS Safari特有の電話番号自動リンク化をmetaタグで無効化する方法。効かないケースの回避策と、Androidでは効かない点を補足でまとめた。</description><pubDate>Wed, 08 Oct 2014 00:00:00 GMT</pubDate></item><item><title>gitで削除ファイルを戻す、タグからブランチを作る</title><link>https://blog.afamung.dev/articles/git-checkout-restore-file-and-branch-from-tag/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-checkout-restore-file-and-branch-from-tag/</guid><description>git checkout HEADで削除したファイルを復元する方法と、タグを起点にブランチを作成する方法をメモした。</description><pubDate>Tue, 05 Mar 2019 00:00:00 GMT</pubDate></item><item><title>git clean -f -dで未追跡ファイルとディレクトリを消す</title><link>https://blog.afamung.dev/articles/git-clean-fd-untracked-files/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-clean-fd-untracked-files/</guid><description>git clean -f -dの-fと-dがそれぞれ何を意味するか整理した。実行前に何が消えるか確認する方法も書いておく。</description><pubDate>Wed, 07 Jan 2015 00:00:00 GMT</pubDate></item><item><title>特定ブランチをsubmodule込みでgit cloneする</title><link>https://blog.afamung.dev/articles/git-clone-branch-submodule/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-clone-branch-submodule/</guid><description>git cloneで特定ブランチだけを取得する方法と、submoduleを同時に取得する方法をメモ。両方を1コマンドで済ませる書き方も合わせて残す。</description><pubDate>Tue, 27 Jan 2015 00:00:00 GMT</pubDate></item><item><title>Macのgitクレデンシャルをdevcontainerで使う</title><link>https://blog.afamung.dev/articles/git-credential-devcontainer-mac/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-credential-devcontainer-mac/</guid><description>osxkeychainはLinuxコンテナで動かない。コンテナ内でstoreヘルパーに切り替えて再認証するだけで解決する。</description><pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate></item><item><title>Gitのタグを連番でまとめて消すならブレース展開が楽だった</title><link>https://blog.afamung.dev/articles/git-delete-tags-brace-expansion/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-delete-tags-brace-expansion/</guid><description>rcタグを a〜h だけ選んでローカルとリモートから一括削除した。git側の機能ではなく、シェルのブレース展開で範囲指定すれば1行で済む。</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate></item><item><title>.gitignoreに書かずに自分だけ無視するなら.git/info/exclude</title><link>https://blog.afamung.dev/articles/git-info-exclude-local-ignore/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-info-exclude-local-ignore/</guid><description>リポジトリにコミットせず自分の環境だけでファイルを無視したいときは .git/info/exclude を使う。worktree やサブモジュールでも壊れない追記方法と、効かないケースを確認した。</description><pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate></item><item><title>git-remote-codecommitはpipとHomebrewどっちで入れるべきか</title><link>https://blog.afamung.dev/articles/git-remote-codecommit-install-linux-macos-brew/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-remote-codecommit-install-linux-macos-brew/</guid><description>LinuxはpipでPython経由、macOSはbrew install一発。ただしmacOSはXcodeが古いと弾かれた。</description><pubDate>Fri, 19 Aug 2022 00:00:00 GMT</pubDate></item><item><title>サブディレクトリの切り出しはgit filter-repoが本命、filter-branchは非推奨</title><link>https://blog.afamung.dev/articles/git-subdirectory-extraction-filter-repo/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-subdirectory-extraction-filter-repo/</guid><description>リポジトリの特定フォルダだけを履歴付きで新しいリポジトリに切り出す作業は、今はgit filter-repoでやるのが正解。filter-branchでの元のやり方も参考として残す。</description><pubDate>Mon, 05 Jul 2021 00:00:00 GMT</pubDate></item><item><title>リモートで消えたタグをローカルに反映するにはどうすればいいか</title><link>https://blog.afamung.dev/articles/git-tag-prune-tags-sync/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/git-tag-prune-tags-sync/</guid><description>git tag -d で全消しして fetch --tags し直す方法と、fetch --prune-tags 一発でやる方法を比較した。</description><pubDate>Wed, 13 May 2020 00:00:00 GMT</pubDate></item><item><title>東京リージョンのALBへの海外アクセス、CloudFrontとGlobal Acceleratorのどっちが正解か</title><link>https://blog.afamung.dev/articles/global-accelerator-vs-cloudfront-alb-latency/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/global-accelerator-vs-cloudfront-alb-latency/</guid><description>海外からのアクセス遅延を改善したくてGlobal Acceleratorを導入した記録。CloudFrontを見送った理由と、DNS向け先変更はどちらの構成でも避けられない点について。</description><pubDate>Sun, 29 Dec 2024 00:00:00 GMT</pubDate></item><item><title>グッドハートの法則：指標を目標にすると、その指標は壊れる</title><link>https://blog.afamung.dev/articles/goodharts-law/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/goodharts-law/</guid><description>「指標が目標になると良い指標ではなくなる」というグッドハートの法則を、由来・起きる仕組み・開発現場での具体例・対策の順に整理した。カバレッジやベロシティ、AIの報酬ハッキングも同じ構造で説明できる。</description><pubDate>Fri, 07 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Gradleの依存関係は`--configuration compile`で確認できる</title><link>https://blog.afamung.dev/articles/gradle-dependencies-configuration-compile/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/gradle-dependencies-configuration-compile/</guid><description>`dependencies`タスクに`--configuration compile`を渡すと、コンパイル時の依存関係ツリーが見られる。ルートプロジェクトとサブプロジェクトを両方指定すれば両方の依存が出る。</description><pubDate>Fri, 03 Feb 2017 00:00:00 GMT</pubDate></item><item><title>Gradleの`compile`は7.0で消えた、今は`implementation`と`compileClasspath`</title><link>https://blog.afamung.dev/articles/gradle-dependencies-implementation-compileclasspath/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/gradle-dependencies-implementation-compileclasspath/</guid><description>`compile`configurationはGradle 3.4で非推奨、7.0で完全に削除された。依存関係を確認するには`compileClasspath`か`runtimeClasspath`を使う。Androidはビルドバリアントごとにconfiguration名が変わる点に注意。</description><pubDate>Sun, 16 Jan 2022 00:00:00 GMT</pubDate></item><item><title>hex文字列(RRGGBB)からARGBのint値を作る</title><link>https://blog.afamung.dev/articles/hex-string-to-argb-color-code/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/hex-string-to-argb-color-code/</guid><description>6桁のhex文字列をJavaのintカラーコードに変換する手順をまとめた。</description><pubDate>Tue, 11 Jul 2017 00:00:00 GMT</pubDate></item><item><title>bashのHISTCONTROL、ignoredups/ignorespace/ignoreboothの違い</title><link>https://blog.afamung.dev/articles/histcontrol-ignoredups-ignorespace-ignoreboth/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/histcontrol-ignoredups-ignorespace-ignoreboth/</guid><description>HISTCONTROLに設定できるignoredups/ignorespace/ignoreboothの挙動を整理した。ignoredupsは直前コマンドとの重複のみを対象にする点に注意。</description><pubDate>Mon, 04 Mar 2013 00:00:00 GMT</pubDate></item><item><title>Homebrew版NodeをやめてnvmにNode.jsを一本化する</title><link>https://blog.afamung.dev/articles/homebrew-node-to-nvm-migration/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/homebrew-node-to-nvm-migration/</guid><description>HomebrewのNode.jsを消してnvmに切り替える手順。corepackとdevcontainerの依存エラーの対処と、npmのバージョンで気になった点も書いた。</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>brew cleanupで Permission denied @ apply2files が出た</title><link>https://blog.afamung.dev/articles/homebrew-permission-denied-apply2files/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/homebrew-permission-denied-apply2files/</guid><description>Homebrewのcleanup時にapply2filesでPermission deniedが出た。原因はプレフィックス配下のファイルがroot所有になっていたことで、chownで直った。</description><pubDate>Thu, 23 Jan 2020 00:00:00 GMT</pubDate></item><item><title>IMEIのチェックデジット、「右から偶数番目を2倍」だと逆になる</title><link>https://blog.afamung.dev/articles/imei-check-digit-luhn-even-odd-position-mistake/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/imei-check-digit-luhn-even-odd-position-mistake/</guid><description>IMEIのチェックデジットはLuhnアルゴリズムで計算するが、桁位置の数え方(右から/左から、奇数/偶数)を間違えると符号が反転して別の値になる。490154203237518を例に正しい手順を書く。</description><pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate></item><item><title>iOSのプッシュ通知entitlementsをdevelopment/productionで分ける</title><link>https://blog.afamung.dev/articles/ios-apns-entitlements-development-production/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ios-apns-entitlements-development-production/</guid><description>APNsのaps-environmentをdevelopmentとproductionで別ファイルに分けて管理する方法。Build Configurationとの紐付けとProvisioning Profileとの整合性が肝。</description><pubDate>Fri, 31 Aug 2018 00:00:00 GMT</pubDate></item><item><title>ATS例外設定について</title><link>https://blog.afamung.dev/articles/ios-ats-exception-settings/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ios-ats-exception-settings/</guid><description>App Transport Security（ATS）を特定ドメインだけ例外にする書き方を整理した。全体を無効化する乱暴な設定との違いと、各キーの役割について。</description><pubDate>Thu, 03 Sep 2015 00:00:00 GMT</pubDate></item><item><title>UIApplicationの非公開プロパティをKVCで叩いてステータスバーの色を変える</title><link>https://blog.afamung.dev/articles/ios-statusbar-kvc-hack/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ios-statusbar-kvc-hack/</guid><description>Swift 3時代、UIApplicationにvalue(forKey:)でstatusBarを取得しbackgroundColorを変えるハックがある。仕組みとリスクをメモ。</description><pubDate>Sun, 09 Dec 2018 00:00:00 GMT</pubDate></item><item><title>EC2のiptablesでPostgreSQLへのポートフォワードを設定する</title><link>https://blog.afamung.dev/articles/iptables-port-forward-postgresql-ec2/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/iptables-port-forward-postgresql-ec2/</guid><description>EC2上のiptables(NAT)を使って、外部からのアクセスを内部のPostgreSQLインスタンスへポートフォワードする手順。sysctl.confへの永続化を忘れると再起動で無効化される点も含めて整理した。</description><pubDate>Thu, 01 Apr 2021 00:00:00 GMT</pubDate></item><item><title>CDK snapshotテストでJestがKilledされる、原因はOOM killerだった</title><link>https://blog.afamung.dev/articles/jest-oom-killed-cdk-snapshot/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/jest-oom-killed-cdk-snapshot/</guid><description>jest --updateSnapshotの実行中にプロセスがKilledで落ちた。原因はOSのOOM killerで、runInBandとNODE_OPTIONSの組み合わせで安定した。</description><pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate></item><item><title>jestのsilentはCLIから一時的に解除できる</title><link>https://blog.afamung.dev/articles/jest-silent-override-with-no-silent/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/jest-silent-override-with-no-silent/</guid><description>--silentを指定したnpmスクリプトでも、実行時に--no-silentを付ければconsole.logを表示させたまま実行できる。ネストしたスクリプト経由だと効かないケースがあるので注意。</description><pubDate>Mon, 26 May 2025 00:00:00 GMT</pubDate></item><item><title>json_encodeでHTML埋め込み用に安全にエスケープする</title><link>https://blog.afamung.dev/articles/json-safe-encode-hex-options/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/json-safe-encode-hex-options/</guid><description>JSON_HEX_TAG/AMP/APOS/QUOTの組み合わせでXSS対策する方法と、各フラグが対象にする文字の範囲を確認した。</description><pubDate>Sat, 13 Jan 2018 00:00:00 GMT</pubDate></item><item><title>JWT認証、アクセストークンとリフレッシュトークンで最低限決めておくこと</title><link>https://blog.afamung.dev/articles/jwt-auth-design-checklist/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/jwt-auth-design-checklist/</guid><description>JWTでアクセストークン＋リフレッシュトークン構成を組むときに、有効期限・ローテーション・管理単位・保存場所のどこで判断が割れるかを整理した。</description><pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate></item><item><title>keytool -list -vでdebug.keystoreのフィンガープリントを見る</title><link>https://blog.afamung.dev/articles/keytool-debug-keystore-fingerprint/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/keytool-debug-keystore-fingerprint/</guid><description>keytool -list -v -keystore debug.keystoreを叩いたときに出てくる各項目の意味と、AndroidのAPIキー登録で使うSHA1の見方をまとめた。</description><pubDate>Tue, 19 Aug 2014 00:00:00 GMT</pubDate></item><item><title>KMSのカスタマー管理キーはCLIでも即削除できない</title><link>https://blog.afamung.dev/articles/kms-customer-managed-key-no-immediate-delete/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/kms-customer-managed-key-no-immediate-delete/</guid><description>KMSのカスタマー管理キーの削除はScheduleKeyDeletionによる7〜30日の待機期間付きの予約削除のみで、CLIやSDKでも即時削除の手段はなかった。待機期間中の挙動と、すぐ使えなくしたい場合の選択肢をまとめた。</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Lambdaのメモリ使用率60〜80%目安、AWS公式ドキュメントのどこにも見当たらなかった</title><link>https://blog.afamung.dev/articles/lambda-memory-utilization-60-80-percent-not-official/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/lambda-memory-utilization-60-80-percent-not-official/</guid><description>Lambdaのメモリ最適化でよく見る「使用率60〜80%が理想」という数字を公式ドキュメントで確認してみたら、そんな記載はなかった。代わりに何を見て判断すべきかまとめる。</description><pubDate>Fri, 13 Dec 2024 00:00:00 GMT</pubDate></item><item><title>LaravelのSchema::enum()はPostgreSQLでCREATE TYPEした型を使わない</title><link>https://blog.afamung.dev/articles/laravel-postgres-enum-create-type-ignored/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/laravel-postgres-enum-create-type-ignored/</guid><description>PostgreSQLのマイグレーションで先にCREATE TYPEしてからSchema::table()のenum()でカラムを追加していたが、実際には作った型は使われずvarchar(255)+CHECK制約になっていた。</description><pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate></item><item><title>php artisan db:seedでClass ExampleSeeder does not existが出た</title><link>https://blog.afamung.dev/articles/laravel-seeder-class-not-found-composer-dump-autoload/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/laravel-seeder-class-not-found-composer-dump-autoload/</guid><description>Seederを新規追加した直後にphp artisan db:seedを実行するとクラスが見つからないと言われた。composer dump-autoloadで解決した。</description><pubDate>Mon, 07 Jan 2019 00:00:00 GMT</pubDate></item><item><title>config/session.phpのsecureとsame_site、実はデフォルトじゃなかった</title><link>https://blog.afamung.dev/articles/laravel-session-secure-samesite-not-default/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/laravel-session-secure-samesite-not-default/</guid><description>過去に書いたLaravelのsession設定メモを見返したら、secureとsame_siteの値をLaravelのデフォルトだと思ってコメントしていたが、実際はどちらもフレームワークのデフォルトから意図的に変更した値だった。</description><pubDate>Sat, 05 Dec 2020 00:00:00 GMT</pubDate></item><item><title>SoftDeletesトレイトでLaravelモデルの論理削除を実装する</title><link>https://blog.afamung.dev/articles/laravel-softdeletes-trait-usage/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/laravel-softdeletes-trait-usage/</guid><description>LaravelのSoftDeletesトレイトを使ったモデル定義と、trashedなデータの取得・物理削除・復元の書き方をまとめる。</description><pubDate>Thu, 14 Mar 2019 00:00:00 GMT</pubDate></item><item><title>Linuxでファイルの各行の後に空行を入れるにはawkかsedを使う</title><link>https://blog.afamung.dev/articles/linux-add-blank-line-after-each-line/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/linux-add-blank-line-after-each-line/</guid><description>awkの1;{print &quot;&quot;}とsedのGコマンド、どちらでも各行の後に空行を追加できる。出力を別ファイルに逃がす例も含めて試した。</description><pubDate>Thu, 17 Jan 2013 00:00:00 GMT</pubDate></item><item><title>sudo date -sでLinuxのシステム時刻を変える</title><link>https://blog.afamung.dev/articles/linux-date-s-manual-clock-change-rtc-ntp/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/linux-date-s-manual-clock-change-rtc-ntp/</guid><description>date -sコマンドでシステム時刻を任意の日時に強制セットする方法と、フォーマットや権限、RTC・ntpdまわりの注意点をまとめた。</description><pubDate>Fri, 01 Feb 2013 00:00:00 GMT</pubDate></item><item><title>lastでは最終ログイン時刻は見れない、lastlogを使う</title><link>https://blog.afamung.dev/articles/linux-lastlog-last-login-time/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/linux-lastlog-last-login-time/</guid><description>lastコマンドでユーザーの最終ログイン時刻を探して詰まった。ユーザーごとの最終ログインを見るならlastlogが該当する。CentOS6/Ubuntu12.04あたりで確認。</description><pubDate>Sun, 20 Jan 2013 00:00:00 GMT</pubDate></item><item><title>usermod -d -m でホームディレクトリを中身ごと変更する</title><link>https://blog.afamung.dev/articles/linux-usermod-change-home-directory/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/linux-usermod-change-home-directory/</guid><description>既存ユーザーのホームディレクトリは usermod -d -m で中身ごと新しいパスへ移せる。-m を付け忘れると設定のパスが変わるだけで中身は残ったままになる。</description><pubDate>Sat, 05 Jul 2014 00:00:00 GMT</pubDate></item><item><title>ls -lSはファイルサイズの降順ソート</title><link>https://blog.afamung.dev/articles/ls-s-sort-tie-order/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ls-s-sort-tie-order/</guid><description>ls -lSがサイズの大きい順に並ぶことを確認したメモ。同サイズファイルの順序や表示の丸めについても注意点として触れる。</description><pubDate>Sun, 30 Jun 2013 00:00:00 GMT</pubDate></item><item><title>macOSのquarantine属性、xattrで一発で消せる</title><link>https://blog.afamung.dev/articles/macos-quarantine-attribute-remove-xattr/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/macos-quarantine-attribute-remove-xattr/</guid><description>ダウンロードしたzipに付くcom.apple.quarantine属性をxattr -dで削除する方法。仕組みと注意点を整理した。</description><pubDate>Wed, 18 Feb 2015 00:00:00 GMT</pubDate></item><item><title>MQTTのCorrelation Data、v5はプロパティ、v3.1.1はペイロードに自分で埋めるしかない</title><link>https://blog.afamung.dev/articles/mqtt-v5-correlation-data-vs-v3-payload/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mqtt-v5-correlation-data-vs-v3-payload/</guid><description>MQTT v5で追加されたCorrelation DataとResponse Topicプロパティの仕組みと、v3.1.1でどう代替するかを整理した。</description><pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate></item><item><title>MySQLのバイナリログをpurgeしてexpire_logs_daysを30日から40日にした</title><link>https://blog.afamung.dev/articles/mysql-binlog-expire-logs-days-30-to-40/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-binlog-expire-logs-days-30-to-40/</guid><description>レプリケーション構成のMySQLでバイナリログが溜まったので、slaveの追従状況を確認してからpurgeし、expire_logs_daysをmy.cnfとconsole両方で30日から40日に変更した手順のメモ。</description><pubDate>Sun, 01 Nov 2015 00:00:00 GMT</pubDate></item><item><title>証明書の有効期限を確認する方法（openssl / MySQL）</title><link>https://blog.afamung.dev/articles/mysql-cert-expiry-check-methods/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-cert-expiry-check-methods/</guid><description>TLS証明書の有効期限を確認する方法をいくつか整理した。openssl コマンドでの確認方法と、MySQLのSSLサーバー証明書をSHOW STATUSで確認する方法。</description><pubDate>Mon, 03 Feb 2020 00:00:00 GMT</pubDate></item><item><title>MySQLで外部キー制約を一時的に無効化する</title><link>https://blog.afamung.dev/articles/mysql-foreign-key-checks-disable-enable/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-foreign-key-checks-disable-enable/</guid><description>SET FOREIGN_KEY_CHECKSでMySQLの外部キー制約チェックを一時的に無効化・再有効化する方法と、そのスコープについて。</description><pubDate>Sat, 18 Jan 2014 00:00:00 GMT</pubDate></item><item><title>processlistで見つけた長時間クエリをKILLで止める</title><link>https://blog.afamung.dev/articles/mysql-kill-not-always-immediate/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-kill-not-always-immediate/</guid><description>`SHOW PROCESSLIST` で長時間実行中のクエリを見つけて `KILL` で止めた手順のメモ。KILLは必ずしも即時にクエリを止めるコマンドではないという注意点も併記。</description><pubDate>Fri, 16 Jan 2015 00:00:00 GMT</pubDate></item><item><title>MySQLのLPADで0埋めするUPDATE、再実行されても安全な条件にする</title><link>https://blog.afamung.dev/articles/mysql-lpad-zero-fill-idempotent-update/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-lpad-zero-fill-idempotent-update/</guid><description>IDを0埋め文字列に変換するUPDATE文を書いていて、全行を一括更新する処理は再実行に弱いことに気づいた。冪等性を保つためのWHERE条件の書き方を整理した。</description><pubDate>Tue, 12 Apr 2016 00:00:00 GMT</pubDate></item><item><title>MySQLでORDER BY RAND()を使わずにランダム行を取る方法</title><link>https://blog.afamung.dev/articles/mysql-random-row-join-technique/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-random-row-join-technique/</guid><description>ORDER BY RAND()は行数が多いテーブルだと全件スキャン＋ソートが発生して重い。JOINでMAX(id)とRAND()を組み合わせてランダムなIDを1つ作り、そこから行を絞り込む方法を試した。</description><pubDate>Thu, 14 Apr 2016 00:00:00 GMT</pubDate></item><item><title>mysqlクライアントの-sオプションでタブ区切り出力にする</title><link>https://blog.afamung.dev/articles/mysql-silent-option-tab-separated-output/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-silent-option-tab-separated-output/</guid><description>mysqlコマンドで-sを付けると整形表示ではなくタブ区切りの出力になる。ヘッダー行を消すには-Nが必要。</description><pubDate>Tue, 03 Feb 2015 00:00:00 GMT</pubDate></item><item><title>MySQLでトリガーをSHOW・DROPする、CREATEはまだ空欄</title><link>https://blog.afamung.dev/articles/mysql-trigger-show-drop-create-pending/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysql-trigger-show-drop-create-pending/</guid><description>SHOW TRIGGERSとDROP TRIGGERの構文を確認した。CREATE TRIGGERは中身が決まってないので基本構文だけ置いておく。</description><pubDate>Sat, 21 Feb 2015 00:00:00 GMT</pubDate></item><item><title>mysqlslapでInnoDBに並列300クライアントの負荷テストをかけてみた</title><link>https://blog.afamung.dev/articles/mysqlslap-innodb-concurrency-300-load-test/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/mysqlslap-innodb-concurrency-300-load-test/</guid><description>MySQL標準搭載のmysqlslapは、CREATE文もクエリも書かずに--auto-generate-sqlだけで負荷テストが組める。実際に使ったオプションと意味を整理した。</description><pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate></item><item><title>nginxでBasic認証を設定する</title><link>https://blog.afamung.dev/articles/nginx-basic-auth-setup/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/nginx-basic-auth-setup/</guid><description>htpasswdファイルの作成方法と、nginxのauth_basic設定、location単位で認証を分けたいときの注意点についてまとめた。</description><pubDate>Sun, 26 Apr 2020 00:00:00 GMT</pubDate></item><item><title>nginxのgzip、location単位で設定変えると優先されるのは一番具体的なパス</title><link>https://blog.afamung.dev/articles/nginx-gzip-location-priority/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/nginx-gzip-location-priority/</guid><description>nginxのgzip設定をlocationごとに変えたときの優先順位と、Content-Encodingヘッダーでの圧縮確認方法。gzip_proxied anyを使うときの注意点も。</description><pubDate>Mon, 27 Jan 2025 00:00:00 GMT</pubDate></item><item><title>nginxのメンテナンスモードはmapで組む</title><link>https://blog.afamung.dev/articles/nginx-maintenance-mode-with-map/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/nginx-maintenance-mode-with-map/</guid><description>フラグファイルの有無で503を返すnginxのメンテナンスモードを、ifを使わずmapディレクティブだけで組んだ。</description><pubDate>Tue, 03 Mar 2015 00:00:00 GMT</pubDate></item><item><title>nginxの`ssl`ディレクティブが1.15.0で非推奨に、`listen`ディレクティブへ統一された</title><link>https://blog.afamung.dev/articles/nginx-ssl-directive-deprecated/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/nginx-ssl-directive-deprecated/</guid><description>nginx 1.15.0で`ssl on;`ディレクティブが非推奨になり、`listen`ディレクティブの`ssl`パラメータへの移行が必要になった。設定変更の具体例をまとめる。</description><pubDate>Tue, 05 Jun 2018 00:00:00 GMT</pubDate></item><item><title>nginxのtry_filesでrewrite or internal redirection cycleが起きる条件</title><link>https://blog.afamung.dev/articles/nginx-try-files-index-html-redirect-loop/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/nginx-try-files-index-html-redirect-loop/</guid><description>try_files $uri $uri/ /index.html; を使うSPA向け設定で、document rootにindex.htmlの実体が無いと内部リダイレクトがループしてエラーになる。原因と$uri $uri/ =404;で回避する方法を確認した。</description><pubDate>Wed, 10 May 2017 00:00:00 GMT</pubDate></item><item><title>npm ci --prefixは指定ディレクトリにpackage.jsonが無いと動かない</title><link>https://blog.afamung.dev/articles/npm-ci-prefix-requires-package-json/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/npm-ci-prefix-requires-package-json/</guid><description>npm ci --prefix path/to/dir で別ディレクトリにインストールできるか検証した。package.jsonとpackage-lock.jsonが両方揃っていれば動くが、片方だけだと失敗するケースが複数バージョンで報告されている。</description><pubDate>Thu, 17 Dec 2020 00:00:00 GMT</pubDate></item><item><title>npm 11.16.0でpackage-lock.jsonのresolvedが消えてた</title><link>https://blog.afamung.dev/articles/npm-lockfile-resolved-field-removal/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/npm-lockfile-resolved-field-removal/</guid><description>CIをTrixieに上げたらnpmが11.16.0になって、package-lock.jsonの一部からresolved/integrityが消えた。調べたらbundled dependency向けの整理だった。</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>package.jsonの独自ライセンス表記、&quot;UNLICENSED&quot;と&quot;SEE LICENSE IN&quot;の使い分け</title><link>https://blog.afamung.dev/articles/npm-package-json-unlicensed-see-license-in/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/npm-package-json-unlicensed-see-license-in/</guid><description>package.jsonで社外非公開・独自ライセンスにしたい時の書き方をまとめた。&quot;UNLICENSED&quot;と&quot;SEE LICENSE IN &lt;file&gt;&quot;の組み合わせと、LICENSE.txtへの実際の書き方について。</description><pubDate>Fri, 10 Jan 2025 00:00:00 GMT</pubDate></item><item><title>npm trusted publishingはscopedでも事前登録できない</title><link>https://blog.afamung.dev/articles/npm-trusted-publishing-requires-existing-package/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/npm-trusted-publishing-requires-existing-package/</guid><description>npm trusted publishingはscoped/unscoped問わず、パッケージが存在してからでないとTrusted Publisherを設定できない。Organization側での事前登録のような機能もない。</description><pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate></item><item><title>devcontainerのnode featureがv2でnpmVersion対応してた</title><link>https://blog.afamung.dev/articles/npm-version-devcontainer-node-feature-v2/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/npm-version-devcontainer-node-feature-v2/</guid><description>ghcr.io/devcontainers/features/node で npmVersion を指定してもv1では無視されてたが、v2に上げたら効くようになってた。実際にnpm -vで確認した。</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate></item><item><title>nvmでNode.jsをバージョン固定インストールする</title><link>https://blog.afamung.dev/articles/nvm-v0-38-0-and-node-14-lts/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/nvm-v0-38-0-and-node-14-lts/</guid><description>nvmのインストールから特定バージョンのNode.jsをデフォルトにするまでの手順。バージョンは全部固定する。</description><pubDate>Mon, 13 Sep 2021 00:00:00 GMT</pubDate></item><item><title>Objective-CとSwiftでUUID文字列を生成する、バージョン別の書き方</title><link>https://blog.afamung.dev/articles/objective-c-swift-uuid-string-by-version/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/objective-c-swift-uuid-string-by-version/</guid><description>UUIDを文字列で取得する方法をObjective-CとSwiftで比較する。Swiftは3を境にNSUUIDからUUIDへの型統一とAPI Design Guidelinesによる命名規則変更が入っていて、バージョンによって書き方が違う。</description><pubDate>Wed, 15 Aug 2018 00:00:00 GMT</pubDate></item><item><title>ON CONFLICT DO UPDATEが「cannot affect row a second time」で落ちる原因は1つだけ</title><link>https://blog.afamung.dev/articles/on-conflict-do-update-cannot-affect-row-a-second-time/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/on-conflict-do-update-cannot-affect-row-a-second-time/</guid><description>PostgreSQLのON CONFLICT DO UPDATEで出るcardinality violationエラー。原因はインデックス不足でもキー設計でもなく、同一INSERTコマンド内に同じ一意キーを持つ行が複数含まれていること、それだけ。</description><pubDate>Fri, 04 Sep 2020 00:00:00 GMT</pubDate></item><item><title>OOM Killerからプロセスを守る oom_adj、実は非推奨だった</title><link>https://blog.afamung.dev/articles/oom-adj-is-deprecated-but-still-works/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/oom-adj-is-deprecated-but-still-works/</guid><description>dstat --top-oomでKill候補を確認して、oom_adjに-17を書き込むと対象から除外できる。ただしこの方法自体はカーネル2.6.36から非推奨で、今はoom_score_adjが本命らしい。</description><pubDate>Fri, 17 Sep 2021 00:00:00 GMT</pubDate></item><item><title>opensslのgenrsaとreqでRSA秘密鍵とCSRを作る</title><link>https://blog.afamung.dev/articles/openssl-genrsa-csr/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/openssl-genrsa-csr/</guid><description>opensslのgenrsa/reqでRSA秘密鍵とCSRを生成した手順のメモ。</description><pubDate>Fri, 12 Jun 2015 00:00:00 GMT</pubDate></item><item><title>openssl s_clientで-servernameを指定するとSNI環境の証明書を個別に確認できる</title><link>https://blog.afamung.dev/articles/openssl-sclient-servername-sni-certificate-check/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/openssl-sclient-servername-sni-certificate-check/</guid><description>1つのIP・ポートで複数ドメインの証明書を運用している場合、openssl s_clientに-servernameを付けるとSNIで対象のドメインの証明書だけを取り出して確認できる。</description><pubDate>Tue, 17 Aug 2021 00:00:00 GMT</pubDate></item><item><title>OTelのparentbased_traceidratio、SQS経由のLambdaだと親を継承しない</title><link>https://blog.afamung.dev/articles/otel-parentbased-traceidratio-sqs-lambda/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/otel-parentbased-traceidratio-sqs-lambda/</guid><description>API Gateway経由なら親のサンプリング判断を継承できるが、SQSトリガーのLambdaだとそもそも親コンテキストが渡らず、traceidratioがそのまま効くという話。</description><pubDate>Tue, 07 Oct 2025 00:00:00 GMT</pubDate></item><item><title>OWASPのCSVインジェクション対策、改行(LF)と全角文字も対象になってた</title><link>https://blog.afamung.dev/articles/owasp-csv-injection-adds-lf-and-fullwidth/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/owasp-csv-injection-adds-lf-and-fullwidth/</guid><description>=, +, -, @にタブとCRを加えて対策していたCSVインジェクションの話。2025年8月にOWASPの公式ページへ改行(LF)が追加され、全角の＝＋－＠にも言及されているのを確認した。</description><pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate></item><item><title>OWASPのCSVインジェクション対象文字、タブと改行(CR)も追加されてた</title><link>https://blog.afamung.dev/articles/owasp-csv-injection-adds-tab-and-cr/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/owasp-csv-injection-adds-tab-and-cr/</guid><description>以前=, +, -, @の4文字で対策していたCSVインジェクションの話。SymfonyのCVE-2021-41270を追った流れで、OWASPの対象文字リストがタブとCRにも広がっていたのに気づいた。</description><pubDate>Thu, 02 Dec 2021 00:00:00 GMT</pubDate></item><item><title>php -d memory_limit=256Mでメモリ制限を一時的に変える</title><link>https://blog.afamung.dev/articles/php-cli-memory-limit-override/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/php-cli-memory-limit-override/</guid><description>CLI実行時に -d オプションでmemory_limitを上書きするとphp.iniは書き換わらず、そのプロセスだけ制限が変わる。</description><pubDate>Sat, 02 Nov 2013 00:00:00 GMT</pubDate></item><item><title>php-fpmの標準出力をDockerのstderrにまとめるため名前付きパイプを使った</title><link>https://blog.afamung.dev/articles/php-fpm-stderr-named-pipe/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/php-fpm-stderr-named-pipe/</guid><description>php-fpmは子プロセスの出力をDockerのstdout/stderrにそのまま出さないため、mkfifoで作った名前付きパイプ経由でLaravelのログと一本化した。PHPネイティブのエラーとJSON LinesのLaravelログが混在する点は未検証のまま残っている。</description><pubDate>Fri, 15 Nov 2019 00:00:00 GMT</pubDate></item><item><title>PHPでメール送信者名(Fromヘッダ)をエンコードしないと文字化けする</title><link>https://blog.afamung.dev/articles/php-mail-sender-name-mb-encode-mimeheader/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/php-mail-sender-name-mb-encode-mimeheader/</guid><description>メール送信時、Fromヘッダの日本語名をそのまま入れると文字化けする。mb_encode_mimeheaderでMIMEエンコードして解決した。</description><pubDate>Wed, 09 Oct 2013 00:00:00 GMT</pubDate></item><item><title>PHPUnitのassertメソッド一覧</title><link>https://blog.afamung.dev/articles/phpunit-assert-methods-memo/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/phpunit-assert-methods-memo/</guid><description>よく使うPHPUnitのassert系メソッドを型ごとに整理したメモ。mixed・数値・文字列・配列・オブジェクト・ファイルの区分でまとめてある。</description><pubDate>Thu, 12 Jun 2014 00:00:00 GMT</pubDate></item><item><title>パイロットランプとパイロットライト</title><link>https://blog.afamung.dev/articles/pilot-lamp-vs-pilot-light-dr/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/pilot-lamp-vs-pilot-light-dr/</guid><description>「パイロットランプ」でふと調べ直したら出てきたのはDR戦略の「パイロットライト」だった。用語を整理しつつ、DRのパイロットライト方式の構成とRTO/RPOをまとめ直した。</description><pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate></item><item><title>PostgreSQLで `speed * 3 &gt; value` の比較にインデックスが効かない理由</title><link>https://blog.afamung.dev/articles/postgres-arithmetic-expression-index-not-used/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-arithmetic-expression-index-not-used/</guid><description>対象カラムに算術演算を行うと単純なインデックスは使われない理由をまとめた。比較相手が定数かカラムかで対策が変わる点も。</description><pubDate>Tue, 10 Dec 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのARRAY_AGGでユニークな配列を取得する</title><link>https://blog.afamung.dev/articles/postgres-array-agg-distinct-order-by/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-array-agg-distinct-order-by/</guid><description>ARRAY_AGG(DISTINCT ...)でGROUP BYの集約結果を重複なしの配列として取得できる。順序を揃えたい場合はORDER BYの併記が必要。</description><pubDate>Mon, 14 Oct 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLでis_anonymousがtrueの時だけemailをNULLにするCHECK制約</title><link>https://blog.afamung.dev/articles/postgres-check-constraint-conditional-null/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-check-constraint-conditional-null/</guid><description>あるカラムがtrueの時だけ別カラムがNULLであることを保証したい。PostgreSQLのCHECK制約でどう書けるか確認した。</description><pubDate>Sat, 15 Mar 2025 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのCHECK制約・外部キー制約は直接修正できない、DROP→ADDし直すしかない</title><link>https://blog.afamung.dev/articles/postgres-constraint-modify-drop-add/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-constraint-modify-drop-add/</guid><description>PostgreSQLでCHECK制約や外部キー制約の条件を変えたい時、ALTERで直接書き換える方法はなく、DROP CONSTRAINT→ADD CONSTRAINTが必要という話。NOT NULLだけは例外で直接変更できる。</description><pubDate>Wed, 26 Mar 2025 00:00:00 GMT</pubDate></item><item><title>PostgreSQLでintervalを「総時間:分:秒」形式にフォーマットする</title><link>https://blog.afamung.dev/articles/postgres-extract-epoch-modulo-double-precision-error/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-extract-epoch-modulo-double-precision-error/</guid><description>`1 day 00:15:25`のようなinterval型の値を`24:15:25`のような総時間形式に変換するクエリを書く。</description><pubDate>Tue, 15 Oct 2024 00:00:00 GMT</pubDate></item><item><title>Postgres公式イメージにslimタグは無い、OSはbookwormに揃える</title><link>https://blog.afamung.dev/articles/postgres-image-no-slim-tag-align-to-bookworm/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-image-no-slim-tag-align-to-bookworm/</guid><description>DockerのPostgres公式イメージにslimタグが存在しないことを確認した。OS統一もbookwormにした。</description><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのテーブルサイズ、概算で見るか正確に見るかで使う関数が違う</title><link>https://blog.afamung.dev/articles/postgres-relpages-table-size-pitfall/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-relpages-table-size-pitfall/</guid><description>pg_classのrelpages/reltuplesから計算する方法とpg_relation_size()系の関数、どちらも「テーブルサイズ」と呼ばれるけど中身は別物。用途に応じた使い分けと、relpages計算でハマりがちな整数割り算のバグを整理した。</description><pubDate>Wed, 06 Apr 2022 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのUNIQUE NULLS NOT DISTINCT、NULLは同じ値として扱われる</title><link>https://blog.afamung.dev/articles/postgres-unique-nulls-not-distinct-trap/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgres-unique-nulls-not-distinct-trap/</guid><description>「categoryごとにcodeを一意にしたい」だけのつもりが、codeがNULLのレコードで2件目からUNIQUE制約違反になった。原因と部分UNIQUEインデックスでの対応。</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Ubuntu 20.04 + PostgreSQL 11、pgdgリポジトリ追加からパスワード設定まで</title><link>https://blog.afamung.dev/articles/postgresql-11-ubuntu-2004-apt-install/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-11-ubuntu-2004-apt-install/</guid><description>Ubuntu 20.04にAPT経由でPostgreSQL 11を入れる手順のメモ。listen_addressesの全開放設定とpostgresユーザーのパスワード変更まで。</description><pubDate>Tue, 24 Nov 2020 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのARRAY_AGGは対象行が0件だとNULLを返す</title><link>https://blog.afamung.dev/articles/postgresql-array-agg-no-rows-returns-null/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-array-agg-no-rows-returns-null/</guid><description>ARRAY_AGGで複数行を配列にまとめる基本と、行がないときはNULLになる挙動、順序が保証されない点についてのメモ。</description><pubDate>Tue, 10 Oct 2023 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのCOPYで「extra data after last expected column」が出る原因は列数不一致</title><link>https://blog.afamung.dev/articles/postgresql-copy-extra-data-after-last-expected-column/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-copy-extra-data-after-last-expected-column/</guid><description>COPYでCSVを取り込むと出るこのエラーの原因を整理した。ファイル側の列数がテーブル側より多いときに出るエラーで、テーブル側の列が多いケースとは別物。</description><pubDate>Thu, 03 Sep 2020 00:00:00 GMT</pubDate></item><item><title>PostgreSQLへのCSVインポートで特定の文字列をNULL扱いにする方法</title><link>https://blog.afamung.dev/articles/postgresql-csv-import-null-as-option/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-csv-import-null-as-option/</guid><description>COPY、\copy、aws_s3.table_import_from_s3、それぞれでNULLとして扱う文字列を指定するときの書き方が微妙に違う。3パターンまとめ。</description><pubDate>Mon, 13 May 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLで特定カラムだけ重複なしに選択するにはDISTINCT ONを使う</title><link>https://blog.afamung.dev/articles/postgresql-distinct-multiple-columns-vs-distinct-on/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-distinct-multiple-columns-vs-distinct-on/</guid><description>PostgreSQLでSELECT DISTINCTに複数カラムを指定すると、そのカラムの組み合わせで重複判定される。特定の1カラムだけを軸に重複排除したいならDISTINCT ONを使う。</description><pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLでCOUNT(DISTINCT col)と別カラムの集約を同時に出す</title><link>https://blog.afamung.dev/articles/postgresql-distinct-with-aggregate-functions/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-distinct-with-aggregate-functions/</guid><description>GROUP BYなしでもSELECT列を全部集約関数にすればDISTINCTと別カラムの集約は一発で書ける。複数カラムのDISTINCTやCOUNT(DISTINCT col1, col2)もPostgreSQLでは普通に動く。</description><pubDate>Sun, 15 Oct 2023 00:00:00 GMT</pubDate></item><item><title>PostgreSQLでtimestampから経過日数（整数）を計算する</title><link>https://blog.afamung.dev/articles/postgresql-elapsed-days-integer/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-elapsed-days-integer/</guid><description>created_atのようなtimestampカラムから、現在までの経過日数を整数で出す方法。DATE型にキャストしてから引き算するだけで済む。</description><pubDate>Fri, 15 Mar 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのFDW外部サーバはpg_foreign_serverで一覧できる</title><link>https://blog.afamung.dev/articles/postgresql-fdw-list-foreign-servers/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-fdw-list-foreign-servers/</guid><description>PostgreSQLに登録済みのForeign Data Wrapperサーバはpg_foreign_serverを見れば一覧できる。srvoptionsに接続情報も入っている。</description><pubDate>Fri, 18 Mar 2022 00:00:00 GMT</pubDate></item><item><title>PostgreSQLでユーザごとに指定時刻に最も近い1件を取る</title><link>https://blog.afamung.dev/articles/postgresql-nearest-time-per-user-window-function/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-nearest-time-per-user-window-function/</guid><description>ROW_NUMBER()とABS(EXTRACT(EPOCH FROM ...))を組み合わせて、ユーザ単位で指定時刻に最も近いレコードを1件だけ拾うやり方。timestamptzでの型ズレとtie（同着）の挙動には注意が必要だった。</description><pubDate>Tue, 12 Mar 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLで日時からN分前を計算するにはINTERVALを引くだけでいい</title><link>https://blog.afamung.dev/articles/postgresql-now-vs-clock-timestamp/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-now-vs-clock-timestamp/</guid><description>カラムの日時、固定の日時、現在時刻のそれぞれからN分前を求める方法をまとめた。now()の挙動には注意点がある。</description><pubDate>Sun, 15 Mar 2020 00:00:00 GMT</pubDate></item><item><title>PostgreSQLで前日の日付を出す、Asia/Tokyoなら引き算とタイムゾーン変換の順番は気にしなくていい</title><link>https://blog.afamung.dev/articles/postgresql-previous-day-date-timezone-tokyo/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-previous-day-date-timezone-tokyo/</guid><description>CURRENT_TIMESTAMPから前日の日付を取るクエリを2パターン比較した。Asia/TokyoはDSTがないので順序を入れ替えても結果は同じだった。DSTがあるタイムゾーンだと話が変わる。</description><pubDate>Thu, 05 Dec 2024 00:00:00 GMT</pubDate></item><item><title>psqlのメタコマンド、よく使うやつだけ覚えておく</title><link>https://blog.afamung.dev/articles/postgresql-psql-common-meta-commands/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-psql-common-meta-commands/</guid><description>psqlでよく使うメタコマンド（\d系、\c系など）を一覧化。\duと\dgが同じ結果になる点だけ補足しておく。</description><pubDate>Sat, 15 Sep 2018 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのクエリ実行時間計測、pg_stat_statementsのカラム名はPG13で変わってる</title><link>https://blog.afamung.dev/articles/postgresql-query-execution-time-measurement/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-query-execution-time-measurement/</guid><description>クエリ実行時間の計測方法を整理していたら、pg_stat_statementsのカラム名がPostgreSQL 13を境にtotal_time/mean_timeからtotal_exec_time/mean_exec_timeに変わっていた。ログでの計測でも見落としがちな重複設定があった。</description><pubDate>Wed, 04 Dec 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのSET CONSTRAINTS ALL DEFERREDを書いても外部キーチェックが即時のままだった</title><link>https://blog.afamung.dev/articles/postgresql-set-constraints-deferred-requires-deferrable/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-set-constraints-deferred-requires-deferrable/</guid><description>トランザクション内でSET CONSTRAINTS ALL DEFERREDを使ったが効かなかった。原因は外部キー制約自体がDEFERRABLEで定義されていなかったこと。</description><pubDate>Wed, 15 Sep 2021 00:00:00 GMT</pubDate></item><item><title>SHOW timezoneで分かるのはOSのタイムゾーンじゃない</title><link>https://blog.afamung.dev/articles/postgresql-show-timezone-is-session-setting/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-show-timezone-is-session-setting/</guid><description>PostgreSQLで今のタイムゾーンを確実に確認する方法を整理する。SHOW timezoneはセッションのTimeZoneパラメータを見ているだけで、どの階層で上書きされているかまでは分からない。</description><pubDate>Tue, 21 May 2013 00:00:00 GMT</pubDate></item><item><title>PostgreSQLのtimestamptzカラムにAT TIME ZONEを使うと型がtimestampに変わる</title><link>https://blog.afamung.dev/articles/postgresql-timestamptz-at-time-zone-direction/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql-timestamptz-at-time-zone-direction/</guid><description>timestamptz型のカラムにAT TIME ZONEを使うと、内部のUTC値を指定タイムゾーンのローカル時刻に変換したtimestamp without time zoneが返る。timestamp型に対して使う場合とは挙動が逆になる。</description><pubDate>Tue, 03 Dec 2024 00:00:00 GMT</pubDate></item><item><title>PostgreSQL 11のpg_dump/pg_restoreはcustom形式が楽</title><link>https://blog.afamung.dev/articles/postgresql11-pg-dump-pg-restore-custom-format/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/postgresql11-pg-dump-pg-restore-custom-format/</guid><description>PostgreSQL 11でのダンプ・リストア手順をcustom形式でまとめた。拡張機能は事前作成が必要で、オーナーが違う環境では--no-ownerが要る。</description><pubDate>Wed, 11 Nov 2020 00:00:00 GMT</pubDate></item><item><title>projenのprojenrcをJSからTSにする（projenrcTs: true）</title><link>https://blog.afamung.dev/articles/projen-projenrc-js-to-ts/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/projen-projenrc-js-to-ts/</guid><description>projenrcTs: trueを付けてprojenrc.jsをTypeScript化する手順のメモ。requireをimportに書き換える必要がある点と、途中で2回projenを走らせる点だけ注意。</description><pubDate>Mon, 06 Feb 2023 00:00:00 GMT</pubDate></item><item><title>projenでyarn installが404、ts-nodeも入らずyarn projenできなかった</title><link>https://blog.afamung.dev/articles/projen-yarn-install-404-removed-package/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/projen-yarn-install-404-removed-package/</guid><description>依存パッケージがレジストリから消えて yarn install が404で止まり、ts-node が入らないせいで yarn projen も実行できなくなった。生成済みの package.json を一時的に手で直して install を通し、あとは projen に作り直させて解決した。</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate></item><item><title>RDSがmodifying状態のとき停止できない</title><link>https://blog.afamung.dev/articles/rds-modifying-status-cannot-stop/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/rds-modifying-status-cannot-stop/</guid><description>RDSのDBインスタンスステータスがmodifyingの間はStop/Rebootが受け付けられない。InvalidDBInstanceStateで弾かれる挙動と、待つべき理由を整理した。</description><pubDate>Fri, 23 Aug 2024 00:00:00 GMT</pubDate></item><item><title>RetrofitのGsonConverterにFieldNamingPolicyを渡すとキー変換が自動化される</title><link>https://blog.afamung.dev/articles/retrofit-gson-field-naming-policy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/retrofit-gson-field-naming-policy/</guid><description>Retrofit2とGsonを組み合わせるとき、JSONのキーがスネークケースならFieldNamingPolicyで一括変換できる。フィールドごとに@SerializedNameを書く必要がなくなる。</description><pubDate>Thu, 16 Feb 2017 00:00:00 GMT</pubDate></item><item><title>S3バケットポリシー、公開/IP制限/CloudFront限定の3パターン</title><link>https://blog.afamung.dev/articles/s3-bucket-policy-public-ip-cloudfront-patterns/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-bucket-policy-public-ip-cloudfront-patterns/</guid><description>S3バケットの公開範囲を制御するバケットポリシーを3種類比較した。全公開、特定IPからのみ許可、CloudFront経由のみ許可（OAI）のポリシー例と使い分け。</description><pubDate>Sun, 12 May 2019 00:00:00 GMT</pubDate></item><item><title>S3 CORS設定の各要素とレスポンスヘッダーの対応関係</title><link>https://blog.afamung.dev/articles/s3-cors-configuration-elements/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-cors-configuration-elements/</guid><description>AllowedOrigin・AllowedMethod・AllowedHeader・MaxAgeSecondsがそれぞれどのCORSレスポンスヘッダーに対応するかを整理した。AllowedOriginにnullを指定するのは推奨されていない点も確認した。</description><pubDate>Fri, 10 May 2019 00:00:00 GMT</pubDate></item><item><title>S3のKMSキーを別のキーに変更する、UpdateObjectEncryptionでコピー不要になった</title><link>https://blog.afamung.dev/articles/s3-kms-key-rotation-update-object-encryption/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-kms-key-rotation-update-object-encryption/</guid><description>S3オブジェクトのSSE-KMSキーをローテーションする方法。従来のaws s3 cp再コピー方式と、2026年2月に追加されたUpdateObjectEncryption APIの違いを整理した。</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Amazon S3のバケットにあるファイルから最新のファイル名を1つ取得する</title><link>https://blog.afamung.dev/articles/s3-list-objects-v2-max-1000-and-key-order/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-list-objects-v2-max-1000-and-key-order/</guid><description>ListObjectsV2で一覧を取ってlastModifiedでソートし、先頭を1件取る方法。KotlinとAWS CLIでの実装例、および1000件を超える場合の注意点。</description><pubDate>Mon, 26 Jun 2023 00:00:00 GMT</pubDate></item><item><title>S3プレフィックス配下の合計サイズとオブジェクト数を確認する2つの方法</title><link>https://blog.afamung.dev/articles/s3-ls-recursive-summarize-human-readable/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-ls-recursive-summarize-human-readable/</guid><description>S3のプレフィックス配下の合計サイズとオブジェクト数を、コンソールとCLIそれぞれで確認する方法をメモ。</description><pubDate>Wed, 27 Jul 2022 00:00:00 GMT</pubDate></item><item><title>S3 Tablesの隠しパーティション、設計不要って意味じゃなかった</title><link>https://blog.afamung.dev/articles/s3-tables-hidden-partitioning-still-needs-design/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-tables-hidden-partitioning-still-needs-design/</guid><description>AWS S3 TablesのIcebergテーブルで「物理パーティションを直接操作する必要はない」を読んで、パーティション設計自体が不要だと誤読しかけた。AthenaでのDDL制約と、CTASが使えないというS3 Tables固有の制約を整理した。</description><pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate></item><item><title>S3 TablesのMERGEにLake FormationのINSERT/DELETE権限は本当に効くのか</title><link>https://blog.afamung.dev/articles/s3-tables-lake-formation-merge-permissions/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/s3-tables-lake-formation-merge-permissions/</guid><description>AthenaのIceberg MERGE権限をLake Formationで絞れるか調べた。通常のGlue Catalog上のIcebergとS3 Tablesとで話が変わるらしい。</description><pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate></item><item><title>SageMaker Studioでカーネルが死ぬ原因、だいたいメモリ不足</title><link>https://blog.afamung.dev/articles/sagemaker-studio-kernel-dies-memory/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sagemaker-studio-kernel-dies-memory/</guid><description>SageMaker Studioで「Kernel appears to have died. It will restart automatically.」が出た時に確認したことと対処法。原因の大半はメモリ不足。</description><pubDate>Thu, 14 Dec 2023 00:00:00 GMT</pubDate></item><item><title>セキュリティ・バイ・オブスキュリティ、思想は150年前でも言葉は1990年代だった</title><link>https://blog.afamung.dev/articles/security-through-obscurity-term-history/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/security-through-obscurity-term-history/</guid><description>Kerckhoffsの原則自体は1883年からあるけど、「security through/by obscurity」というフレーズが定着したのはUnix文化圏の1980〜90年代らしい。セキュア・バイ・デザインも似たパターンで、思想は1970年代、用語の定着は2010年代前後。</description><pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate></item><item><title>sedでドットの後に改行を入れる方法とGNU/BSDの違い</title><link>https://blog.afamung.dev/articles/sed-insert-newline-after-dot-gnu-vs-bsd/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sed-insert-newline-after-dot-gnu-vs-bsd/</guid><description>Linuxでファイル内のドットの後に改行を挿入したい時、sedの置換で対応できる。GNU sedとBSD sedで-iオプションの挙動が違うので環境ごとに注意が必要だった。</description><pubDate>Tue, 12 Feb 2013 00:00:00 GMT</pubDate></item><item><title>SentencePiece Unigramの語彙サイズ、目安と実例を確認した</title><link>https://blog.afamung.dev/articles/sentencepiece-unigram-vocab-size/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sentencepiece-unigram-vocab-size/</guid><description>SentencePiece Unigramモデルの語彙サイズはデータ規模・言語・目的で変わるという一般論を、実際の研究事例（BabyLM、PEGASUS、Xmodel-1.5など）の数値で裏付けてみた。</description><pubDate>Wed, 20 Dec 2023 00:00:00 GMT</pubDate></item><item><title>SentencePieceのvocab_sizeエラー、原因は学習データの語彙不足</title><link>https://blog.afamung.dev/articles/sentencepiece-vocab-size-numeric-tokenizer/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sentencepiece-vocab-size-numeric-tokenizer/</guid><description>SentencePieceTrainer.Trainでvocab_size=32000を指定したらVocabulary size too highで落ちた。原因は学習データから作れる語彙数が不足していたこと。</description><pubDate>Tue, 19 Dec 2023 00:00:00 GMT</pubDate></item><item><title>SESのアカウントレベル抑制リストをCLIで確認・削除する</title><link>https://blog.afamung.dev/articles/ses-account-level-suppression-list-cli/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ses-account-level-suppression-list-cli/</guid><description>sesv2コマンドでアカウントレベル抑制リストの一覧取得と個別削除を行う手順。あわせて「グローバル抑制リスト」との違いも整理した。</description><pubDate>Fri, 19 Feb 2021 00:00:00 GMT</pubDate></item><item><title>SESのメールボックスシミュレーターでバウンス・苦情をテストする</title><link>https://blog.afamung.dev/articles/ses-mailbox-simulator-bounce-complaint-test/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ses-mailbox-simulator-bounce-complaint-test/</guid><description>Amazon SESにはbounce@やcomplaint@などのテスト専用アドレスが用意されていて、実際のバウンス率やクレーム率に影響を与えずに通知フローを検証できる。</description><pubDate>Fri, 12 Feb 2021 00:00:00 GMT</pubDate></item><item><title>SESで送信先メールアドレスをexample.comドメインに制限する</title><link>https://blog.afamung.dev/articles/ses-recipient-restriction-forallvalues-not-foranyvalue/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ses-recipient-restriction-forallvalues-not-foranyvalue/</guid><description>SESのIAMポリシーで受信者をexample.comドメインだけに制限する方法。ses:Recipientsは複数値キーなのでForAllValues:StringLikeを使う必要がある。</description><pubDate>Sun, 20 Jan 2019 00:00:00 GMT</pubDate></item><item><title>CloudTrailにSESのSendEmail・SendRawEmailのログは残らない</title><link>https://blog.afamung.dev/articles/ses-sendemail-not-logged-in-cloudtrail/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ses-sendemail-not-logged-in-cloudtrail/</guid><description>SESの送信ログをCloudTrailで追おうとしたら見つからなかった話。管理系APIは記録されるが、送信系API（SendEmail/SendRawEmail）は対象外だったのが原因だった。</description><pubDate>Mon, 05 Aug 2024 00:00:00 GMT</pubDate></item><item><title>シェルスクリプトから自分のいるディレクトリを取得する</title><link>https://blog.afamung.dev/articles/shell-script-get-own-directory-with-dirname/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/shell-script-get-own-directory-with-dirname/</guid><description>dirname $0 と cd; pwd を組み合わせて、シェルスクリプト自身が置かれているディレクトリを絶対パスで取得する方法についてのメモ。</description><pubDate>Fri, 08 Mar 2013 00:00:00 GMT</pubDate></item><item><title>SNSの1トピックから複数Lambdaへのファンアウト、フィルタポリシーで振り分けられるか確認した</title><link>https://blog.afamung.dev/articles/sns-fanout-multiple-lambda-filter-policy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sns-fanout-multiple-lambda-filter-policy/</guid><description>SNS 1トピックへの複数Lambdaサブスクライブと、サブスクリプションフィルタポリシーによる振り分けについて、公式ドキュメントで整理した。</description><pubDate>Thu, 23 Jan 2025 00:00:00 GMT</pubDate></item><item><title>SQLのMIN、テーブルなしでも出せる</title><link>https://blog.afamung.dev/articles/sql-min-without-table/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sql-min-without-table/</guid><description>SELECT MINは集約関数なのでFROM句がなくても動く。テーブルを用意せず数値だけから最小値を求める方法と、NULLが混ざったときの挙動を試した。</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate></item><item><title>SQSのDLQ、システム全体で1つにまとめるのは微妙</title><link>https://blog.afamung.dev/articles/sqs-dlq-single-queue-anti-pattern/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sqs-dlq-single-queue-anti-pattern/</guid><description>SQSのDead Letter Queueをシステム全体で1つに集約する運用について、避けた方がいい理由とモニタリング・再処理の方法を整理した。</description><pubDate>Fri, 06 Sep 2024 00:00:00 GMT</pubDate></item><item><title>SQS→Lambda、10件中1件失敗で10件全部再処理されてた</title><link>https://blog.afamung.dev/articles/sqs-lambda-partial-batch-response/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sqs-lambda-partial-batch-response/</guid><description>batchSize 10でLambdaが1件だけ失敗すると、reportBatchItemFailuresなしだと成功した9件も含めて全件再試行になる。DLQなしだと保持期間まで無限にループする。</description><pubDate>Fri, 26 Sep 2025 00:00:00 GMT</pubDate></item><item><title>SQSのVisibilityTimeout、190秒必要なのに180秒で運用してた</title><link>https://blog.afamung.dev/articles/sqs-visibility-timeout-190-vs-180/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/sqs-visibility-timeout-190-vs-180/</guid><description>Lambda + SQS + DLQ構成でVisibilityTimeoutを180秒にしてたけど、AWS公式の「6倍+バッチウィンドウ」の式で計算したら190秒必要だった。DLQ側の値の決め方も整理した。</description><pubDate>Sat, 27 Sep 2025 00:00:00 GMT</pubDate></item><item><title>OpenSSH形式の秘密鍵のパスフレーズはssh-keygen -pで外す</title><link>https://blog.afamung.dev/articles/ssh-keygen-remove-passphrase-openssh-format/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ssh-keygen-remove-passphrase-openssh-format/</guid><description>OpenSSH形式の秘密鍵はopenssl rsaでは扱えない。ssh-keygen -pを使えば形式を問わずパスフレーズだけを外せる。</description><pubDate>Tue, 15 Jan 2019 00:00:00 GMT</pubDate></item><item><title>SSHの-Lで`localhost`と`127.0.0.1`を書き分ける意味、実はほぼない</title><link>https://blog.afamung.dev/articles/ssh-port-forward-localhost-127/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ssh-port-forward-localhost-127/</guid><description>SSHポートフォワードでlocalhostと127.0.0.1のどちらを指定すべきか調べた。合わせて転送先が真っ白になる原因とHTTPS転送時の証明書警告についても書く。</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate></item><item><title>SSH接続先のホスト名でmacOS Terminalの背景色を自動で変える</title><link>https://blog.afamung.dev/articles/ssh-terminal-background-color-by-hostname/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ssh-terminal-background-color-by-hostname/</guid><description>sshラッパースクリプトでホスト名にprod/devを含む場合にTerminal.appの背景色をosascript経由で切り替える。切断時に色を戻す仕組みと、実装中に見つかった不具合について。</description><pubDate>Tue, 31 Dec 2019 00:00:00 GMT</pubDate></item><item><title>SSM Agent 3.3.40.0以降ならec2messagesのVPCエンドポイントは要らない</title><link>https://blog.afamung.dev/articles/ssm-ec2messages-vpc-endpoint-not-required/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ssm-ec2messages-vpc-endpoint-not-required/</guid><description>SSM用に作っていたec2messagesのInterfaceエンドポイントが不要になっていた。SSM Agent 3.3.40.0以降はssmmessagesが使えればそちらを優先して使う。</description><pubDate>Tue, 16 Apr 2024 00:00:00 GMT</pubDate></item><item><title>Step Functionsのstate machine全体のタイムアウトはCatchで拾えない</title><link>https://blog.afamung.dev/articles/state-machine-timeout-eventbridge-sns/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/state-machine-timeout-eventbridge-sns/</guid><description>state machine全体のTimeoutSecondsはCatchで拾えないため、TIMED_OUTの検知にはEventBridgeを使う必要がある。EventBridgeのイベントパターンではstateMachineArnで対象を絞り込める。</description><pubDate>Tue, 27 Aug 2024 00:00:00 GMT</pubDate></item><item><title>Step FunctionsのState出力、256KB超えると普通に落ちる</title><link>https://blog.afamung.dev/articles/step-functions-parallel-output-256kb-limit/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/step-functions-parallel-output-256kb-limit/</guid><description>ParallelでFargateタスクを回すバッチ処理を組んだら、Stateの出力サイズ上限に引っかかって落ちた。原因と直し方のメモ。</description><pubDate>Tue, 02 Feb 2021 00:00:00 GMT</pubDate></item><item><title>nologinユーザーにsuするなら-sでシェルを指定する</title><link>https://blog.afamung.dev/articles/su-to-nologin-user/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/su-to-nologin-user/</guid><description>apacheのようにログインシェルが/sbin/nologinのユーザーへは、su - だけだと弾かれる。-s /bin/bashでシェルを上書きすれば入れて、-の有無でカレントディレクトリや環境が変わる。</description><pubDate>Sat, 15 Mar 2014 00:00:00 GMT</pubDate></item><item><title>Swift の String(format:) でゼロ埋め文字列を作る</title><link>https://blog.afamung.dev/articles/swift-string-format-basics/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/swift-string-format-basics/</guid><description>String(format:) を使った数値のゼロ埋めや、%@ / %d を組み合わせた文字列生成の例。Foundation依存であることと、Optionalを渡したときの挙動に注意。</description><pubDate>Sat, 01 Dec 2018 00:00:00 GMT</pubDate></item><item><title>brewのnode/yarnをやめてnodebrewに乗り換えた</title><link>https://blog.afamung.dev/articles/switch-to-nodebrew-from-homebrew-node/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/switch-to-nodebrew-from-homebrew-node/</guid><description>Homebrewで管理してたnodeとyarnをアンインストールして、nodebrew経由でNode.js 16系を入れ直した。zshだとPATHの書き先を間違えると詰まる。</description><pubDate>Mon, 25 Oct 2021 00:00:00 GMT</pubDate></item><item><title>Symfony DoctrineのDBAL接続設定を書く</title><link>https://blog.afamung.dev/articles/symfony-doctrine-dbal-mysql-connection/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/symfony-doctrine-dbal-mysql-connection/</guid><description>Symfony(Doctrine)でMySQLに接続するdbal設定のメモ。各項目の役割と、charsetまわりの補足。</description><pubDate>Wed, 03 Oct 2018 00:00:00 GMT</pubDate></item><item><title>TensorFlowのCPU命令セット警告、AWSでどのインスタンス使えばいいか</title><link>https://blog.afamung.dev/articles/tensorflow-cpu-instructions-and-aws-instance-choice/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/tensorflow-cpu-instructions-and-aws-instance-choice/</guid><description>TensorFlow起動時に出るSSE4.1/AVX2/AVX512Fの警告の意味と、CPU最適化を活かせるAWSインスタンスタイプ、ml.p2.xlargeが向いてるかどうかを整理した。</description><pubDate>Mon, 18 Dec 2023 00:00:00 GMT</pubDate></item><item><title>timedatectlでタイムゾーンを確認・変更する</title><link>https://blog.afamung.dev/articles/timedatectl-set-timezone-tokyo/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/timedatectl-set-timezone-tokyo/</guid><description>現在のタイムゾーンを確認し、Asia/Tokyoに変更するまでの手順メモ。</description><pubDate>Mon, 04 Jan 2016 00:00:00 GMT</pubDate></item><item><title>LLM爆発的発展の引き金はTransformer論文だけなのか</title><link>https://blog.afamung.dev/articles/transformer-papers-llm-boom-trigger/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/transformer-papers-llm-boom-trigger/</guid><description>ChatGPT以降のLLMブームがTransformer論文(2017)由来なのかを確認した。実際はBERT/GPT、スケーリング則、RLHFなど複数要因の積み重ねだった。</description><pubDate>Fri, 12 Sep 2025 00:00:00 GMT</pubDate></item><item><title>メソッドの存在チェックはtypeof !== &quot;undefined&quot;じゃ足りない</title><link>https://blog.afamung.dev/articles/typeof-undefined-vs-function-method-check/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/typeof-undefined-vs-function-method-check/</guid><description>typeofによるメソッド存在チェックを3パターン比較したら、!== &quot;undefined&quot;だけでは呼び出し安全性を保証しないと分かった。正しいのは=== &quot;function&quot;。</description><pubDate>Fri, 21 Feb 2020 00:00:00 GMT</pubDate></item><item><title>TypeScriptでオブジェクトからundefinedを消す、filterだけだと型は追いつかない</title><link>https://blog.afamung.dev/articles/typescript-remove-undefined-properties-type-gap/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/typescript-remove-undefined-properties-type-gap/</guid><description>オブジェクトからundefinedプロパティを除去する3パターンを試した。実行時の挙動は3つとも正しいが、型注釈まで正確なのは書き方を工夫した場合だけだった。</description><pubDate>Tue, 18 Mar 2025 00:00:00 GMT</pubDate></item><item><title>do-release-upgradeでUbuntu 20.04から22.04にアップグレードする手順</title><link>https://blog.afamung.dev/articles/ubuntu-20-04-to-22-04-do-release-upgrade/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ubuntu-20-04-to-22-04-do-release-upgrade/</guid><description>Ubuntu 20.04 LTSから22.04 LTSへdo-release-upgradeでアップグレードした際の一連の手順。事前のパッケージ更新でつまずいたので、そこも含めて流れをまとめた。</description><pubDate>Tue, 08 Nov 2022 00:00:00 GMT</pubDate></item><item><title>Ubuntu 22.04にDocker CEとdocker composeプラグインを入れた</title><link>https://blog.afamung.dev/articles/ubuntu-2204-docker-ce-install/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ubuntu-2204-docker-ce-install/</guid><description>Ubuntu 22.04 LTSにDocker CEとDocker Composeプラグインをapt経由でインストールし、一般ユーザでdockerコマンドを使えるようにするまでの手順。</description><pubDate>Thu, 08 Dec 2022 00:00:00 GMT</pubDate></item><item><title>Ubuntuにnetstatが無い、net-toolsを入れると使える</title><link>https://blog.afamung.dev/articles/ubuntu-netstat-install-net-tools/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ubuntu-netstat-install-net-tools/</guid><description>Ubuntuの最小構成にはnetstatコマンドが標準で入っていない。net-toolsパッケージを入れれば使えるようになる。</description><pubDate>Tue, 22 Mar 2022 00:00:00 GMT</pubDate></item><item><title>Ubuntu 18.04にPHP 7.3を入れる（ondrejのPPA経由）</title><link>https://blog.afamung.dev/articles/ubuntu-php73-ondrej-ppa/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/ubuntu-php73-ondrej-ppa/</guid><description>Ubuntu 18.04の標準リポジトリのPHPは7.2なので、ondrej/phpのPPAを追加して7.3を入れた手順のメモ。</description><pubDate>Fri, 27 Mar 2020 00:00:00 GMT</pubDate></item><item><title>UINavigationBarの戻る矢印画像をbackIndicatorImageで差し替える</title><link>https://blog.afamung.dev/articles/uinavigationbar-back-indicator-uiappearance/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/uinavigationbar-back-indicator-uiappearance/</guid><description>UINavigationBarのバック矢印を独自画像に差し替えるObjective-Cコードのメモ。backIndicatorImageとbackIndicatorTransitionMaskImageを同じ画像に揃えるのがポイントだった。</description><pubDate>Thu, 23 Aug 2018 00:00:00 GMT</pubDate></item><item><title>Vagrant環境を作り直すワンライナー（halt &amp;&amp; destroy -f &amp;&amp; up）</title><link>https://blog.afamung.dev/articles/vagrant-halt-destroy-up-oneliner/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/vagrant-halt-destroy-up-oneliner/</guid><description>vagrant halt &amp;&amp; vagrant destroy -f &amp;&amp; vagrant up を繋げるだけで、VMを止めて削除して作り直せる。destroyの確認プロンプトは-fで飛ばせる。</description><pubDate>Fri, 11 Jun 2021 00:00:00 GMT</pubDate></item><item><title>VagrantfileでVirtualBoxのホスト時刻同期を明示的に有効にする</title><link>https://blog.afamung.dev/articles/vagrant-virtualbox-enable-host-time-sync/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/vagrant-virtualbox-enable-host-time-sync/</guid><description>VirtualBoxのVMMDev拡張データGetHostTimeDisabledに0を指定すると、ゲストがホストと定期的に時刻同期する状態になる。Vagrantfileでの書き方を整理した。</description><pubDate>Mon, 05 Mar 2018 00:00:00 GMT</pubDate></item><item><title>縦書きラベルのOCR精度改善にFew-shotで画像3枚+正解JSONを渡してみた</title><link>https://blog.afamung.dev/articles/vertical-label-ocr-few-shot/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/vertical-label-ocr-few-shot/</guid><description>Bedrock Vision(Claude)での縦書き工場ラベルOCRで、密度違いの縦書き2枚と横書き1枚をFew-shot例に渡したところ正解率が上がり、不正解率が劇的に減った話のメモ。</description><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate></item><item><title>vimにmolokaiのカラースキームを入れる</title><link>https://blog.afamung.dev/articles/vim-molokai-colorscheme/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/vim-molokai-colorscheme/</guid><description>vimのcolorschemeにmolokaiを追加する手順と、$_の挙動やruntimepathの仕組みについて書いた。</description><pubDate>Sat, 11 Jan 2020 00:00:00 GMT</pubDate></item><item><title>Vue Router 3のthis.$route.queryでクエリパラメータは取れるけど、lazy loadingだと取れないことがあるらしい</title><link>https://blog.afamung.dev/articles/vue-router-3-route-query-lazy-loading-caveat/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/vue-router-3-route-query-lazy-loading-caveat/</guid><description>Vue.js 2 + Vue Router 3でクエリパラメータを取る基本はthis.$route.query。ただしルートをlazy loadingしている場合、createdフックの時点でqueryが空になるケースが報告されている。</description><pubDate>Fri, 05 Jun 2020 00:00:00 GMT</pubDate></item><item><title>wc -lで数えているのは行数じゃなくて改行文字の数だった</title><link>https://blog.afamung.dev/articles/wc-command-counts-newlines-not-lines/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/wc-command-counts-newlines-not-lines/</guid><description>wcコマンドの-l/-w/-c/-m/-Lを調べ直したら、改行なしファイルの行数が0になる罠と、-cと-mの違いが分かった。</description><pubDate>Thu, 10 Jan 2013 00:00:00 GMT</pubDate></item><item><title>Web APIのプロパティ名、camelCaseかsnake_caseかで悩んだ</title><link>https://blog.afamung.dev/articles/web-api-camelcase-snake-case-naming/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/web-api-camelcase-snake-case-naming/</guid><description>TypeScript/Swift/Kotlinクライアントが中心ならcamelCase、外部公開APIやOpenAPI First重視ならsnake_case。それぞれの根拠をSwift API Design GuidelinesとOpenAPI Generatorの実装で裏取りした。</description><pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate></item><item><title>WiFiアクセスポイントの位置情報はGoogleが管理している</title><link>https://blog.afamung.dev/articles/wifi-ap-location-managed-by-google/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/wifi-ap-location-managed-by-google/</guid><description>自宅ルーターの物理的な位置は、Google・Apple・Microsoftがそれぞれ独自にクラウドソーシングで収集・管理しているデータベースに紐付いている。引っ越し後もアプリのWiFi測位が古い住所を返し続けた件から、その仕組みをまとめた。</description><pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate></item><item><title>BLEの距離推定を調べてたらWiFiにも似たようなdBm目安があった</title><link>https://blog.afamung.dev/articles/wifi-ble-rssi-distance-estimation-accuracy/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/wifi-ble-rssi-distance-estimation-accuracy/</guid><description>BLEのRSSIから距離を出すログ距離パスロスモデルを調べていたら、WiFiにもdBm-距離の目安表があることに気づいた。どちらも「公式」の顔をしているが、精度の裏付けは薄い。</description><pubDate>Thu, 18 Jul 2024 00:00:00 GMT</pubDate></item><item><title>xcode-select --switchで複数バージョンのXcodeを切り替える</title><link>https://blog.afamung.dev/articles/xcode-select-switch-build-path/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/xcode-select-switch-build-path/</guid><description>複数バージョンのXcodeが共存する環境で、ビルドに使うXcodeを明示的に切り替える方法をメモした。</description><pubDate>Fri, 23 Nov 2018 00:00:00 GMT</pubDate></item><item><title>yarn workspacesはprivate: trueがないと動かない、projenには直接オプションがない</title><link>https://blog.afamung.dev/articles/yarn-workspaces-private-required/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/yarn-workspaces-private-required/</guid><description>projenで`yarn projen`を叩いたらworkspacesまわりでコケた。原因はpackage.jsonのprivateフィールドで、projenには直接指定するオプションが無くてaddFieldで対応した。</description><pubDate>Wed, 12 Mar 2025 00:00:00 GMT</pubDate></item><item><title>yum updateでメモリ不足、スワップファイルで解決</title><link>https://blog.afamung.dev/articles/yum-update-oom-swapfile/</link><guid isPermaLink="true">https://blog.afamung.dev/articles/yum-update-oom-swapfile/</guid><description>EC2でyum update実行中にメモリ不足エラーが出た。スワップファイルを作成して回避した手順のメモ。</description><pubDate>Mon, 16 Apr 2018 00:00:00 GMT</pubDate></item></channel></rss>