2020-05-01から1ヶ月間の記事一覧

SQL中のtypoを何としてもコンパイラにチェックしてもらいたかった

github.com 以前に頭の中で考えたりしていたことだったのだけど。真面目に手を動かしてみることにしてみた。まだ作り途中。 考えていたこと 一番気にしたかったのはSELECT文の実行。SQLをそのまま書くのは、実際のqueryを把握しやすくて良いのだけれど、生の…

egoistでモジュールを分割できるようにした

github.com 定義が多くなってくると、1つのファイルで管理するのが厳しくなってくる。そんなわけで、moduleを分割することを考えてみた。似たような機構はいろいろなWAFにも存在する。例えばflaskならblueprint、fastAPIならAPIRouter。 Flask -- Modular A…

コード生成におけるN+1問題とbulk actionとしてのegoist。あるいはMakefileについて。

例えば以下の画像の様な依存関係でコード生成1が行われるとする。入力となるファイルが幾つかあり、例えばjinja2のテンプレートなどで出力先の表現が記述されていて、これによりちょっとしたgoのコードやopenAPI docの一部を生成するというようなタスク。 画…

サブコマンドをincludeで自由に追加できるようにした

github.com サブコマンドをincludeで自由に追加できるようにした。 デフォルトで利用できるサブコマンド 例えば egoist init clikit で生成されるdefinitions.pyは以下の様なサブコマンドを持っている。 describe generate scan usage: definitions.py [-h] …

-hや--helpでのヘルプメッセージの表示は一瞬で終わってほしいと言う話

egoistを作っていて、けっこう気にしているポイントなども記事にしてみることにする。個人的には-hや--helpに時間が掛かるCLIはあまり好きではない。 具体的には0.5sくらいでちょっとストレスを感じ、1.0sを越えると、使うたびに感じるストレスがそのツール…

pythonのクラス定義からUnmarshalJSON()でのvalidation付きのgoのstruct定義を生成する

github.com pythonのクラス定義からUnmarshalJSON()でのvalidation付きのgoのstruct定義を生成してみる。(より細かなバリエーションは https://github.com/podhmo/egoist/tree/master/examples/e2e/generate-structkit にある) なぜUnmarshalJSON()付きで…

egoistで生成するCLI定義のカスタマイズ方法について

github.com 作っていたミニフレームワークの最初のバージョンをリリースしたと言う話という記事を書きました。 goはランタイムというミニフレームワークのプロトタイプをpypiにアップロードした とはいえ、この記事だけだと何が何だか分からなかったので、作…

goはランタイムというミニフレームワークのプロトタイプをpypiにアップロードした

github.com 以下の記事のミニフレームワークのプロトタイプが動くようになったので、0.0.1をpypiにアップロードしました。 goはランタイムという発想のミニフレームワークを作り始めた このプロトタイプに含まれる機能はCLIの定義を手軽にすると言う部分です…

pythonの型定義を使ってprotobufを出力してみる。

この記事の作業の一環で、pythonの型定義の情報を使いprotobufを出力することを試してみた。 goはランタイムという発想のミニフレームワークを作り始めた 基本的にはアイデアスケッチのようなもので、ちょっとしたコード辺を書いてみて、上手く期待する機能…

errorをmapで保持する小さなerrorライブラリを作った

github.com errorをmapで保持するライブラリを作った。いわゆるmultierrorのような複数のエラーをsliceとしてまとめるライブラリは存在するのだけれど、意外とmapで保持するライブラリがなかったので。代わりのライブラリがあるならそちらを使いたい。 なぜ…

goで文字列ベースのenumの定義はこんな感じが良いかもしれない

文字列ベースのenumの定義で良さそうなコードができたのでメモ(iotaを使った数値がベースのものではない)。 文字列ベースのもの 個人的には、特に速度やメモリーなどのことを気にしない場合には、文字列ベースのもののほうが取り回しやすくて良いと思って…