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

装甲悪鬼村正の魔方陣を適当に遺伝アルゴリズムで解く

攻略サイトを見るのも無粋だと思うほど面白い作品なのでちょっと手を止めて適当に解いてみた。 data = [] data.append( [ 25, 16, 80,104, 90, 115, 98, 4, 1, 97, 42,111, 85, 2, 75, 66, 72, 27,102, 48, 67, 18,119,106, 5, ]) data.append( [ 91, 77, 71…

app engine patchでアプリ書いたときのtipsとか

templates/404.html, 500.htmlを適当に書き換えておく これらはdjango.zip内のhtmlに依存していて、その先がmyappに依存しているのでmyappを外すと NoReverseMatch: Reverse for 'settings.myapp.views.list_people' with arguments '()' and keyword argume…

ソーシャル+メッセージングでセミクローズドなもの リリースしました

これは 掲示板やらtwitterやらを混ぜたようなものです。 メッセージ、メッセージに対するメッセージ、と層になっていくイメージで、その親子関係をajaxで軽く渡り歩けるようにしています。 RTってこんな感じじゃないかとtwitterはじめる前に思っていました。…

sambaのパフォーマンスについて

最新のものはこちら かんたんsambaパフォーマンスちゅーにんぐ 2010年版 http://d.hatena.ne.jp/ruby-U/20101213/1292229371 sambaには多彩なオプションがある。 デフォルトで(それなりに)問題なく動作するようになっているが、あれこれ設定すると様々な機…

青空文庫形式のルビをhtmlのrubyタグに変換するモジュール

一体これが何番煎じになるのか想像もつかないが、必要になったので書いた。 青空文庫形式の文法は ルビのかかる部分を明示する 文章に|ルビ《ruby》を打つ。 明示しない 文章にルビ《ruby》を打つ。 という2パターンで、 後者は文字種の境界までがルビのか…

NVelocityに適当なフィルタを組み込んで使う

djangoでいうところの@register.filterのように、NVelocityに自作のフィルタを組み込んで使うには、 適当なクラスを #region NVelocity filter class class nvFilterTools{ public static string escape(string str){ return System.Web.HttpUtility.HtmlEnc…

dropboxのインデックスファイルを自動生成するツール

dropboxをファイル置き場として使いたかったんだけど、フォルダまるごと公開する方法が見あたらなかった。(見つけられなかっただけでありそうな気がとてもする…) ファイルごとにURLのID部分がバラバラだったりはしないので、index.htmlを置いておけばその…

ドキュメント管理のためのVCS 分散管理ならmercurialよりbazaarがアツい?

私がふと思いついて何かを作るとき まずプロジェクトのディレクトリを作り、 右クリックして「新規テキスト ドキュメント.txt」を作り それにだらだらとアイディアを書き連ね、設計して コーディングする という順で進めます。 subversionではレポジトリ生成…

サーバをリプレイスしたときのメモ6 baculaの設定と運用

さて、これがいろいろな意味で一番の大物。 とても強力なバックアップソフトで、いつのまにやら知名度もじりじり上がり、 Bacula.jp http://www.bacula.jp/ なんてのもできていた。 初心者も思わず手を伸ばしてしまいそうなデザインのサイトだが、断言する。…

サーバをリプレイスしたときのメモ5 CentOS 5.3のtips(Domain-0, Domain-U 問わず)

suしたrootでもsbinにパスが通るようにする # vi /etc/profile -if [ "$EUID" = "0" ]; then +if [ "$EUID" = "0" -o "$EUID" = "500" ]; then sendmailにGmailを設定し、メールを送信できるようにする 以下を参考に。 http://www.linuxha.com/other/sendmai…

サーバをリプレイスしたときのメモ4 sambaをインストール、パフォーマンスを最適化する

alice, Domain-0 はファイルサーバ。 windows XPなどのクライアントにリードオンリー、または書き込み可能なネットワークフォルダを提供しなければならない。そのためにsambaを使う。 以下ではゲストを許容しない設定にしている。 samba認証用のアカウントを…

サーバをリプレイスしたときのメモ3 xenの上にwindows 2000をインストールする

書くことはあまり多くないが、ハマりどころがあったので単独の記事とした。 legacy, Domain-Uインストール 仮想マシンマネージャを立ち上げて、 virt-manager 新規作成から普通に進めればいい。 ただ、windows2000をDomain-Uとしてセットアップするときに一…

サーバをリプレイスしたときのメモ2 xenの上に最小のCentOS 5.3をインストールする

Domain-Uのインストール前に alice, Domain-0の使用する最大メモリ量を設定しておく。 これをしておかないと大変で、メモリを確保できない状態でDomain-Uを追加しようとすると、Domain-0がたまに落ちる。もちろん全てのDomain-Uを巻き込んで……。 # vi /boot/…

サーバをリプレイスしたときのメモ1 ntfsからext3へ

windows上のvirtual server 2005で以前から仮想化はしていたが、 bacuraを導入したい linuxのノウハウが欲しい そろそろwindowsも終わりそうな気がする などの理由からCentOSにリプレイスすることにした。 以下のような構成を構築する alice(CentOS 5.3) 物…

foobar2000で管理してるファイルのパスを変えたときにしたこと

foobar2000 v0.9.4.4でCustom Info使ってる環境での話。 パスが変わると、 メディアライブラリ、プレイリスト、再生回数、レーティングなどの情報が飛ぶ まんま全部である。 Custom Infoのデータベースを修正する custominfo_sqlite.db が対象のファイル。 …

PyPIにライブラリを登録したときのメモ

PyPIとは なんぞ?と訊かれたらPythonのCPANと答えてる。CPANがどんなものであったのかはもう記憶の彼方だが。 ユーザー登録だけ済ませれば、後はコマンド一発で新規登録から更新までこなしてくれる。 こんな便利なものをついこの間まで知らなかった。…人生…

deny from allしたあとでDirectoryIndexな場合をallowする

例えば次のようなURLへのアクセス 〜.com/foo/ このfooというディレクトリ内の.htaccessファイルを #.htaccess #とりあえずホワイトリスト方式 order allow,deny deny from all としたなら、当然、このアクセスはdenyされる。 allowしたいが、 allow from al…

datastoreでなんとか望むデータをぐきゅるためのテクニック

まず一例 数値と生成時刻だけを持つモデルを例に取る。 def Item(db.Model): score = db.IntegerProperty(default=0) created = db.DateTimeProperty(auto_now_add=True) ぐきゅる #itemを取得する qs = Item.all() オフセット、リミットを指定して #10番目…

mod_rewriteが扱うパスはデコードされている

foo/あああ/ をuriencodeすると foo/%E3%81%82%E3%81%82%E3%81%82/ になります。 ブラウザは日本語のURLでも自動的にこんな風にエンコードしてリクエストするんですが、このパスをmod_rewriteで、 # foo/文字列/ -> 文字列.html に変換 RewriteRule ^foo/([^…

mod_rewriteでパスを書き換えてクエリを付加しても、methodがPOSTだとcgi.FieldStorage()はそれを拾ってくれない

これはPOSTのときはstdinからos.environ['CONTENT_LENGTH']の長さだけ拾ったものをクエリストリングとして認識するからなんですが、 #cgi.pyのこの部分 if headers is None: headers = {} if method == 'POST': # Set default content-type for POST to what…

超シンプルなフレームワークを書いた

テンプレートエンジンもORマッパーも組み込んでない軽量なものです。 フレームワークとしての機能はほぼ持たず、フレームワークジェネレータといった方がいいような気がひしひしとします。 主な機能は次の2点で、 ... apis: foo: keys: - name: userid type:…

scrapbookのデータディレクトリのインデックスを作る

scrapIndexerが吐いたhtmlがいまいち使いづらかったのでpythonで適当に書いた。 14MBのhtmlとか出力してくれてうわーってなった>scrapIndexer ディレクトリ構造は無視 scrapbook.rdfは見ない ので高速 指定の最大アイテム数ごとにページを分割して吐く ソー…

忍者バリアーを無効化するgreasemonkeyスクリプト

JS切ってブラウジングしてるととても邪魔。 meta refleshが実行されるタイミング的にどうかなーと思ったが、onload時にwindow.stop()でうまくいくっぽい。 // ==UserScript== // @name ninja barrier breaker // @namespace http://d.hatena.ne.jp/ruby-U/ /…

scrapbookのデータが増えたら重くなるので何とかしよう

06年からこちらscrapbookはノーメンテナンスで頑張ってくれてたが、この頃はフォルダを移動させるだけで数時間とかどんなバッチ処理だよという感じになってきてた。 今日、scrapbookの公式ページを見てると http://amb.vis.ne.jp/mozilla/scrapbook/addons.p…

ページのスクロール位置を自動で保存/復元するgreasemonkeyスクリプト

俺がタブを数百枚とか、時にfirefoxが1.5GBにも達するほど開くのはタブを閉じると以前のスクロール位置が失われるからで、要するにどこまで読んだかを保存しておきたかった。 grasemonekey+gearsでやってみよう、と今日の午後に始めたが、 http://code.googl…

pythonでWEBカメラを使ってバーコードを読み取る

ウェブカメラでぴぴっとAmazon中古価格相場とか調べることができたら不要本の処分がはかどりそうだということで適当に実装してみた。 を読み取ると、 ↓ left side character(1) not found: 1111111 left side character(1) not found: 1111111 left side cha…

データストアのoffsetは1000以上では使えない

そういえばそういう制限もあった。 offset may not be above 1000 とかエラーを返してくれる。 制約に合わせて上のアプリを修正。 重要なのは statuses = Status.gql('ORDER BY id DESC').fetch(limit, (page - 1) * limit) ↑だとoffsetが1000以上になってし…

twitterのログを自動的にバックアップするGAEアプリ(cronを使ってみる)

twitterのログを長期間残しておいて、いつでもアクセス可能にしたいな―と思ったので丁度GAEがcronに対応したことだし、とアプリにしてみた。 http://rubyu-twitterlog.appspot.com/ 実際に動いてるところ。 cronで10分ごとに http://twitter.com/statuses/us…

ATOKを簡易なtwitterクライアントとして使えるようにする

twitterでいろいろ作業ログを残そうと思うんだが、専用クライアントを使うんではどうしても一手間余分に掛かってたぶんそのうち飽きる。 これもATOKでやれればメモ帳でもブラウザの検索バーでもテキストを打てるところがあればPOSTできるよなーということで…

色の名前で検索してプレビューしつつカラーコードに変換する

自分が使いそうな機能をあれこれプラグインにしてるが、あんまりニーズはなさそうだ。 これは色の名前で辞書を引き、 その色をプレビュー 〜色などで末尾の不足があるとそれを補える カラーコードに変換 みたいな機能を提供する。 #ここから上はcolors.pyの…