タグ

ブックマーク / amachang.hatenablog.com (41)

  • pthread でキューを書いてみる - IT戦記

    この記事は全然ダメだったようです。 こちらに新しく書き直しました。 http://d.hatena.ne.jp/amachang/20080617/1213694238 こんな感じになった #include <stdio.h> #include <stdlib.h> #include <memory.h> #include <pthread.h> static int* q; static int n; // 次に入れるインデックス static int l; // 次に出すインデックス static int s; static pthread_mutex_t m; static pthread_cond_t c; void initQ (size_t size) { n = 0; l = 0; s = size; // キューの領域確保 q = (int*)malloc(s * size

    pthread でキューを書いてみる - IT戦記
  • IE の Ajax (XMLHTTP) で、通信が行われたかキャッシュが使われたかを判定する方法 - IT戦記

    どうやら 以下の方法で判定することができるようです。 // リクエストオブジェクトを作る var req = new ActiveXObject('Microsoft.XMLHTTP'); // フラグの準備 var sended = false; // readystatechange イベントを待つ req.onreadystatechange = function() { if (req.readyState == 4) { // キャッシュに存在しない場合 if (sended) { alert('loaded'); } // キャッシュに存在する場合 else { alert('cached'); } } }; // 通信開始 req.open('GET', 'hoge'); req.send(); // フラグを立てる sended = true; 解説 IE では、キャッシュ

    IE の Ajax (XMLHTTP) で、通信が行われたかキャッシュが使われたかを判定する方法 - IT戦記
  • めも - IT戦記

    このメモについて id:amachang の私的な学習目的 IE6 の標準モードに関するバグ いろいろとポイント layout IE6 の視覚整形モデルの中で要素は、大きく分けて layout を持つ要素と、 layout を持たない要素に分けることができる。 layout を持つ要素とは、自分のサイズや位置に責任を持つ要素である。 layout を持つ要素は、四角形の領域を作る。 layout を持たない要素は、直近の layout を持つ要素のサイズおよび位置と、そこの間にあるすべての要素の margin, padding, border によってその開始点、折り返し点が決まる。 layout を持たない要素は、四角形の領域を作らない。上下左右の間隔を保持しているだけに過ぎない。 layout を持たない要素間の上下マージン(相殺されるマージン)は二つの要素間の共有のもので、ある要素特

    めも - IT戦記
  • ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記

    はじめに 今日、 jQuery の作者として有名な John Resig さんが Processing.js という JavaScript のライブラリを公開しました。 John Resig - Processing.js このライブラリを使うと、比較的簡単に以下のようなグラフィックスやアニメーションを書くことができるようになります。 というわけで、公開されたばかりのこのライブラリを簡単な使い方から詳しい使い方までとことん掘り下げてみたいと思います。 Processing.js 概要 まず、 Processing.js とは何かという話をします。 Processing.js とは、ブラウザで Processing というプログラミング言語を実行する JavaScript のライブラリです。 では、 Processing とはどのようなプログラミング言語なのでしょうか。 Processing

    ブラウザでお絵描きプログラミング! Processing.js 登場! - IT戦記
  • インターネットで手に入れられても良さそうなのに手に入らない情報まとめ - IT戦記

    以下の質問の反応をまとめてみます。 役に立ちそうな情報で、インターネットで手に入れられても良さそ… - 人力検索はてな 質問の回答、はてブ、トラックバック、ダイアリーのほうについたはてブ、コメント、などを集計しています。 まとめ ニュースのその後 (id:jane) 雑誌の記事検索 (id:natumi0128) 「SPA!」「読売ウイークリー」「AERA」は出来る → http://news.nifty.com/cs/entame/showbizddetail/fuji-320080417006/1.htm (id:muddydixon) タバコの製品情報(電話でのユーザ登録が必要なため困難。不可能ではない)→ https://www.jtad.jp/members/login/ (id:n-styles) 新聞折込チラシ (id:n-styles) スーパーの特売情報 (id:n-st

    インターネットで手に入れられても良さそうなのに手に入らない情報まとめ - IT戦記
  • CSS の「値」とは何か - IT戦記

    この前 以下のようなエントリを書きました CSS の名前の整理 - IT戦記 今回は CSS における この「value(値)」という言葉の意味、そして曖昧さについて書きたいと思います。 6 つの値 CSS において「値」は曖昧な言葉です。 なので、「値」という言葉を使って CSS の説明をするのは非常に効率が悪かったりします。 たとえば、「ここの値って、 hogehoge の意味の値?」「いやいや、ここの fugafuga の意味の値が piyopiyo なんだよ」というように、まったく無駄な会話が繰り広げられるわけです。 ですので、今日からはちゃんと CSS の「値」をちゃんと説明できるように、「値」に以下の 5 つの名前を付けましょう。 Declared values Cascaded values Specified values Computed values Used valu

    CSS の「値」とは何か - IT戦記
  • dtrace を使ったシステムコールのトレース - IT戦記

    dtrace とは Mac OS X Leopard から導入された、プログラムを書き換えることなくプログラムの情報を監視(トレース)できる便利ツールです。 使い方 たとえば、 vim という名前のプロセスからシステムコール stat, open, stat64 されたときに第一引数(ファイル名)を監視するには以下のようにします。 $ sudo dtrace -n "syscall::open:entry, syscall::stat:entry, syscall::stat64:entry / execname == \"vim\" / { trace(copyinstr(arg0)) } " 説明 まず、 -n というのは「probe」の「name」を指定して dtrace する!という意味です。 $ sudo dtrace [-n [[[ provider: ] module: ]

    dtrace を使ったシステムコールのトレース - IT戦記
  • Apple 謹製の JavaScript デバッガ「Drosera」が便利な件 - IT戦記

    Drosera とは 1000speakers 後のハッカソンで 山岸くん が「Drosera っていうアプリがある!」って発見して、教えてもらいました。 Drosera は WebKit 用の JavaScript デバッガで、 Windows XP でも Mac でも動くみたいです。 WebKit Build Archives | WebKit からダウンロードした WebKitアーカイブの中に同封されています。 で、実際に使ってみた感じ できること ステップ実行 コールスタックを見る レキシカルな変数をウォッチする などなどです。 まとめ Web インスペクタと併用すれば効果抜群ですね!

    Apple 謹製の JavaScript デバッガ「Drosera」が便利な件 - IT戦記
  • IE6 と IE7 と IE8 を同じマシンで共存させる方法 - IT戦記

    追記: 現在は IETester というソフトウェアを使うのがベストだと思います>< 結論から言うと Jeremy Smith's blog: Success! IE 6, 7, and 8 Running on Same Machine (Plus 5.5 and 5.01) に書いてある通りで IE8 をインストール http://tredosoft.com/IE7_standalone の IE7 Standalone をインストール http://tredosoft.com/Multiple_IE の Multiple IE をインストール の順で、共存させることができました。 IE8 を入れるのを戸惑っている人は 入れてみたらいかがでしょうか。 ちなみに 以下のサイトからダウンロードできる Standalone IE6 は IE8 と共存できませんでした。 browsers.ev

    IE6 と IE7 と IE8 を同じマシンで共存させる方法 - IT戦記
  • MacBook 買った後にやったことまとめ - IT戦記

    ここに少しずつ追記していきます。 購入 Apple Store 渋谷店で amachang「一番安い MacBook ください」 店員「はい、こちらの 129,800 円のでございますね」 amachang「メモリ 2GB に増設してください」 店員「はい、141,000円くらいになります」 amachang「VMWare Fusion もください」 店員「はい、いま Mac を買うとキャンペーンで安くなりますので、 8,900 円になります」 amachang「わー!やった!」 amachang「ゲスト OS として Windows XP を入れたいんですけど、売ってたりします?」 店員「売ってませんねー」 amachang「わかりましたー」 店員「では、お会計しますー」 : 店員「では、メモリお取り付けしますので、 40 分ほどお待ちください」 amachang「付けてくれるんですね」

    MacBook 買った後にやったことまとめ - IT戦記
  • Firebug に一行追記して右クリックで XPath をコピペ出来るようにする。 - IT戦記

    この XPath 使いたい>< って思うことよくありませんか? サイト見てて、あ、このボタンにグリモンであんな機能やこんな機能付けたい><!って思うこととかありますよね! そんなときに、いちいち要素の位置とか考えずに右クリックで XPath をコピペできたら嬉しいですよね>< ってことで 作ってみた イメージはこんな感じです。 これをクリックすると、右クリックされた要素の XPath がクリップボードにコピーされます。 この機能を Firebug に実装する手順 1. Firefox のプロファイルディレクトリに行く 環境 プロファイルディレクトリ WinVista C:\Users\[ユーザ名]\AppData\Roaming\Mozilla\Firefox\Profiles\[ランダムな文字].default\ WinXP C:\Documents and Settings\[ユーザ名

    Firebug に一行追記して右クリックで XPath をコピペ出来るようにする。 - IT戦記
  • JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記

    JavaScript-XPath とは JavaScript-XPath は、 DOM 3 XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3 XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数で XPath 使えるようになるよ!ってことです。 以下が公式サイトになります。 http://coderepos.org/share/wiki/JavaScript-XPath DOM 3 XPath ってなんなの!? めっちゃ簡単(で、ちょっとだけ適当)なDOM 3 XPath の説明をします><。 JavaScript でよく使う document.getElementById や document.getElementsByTagName って関数ありますよね? DOM 3 XPath

    JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記
  • for 文を setTimeout に変換する - IT戦記

    for 文で 100 項目とか 1000 項目とかあるテストケースを処理するとブラウザが固まる。 こんなダイアログが表示されます。 ということで for 文を setTimeout や setInterval に変換する事で定期的にブラウザに処理を戻すことができる。 // ここでは console.log のところでログを取ってますが // 通常は処理が入ります。 for (var i = 0; i < 3; i ++) { console.log('a' + i); } /* * 結果 * a0 * a1 * a2 */ これをまず while 文に変換 var i = 0; while (true) { if (!(i < 3)) break; console.log('a' + i); i ++; } /* * 結果 * a0 * a1 * a2 */ で、 setTimeout に

    for 文を setTimeout に変換する - IT戦記
  • IT戦記 - 一行で IE の JavaScript を高速化する方法

    以下の一行をすべての JavaScript の前に読み込む /*@cc_on _d=document;eval('var document=_d')@*/ この一行を読み込むことによって IE での document へのアクセスが 5 倍速くなります。 たとえば 以下のように、読み込む前と読み込んだ後を比較してみます。 // Before var date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date - date); // 643 /*@cc_on _d=document;eval('var document=_d')@*/ // After date = new Date; for (var i = 0; i < 100000; i++) document; alert(new Date -

    IT戦記 - 一行で IE の JavaScript を高速化する方法
  • Shibuya.JS の資料「The next genaration of browsers」公開 - IT戦記

    Shibuya.JS の資料を公開します。 発表は時間がなくて飛ばし飛ばしになってしまいましてすみませんでした>< リンク 発表の資料 http://amachang.art-code.org/shibuyajs24/ ちなみに、資料のブラウザアイコンで黄色で囲ってあるやつは新しく実装されたという意味です。 発表の動画 at Google Video http://video.google.com/videoplay?docid=-7565816545804603660

    Shibuya.JS の資料「The next genaration of browsers」公開 - IT戦記
  • IT戦記 - JavaScript の this について

    WEB+DB PRESS 編集の R たんから、僕の連載記事に読者様から質問が来ていると教えていただいたので、その内容を教えていただきました。 以下、内容を転載 「JavaScriptわくわく開発道」の記事に関して質問です。 今回の内容で特に興味を持ったのはthisキーワードの振る舞いでした。 thisキーワードの説明には、オブジェクト型の変数を別の変数にコピーしてから初期化すると、コピーした変数からメソッドを実行できなくなるという例が紹介されていました。 そこには「(1)の時点でobj0には{}が入っているため、hogeは未定義となってしまう」という説明があるのですが、誌面の都合上省略があるためか、thisキーワードを用いることで問題を回避できるという理由がなかなか理解できないでいます。 自分なりに考えてみたところ、内部的には以下のようなことが起きているのではないかと思いました。 (1)

    IT戦記 - JavaScript の this について
  • document.title の罠 - IT戦記

    このエントリは一部間違っています。 こちらで訂正いたしました。 http://d.hatena.ne.jp/amachang/20070523/1179928332 いや大したことじゃないんですけど かなりハマったのでメモしときます。 通常ページのタイトルは以下で取れる var title = document.title; alert(title); // タイトルを表示 しかし、コンテンツ内に <div id="title"></div> のように id が title のものがあると var title = document.title; alert(title); // [object HTMLDivElement] となってしまう。 これでかなりはまった まとめ 不特定のページから title を取るような場合は多少めんどくさいけど document.getElementsByT

    document.title の罠 - IT戦記
  • 5/19 日に行った勉強会の動画をニコニコ動画にアップしました。 - IT戦記

    このエントリーの動画です。 http://d.hatena.ne.jp/amachang/20070519/1179592450 最初にお詫び テープが切れてしまって、僕と fladdict さんと taka:nium さんの動画が録れてませんでした><ごめんなさい!ほんとにごめんなさい! お礼 動画は http://miniturbo.org/ の kz 君が編集&アップしてくれました。相当時間がかかったみたい><ありがとう!ほんとにありがとう!今度なんか奢ります。 動画一覧 haXe remoting でチャチャッとチャット - tocy.Net http://www.nicovideo.jp/watch/sm365442 ActionScriptでサーバーとごにょごにょ - ll_koba_ll http://www.nicovideo.jp/watch/sm365636 RIAと呼

    5/19 日に行った勉強会の動画をニコニコ動画にアップしました。 - IT戦記
  • getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記

    getComputedStyle とは!? ある要素にどんなスタイルが当たっているかを計算してくれる。便利な関数。 使いかたはめっちゃ簡単! var style = getComputedStyle(element, ''); alert(style.fontSize); // 14px alert(style.color); // rgb(0, 0, 0) ちなみに第二引数は疑似要素の style を取りたい場合に使います。通常は空文字列でいい。 でも、 getComputedStyle はこのままでは IE, Safari では動かない。 Safari では window(グローバル領域) に getComputedStyle は定義されてなくて、 document.defaultView だけに getComputedStyle が定義されている。 ちなみに、 Firefox, Op

    getComputedStyle について調べてたら深みにハマったのでメモ - IT戦記
  • JavaScript で簡単にスタックトレースを取るテクニック

    Firebug を使うと console.trace(); これだけでスタックトレースを取ることが出来ます。 でも、 XUL の開発とか、人のブラウザで Firebug が入ってない時とかは出来ないので、 そういう時は、 alert(Error().stack); これだけで出来ます。まあ Firefox only ですが。

    JavaScript で簡単にスタックトレースを取るテクニック