memo

最近はprestringにcodeobjectというものを組み込もうとしている

https://github.com/podhmo/prestring:cite:emebed (この機能は妄想の類でまだ未完成なものなので注意) 最近はprestringにcodeobjectというものを組み込もうとしている。実はこのcodeobjectというものの雛形は既に作って使われていたりする。例えばhandofcat…

goで設定ファイルを読み込むときに上書きしたい

goで設定ファイルを読み込むときに設定の一部だけを上書きしたいことがある。それ用のコードのメモ。 github.com mergo? mergoというのはけっこう古くからあるライブラリみたい。 A helper to merge structs and maps in Golang. Useful for configuration d…

完全に自分の為のsqsをpythonで触るときのメモ

自分用のメモなので汚い。やりたいことはSQSのsend/receiveのやり方の例を1つのpythonファイルに押し込めること。 準備 以下が必要。handofcatsやjqfpyは手抜きのためのもの。 requirements.txt awscli boto handofcats jqfpy $ pip install -r requirement…

goで想定した実装が1つだけのときに、テストのためだけにインターフェイスを書きたくない

この話に似た話。type aliasを使った型の読み替えで手抜きができる(場合がある)。 テストのためだけにインターフェイスを書きたくないでござる リンク先の記事はtype aliasを使って同一パッケージ上にimportしてくる。 そしてテスト中はmockの方にビルドタグ…

client_idとcient_secretだけからgoogle authのtoken情報を取得する方法

こんな感じでやれば良い。書きかけ。飽きたので途中でおしまい。 prepare pip install google-auth-oauthlib python-dotenv run 以下が必要。 アプリがRPに権限を要求するときのclient id, client secret 権限を要求するscopes client id, client secret pri…

コマンドライン引数によって、オプションが変わるコマンドの書き方のメモ(2 phase parse?) (updated)

過去にこのような記事を書いた。 コマンドライン引数によって、オプション引数が変わるコマンドの書き方のメモ(2 phase parse?) 今ならどうするだろう?という記事。 これはsubcommandに他ならない 元の記事では以下の様な実行の仕方を許容しているようだ。-…

最近のgoでCLIのコマンドを作るときの雛形のメモ (updated)

昔にも似たような記事を書いていたみたいだった。最近のgoでのCLIツールを書く際の心境の変化があったのでその辺をメモしておく。 最近goでCLIのコマンドを作るときの雛形のメモ 心境の変化 心境の変化は2つ コマンドラインオプションをstructで囲む理由が…

片手間にui componentsの使用感を試そうとしてやってみたことのメモ

片手間フロントエンドの人が、ui componentsの使用感を試すためにやろうとしたことのメモ。 はじめに 試そうとしたのは、reactのui components。以下2つ。 evergreen tableau-ui evergreen.segment.com github.com テキトーにこの2つを選んだ。特にこだわ…

blogとの付き合い方について あるいはなぜ自分がblogを書き続けているかについて

この文章は write-blog-every-week Advent Calendar 2019 の 7日目の記事です。 TL;DR (ほぼ)毎週blogを書いている advent calendarへの参加のついでに自分とblogとの付き合い方についてまとめてみた 自分の頭の中を再現することを重要視しているらしい What…

goでpkgパッケージを作りたくなる派の意見

個人的にはpkgパッケージを作ることにわりと肯定的な立場なので思ったことをメモしておくよ。 pkgパッケージが作られる理由 pkgパッケージを作りたいと思う理由は以下だよ。 pkgパッケージはmonorepoの小さい版と解釈すると納得できる 公開されたパッケージ…

pythonでmypyを騙してfieldにmetadataを付加したクラスを定義してみる

ちょっとだけ背景説明 なんでそんなことがしたくなったかというと、やっぱり定義を記述したらおしまいでいられる世界が理想なので。そして特定の領域(e.g. OpenAPI, GraphQL, Protcol Buffers, database定義, ...)に属さないような中立的な表現が欲しくなっ…

まじめにgoでDIを考える前のメモ

