2009-01-01から1年間の記事一覧
MacのChromiumの最新版でしか確認していないのでそれ以外の環境で動くかは未確認。それから、cursor: -webkit-grab等の値は認識されているがカーソルに反映されていないようであり、よくわからないのでそのままにしてある。 乗り遅れないうちに、Google Chro…
Chromeのcopyは, たしか, 隠しinput[type=text]作ってcopyさせたいものをvalueにいれて, selectionStart/Endをいじって, focusあてて, document.execCommand('copy')すればJSだけでできる. http://twitter.com/Constellation/status/7188365498 これを参考に…
切符の問題 切符の裏に印刷してある4桁の数字を4つの数字と考えて、足し算と引き算だけで10を作るゲームの解き方。 例えば、1,2,3,4の場合は1+2+3+4=10。プログラム的には、 prob([1,2,3,4]); // [{plus: [1,2,3,4], minus: []}] こんな感じに返ってくるよう…
10分でコーディング|プログラミングに自信があるやつこい!!を見て、僕だったらどう書くかなと考えた。 まず、10分で解くことを目標に急いで書いた物。最後のほう読むの忘れて引数名などをミスった。 function range(start, end) { var a = []; var i; f…
javascript:(function () { var get_video_id = function () { return yt.getConfig("VIDEO_ID"); }; var get_title = function () { return yt.getConfig("VIDEO_TITLE"); }; var get_t = function () { return yt.getConfig("SWF_ARGS").t; }; var make_do…
Life is beautiful: Python Hack : 噛めば噛むほどおいしくなるクロージャの話を見て、いろいろと気になるところがあったので書いてみる。 import yaml def _get_from_disk(): data = open('config.yaml').read().decode('utf8') config = yaml.load(data) …
sprintfっぽい物を先頭に書いておくと、けっこう便利。 function sprintf() { // limited implementation of sprintf. var format = arguments[0], argv = arguments, i = 1; return format.replace(/%([s%])/g, function (all, type) { return type == "%" …
Selectors APIのDraftに、matchesSelectorというAPIが定義されていて、現在、WebKitとMinefieldのNightlyに搭載されている。 ただし、ドラフトなのでベンダープレフィックスがついていて、Element#webkitMatchesSelectorやElement#mozMatchesSelectorを使わ…
CSS Transitionsと呼ばれる機能で、CSSでアニメーションとかを実現する物。Safariには前からあった。 <style> body { -moz-transition: 5s all linear 0s; -webkit-transition: 5s all linear 0s; transition: 5s all linear 0s; text-align: center; text-shadow: </style>…
isSorted :: (Ord a) => [a] -> Bool isSorted [] = True isSorted [_] = True isSorted l = and $ zipWith (<) l (tail l) こんな感じに書ける。最近、zipやzipWith、mapといった基本的な高階関数が最初から(もしくは、builtinのモジュールとして)存在し…
最近、WebKitにObject.defineProperty、Object.defineProperties、Object.getOwnPropertyDescriptor等、今まで間接的にしかいじれなかったり、JSからは設定することのできなかった内部プロパティを操作するためのメソッドが入った。現時点のWebKitに入ってい…
01011010を4にする関数。 結論から言うと、__builtin_popcountを使えば良い。 int popcount(unsigned int n) { int i = 0; while (n) { i += n & 1; n >>= 1; } return i; } ごく普通にやるとこう。遅い。 int popcount(unsigned int n) { int i = 0; while …
location.protocolに変な文字列を入れた場合の挙動。 location.protocol = "javascript://\nalert(1)//" Safariでalertが表示される。XSSAuditorがコメント部分をチェックしないので最近のWebKitでもrefuseされない。 http://twitter.com/javascripter/statu…
現時点ではMacPorts上のghcはsudo port install ghcでは入らない。 Snow Leopardで動くghcは、GHC: Download version 6.10.4だ。 ただし、ghciやrunghcは動くがghcでのコンパイルは失敗するので、MacPortsのghcが動くようになったら、sudo /Library/Framewor…
重みを考慮しつつランダムに配列から値を取り出す。 javascripter's gist: 180816 — Gist に置いた。 人口密度を元に、都道府県を取り出す場合を例にとって説明する。 |東 京|大 阪|神奈川|埼玉|..|.||上記のように一本の線として捉えて、chioce時にrand(0, …
WindowsだとdelコマンドがあるらしいがMacにはない。 javascripter's gist: 177415 — Gist に置いた。 del file1 file2 file_or_directory3のように使う。ファイル名に空白が含まれていても平気。 ファイル名が重なったら、1.foo、2.foo、…という風に数字を…
RubyのERB#run、ERB#resultがbindingを受け取るのが気持ち悪いので、ハッシュを受け取れるようにしたらどうか、という話。 def hashing(pair) Class.new { pair.each {|key, value| define_method(key.to_sym) { value} } }.new.instance_eval { binding } e…
次の月の一日前のDateTimeオブジェクトのdayメソッドが今月の終わりの日付。 追記:id:udzuraによると、DateTime.new(t.year, t.month, -1)と書けるらしい。このほうがオブジェクトをたくさん作らなくていいのでスマートだ。 #!/usr/bin/env ruby require 'e…
range()オブジェクトとジェネレータの違いについて調べた。 def enum_from_to(begin, end): i = begin while i < end: yield i i += 1 まず、rangeの機能を限定したようなジェネレータを定義する。 print (list(zip(enum_from_to(0, 10), enum_from_to(0, 10…
HTML5で定義されている、classNameやrelを操作するための新しいAPIがFirefoxのナイトリーに入った。 var p = document.createElement("p"); p.classList.add("foo"); console.assert(p.className == "foo"); p.classList.add("bar"); console.assert(p.class…
Personalize Your Homepageからインストールできる。 Firefox等に搭載されているGeolocation API(Geolocation API Specification)を使って、Google Mapsに現在位置を表示する。 マップレットと呼ばれる、Google Maps APIが使えるWidgetのような物を使用する…
javascripter's gist: 159058 — Gist に置いた。 a=b=cという文字列を["a", "b=c"]に分離するために.split("=")を使うことはできない。あまり使われることのない第二引数のlimitを使って.split("=, 2)としても、["a, "b"]になってしまうので、使えない。 追…
何か新しい言語をはじめる時、Hello, World!だと簡単すぎるので代わりに円周率を計算するようにしている。 javascripter's gist: 156960 — Gist foldlに無限リストを渡すと止まらなくなってしまうので、pi'で精度を指定するようにしたけれど、微妙…。 あと、…
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090719 Minefield/3.6a1preで確認。 Illegal valueといったエラーで動かなくなるのを修正する。 (function () {})();で囲っている部分のコードがまずかったようなのでそれを…
追記: 下記のXSSは修正された。修正前は下記のURLにアクセスすると <link rel="alternate" type="application/rss+xml" title="RSS2.0" href="http://live.nicovideo.jp/recent/rss?tab=&sort="><script>alert("XSS");</script><meta id="&p=1" /> のようになっていた。追記ここまで。 ttp://live.nicovideo.jp/search?sort="><script>alert("XSS");</script></meta></link>
同期XMLHttpRequestを使ってJavaScriptでwaitする。 wait.html <html> <head> <title>wait test</title> <script>window.onload = function () { var script = document.getElementsByTagName("script").item(0); var code = document.getElementsByTagName("code").item(0); code.appendChild(</head></html>…
javascripter's gist: 139376 — Gist に載せた。 function isCircular(obj) { function isCircularWithAncestors(obj, ancestors) { var k; for (k in obj) if (ancestors.indexOf(obj) >= 0 || obj[k] instanceof Object && isCircularWithAncestors(obj[k]…
クライアントサイドでjQueryを使う場合にサーバが返すJSONで気をつけないといけないこと - 文殊堂を見て興味が湧いたので調べた。まず、0123のように、0以外で先頭が0の数値はJSONとして不正である。 2.4. Numbers (略) Octal and hex forms are not allowed…
VALUE-DOMAINで取得したドメインをGmailで使えるようになるまで。 Google Appsに登録する。無料アカウントで良い。 VALUE-DOMAINのドメイン別操作の、ネームサーバー変更から、「VALUE-DOMAIN独自のネームサーバー(国内)」を選ぶ。 Google AppsのDashboardか…
var o = { valueOf: function () { return "valueOf"; }, toString: function () { return "toString"; } }; alert("" + o); }; のようなコードは、"valueOf"になる。toStringよりもvalueOfのほうが優先される。 サイ本を読み返したら、きちんと書いてあった…