タグ

2012年1月9日のブックマーク (11件)

  • tracebackをログに残す場合のお約束コード - methaneのブログ

    import traceback try: ... except: log.error(traceback.format_exc()) raise 例外は、こまめにチェックするよりも、あえてチェックしない方が良いことがある。 とくに、例外をcatchしておいて、結局自作の情報量が少ない例外を再送出するのは最悪。 エラーが起きたらログだけ取って、例外自体はそのまま上に流したい場合は、exceptブロックの中でraiseする。Webアプリにありがちなシチュエーション。 traceback.format_exc()は超便利だけどすぐ忘れるのでここにメモしとく。

    tracebackをログに残す場合のお約束コード - methaneのブログ
  • Pure Python PDF to text converter « Python recipes « ActiveState Code

    import pyPdf def getPDFContent(path): content = "" # Load PDF into pyPDF pdf = pyPdf.PdfFileReader(file(path, "rb")) # Iterate pages for i in range(0, pdf.getNumPages()): # Extract text from page and add to content content += pdf.getPage(i).extractText() + "\n" # Collapse whitespace content = " ".join(content.replace("\xa0", " ").strip().split()) return content print getPDFContent("test.pdf")

  • プログラミング言語 C の新機能

    4. 配列 今回の C 言語では、配列をより使いやすくするための機構が組み込まれました。その代表が可変長配列の機能でしょう。章ではそれら追加機能について説明します。 4.1 可変長配列 ある関数に入る毎に違った大きさが必要になる配列(可変長配列)を、今まではどのように作成していました? その作成方法は、大体次に挙げる方法のどれかでしょう。 (1)あらかじめ最大の配列を作る方法。もし最大の大きさを見積もることができるのであれば、あらかじめその最大の大きさの配列を作ってそれを利用するという方法があります。しかしこの方法では最大が見積もれる時にしか使用することができず、また必ずしもメモリを有効に使用することができません。 (2)malloc を使う方法。必要となる大きさを malloc で確保し、ポインタに割り当てて使うという方法があります。しかし、この方法では、一般的に malloc 関数の

    bluele
    bluele 2012/01/09
    variable-array
  • 32bitと64bitのサイズの違い(C言語): のぼメモ(仮)

    32bitと64bit環境ではサイズが違うのでメモメモ。 色々な型に対してsizeof()関数を使ってみた結果は以下の通り。 OS間または32bit/64bit間でサイズが変わる型を使う場合は移植に注意が必要。

    32bitと64bitのサイズの違い(C言語): のぼメモ(仮)
    bluele
    bluele 2012/01/09
  • Heapsort, Quicksort, and Entropy

    Numerous web-pages compare heapsort and quicksort. Most of them say something along the lines of `both take an average time scaling as N log N, but A good implementation of QUICKSORT usually beats HEAPSORT in practice.' Some take this folklore a bit further, giving quantitative details: `On average the number of comparisons done in HEAPSORT is about twice as much as in QUICKSORT, but HEAPSORT avoi

  • UTF8の文字数を数える手法の検討 — ありえるえりあ

    Recent entries Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23 Herokuの発音 inoue 2010-12-20 雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18 IPA未踏のニュース inoue 2010-12-15 労基法とチキンゲーム inoue 2010-12-06 フロントエンドエンジニア inoue 2010-12-03 ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25 技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24 雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22 RESTの当惑 inoue 2010-11-22 「プ

    bluele
    bluele 2012/01/09
  • memcpy() vs memmove()

  • コンピューター:C言語講座:構造体・共用体・ビットフィールド

    コンピューター:C言語講座:構造体・共用体・ビットフィールド 構造体や共用体はC++などが出現するまでは私にとって他の言語に比べて最もC言語の素晴らしい物でした。とくに構造体を使わずにCADのような大規模なアプリケーションを組めといわれたら気を失ってしまいそうです。今となってはC++JAVAなどのように更に上をいくクラスが出現してしまっていますからやや古くさいのは否定できませんが、いずれにしてもC言語を使いこなしているかどうかはこの構造体と関数とポインターを使いこなしているかで判断できるくらい重要なものではないでしょうか? ここでは構造体がどういうものかとか、そういった入門書に出ているような事ではなく、ビットフィールドや共用体まで含めて考えてみたいと思います。 構造体 構造体はご存知の通り、複数のさまざまな型のデータをまとめて管理するものです。これはデータを保持しておく際にも非常に便利で

    bluele
    bluele 2012/01/09
  • memcpy

    n バイトメモリブロックのコピー 【書式】 #include <string.h> void *memcpy(void *buf1, const void *buf2, size_t n); ※ void * についてはこちらを参考 【説明】 buf2 の先頭から n 文字分を、buf1へコピーします。このとき、strcpy()と異なり空文字('\0')を付加することはありません。また、buf2 を単なるメモリブロックとして扱うため、途中に空文字('\0')を含んでいてもコピーを続けます。 buf1 と buf2 が重なっているときの動作は未定義です。この場合、memmove() では正しくコピーが行われます。 【引数】 void *buf1 : コピー先のメモリブロック const void *buf2 : コピー元のメモリブロック size_t n : コピーバイト数 【戻り値】 bu

    bluele
    bluele 2012/01/09
  • NAIST 奈良先端科学技術大学院大学 - 入学案内 - 入試情報 - 入試日程

  • Python の GC のデバッグ機能 - methaneのブログ

    Python のデーモン型のプログラム(具体的に言うと Loggerhead という bzr のリポジトリブラウザ)が大量(具体的に言うと100MB以上)メモリをっていたので、それを調べた時のメモ。 まず、当にそれだけのメモリを利用しているのかどうかを meliae というメモリプロファイラで調べたんだけど、18MBくらいしか使ってなかった。 meliae の使い方はまた今度に回すとして、今回はそんなにメモリを使うはずがないのにメモリを使ってしまっているケースについて。 この場合は、循環参照を大量に作ることによってメモリブロックがたくさん確保され、循環参照コレクタが実行された後も(メモリブロック内に1つでも生き残っているオブジェクトがいるなどの理由で)OSにメモリブロックが返されないという原因が考えられる。(循環参照以外の原因でメモリが大量に確保されてる可能性もあるんだけどね) 今日の

    Python の GC のデバッグ機能 - methaneのブログ