<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ku</title>
	<atom:link href="http://ido.nu/kuma/feed/" rel="self" type="application/rss+xml" />
	<link>http://ido.nu/kuma</link>
	<description></description>
	<lastBuildDate>Thu, 07 Jan 2010 16:08:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GoogleChromeの拡張を作る上でFirefoxアドオン作者が知っておくべきやればできること</title>
		<link>http://ido.nu/kuma/2009/12/15/all-firefox-addon-devs-should-know-how-tos/</link>
		<comments>http://ido.nu/kuma/2009/12/15/all-firefox-addon-devs-should-know-how-tos/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 14:01:01 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1778</guid>
		<description><![CDATA[GoogleChromeの拡張を作る上でFirefoxアドオン作者が知っておくべき10の違い【GoogleChromeでニコ動拡張を作ってみた感想】 &#8211; love_firefoxportableの日記についてMySpaceのMP3ファイルにID3tagを埋め込みつつダウンロードするJSActionsスクリプトを作ったあたりからFirefoxアドオンの柔軟さに魅了されていろいろ作ってきたけどChromeのUIのブロックしなさが快適でChromeにスイッチしようとしている人間が書きます。
将来にわたってChromeのextensionでFirefox addonのような自由度が実現されるようなことはないと思いますが、それでも今の段階でやればできることもちょっとあります。大半はできないけど。
右クリックはいじれない
いじれません。このへんまだ実装自体がやっつけな感じなので将来的にはいじれるようになるんじゃないかと思ってます。
API Wish List (The Chromium Projects)にも載っています。

補足 2009.12.16

Context menu is potentially on the M5 list.
Exposing Chrome Extensions APIs to DOM UI. &#8211; Chromium-dev &#124; Google Groups

だそうなので来年前半には実装されそうです。

データのダウンロード保存はできない
chromeのダウンローダでダウンロードすることはできませんが、どうしてもダウンロードしたければNPAPI pluginを作ればできます。
クリップボードの操作はできない

補足 2010.1.7
execCommandで可能です。
Twitter / utatane: Chromeのcopyは, たしか, 隠しinput &#8230;

NPAPI pluginを作ればできます。(ex. chromeでMake LinkみたいにページのHTMLリンクをコピるCreateLink « ku)
通常NPAPI pluginを使うと通常のウェブページからもpluginの昨日にアクセスできてしまいますが、chromeのNPAPI pluginはextensionのオリジンからだけ有効にすることができるオプションがあります。これによってobjectタグを通じて通常のウェブページからは利用できないけれどextensionからは使える関数を用意することができます。
ただ現状プラットフォームごとにべつべつのバイナリを用意することができなくて、ぜんぶおんなじバイナリを読み込むのでターゲットのプラットホーム以外で読み込むとクラッシュしたりします(公式リリースではextensionはwindowsでしか動かないことになっているので問題ないといえば問題ないんでしょうけど&#8230;)。これは中の人もちょう怒ってました。Extensions and the Mac &#8211; Chromium-dev &#124; Google Groups
ブラウザの通信に対してフックをかけることはできない
できません。
が、Extensions API proposal: access to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/love_firefoxportable/20091214/1260801125">GoogleChromeの拡張を作る上でFirefoxアドオン作者が知っておくべき10の違い【GoogleChromeでニコ動拡張を作ってみた感想】 &#8211; love_firefoxportableの日記</a>について<a href="http://ido.nu/kuma/2007/08/07/jsactions-script-download-and-implant-id3tag-myspace-mp3-file/">MySpaceのMP3ファイルにID3tagを埋め込みつつダウンロードするJSActionsスクリプト</a>を作ったあたりからFirefoxアドオンの柔軟さに魅了されていろいろ作ってきたけどChromeのUIのブロックしなさが快適でChromeにスイッチしようとしている人間が書きます。</p>
<p>将来にわたってChromeのextensionでFirefox addonのような自由度が実現されるようなことはないと思いますが、それでも今の段階でやればできることもちょっとあります。大半はできないけど。</p>
<h4>右クリックはいじれない</h4>
<p>いじれません。このへんまだ実装自体がやっつけな感じなので将来的にはいじれるようになるんじゃないかと思ってます。<br />
<a href="http://dev.chromium.org/developers/design-documents/extensions/apiwishlist">API Wish List (The Chromium Projects)</a>にも載っています。</p>
<div class="note">
<h4>補足 2009.12.16</h4>
<blockquote cite="http://groups.google.com/group/chromium-dev/msg/5ac86399448c0b6e" title="Exposing Chrome Extensions APIs to DOM UI. - Chromium-dev | Google Groups"><p>
Context menu is potentially on the M5 list.<br />
<cite><a href="http://groups.google.com/group/chromium-dev/msg/5ac86399448c0b6e">Exposing Chrome Extensions APIs to DOM UI. &#8211; Chromium-dev | Google Groups</a></cite>
</p></blockquote>
<p>だそうなので来年前半には実装されそうです。
</p></div>
<h4>データのダウンロード保存はできない</h4>
<p>chromeのダウンローダでダウンロードすることはできませんが、どうしてもダウンロードしたければNPAPI pluginを作ればできます。</p>
<h4>クリップボードの操作はできない</h4>
<div class="note">
<h3>補足 2010.1.7</h3>
<p><code>execCommand</code>で可能です。<br />
<a href="http://twitter.com/Constellation/status/7188365498">Twitter / utatane: Chromeのcopyは, たしか, 隠しinput &#8230;</a>
</div>
<p>NPAPI pluginを作ればできます。(ex. <a href="http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/">chromeでMake LinkみたいにページのHTMLリンクをコピるCreateLink « ku</a>)<br />
通常NPAPI pluginを使うと通常のウェブページからもpluginの昨日にアクセスできてしまいますが、chromeのNPAPI pluginはextensionのオリジンからだけ有効にすることができるオプションがあります。これによってobjectタグを通じて通常のウェブページからは利用できないけれどextensionからは使える関数を用意することができます。</p>
<p>ただ現状プラットフォームごとにべつべつのバイナリを用意することができなくて、ぜんぶおんなじバイナリを読み込むのでターゲットのプラットホーム以外で読み込むとクラッシュしたりします(公式リリースではextensionはwindowsでしか動かないことになっているので問題ないといえば問題ないんでしょうけど&#8230;)。これは中の人もちょう怒ってました。<a href="http://groups.google.com/group/chromium-dev/browse_thread/thread/45c7682e688213c2/a6846464c036ef44?show_docid=a6846464c036ef44">Extensions and the Mac &#8211; Chromium-dev | Google Groups</a></p>
<h4>ブラウザの通信に対してフックをかけることはできない</h4>
<p>できません。<br />
が、<a href="http://groups.google.com/group/chromium-extensions/browse_thread/thread/fb8c1f28c4a63670">Extensions API proposal: access to the HTTP request &#8211; Chromium-extensions | Google Groups</a>で作りたいっていってdesign docを書いてる人がいたのでできるようになるかもしれません。書かれたのは3ヶ月前でその後音沙汰ないですが&#8230;</p>
<h4>DOM構築前のデータを弄ることはできない</h4>
<p>できません。これってFirefoxだとどうやったら実現できるのか知りたいです！</p>
<h4>ブラウザの下部に新しくツリーボックスを作る等、ブラウザの構造を変えることはできない</h4>
<p>できません。ここはFirefoxの奇跡だと思っています。</p>
<p>昔Netscape社でNavigator6を作り、今はChromeの開発をしている<a href="http://en.wikipedia.org/wiki/Ben_Goodger">Ben Goodger</a>さんの<a href="http://www.bengoodger.com/2009/12/google-chrome-extensions/">millennium | Google Chrome Extensions</a>を読むと、もともとFirefoxのextensionでブラウザ自体のUIをいじれるようになっているのは意図して設計されたわけではなかったと書かれています。Navigatorの内部で使うためのAPIをハックしてUIをカスタマイズできることが発見されて、それが人気があったので長い年月を経て生き残り、現在のようなextensionにまで成熟したと書かれています。</p>
<blockquote><p>If this “back door” into browser customization hadn’t existed by virtue of Netscape’s componentized install, it’s not necessarily a given that Firefox would _ever_ have had extensions. Think about that. It’s awesome that it did, because it’s a feature users love.</p></blockquote>
<p>Firefox extensionの自由さは偶然から生まれて今に至るのです。</p>
<h4>外部exeを実行することはできない</h4>
<p>NPAPI pluginでできます。</p>
<h4>XMLHttpRequestはクロスドメイン制限を受ける（content_scriptsの場合）</h4>
<p>これはいちおうbackground pageからきるけどreferrerがつけられないことが大きな制約として残るだろうと<a href="http://twitter.com/Constellation/status/6238496071">Constellationさんが言っていました</a>。が、NPAPI pluginでやればなんでもできます。</p>
<h4>content_scripts内のjsからlocalStorageにアクセス出来ない</h4>
<p>バグな気もします。Greasemonkeyとは名前空間の分離の仕方が違うことに起因してます。Chromeでどうやって分離しているかはAaronのブログに図解があります。 <a href="http://www.aaronboodman.com/2009/04/content-scripts-in-chromium.html">aaronboodman.com &#8211; Aaron Boodman&#8217;s work blog</a></p>
<h4>javascript1.6とか1.7とか1.8は無い</h4>
<p>1.6の範囲はchromeでもサポートされています。個人的にはE4Xがサポートされてないのが辛いです。でもこのへんはFirefoxでしか使えないのでFirefoxが勝手(?)に色々つけくわえてるという印象が&#8230;</p>
<h4>拡張を大量にぶちこんでも重くならない</h4>
<p>FirefoxのUIがブロックする=重たい印象になってると思われるのでFirefoxでもelectrolysisでかなり改善されるんじゃないかと思っています。</p>
<p>たしかにChromeは拡張の量が増えてもUIは重くなりませんが、絶対的に重くならないなんてことは当然なくて、たくさんインストールするとレンダリング終了までにかかる時間は長くなるという結果がパフォーマンステストから示されています。<br />
<a href="http://groups.google.com/group/chromium-dev/browse_thread/thread/72c636095b3cafc7/">Extensions performance data &#8211; Chromium-dev | Google Groups</a></p>
<h3>結論</h3>
<ul>
<li>Chromeでサポートされていないけど欲しいものはNPAPI pluginを使って自分で作ればいろいろできるようになります。NPAPI pluginを作るのは面倒ですが<a href="http://code.google.com/p/nixysa/">nixysa</a>を使うと少しは楽に開発できるらしいです。いまのところnixysaを利用してWindowsで動くバイナリを作るにはハックしてモノにする必要があります。そのハックはネイティブのアプリケーション開発に詳しくないと難しかんじです(<a href="http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/">CreateLink</a>はふつうに手で書いて作りましたが、その時バージョンストリングなどが入ったリソースファイルをリンクしないとchromeがpluginとして認識してくれないという謎現象に遭遇しました)。</li>
<li>Firefoxアドオンの自由度は奇跡的です。<a href="http://www.bengoodger.com/2009/12/google-chrome-extensions/">millennium | Google Chrome Extensions</a>を読んでその奇跡を噛み締めましょう。</li>
</ul>
<h3>所感</h3>
<p>自分も「GoogleChromeマジ神wwwwwwwwFirefox（笑）」な人を見るとアホかと思いますが、実際のところ大半の人は現在のChromeの貧弱なAPIでできる範囲の拡張でほとんど困らないんだと思います。</p>
<p>それはたまたまなわけでもなくてAaron Broodmanが書いているように</p>
<blockquote cite="http://www.aaronboodman.com/2009/04/content-scripts-in-chromium.html" title="aaronboodman.com - Aaron Boodman's work blog"><p>Here&#8217;s an interesting factoid about browser extensions: lots of them are not about extending the browser at all. By my count, about 75% of the this week&#8217;s top 20 Firefox extensions are more about extending the web content rendered by the browser than extending the browser itself.<br />
<cite><a href="http://www.aaronboodman.com/2009/04/content-scripts-in-chromium.html">aaronboodman.com &#8211; Aaron Boodman&#8217;s work blog</a></cite>
</p></blockquote>
<p>AMO上位20拡張のうち75%はGreasemonkeyでできることしかやっていない現実を反映しているだけなんでしょう。たしかに自分も職場のWindowsマシンのChromeには<a href="https://chrome.google.com/extensions/detail/aeolcjbaammbkgaiagooljfdepnjmkfd">AutoPatchWork</a>しか入っていません。そしてこのExtensionはGreasemonkeyでできる範囲のことしかやっていません。実際AutoPatchWorkの祖先である<a href="http://userscripts.org/scripts/show/8551">AutoPagerize</a>はGreasemonkeyのスクリプトです。</p>
<p>ただ予め意図されているようなextensionしか作れないChromeに押され、極めて柔軟で大半のことは実現できるFirefox extensionの開発者が減っていけば、ブラウザの使い方が均質化して行き、ひいてはウェブ上でのサービスの進化が鈍ってしまうのではないかという恐れを感じます。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/12/15/all-firefox-addon-devs-should-know-how-tos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pearのHTTPプロキシ設定</title>
		<link>http://ido.nu/kuma/2009/12/15/pear-http-proxy-setting/</link>
		<comments>http://ido.nu/kuma/2009/12/15/pear-http-proxy-setting/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 07:03:29 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[PEAR]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1775</guid>
		<description><![CDATA[借りてるサーバでpearが全然動かない。
% sudo pear install HTTP_Client
No releases available for package "pear.php.net/HTTP_Client"
Cannot initialize 'channel://pear.php.net/HTTP_Client', invalid or missing package file
Package "channel://pear.php.net/HTTP_Client" is not valid
install failed

よくわからないままchannel-updateしても動かない。
% sudo pear channel-update pear.php.net
audit_log_user_command(): Connection refused
Updating channel "pear.php.net"
Cannot retrieve channel.xml for channel "pear.php.net" (Connection to `172.20.25.95:18080' failed: Connection timed out)

困ってソースを見ているうちにpearにPEAR/Config.phpという設定ファイルっぽいものがあるのを知った。
それならばその設定を見るオプションがあると考え探すとpear config-showで見られることが分かった。
% pear config-show
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover  [...]]]></description>
			<content:encoded><![CDATA[<p>借りてるサーバでpearが全然動かない。</p>
<pre><code>% sudo pear install HTTP_Client
No releases available for package "pear.php.net/HTTP_Client"
Cannot initialize 'channel://pear.php.net/HTTP_Client', invalid or missing package file
Package "channel://pear.php.net/HTTP_Client" is not valid
install failed
</code></pre>
<p>よくわからないままchannel-updateしても動かない。</p>
<pre><code>% sudo pear channel-update pear.php.net
audit_log_user_command(): Connection refused
Updating channel "pear.php.net"
Cannot retrieve channel.xml for channel "pear.php.net" (Connection to `172.20.25.95:18080' failed: Connection timed out)
</code></pre>
<p>困ってソースを見ているうちにpearにPEAR/Config.phpという設定ファイルっぽいものがあるのを知った。<br />
それならばその設定を見るオプションがあると考え探すと<code>pear config-show</code>で見られることが分かった。</p>
<pre><code>% pear config-show
Configuration (channel pear.php.net):
=====================================
Auto-discover new Channels     auto_discover    &lt;not set&gt;
Default Channel                default_channel  pear.php.net
<span class="em-color">HTTP Proxy Server Address      http_proxy       http://172.20.25.95:18080/
</span>PEAR server [DEPRECATED]       master_server    pear.php.net
Default Channel Mirror         preferred_mirror pear.php.net</code></pre>
<p>無効なproxyが設定されていた。</p>
<pre><code>% sudo pear config-set http_proxy ""
config-set succeeded</code></pre>
<p>これで解決。pearが使えるようになった。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/12/15/pear-http-proxy-setting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chromeでMake LinkみたいにページのHTMLリンクをコピるCreateLink</title>
		<link>http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/</link>
		<comments>http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 14:45:17 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1766</guid>
		<description><![CDATA[
Twitterにページのリンクを貼るときや、ブログを書くときにFirefoxではMake Linkというアドオンを使うと右クリックのメニューから選ぶだけでテキスト+URLや
chromeでMakeLinkみたいにページのHTMLリンクをコピるCreateLink « ku http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/
HTMLのリンクをクリップボードに作ってくれます。
&#60;a href=&#8221;http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/&#8221;&#62;chromeでMakeLinkみたいにページのHTMLリンクをコピるCreateLink « ku&#60;/a&#62;
そのchrome版を作りました。NPAPIを使っているのでwindowsでしか動きません。
インストール
Google Chrome Extensions: Create Link
コード
ku&#8217;s CreateLink at master &#8211; GitHub
余談
クリップボードにデータを転送する部分はちぎってほかのextensionから使うことができるので、クリップボードを使いたいときにはご利用ください(ただデータをセットできることしか必要なかったのでそれしか実装してません)。
予定

NPAPIはChrome Galleryのレビューを通過できるのか試してみます
ほんもののMakeLinkのようにフォーマットをカスタマイズできるようにしたいです

]]></description>
			<content:encoded><![CDATA[<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/12/createlink.png" height="320" width="489" hspace="4" vspace="4" alt="Createlink" class="border block" /></p>
<p>Twitterにページのリンクを貼るときや、ブログを書くときにFirefoxでは<a href="https://addons.mozilla.org/ja/firefox/addon/142">Make Link</a>というアドオンを使うと右クリックのメニューから選ぶだけでテキスト+URLや</p>
<blockquote><p>chromeでMakeLinkみたいにページのHTMLリンクをコピるCreateLink « ku http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/</p></blockquote>
<p>HTMLのリンクをクリップボードに作ってくれます。</p>
<blockquote><p>&lt;a href=&#8221;http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/&#8221;&gt;chromeでMakeLinkみたいにページのHTMLリンクをコピるCreateLink « ku&lt;/a&gt;</p></blockquote>
<p>そのchrome版を作りました。<del>NPAPIを使っているのでwindowsでしか動きません。</del></p>
<h3>インストール</h3>
<p><a href="https://chrome.google.com/extensions/detail/gcmghdmnkfdbncmnmlkkglmnnhagajbm">Google Chrome Extensions: Create Link</a></p>
<h3>コード</h3>
<p><a href="http://github.com/ku/CreateLink">ku&#8217;s CreateLink at master &#8211; GitHub</a></p>
<h3>余談</h3>
<p>クリップボードにデータを転送する部分はちぎってほかのextensionから使うことができるので、クリップボードを使いたいときにはご利用ください(ただデータをセットできることしか必要なかったのでそれしか実装してません)。</p>
<h3>予定</h3>
<ul>
<li>NPAPIはChrome Galleryのレビューを通過できるのか試してみます</li>
<li>ほんもののMakeLinkのようにフォーマットをカスタマイズできるようにしたいです</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/12/10/create-html-link-with-createlink-for-chrome-like-makelink/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>ManualPatchWorkを使って手動でAutoPatchWorkにページをロードさせる</title>
		<link>http://ido.nu/kuma/2009/12/10/force-autopatchwork-to-load-next-page-manually-with-manualpatchwork/</link>
		<comments>http://ido.nu/kuma/2009/12/10/force-autopatchwork-to-load-next-page-manually-with-manualpatchwork/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 13:02:54 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1759</guid>
		<description><![CDATA[
補足
Chrome Keyconfigでも手動でロードできます。

日経ビジネスオンラインの記事のようにフッタが異常に長くて本文の最後まで読んでもAutoPatchWorkが次のページを読み込んでくれないようなサイトでJを押したら手動で次のページを読み込むことができるchrome extensionをつくりました。
インストール
manualpatchwork.crx

こんなかんじで本文よりもフッタのほうが長いページでもJを押したら次のページがロードされます。

はじめREMAIN_HEIGHTで判断するのをやめてnextLinkとpageElementの位置関係とスクロール状態から次のページをロードするかどうか決めれば自動でできないかと思ったけど本文の下にリンクが有るとは限らないのとnextLinkがpageElementの中に入ってたりすることもあるので無理そうでした。
]]></description>
			<content:encoded><![CDATA[<div class="note">
<h3>補足</h3>
<p><a href="https://chrome.google.com/extensions/detail/okneonigbfnolfkmfgjmaeniipdjkgkl">Chrome Keyconfig</a>でも手動でロードできます。
</div>
<p><a href="http://business.nikkeibp.co.jp/article/topics/20091001/206099/">日経ビジネスオンラインの記事</a>のようにフッタが異常に長くて本文の最後まで読んでも<a href="https://chrome.google.com/extensions/detail/aeolcjbaammbkgaiagooljfdepnjmkfd">AutoPatchWork</a>が次のページを読み込んでくれないようなサイトで<code>J</code>を押したら手動で次のページを読み込むことができるchrome extensionをつくりました。</p>
<h3>インストール</h3>
<p><a href="/kuma/files/manualpatchwork.crx">manualpatchwork.crx</a></p>
<p><img class="block" src="http://ido.nu/kuma/wp-content/uploads/2009/12/before.png" alt="Before" hspace="4" vspace="4" width="753" height="628" /><br />
こんなかんじで本文よりもフッタのほうが長いページでも<code>J</code>を押したら次のページがロードされます。</p>
<p><img class="block" src="http://ido.nu/kuma/wp-content/uploads/2009/12/after.png" alt="After" hspace="4" vspace="4" width="753" height="628" /></p>
<p>はじめ<code>REMAIN_HEIGHT</code>で判断するのをやめて<code>nextLink</code>と<code>pageElement</code>の位置関係とスクロール状態から次のページをロードするかどうか決めれば自動でできないかと思ったけど本文の下にリンクが有るとは限らないのと<code>nextLink</code>が<code>pageElement</code>の中に入ってたりすることもあるので無理そうでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/12/10/force-autopatchwork-to-load-next-page-manually-with-manualpatchwork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP::Request::Commonでsjisをエスケープしたパラメータにゴミが入る</title>
		<link>http://ido.nu/kuma/2009/11/25/sjis-string-is-garbled-in-httprequestcommon/</link>
		<comments>http://ido.nu/kuma/2009/11/25/sjis-string-is-garbled-in-httprequestcommon/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 03:06:53 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1751</guid>
		<description><![CDATA[
解決
tokuhiromさんのコメント参照。
name =&#62; "北海道";

を
'name' =&#62; "北海道";

とクオートしたら期待通りに動きました。
ありがとうございます。

use strict;
use warnings;
use utf8;
use Encode;
use HTTP::Request::Common;

my $name = "北海道";
$name = encode('shift_jis', $name);
my $req = POST 'http://ido.nu/kuma/pref', [
    name =&#62; $name
];
print $req-&#62;as_string;

こういうコードでクエリで送る文字列をsjisでエスケープされたものにしたかったんだけどうまく行かないので表示させてみたら
POST http://ido.nu/kuma/pref
Content-Length: 31
Content-Type: application/x-www-form-urlencoded

name=%C2%96k%C2%8AC%C2%93%C2%B9

%96k%8AC%93%B9になるべきところに%C2がやたら混じっていて文字が壊れている。
use bytesで囲めば直る。
{
  use bytes;

  my $req = POST 'http://ido.nu/kuma/pref', [
      name =&#62; $name
  ];
  print $req-&#62;as_string;
}

でももとのコードでなんでうまくいかないのか分からない。
]]></description>
			<content:encoded><![CDATA[<div class="note">
<h3>解決</h3>
<p><a href="http://ido.nu/kuma/2009/11/25/sjis-string-is-garbled-in-httprequestcommon/comment-page-1/#comment-87071">tokuhiromさんのコメント</a>参照。</p>
<pre><code>name =&gt; "北海道";
</code></pre>
<p>を</p>
<pre><code>'name' =&gt; "北海道";
</code></pre>
<p>とクオートしたら期待通りに動きました。<br />
ありがとうございます。
</p></div>
<pre><code>use strict;
use warnings;
use utf8;
use Encode;
use HTTP::Request::Common;

my $name = "北海道";
$name = encode('shift_jis', $name);
my $req = POST 'http://ido.nu/kuma/pref', [
    name =&gt; $name
];
print $req-&gt;as_string;
</code></pre>
<p>こういうコードでクエリで送る文字列をsjisでエスケープされたものにしたかったんだけどうまく行かないので表示させてみたら</p>
<pre><code>POST http://ido.nu/kuma/pref
Content-Length: 31
Content-Type: application/x-www-form-urlencoded

name=%C2%96k%C2%8AC%C2%93%C2%B9
</code></pre>
<p><code>%96k%8AC%93%B9</code>になるべきところに<code>%C2</code>がやたら混じっていて文字が壊れている。</p>
<p><code>use bytes</code>で囲めば直る。</p>
<pre><code>{
  use bytes;

  my $req = POST 'http://ido.nu/kuma/pref', [
      name =&gt; $name
  ];
  print $req-&gt;as_string;
}
</code></pre>
<p>でももとのコードでなんでうまくいかないのか分からない。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/11/25/sjis-string-is-garbled-in-httprequestcommon/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>chrome + NPAPI / nixysa</title>
		<link>http://ido.nu/kuma/2009/11/22/chrome-npapi-nixysa/</link>
		<comments>http://ido.nu/kuma/2009/11/22/chrome-npapi-nixysa/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 19:02:49 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/2009/11/22/chrome-npapi-nixysa/</guid>
		<description><![CDATA[Google Japan Blog: Google Chrome 拡張（Extensions） を作ってみませんか？に参加しました。事前のアイディアソンでSCRAPBOOK :: Firefox Extensionみたいにページの中身をダウンロードしてローカルに保存してあとで見られるようにするextensionを(HTML5チーム6人で)作る、ということになったのはいいものの、ちょっと調べてみるとファイルをローカルにダウンロードするいい方法がありません。
chrome extensionのAPIにはファイルをダウンロードさせるAPIがありません。gearsのlocal serverを使うと新しいドメインで使用するたびにgearsを使っていいかのダイアログが出るのに加えて同じドメインにある画像しか保存できません(画像はamazonS3だったりするサービスも多くなってきているのでページと同じドメインしかキャッシュできないのは困る)。
nixysa
そういえばextensionでNPAPIのpluginを読み込ませられるからそれで解決できるのでは、と思って何も知らないところから調べ始めたらFirefoxやChromeのPlugin開発に便利なnixysa // CIOを目指しつつの8makiのアレにnixysaというので簡単にNPAPI pluginが書けるというのを発見しました。じゃあこれでやってみるかということではじめにHelloWorldWalkThru &#8211; nixysa &#8211; Hello World Walk-Thruをやりました。環境はWindowsXP SP2+VisualStudio2008です。
scons
どうもこのチュートリアルはLinuxを対象にしているようでWindowsで動かしたい時は書いてありません。でもchromium本体をビルドする時にBuild Instructions (Windows)に従って作ったcygwin環境を使ったらビルドすることができました。ただはじめにsconsがpythonのモジュールplyとgflagsがないと言ってこけます。これはnixysaをsvnからcheckoutしてきたときにthird_party/の中に入っているのでそれを
./setup.py install

でインストールすれば動くようになります(入っているのに気がつかなくて自分でダウンロードしてきました&#8230;)。
std::wstring
sconsが動いてコンパイルが始まると今度はnixysa/static_glue/npapi/common.hでgccがstd::wstringというクラスはないと言い出してこけます。これはcygwinのgccがそういうものだそうでgcc(cygwin)でのstd::wstringの利用方法 -OKWaveに素っ気なく書いてある
typedef basic_string&#60;wchar_t&#62; wstring;
としてみる

という回答以上に詳しいことが書かれているものを見つけられなかったのでcommon.hにそう書いたらコンパイルできるようになりました。なんでcygwinのgccはwstringが使えないんでしょう？
about:plugins
これでsconsを実行するとめでたくhelloworld.dllができあがりました。manifest.jsonにpluginsを追加してhelloworld.dllを指定するとchromeでabout:pluginsを開くと、プラグインのリストにhelloworldが入ってるはずなのですが出てきません。なんとかしたいけどそもそもNPAPIがどういう仕組みになっているのかがわかってない状態でnixysaがなんで動かないのかがわかるはずがないのでnixysaはあきらめました。たぶんLinuxだとちゃんと動くんだと思います。
npsimple.dll
ふつうにNPAPIで検索するとFirefox用のコードばかり出てくるので、原理的にはそれでも問題ないはずだけど問題が出た時に何も知らない素人には解決できないからchromeで動くことが分かっているNPAPI pluginのコードを手に入れてそれをいじるという方針に変えて探していたらIssue 13564 &#8211; chromium &#8211; NPAPI Chrome crash &#8211; STRINGZ_TO_NPVARIANT &#8211; Project Hosting on Google CodeにNPAPI pluginのひな形のようなものがあるのを見つけました。テスト用についているnpsimple.dllをmanifest.jsonで読み込むように指定するとちゃんとabout:pluginsに出てきます(これでnixysaで作ったDLLがちゃんと機能していないのに確信を持ちました)。
コード自体はnixysaで書くのに比べるとたしかに面倒なのですが、nixysaで簡単になる部分はNPAPIからブラウザにオブジェクトを返すとき、読み込む時のメモリ管理だけで、けっきょくC++でjsのオブジェクトを操作するというめんどくささは変わらないので全体の作業量からすればそんなに便利にはならないと感じました。でもnixysaだと公開するメソッドのインターフェイスをIDLで記述できるので圧倒的に見通しがよくなるし、ミスで引数が違っていて落ちる、というようなこともなくなります。NPAPIの仕組み自体はGecko Plugin API Reference &#8211; MDCにしっかり書いてあるので読むとよくわかります。ただ、できることは非常に限られていて、ブラウザに特定のURLをリクエストさせてそのbodyをストリームとして読み取ること、与えられたウインドウ矩形を描画すること、OSネイティブのイベントをハンドリングすることぐらいしかできません。デスクトップアプリケーション開発者ならなんでもできて楽しいかんじですが、ウェブ開発者からしたら&#8221;ダウンロードしかできない&#8221;かんじです。
で、指定したファイルをダウンロードしてきてローカルファイルに保存する、というNPAPI pluginを作ったけど時間がなくてパラレルにリクエストしたりしてもちゃんと動くのかとか実用に堪えるのかのテストは全くできていなかったのであとで泣きを見たりしそうだったのと手動で環境変数を設定しないと動かないインチキ実装なのとで怖いからハッカソンでは使いませんでした。
コード
ku&#8217;s npapicache &#8211; GitHub
]]></description>
			<content:encoded><![CDATA[<p><a href="http://googlejapan.blogspot.com/2009/11/google-chrome-extensions.html">Google Japan Blog: Google Chrome 拡張（Extensions） を作ってみませんか？</a>に参加しました。事前のアイディアソンで<a href="http://amb.vis.ne.jp/mozilla/scrapbook/index.php?lang=ja">SCRAPBOOK :: Firefox Extension</a>みたいにページの中身をダウンロードしてローカルに保存してあとで見られるようにするextensionを(HTML5チーム6人で)作る、ということになったのはいいものの、ちょっと調べてみるとファイルをローカルにダウンロードするいい方法がありません。<br />
chrome extensionのAPIにはファイルをダウンロードさせるAPIがありません。gearsのlocal serverを使うと新しいドメインで使用するたびにgearsを使っていいかのダイアログが出るのに加えて同じドメインにある画像しか保存できません(画像はamazonS3だったりするサービスも多くなってきているのでページと同じドメインしかキャッシュできないのは困る)。</p>
<h3>nixysa</h3>
<p>そういえばextensionでNPAPIのpluginを読み込ませられるからそれで解決できるのでは、と思って何も知らないところから調べ始めたら<a href="http://blog.8maki.jp/2009/10/nixysa-npapi-gluecode-genereator.html">FirefoxやChromeのPlugin開発に便利なnixysa // CIOを目指しつつの8makiのアレ</a>に<a href="http://code.google.com/p/nixysa/">nixysa</a>というので簡単にNPAPI pluginが書けるというのを発見しました。じゃあこれでやってみるかということではじめに<a href="http://code.google.com/p/nixysa/wiki/HelloWorldWalkThru">HelloWorldWalkThru &#8211; nixysa &#8211; Hello World Walk-Thru</a>をやりました。環境はWindowsXP SP2+VisualStudio2008です。</p>
<h4>scons</h4>
<p>どうもこのチュートリアルはLinuxを対象にしているようでWindowsで動かしたい時は書いてありません。でもchromium本体をビルドする時に<a href="http://dev.chromium.org/developers/how-tos/build-instructions-windows">Build Instructions (Windows)</a>に従って作ったcygwin環境を使ったらビルドすることができました。ただはじめにsconsがpythonのモジュール<code>ply</code>と<code>gflags</code>がないと言ってこけます。これはnixysaをsvnからcheckoutしてきたときに<code>third_party/</code>の中に入っているのでそれを</p>
<pre><code>./setup.py install
</code></pre>
<p>でインストールすれば動くようになります(入っているのに気がつかなくて自分でダウンロードしてきました&#8230;)。</p>
<h4>std::wstring</h4>
<p>sconsが動いてコンパイルが始まると今度は<code>nixysa/static_glue/npapi/common.h</code>でgccが<code>std::wstring</code>というクラスはないと言い出してこけます。これはcygwinのgccがそういうものだそうで<a href="http://okwave.jp/qa2132513.html">gcc(cygwin)でのstd::wstringの利用方法 -OKWave</a>に素っ気なく書いてある</p>
<blockquote><p>typedef basic_string&lt;wchar_t&gt; wstring;<br />
としてみる
</p></blockquote>
<p>という回答以上に詳しいことが書かれているものを見つけられなかったので<code>common.h</code>にそう書いたらコンパイルできるようになりました。なんでcygwinのgccはwstringが使えないんでしょう？</p>
<h4>about:plugins</h4>
<p>これでsconsを実行するとめでたく<code>helloworld.dll</code>ができあがりました。<code>manifest.json</code>に<code>plugins</code>を追加して<code>helloworld.dll</code>を指定するとchromeで<code>about:plugins</code>を開くと、プラグインのリストにhelloworldが入ってるはずなのですが出てきません。なんとかしたいけどそもそもNPAPIがどういう仕組みになっているのかがわかってない状態でnixysaがなんで動かないのかがわかるはずがないのでnixysaはあきらめました。たぶんLinuxだとちゃんと動くんだと思います。</p>
<h3>npsimple.dll</h3>
<p>ふつうにNPAPIで検索するとFirefox用のコードばかり出てくるので、原理的にはそれでも問題ないはずだけど問題が出た時に何も知らない素人には解決できないからchromeで動くことが分かっているNPAPI pluginのコードを手に入れてそれをいじるという方針に変えて探していたら<a href="http://code.google.com/p/chromium/issues/detail?id=13564">Issue 13564 &#8211; chromium &#8211; NPAPI Chrome crash &#8211; STRINGZ_TO_NPVARIANT &#8211; Project Hosting on Google Code</a>にNPAPI pluginのひな形のようなものがあるのを見つけました。テスト用についている<code>npsimple.dll</code>を<code>manifest.json</code>で読み込むように指定するとちゃんと<code>about:plugins</code>に出てきます(これでnixysaで作ったDLLがちゃんと機能していないのに確信を持ちました)。</p>
<p>コード自体はnixysaで書くのに比べるとたしかに面倒なのですが、nixysaで簡単になる部分はNPAPIからブラウザにオブジェクトを返すとき、読み込む時のメモリ管理だけで、けっきょくC++でjsのオブジェクトを操作するというめんどくささは変わらないので全体の作業量からすればそんなに便利にはならないと感じました。でもnixysaだと公開するメソッドのインターフェイスをIDLで記述できるので圧倒的に見通しがよくなるし、ミスで引数が違っていて落ちる、というようなこともなくなります。NPAPIの仕組み自体は<a href="https://developer.mozilla.org/ja/Gecko_Plugin_API_Reference">Gecko Plugin API Reference &#8211; MDC</a>にしっかり書いてあるので読むとよくわかります。ただ、できることは非常に限られていて、ブラウザに特定のURLをリクエストさせてそのbodyをストリームとして読み取ること、与えられたウインドウ矩形を描画すること、OSネイティブのイベントをハンドリングすることぐらいしかできません。デスクトップアプリケーション開発者ならなんでもできて楽しいかんじですが、ウェブ開発者からしたら&#8221;ダウンロードしかできない&#8221;かんじです。</p>
<p>で、指定したファイルをダウンロードしてきてローカルファイルに保存する、というNPAPI pluginを作ったけど時間がなくてパラレルにリクエストしたりしてもちゃんと動くのかとか実用に堪えるのかのテストは全くできていなかったのであとで泣きを見たりしそうだったのと手動で環境変数を設定しないと動かないインチキ実装なのとで怖いからハッカソンでは使いませんでした。</p>
<h3>コード</h3>
<p><a href="http://github.com/ku/npapicache">ku&#8217;s npapicache &#8211; GitHub</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/11/22/chrome-npapi-nixysa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSXでRFC2822をフォーマットする</title>
		<link>http://ido.nu/kuma/2009/11/20/formatting-rfc2822-on-osx/</link>
		<comments>http://ido.nu/kuma/2009/11/20/formatting-rfc2822-on-osx/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 17:03:39 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[objectiveC]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1745</guid>
		<description><![CDATA[HTTPの日付文字列はあまり使われていないRFC2822になっている。探すとNSDateFormatterを使ったコードがけっこう出てくるけどこのクラスはちゃんと設定されているロケールに応じた日付文字列を返すのでシステムが日本語に設定してあると曜日が日本語で出力されてRFC2822にならない。書いた方が早い。
NSString* rfc2822StringFromDate(const NSDate* date) {
    time_t t;
    struct tm tm;
    time_t epoch = (time_t)[[NSDate date] timeIntervalSince1970];
    time(&#038;epoch);
    gmtime_r(&#038;epoch, &#038;tm);
    static const char* month_names[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" [...]]]></description>
			<content:encoded><![CDATA[<p>HTTPの日付文字列はあまり使われていないRFC2822になっている。探すと<code>NSDateFormatter</code>を使ったコードがけっこう出てくるけどこのクラスはちゃんと設定されているロケールに応じた日付文字列を返すのでシステムが日本語に設定してあると曜日が日本語で出力されてRFC2822にならない。書いた方が早い。</p>
<pre><code>NSString* rfc2822StringFromDate(const NSDate* date) {
    time_t t;
    struct tm tm;
    time_t epoch = (time_t)[[NSDate date] timeIntervalSince1970];
    time(&#038;epoch);
    gmtime_r(&#038;epoch, &#038;tm);
    static const char* month_names[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
    static const char* day_names[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
    return [NSString stringWithFormat:@"%s, %02d %s %4d %02d:%02d:%02d GMT",
        day_names[tm.tm_wday],
        tm.tm_mday,
        month_names[tm.tm_mon],
        tm.tm_year + 1900,
        tm.tm_hour,
        tm.tm_min,
        tm.tm_sec
    ];
}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/11/20/formatting-rfc2822-on-osx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chromium for tableauでタグをつけたりできるようになりました</title>
		<link>http://ido.nu/kuma/2009/11/20/chromium-for-tableau-2-0/</link>
		<comments>http://ido.nu/kuma/2009/11/20/chromium-for-tableau-2-0/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 16:56:18 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[Tombloo]]></category>
		<category><![CDATA[chrome]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1739</guid>
		<description><![CDATA[前に作ったやつTomblooのないChromeで自分をちょっとGoogle化する chromium for tableauにフォームをつけました。Windowsでもビルドしてみたんですがメニューは出るけど反応しない状態だったので相変わらずOSX版だけしかありません。
右クリックでメニューが出てくるので

タグをつけたりしたい時はShare&#8230;のほうを選ぶとフォームが出てきて投稿先のサービスを選ぶことができます。

上の方の矢印ボタンを押せば(ここ壊れてるみたいで矢印出てきませんすみません&#8230;)

タグやコメントをつけたりもできます。
いまのところTumblr, delicious, google bookmarks, twitter, はてなブックマークを利用できます。
写真以外のところを右クリックすればふつうにブックマークするのにも使えます。

ブックマークするのに使うだけならふつうのchromeでもbookmarkletから使うことができます。ブックマークしたいページでブックマークットを押すと上のフォームが表示されるので、タグやコメントを書いてボタンを押せばブックマークすることができます。
インストール

chromium for tableau本体
chromium.r29096.app.zip
tableau(chromium extension)
tableau-0.3.0.crx

使い方
ダウンロードしたchromium.appを起動してtableau-0.3.0.crxにアクセスして拡張機能をインストールしてください。

]]></description>
			<content:encoded><![CDATA[<p>前に作ったやつ<a href="http://ido.nu/kuma/2009/09/16/chromium-for-tableau/">TomblooのないChromeで自分をちょっとGoogle化する chromium for tableau</a>にフォームをつけました。Windowsでもビルドしてみたんですがメニューは出るけど反応しない状態だったので相変わらずOSX版だけしかありません。</p>
<p>右クリックでメニューが出てくるので<br />
<a href="http://www.cuebrick.net/articles/871"><img src="http://ido.nu/kuma/wp-content/uploads/2009/11/submenu.png" height="333" width="661" hspace="4" vspace="4" alt="Submenu" class="block" /></a><br />
タグをつけたりしたい時は<em>Share&#8230;</em>のほうを選ぶとフォームが出てきて投稿先のサービスを選ぶことができます。<br />
<a href="http://www.cuebrick.net/articles/871"><img src="http://ido.nu/kuma/wp-content/uploads/2009/11/quickpostform-sharephoto.png" height="500" width="708" hspace="4" vspace="4" alt="Quickpostform-Sharephoto" class="block" /></a><br />
上の方の矢印ボタンを押せば(ここ壊れてるみたいで矢印出てきませんすみません&#8230;)<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2009/11/tagging.png" height="542" width="490" hspace="4" vspace="4" alt="Tagging" class="block" /><br />
タグやコメントをつけたりもできます。</p>
<p>いまのところTumblr, delicious, google bookmarks, twitter, はてなブックマークを利用できます。</p>
<p>写真以外のところを右クリックすればふつうにブックマークするのにも使えます。<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2009/11/quickpostform-link.png" height="480" width="480" hspace="4" vspace="4" alt="Quickpostform-Link" class="block" /></p>
<p>ブックマークするのに使うだけならふつうのchromeでも<a href='javascript:e=encodeURIComponent;d=document;l=d.location;u=l.href;window.open("chrome-extension://cdoinchhmmllfnfecinbngpgokdmlpbf/quickpost.html?type=link&#038;pageUrl="+e(u)+"&#038;page="+e(d.title),"_blank","")'>bookmarklet</a>から使うことができます。ブックマークしたいページでブックマークットを押すと上のフォームが表示されるので、タグやコメントを書いてボタンを押せばブックマークすることができます。</p>
<h3>インストール</h3>
<dl>
<dt>chromium for tableau本体</dt>
<dd><a href="http://ido.nu/kuma/tableau/chromium.r29096.app.zip">chromium.r29096.app.zip</a></dd>
<dt>tableau(chromium extension)</dt>
<dd><a href="http://ido.nu/kuma/tableau/tableau-0.3.0.crx">tableau-0.3.0.crx</a></dd>
</dl>
<h3>使い方</h3>
<p>ダウンロードした<code>chromium.app</code>を起動して<a href="http://ido.nu/kuma/tableau/tableau-0.3.0.crx">tableau-0.3.0.crx</a>にアクセスして拡張機能をインストールしてください。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=zeromemory-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=4838720270" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/11/20/chromium-for-tableau-2-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Freebaseをサーバサイドjavascript実行プラットホームとして使う</title>
		<link>http://ido.nu/kuma/2009/10/31/using-freebase-as-a-server-side-javascript-hosting-service/</link>
		<comments>http://ido.nu/kuma/2009/10/31/using-freebase-as-a-server-side-javascript-hosting-service/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 19:34:04 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/2009/10/30/using-freebase-as-a-server-side-javascript-hosting-service/</guid>
		<description><![CDATA[たぶん前(ちょうどappjetが潰れることになった後くらい)に焼き肉に行った時にid:koyachiかucnvかswdyhかyoupyか誰かにFreebaseでappjetと同じようにjavasriptのコードをサーバで実行できる、というのを教えてもらいました。
今日いじってみたらだいたいappjetみたいなかんじでjavascriptでコードを書いたら実行してくれます。必要な範囲でしかいじってないけどappjetより完成度は高い印象。はじめ使い方が全然わからなかったのでメモ。
Getting Started
はじめにFreebaseのアカウントを作ってログインしたらFreebase App Editorにアクセス。

こういう画面が出てくるのでてきとうに名前をつける。
そうするとコードが書けるようになるので(Greasemonkeyと相性が良くないみたいなので、この画面が出なかったらGreasemonkeyをoffにしてみてください)

デフォルトではPHPみたいなテンプレートエンジンモードになっていて、scriptで囲まないとjsのコードとして認識されないのでFileからAcre typeをScriptに変えましょう。そうするとベタにjsが書けます。

設定を変えたら
acre.write("hello")
と書いて右上のView with Consoleを押せばhelloとだけ書かれたページが表示されます。
あとはHelpにAPI Referenceがあるのでそれを参考にコードを書きましょう。
secrets
Freebaseはning, appjetの影響でconle this appボタンがついていて、ボタンを押すだけでほかのアプリを自分のところにコピーしてきて編集できるようになっています。でもそういう時に困るのが秘密にしておかないといけないAPI keyで、ningもappjetもそれぞれ秘密のAPI keyまでもがコピーされないようにする仕組みがありました。Freebaseではacre.keystoreというのを使って秘密のコピーされないデータにアクセスできるようになっています。
秘密のデータを設定するのはGUIからしかできません。
左上のアプリケーション名が書かれているボタンを押してWeb Servicesのタブを押すと設定できます。

雑感

appjetよりも自由度の高いHTTP requestが出せるので便利
cronはないっぽい
Content-Typeを設定しても反映されない text/plain固定なのかも

ちなみにこのacre本来はウェブ上のデータを持ってきて編集してfreebaseに格納するのに使うためのものみたいです。
まじめにつくればちゃんとしたウェブアプリも作れます。
]]></description>
			<content:encoded><![CDATA[<p>たぶん前(ちょうどappjetが潰れることになった後くらい)に焼き肉に行った時に<a href="http://d.hatena.ne.jp/koyachi">id:koyachi</a>か<a href="http://twitter.com/ucnv">ucnv</a>か<a href="http://d.hatena.ne.jp/swdyh">swdyh</a>か<a href="http://twitter.com/youpy">youpy</a>か誰かに<a href="http://www.freebase.com/">Freebase</a>でappjetと同じようにjavasriptのコードをサーバで実行できる、というのを教えてもらいました。</p>
<p>今日いじってみたらだいたいappjetみたいなかんじでjavascriptでコードを書いたら実行してくれます。必要な範囲でしかいじってないけどappjetより完成度は高い印象。はじめ使い方が全然わからなかったのでメモ。</p>
<h3>Getting Started</h3>
<p>はじめにFreebaseのアカウントを作ってログインしたら<a href="https://acre.freebase.com/">Freebase App Editor</a>にアクセス。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/10/acre.freebase.com.png" height="249" width="602" hspace="4" vspace="4" alt="Acre.Freebase.Com" class="border block" /></p>
<p>こういう画面が出てくるのでてきとうに名前をつける。<br />
そうするとコードが書けるようになるので(Greasemonkeyと相性が良くないみたいなので、この画面が出なかったらGreasemonkeyをoffにしてみてください)</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/10/editor.png" height="256" width="552" hspace="4" vspace="4" class="border block" /></p>
<p>デフォルトではPHPみたいなテンプレートエンジンモードになっていて、<code>script</code>で囲まないとjsのコードとして認識されないので<em>File</em>から<em>Acre type</em>を<em>Script</em>に変えましょう。そうするとベタにjsが書けます。</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/10/filetype.png" height="479" width="348" hspace="4" vspace="4" class="border block" /></p>
<p>設定を変えたら</p>
<pre><code>acre.write("hello")</code></pre>
<p>と書いて右上の<em>View with Console</em>を押せばhelloとだけ書かれたページが表示されます。</p>
<p>あとはHelpにAPI Referenceがあるのでそれを参考にコードを書きましょう。</p>
<h3>secrets</h3>
<p>Freebaseはning, appjetの影響で<em>conle this app</em>ボタンがついていて、ボタンを押すだけでほかのアプリを自分のところにコピーしてきて編集できるようになっています。でもそういう時に困るのが秘密にしておかないといけないAPI keyで、ningもappjetもそれぞれ秘密のAPI keyまでもがコピーされないようにする仕組みがありました。Freebaseでは<code>acre.keystore</code>というのを使って秘密のコピーされないデータにアクセスできるようになっています。<br />
秘密のデータを設定するのはGUIからしかできません。<br />
左上のアプリケーション名が書かれているボタンを押して<em>Web Services</em>のタブを押すと設定できます。<br />
<img src="http://ido.nu/kuma/wp-content/uploads/2009/10/secret.png" height="606" width="945" hspace="4" vspace="4" class="block" /></p>
<h3>雑感</h3>
<ul>
<li>appjetよりも自由度の高いHTTP requestが出せるので便利</li>
<li>cronはないっぽい</li>
<li><code>Content-Type</code>を設定しても反映されない <code>text/plain</code>固定なのかも</li>
</ul>
<p>ちなみにこのacre本来はウェブ上のデータを持ってきて編集してfreebaseに格納するのに使うためのものみたいです。<br />
まじめにつくればちゃんとしたウェブアプリも作れます。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/10/31/using-freebase-as-a-server-side-javascript-hosting-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chromeのねんどろいどテーマ</title>
		<link>http://ido.nu/kuma/2009/10/23/chrome-nendoroid-theme/</link>
		<comments>http://ido.nu/kuma/2009/10/23/chrome-nendoroid-theme/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 16:20:45 +0000</pubDate>
		<dc:creator>ku</dc:creator>
				<category><![CDATA[chrome]]></category>
		<category><![CDATA[log]]></category>

		<guid isPermaLink="false">http://ido.nu/kuma/?p=1716</guid>
		<description><![CDATA[joinだけしてあるのを思い出してtiarraから#chromiumのログを見てみたら
2009.10.01.txt:11:21:40 &#60;#chromium@freenode:aboodman&#62; w00t: http://dl.getdropbox.com/u/124107/success.png
2009.10.01.txt:11:22:03 &#60;#chromium@freenode:aboodman&#62; (first successful render of browser action badges)

というのを発見。
Greasemonkeyのはじめの開発者で今はchromeのextensionまわりの開発を担当しているAaronがiPhoneのアイコンみたいに数字がお手軽に表示できるAPIができたぜー、といってるんだけど

このテーマはなんだAaron!
Aaronはねんどろいど(わからなかったのでid:HolyGrailに聞いたら速攻で教えてもらえて解決した)のテーマを作ってchromiumに使ったりするキャラだったのか、そうかそうかいいひとそうなオーラを出しているうえにオタク?だなんてほんとうにいいやつじゃないかとおもいました。実際には自作じゃなくてGoogle Chrome テーマ ギャラリー: Good Smile Companyみたいだけどaaronさんいいひとそうです。先々週に結婚されてました。おめでとうございます。youngpup.net &#8211; Aaron Boodman&#8217;s personal blog
そんなAaronのextension API仕様に関する後悔。
2009.10.03.txt:05:56:35 &#60;#chromium@freenode:aboodman&#62; you need to pass a null for the first argument
2009.10.03.txt:05:56:37 &#60;#chromium@freenode:aboodman&#62; (our implementation of 'optional' is bad)
2009.10.03.txt:05:56:45 &#60;#chromium@freenode:aboodman&#62; you should have at least gotten an error

僕もそう思います。optionalなのは省略できるんだと思ってました。
もうひとつ。こっちはvideoタグがらみでx264とTheoraのコーデック品質比較画像。
2009.08.13.txt:2435:09:36:26 &#60;#chromium@freenode:Dopefish&#62; Simetrical: http://imk.cx/temppics/extra_x264.png -- [...]]]></description>
			<content:encoded><![CDATA[<p>joinだけしてあるのを思い出してtiarraから<em>#chromium</em>のログを見てみたら</p>
<pre>2009.10.01.txt:11:21:40 &lt;#chromium@freenode:aboodman&gt; w00t: <a href="http://dl.getdropbox.com/u/124107/success.png">http://dl.getdropbox.com/u/124107/success.png</a>
2009.10.01.txt:11:22:03 &lt;#chromium@freenode:aboodman&gt; (first successful render of browser action badges)
</pre>
<p>というのを発見。</p>
<p>Greasemonkeyのはじめの開発者で今はchromeのextensionまわりの開発を担当しているAaronがiPhoneのアイコンみたいに数字がお手軽に表示できるAPIができたぜー、といってるんだけど</p>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/10/success.png" height="82" width="190" hspace="4" vspace="4" class=" block" /></p>
<p>このテーマはなんだAaron!<br />
Aaronはねんどろいど(わからなかったので<a href="http://d.hatena.ne.jp/HolyGrail/">id:HolyGrail</a>に聞いたら速攻で教えてもらえて解決した)のテーマを作ってchromiumに使ったりするキャラだったのか、そうかそうかいいひとそうなオーラを出しているうえにオタク?だなんてほんとうにいいやつじゃないかとおもいました。実際には自作じゃなくて<a href="https://tools.google.com/chrome/intl/ja/themes/theme_at_goodsmileco.html">Google Chrome テーマ ギャラリー: Good Smile Company</a>みたいだけどaaronさんいいひとそうです。先々週に結婚されてました。おめでとうございます。<a href="http://blog.youngpup.net/2009/10/married-finally.html">youngpup.net &#8211; Aaron Boodman&#8217;s personal blog</a></p>
<p>そんなAaronのextension API仕様に関する後悔。</p>
<pre>2009.10.03.txt:05:56:35 &lt;#chromium@freenode:aboodman&gt; you need to pass a null for the first argument
2009.10.03.txt:05:56:37 &lt;#chromium@freenode:aboodman&gt; (our implementation of 'optional' is bad)
2009.10.03.txt:05:56:45 &lt;#chromium@freenode:aboodman&gt; you should have at least gotten an error
</pre>
<p>僕もそう思います。optionalなのは省略できるんだと思ってました。</p>
<p>もうひとつ。こっちは<code>video</code>タグがらみでx264とTheoraのコーデック品質比較画像。</p>
<pre>2009.08.13.txt:2435:09:36:26 &lt;#chromium@freenode:Dopefish&gt; Simetrical: <a href="http://imk.cx/temppics/extra_x264.png">http://imk.cx/temppics/extra_x264.png </a>-- <a href="http://imk.cx/temppics/extra_theora.png">http://imk.cx/temppics/extra_theora.png</a> -- the theora one was about 1400 - 1500 kbps higher in bitrate</pre>
<h4>X264</h4>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/10/extra_x264.png" height="480" width="640" hspace="4" vspace="4" alt="Extra X264" class="block" /></p>
<h4>theora</h4>
<p><img src="http://ido.nu/kuma/wp-content/uploads/2009/10/extra_theora.png" height="480" width="640" hspace="4" vspace="4" alt="Extra Theora" class="block" /><br />
theoraのほうがぼんやりしてるのにビットレートは高い、のはいいけどそのサンプルがなぜ東方永夜抄なのか!? よくしらないけどいったいどうやって手に入れたんでしょう。</p>
<p>日本はすごいんだということを知った<em>#chromium</em>でした。</p>
]]></content:encoded>
			<wfw:commentRss>http://ido.nu/kuma/2009/10/23/chrome-nendoroid-theme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
