タグ

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

  • WebKit サーバーというものを作ってみた - IT戦記

    みなさん お久しぶりですヽ(´ー`)ノ夏休みの宿題終わりました? 毎日が夏休みの最終日みたいな生活してるあまちゃんです! さてさて 今日は WebKit サーバーというものを作ってみたので、紹介してみます。 WebKit って何? WebKit っていうのは Chrome や Safari の中に入ってるブラウザのエンジンのことです! 実はブラウザっていうのは、エンジン部分と見た目の部分(タブとかボタンとかね)に別れていて、意外と違うブラウザでもエンジン部分は同じものを使ってるってことも多いんですよ(*´ー`) ブラウザのサーバーってどういうこと? 要は、サーバーサイドでブラウザを起動して JavaScript を実行したり、 JavaScript が実行されないと読めないページから値を持ってくるのに使ったりしようという魂胆です。 今まではそういうのなかったの? 実は、今までは JavaS

    WebKit サーバーというものを作ってみた - IT戦記
  • フェイスブック、ミクシィ、グリーで使われている OGP (Open Graph Protocol) とは何か - IT戦記

    みなさん、こんにちは お元気ですか?僕は元気です。 さて 最近よく、「いいね!」ボタンや「ミクシィチェック」ボタンによって、ウェブページを紹介し合う文化が少しずつ定着してきたなーと思います。 そんな中で、今後重要になってくるんじゃないかと思われる OGP (Open Graph Protocol)と言われる仕様があります。今日はそのことについて書いてみたいと思います。 OGP? おーじーぴー??とはなんでしょうか。 OGP とは 簡単に言うと「このウェブページは何のことを書いているか」という情報を、プログラムから読める形で HTML に付加する記述方法のことです。 まあ、普通のウェブページは人間が読めばだいたい何のことが書いてあるか分かりますよね。 ですが、プログラムは人間ほど頭が良くないので、そのウェブページ内の文章だけではそのページが何のことについて書かれているページなのか正確に識別す

    フェイスブック、ミクシィ、グリーで使われている OGP (Open Graph Protocol) とは何か - IT戦記
  • フェイスブックが面白い - IT戦記

    フェイスブック楽しい! はじめに みなさんこんにちは!フェイスブックしてますか? ゆうすけべーが書いているように、最近当にフェイスブックがおもしろいなーと感じます。 ゆーすけべー日記 というわけで、一人で使っていたときから人が増えてきたときまでの雰囲気を思い出しつつ、僕が感じているフェイスブックのおもしろさ、特徴、楽しみ方などを紹介していけたらと思います。 ちょっと長くなっちゃいますけど、よろしくお願いします! フェイスブックの一番の面白さは「速さ」 僕が感じているフェイスブックの良さは、一言で言ってしまえば「コミュニケーションの速さ」なんだと思います。 速さと言っても、システム的な速さだけではなくって「コミュニケーション」の速さです。 フェイスブックの「コミュニケーションの速さ」は主に以下の3点にあると思っています。 「左下」の通知が素早い 書き込むより早く「いいね!」が伝わる 「一緒

    フェイスブックが面白い - IT戦記
  • サイボウズで学んだこと - IT戦記

    はじめに 2010 年 9 月 15 日を持ちまして、サイボウズ・ラボを退職いたしたました。 報告も兼ねて、久しぶりにブログを書いてみたいと思います。 (写真はゆうすけべーさんです) この会社に入って、たくさんの学びと思い出がありました。 その一つ一つをまとめていければ、素晴らしい記事になるのかもしれませんが、僕は文章が苦手です。 ですので、うまく退職のエントリを書き上げることができません。 言葉にできない。そんな感じです。 なので、このエントリはサイボウズ・ラボやサイボウズ社の仲間たちへのありがとうの気持ちをこめて、自分らしく最後まで JavaScript のことを書きたいと思います。 サイボウズでの最後の仕事 僕にとって、サイボウズでの最後の仕事は「JavaScript で新しいユーザーインタフェースを作ること」でした。 そして、その中で始めて複数人による大規模な JavaScrip

    サイボウズで学んだこと - IT戦記
  • Firefox に outerHTML を実装する - IT戦記

    outerHTML について outerHTML とは Mozilla 系のブラウザ以外のすべてのブラウザで使える要素の HTML が文字列として取得できるプロパティです。 alert(document.body.outerHTML); // => body の HTML がすべて見える(例:<body><h1>It works!</h1></body>) というわけで 以下のコードを書いてみました。 if (!('outerHTML' in document.createElement('div'))) { HTMLElement.prototype.__defineGetter__('outerHTML', function() { return this.ownerDocument.createElement('div').appendChild(this.cloneNode(tru

    Firefox に outerHTML を実装する - IT戦記
  • はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記

    はじめに 「新はてなブックマーク」になったということで、とっても便利になったのですが、ブックマーク一覧ページ*1が若干 JavaScript に時間が掛かっているみたいです。 というわけで 調査してみたいと思います。調査して、改善できそうなところは後で纏めて「はてなアイデア」にでも登録しようと思います。 この日記は調査しながら、過程を書いていくつもりです。 準備 まずは、人のサイトの JavaScript を書き換えて試してみるための環境を作ります。 作業用ディレクトリを作る とりあえず、ホームに HatenaJS というディレクトリを作ります。 $ mkdir HatenaJS $ cd HatenaJS CocProxy をダウンロードしてくる 以下から CocProxy というツールをダウンロードしてきます。 http://coderepos.org/share/wiki/CocPr

    はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記
  • サーバー起動用に JavaScript が 1 秒以上実行されなくて alert しないブラウザを作る - IT戦記

    はじめに サムネイルサーバーのようなサービスを作るときには、ウェブサーバー上にブラウザを乗せる必要があります。 問題 ただ、そういった用途でブラウザを使う場合。 JavaScript が無限ループに落ち入らないように配慮する必要があります。 ほとんどの場合は、 JavaScript 自体をオフにすることが多いのですが JavaScript を実行したいような場合もあるでしょう。 解決方法 今回は、 WebKit でその解決方法を紹介します。 1. まず WebKit のソースコードを取得する svn co http://svn.webkit.org/repository/webkit/trunk WebKit 2. 次に、タイマーの時間を短くする WebCore/bindings/js/JSDOMWindowBase.cpp を編集 JSDOMWindowBase::JSDOMWindow

    サーバー起動用に JavaScript が 1 秒以上実行されなくて alert しないブラウザを作る - IT戦記
  • 次の JavaScript の仕様はこうなる! ECMAScript 3.0 から 3.1 への変更点まとめ - IT戦記

    はじめに JavaScript の標準仕様である ECMAScript 3rd Edition (ECMAScript 3.0) が 9 年ぶりにバージョンアップしようとしています。 実は、これまでも様々なバージョンアップの案が上がっては消え、また上がっては消えていました。 しかし、今回のバージョンアップには今までと違う点が一つだけあります。 それは、現時点での主要な ECMAScript インタプリタ(JavaScript の実行エンジン)を作っている全団体(以下を参照)がこの仕様に同意したことです。 Mozilla (Firefox) Apple (Safari) Microsoft (Internet Explorer) Opera (Opera) Adobe (Flash) Yahoo (Yahoo Widget) Google この同意は JavaScript のこれからを大きく

    次の JavaScript の仕様はこうなる! ECMAScript 3.0 から 3.1 への変更点まとめ - 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戦記
  • XPathGraph がすごい件と、XPath で出来ることのヒント - IT戦記

    XPathGraph とは http://xpath.kayac.com/ URL と XPath を指定すると一日に一回その URL をスクレイピングして XPath 式が示す値をグラフにしてくれる!という画期的なサービスです。 例えば、 URL と XPath を指定するだけで以下のようなグラフが作れてしまいます。 当に楽しいことが出来そうでワクワクしてます! でも まだ XPath を登録している人が意外と少ないので、「ひょっとして、このサービスの使いどころが分からないのかなあ。」と思いました。 というわけで XPath で出来ることのヒントを少し紹介したいと思います。 足し算、引き算、かけ算、割り算 XPath では普通に数値の演算ができます。 たとえば、 //div[@class=counter] で取得してきた div 要素が 1000 という数値を持っていたとすると 2 *

    XPathGraph がすごい件と、XPath で出来ることのヒント - IT戦記
  • わーい \(^o^)/ Scheme もどきを JS で書いたよー! - IT戦記

    昨日の夜のこと (1000 人スピーカープロジェクトの打ち上げが終わって、解散後、数名でサイボウズラボに寄り道) id:amachang: あー今日は楽しかったねー(レゴみたいなおもちゃで遊びながら) id:nishiohirokazu: うんー楽しかったねー(レゴみたいなおもちゃで遊びながら) id:amachang: yuum3 や yad-EL さんが言ってたみたいに SICP 読んでみたいなー id:yukoba: …黙々… id:amachang: ところで yukoba さん、さっきから何やってんの id:yukoba: え? Scheme 作ってる(超笑顔) …レゴみたいなおもちゃ ポロリ id:amachang & id:nishiohirokazu: えー!抜け駆けずるいー!!!>< id:amachang: おれも作る><! id:nishiohirokazu: えっえ

    わーい \(^o^)/ Scheme もどきを JS で書いたよー! - IT戦記
  • JavaScript でこんなパッケージ管理はどうか? - IT戦記

    まず、以下のような package 関数を作る。 function package(name) { package.__hash__ = package.__hash__ || {}; if (!package.__hash__.hasOwnProperty(name)) { package.__hash__[name] = { def: function(name, value) { return this[name] = value; } } } return package.__hash__[name] } で、こんな感じで使う // ここは hoge の名前空間 with (package('hoge')) { def('var0', 1); // 変数は def 関数で定義 def('var2', 2); alert(var0); // 1 alert(var2); // 2 }

    JavaScript でこんなパッケージ管理はどうか? - IT戦記
  • Firefox の拡張機能をふとした時に手元でチョコチョコいじれるようにしとくと楽しい - IT戦記

    この記事で Firebug ハッキング Tips を纏めたい Firebug に一行追記して右クリックで XPath をコピペ出来るようにする。 - IT戦記 とか言ってたけどその前に、 僕は Firebug だけじゃなくて、 だいたいの拡張機能で、簡単に「チョコチョコいじれる化」というのをしてるのでそれを書いてみます。 チョコチョコいじれる化とは jar ファイルを解凍しておいてすぐ書き換えられるようにしとくこと。 「チョコチョコいじれる化」しとくと気付いたときにちょっと JS や XML や CSS を追加するだけで、いろいろ改造できて楽しい。 「でも、 Firefox が壊れる可能性があるじゃん><」って? チッチッチ、ナンセンスだよメーン そんなの拡張機能のディレクトリを削除しちゃえば元通りさ Don't be scared! iKnow!で英語。ちょっとの努力で、大きな成果を。

    Firefox の拡張機能をふとした時に手元でチョコチョコいじれるようにしとくと楽しい - 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戦記
    mattarin
    mattarin 2007/11/26
    なんだか便利そうだ
  • 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戦記
  • HTML 用の XPath 機能テストを書いた - IT戦記

    こんな感じ ここでテストできます(DOM 3 XPath 対応ブラウザでしか動きません) XPath Functional Test テストしてみると Safari 3.0.3 Public Beta はバグが多い Opera と Firefox はかなり優秀 要素名は大文字? あと、特に気になった点として、 name 関数の復帰値が Firefox では大文字となって Opera, Safari は小文字となる。 なので、クロスブラウザ的には以下のように or で繋いであげないといけない。めんどくさいなあ // <p>hoge</p> var result = document.evaluate('//*[name() = "P" or name() = "p"]', document, null, 7, null);

    HTML 用の XPath 機能テストを書いた - IT戦記
  • 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 について
    mattarin
    mattarin 2007/09/17
  • Windows 版 Safari で JavaScript Console を表示する方法 - IT戦記

    ちなみに Mac OSX 版では ~/Library/Preferences/com.apple.Safari.plist に IncludeDebugMenu を 1 として追加すれば Debug メニューが表示されます。 $ defaults write com.apple.Safari IncludeDebugMenu 1 なので Windows 版でも同じだろうと思って C:\Program Files\Safari\Safari.resources\Defaults.plistをエディタで開いてみると XML だったので <key>IncludeDebugMenu</key><true/> や <key>IncludeDebugMenu</key><integer>1</integer> や <key>IncludeDebugMenu</key><string>1</string

    Windows 版 Safari で JavaScript Console を表示する方法 - IT戦記
  • JavaScript の関数を「引数そのまま返す化」

    関数を「引数そのまま返す化」 // sonomama の s Function.prototype.s = function(arg) this(arg); // 来の処理 return arg; // そのまま返す } 例1 hoge.method(); // ← この hoge を調べたい alertだけ alert(hoge); hoge.method(); 改行めんどいー。 console.logだけ console.log(hoge); hoge.method(); 改行めんどいー。 alert + そのまま返す化 alert.s(hoge).method(); // 1 ステートのまま console.log + そのまま返す化 console.log.s(hoge).method(); // 1 ステートのまま 例2 function hoge() { // ...略...

    JavaScript の関数を「引数そのまま返す化」
    mattarin
    mattarin 2007/05/18
    便利