#Tips
23 件の記事
自分的システムの仕様書の構成
システムの仕様をドキュメントに書き出す際、どのような構成であるべきかを考えてまとめた、自分なりのシステム仕様書の構成を記した記事です。概要・アーキテクチャ・データモデル・API・技術詳細といった階層構成を、mermaidでの図のコード化も交えて運用する方法を紹介します。
パスワード付きPDFの解除をするワンライナー
コマンドラインツールのQPDFを使って、パスワードで保護されたPDFの制限を安全に解除する方法を紹介する記事です。brewでQPDFをインストールし、qpdf --decryptコマンドで対象のPDFからパスワードによる制限を外す、シンプルなワンライナーの手順を解説します。
Goでオレオレ証明書がほしいときの一手
Go標準のgenerate_cert.goを使い、opensslやmkcertなしでローカルHTTPS用の自己署名証明書(cert.pem/key.pem)をワンコマンドで生成する方法を解説します。
Goのresponse.WriteHeaderの副作用について
response.WriteHeaderの複数回呼び出しによる副作用を解析し、bytes.Bufferを使った回避方法とtemplateのExecute処理の実装パターンを提示。
連結リストのランナーテクニック
連結リストの走査に役立つ「ランナーテクニック」についてまとめた記事です。『世界で闘うプログラミング力を鍛える本(コーディング面接189問とその解法)』で紹介されていて初めて知った、2つのポインタを異なる速度で進めるこの手法の考え方と使いどころを解説します。
DefaultServeMux以外でpprofを使う方法
Goのnet/http/pprofを、DefaultServeMux以外の独自のルーターと組み合わせて使う方法についてのメモです。pprofをblank importするだけでは動かないというハマりどころを取り上げ、カスタムルーターにpprof.Indexなどのハンドラを自分で登録してパフォーマンス分析を行う実装を紹介します。
Goのhtml/templateでURLをエンコードさせない
Goのhtml/templateがURLを自動エンコードする理由と、template.URLを使ってエンコードさせずに生のURLを渡す方法を、最小の動作例つきで解説します。
legoでLet's encryptのSSL証明書をDNS-01方式で取得する
Conoha VPS上でAnsibleを使い、Let's EncryptのSSL証明書をDNS-01方式で取得しようとした際の手順をまとめた記事です。legoというACMEクライアントとConohaのAPIを連携させ、DNSのTXTレコードを使ったチャレンジで証明書を取得する方法を解説します。
StreamYardでKeynoteの発表者ディスプレイを表示しながら配信する方法
StreamYardを使ってプレゼンをする機会があり、そのやり方をまとめたメモです。Keynoteの発表者ディスプレイ(ノートや次のスライドが見える画面)を手元に表示しつつ、再生中のスライドだけをStreamYardで配信・共有するために、ウインドウを分割して同時に活用する手順を紹介します。
Ubuntu 20.04.2 LTSでmysqlコンテナを起動するとPermission deniedで怒られた
Ubuntu 20.04でMySQLコンテナ起動時に出るPermission deniedエラーを、docker-composeのuser(UID/GID)設定を見直して解決する方法を解説します。
M1 MacでMySQL8.0.17のコンテナが起動できない
Apple M1 MacでMySQL 8.0.17のコンテナが起動しない問題(failed to create new OS thread errno=22)を、MySQL 8.0.26+と--platform=linux/amd64で解決する方法を解説します。
goのspannerクライアントのReadOnlyTransactionでハマった
GoのCloud Spannerクライアントで、ReadOnlyTransactionのtx.Close()漏れによるセッションプール枯渇を解消。トランザクションのライフサイクル管理とzaganeによる検出方法を解説します。
docker-compose.ymlで指定した環境変数がコンテナビルド中に参照できない
docker-compose.ymlで指定した環境変数がDockerイメージのビルド中に参照できない問題の対処法。DockerfileのARGとdocker-composeのbuild.argsでビルド時に値を渡す方法を解説します。
vscodeでgoのLanguage Serverを有効にしたらコード定義元ジャンプができなくなった
VSCodeでgoのLanguage Server(gopls)を有効にしたらコード定義元ジャンプができなくなった問題の原因と、go.modの配置を見直して解決する方法を解説します。
DockerのOperation not permittedというエラーに対応する
Docker Composeを使ってGoのテストを実行した際に遭遇した「Operation not permitted」というエラーへの対応メモです。エラーが発生する原因と、privilegedオプションやケーパビリティの付与などによって解決するための方法を紹介します。
Mackerelで監視対象から外れたホストを再度復帰させる方法
Mackerelの監視対象から誤ってホストを退役させてしまったり、意図せず監視対象から外してしまったりしたときに、そのホストを復帰させる方法をまとめたメモです。mackerel-agentを再起動しても自動では復帰しないため、hostIdを更新して対応する実務的な手順をガイドします。
anyenvでインストールしたrbenvでbundlerをinstallしたときにパスでハマった
anyenvでインストールしたrbenvでbundlerを入れた際の/usr/local/binパス問題を、rbenv exec gem installで解決する方法を解説します。
Docker for Macのマウントが遅い問題の対応
Docker for Macでボリュームマウントが遅く、npmなどの動作が実用的でないほど重くなる問題への対応メモです。macOSのファイルシステムまわりに起因する原因を整理し、マウントオプションの調整などで改善するための方法を紹介します。
Reactでrequireしてたら、[BABEL] Note: The code generator has deoptimised the styling of
Reactでrequireした際に出るBabelの「code generator has deoptimised」警告の原因と、ファイルサイズ最適化による解消方法を解説します。
redux-formのサーバーサイドバリデーションでpromissをいじってたら「Uncaught (in promise) error」
redux-formのサーバーサイドバリデーションで発生する「Uncaught (in promise) error」を、Promiseを返してSubmissionErrorを正しくthrowすることで解決する方法を解説します。