IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

2006-12-01から1ヶ月間の記事一覧

createElement と backgroundColor で IE をクラッシュさせる

またしても IE のバグです document.createElement('html').style.backgroundColor = 'red'; たったこれだけで IE が落ちる。 IE6、 IE7 ともに落ちました。 検証用 http://sample.ecmascript.jp/iecrash.html IE でクリックするとブラウザが落ちます。

ActionScript の Object.prototype を拡張する実用的な例

このエントリの続きです。 d:id:amachang:20061220:1166630932 ActionScript では Object.prototype を書き換えていいので・・・、 実際に便利な関数を作ってみた _def 関数 この関数は、 DontEnum な(for in で繰り返されない)プロバティを作る Object.prot…

ActionScript では安全に Object 汚染をすることができる

Object 汚染とは 簡単に言うと Object.prototype を拡張したときに、すべての for in に影響を与えてしまって、いろんなことが困る。という問題である。 DontEnum という内部属性をスクリプトから与える手段がないために発生する。 Object.prototype.hoge = …

ブログバトラー

知り合いが作ったんですが ブログバトラーというブログパーツが結構おもしろいです。 http://blogbattler.com/ どうやら、キーワードを抽出してコマンドを作るみたいで、 僕だと、「コンパイル」などの魔法が使えます。 ブログバトラーを使っている人がいま…

Winny 有罪ですかそうですか

有罪が出たそうだ http://japan.cnet.com/news/biz/story/0,2000056020,20338740,00.htm うーん。難しいことはよく分からない。 とにかく 自由にプログラムを書けなくなるのは、(*>□<) 僕みたいなプログラマから、プログラムを書く自由を奪ったらただのニ…

Haskell の do は何を糖衣しているのか

注釈 まだまだ、Haskell 歴 5 日なので、多少間違っててても許してください。 do は これを main = getChar >>= (\a -> ( getChar >>= (\b -> putChar b)) >> ( putChar a)) これにしている main = do a <- getChar b <- getChar putChar b putChar a do の…

フィードで全文配信するように設定してみた

そんな設定あったのね><!

モナド

ほんのちょっとけ分かったかも 環境という引数を省略する形なのかな? 環境が変われば値も変わる。 環境という値を引数として与えているならば、毎回値が変わるのも参照透過と言い切れる。 本来はこういうもの? f :: a -> Env -> Envでも、これだと Env だ…

モナドが分からない

これがモナド main = putStrLn $ unlines $ do v1 <- [1, 2, 3] v2 <- f v1 v3 <- g v2 f v3 f :: Integer -> [String] f x = [show x, show x] g :: String -> [Integer] g x = [read x, read x] よくわからん。 なんか、もうすこしで分かりそうなんだが。…

コンパイル時の注意

コンパイルしようとすると以下のようなエラーが出る場合がある ghc ... <built-in>:0:1: lexical error そういうときはこうしてやればおk LANG=C ghc ...</built-in>

遅延パターンがわからない

以下の例はダメ main = putStrLn $ unlines $ map show $ f f = g 0 f g n (x:xs) = n : g (x + 1) xs (x:xs) → ~(x:xs) なら OK main = putStrLn $ unlines $ map show $ f f = g 0 f g n ~(x:xs) = n : g (x + 1) xs その心は 一番最初に (x:xs) のパター…

いろいろな数列

再帰が難しいので練習として色んな数列を作ってみた main = do putStrLn $ j $ take 8 $ s1 0 1 putStrLn $ j $ take 8 $ s2 1 2 putStrLn $ j $ take 8 $ s3 putStrLn $ j $ take 8 $ s4 0 (+1) putStrLn $ j $ take 8 $ s4 1 (*2) putStrLn $ j $ take 8 $…

Haskell メモ

このエントリはきっと嘘だらけだと思います Haskell を使ってみて自分が感じたイメージを文章にしてみただけです。 Haskell の遅延評価について自分の脳内を整理 Haskell は変数がない。 変数っぽくみえるシンボルは全部(?)関数だ。 だから、副作用(IOとか)…

Haskell 自習

遅延評価は分かったけど 具体的に使ってみないことには「便利!!」と感動できないので。 毎日ちょっとだけ暇見つけて Haskell を勉強してみよう はじめてのプログラミング 僕は、初めてプログラムを書くとき、閏年を考慮した月の日数計算をするプログラムを…

作業環境

たたみたたみ 会社の畳で仕事してます

JavaScript でフィボナッチ数列を高速に求める

低速版 function fib(i) { if(i == 0 || i == 1) return i; return fib(i-1) + fib(i-2); } 高速版 function fib(i) { return (function(i) { if(i == 0) return [0, 1]; return (function(a){ return [a[1], a[1] + a[0]] })(arguments.callee(i-1)); })(i)…

JavaScript で遅延評価

ぶっちゃけ 僕は遅延評価のことたぶんあんまり理解してないと思います。 でも、とりあえずこんなの作ってみた function l(a) { return typeof a == 'function' ? a() : a } // lazy の l こうやって使う function add(i, j) { return l(i) + l(j) } var coun…

とてもシンプルに自分自身が属する script 要素を取得

グローバル領域に以下の一行を書く <script> var currentScript = (function (e) { if(e.nodeName.toLowerCase() == 'script') return e; return arguments.callee(e.lastChild) })(document); alert(currentScript); </script>こうすることで、currentScript はこの script …