タグ

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

  • サイボウズで学んだこと - IT戦記

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

    サイボウズで学んだこと - IT戦記
  • 動的スクリプトローディング(さんざん既出だと思うけど - IT戦記

    なんか、既出な予感もするんですけど 私製版を作ったので コード var load = function(src, check, next) { check = new Function('return !!(' + check + ')'); if (!check()) { var script = document.createElement('script') script.src = src; document.body.appendChild(script); setTimeout(function() { if (!check()) setTimeout(arguments.callee, 100); else next(); }, 100); } else next(); }; 考え方は、 このエントリ と同じです。 使い方 以下の場合 // 処理 1 // ← ここで jQu

    動的スクリプトローディング(さんざん既出だと思うけど - IT戦記
  • libxml2 内のメモリの解放 - IT戦記

    ちょっとメモ 今日も valgrind 使ってます libxml2 を使って以下のような XML のパース処理を書く #include <iostream> #include <sstream> #include <boost/shared_ptr.hpp> #include <libxml/xmlreader.h> static int read(void* in, char* buf, int len) { return static_cast<std::istream*>(in)->readsome(buf, len); } int main() { std::istringstream in("<a><b/>hoge<c/></a>"); boost::shared_ptr<xmlTextReader> reader(xmlReaderForIO(read, NULL, &in,

    libxml2 内のメモリの解放 - IT戦記
    Aoba
    Aoba 2009/07/24
  • perl の Win32::GuiTest モジュールを使ってみる。 - IT戦記

    はじめに 久々の perl。突っ込まれるのを期待しつつやってみます。 準備 Strawberry Perl for Windows をインストール PATH を通して、コマンドプロンプトを起動して、 > cpan -i Win32::GuiTestでおk。 何から始めよう IE8 をどこまで操作できるかやってみる。 IE8 を起動 use strict; use warnings; use utf8; system('explorer http://www.google.co.jp/'); おおお。 IE8 のウィンドウハンドルを取得 use strict; use warnings; use utf8; use Data::Dumper; use Win32::GuiTest qw(:ALL); # これをやっておかないと中で shift-jis 前提で扱われるみたい UnicodeSe

    perl の Win32::GuiTest モジュールを使ってみる。 - IT戦記
    Aoba
    Aoba 2008/12/09
  • ブラウザで X86 のマシン語を動かす! Google 謹製 Native Client をさっそく試してみる - IT戦記

    はじめに Google から、非常に面白そうなソフトウェアがリリースされました! その名も Native Client なんとブラウザ上で X86 のバイナリを動かしてしまうそうです。 これはすごい! さっそく試してみたいと思います。その過程を逐次更新していきます。 自分が試したときの環境 自分が試す環境は、以下の通りです。 Mac OS X Xcode の gcc (version 4.0.1 (Apple Inc. build 5465)) python 2.5.1 準備 では、さっそく準備をしましょう。 http://nativeclient.googlecode.com/svn/trunk/nacl/googleclient/native_client/documentation/getting_started.html を参考にやってみます。 環境一式をダウンロード まずは、以下

    ブラウザで X86 のマシン語を動かす! Google 謹製 Native Client をさっそく試してみる - IT戦記
  • JavaScript 内で無圧縮 ZIP を作って Data URI を生成するライブラリを作りました - IT戦記

    ちょっと思うところあって JavaScript 内で、複数のファイル情報を作って Zip で固めて、 Data URI を生成するライブラリを作ってみました。 ソースは以下の zip.js です。 http://svn.coderepos.org/share/lang/javascript/Zip/ 使うには 以下の base64.js が必要です。 http://svn.coderepos.org/share/lang/javascript/Base64/trunk/ この base64.js は弾さんが作ったものです。 今回 Zip で使うように、ちょっとチューニングさせていただきました。 こんなことができます // zip オブジェクトを作る var zip = new Zip; // 文字列をファイルとして追加する zip.addString('Hello, world!!', '

    JavaScript 内で無圧縮 ZIP を作って Data URI を生成するライブラリを作りました - IT戦記
    Aoba
    Aoba 2008/12/01
  • はてなブックマークのコンテンツの 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戦記
    Aoba
    Aoba 2008/10/19
  • Pathtraq API を使って、はてブにアクセスチャートを出す Greasemonkey を作りました! - IT戦記

    はてブのエントリーページに 以下のようなアクセスチャートを出す Greasemonkey を作りました! このアクセスチャートは、どのくらいの人がそのページに訪れたかという情報を表しています。 「このページはいつ頃から注目を集めだしたか」などの情報が一目で分かるようになります。 期間は、「24時間」から「3ヶ月」までその場で切り替えることができます。 インストールする! http://userscripts.org/scripts/source/32521.user.js ブックマークレットを使ってみる! はてブのエントリーページで以下のブックマークレットを実行してみましょう! javascript:(function(s){s.src='http://userscripts.org/scripts/source/32521.user.js';document.body.appendChi

    Pathtraq API を使って、はてブにアクセスチャートを出す Greasemonkey を作りました! - IT戦記
  • XPath は jQuery や Prototype.js と競合する技術ではなく、むしろ共存する技術です - IT戦記

    昨日のエントリのブクマやコメントで jQuery からの移行がめんどう 時代は jQuery のようなコメントがありました。 これらのコメントから おそらく、「XPath が jQuery や YUI、Prototype.js、Dojo、MochiKit などの汎用 JS ライブラリと競合する」と思ってる方が多いのかなと思いました。 結論 XPath は汎用 JS ライブラリとは競合する技術ではなく、共存する技術だと僕は考えています。 理由 汎用的な JS のライブラリには、大きく以下のような機能があります。 DOM ツリー上の要素やノードを取得する DOM に新しい要素やノード、属性、プロパティ、イベントなどを追加する その他、クロスブラウザとか それに対して XPath が提供するのは DOM ツリー上の要素やノードを取得する というシンプルな機能だけです。 つまり、 XPath は汎

    XPath は jQuery や Prototype.js と競合する技術ではなく、むしろ共存する技術です - IT戦記
    Aoba
    Aoba 2007/11/13
    W3CのXPathと、jQueryのようなライブラリを並列に考えてる人が多いことを初めて知った。XPathの認知度ってものすごく低いのか。
  • 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 を高速化する方法
  • 「勝手に添削 - JavaScript 入門」を勝手に添削 - IT戦記

    このエントリーは以下のエントリーへの解答です 404 Blog Not Found:javascript - 勝手に添削 - JavaScript入門 はじめに 僕はあまりブログを一生懸命書くのは嫌いです。で、いつも適当に言葉は少なめにソースだけで解説しているが。今回は、それだけでは伝わらないところまで突っ込まれてしまったので、僕が伝えたかった意図をこと細かく説明していこうと思います。 文章が苦手なので、変な言い回しで読み辛かったりすると思いますがよろしくお願いします。 一応、弾さんには断っておきますが、別に弾さんに噛みついている訳ではないです。ただ、弾さんのような有名人に突っ込まれたら、僕の講義を聞いてくれたエンジニアが嘘を教えられたと不安になってしまうのではないかと思ったのです。僕の講義を聞きにくれた人には、虚像でもいいから 100 % の自信と勇気を付けて欲しい(プログラムを書く上で

    「勝手に添削 - JavaScript 入門」を勝手に添削 - IT戦記
    Aoba
    Aoba 2007/04/16
    いいなぁ。
  • IT戦記 - 僕も半透明 png を使うためのライブラリ作った!

    いろいろと古い IE で半透明 png を使うための JS が紹介されています http://web.kankodo.net/2007/02/01-233315.html http://labs.unoh.net/2007/02/ie6_png_fix.html http://phpspot.org/blog/archives/2007/02/iepngjavascript.html で、自分も使おうと思ったのですが。 ライブラリの依存とか、 window の load イベントの時に処理されるのがちょっとだけ嫌だったので、自分用のを作りました。 意外と便利だったので公開します デモ(IE5.5 or IE 6 で見てください) http://usrb.in/amachang/static/AlphaLoader/demo.html 使いかた 半透明にしたい img 要素のあとに http

    IT戦記 - 僕も半透明 png を使うためのライブラリ作った!
    Aoba
    Aoba 2007/02/06
    半透明PNG
  • JavaScript の配列と連想配列の違い - IT戦記

    id:cheesepie:20070131:1170172709 最近は、こういう風に JavaScript を勉強する人が増えていてとても嬉しいです ^^ id:cheesepie さん頑張ってください! で、ちょっと配列と連想配列の使いかたが違うようなので、エントリーを書こうと思いました。おせっかいだったらすみません>< ! やっぱり、このへんが JavaScript の難しいところのひとつなのだろうか。 ということで、 JavaScript の配列と連想配列の違い いってみよおー 連想配列とは JavaScript では連想配列は一番シンプルなオブジェクトのことである。つまり、すべてのオブジェクトは連想配列である。 以下のすべての連想配列はまったく同じものである。 // 1 var obj = { hoge: 'hoge' }; // 2 var obj = { 'hoge': 'h

    JavaScript の配列と連想配列の違い - IT戦記
    Aoba
    Aoba 2007/02/02
    ちゃんと覚えましょう。
  • 関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 - IT戦記

    最近、プロトタイプ的継承の話しが盛り上がっています。 http://blog.livedoor.jp/dankogai/archives/50662064.html http://labs.cybozu.co.jp/blog/kazuho/archives/2006/10/javascript_string.php http://blog.livedoor.jp/dankogai/archives/50662606.html 最終形がやたら複雑になっています でも、実際はあそこまで複雑に書かなくても、できると思います ^^; そう思う理由 P 関数は object 関数の中でローカルのものである。コンストラクタとして使える必要はない。なので、 Atomic な場合でも P は function(){} でいい。 method 関数では P.prototype のプロパティに関数が代入されて

    関数一発でプロトタイプチェーンに繋げて、オブジェクトをクローンする。 - IT戦記
  • それすぐ実行!JavaScript! - IT戦記

    思った JavaScript はすぐに実行してみましょう! ブラウザの URL 入力欄に javascript:(function() { /*実行したいコードを書く*/ })()FireBug を使ってる人は、コンソール開いて実行したいコードを書く。 たとえばこんなことができます。 これらの例は僕が日頃使っているものです。 グローバルで使える関数を列挙する(Firefox Only) FireBug用 for(var n in window) if(typeof window[n]=='function')console.log(n); URL用 javascript:(function(){var b='';for(var n in window)if(typeof window[n]=='function')b+=n+"\n";alert(b)})() Object.prototyp

    それすぐ実行!JavaScript! - IT戦記
  • 勉強が出来ない奴はプログラマになれ!(バカだからできる勉強法) - IT戦記

    どのくらいの人がこのブログを読んでいるか分かりませんが、 もし、勉強が出来ない人が周りにいたら、このブログを紹介してあげてください。 ふと 勉強が出来ない人は、プログラマになったほうがいいと思った。 僕はというと 自分でも驚くくらい勉強というものが出来ない。ものごとを知らない。 はっきり言ってバカなのである。 たとえば、 大学行ってない。 株式公開と上場の違いを知らなくて、一同ぽかーん。 つい最近まで、サイバーエージェントを知らなかった。(技術者には必要ない) 英語が一切読めない。 宮崎料理「冷や汁」を「冷や飯」だと思ってた。 基的に会議とかでよく出る英語、「さじぇっしょん」とか、「あさいん」とか、「ぶらんでぃんぐ」とか、「うぇぶつーぽいんとおー」とか、よく分からん。 人力(じんりき)検索を入力(にゅうりょく)検索だと思っていた たぶん、まだまだあるけど、自分がバカだから気がつかないんだ

    勉強が出来ない奴はプログラマになれ!(バカだからできる勉強法) - IT戦記
    Aoba
    Aoba 2006/09/06
    プログラミング勉強法
  • IT戦記 - [javascript] JavaScript 1.7 の yield が凄すぎる件について

    Firefox 2.0 beta 1 が出ましたね^^ さっそく、新機能のひとつ、JavaScript 1.7 の yield を使ってみました。 まず yield の動作を試してみた。 var i = 1; var g = (function() {while(1) {yield i; i++}})(); alert(i); // 1 g.next(i); g.next(i); alert(i); // 2これで分かったこと。 なんと、 yield は関数を途中で終了させている。。。! 実は。 いままで、何度も関数を途中で終了できればなーと思っていた。 JavaScript 以外のほとんどの言語でそれが可能で、それが便利だからである。 それとはなにか、それとはスレッドである。 スレッドは CPU レベルで細かーく処理を止めて、いろんな処理の流れを同時に実行させているようなものだ。 yie

    IT戦記 - [javascript] JavaScript 1.7 の yield が凄すぎる件について
    Aoba
    Aoba 2006/08/08
    yield!!!
  • 次期、散財.com の JS 管理は dojo toolkit - IT戦記

    散財.com 開発ログ(自分用メモ) 最近の JavaScript 開発の悩み 無駄な処理をはさむと、処理が遅くなる。orz 細かくファイルを分けて、必要なものだけインクルードするようにする。orz ファイル数が非常に多くなる。orz ファイルの依存関係を脳内解決。orz ファイル数が多いので、リロード時の描画が遅い。orz 依存関係が脳内フラッシュして、カオスへ突入。orz バグが出た部分を直すと他のページへの影響が不明。orz 例えば、はてなの「この」編集ページ。 <script type="text/javascript" src="/js/prototype-1.4.0.js"></script> <script type="text/javascript" src="/js/cookie.js"></script> <script type="text/javascript" s

    次期、散財.com の JS 管理は dojo toolkit - IT戦記
  • Catalyst勉強会資料 - IT戦記

    けっこう前ですが、会社の勉強会で Catalyst についてやりました もったいないので、共有しときます。 http://sample.ecmascript.jp/Catalyst.ppt そんな矢先ですが、 Catalyst が 5.7 になったようですね。ちょっと調査しないと

    Catalyst勉強会資料 - IT戦記