タグ

ブックマーク / taichino.com (10)

  • [RSAの勉強日記2] Javascriptで暗号化してPythonで復号したい – taichino.com

    先日、RSAについて解った気になったと書いたんですけど、実際はあんまり解ってなかったので補足等。やりたいのはクライアントで暗号化した情報をサーバで受けて復号したいという事ですね。 鍵の生成をサーバで行って公開鍵をJSのコードに埋める JS側で公開鍵を使って暗号化したデータをサーバに送る サーバで受け取ったデータをPythonで復号 単純な話なはずだったんですけど、上手く行かずにハマりました。 結論から書くと、PyCryptoモジュールがPKCS#1で規定されているのパディング/アンパディングに対応してなかったので自前でアンパディング処理を追加したら上手く行ったという事ですが、学習をかねてもう少し詳しく書いておきます。 エントリ中の公開鍵・秘密鍵は以下のものを使用しています。他の鍵を使った場合は文中の値は異なります。 PRIVATE KEY: p=312812244098101569570

  • Pythonの隠された機能9つ – taichino.com

    StackOverflowでHidden features of Pythonという面白い質問がありました。原文の方では何十も項目があるのですが、独断と偏見で9個に絞って紹介します。 1. chaining comparision operator 不等式を連結出来るなんて初めて知りました。スーパーかっこいいです。今まで1 < x and x < 10とか書き続けてました。 x = 5 if 1 < x < 10: print "yay" if x < 10 < x*10 < 100: print "yaay!" if 5 == x > 4: print "yaaay!!" 他の言語でも出来んの?と思ってちょっと調べてみましたが、どうもPythonだけっぽいです。やっぱりPython最高ですね! 2013.03.05 追記 twitterで突っ込まれました。Pythonだけって言うのは嘘で

    heavenshell
    heavenshell 2013/03/08
    「不等式を連結出来るなんて初めて知りました。スーパーかっこいいです。」VB6 も C でも出来たはず。
  • LionがプリインストールなMacでもリカバリ用のDVDを作りたい件 – taichino.com

    先日新調したMacBook Proですが、メインOSをUbuntuにしてVMWare上でLionとWindowsとCentOSを飼おうと思います。というわけでLionのインストールメディアが必要なのですが、Lionがプリインストールされている最近のマシンにはリカバリディスクが付属していません。 なので自分でDVDを焼く必要がありますが、少し調べてみると、Snow LeopardからLionにアップデートした人は、その時にMac App Storeからダウンロードしたインストーラを使ってリカバリディスクを作成できるようです。AppleのLion Recovery Disk Assistantというツールも、そのインストーラがある事を前提にしています。 ところがLionがプリインストールされてるマシンだとそのインストーラもありません。なかなか情報にたどりつけ無かったのでメモを残しておきます。

  • Djangoでソーシャルアカウントを扱う – taichino.com

    先日の番付メーカーではTwitterとFacebookのアカウントでログインできるようになっています。 ソーシャルアカウントを使うと、地味なくせに工数のかかるユーザ管理を実装せずにすむので助かりますね。ところがソーシャルアカウントを扱うのも楽チンとまでは言えません。そもそもOAuthの処理を実装するのも面倒ですし、TwitterとFacebookを両方扱うとなってくると割と大変です。加えてGoogle+だYahooだとなってくると頭が痛くなってきます。 Hextrisを作ったときは自前でTwitterのOAuthでのログイン処理を書いたのですが、今回はFacebookアカウントも扱うというので複雑度が3倍くらいになって面倒です。 これはアカン、なんか無いのと思って調べてみるとDjango-Social-Authというナイスモジュールが見つかりました。これはDjangoのアプリとして実装され

  • PadWalkerでmy変数のシンボルテーブルを取得する – taichino.com

    最近perlのスタッシュと言う単語を覚えました。所謂パッケージスコープのシンボルテーブルで特定のパッケージ内に定義されている関数や変数の情報を得る事が出来ます。詳細は以下のページが解り易かったです。 wakaponさんの備忘帳 さて問題は何かというと、上記ページにも書かれているように、my変数がスタッシュではなく、別のスクラッチパッドと呼ばれる領域に格納されるため、スタッシュからはアクセスできないという事です。 定義されているmy変数のリストも取得したいと思い調べてみると、PadWalkerというモジュールに行き着きました。このモジュールを使うと、なんとスクラッチパッドの読み書きが出来ます。例えば以下のようにして使用します。 #!/usr/bin/perl use strict; use warnings; use PadWalker qw(peek_my peek_our); use D

  • Pythonで日本語を含んだリストと辞書をpretty printしたい件 – taichino.com

    Pythonでコード書いてると、1回は残念だなぁと思うポイントとして表題の件があると思います。具体的には以下です。 # リストも辞書も出力がお世辞にも良いとは言えない。。 >>> print ['あ', 'い', 'う'] ['\xe3\x81\x82', '\xe3\x81\x84', '\xe3\x81\x86'] >>> print {'title':'ねじまき鳥', 'author':'村上春樹'} {'author': '\xe6\x9d\x91\xe4\xb8\x8a\xe6\x98\xa5\xe6\xa8\xb9', 'title': '\xe3\x81\xad\xe3\x81\x98\xe3\x81\xbe\xe3\x81\x8d\xe9\xb3\xa5'} 日語がバイト表現な上、全要素が1行で表示されています。これではちょっとprintデバッグするにも萎えますよね。複雑

  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

  • pythonのORMを色々試してみた – taichino.com

    そろそろpythonでもSQLを直に書くのが面倒になってきたので、O/Rマッパーを探してみたところ、幾つか種類があったので有名どころを使ってみることにしました。今回試したのは以下の4つです。 SQLAlchemy SQLObject Elixir Storm まず用途についてですが、僕はテーブルスキーマはSQLで直に書きますので、ORMでDDLを扱うつもりはありません。DMLを簡単に扱いたいというのが一番の目標です。そこで予め作成して置いたテーブルに対してCRUD操作のし易さを比べてみました。比較に使用したのは以下のテーブルです。 CREATE TABLE `books` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) DEFAULT NULL, `price` int(11) DEFAULT NULL, `isbn

  • PythonでXMLの検証を行いたい件 – taichino.com

    自前で出力したsitemap.xmlがgoogleにはじかれたので、XMLスキーマの検証処理をPythonでもやりたいなぁと思って調べてみたら、簡単に出来ました。さすがPythonということでメモ書きです。 lxmlを使うのですが、インストールはコチラを参考に行いました。ありがとうございます。処理手順は非常に簡単で、以下のような感じになります。etree.parseにファイル(ライク)オブジェクトをわせるのがちょっと注意が必要ですが、それ以外は非常に簡単ですね。要はスキーマオブジェクトを作って、検証したいXMLのDOMをわせればOKです。 def validate(schema, xml): schema_doc = etree.parse(schema) xml_doc = etree.parse(xml) xmlschema = etree.XMLSchema(schema_doc

    heavenshell
    heavenshell 2010/05/18
    Python で xml の検証
  • Pythonで動的にクラスをロードしたい件 – taichino.com

    app-engine-patchを使っていて、settings.pyに記述されているAUTH_USER_MODELクラスを動的にロードしたかったんですが、簡単に方法が解らなかったのでメモしておきます。要はクラス名が文字列で与えられている場合に、そのクラスにアクセスしたいという話です。 まず対象のクラスが既にimportされている状態であれば、組込み関数のglobalsを使えます。 class Hoge: pass hoge_klass = globals()['Hoge'] hoge_instance = hoge_klass() しかし設定ファイルに書かれているクラスをロードするケースでは、対象クラスがimportされていない事も多いと思います。そこでクラスを動的にimportしたい訳ですが、僕が調べた限りでは、一旦クラスが属しているモジュールをimportし、そのモジュールからクラスを

    heavenshell
    heavenshell 2010/01/19
    クラスの動的ロード
  • 1