IT戦記

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

2006-01-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 …

100万回応募した!

このイベント見にいきます ^^ http://www.osss.cs.tsukuba.ac.jp/kato/wiki/kato/index.php?OpenCollege4会場で見かけたら、是非声掛けてください ^^

JavaScript のことを Java と呼ぶのはけっこう一般的

どーでもいいことですが JavaScript のことを Java と言われると、なんか皮膚の一センチ奥のあたりが「むずむずかゆーく」なるんです。 でも エンジニア以外の人からすれば、一般的に Java というと JavaScript を想像する人が多いらしい。 ところで ジャワ…

関数を非同期化して汎用性を高める

関数を非同期化する関数を作ってみた。 Function.prototype.asynchronize = function() { var f = this; return function() { var resultcb = function() {}; var failcb = function(e) { throw e }; if (typeof arguments[arguments.length - 1] == 'functi…

JavaScript ではいかなる状況でもグローバルオブジェクトにアクセスできる。

こういう感じ var global = (function(){return this})(); だから JavaScript で SandBox を作るのは結構難しい

trac の css を書き換えるときに最初にやること

CSS

まず、すべてのページが対応する CSS を読み込むように設定 $ vim /path/to/project/templates/site_css.cs @import url(/site

社外勉強会の資料 (JavaScript 依存解決手法)

モバイルファクトリー様と弊社との勉強会がありました。 残念ながら身内に不幸があって、出席できなかったのですが。 id:ZIGOROuさんに代打で発表してもらいました。ありがとうございます。 資料を公開します http://usrb.in/svn/amachang/presentation/2006…

本物の G ウィルスが蔓延!? 「Gmail はウィルス」と Microsoft

海外記事から引用 It seems that Microsoft has started flagging Gmail as a virus in their virus scanning software Windows Live OneCare. Many people are reporting that every time they open Gmail, a warning is displayed telling the user they a…

JavaScript2.0(ECMAScript 4th Edition)の字句解析エンジンを作ったよ!

最近は JavaScript 2.0 周りの動きがすごい ActionScript 3.0 の VM が Mozilla に提供された ActionScript 3.0 は ECMAScript 4th Edition(=JavaScript 2.0) 準拠 提供された VM を Firefox 3 に乗せるために Tamarin (たまりん) プロジェクト発足 たまりん…

英単語をダブルクリックで英英辞典を検索する Bookmarklet と Greasemonkey

先に言っておきますが。Firefox 専用です。。。。 自分用に作ったんですが、なかなか便利なので公開します。 このブックマークレットを実行し、そのページ内の英単語をダブルクリックすると自動で英英辞典を検索してくれます。 javascript:document.addEvent…

文字列でもオブジェクトでもなんでも一発で数値に変換!

JavaScript では単体の + 演算で数値化が行われる これを利用して数値っぽいか判定する関数を作ってみた。 このオブジェクト数値っぽい? function isNumber(a) { return +a == a } こんな感じで使う isNumber(true); // true (true は 1 として扱うことがで…

JavaScript で Perl の do っぽいやつ

Perl を書いていて、ひさしぶりに JavaScript をやろうとすると 頭の中で do を求めてしまう。こんな感じで書きたいよぅって sub hoge { my ($self, $arg) = @_; $arg ||= do { # なんか処理 1; # 最後に評価した値が do の値になる }; # 関数の中身 } JavaS…

サイボウズラボからブログを書く瞬間

この机すごすぎる。。。