正式公開に向けて

Mariciは現在試験公開中です。ヘルプなどもなく分かりにくいと思いますが、正式公開に向けてより良いものにしていきたいと思っていますので、試用にご協力いただき、ご意見やご要望をいただければ大変ありがたいです。Mariciの会社サイト、公式ブログは現在…

プライベート設定の不具合

先日ご紹介したMariciですが、マップとトピック単位で公開orプライベート(非公開)の設定をすることができます。その機能に関して、トピックをプライベートにし、そのトピックをFlashのマップ画面で移動や名前変更した場合、公開に変わってしまう不具合があ…

FlashページのURL

Marici - TurboGarsで作られたMind Map風サービス URL原理主義者の私としてはこのURLちょっと気になっちゃうんだけど,これはFlashに直接IDとかを渡すためにこうなっているのかな...? これはFlashへの値の渡し方が下手でこうなっていますが、たしかに気持ち…

マインドマップ風Webサービス Marici

現在所属している会社でこんなものを作ってます、というのをちょっとだけご紹介します。 PythonのフレームワークTurboGearsで作っています。TurboGearsに関しては開発過程で気がついたTipsなどいくつかありますので、またあとで書きます。Marici自分の考えの…

テスト時に自動でcreateTable

TurboGearsのテスト時のDBにはたいていsqlite:///:memory:を使う。余計な環境を気にする必要がないのでこれは便利だと思う。 ただし、毎回テーブルをcreateしなおす必要がある。以下SQLObjectの話。「tg-admin quickstart -i」で自動生成したregister_model.…

ASPN : Python Cookbook : Autoslots

インスタンス変数を固定する__slots__というのがある。それを自動で設定するメタクラスのレシピ。 inspectモジュールでソースコードを取ってきて構文解析させるという強引な方法をとっているようだ。メタクラスについてはASPN : Python Cookbook : Semi-auto…

Tumblrへの投稿メール文字化け対策

Tumblrをメモ代わりに使おうかなと思った。Tumblrはメール投稿のための送信先アドレスを発行してくれるのだけど、日本語が文字化けする。 なので別アドレスで中継してAPIにPOSTするスクリプトを書いた。誰かすでに作ってそうだが・・・。 POSTできるのはとり…

ASPN : Python Cookbook : Unix rename (mv) front-end with GNU Readline

対話的なmvコマンド。元のファイルだけ引数として渡すと、バッファ上で第2引数を編集して実行できる。 べつに便利そうじゃないが・・・。調べたこと readlineモジュール rlcompleterモジュール shutilモジュール readlineモジュール コマンドライン表示をい…

ASPN : Python Cookbook : emulate collections.defaultdict

Python2.5では標準モジュールにdefaultdictという辞書型のクラスがあってキーが存在しない時のデフォルト値を設定できる。 プチ便利そうなので何かの出現回数のカウントアップとかはこれで。 で、2.4以前でも同じことをするためのレシピ。調べたこと default…

ASPN : Python Cookbook : subscriptable generator

内部キャッシュを使っていてリストのようにアクセスできるジェネレータ、とのこと。 ジェネレータって関数のジェネレータとは違うよね。 キャッシュにはSQLObjectを使っていて富豪的な感じ。PickleColにオブジェクトをそのまんまつっこんでいる。三項演算子…

ASPN : Python Cookbook : Callback Pattern

今日もデコレータ。コールバック関数を書くための簡単フレームワーク的なレシピで、昨日のデコレータの使い方と全然違う。メタクラスを使えばもっとエレガントに書けるかも、とのこと。クラスのstaticmethodをデコレータとして、デコレートされた関数オブジ…

書くの忘れてたけど

Pythonは2.4.3と2.5.1で試してます。

ASPN : Python Cookbook : Recursion/loop prevention function decorator

引数を監視して無限ループを検出するデコレータ。状態を持つデコレータはこうすればきれいに書けるのか。 return decorate()でインスタンスを返す。こいつに__call__を実装しとけばデコレータ関数として呼ばれる。__call__は、引数がすでに使われているかど…

ASPN : Python Cookbook : print statement: battle with UnicodeEncodeError

Python Workshop the Edgeの懇親会で少し話に出たけど、UnicodeEncodeError、UnicodeDecodeErrorの動きが微妙に分からない。同じ標準出力に吐くのでも、ファイルにリダイレクトしたらエラーになるとか。でこれはエラーが出る場合は16進表記で書き出すという…

