さり海馬

Thoughts walk away, blog stays.

python

ダイス式を計算するプログラムを作ってみる(2)

photo by centralasian CC BY 2.1 前回からの続きです。前回はダイスコードの構文を決め、(E)BNFでそれを書き下しました。そして、いろいろと置き換えて解析しやすい形にしました。今回は、いよいよこいつをpythonのコードに落とします。…っていってもその過…

ダイス式を計算するプログラムを作ってみる(1)

photo by Tomi Tapio (CC BY-SA 2.1) あるアイデアをふと思い立った時に、それを最後まで実行するために役立つ手段の一つが、「やる」と宣言してしまうこと、だそうですね。そんなわけで思いついたことを実行してみます。 やりたいこと "2d6" とか "D12+5" …

Apache+mod_wsgiでPySVNを使ったらうまくいかないでござるの巻

あるいは 「"DLL not found" を解決するにはどうしたら…」今さら python + Django でウェブアプリなんか作っている thalion です。作ろうとしているのは: リポジトリのURLとリビジョンを入れるフォームがあって それを入れて「実行」ってやると そのリビジ…

管理ツールの「タスク」からpycronに移行しようとしてハマッたでござるの巻(追記あり)

表題の通り。スゲエ初歩的な部分でハマッたので、自戒の意味を込めて書いておきます。会社のデータベースから毎晩深夜に必要なデータを引っ張り出して、それを加工・集計してレポートをメールで送る、というスクリプトを作って動かしてました。Windows XP 上…

半角カナが混じったテキストをメールで送る

会社のトラブル管理データベースから自部門に関係あるものを抽出し、未解決のものとそのデータへのリンクを貼り付けたメールを毎日自動送信する、というプログラムを python で組みました。 問題 ところがそいつが最近コケるようになりました。やっつけで作…

メモ:リストの並びを維持したまま重複を取り除く

lst = [ 0,0,1,1,2,3,3,4,5 ] lst = sorted( set(lst), key=lst.index ) もともとのリストの順序(=lst.index)をキーとして、set()で集合型に変換して重複を取り除いたシーケンスの中身を並べ替えたリストを得る、というシナリオ。

smtplib で複数宛先にメールを出そうとしてハマった件

えー、題名どおり(笑)。 import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate def create_message( from_addr, to_addr, subject, body, encoding='iso-2022-jp' ): """ creates MIMET…

smtplib でメール出そうとしたらエラー出た件

環境: windows XP sp3, python 2.5.1いつもお世話になってますな「こちら」を参考にコード書いたんですが、encoding 周りでエラーとか出て、うまく行きませんでした。そんなわけであちこちぐぐってさまよった結果、以下のようなコードで、なんとか回避しま…

pyExcelerator にはシート名でシートにアクセスする手段がない?

@accepts(object, (str, unicode)) def add_sheet(self, sheetname): import Worksheet self.__worksheets.append(Worksheet.Worksheet(sheetname, self)) return self.__worksheets[-1] @accepts(object, int) def get_sheet(self, sheetnum): return self.…

Python から Excel ファイルを作る

お年寄り各位から「やっぱ Excel 出力がほしいじゃん」とか言われる。「.csvでいいですよね?」って言ったら「.xlsでくれ」と言われた。悲しい。そんなわけで Python から生Excel(*.xls)ファイルを作るためのモジュールを探してみた。そしたらものすごいのが…

Tempita を導入する

Tempitaは、小さくて軽快なテンプレート言語。今作っているツールを改良するときに、「あるテンプレート文中にあるキーワードをある一定の規則に基づいて置き換えてくれる」処理が必要になった。Python にはもともと String クラスに Template というのがあ…

easy_installをインストールする

…ってまだやってなかったのかよ、というツッコミは甘んじて受けます(笑)。 インストール PEAKで easy_install のインストーラーであるez_setup.pyをダウンロードし、適当な作業用ディレクトリに入れておく コマンドプロンプトを起動して、上の作業用ディレク…

こいつ、動くぞ…

というわけで、これまでアレコレやってきたチケット自動生成スクリプトはあらかた完成しました。今までは csv のインポート機能経由だったので人手が要ったけど、そこはxml-rpc使って全部オンラインでやるようにしたので完全無人化です。やたー。OralceDB →(…

メモ:xml-rpc の ticket.getTicketFields()で得られるリスト

ticket.getTicketFields() で得られるのは、辞書を要素として持つリスト。 [ {"type":"text", "name":"summary", ... }, {...}, .... ] 一つの辞書が一つの属性を記述している。対応関係は以下のとおり: trac型 とりうる値 type name label custom order op…

Python on iPhone

Hello Worldアプリに続く第2弾。ハッカーのNerveGasとiphone-shellスタッフが今度はiPhoneで使えるPython、Apache、オープンソースのアプリを作ったようです。これでiPhoneもウェブサーバーとして使えますね。 すげえ。でもウェブサーバーになんか使いたくね…

xml-rpc で trac につないでみた

とりあえずはライブラリ・リファレンスにあるxmlrpclibを使ってみる。必要な手順 trac の管理メニューから、xml-rpc でアクセスするアカウントに XML_RPC 権限を与える リモートのクライアントからアクセスする 設定したら、公開されているAPIの名前を取得す…

文字コードで悩んだ

Oracle データベースにクエリを投げてデータを拾ってくる(SJIS) 中身を解釈してチケットデータを作る(Unicode) csv 形式で書き出す(Utf-8) 悩んだのは 1.のところ。 import cx_Oracle con = cx_Oracle.connect( username/password@DTS ) cur = con.cursor() …

そのセミコロンは必要ない

cx_Oracle でクエリを投げるとき、SQL文末の";"は必要ない。セミコロンは SQL Plus の拡張文法だから。…こんなことで一時間もつぶした…orz。参考:http://logbookx.blogspot.com/2008/03/ora-00911.html

trac の csv チケット生成を python でやってみた

やったこと: 会社の要件管理DB(OralceDB)から自分に関係ある新規の仕様変更要求をフィルタリングして、csvファイルに落とす 自作のスクリプトで、この中からリリース対象機種とそのブランチに合わせて1対Nの関係でtracのチケットをCSV形式で生成する このと…