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

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…

異なる型の配列の型を指定したい場合はtupleを使ったほうが良いかも

handbookやspecに書いてあることではあるけれど。 はじめに 例えば以下の様な定義があるとする。 class X { say() { return "x"; } } class Y { } ここで以下のような型は型チェックを通らない。正しい。 let y: Y = new Y(); y.say(); もちろん以下のような…

今年の目標というにはあやふやな何か

今年の目標というにはあやふやな何か 目標というほど明確になっていないのでとりあえずふわふわした状態のままにしておく 方針 pythonからある程度手をひいてtypescriptあたりに時間をかける わりと今年はフロントエンド関連の情報の取捨選択を自分でやる予…

複数のファイルを手軽にbuildして試す環境を作る(with tsconfig exclude)

tsconfig.jsonにtscに渡すオプションを指定できる。 tscに渡すファイルの指定は以下のオプションを利用して渡す模様 files exclude filesはファイルを明示的に指定する必要がありglobパターン的なものは使えない。 excludeを使ってごまかす事はできるかもし…

typescriptをまじめに勉強することにした

typescriptをまじめに勉強することにした 理由 型が欲しい。 いままでも定点観測の範囲で目にした記事を幾つか取りだし眺めるというようなことはしていた。 読むことはそれなりに難しくなく書かれている記事の内容はその場では理解できてはいたような気がす…

json モジュールについて

はじめに この記事はadventerの方のPython Advent Calendar の3日目の記事です。 (qiitaの方にもadvent calendarがあるみたいです) この記事ではpythonの標準ライブラリの jsonモジュール について書くことにしました。advent caledarで何を書くか少し迷った…

pythonでcsvファイルの読み込みをちょっと便利に扱う方法を考えてみたりしてた

pandas使えば良いというのはあるけれど。csvファイルの読み込みにはcsv moduleを使う。 はじめに 対象のcsvは以下(csvと言いつつtsv) target.tsv hello こんにちは "hello world" "こんにちは 世界" 以下の様なコードで読める import csv with open("./targe…

ひどく自分勝手なデコレーターの作り方

はじめに デコレーターを作成する時引数を取るのか引数を取らないのか混同しやすい。 どちらであっても許容できるデコレーターがあっても良いのかもしれないというような実験 引数なしのデコレーター デコレーターを作る時まず以下のような関数に適用する引…

任意の関数にmiddleware的な何かを追加する方法

memo: 任意の関数にmiddleware的な何かを追加する方法。 例えばこういうような使い方。元となる関数fがある。 def f(x): return x * x これを以下のような呼び出し関係になるfoo,barで包んだnew_fを作りたい。 begin foo begin bar f() end bar end foo ポイ…

コマンドに全てのオプションを設定で渡すのがだるいので、設定ファイルでデフォルトの設定を指定したかった

はじめに # オプション引数がないとなんだかわからない myapp foo bar boo baz bee # オプション引数を指定できると楽 myapp --foo=foo --bar=bar --boo=boo --baz bee # でも、本当は以下の様にして使いたい myapp bee --config=~/.config/myapp argparseな…

jsonを直接引数としてコマンドラインから渡す方法を考えてた

はじめに awscliはbotocoreにコマンドラインインターフェイスを持たせるためのラッパーでしかないと考えると色々捗る気がした。 つまり基本的にはJSONを入力として取るAPIが存在してそれにより何でも操作する。 ただし、直接APIを呼ぶコードを書くのは面倒く…

jsonの順序を保ったままOrderedDictを作る

jsonの順序を保ったままOrderedDictを作る方法はobject_pairs_hookにOrderedDictを指定してあげれば良い import json from collections import OrderedDict from functools import partial loads = partial(json.loads, object_pairs_hook) data = ''' { "x"…

miniconfigというものを作っていました

はじめに 以前に、 miniconfig というライブラリを作っていたことを思い出したのですが。 あらためて見なおしてみると結構便利かもしれません。 miniconfig これはすごく雑に言うと Pyramid というウェブフレームワークの設定などをを読み取りアプリケーショ…

自然言語処理的な何かを始めようとした時に試行錯誤が辛かったのでそれなりに楽にできる環境を考えた

はじめに 久しぶりに幾つかのステップに分かれる変換が行われた結果を見ながら試行錯誤するというような作業をした。手軽に再実行などができる環境がないと辛くなってきたので、それなりに楽にできる環境を整えようとしてみた。 データの変換は幾つかのステ…

Don't writing python scripts, writing python libraries.

Don't writing python scripts, writing python libraries. はじめに pythonでscriptを書いていくだけだと辛い事が多い。 たとえ、作成するアプリでは使われないコードであってもライブラリとして作っておいた方が良い。 具体的には以下の様にする。 misc的…

gulpで消耗したのでgulp(Stream)について調べてみる。

飽きたので途中で掲載。 はじめに gulpの使い方と言う話が出てきた時に以下の2つの場合がある。 gulp(plugin)の使い方 gulp(plugin)の作り方 大抵は前者で、前者はとても簡単。 gulp(plugin)の使い方 以下のようなシェルスクリプトのコマンドをイメージして…

htmlppという式指向のhtml用のプリプロセッサーのようなものを作っている。

最近、なんとなく htmlpp というものを作っている。 似非custom elementは式ベースのマクロである程度まではいけるのでは?ということの実験のために作っている感じ。 直接htmlファイルに対して使うというよりは、テンプレートエンジン(e.g. jinja2, mako)の…

-vvvや-qで作ったコマンドのloggingレベルを変更する斬新なコード

はじめに argparse にcountというactionがあり、これを使うと渡した同一オプションの数をカウントすることができます。 これを使って、例えば、curlやsshなどで見られる -v や -vv の記述に似せたものをやろうという話です。 基本的な考え方は以下です。 def…

shlex非常に便利

雑にシェルスクリプトlikeな構文利用したい時に使える。 >>> import shlex >>> shlex.split("""foo bar "foo bar" 'foo bar' test""") ['foo', 'bar', 'foo bar', 'foo bar', 'test'] >>> shlex.split("""foo bar "foo bar" 'foo bar' test""", posix=False)…

argparseだるいし。関数の定義からコマンド生成すれば良いのでは?

要旨は以下 関数の引数の定義から大まかなデフォルト値とコマンドライン引数を取得 sphinxのautodoc形式のdocstringからヘルプメッセージを作成 以下の様にすると greeting() が関数からコマンドになる。 # -*- coding:utf-8 -*- from cmdfromfn import as_c…

mac ports でmysqlの環境作成

gist.github.com

djangoのformが辛いという話

djangoのformが辛いという話 はじめに 例えば何らかの処理があるとする。それはある条件にマッチした場合にしか利用できない処理だとする。 T = TypeVar('T') class ActionDispatch(object): def test(self, x : T) -> str: return "A" or "B" or None def g…