Software Design巻末リファレンスの正しい読み方

現在発売中の技術評論社 Software Design 2007年1月号には、
id:hazy-moonさんが書かれたPlaggerプラグイン活用カタログが載っています。
これは、MyWiki.jp – plaggerドキュメント和訳(perldocの日本語訳)を
ベースに応用例を含めてわかりやすくまとめられたもので、Plagger初学者の手引きとしてもよくできていると思います。

ということで、2005年から続いているSD巻末リファレンスの正しい読み方を実践してみました。

■ (1) 用意するもの

  1. 技術評論社 Software Design
  2. カッター(ナイフ)
  3. 定規(30cm以上)
  4. A4クリアファイル(下敷き)
  5. 2穴パンチ(JIS S 6041
  6. ひも もしくは フラットファイル(バインダー)
用意するもの

■ (2) カッターで切り取る

傷がついてもよいA4クリアファイルなどを下敷きにして、カッターで巻末リファレンスを切り取ります。

カッターで切り取る

■ (3) パンチで穴を開ける

2穴パンチで穴を開けます。小型パンチの場合は一度に穴を開けられる紙の厚さに上限がありますので、複数回に分けて穴を開けます。
このときカッターで切り取った部分の余白がなくなっていますので、少し穴を開ける位置をずらすのがポイントです。

パンチで穴を開ける

■ (4) フラットファイルに閉じる

クリスマスプレゼントの手編みマフラーの余ったひもで結ぶか、それを持っていない人はフラットファイル(バインダー)に閉じるかすれば、完成です。

フラットファイルに閉じる

どうぞご利用ください。

Web2.0時代のAjax Binary Hacks

遅くなりましたが、Binary 2.0 カンファレンス2006 で発表した資料を公開しました。

※公開用にいくつか手を加えてあります

前フリが長いとのツッコミがありましたので、今回の発表内容を少し要約してみたいと思います。

1. GIF Format Hacks (Server side)

まずは、任意のpixelサイズ(幅・高さ)を持った画像ファイルを固定長の35byteで出力する方法

#!/usr/bin/perl
use strict;
use warnings;

sub create_gif {
  my $size = pack "S2", @_;
  return "GIF89a$size\xf0\x00\x00\x00\x00\x00\xff\xff\xff,"
  . "\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02L\x01\x00;";
}

print "Content-Length: 35\n";
print "Content-Type: image/gif\n\n";
binmode(*STDOUT);
print create_gif(65535, 65535);

1;

この画像フォーマットを利用すると、任意のサイズ(幅・高さ)を持ったGIF画像をサーバサイドで出力することができます。

実際に作った 65535 x 65535 pixel の 35 byte GIF画像ファイルですが
http://namazu.org/~takesako/slides/65535×65535.gif
Webブラウザのレンダリングに大量のメモリを消費することはありません。

2. Ajax Hacks (Client side)

このテクニックは
Binary Hacks の献本をいただけなかった人から教えてもらったのですが、
サイズを指定しないImageオブジェクトに対して、JavaScriptのonloadのタイミングで画像のwidth属性を読み込むことができます。

<img src="null.gif" onload="alert(this.width)">

これを応用すると、WebブラウザのJavaScriptから非同期リクエストを飛ばして、サーバからの結果を画像のwidth属性から読み取れます。

function callback(data) {
  // ...ここにコールバックの処理を書く...
}

var img = new Image;
img.onload = function(){callback(img.width)};
setTimeout(function(){img.src='http://example.com/null.gif?q=hoge'}, 0);

/*
<img src="http://example.com/null.gif?q=hoge" onload="callback(this.width)">
*/

これはすごい

ということで、究極のJavaScript非同期クロスドメインAPIとして、
クロスドメイン越えができる非同期リクエストをJavaScriptから簡単に飛ばせる、
というテクニックでした。

# 一度に 16bit x 2 (width, height) のデータしか返せませんけど…いろいろ応用できると思います

簡単なデモは ここをクリック

以上、全面的にmalaリスペクトでお届けしました。

お詫び (2006.12.25 追記)

Web2.0時代のAjax Binary Hacks で公開した資料の中に
一部不適切な画像がありましたので、削除いたしました。

韓国語で「それPla!」ブログ

Planet Plaggerのフィードを眺めていたら、韓国語で書かれたPlaggerの記事を発見しました。

Senza 만화 ::: 소레Pla!

おおお。何が書いてあるのかサッパリわからなかったので、早速 Excite エキサイト 韓国語翻訳のお世話に。

Excite エキサイト 翻訳 : 韓国語翻訳>ウェブページ翻訳の結果
韓国語でPlaggerの説明

ふむふむ。自動翻訳の結果を要約すると:

韓国ではあまり使われないけど、日本ではウェブページの更新をチェックする「アンテナ」と言うプログラムがあって、2000年に公開されたWWWDとか、今でも1998年に公開されたなつみかんというCGIプログラムが使われていて、同じようなことをするはてなアンテナlivedoorチェッカーズなどのサービスも広く使われているみたい。

そこで最近よく聞くようになったのが Plagger という名前のソフト。

残念なことにPlaggerは韓国でほとんど紹介されたことがないけど、RSS DIY ツールとして、日本のウェブではかなり話題になっているプログラム。WindowsのGUIじゃなくって、Perlのプログラムなんだけど。日本では「それPla!」「それPlaggerでできるよ!」という流行語があって、自分はPerlよくわからないんだけど頑張ってインストールしてみました。

Bloglines2Gmail

すげーよ!Plagger動いた!


って、フタを空けてみると日本でよくみかけるPlaggerのインストール記事なんですが、韓国語というのが非常に新鮮で、読んでいる私にもその感動が伝わる記事でした。すばらしい。

わざとPlaggerのインストールを難しくしている甲斐がありましたね!miyagawaさん

ロシア語のPlagger紹介記事に引き続き、どんどん非英語圏の世界へも進出しているPlagger。もしも韓流サイトのCustomFeedが増えたりすると日本の主婦層のPlaggerユーザも新しく増えたりするのでしょうか。

Web2.0ワークショップでPlagger講演

Internet Week 2006 二日目の
Web 2.0 ワークショップにて
Plaggerのプレゼンをしてきました。

主催: 日本UNIXユーザ会 
日時: 12月6日(水)9:45-18:00
会場: パシフィコ横浜 会議センター 502

◇◆プログラム◇◆

09:45 ウェブサービスの次世代とアマゾンのウェブサービス概念
   エマーソン・ミルズ(アマゾンジャパン株式会社 ウェブサービス日本担当)
10:30 Web2.0 時代のサーバ仮想化技術について
   油谷曉(奈良先端科学技術大学院大学 情報科学センター)
11:30 一歩進んだ位置情報~位置情報デバイスとデータストア~
   大塚恒平(「ここギコ!」ブログ管理人)
12:30 昼休み
13:30 非WebとWebのMashup - Web2.0がもたらす真の衝撃とは
   小川浩(フィードパス株式会社)
14:30 楽天におけるオープンソースソフトウェア活用への取り組みについて
   川村敦(楽天株式会社)
15:30 Plaggerで学ぶ、初めてのRSS/Atomアグリゲーション
   竹迫良範(Shibuya.pl/サイボウズ・ラボ株式会社)
16:30 パネルディスカッション: 動画共有サービスの現状と将来
   時澤正(ワッチミー!TV)、山田由希美(GREE)、段野光紹(ClipLife)
   司会: 小山哲志(日本UNIXユーザ会)
17:30 終了予定

ワークショップのタイトルがWeb2.0ということなので、会場の皆さんにクイズを出してみました。

Quiz. どちらの猫がWeb2.0的か?

私なりの回答はこちら(会場の正答率は五分五分でした)

ワークショップの発表の様子を撮影した動画(最初の5分間)は日本の動画サービスのサイト上で後日公開されるそうです。

参加者の感想を見ると楽しんでいただけたようで安心しました。

ワークショップにご参加いただいた皆様に対しては、日本UNIXユーザ会のサイト上で当日使用した発表資料がダウンロードできるようになるそうです。今しばらくお待ちください。

このような貴重な機会をいただきありがとうございました。

「WebベースのAJAX共同プログラミング開発環境」勉強会

一橋大学の長慎也先生をお招きしてAJAX勉強会を開催しました。

「WebベースのAJAX共同プログラミング開発環境」勉強会

日時:12/4(月) 第一部 16:00~  第二部 18:00~
場所:プルデンシャルタワー10F(サイボウズ・ラボ)
    http://labs.cybozu.co.jp/access.html

第一部(共同開発スタイル)

16:00 開場(ラボ見学自由時間)
16:30 Japanize について(奥一穂)
17:00 Plagger による共同開発の現在(竹迫良範)
17:15 SIPropアプリケーションサーバ(今村謙之)
17:40 休憩

第二部(プログラミング言語)

18:00 Ning の現状について(秋元裕樹)
18:30 aroe.jp(長慎也)
19:15 sn42.com(高橋さん・斉藤さん)
20:00 終了予定

各プロジェクトでは、
それぞれいろいろな方法でデータやプログラムのソースコードの共有の試みを行なっていて、
非常に参考になりました。

今回はオープンな募集は行ないませんでしたが、また機会があればこのような社外勉強会を開催したいと思います。

参加いただいた皆さん、ありがとうございました。

省メモリプログラミング勉強会

12/1(金)に
全文検索エンジン Sedue を作っている
有限会社Preferred Infrastructure(長くて覚えられないので略してPFI社)
のエンジニアの方々をサイボウズ・ラボにお招きして、省メモリプログラミング勉強会を開催しました。

西川さんによるPreferred Infrastructure会社紹介

非常に深い話が多く、私自身とても勉強になりました。

  1. Succinct Data Structureと最近の圧縮アルゴリズム(岡野原さん
  2. Xinno 昔話 – PalmOS / 68k 時代のデータ構造とアルゴリズム(奥さん
  3. count_leading_zerosとFlash Liteでのバイナリ圧縮(鴨志田さん

今度の Binary 2.0 カンファレンス 2006 で、この勉強会で挙がったネタの一つが披露される予定です。

ご期待ください。