タグ管理機能を追加しました。

タグのサジェスト機能はまだ実装できてないんだけれども、とりあえず自分で手動設定はできるようにしました。 "名前" だけを持つ単純なタグだと面白くないので、 "カテゴリ" - "名前" のように、2つの値をタグに持たせて、多少柔軟に管理できるようにしてい…

Transformed Weight-normalized Complement Naive Bayes(TWCNB)についての実験と結果

自作ソフトにテキストの多クラス分類機能を組み込みたくて、調べてみたら Complement Naive Bayes(CNB、補集合ナイーブベイズ)というアルゴリズムが最近の流行のようで、これを検証してみることにしました。元論文 を一通り読んでから検証を進めていきまし…

サムネイル表示機能を追加しました。

本来なら本体内部でサムネイル生成を行いたかったのですが、javaではマトモなブラウザコンポーネントがないため(lobo browserでテスト実装したところ、googleですら崩れてて数回サムネイル撮ったらCPU100%に張り付いて死にました…)、C#でIEコンポーネント…

scrapbookのかわりに使えなくもないローカルWebアプリ

firefoxからchromeに移行すると僕はscrapbookがなくて死んじゃうので、それっぽいアプリ作りにこの頃は時間を使っている。 vectorに登録されたみたいなので紹介がてら記事にしておこうと思う。 http://www.vector.co.jp/soft/win95/net/se482789.html できる…

zipで固めた画像を配信するWebアプリ

昔作ったアプリに「これビューア機能つかない? iPhoneで見れたら最高なんだけど」とコメントをくれた人がいた。そもそもそういう方向のアプリじゃなくて(ビューア機能は欠片もない)、想像もしなかったニーズだけど、ちょうどjavaでjettyを使う予定があっ…

文字コードをutf-8にするだけのプロキシを書いた

最近iPhoneで使っているinstapaperという"あとで読む"アプリが、時々文字コードを適切に処理してくれないので、自前で全てutf-8に変換して渡してやろうとプロキシを書いた。 google mobile proxyという手段もあるんだけど、これは携帯用なので適当なサイズに…

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

攻略サイトを見るのも無粋だと思うほど面白い作品なのでちょっと手を止めて適当に解いてみた。 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…