そろそろDIについてもまじめに考える必要が出てきたので考えることにする(この記事では終わらない)。たまには答えになっていないようなメモでも。 何となく最近思うのは、goゆえの制約はあっても、goだからで省略できる特別なことは特に無いなということ(…

個人的なemacsのmajor-modeの作成方法についてのまとめ(リンク集)

なんか忘れてしまったので個人用のまとめ。おそらく他の人に役に立つことは無い。 emacswikiから major-modeを定義する方法については概ねemacswikiに説明がある。 from scratch define-generic-mode define-derived-mode define-generic-modeは新しいmajor-…

sqlxの使いかたを把握するための情報のメモ

sqlxの資料のメモ github.com 色々探すのが面倒なのでここにメモしておく。 godoc https://godoc.org/github.com/jmoiron/sqlx guide http://jmoiron.github.io/sqlx/ 後者はcontextの対応が含まれていないコードなので少し古いかもしれない。 はじめの一歩 …

go-run meets pstree

以下の内容のメモ 現在の環境1で実行されるprocessの概観を掴む方法 go runがtmp directoryにbuildした結果のバイナリをsubprocessとして実行していること go runが実行するprocess 例えば以下の様なテキトウなfile serverのようなコードがあるとする2。 mai…

pythonのimportシステム周りのことについてのメモ、あるいはimport fooとしたときに何が起きるかについて

あんまり丁寧に文章を書く気力が起きないので個人的なメモ。pythonのimport周りの話。(最後の実行例のgistはこちら) (追記: 結局それなりに長くなった) 当初のお気持ち import fooがどうなるかみたいな話、そういえば発表のお題としてはけっこう良かったかも…

特定のコードの特定の箇所を引用して言及したいという話

前回の記事の続き 前回の記事で、以下のようなことを言っていた。 そしてわかりやすさを考えると、「どのクラスのどのメソッドの中のどの箇所か?」という形で表現したい(今回の場合は「WebSocketEndpointのdecode()メソッドのjson.loads()部分」という形)。…

もっとコードに対して言及して記事を書きたいという話

ちょっとノルマ1が迫ってきているのでたまには自分の頭の中にあることをdumpする形でノルマを消化する。 頭の中の風景 色々な人が色々なブログとの付き合い方をしていると想う。自分自身のこのブログへの付き合い方は基本的には備忘録的な意味合いが強い感じ…

.gitattributesをいじって特定のファイルをgithubのPRのdiffの対象から外す方法のメモ

.gitattributesをいじって特定のファイルをgithubのPRのdiffの対象から外す方法のメモ。 TL;DR .gitattributes <隠したいファイルのディレクトリ>/* linguist-generated はじめに 例えばコード生成をしたり、利用の過程で複数のファイルを1つにまとめたファ…

環境変数で設定を管理したくなった場合のpython-dotenvのメモ

最近は設定ファイルだけではなく環境変数で設定を渡すことがけっこうある(コンテナ的な文脈だったり、12 factor app的な文脈だったり色々)。自前で頑張っても良いけれど。自分でコードを書かずに済ませたい。 何か良いライブラリは無いかなと探してみたらあ…

pythonでライブラリを使用せずにちょっとしたspinnerとprogress barを作る(CLI)

たまに欲しくなるのでメモ。やっていることはエスケープシークエンスでN行戻った行頭に移動して現在のカーソルから端末の終端までクリアを繰り返しているだけ。 progress bar ちょっとしたプログレスバーの表示。ふつうにやる分にはtqdmを使ったほうがお手軽…

N個のchannelがcloseされるまで読み込む方法について

N個のchannelがcloseされるまで読み込む方法についてのメモ。 1個のchannelがcloseされるまで読み込む まずはじめにN=1の場合について。これは単にforループで取り出せば良い。 package main import ( "fmt" "sync" "time" ) func main() { var wg sync.Wait…

net/httpのhandlerを書く時に気をつけたほうが良い順序について

たまに標準ライブラリのみを使ってnet/httpのhandlerを実装することがある。その時の種々の操作で呼び出す順序を気にする必要があるものがある。それのメモ。 先に結論を言ってしまうと以下の順序で記述しましょうという話。 http headerに情報を追加する ht…

最近の砂場でのpythonのサンプルコードの実行方法について

日記的なrepositoryを作っていて、何か調べたいことがあったときにそこにサンプルコードを書いて調べたりしている。そのサンプルコードの書き方でdebugとinfoの実行形態を分ける方法が便利だったのでメモ。 趣旨 この方法の趣旨は以下のような感じ。 通常は…

Makefile上の個々の操作の実行時間をファイルに出力したかったところからの諸々

Makefile上の操作に対して、実行時間を計測したい。ただしコンソール上に出力するのではなくファイルに出力したい(というところから始まった)。 ファイルを分けたいので呼び出し側でリダイレクトでは無理 例えば以下の様なタスクがある。それぞれの操作の…

ertを使ってelispのunittestを書く方法のメモ

ertを使ってelispのunittestを書く方法のメモ。ertは標準で添付されているのでインストールは不要(なはず)。 使いかた 以下のような関数を定義しておく(テスト対象) (defun my:add (x y) (+ x y)) テストを書く。 (require 'ert) (ert-deftest add20 () …

emacsのフォントの大きさを調節する方法のメモ

はじめに 遠くの画面に写して作業をしたくなった。デフォルトで用意されているコマンドだけでは特定のバッファのフォントの大きさを調整する方法だけしか見つからなかった。しょうがないのでちょっとしたコマンドを作った。 そのついでにemacsのフォントの大…

goで現在のパッケージが依存するパッケージを調べたい

goで依存するパッケージを調べたい。意外とgo listコマンドが便利に使えた。 # そのパッケージ自体 $ go list -f "{{if not .Standard}}{{.ImportPath}}{{end}}" -deps # cwd以下の全てのパッケージでの依存 $ go list -f "{{if not .Standard}}{{.ImportPat…

goでファイルを一時的に書き換えた処理をSIGINT時にもrollbackしたい場合のメモ

github.com はじめに goでhttptrace付きでgo runを実行するものを作っていた。詳しい話はアドベントカレンダーに記事を書いた。PoC的なものだったのでまじめには作っていなかったのだけれど意外と便利なので常用してみようとした。そのときに1つだけ困った…

go runに引数として.goのファイルを渡す方法について

通常go runは以下の様にして使う。 $ go run my/main.go my/xxx.go このときxxx.goはソースコードとして扱われてbuild時のpackageに含まれる。 ところで、go/astなどのコードを試しているときには、.goのファイルを入力として扱いたいときがある。このような…