HTML5の仕様書を見て歳を感じる

HTML3.2の頃を知る身としては、隔世の感があると本当に思う次第です。 世間はcanvasだvideoだと賑やかですが、個人的には廃止になった機能に目がいきます。 HTML5のobsolete項を見ると、レイアウト系のattributeが結構削られています。 特に、table系要素のa…

IEEE754の分布について

積年の謎が氷解した日。 IEEE754で表現される浮動小数の数値の分布はどうなっているのか。 表現可能な数値間の距離はそもそも一定なのか?一定じゃないのか? 感覚としては0を中心として数直線の両側にいくにつれてスカスカになりそうだけど… 一定じゃないな…

JavascriptのMath.random()でユーザートラッキングができるという話

Web

表題の件について。 地味な話ですが、javascript(というかECMAの仕様)にあるMath.random()には、乱数のシードを与える方法が無いようです。 そんなわけで、われわれ一般市民は各ブラウザが独自に実装している、謎のシードで初期化された謎のアルゴリズムで…

Jaro-Winkler距離

以前、スペルミスや「もしかして」系の機能の裏で動く技術としてわりと知られているLevenshtein距離についてちょっと書いてみました。 今回はそれと同様な用途に用いられがちなJaro-Winkler距離。 Jaro-Winkler距離というのは、Levenshtein距離同様に文字列…

バグのデータベースとか

バグトラッキングシステムをお使いの皆様方こんばんわ。 唐突ですが、失敗知識データベースってご存知でしょうか。 たしか、科学技術関連の雑多な「失敗」をデータベースとして管理公開して、 みんなで教訓を共有しようぜ!というプロジェクトだったと思いま…

json hijack、ブラウザセキュリティ、サイト側のセキュリティリテラシーとかなんとか

JSONハイジャックでよく攻撃の例として挙げられるパターンとして、 サイトAの認証Cookieを持ったマシンBが、攻撃者Cのサイトにアクセスした際、 BにAからデータをリクエストさせるという例が良くあります。 形式的にはまあ、昔々からあるお話で、通路がJSON…

URIの長さの上限とブラウザいじめ

URI(もしくはURL)の長さの上限ってどれくらいだろう? GETを多用する人やブックマークレットでありとあらゆることをやりたい人は一度は興味を持ったことかと存じます。 僕の知る限り、RFCではURL(の長さ)を規定はしていないはず。 俺責任取れないから、長…

SPACE ALC用のブックマークレット

なんてやる気のない表題なんだ。 情強の方々はSPACE ALCなんぞ使わなくても脳みそのMySQLで間に合っているのでしょうが、 僕はその辺が足りないようなのでいつもお世話になっております。 きっとALCとLSDがあれば英語についてはもういい気がします。 そんな…

DjangoでXMLRPCとかを使うとき

なんか403になるなー、と思ったら、CSRF対策をご丁寧にDjangoさんがやってくれちゃってます。 さすが、ジプシージャズの帝王は違うね。 ●対策 突貫でやるなら@csrf_exemptデコレータでOFF。 詳しくは本家本家いわく、あまりオススメの方法でないそうですが、…

Levenshtein距離とか。

某所のパズルでまさにこれを使う問題が出たので2年ぶりくらいに実装してみる。 ●レーベンシュタイン距離 2つの文字列があるとき、片方からもう片方に変換したい。 文字の置換・挿入、削除の3つの操作が可能なとき、一連の操作の最も少ない回数のこと。 Goo…

PythonでMethod Missing

聞くところによると、RubyにはMethod Missingなる機能があるとか。 いわく、オブジェクトにメソッドがない場合に、どういう処理をするかを記述するとか。 こいつぁ、われらがPythonにも欲しい機能です。 上記の文面をまともに受け取る使い方でも良いのですが…

MacPortsでHugs突っ込むときにコケる件。

トラッカーによるとleopardでは起こらないけどsnow leopardでは起こる。 https://trac.macports.org/ticket/20950 以下を参考にすれば最短距離。 パッチ2つ当てるのみ。http://antsomerset.co.uk/2010/10/04/installing-hugs98-haskell-on-mac-10-6-snow-leo…

すごいのみつけた

以前から、Haskellの遅延評価の枠組みは確率分布のサンプリングとかやるのによさそうだなぁとか思っていたのですよ。 再帰を使うってだけなら、C++とかでも上記の式と同様になるかと思いますが、 いざサンプリングするぞって時に面倒なのが、SBPのtailの方。…

O'REILLYどうした

