読者です 読者をやめる 読者になる 読者になる

httptestでmock server的なものを作る方法のメモ

以下の3つが欲しい get post (form) post (json) package m import ( "bytes" "encoding/json" "net/http" "net/http/httptest" "net/url" "testing" "io/ioutil" "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testi…

magicalimportというライブラリを作ってました

magicalimportというライブラリを作ってました。 はじめに これは何をするライブラリかというと物理的なファイル名を指定して、指定したファイルをpython moduleとしてimportするためのライブラリです。 用途 例えばconfigファイルの読み込みに便利かもしれ…

flaskでconfigファイルの指定に物理的なパスを指定できるようにしたくなったという話

はじめに flaskを使い始めたのだけれど。flaskのconfigファイルの指定が対象のflaskアプリの存在するモジュールの位置からの相対パスを指定するらしく使いづらい。 例えば、fooパッケージの中で、以下の様なコードがあった場合には、fooパッケージからの相対…

makefileわりと便利だよという話

はじめに makeはmacにもlinuxにもデフォルトであって便利*1。 とは言え、色々とわかりづらいところがある。 便利なところだけ見繕って使うと便利。 個人的なmakefileの使い方は2種類 個人的には以下のような2つの目的でmakefileを使っている。 複数の目的の…

[python][logging] pythonのloggingモジュールの呼び出し元のファイル名:行番号を出力する機能が残念という話

はじめに pythonの標準ライブラリのloggingモジュールを利用すると、ログ出力の中に呼び出し元の位置に関する情報(ファイル名や関数名など)を含める事ができる。 具体的にはloggerに渡すフォーマットに以下を含めることで、ログ出力時に呼び出した位置の情報…

pythonのinteractive shellを終了した後 `stty sane` が必要だった問題が解決したという話

はじめに 手元の環境でpythonのinteractive shellを利用した後、コンソールで入力した文字列のエコー表示がされなくなる問題に悩まされていた。 $ python3.5 Python 3.5.2 (default, Sep 19 2016, 02:49:52) [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-…

手軽にgo1.6を試す方法考える -> 結局dockerを使うことにした

はじめに 期待していない挙動を示した時にそもそもgo1.7とgo1.6とで動作が異なるのではないか?という疑いをもった時があった。 ところで手元の環境は全部1.7でわざわざ1.6をbuildするのも面倒と言うような感じ。 本当に些細なコードだったので、goの1.6用の…

既存のmethodを壊さずに内部のmethodを差し替えて実行したい

はじめに 例えば、以下のような状況で M.F0() を呼びたい。しかしその内部で呼ばれる m.f()は呼んでほしくない場合。 type M struct { } func (m *M) F0() error { // do something return m.f() } func (m *M) F1() error { // do something return m.f() }…

python3.5でpyobjcのコードを動かそうとしたら Symbol not found: _PyObject_REPR

はじめに python3.5でpyobjcのコードを動かそうとした際に、以下のようなエラーが出てしまっていた。 Symbol not found: _PyObject_REPR 結論からいうとパッケージが古かったので更新した。(3.0.4 -> 3.1.1) stack overflowで該当する質問 python - Symbol n…

goのtext/templateでprivateなattributeを出力しようとするとエラーになるという話

goのtext/templateでprivateなattributeを出力しようとすると、エラーになるという話を知らなかった。 全部public 例えば、以下はOK type User struct { Name string Message string } type V map[string]interface{} func main() { const tmpl = `{{.user.N…

goを1.7に上げてから、gocodeが動かなくなったりもしました

go1.6.2 -> go1.7でgocodeが動作しない 手元のmacの環境のgoを1.7に上げたところ、gocodeが上手く動作しなくなった。 (macportsを使っている) $ sudo port selfupdate $ sudo port upgrade go $ go version go version go1.7 darwin/amd64 以下の様な感じの…

deferのタイミングで関数の戻り値を変えたい場合には、named return使うしかないのかも?

はじめに 例えば、以下の様な状況。 deferで何らかの後片付けをする。 この後片付けのタイミングでerrorが発生。 この時、deferの中の処理で発生したerrorを戻り値として返したい。このような事をしようとした場合にnamed returnを使うしかなかったという話…

godocが無いと言われたあと、godocインストールに権限が無いと言われた話

前提 $ go version go version go1.6.2 darwin/amd64 はじめに そもそも go doc と godoc が別ものだということに気づいていなかった。2つは別物。 そもそも取得する引数なども異なる。 go doc $ go doc -h Usage of [go] doc: .. snip Flags: -c symbol mat…

そう言えば、selfishというツール作っていました

これは何? gistのuploadを手軽にするやつです。goの勉強のための習作でした。 https://github.com/podhmo/selfish 経緯 以前から結構gistを頻繁に利用していて、特に複数ファイルをuploadしたい場合には、web画面からポチポチとファイルを指定していくので…

使い捨てのコードのエラー処理について

tl;dr panic時ではなくerror時にもfullのstack traceが欲しい pkg/errors が便利 はじめに しばらくgoを書いていて、使い捨てのコードのエラー処理についてどうすれば良いのか考えたりしていた。ここで言う使い捨てのコードというのは1ファイル位で作れそう…

golangのfmt系のformatの機能のメモ

まじめに調べるなら以下を見たほうが良い。 https://golang.org/pkg/fmt/ reflection使った便利な出力 %T 値の方を表示 %v 値を良い感じに表示 %+v +フラグ付きで冗長出力表示。 %#v 値を型名やフィールド名も含めて出力 利用例 type Person struct { Name s…

golangのequalityの評価について

はじめに 他の言語のつもりで比較演算子を使うと想定外の挙動をするということもあったりする。最初テキトウにコードを書いて挙動を確認しようとしていたが後に言語仕様を読めば良いだけだということに気づいた。学び始めの最中に思ったことをメモしておくと…

django-returnfieldsというパッケージを作っていました

django-returnfields というパッケージを作っていました。 これは何? はじめはapi responseのfilteringをするライブラリとして作っていましたが、いろいろな変更の結果あるAPIのresponseに対してそのsubsetを返すためのoptimizerのようなものになりました。 …

generic foreignkeyのsub relationをprefetchする方法

はじめに generic foreignkey 自体のprefetchはできる。しかし、その更に先のrelationをprefetchすることができない。これをどうにかしようと言う苦肉の策を考えてみたという話。 言い訳 djangoのgeneric foreignkey関連のコードを読んでみたところ綺麗にで…

もう少しだけdjangoのprefetch_relatedについて考えてみる(条件付加したrelationのeager loading)

はじめに あるモデルに対してあるコンテキスト(文脈)に従った条件を加味した関係の元に値を取り出したい場合がある。そのような条件を付加した値を仮想的なフィールドとして扱うことができないかという話。 例えば以下の事がしたい X,Yというテーブルが存在…

SQLでloopを使わず連番の歯抜けの部分を探してみようという話

はじめに 例えば以下のような数字の列があるとする。下の例は連番を期待した数値なのだが一部歯抜けになっているという数字の列の例。 1, 2, 3, 6, 8 // 4,5,7がない このような連番を期待している数字の列から歯抜けになっている部分(上の例では4,5,7)を見…

djangoでprefetch_relatedで使えるようになる 独自のディスクリプタを作ってみる

prefetch_relatedで使えるようになる、独自のディスクリプタの作り方 はじめに 前回の記事 で prefetch_relatedの実装にprefetcher オブジェクトとでも呼ぶようなオブジェクトが必要になるということを説明した。 今度は、prefetcherのインターフェイスを実…

djangoでヘテロなリストのprefetch (generic foreign keyのprefetch_related)

djangoでヘテロなリストのprefetch djangoでヘテロなリストのprefetch。できないと思ったら普通に出来たのでわりとびっくりしたので記事にしてみた。 ヘテロなリスト? ここでのヘテロなリストと言うのは以下のようなリストを指している。 xs = [A(), B(), A(…

外部のリソースを利用する機能の記述の仕方の話

外部のリソースを利用する機能の記述の仕方の話 (当初はテストの時の話をするつもりで書いていたが、特にテストに絞ったわけでもなくとりとめもなく書いてしまった) はじめに 外部のリソースを利用する機能を作成する際のコードの書き方について考えたりして…

asyncioのloopをどうするかということについて考えてみた

はじめに pythonには非同期用の標準ライブラリとして asyncio というモジュールが用意されている。このasyncioを使う際にevent loopの取り扱いに悩むことがあるかもしれない。どうすれば良いのかを少しだけまじめに考えてみた。 ライブラリ or アプリケーシ…

macでunzipした時に文字化けするファイル

macportsのunzipは -0 がない。 $ sudo port install p7zip $ 7z x foo.zip

djangoでの集計は辛いという話 -- ORMは用法・用量を守って正しく使いましょう

djangoでの集計は辛いという話 -- ORMは用法・用量を守って正しく使いましょう djangoのORMの機能の不足にぶち当たり辛いという話。別の言い方をすると、ORMは用法・容量守って正しく使いましょうという感じになるかもしれない。 はじめに 以下のような情報…

久しぶりにdjangoのORMのことについて書いてみる 主に `prefetch_related()` の話

[django][python] 久しぶりにdjangoのORMのことについて書いてみる はじめに djangoのORMは正直好きじゃない。そもそも挙動が正確には把握しづらくてなんだか覚えにくいと感じる所がある。また、ドキュメントに書かれたとおりの書き方では不足することもあっ…

golangのcallbackとdeferの実行順序と表示される値について

[wip][golang]golangのcallbackとdeferの実行順序と表示される値について はじめに 以下のものを使った際の実行順序を調べたい。 defer callback closure(ついで) テキトウなコード テキトウなコードを書いて調べる。 10. 20. 30 という数値を持ったslicesの…

golangで型のmappingがないjsonをいじる方法のメモ

[golang][wip]golangで型のmappingがないjsonをいじる golangで型のmappingがないjsonをいじる時には interface{} で受け取って色々やれば良いらしい。 型でswitchできるのでどうにかなる。 memo bytes.BufferはStringIO的なもの 型でswitchする時mapかslice…

golangの encoding/json/encode.go を読んでたしかにcacheにlockは必要だな〜と思ったりした

golang の encoding/json/encode.go を読んでたしかにcacheにlockは必要だな〜と思ったりした encoding/json付近を眺めていた。 encoding/json source ぱっと見reflectの使い方などの把握にも良さそうだと思ったがまだ正確には理解しきれていないのでそれに…

golangのsort packageを見ながらcollection系の構造をどうやって管理するか把握しようとした

golangのsort packageを見ながらcollection系の構造をどうやって管理するか把握しようとした はじめに golangにgenericsがない。genericsがない状況でcollection系のデータ構造をどうするのかという話。 結論から言うとinterfaceを定義して頑張る。 sort pac…

golangの勉強のためにimport packageで読み込まれるファイルについて調べようとしていた

[wip] golangの勉強のためにimport packageで読み込まれるファイルについて調べようとしていた はじめに The Go package sources are intended to serve not only as the core library but also as examples of how to use the language Effective Goで標準…

MacPortsでインストールしたgolangのコードにちょっと手を加えてbuildしてみる

MacPortsでインストールしたgolangのコードにちょっと手を加えてbuildしてみる golang で今使っている go コマンド自体のソースコードを見る方法が意外と楽に提供されているのでmemo。 現在の go コマンドが利用しているソースコードの位置を調べる go tool …

1ファイルでdjango restframeworkを試す

1ファイルでdjango restframeworkを試す 準備 pip install django djangorestframework 以下の様なコードを書く。test_onefile_restframework.py) 実行結果 $ python test_onefile_restframework.py Creating test database for alias 'default'... ..... --…

pythonのwsgiref でちょっとしたHTTPを話したい時に

pythonのwsgiref でちょっとしたHTTPを話したい時に pythonでちょっとした調査をしたい時に、何かパッケージを入れるのも面倒な場合に wsgiref だけですませたくなる場合がある。その時のためのmemo。 hello world from wsgiref.simple_server import make_s…

cssdiffというpackageを作りました

https://github.com/podhmo/cssdiff あとで書く

状態の初期値とangularのonetime bindingの表示について

はじめに angularのonetime bindingは一度だけwatch対象にするらしい。一度だけというのはどのような解釈で一度だけかというのが気になった。 結論 ドキュメント に書いてあった。 One-time binding An expression that starts with :: is considered a one-…

なぜ angularで as syntax を使いscopeの所有関係を明示的に書いた方が良いのかという話

はじめに よく、「巷に溢れているangularのチュートリアルは良くない」だとか。「せめてcontrollerを使うときには as sytanxを使って」という話を聞きます。 それがなぜなのかということを説明してみることにしました。 $scopeの挙動について controllerが云…

console-angularというnpmのパッケージを作りました

console-angular というnpmのパッケージを作りました。 はじめに 作った理由はangularの機能を調べるのがだるいからです。以前から benv を使ってnode.js上でangularを動くようにしていましたがその設定を毎回コピーないしは動く場所で作るというのもだるく…

angular.jsはdataがundefinedだった場合にContent-Type headerを消す

はじめに requestのcontent typeをみて、responseの形式を変えたいと思うことがありました。 そのためにheadersを変えてrequestを投げてみたのですが、どうも上手くcontent typeが付かない。 なぜだろうと思って調べてみたのでした。 実験環境 とりあえず、…

angular.jsのdirectiveで指定するtemplateUrlを埋める方法

はじめに angularでdirectiveを定義する時にhtml template部分をどのように書くかというのは幾つか方法がある。 それについて、どのような時にどのような形で書けば良いかというののまとめ。 directiveのhtml template部分の書き方 angularのdirectiveのhtml…

typescriptで書いたコード中で雑に外部のjsを読み込んでnode.js上で実行する方法(typescriptで書いたangular.jsのコードをnode.js上で手軽に実行する方法)について

きっとtypescriptなどに慣れている人にはごく当たり前のことなのだと思うのだけれど。自分用のメモも兼ねてまとめる。 はじめに typescriptで書いたコードの動作を確認したいものの実行時には少しだけjs側のコードによる準備が必要な場合がある。 (例えば、t…

angularの$parse, $interpolate, $compile 位は把握しよう

はじめに https://t.co/43GvPaLHo0 angularさんについてこれ空で分かる程度には分かっててほしいと思ったりした。— po (@podhmo) 2016, 1月 12 $parse, $interpolate, $compile これらはどれも文字列のような別の表現を解釈してjs objectを返すような機能を…

angularでDIされるserviceがsingletonで困る場合にはfactoryを返すことを考えてみる

はじめに angularでは各serviceの利用時に指定した引数の箇所にDIされる。 これらで生成されるserviceは基本的にはsingleton objectになっている。 このためDIされた各service中では同一のオブジェクトを共有している。 例えば、以下の様なコードがあった場…

benvを使う時にはrequire.resolveを使ったほうが良いかも

以前angular.jsをnode.js上で動くようにするためにbenvを使う記事を書きました。 そこでは以下の様なコードを書いていました。しかしもう少しマシにできそうなのでその辺りのアップデートをします。 benv.setup(function(){ global.Node = window.Node; benv…

手軽にes6を試す環境も作っておきたいと思った

はじめに es6を試す環境もほしい。(今回はes2015とか細かい事は気にしない) とりあえず以下の様なことができてほしい es6で作成したコード片のtranspileの結果を手軽に確認できる es6で作成したコード片の実行が手軽にできる ブラウザから試せるrepl 以下の…

typescriptでstatic memberにobjectを格納しようとした時定義順序を意識しないと実行時エラーになる場合がある。

typescriptでstatic memberにobjectを格納しようとした時定義順序を意識しないと実行時エラーになる場合がある。 例えば以下のようなコード。 class X { static y: Y = new Y(); say() { return X.y.say(); } } class Y { say() { console.log("hai"); } } …

El Captainでmacportsでinstallしたpython3.4上でpycryptoのinstallに失敗する場合

pip install pycrypto 最終的に以下のようなエラー File "/private/var/folders/b7/2rk7xp2d0hb2r21zbzjwxb_m0000gn/T/pip-build-ou9ql5i7/pycrypto/setup.py", line 278, in run raise RuntimeError("autoconf error") RuntimeError: autoconf error もう少…

benvを使ってangular.jsのコードをnode上で動作させる

はじめに テストなどを書きたい時にブラウザを立ち上げずに動作チェックなどをしたいことがある。 しかしangular.jsを直接nodeからrequireすると怒られる $ npm install --save angular $ node -p 'require("angular")' ReferenceError: window is not defin…