ASPN : Python Cookbook : Semi-automatic resource management with AutoClose

"Python does not make any guarantee at all about *when* the destructor will be called."というわけで、__del__に書いたコードが想定どおりに動かないケースが紹介されている。 で終了時に確実にインスタンスの後かたづけをするためのレシピ。AutoClose…

改題しました

Python Workshop the Edge 2007のセミナー、懇親会に出て触発されたので、ここはPython中心の勉強メモにすることにしました。 で、タイトルを「もにそく、とな?」→「import nowhere」と改めました。とりあえず「Recipes from the Python Cookbook」あたりを…

twipediajpのその後ですが。

add返しは手動でやってるので、このところの体調不良もあってタイムラグが出てしまいました。 addしてくれた方、遅くなってすみません。 スクリプト自体も自宅ネットワークの不調などで落ちていた時間が多々あったようです。 DMしてくれた方、返信できてなか…

Wikipediaを検索してくれるTwitterロボットユーザ

ずっと使ってなかったここを使うか。 Pythonの練習をかねて、Twitterのダイレクトメッセージを受け取り、Wikipediaを調べて返信するロボットユーザを作ってみました。下にソースを載せます。 Python2.4+elementtree or Python2.5で動いてます。 実際のロボッ…

Javaによるキャッシュの実装Tips

HashMapを使ったキャッシュの問題点 削除ロジックを入れなければOutOfMemoryErrorの原因となる どれくらいの量が適切か判断が難しい 古いキャッシュを効率的に捨てるロジックを実装するのはけっこう面倒 解決策 メモリが足りなくなるとエントリが自動的にガ…

窓使いの憂鬱

窓使いの憂鬱を入れて、キーボードの配置などをいじる。 個人的に必須なのはいわゆるSandS(Space and Shift)機能。スペースキーを押し続けることでShiftキーがわりにするというもの。スペースキーを単独で押して離せば、普通に空白がタイプできる。 今まで…

ノートPCの環境を強化

少し考え方を変えて、Linuxによる作業はVMware上で行うことにした。まずはメモリを512MB増設して1GBに。Linuxパーティションを切りなおしてサイズを縮小し、その分を仮想OSイメージの格納場所にあてた(NTFS)。 一応ネイティブでもLinuxを使えるように、デ…

ノートPCに開発環境を構築

中古でThinkPad T42を入手した。 もともと入っていたWindowsの領域をKNOPPIXに入っているqtpartedでリサイズし、空いたところにLinux用のext3領域とswap領域を作成した。 Windowsではデュアルモニタで快適に作業できるようになった。Linux用領域にはUbuntuを…

一義的な重要度

GoogleのPageRank(ページランク)アルゴリズムはとても有名で、非常に実効性の高いアルゴリズムであることがよく知られている。 ただし、これは検索結果の順位づけに関する万能薬ではない。最終的に順位づけをするにあたっては、検索ワードがそのページ中の…

デバッグの楽しさ

デバッグの快感を知らないプログラマがもしいたら、たいへん不幸だと思う。 自分が手がけたシステムのどこかで異常が起きてしまった、というのは大ショックだ。 しかし、それが予想もつかなかった異常であるほど、面白い。「絶対ありえねーーーー」と悶え苦…

InnoDBが重い

レコードは100万件ちょいなのだけど、カウントを取るのに10分とかかかる。 InnoDBのカウントは全件なめるから遅いとはいえ、ちょっと遅すぎるような気がする。 それにトランザクション処理でロック取得(select for update)がタイムアウトになる場合がある…

protected

Javaのprotectedはサブクラスからだけでなくパッケージ内からも見えるが、なんかいいことあるのだろうか。 たしかC++のprotectedはサブクラスからだけなんだよな。

ソースコードのコメントに和む

隣の席のSさんが開発画面を見て笑っていたので何かと思ったら、K氏(個人事業主。元同僚でmichisuの師匠)の書いたソースコード中のコメントがちょっと和むという話だった。 //DBから取得したデータを〜〜に設定して if (... //登録するのだ flush(data); と…

テストケース

JUnitなどを使うユニットテスト。 実際のところ、クラスごとにテストクラスを書くのはけっこう大変だ。 それに、クラスによっては、テストケースを書いたところで動作検証が当り前すぎてあまり役に立たない。 かといってプログラムをたくさんガリガリと書い…