もともと翻訳どうよ、と思うものが多い出版社でしたが、 久々の出物、しかも大物、しかも2つ。 あまりに酷いので、ここで血祭りにあげようと思います。プライムナンバーズ ―魅惑的で楽しい素数の事典 (O’Reilly math series)作者: David Wells,伊知地宏(監…

はじめてのMac

時代の流れに負けてMac book Proを買った。とりあえずキーボードの使い方がwindowsと違いすぎて困ったが、GUIのとてもきれいなlinuxなんだという友人のアドバイスでバリバリ使えるようになった。 もちろんコマンドラインでしか使ってない。どうしてこうなっ…

Project Euler Problem 84

モノポリーで、どの升目に止まりやすいかという問題。 まじめに計算できそうな感じだけど、せっかくなのでサンプリングしてみる。 ただひたすら面倒なだけ。 import random # monopoly simulator cells = [ 'GO', 'A', 'CC', 'A', 'T', 'R', 'B', 'CH', 'B',…

Project Euler Problem 125

単なるブルートフォースなのだが、範囲が違うけど同じ数が出うることと、それを加算してはいけないことに1時間ハマって死にたい。何この凡ミス。 typedef unsigned long long int nat; vector<nat> gensqsq(nat lim){ vector<nat> sqsq; for(nat i=1;i*i <= lim;++i)sq</nat></nat>…

新言語

NTTはもう少しまじめくさいところだと思っていた。 NTTの人が書いたプログラミング言語のhttp://www.brl.ntt.co.jp/people/hirata/Papers/spa99.pdf:論文。 その名も、織田信長。 論文の字面の時点ですでにシュールすぎるが、この言語の真価はその由来にある…

スライスでちょっと考え込んだ

Pythonにて、 s = "123456789" というようなリスト(この場合文字列だが)で、マイナスのインデックスを指定してスライスすると、末尾から数えてくれる。 print s[-4:-1] とすれば"678"が取れる。 じゃあマイナスインデックスから、リスト末尾までのスライス…

Project Euler 87

ストレートにx^2 + y^3 + z^4を総当りでとけばよい。 どうせそれぞれの変数に入る素数の値候補は多くは無いので、 最初にリストにしてしまって、リストの3重ループで回す。 当然xのとりうる範囲は50000000の平方根より少ない。 yのとりうる範囲は50000000の…

Project Euler 85

驚きの適当さ。終了判定すらしていない。なぜかPerl。 最後のほうで出たものが答え。親の長方形を埋めるための子の長方形の数は、親の長方形の辺の長さが逆転していても同じ。 つまり親の長方形のサイズが3x4でも4x3でも同じだよということ。 パターンの数は…

Project Euler 80

久しぶりに。 高校の時の参考書に載っていた。 今見ても、こんな面倒な手順を覚えられるかと思う。おおむねこんな感じ。なんだか教科書に乗っている手順をそのまま書き下しているだけなので、すごい汚いなぁ。 def getSqrtDigitSum( n, howmanydigits): if h…

boost::random見てみた

C++

boost::random見てみた。お、おお・・・うつくしい。なるほど、なるほど。 乱数生成器と生成される数値の型・範囲、分布モデル、を自由に決められる。 boost::variate_generator< 生成器, 分布モデル > hoge( 生成器のインスタンス, モデルのインスタンス ) …

Git使ってみる

とりあえずMSysGitを入れ、TortoiseGitを入れる。 リポジトリを作ろうとする。 → MSysGitのPATH設定しろエラー → MSysGitのPATH設定する → メッセージがブランクのエラー → tgit.exeをgit.exeにリネーム → リポジトリ作れた。TortoiseSVNと違って、まだまだ…

vnc on ssh

メモ。 VNC on SSH。 Serverはlinux、Clientはwin。 Winだとputtyなる有名人がいるらしいのですが、 よく分からないのでClientはCygwinのopenSSHで。 サーバーもOpenSSHで。 ssh -l ユーザ名 -L クライアントのポート:localhost(クライアントのアドレスでも…

Lightweight Language Tigerに行った

用事があって大分後半からしか見られなかった。見た中で、特に印象的だったのは、並列化とLT。 並列化について: 話にあったとおり、時代はそっちに流れていくと思う。 しかし、これまた話しにあったとおり、それに対応させるには困難を伴うと思う。 何しろ…

Pythonでリストから要素を取り出しつつ削除する場合

Pythonメモ リストをループでまわす場合、要素を一つ一つ取り出すけど、削除しつつだとどうなるのだろう? 現在値の場合 counter = 0 for i in l: if i % 2 == 0: del(l[counter]) counter+=1 print l 出力 >>> l [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 2…

Project Euler Problem 73

71とほぼ一緒。 上限と下限が決め打ちされている分71より簡単。 natural f73(){ natural lowd = 3; natural lown = 1; natural highd = 2; natural highn = 1; natural counter = 0; for(natural d = 12000; d > 1 ; --d){ for(natural n = (highn * d / hig…

4ヶ月ぶり

お金がないので課金をやめてしまいました.ごめんなさいはてなさん. でもカウンターからページビューにダウングレードする際にカウンターがリセットされるのは切ないのですが何とかなりませんか. 別に僕しか回していなかったからいいのですが. ちと最近バ…

ナイーブベイズ再考

ナイーブベイズは単純ベイズともいうそうな.ナイーブのウムラウトが気になるのかね. さて,以前非常に冗長な表現でナイーブベイズを説明しましたが, 今度はシンプルに,実装したときに思ったことなどを. 昨日は休日だったので,遊びでComplement Naive B…