2008-01-01から1年間の記事一覧
mod_wsgiを使うことでも、djangoアプリケーションが使えます: http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango とはいえ、このドキュメントも、.htaccessで使うためのものはなく、いろいろな環境の対策が混在してるために自環境に合わせる部分…
閉じてないタグを閉じたり、タグ名を小文字にしたりというような副作用もあるわけですが。 from BeautifulSoup import BeautifulSoup import cgi dangerous_tags = [ "script", "applet", "object", "embed", "img", "form", "input", "select", "textarea",…
マイクロスレッドの比較対象のひとつとしてlua5.1を使ってみたけど、Luaって最近の言語と比べて結構独特な部分が多いなと思いました。以下、はまったところ: Tableを配列風に使うときの開始インデックスは1であることを忘れる Tableの存在しないインデックス…
http://b.hatena.ne.jp/bellbind/ http://b.hatena.ne.jp/entry/http://www.reddit.com/r/programming/comments/7fcaq/oo_programming_why_traits_rule_and_mixins_and/
新しいはてブは一覧ページでも本文を埋め込むようになったけど、どうもこの本文はノイズが多すぎて、一覧性にも支障があるので、Stylishを使ってユーザーCSSで消すことにしました。タグで絞り込むと非表示表示を切り替えられるのに、絞り込まないとそれがな…
rails風にwebアプリを作成できる話題のmerbを使ってみました。 インストール すでにgem,rails,mongrelが入っているcygwin上にいれてみました*1。まずはgemの更新 gem update gem cleanそしてmerbを入れる gem install merb入ったのはmerb-1.0.1でした。デフ…
linux上でgcc-4.3を使った場合。違いはptr型、long、long double、size_t、time_tなどで起こる。 x86 sizeof(int) = 4 sizeof(void *) = 4 sizeof(size_t) = 4 sizeof(ptrdiff_t) = 4 sizeof(wchar_t) = 4 sizeof(void) = 1 sizeof(clock_t) = 4 sizeof(time…
fgetcで書ければ、freadで書ける - ラシウラでは、fgetcからfreadを使うように変えました。これは機械的に変換しただけでしたが、ここからつぎは1文字づつコピーしている部分を、memcpyを使用して、ブロック単位でコピーするように変えてみましょう。 まずリ…
初心者では、fgetcで一文字づつ処理するコードは記述できるのに、バッファを使うfreadで書くのに悩む人もいます。単純にfgetcで一文字づつ処理するコードは、以下のような形になるでしょう for (;;) { int ch = fgetc(file); if (ch == EOF) break; ... } こ…
PythonでのDSL風記述に挑戦するため、PythonでのProlog風のソルバーを作ってみました。エンジンの実装は、 合併のお知らせ|OKIソフトウェア をベースにしています。PythonでPrologのDSLをやってるものとしては、以下のものがありました: http://code.active…
Cが使えると自称する人で、本当にC言語の意味を理解できてる人はわずかだったりします。というかリファレンスマニュアル等を見たことが無い人も多かったりするし、かれらが参考にしたリソースが仕様を理解して書かれているかどうか怪しいものも多い。実装が…
配列シャッフルをC言語(ISO C89)で書くと以下のようになります: #include <stdlib.h> #include <math.h> #include <stdio.h> static void shuffle(const char ** const array); static void swap(const char ** const array, int i, int j); static const char * names[] = { "taro", "j</stdio.h></math.h></stdlib.h>…
配列のソートはいまさらいうまでも無いアルゴリズムですが、なぜか最初にくるアルゴリズムがバブルソートだったりするのはなぜでしょうか。正直バブルソートは直感的にわかりにくいと思います。比較的わかりやすいのは選択ソートだと思います。「一番小さい…
風邪で寝てるあいだ、頭痛な頭でなぜか配列のシャッフルするアルゴリズムのことを思い出し、乱数と使い方の落とし穴について考えてました。シャッフルは、たとえば輪読の順番を決めるときにつかいます。名簿を最初あいうえお順に並べて配列に入れておいてシ…
実行すると自分自身のコードを吐き出すプログラム。こういうのってなんていうんだっけ。自己複製? コード→文字列の変換のエスケープが不要になるrubyが一番作りやすくて、しくみも理解しやすいかも。注意したところは、改行文字を直接使わないようにしたこ…
cygwinのgccとmingwですが、Cソースにutf8を使えば日本語も使えました。しかしrcファイルをコンパイルするwindresはUTF8を受け付けませんでした(rc中の文字列をSJISで書いた場合、そのまま使えるっぽいけれど「表」のように'\'と同じ値を2バイト目に持つもの…
「7の倍数」でググると、いくつかの判定法が出てきます: 7の倍数 - Google 検索 昔自分が考え付いたときの方法は、単純に、二桁目と三桁目以上と一桁目をわけて、数列をだしてそこから法則をみつけたものでした。以下の表は、7で割り切れる数の一桁目をa、二…
djangoのrunserverで使っているdjango.core.servers.basehttp.WSGIServerは、Python標準のBaseHTTPServer.HTTPServerがベースになっています。これはスレッドを使わずに複数のリクエストを耳順に処理していく仕組みになっています。このためrunserverでは、A…
PLoP 2008 - 15th Conference on Pattern Languages of Programs よりJames Noble氏*1が著者に連ねてるのは以下の二つ: http://hillside.net/plop/2008/papers/PLoP2008_16_Coelho_et_al.pdf http://hillside.net/plop/2008/papers/PLoP2008_33_Pearce+Noble…
x86仮想マシンのbochsを使ってみました。オプションの設定に苦労した。以下、ブートセクタにHello Worldを出すコードを入れたFDイメージをつくり、bochsで起動させています。 FDイメージの作成 ブートセクタ用のアセンブリ*1 ; hello.asm org 0x7C00 ; start…
VistaでHPのプリンタドライバを使ってると、定期的にhprbUpdate.exeに権限を求めるダイアログが出てうざいことこの上ないのだが、検索しても止める方法がみつからなくて自分で調べてみました。Yahoo!知恵袋とか、OK Webとか質問袋とかではスパイウエアだから…
検索でヒットするものは、Rails本化したものの残骸だったり(なぜ消すんだろか、古いから?)、知りたいところが省略されてたりと完全でないものばかりなのでメモ。 基本的にはscript/generate scaffold ...で生成されたものがActiveResource対応しているので…
Python3には、2系で作られたコードを3用に変換する案をパッチを生成する2to3というコマンドラインツールが付属してます(本体はlib2to3という標準モジュール群)。たとえば、エンコード引数つきのunicode関数でも、そのままエンコード引数が存在しないstr関数…
Pythonでは、FFI(Foreign Function Interface)としてctypesモジュールを使います http://docs.python.org/lib/module-ctypes.html http://python.net/crew/theller/ctypes/tutorial.html DLL 読み込むDLLのCソース dll.c: // gcc -fPIC -shared -o dll.so dl…
PythonでLISPっぽい何かを作ってみた - ラシウラでは、evalメソッドではfuncオブジェクト内でも再帰的に呼び出されるため、例中のfactでも引数を100程度にしてしまうと、"RuntimeError: maximum recursion depth exceeded"が発生してしまいます。再帰にしな…
Pythonでのインタプリタのコードは、本体は200行程度で、builtinで100行程度の300行程度です。一番やりたかったのはmacro機構を実装してみたかったこと。一般のデータに対しては、整数以外の関数は組み込んでないのですが、以下のようなコード例を解釈できま…
alertって手軽だけど、ダイアログがモーダルでクリックがうざいので、非モーダルな別窓としてTabに出るようにちょこっと上書きすることにしたり function alert(obj) { var title = "alert: " + window.location.href; var win = window.open(null, title); …
エラトステネスのふるい on JavaScript-1.7/1.8 - ラシウラ をGoogle Gearsのworkerpool上に実装してみました。workerには制限がいくつかあり、その対策は少し面倒でした。 alert等は使えない createWorkerできない これらを実現するため、親workerPool(ID=0…
「エラトステネスのふるい」は、平行プログラミングの基礎的な例としても用いられる。この場合は、各ふるい(sieve)は最初に受け取ったものを素数とし、その担当の素数の倍数を受け取ったらふるい落とし、そうでないものを受け取ったら次のふるいへ渡すコード…
gcc-4.3では"Explicit template specialization cannot have a storage class"エラーが出るので、 CXX=g++-4.2 sconsでビルドできる http://gcc.gnu.org/gcc-4.3/porting_to.html $ svn co http://v8.googlecode.com/svn/trunk/ v8 $ cd v8 $ CXX=g++-4.2 sc…