2018-01-01から1年間の記事一覧
goで依存するパッケージを調べたい。意外とgo listコマンドが便利に使えた。 # そのパッケージ自体 $ go list -f "{{if not .Standard}}{{.ImportPath}}{{end}}" -deps # cwd以下の全てのパッケージでの依存 $ go list -f "{{if not .Standard}}{{.ImportPat…
vgoが有効な環境の場合に相対importがエラーになる 時折、GOPATH外で作業したりするときなどに相対importが使いたくなる。例えば以下の様な構成でxxx packageの関数を利用したい。 . ├── main.go └── xxx └── hello.go 1 directory, 2 files xxx/hello.go pa…
標準のlogパッケージの使いかたをちょっと変えるだけで便利な形式で出力できそうなのでメモ。 :warning:まずはじめに大前提として、これはgoの挙動を確認するためのサンプルコードを書いてみるときの話であって、実際にアプリケーションなりツールなりを作ろ…
github.com はじめに goでhttptrace付きでgo runを実行するものを作っていた。詳しい話はアドベントカレンダーに記事を書いた。PoC的なものだったのでまじめには作っていなかったのだけれど意外と便利なので常用してみようとした。そのときに1つだけ困った…
通常go runは以下の様にして使う。 $ go run my/main.go my/xxx.go このときxxx.goはソースコードとして扱われてbuild時のpackageに含まれる。 ところで、go/astなどのコードを試しているときには、.goのファイルを入力として扱いたいときがある。このような…
なんとなくCLIのツールを作ろうかと思って色々試してみていた。python-inquirerというものを発見したので使ってみていた。まだこれを常用するかは決めていない(元々inquirerはnode.js用のライブラリだった模様。それのpython版がこれ。yeomanなどに使われて…
github.com pycommentというライブラリを作くりました。 rubytoolsのxmpfilterに似たものをpythonでもやってみたいというやつです。 install installはいつもどおりpipで。 $ pip install pycomment how to use 使いかたはpycommentコマンドを使います。する…
いつものやつです。対応していない値をjson.dumps()に与えるとTypeErrorが発生するやつです。 TypeError 例えばこういうdataclassを定義して。 from dataclasses import dataclass, asdict @dataclass class Point: x: int y: int json.dumpsするとTypeError…
J,Kでサブディレクトリにカーソル移動するのが便利。lがdiredのredrawと被っているのだけれどとりあえずディレクトリ上以外のときにはredrawすることにした(良い方針ではないかも)。 (defun my:dired-setup () (define-many-keys dired-mode-map `( ("[" .…
github.com pythonのprint()をlogger.infoに変える黒魔術(loggedpy)を実装してみた(土日)。 発端はこのtweet。 printをそのままログに出せる方法あった気がするけどなんだっけ…気のせいかな…— altnight (@altnight) September 13, 2018 意外とやってみると…
時折、ちょっとしたスピードアップにhttp(https) requestを並列で投げたい場合がある。aiohttpなどを使っても良いが既存のコードを書き換えるのもめんどくさい。そのようなときの方法のメモ。 concurrent.futuresを使う方法も考えられるけれど。今回はasynci…
twitterでCSVに色を付けてみるととても見やすいという話があった。実際どうなんだろうと思ったのでテキトウに色を付けて出力してみることにした。 たしかに見やすいかもしれない。 (CSVのサンプルはこの記事から拝借) code import typing as t import sys im…
過去の以下の記事の続き。 goでmockを自動生成する以外に大きなinterfaceを扱う方法を考えたりしてた この方法はたまに使われていたりする。ただリンク先の記事ではinterfaceを実装したstruct(アプリで実際に利用しているstruct)を埋め込んでいる。 これは…
from nbreversible import code import pandas as pd import numpy as np import seaborn as sns # %matplotlib inline xs = np.arange(1, 10) ys = np.arange(1, 10).reshape(9, 1) m = xs * ys df = pd.DataFrame(m) df .dataframe tbody tr th:only-of-ty…
何も考えずにgoimportsで補完された結果のコードを残しておいたら、pkg/errorsのerrorが独自定義のerrorに使われてしまって微妙だった。具体的に言うと意図しないスタックトレースを表示してしまうことになる。 例えば以下の様なコードのとき。 package main…
import numpy as np import pandas as pd %matplotlib inline m = np.arange(1, 10).reshape(3, 3) df = pd.DataFrame(m, columns=["a", "b", "c"]) df .dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical…
github.com markdownで書かれたドキュメント(画像付き)を良い感じに扱うツールを作った。名前は「書斎」から来ている。 ほしかった理由 ほしかった理由をまじめに書くと、ドキュメントにはフロー型のものとストック型のものがあり、現在の手元のツールでは…
APIはwindows向け、現状の環境はmac(ないしはlinux)みたいなことがあったりする。 こういうときには、str.split()ではダメ、os.linesepを使ってsplitしてもダメ。 素直にstr.splitlines()してos.linesepでjoinというのが良さそう。 def normalize_linesep_te…
時折、Emacsで現在のバッファにある文字列を入力として何らかのコマンドに投げて、その結果を取得したいと言うことがある。 単に結果を見たい場合には、shell-command-on-region が M-| などにbindされているので便利なんだけれど。結果を直接現在のバッファ…
github.com 昨日のこの記事の続き。 JSONをコマンドラインから作るのが面倒だったのでそれ用のコマンドを作った - podhmo's diary 不格好だけれど、配列(pythonではlist)をサポートした。 name description xs/0/ xs[0] の意味 xs/-1/ xs[-1] の意味 xs// xs…
github.com 昨日のこの記事の続き。 JSONをコマンドラインから作るのが面倒だったのでそれ用のコマンドを作った - podhmo's diary 簡単な変数を使える機能を追加した。概ね以下のような感じ。 name description @ 変数に値を代入 & 変数の値を参照 例 obとい…
github.com mkdictという名前(あとで名前は変えるかもしれない)。 使いかた すごくシンプルな文法。内部的にはshlexパッケージを使っている。標準ライブラリだけである程度手軽にシェルっぽい文法に対応できるのは便利(punctuation_charsオプションに対応…
コマンド出力に色が着く ls --colorなどを実行すると文字に色が着く。こういうふうに。 これはjqも同じで普通にコマンドを実行すると色が着く。 pythonで これらはansi-color-code付きで出力されているので色が着く。pythonでやってみるとこういう感じ。 pri…
手元でテキトウに正規表現作っただけなのでミスっているかも。 (defun my:strip-ansi-color-region (beg end) (interactive "r") (unless (region-active-p) (setq beg (point-min)) (setq end (point-max))) (save-excursion (save-restriction (narrow-to-…
メモ。 gcloud sqliteにはいっているみたい $ file ~/.config/gcloud/credentials.db 2>&1| sed "s@$HOME@HOME@" HOME/.config/gcloud/credentials.db: SQLite 3.x database, last written using SQLite version 3024000 おもむろに取り出すと、access_token…
github.com 個人的にコード生成をするときにはprestringというパッケージをベースにして行うことが多い。テンプレートエンジンによるコード生成やASTを直接触る方法との差分は別の機会に書くとして今回追加しようとした機能についてまとめておく。 コード生…
時折変換の仕方などを忘れてしまい調べることなどがあるので。個人的なメモ。 JSONの文字列表現の文字列 JSONの文字列表現の文字列。なんて言えば良いんだろ?こういうやつ。 "{\"name\": \"foo\", \"age\": 20}" とりあえず、unicode-escapeを使ってどうに…
github.com handofcatsでchoicesをサポートした。NewTypeで作った型にchoicesというattributeを追加してあげる感じで使う(experimental)。 詳細 以下の様なコードが dump.py import sys import typing as t from handofcats import as_command def csv_dump(…
mypyのdmypyの実装の仕方を把握する。知りたいことは裏側でのprocessの管理の仕方とクライアントとサーバー間のデータのやり取りの仕方。 準備 $ git clone --depth 1 git@github.com:python/mypy エントリーポイントの把握 インストールされるコマンドの確…
以下のコードが通ってしまう。 import typing as t def f() -> t.Mapping: return {} def use() -> None: z = f() y, z = f() x, y, z = f() if __name__ == "__main__": import subprocess subprocess.check_call(["mypy", "--strict", __file__]) print("o…