タグ

ブックマーク / momijiame.tumblr.com (7)

  • socat を使うと各種ソケットの操作が捗りまくる件

    socat っていうツールを使ってみたところソケット関連のちょっとした操作をこなすのにすこぶる使い勝手が良かった。 インストール Mac OS X なら Homebrew でインストールできる。 $ brew install socat $ which socat /usr/local/bin/socat Echo サーバを立てる socat コマンドにはソケットの入力と出力を指定する。 以下のようにすると TCP 8080 ポートで接続を待ち受けて出力は入力をそのまま cat することで TCP の Echo サーバになる。 v オプションで通信内容を表示する。 $ socat -v tcp-listen:8080 system:cat 別のターミナルから telnet コマンドで接続してみる。 $ telnet localhost 8080 Trying ::1... telnet:

    socat を使うと各種ソケットの操作が捗りまくる件
    yuiseki
    yuiseki 2014/09/10
  • Python: jsonschema で入力内容を検査する

    Python のバリデータだと、以前このブログでも FormEncode を扱ったことがある。 今回は同様のパッケージとして jsonschema について書いてみる。 まず、元々の “jsonschema” というものは JSON の構造を JSON で記述するための仕様を指している。 そして、今回紹介する Python パッケージの jsonschema は、その仕様を元にバリデータを実装したものだ。 元々の “jsonschema” の仕様については以下の Web サイトを参照してもらいたい。 http://json-schema.org/ まずインストールは PyPI から。 $ pip install jsonschema jsonschema のバリデーション・ルールは辞書と文字列で記述する。 詳しくは json-schema.org の仕様を確認すると良いが、以下のサンプルに

    Python: jsonschema で入力内容を検査する
    yuiseki
    yuiseki 2014/08/10
  • Python の sqlalchemy-migrate を使って RDB のスキーマを管理する

    Pythonsqlalchemy-migrate は Ruby on Rails の ActiveRecord::Migration を、バックエンドに SQLAlchemy を使って再実装したもの。 ちなみに Python のマイグレーションツールには他に Alembic ってのもあるらしい。 マイグレーションツールを使うと RDB のスキーマ管理で楽ができる。 まず sqlalchemy-migrate を pip からインストールする。 現在最新の sqlalchemy-migrate (0.7.2) では SQLAlchemy 0.8.X がサポートされていないため、あえて 0.7.X がインストールされるようにバージョンを指定する。 # pip install sqlalchemy-migrate "sqlalchemy<=0.7.99" インストールすると “migrat

    Python の sqlalchemy-migrate を使って RDB のスキーマを管理する
    yuiseki
    yuiseki 2014/07/14
  • jq コマンドが強力すぎてヤバい件

    JSON の内容を sed や awk のようにフィルタ・加工するためのプログラムに jq がある。 JSON 形式で提供されている WebAPI の出力や、ログの内容を扱うのにとても便利。 その強力さの一端を紹介したい。 インストールは Mac OS X であれば Homebrew から。公式サイトからバイナリをダウンロードすることもできる。 $ brew install jq サンプル用の JSON を用意しておく。 $ cat << EOS > jsonfile {"name": "Foo", "sex": "Male", "age": 15, "emails": []} {"name": "Bar", "sex": "Male", "age": 20, "emails": ["hoge@example.jp"]} {"name": "Baz", "sex": "Female", "

    jq コマンドが強力すぎてヤバい件
    yuiseki
    yuiseki 2014/04/03
  • ソースコードを読むのに Doxygen + Graphviz が便利な件

    大きいプロジェクトだとクラスとかメソッドがいっぱいあって、それぞれ呼び出し合ったりして、もー意味わかんない。構造を視覚的に追えると良いんだけど、クラス図とかコールグラフを手作業で作ってると埒があかない。 ということで、自動でドキュメント + クラス図やコールグラフを作ってくれるツール Doxygen と Graphviz がとっても便利だったのでメモっておく。 とりあえず説明する上での環境は Mac OS X 10.7 + Homebrew ということで。Doxygen と Graphviz 自体は、UNIX 系の OS ならどれでも動かせるんだと思う。 まずは Homebrew からインストールする。 # brew install doxygen graphviz インストールできたら、解析したいソースコードのあるディレクトリで Doxygen を使う。今回解析するコードは Java

    ソースコードを読むのに Doxygen + Graphviz が便利な件
  • Python でモッククラスを使ってテストを楽にする

    単体テストを書く上で、外部に依存する箇所はモックに入れ替えないと上手くテストできないと思う。 例えば、データベースとの接続とか、RPC のコールとか。でも、外部に依存する部分だけを Strategy パターンみたいに入れ替えられるようにしておいて、テストの時だけモックオブジェクトを作って渡して…ってすごくめんどくさいと思ってた。 で、この前気づいたんだけど、動的型付けの言語ならわざわざオブジェクトを入れ替えなくても、クラスの定義ごと入れ替えちゃえばいいんじゃないの? テストのときだけ依存部分のクラスをモックの定義に上書きしちゃうの。API はダックタイピングで良いわけだし。 例えば、こういうモジュール (module1.py) があるとして。 class OriginalClass(object): def foo(self): print 'original' テストで使うときにモックの

    Python でモッククラスを使ってテストを楽にする
    yuiseki
    yuiseki 2013/08/24
  • Python のセッションミドルウェア Beaker のバックエンドに memcached と RDB を使ってみる

  • 1