2021-01-01から1年間の記事一覧
この記事はGo Advent Calendar 2021 4の19日目の記事です1。 goのencoding/jsonの機能はそこまで柔軟ではない。どこかで諦めたほうが良い事が多い2。 とはいえ、いろいろなことを柔軟にやってみる方法を検討してみるのは良いことなので検討してみる。 interf…
昨日の記事のついでに色々goでのwebプログラミングに関する初歩的なことをメモしておこうと思った。 net/httpのhello worldから始めてどういうタイミングでどのライブラリが必要になるかのメモ - podhmo's diary 今回はhandlerに依存を持ち込む方法のメモ。 …
goを始めたばかりの人の質問に対して以下の様な記事や回答はまれによく見る(自分自身もそのように答えることはままある)。 Goのおすすめのフレームワークはnet/http | フューチャー技術ブログ とはいえ、ある程度煩雑になってくるとライブラリなどを追加した…
どちらか一方に統一されていた場合には困らないが、混在している環境での動作のメモ。 特に、トップレベルでerrors.Cause()を使っている処理が存在していると危険かもしれないという話。 実験 テキトーに以下のようなコードを書いてみる。直接エラーを返すも…
何かのファクトリーを統一的に扱いたいみたいなことを考えたときにそれへの対応を考えることがある。 goの場合はそれぞれの状況で自分の手でコードを書いてつなげなくてはいけない。ファクトリーに限らないがこの種のバリエーション自体に言及しているのはwi…
以前の記事の続編ということになりそう。 awsのassume-roleに対応していなそうなコマンドを無理やり使う方法のメモ - podhmo's diary ほとんど内容はタイトル通りで、assume roleに対応していないようなコマンドがある。それを使うにはどうすれば良いかとい…
tarとかで持ってくるのが楽なんだろうか?テキトーに標準出力に書き出す感じで。 $ docker run --rm <container> tar -czf - <file> > <dst> ファイルが1つだけならcatでも良いかもしれない。あるいは小さめのファイルのものなら圧縮は不要かもしれない。 例 テキトーにelasticsea</dst></file></container>…
(これはメモ。全体的にふわっとしている) スキーマの変更が必要になったときの対応について調べたりなどしていた。 色々方法を眺めて見たところ、alter tableを使った方法が使用感的には個人的には一番しっくり来た1。が、機能が制限されているらしい。 そ…
まず、前提として、BigQUeryにはunique constraint的な機能が存在しない。なので、あれこれと頑張ってユニーク性を保つ作業をしたくなることがある。テキトーに検索してみてもそういう話のstack overflowの質問やそれへの回答のようなものは見つかる。 Googl…
主に手抜きのため。bigqueryのドキュメントの実行例で使われていてなるほどなーと思ったのでメモ。 ついでに色々なJOINの利用例を列挙してみる。 WITH句を使って仮想的なtableと見做す WITH句自体は概ねどのような処理系でもサポートしているみたい。これを…
以下の記事の続き。 pythonのバッチ用のイメージを作りたくなったのでサイズがどれくらいになるか調べてみた - podhmo's diary 調べてみたところ、どうやらbuildkitの機能を使うと行けるらしいという事がわかったので色々調べてみた。 python - Using a pip …
windows環境での作業でなるほどと思ったのでメモ。 自作のスクリプトをwindows環境で動かしたら動かなかった。以下のようなエラーメッセージが出る。 UnicodeDecodeError: 'cp932' codec can't decode byte 0x81 in position 59: illegal multibyte sequence…
以前こんな事を言っていたが、実際に調べたらnestしたobject型も機能したのでその訂正1。 terraformのmoduleを作成するようになって知った6つのことのメモ - podhmo's diary moduleのvariableのtypeにはnestしたobjectのような複雑な型が書けること これは、…
たまに以下の様な形で実行できないaws用のコマンドが存在する。 $ AWS_PROFILE=<profile> <cmd> 例えばcf-to-tfとかがそう。 github.com カジュアルに使おうとして動かなかった。 $ AWS_PROFILE=playground AWS_REGION=us-east-1 npx @humanmade/cf-to-tf --stack EC2Conta</cmd></profile>…
pypa.github.io pipxという名前を聞いてまたpythonの新しいパッケージ管理のツールと思うかもしれないけれど、少しだけ用途が違う。これがほしい場合がある。 pipxは例えばpoetryやpipenvとはちょっと用途が違う。 pipxは日常生活のためのCLIコマンドのため…
pypi.org pip freeze で出力されるすべてをrequirements.txtに書く1のではなく、依存の一番外側のパッケージだけを出力したい事がある。そういうときにはpip-chillが便利。 実行例 例えば、fastapiを参考に以下の様なrequirements.txtを用意してみる。 requi…
真面目にterraformでmoduleを書くようになって知った事をメモしてみる。これは自分用のメモなのであまり丁寧な説明はしない。 知った経緯がmoduleの作成ということであって、terraform moduleに関する機能というわけではない。 具体的には以下6つが知らなか…
今回は、以下の記事の実行をwsgirefだけを使って試してみようと言う趣旨のメモ。 Server-Sent Events の利用 - Web API | MDN お試しで遊ぶ程度の実装なので真面目な実装ではない。 SSE SSEは雑に言うと以下のようなもの コネクション張りっぱなし コネクシ…
github actionsで構成されているCIのスピードアップを図りたくなった。そんなわけでどのactionがどの程度時間が掛かっているかが知りたくなった。 もちろん個別にweb uiを覗いていけばそれぞれの実行時間などを確認する事はできるのだけれど、めんどくさい1…
時刻を文字列表現にするときにマイクロ秒を含んだ表現の場合がある。例えばgithub actionsのログは以下のようなもの。 lint Set up job 2021-05-25T20:31:24.8848799Z Current runner version: '2.278.0' 2021-05-25T20:31:24.8848799Z 部分が時刻の表現。実…
調べていたのでメモ。作業結果は以下のリポジトリにある。 github.com どういうときに欲しくなるか? どういうときに欲しくなるかと言うと、複数の関心事のそれぞれに対して複数の環境への共通の対応をしたくなったとき。その上その複数の関心事というのが曖…
以前の記事の続き。 enumとdataclassesを含んだ値をテキトーにJSONとしてseiralize/deserializeしたい - podhmo's diary 何も頑張って自作せずともjsonpickleを使えば良いかもしれない。 github.com import dataclasses import enum import jsonpickle class…
まぁまれにある。work-aroundのメモ。 editable install? 通常のpythonのパッケージのインストールは、パッケージ中のファイルをsite-packages以下にコピーすることなのだけど、editable installというのは、直接参照して利用する形式のインストールのこと。…
argparseをそのまま使うと以下の様な形になる。色々な書き方があるが、個人的にはflag部分はキーワード引数を使った関数定義にして、parse_args()で返ってきた値をそのまま使わずに**paramsで適用する形が好み。 def hello(*, name: str) -> None: print(f"h…
例えば以下の様な関数helloがあるとする。可変長引数を使って定義されている。とてもtrivialな例ではあるけれど説明用なので。。 from typing import Any def greet(prefix: str, *, name: str) -> None: print(f"{prefix}, {name}") def hello(**params: An…
昔に似たようなタイトルの記事を書いていましたが、これとはちょっと違った内容です。 datacalssesのインスタンスを含んだ値をJSONにするときのメモ enumやdataclassesを含んだ値をテキトーにJSONとしてserialize/desserializeしたくなった。パフォーマンス…
terraformの記述の仕方を調べるための個人的なメモ。resourceを定義しないterraformの設定が書けるようになってからterraformに関する苦手意識が消えた。 teraformはIaCのためのものというのはわかっているものの、terraform自体に不慣れな段階の間はただた…
ワード単位のdiffが欲しかったのでメモ。 ワード単位のdiff? 以下のようなファイルがあるときに $ ls src src/000person.json src/001person.json 000person.json と 001person.json の差分をdiffで見る1。色付きでみたいときには /tmp/a.diff などに出力し…
たまにエラー時のハンドリング部分のテストが書きたくなることがありますね。例えば、通信の記録のような操作を書いているときなどに。 こういうときに人為的にエラーを発生させる方法を調べたのでメモをしておこうと思います。 タイムアウト分待つ まずはじ…
前回の記事でxormのコードを読んでいたときに、flexibleに実装を選択するためのパターンがあったことを思い出したのでそのメモ。 flexibleな実装の選択? 実装の選択と言っても、DI的な話ではない。デフォルト実装と拡張の実装の間を自由に行き来できるよう…