2008-01-01から1年間の記事一覧

pexpect

pexpect.py だけ持ち込めば使える pexpect はとても便利. python でごりごりコードが書ける分だけ expect よりも便利! デプロイ、ログ収集と大活躍. 以下、ssh でログインして uname -r の結果だけを拾ってくる例. from sys import stdout, stderr from getp…

メールヘッダフィールドの折り返し

To フィールドが長くなったので作ってみた. def create_field(name, values): LINE_LIMIT = 78 result = '' s = name + ': ' + values[0] for v in values[1:]: if len(s) + len(v) + 2 > LINE_LIMIT: result += s + ',\n' s = '\t' else: s += ', ' s += v …

pulldom の外部エンティティ参照の無効化

pulldom で cobertura の吐く xml を処理していたら urllib2.URLError: というエラーが. 何でかと思ったら の部分で DTD の URL を読みに行っているのが原因のよう. マニュアルを読んでも、対策が分からなかったのでライブラリのソースを読んで直感で p = p…

Symantec AntiVirus のウインドウをタスクバーから消す

昨日フルスキャンをかけている途中で間違って止めてしまった. 意味も無くタスクバーを占拠するせいだということで、隠してしまうことに決めた. #include <tchar.h> #include <windows.h> #define BUFFERSIZE (1024) #define SAVSTR _T("Symantec AntiVirus") BOOL IsSAVWindow(HW</windows.h></tchar.h>…

SOCKSv5 の接続コード

認証不要のSOCKSv5サーバにTCPで繋ぐだけwww 接続先もIPじゃないと駄目www 将来に向けた布石のつもりではある. from sys import exit, stdout, stderr from socket import socket, AF_INET, SOCK_STREAM s = socket(AF_INET, SOCK_STREAM) try: s.connect(('…

TRange

Python の yield が恋しい. unit MyUtils.Range; interface uses Generics.Collections; type TRange = record strict private FStartIndex: Integer; FEndIndex: Integer; public constructor Create(StartIndex, EndIndex: Integer); type TEnumerator = c…

PChar + Char の書き換え

Delphi 2009 では理由不明ながら PChar + Char が ShortString になる?ようだ. 更に何かまずいらしく、それを文字列変数に突っ込んで参照するとアクセスバイオレーションが起きる. (バグ???) 警告もこんな感じで出る. [DCC 警告] main.pas(33): W1057 文字列…

Char in CharSet の書き換え

Delphi 2009 では string が UnicodeString になった関係で Ch in ['0' .. '9', '.'] みたいに書くと下記のような警告が出る. [DCC 警告] main.pas(391): W1050 set 式で WideChar がバイト char に縮小されました。'CharInSet' 関数を 'SysUtils' ユニット…

文字列の SJIS での保存

Delphi 2009 では string が UnicodeString になった関係で Stream.WriteBuffer(S[1], Length(S)) ではおかしくなる. TBytes (array of Byte) に変換してから書き込む必要がある. var Stream: TStream; Buffer: TBytes; begin Stream := TFileStream.Create(…

NTP から現在時刻を取得する関数

何で書いたのか記憶に無いのだが、発掘されたので. def ntp_now(server, port = 123): from socket import socket, AF_INET, SOCK_DGRAM from struct import unpack from datetime import datetime s = socket(AF_INET, SOCK_DGRAM) try: s.sendto('\x1b' + …

Atom 内の ID によるダイジェスト

rss_sum が要るなら atom_sum も当然要るよねと. def atom_sum(s): from xml.dom import pulldom from hashlib import md5 acc = [] p = pulldom.parseString(xml_encoding_hack(s)) for (e, n) in p: if (e == pulldom.START_ELEMENT) and (n.tagName == 'e…

XML のエンコーディングを UTF-8 にする関数

pulldom が EUC-JP 他に対応していなかったので作った手抜き関数. def xml_encoding_hack(xml): s = xml.splitlines()[0] if s.find('

RSS 内のパーマリンクによるダイジェスト

コメントが付くだけで RSS の最終更新日時が変動するのはどうかと思います. 記事単位での変動で更新を検出するために、ダイジェスト関数を作りました. def rss_sum(s): from xml.dom import pulldom from hashlib import md5 acc = [] p = pulldom.parseStri…

MODE1/2352 を MODE1/2048 に変換するスクリプト

RAW ISO イメージを通常の ISO イメージに変換したくなったので. from __future__ import with_statement from contextlib import nested from sys import argv, exit, stderr if len(argv) < 3: stderr.write("%s infile outfile\n" % argv[0]) exit(1) wit…

固定長配列へのポインタ

型宣言周りは Delphi の方が何倍も分かりやすいな... typedef BYTE (*BYTETRIPLE)[3];

Jython で Apache POI

Java で書いたら throws 書けとか言われてうんざりしたので(ぉ). テンプレートとなる EXCEL ファイルを用意しておいて、そこに DB のデータを流し込んで印刷すると便利かなーと思ったので. from org.apache.poi.hssf.usermodel import * from java.io import…