<?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>OTCHY.NET</title>
	<atom:link href="http://www.otchy.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.otchy.net</link>
	<description>Otchy の技術ネタ。JavaScript 率と Twitter 率がやや高く、他にも PHP/Java/Perl などなど。共通点は Web。</description>
	<lastBuildDate>Wed, 25 Aug 2010 04:50:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Splitwit Ver 1.2.0 リリース。OAuth＋逆順投稿。</title>
		<link>http://www.otchy.net/20100825/splitwit-ver-120-release/</link>
		<comments>http://www.otchy.net/20100825/splitwit-ver-120-release/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 04:50:44 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1142</guid>
		<description><![CDATA[Splitwit の Ver 1.2.0 をリリースしました。
まず、TwitMgr に引き続き、OAuth 対応を果たしました。何とか、BASIC 認証の期限に間に合って良かったです。
また、要望の多かった逆順投稿につ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/splitwit/" target="_blank">Splitwit</a> の Ver 1.2.0 をリリースしました。</p>
<p>まず、<a href="/twitmgr/" target="_blank">TwitMgr</a> に引き続き、OAuth 対応を果たしました。何とか、BASIC 認証の期限に間に合って良かったです。<br />
また、要望の多かった逆順投稿について対応しました。</p>
<p>逆順投稿については、投稿者自身のプロフィールページで見たり、普通のフォロワーの TL 上では、上から順に読めるので読みやすくなる一方、TL の流量が多い人から見ると、途中で分断されてかえって読みにくくなる事がある諸刃の剣かとは思います。<br />
まあ、Splitwit の連続投稿に割り込まれるレベルで TL の流量が多いユーザは、そんなに多くないとは思うので、実用上問題になるケースは稀少でしょう。</p>
<p>それと、ヒントの表示の仕方を今風の味付けにしました。<br />
今後、機能追加をしていくと、ヒントの行数がかさんでくるかも？という考えがあって、事前にスペースを確保したというところです。</p>
<p>他にも追加機能の要望を頂いているので、実装方法について検討してみようと思います。<br />
まずは、OAuth 対応を間に合わせることが重要だったので、いったんリリースします。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100825/splitwit-ver-120-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript による OAuth 認証とそのセキュリティ</title>
		<link>http://www.otchy.net/20100816/oauth-with-javascript-and-security/</link>
		<comments>http://www.otchy.net/20100816/oauth-with-javascript-and-security/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 04:05:33 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1136</guid>
		<description><![CDATA[TwitMgr のバージョンアップを行いました。
OAuth 対応がメインではありますが、地味に日本語の表現を修正して、初見でもやれることが分かりやすくなっているかと思います。
BASIC 認証から、OAuth 認証へ変 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/twitmgr/" target="_blank">TwitMgr</a> のバージョンアップを行いました。<br />
OAuth 対応がメインではありますが、地味に日本語の表現を修正して、初見でもやれることが分かりやすくなっているかと思います。</p>
<p>BASIC 認証から、OAuth 認証へ変更するにあたっては、どうしても使い勝手が低下してしまうのは避けようがないところで、そこが残念ではあります。<br />
どうせ OAuth 認証にするならいっそ、サーバサイドをしっかり作り込めばユーザビリティの低下を最小限に抑えられるはずなのですが、元々 JavaScript だけで作られていたものを移植するとなると、ほぼ作り直しになってしまうので、現状で出来る唯一の手段としてはこんなところです。</p>
<p>というのは前置きでして、JavaScript による OAuth 認証について突っ込んで考えたので、以下本論。</p>
<p><a href="/javascript/twitter-api2/">TwitterAPI2.js</a> (というか実質は、<a href="/javascript/twit-api/">TwitAPI.js</a>) を使った OAuth 認証では、js ファイルを読み込むたびに、毎回必ず OAuth 認証の確認画面を表示する仕様としています。<br />
プロキシサーバで OAuth 認証を行う構成なので、やろうと思えば、初回アクセス時のみ確認を取る、という事も可能なのですが、そのようにしていないのにはセキュリティ上の理由があります。</p>
<p>TwitAPI.js では、同ライブラリで公式のプロキシサーバを用意していて、公式プロキシサーバに対して許可した OAuth 認証については、その情報がプロキシサーバ側に残ります。<br />
なので、毎回、認証画面を表示するようにしないと、あるアプリ A に対して許可したつもりの OAuth 認証が、他のアプリ B からも簡単に流用できてしまうのです。<br />
毎回許可を得る形であれば、他のアプリ B から無言でいきなり OAuth 認証が悪用されることは避けられます。</p>
<p>クッキーに保存した情報を組み合わせて認証することで、あるアプリ A (ドメイン a) に対して許可した認証を別のアプリ B (ドメイン b) から利用させないようにする実装も検討しましたが、TwitAPI.js の立場から、任意のアプリ A が信用できない以上、アプリ A に XSS があれば同じ事になってしまうので、クッキーを使った実装も見送りました。</p>
<p>Twitter API を JavaScript から利用可能にするための実装は、TwitAPI.js 以外にも見かけますが、そういったセキュリティ上の対応はどうなっているんでしょうかね？調べたことはないですが興味はあります。</p>
<p>JavaScript の場合、そのソースが、設定情報も含めて全て公開されてしまうので、OAuth 認証において本来であれば秘匿すべき情報 (Consumer secret とか最たるもの) を隠すのは困難です。というか、原理的に不可能です。</p>
<p>TwitAPI.js では、プロキシサーバを経由することで、TwitAPI.js 専用のハッシュを発行して Consumer secret を秘匿していますが、専用ハッシュが漏れた場合に備え、前述の「毎回認証画面」でセキュリティを保っているという形です。(専用ハッシュが漏れなくても、TwitAPI.js では共通プロキシを使用している時点で必須です。)<br />
JavaScript で簡単に OAuth を利用したいという要求と、セキュリティを担保するという要求は相反する点が多く、現状で考え得る落としどころはそこであろうという判断です。</p>
<p>JavaScript による OAuth 認証で、初回のみ認証画面が表示されるような実装のアプリがあった場合、原理的にその OAuth 認証は、他のアプリから悪用されうるのではないかと考えています。<br />
この点、もっとスマートに解決するやり方があれば、是非、識者の意見を伺いたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100816/oauth-with-javascript-and-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitAPI.js Ver 0.1.3 / TwitterAPI2.js Ver 2.0.1 公開</title>
		<link>http://www.otchy.net/20100814/twitapi-013-twitterapi2-201-had-released/</link>
		<comments>http://www.otchy.net/20100814/twitapi-013-twitterapi2-201-had-released/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 16:08:32 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1130</guid>
		<description><![CDATA[TwitAPI.js については、Ver 0.1.2 を公開したばかりでしたが、TwitterAPI2.js の Ver 2.0.1 に合わせてバージョンがあがりました。
ぶっちゃけていうと、TwitterAPI2.js [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/javascript/twit-api/">TwitAPI.js</a> については、Ver 0.1.2 を公開したばかりでしたが、<a href="/javascript/twitter-api2/">TwitterAPI2.js</a> の Ver 2.0.1 に合わせてバージョンがあがりました。</p>
<p>ぶっちゃけていうと、TwitterAPI2.js にいろいろとバグがあって使い物にならないケースがあったので慌ててアップしたという形です。<br />
バグ以外にも、既存の TwitterAPI.js でサポートしていながら、TwitAPI.js でサポートできていなかった機能も追加して、結果的に互換性が向上しています。</p>
<p>これでようやく、TwitMgr の OAuth 対応が完了しそうな感じです。<br />
こちらも近日公開予定。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100814/twitapi-013-twitterapi2-201-had-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitAPI.js Ver 0.1.2 公開</title>
		<link>http://www.otchy.net/20100813/twitapi-js-010-had-published-2/</link>
		<comments>http://www.otchy.net/20100813/twitapi-js-010-had-published-2/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 04:47:48 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1122</guid>
		<description><![CDATA[ずいぶん長い間放置してしまっていましたが、OAuth 認証対応版、Twitter API 用 JS ライブラリ、TwitAPI.js の Ver 0.1.2 を公開しました。
初回認証時に、サーバからのレスポンスが遅いと [...]]]></description>
			<content:encoded><![CDATA[<p>ずいぶん長い間放置してしまっていましたが、OAuth 認証対応版、Twitter API 用 JS ライブラリ、<a href="/javascript/twit-api/">TwitAPI.js</a> の Ver 0.1.2 を公開しました。</p>
<p>初回認証時に、サーバからのレスポンスが遅いと無反応になってしまう問題に対応するため、レスポンスが返るまでの間、waiting の表示を入れるようにしました。<br />
ローディング画像風の動くテキスト表示なんかも入れたので、ユーザビリティは向上したんじゃないかと思います。</p>
<p>そろそろ Twitter API の BASIC 認証も期限切れなので、このバージョンと <a href="/javascript/twitter-api2/">TwitterAPI2.js</a> を使って <a href="/twitmgr/" target="_blank">TwitMgr</a> と <a href="/splitwit/" target="_blank">Splitwit</a> の OAuth 対応もちゃちゃっと済ませたいところですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100813/twitapi-js-010-had-published-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript で手軽に OAuth、TwitterAPI2.js 公開</title>
		<link>http://www.otchy.net/20100617/twitter-api2-js-publishe/</link>
		<comments>http://www.otchy.net/20100617/twitter-api2-js-publishe/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 17:47:50 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1108</guid>
		<description><![CDATA[BASIC 認証で Twitter API を利用する TwitterAPI.js の後継ライブラリとして、OAuth 認証を行う TwitAPI.js はすでに公開済でしたが、後継ライブラリといってもインターフェースの [...]]]></description>
			<content:encoded><![CDATA[<p>BASIC 認証で Twitter API を利用する <a href="/javascript/twitter-api/">TwitterAPI.js</a> の後継ライブラリとして、OAuth 認証を行う <a href="/javascript/twit-api/">TwitAPI.js</a> はすでに公開済でしたが、後継ライブラリといってもインターフェースの互換が無く、TwitterAPI.js で作られたアプリケーションを OAuth 対応させるには一手間必要でした。</p>
<p>そこで、TwitAPI.js を従来と同じインターフェースで利用可能にするラッパを <a href="/javascript/twitter-api2/">TwitterAPI2.js</a> として公開しました。</p>
<p>元々 TwitterAPI.js を使っているアプリケーションであれば、読み込むライブラリを差し替えるだけで、従来と同じように使う事が出来ます。<br />
TwitMgr や Splitwit もこちらのライブラリに置き換え予定ですが、出来れば置き換え前に、TwitAPI.js に残った TODO を片づけたいですねー。</p>
<p>特に、認証用のポップアップの起動が遅いのはなんとかしたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100617/twitter-api2-js-publishe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitAPI.js Ver 0.1.0 公開</title>
		<link>http://www.otchy.net/20100612/twitapi-js-010-had-published/</link>
		<comments>http://www.otchy.net/20100612/twitapi-js-010-had-published/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 19:46:21 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1085</guid>
		<description><![CDATA[TwitterAPI.js の後継にあたる、OAuth 認証対応版、Twitter API 用 JS ライブラリ、TwitAPI.js を公開しました。
まだまだ荒削りなバージョンですが、とりあえず基本的な動作は可能にな [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/javascript/twitter-api/">TwitterAPI.js</a> の後継にあたる、OAuth 認証対応版、Twitter API 用 JS ライブラリ、<a href="/javascript/twit-api/">TwitAPI.js</a> を公開しました。</p>
<p>まだまだ荒削りなバージョンですが、とりあえず基本的な動作は可能になったので Ver 0.1.0 として公開です。<br />
当面は完成度の向上を行って、いずれは <a href="/twitmgr/" target="_blank">TwitMgr</a> と <a href="/splitwit/" target="_blank">Splitwit</a> を OAuth 化させていきたいですね。</p>
<p>TwitAPI.js はインターフェースを一から設計し直したので、旧版にあたる、TwitterAPI.js と互換がありません。<br />
そのあたりは専用のラッパを書く予定なので、そこがすんなりと実装できれば、TwitMgr と Splitwit もあっさりと対応完了するはずなんですけどね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100612/twitapi-js-010-had-published/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>選択反転すると画像が出てくるジェネレータ</title>
		<link>http://www.otchy.net/20100602/select-art/</link>
		<comments>http://www.otchy.net/20100602/select-art/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 10:56:53 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1072</guid>
		<description><![CDATA[【微18禁】 なにげないテキストに隠されたアート… &#8211; IDEA*IDEA ～ 百式管理人のライフハックブログ っていう記事で紹介されている選択反転で絵が出てくるのが面白かったので、勢いでジェネレータを作って [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ideaxidea.com/archives/2010/06/selection_art.html" target="_blank">【微18禁】 なにげないテキストに隠されたアート… &#8211; IDEA*IDEA ～ 百式管理人のライフハックブログ</a> っていう記事で紹介されている選択反転で絵が出てくるのが面白かったので、勢いでジェネレータを作ってみました。</p>
<p><del>中身のテキストが変えられないのでとりあえず暫定公開。</del></p>
<p><a href="/selectart/" target="_blank">Select Art &#8211; 選択反転すると画像が出てくるジェネレータ</a></p>
<p>【2010-06-03 追記】</p>
<ul>
<li>デザインを整えた</li>
<li>中身のテキストを変えられるようにした</li>
<li>タイトルも付けられるようにした</li>
<li>変換結果を保存出来るようにしてパーマリンクも作った</li>
</ul>
<p>というわけで完成！</p>
<p>【2010-06-04 追記】</p>
<ul>
<li>フォントサイズを可変にした (ver 1.0.1)</li>
<li>「人気のアート」欄付けた (ver 1.1.0)</li>
</ul>
<p>とりあえずこんなもんです。実装のアイディアは出し切りました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100602/select-art/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>これまでに読んだ技術書レビュー</title>
		<link>http://www.otchy.net/20100321/technology-books-review/</link>
		<comments>http://www.otchy.net/20100321/technology-books-review/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 21:46:25 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1043</guid>
		<description><![CDATA[大学に入学して IT に触れて以来これまで、多くの技術書を読んできました。
常時接続が当たり前になった現代、新しい知識を得るために何でもウェブで済ます事も可能ですが、体系的に新しいことを知るために書籍という媒体は未だ有効 [...]]]></description>
			<content:encoded><![CDATA[<p>大学に入学して IT に触れて以来これまで、多くの技術書を読んできました。<br />
常時接続が当たり前になった現代、新しい知識を得るために何でもウェブで済ます事も可能ですが、体系的に新しいことを知るために書籍という媒体は未だ有効です。</p>
<p>やはり最初に何かを学ぶ時は、書籍を使うのが一番早いと思います。<br />
そこで、後述の理由もあって、これまでに読んだ技術書の書評を作りました。<br />
だいぶ古い本も含まれているので、その後改版されていないかも調べた上で、一覧にしてあります。</p>
<p>改版「あり」となっている本は、古い内容を元にしたレビューですので、その点割り引いて読んで欲しいです。書籍タイトルのリンク先は amazon の最新版です。<br />
とはいえ今回、書評を書くにあたって、パラパラとめくってみましたが、普遍的な内容は今もまだ色褪せないですね。</p>
<h4>レビュー</h4>
<table class="list500" id="list">
<tr>
<th>タイトル</th>
<th>カテゴリ</th>
<th>コメント</th>
<th>改版</th>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4797305703/otchy" target="_blank">新 C++ 入門</a></td>
<td>C++</td>
<td>★★☆<br />いわゆる入門本。プログラミング初心者でも読める。独習 C++ が既読だったので、自分で買う本としてチョイス。可もなく不可もない。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/475611895X/otchy" target="_blank">プログラミング言語 C++ 第3版</a></td>
<td>C++</td>
<td>★★★<br />C++ の全てが書いてあると言っても過言ではない。いわば C++ の仕様書。難しくて分厚いので、初心者にはお勧め出来ないが、ある程度 C++ を理解した後なら、言語仕様のみならず、プログラミングとは、オブジェクト指向とは、といったトピックについて、1段とばしで駆け上がることが出来る名著。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4881357786/otchy" target="_blank">STL標準講座</a></td>
<td>C++</td>
<td>★★★<br />最近の C++ 事情は知らないのだけど、今もまだ STL って有用だ…よね？であれば、知っとけ。という内容。STL を知ったら、STL 以前の C++ には戻れなくなるはず。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4875938616/otchy" target="_blank">Direct3Dプログラミング入門</a></td>
<td>C++</td>
<td rowspan="2">★☆☆<br />DirextX7 時代の本。さすがに今はもうどうかと。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4875936443/otchy" target="_blank">DirectX 実践プログラミング</a></td>
<td>C++</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4798117153/otchy" target="_blank">独習Java</a></td>
<td>Java</td>
<td>★★☆<br />Java 初学者向け。もちろん、プログラミング初心者でも読める。手持ちの本は版が古いせいか、Vector とか Hashtable とか、臆することなく使うので、他の情報で補足した方がよい。</td>
<td>あり</td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4774115789/otchy" target="_blank">JavaAPI 実用リファレンス Vol.1</a></td>
<td>Java</td>
<td rowspan="4">★★☆<br />元々他言語を使っていて、これから Java を始める人にお勧めしたい。標準 API で概ね何が出来るかが網羅されている。ざっと目を通して何があるのか把握したら、後は辞書的に使える。言ってみれば紙の JavaDoc だけど、サンプルソースと大きなクラス図がついているのが嬉しい。JDK 1.4 が対象なので星1つマイナス。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/477411717X/otchy" target="_blank">JavaAPI 実用リファレンス Vol.2</a></td>
<td>Java</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4774118265/otchy" target="_blank">JavaAPI 実用リファレンス Vol.3</a></td>
<td>Java</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/477412026X/otchy" target="_blank">JavaAPI 実用リファレンス Vol.4</a></td>
<td>Java</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4797324120/otchy" target="_blank">サーブレット/JSP プログラミングテクニック</a></td>
<td>Java</td>
<td>★★☆<br />Java におけるウェブ開発の土台となっている技術。最近は、高機能なフレームワーク上での開発が主流となって、ある意味不要な知識なので、星1つマイナス。そりゃもちろん知っておいた方がいいと思うが、「サーブレットも知らずにフレームワークを語るな」「C も知らずに Java を(ry」「アセンブラも知らずに C を(ry」以下ループ、という意味で、あんまり言うと老害。</td>
<td>あり</td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4797331623/otchy" target="_blank">Java 言語で学ぶデザインパターン入門</a></td>
<td>Java</td>
<td>★★★<br />デザパタはいきなりそれだけ覚えようと思っても、覚えられるようなものではない。色んな API を見て、色んなライブラリを触って、それからこの本を読むと、妙に納得感が高いはず。あの API のロジックにはこういう名前が付いていたのか！という感じ。</td>
<td>あり</td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/489471499X/otchy" target="_blank">Effective Java</a></td>
<td>Java</td>
<td>★★★<br />難しくてためになり、時に (いい意味で) 変態的。一通りの Java を理解したら、その先の落とし穴にはまらないために知っておきたい知識が色々と。</td>
<td>あり</td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4894714027/otchy" target="_blank">PHP パーフェクトリファレンス</a></td>
<td>PHP</td>
<td>★☆☆<br />言ってみれば辞書代わりだけれども、今時はウェブを使うから要らないか。ただ、ぱらぱらと眺めていると、苦労したあの処理が実は 1 行で出来たのか！みたいなことがある。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4861670012/otchy" target="_blank">PHP 実践のツボ セキュアプログラミング編</a></td>
<td>PHP</td>
<td>★★☆<br />前半には特筆すべき部分はないけれど、後半のセキュリティを扱った部分は、これだから PHPer は…と言われないためには知っておきたいセキュリティの基本知識。最低限このくらいは、という水準だが、それすら出来ていない人が多いのは悲しい事実。セキュリティに関しては、他の言語でも通用する内容が多い。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4798005754/otchy" target="_blank">今日から使える PHP 4 サンプル集</a></td>
<td>PHP</td>
<td>★☆☆<br />あくまで PHP 4 なので、全面的に支持出来ないけれども、具体的なサンプルが羅列されているので、スニペット集として捉えてちょっとここだけ拝借。みたいな使い方はあり。</td>
<td>あり</td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4879669512/otchy" target="_blank">CGI レスキュー実践 Perlプログラミング</a></td>
<td>Perl</td>
<td rowspan="2">★☆☆<br />だいぶ古い Perl の本。もちろん全て今でも使えるが、今から Perl をやるならモダンな Perl を身につけるべし。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4816322817/otchy" target="_blank">実用UNIX Perlハンドブック</a></td>
<td>Perl</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4900900214/otchy" target="_blank">Perl 5 デスクトップ リファレンス</a></td>
<td>Perl</td>
<td>★★☆<br />Perl をコマンドラインツールとか、シェルスクリプトとして使うなら、1冊置いておくと便利に使える。超薄い。今で言うところのチートシートの趣。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4798105600/otchy" target="_blank">かんたん UML</a></td>
<td>開発工程</td>
<td>★★☆<br />UML の初歩の初歩について解説されている。…が、中小の開発会社とかであれば、UML についてはここで解説されている程度の知識で十分なのでは。</td>
<td>あり</td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4822207773/otchy" target="_blank">SEを極める50の鉄則</a></td>
<td>開発工程</td>
<td>★★☆<br />日本における開発工程ではプログラマの上位職とされている SE の話。あくまで日本における…の話ではあるが、日本の普通の開発会社で普通に開発をしていくなら知っておきたい知識。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4822290026/otchy" target="_blank">ソフトウェア開発201の鉄則</a></td>
<td>開発工程</td>
<td>★★☆<br />プログラミングにおける格言集という感じ。従って、案外当たり前の事が書いてあるけれども、納期が迫ってくると、ついついね…。という自戒を込めて読みたい。仕事としてプログラミングをしないならそこまで重要ではない事が多いけれども、初めてそういうプログラミングをするなら、むしろ先に読むのが吉。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4798116262/otchy" target="_blank">ヤフー！グーグル SEO 対策テクニック</a></td>
<td>その他</td>
<td>★★☆<br />SEO の世界は、日進月歩 (正確に言えば検索エンジンの進化が日進月歩) なので、今も全てが通用するとは限らないが、普遍的な SEO について正しく触れられている良書。巷に溢れるエセ SEO に騙されないためにも知っておきたい知識。ちゃんと改版されていた。</td>
<td>あり</td>
</tr>
<tr>
<td>Illustrator 8.0J ポケットリファレンス</td>
<td>その他</td>
<td rowspan="2">★☆☆<br />フォトショとイラレのキーボードショートカットを覚えると、作業が超早くなるよ。っていう事に気づいた本。それだけだったり。</td>
<td></td>
</tr>
<tr>
<td>Photoshop 5.0J ポケットリファレンス</td>
<td>その他</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/484431548X/otchy" target="_blank">エキスパートから学ぶ XML 実践プログラミング</a></td>
<td>その他</td>
<td>★★★<br />XML について知識が曖昧だな、ちゃんと理解した上で使った方がいいと思うんだけど…。という人にお勧め。XML の基本から始まり、XML を正しく理解出来るようになる。実際に XML を読み書きする時に遭遇するエラーとかも読み解ける知識が身に付く。</td>
<td></td>
</tr>
<tr>
<td><a href="http://amz.ly/jp/4873111021/otchy" target="_blank">実践 PostgreSQL</a></td>
<td>その他</td>
<td>★★☆<br />PostgreSQL にフォーカスしている本ながら、PostgreSQL は標準 SQL への準拠率が高いので、そのまま SQL を学ぶための本として通用する。対象としている PostgreSQL のバージョンが 7 系で古いので、星1つマイナス。SQL 初心者にとっては、今も色あせない知識がほとんどなので、辞書代わりにも使える。</td>
<td></td>
</tr>
</table>
<h4>そもそも何でこんなエントリを書いたかというと…</h4>
<p>いま、自宅の机の周りをかなり根本的に片づけていて、もう読まなくなった技術書がたくさん出てきました。<br />
「片づけること＝捨てること」なので、どっさり捨ててしまおうかとも思ったのですが、全部買ったら結構な額になるのでそれももったいない。<br />
それで色々考えた挙げ句、お世話になった大学のサークル (<a href="http://www.ed.kagu.tus.ac.jp/~tbn/" target="_blank">神楽坂一丁目通信局</a>) に寄付してみるのはどうかと思い立ちました。</p>
<p>とはいえ、正直に言ってだいぶ古い本も含まれます。<br />
自分が後輩の立場なら、「ゴミ捨てにくんなよ！」って思うような本も混ざってそうです。<br />
なので、このリストの中から必要なものだけ選んでもらえればいいかなと思います。<br />
残念ながら選ばれなかった本には、古本としての価値もなさそうですし、天寿を全うしてもらいましょう。</p>
<p><script>
$(function(){
  $('#list').tablefix({height: 600, fixRows: 1, fixCols: 1});
});
</script></p>
<p><a href="/wp-content/uploads/2010/03/books1.jpg"><img src="/wp-content/uploads/2010/03/books1-300x225.jpg" alt="books1" title="books1" width="300" height="225" class="aligncenter size-medium wp-image-1057" /></a><br />
<a href="/wp-content/uploads/2010/03/books2.jpg"><img src="/wp-content/uploads/2010/03/books2-300x225.jpg" alt="books2" title="books2" width="300" height="225" class="aligncenter size-medium wp-image-1058" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100321/technology-books-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>テーブルのヘッダを固定してスクロールする jQuery プラグイン</title>
		<link>http://www.otchy.net/20100308/jquery-tablefix-js-had-released/</link>
		<comments>http://www.otchy.net/20100308/jquery-tablefix-js-had-released/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 21:44:47 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=1004</guid>
		<description><![CDATA[Excel のウィンドウ枠の固定のように、テーブルのヘッダや左側を固定して、残りの部分をスクロールさせるための jQuery プラグインを書きました。
マークアップはシンプルで、普通にテーブルを書いたら、jQuery の [...]]]></description>
			<content:encoded><![CDATA[<p>Excel のウィンドウ枠の固定のように、テーブルのヘッダや左側を固定して、残りの部分をスクロールさせるための jQuery プラグインを書きました。<br />
マークアップはシンプルで、普通にテーブルを書いたら、jQuery の作法でプラグインを呼び出すだけです。</p>
<p>jQuery のおれおれプラグインはいくつか書いた事がありましたが、こうやって公開するのは初めてです。ごてごての機能が欲しいんじゃなくて、単に既存のテーブルを固定スクロール化したいだけの時に、いいのが見つからなくて書いたので、けっこうニーズがあるんじゃないかと思ってます。</p>
<p>下記は簡単なサンプルです。詳細は<a href="/javascript/tablefix/">専用ページ</a>を見てみて下さい。</p>
<p>HTML</p>
<pre class="height_middle">
&lt;table id=&quot;tablefix&quot;&gt;
    &lt;thead&gt;
    &lt;tr&gt;
        &lt;th rowspan=&quot;2&quot;&gt;ヘッダA&lt;/th&gt;
        &lt;th rowspan=&quot;2&quot;&gt;ヘッダB&lt;/th&gt;
        &lt;th colspan=&quot;2&quot;&gt;ヘッダC&lt;/th&gt;
        &lt;th rowspan=&quot;2&quot;&gt;ヘッダD&lt;/th&gt;
        &lt;th rowspan=&quot;2&quot;&gt;ヘッダE&lt;/th&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;th&gt;ヘッダ C-1&lt;/th&gt;
        &lt;th&gt;ヘッダ C-2&lt;/th&gt;
    &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
        &lt;td&gt;データデータデータデータデータデータデータデータデータデータデータデータ&lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
</pre>
<p>JavaScript</p>
<pre>
$(function() {
    $('#tablefix').tablefix({width: 500, height: 200, fixRows: 2, fixCols: 2});
});
</pre>
<p>実行結果</p>
<style>
#tablefix {
    width: 800px;
    border-collapse: collapse;
    border-spacing: 0;
}
#tablefix thead th {
    background-color: #333;
    color: #fff;
    text-align: center;
    vertical-align: middle;
    white-space: nowrap;
}
</style>
<table id="tablefix">
<thead>
<tr>
<th rowspan="2">ヘッダA</th>
<th rowspan="2">ヘッダB</th>
<th colspan="2">ヘッダC</th>
<th rowspan="2">ヘッダD</th>
<th rowspan="2">ヘッダE</th>
</tr>
<tr>
<th>ヘッダ C-1</th>
<th>ヘッダ C-2</th>
</tr>
</thead>
<tbody>
<tr>
<td>データ</td>
<td>データ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
</tr>
<tr>
<td>データ</td>
<td>データ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
</tr>
<tr>
<td>データ</td>
<td>データ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
</tr>
<tr>
<td>データ</td>
<td>データ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
</tr>
<tr>
<td>データ</td>
<td>データ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
<td>データデータデータデータデータデータデータデータデータデータデータデータ</td>
</tr>
</tbody>
</table>
<p><script src="/js/jquery.tablefix.js"></script><br />
<script>
$(function() {
    $('#tablefix').tablefix({width: 500, height: 200, fixRows: 2, fixCols: 2});
});
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100308/jquery-tablefix-js-had-released/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Zen Coding の Perl 実装書きました</title>
		<link>http://www.otchy.net/20100225/zen-coding-for-perl/</link>
		<comments>http://www.otchy.net/20100225/zen-coding-for-perl/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 13:32:31 +0000</pubDate>
		<dc:creator>Otchy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[zen-coding]]></category>

		<guid isPermaLink="false">http://www.otchy.net/?p=999</guid>
		<description><![CDATA[今、最高にアツい Zen Coding (ソースは自分) の Perl 実装を書きました。
これがあれば、(今すぐではありませんが) 手に馴染んだ任意のエディタ全てで、Zen Coding を使用することが出来るようにな [...]]]></description>
			<content:encoded><![CDATA[<p>今、最高にアツい Zen Coding (ソースは自分) の Perl 実装を書きました。<br />
これがあれば、(今すぐではありませんが) 手に馴染んだ任意のエディタ全てで、Zen Coding を使用することが出来るようになります。<br />
何故かって…？</p>
<p>その種明かしはちょっと後に回しておいて、とりあえずどんなことが出来るモジュールなのかを紹介します。</p>
<p>こうやって実行すると…</p>
<pre>
use SSSCoding;

print SSSCoding::expand('div') . "\n";
print SSSCoding::expand('a') . "\n";
print SSSCoding::expand('a:mail') . "\n";
print SSSCoding::expand('div#id.class1.class2') . "\n";
print SSSCoding::expand('#head+#body+#foot') . "\n";
print SSSCoding::expand('div#id&gt;ul&gt;li') . "\n";
print SSSCoding::expand('ul&gt;li#id$*5') . "\n";
</pre>
<p>こう出力されます！</p>
<pre>
&lt;div&gt;&lt;/div&gt;
&lt;a href=""&gt;&lt;/a&gt;
&lt;a href="mailto:"&gt;&lt;/a&gt;
&lt;div id="id" class="class1 class2"&gt;&lt;/div&gt;
&lt;div id="head"&gt;&lt;/div&gt;&lt;div id="body"&gt;&lt;/div&gt;&lt;div id="foot"&gt;&lt;/div&gt;
&lt;div id="id"&gt;&lt;ul&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;ul&gt;&lt;li id="id1"&gt;&lt;/li&gt;&lt;li id="id2"&gt;&lt;/li&gt;&lt;li id="id3"&gt;&lt;/li&gt;&lt;li id="id4"&gt;&lt;/li&gt;&lt;li id="id5"&gt;&lt;/li&gt;&lt;/ul&gt;
</pre>
<p>本来の Zen Coding には色々な機能がありますが、とりあえず CSS っぽい記述を HTML に展開する機能のみ実装しています。<br />
というか、自分が使いたいのがそこだけなので。</p>
<p>サポートしている識別子は、id を指定する &#8220;#&#8221;、class を指定する &#8220;.&#8221;、繰り返しを指定する &#8220;*&#8221;、繰り返し回数を出力する &#8220;$&#8221;、子エレメントを指定する &#8220;>&#8221;、兄弟エレメントを指定する &#8220;+&#8221; です。<br />
評価順を指定する &#8220;()&#8221; については実装が面倒だったので未サポートです。書くと変な感じになります。<br />
後述の目的のため、改行などを入れて整形する機能もないので、&#8221;()&#8221; を使うほど大袈裟な利用はしないだろう、という目論見でもあります。<br />
今後使ってみて、必要を感じたら実装するかも知れません。</p>
<p>また、文法エラーのチェックはしていないため、誤った文法を渡すとメチャクチャな結果になりますが、そこは了承の上で使って下さい。</p>
<h4>任意のエディタで Zen Coding を使う</h4>
<p>さあ、ここが本来の目的です。<br />
種明かしをすると、この Perl モジュールを使って、<a href="http://www.atok.com/useful/developer/api/plugin.html" target="_blank">ATOK のプラグイン</a>を作ればいいのです。<br />
そうすれば、任意のエディタで Zen Coding が利用可能になりますね。</p>
<p>br とか a とか頻繁に使うタグを、辞書登録したことがある人は多いんじゃないでしょうか？<br />
それを動的に行う、超強力版といったイメージです。</p>
<p>もちろんエディタのみならず、ブラウザのテキストエリアでも使えるので、ブログを書く時とか便利かも知れません。<br />
その気になれば、Word でだって Excel でだって利用可能です。</p>
<p>そんなわけで、最終目的は ATOK プラグイン化なのですが、実はまだ出来ていません。<br />
とりあえず Perl 単体で動く状態になったので公開しようと思った次第です。<br />
プラグイン化が完了したらまたアップしたいと思います。</p>
<p>まだ ATOK 16 を使っていてプラグインが使えないので、まずは ATOK のバージョンを上げないと…。</p>
<h4>ダウンロード</h4>
<p><a href="/pm/SSSCoding.pm">SSSCoding.pm</a></p>
<h4>ライセンス</h4>
<p>ライセンスは <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT License</a> (<a href="http://ja.wikipedia.org/wiki/MIT_License" target="_blank">日本版 wikipedia の項</a>) で公開します。</p>
<h4>その他</h4>
<p>Perl で実装しているので CGI にもしやすいかと思います。ウェブサービスを作ってみてもいいですね。<br />
あるいは PHP とか、他の言語への移植も簡単では無いでしょうか。ニーズはさておき。</p>
<p>SSSCoding.pm の中で、閉じタグを使わないエレメントは、%SSSCoding::SINGLES で、各エレメントに追加する属性については、%SSSCoding::ATTRS で定義されています。<br />
必要に応じて修正して使って下さい。</p>
<h4>モジュール名について</h4>
<p>Zen Coding を名乗るには実装が中途半端ですし、名前がぶつかって何らか問題になるのも嫌だったので、モジュール名自体は全く別の名前にしました。<br />
&#8220;Style Sheet&#8221; Style Coding の略で、SSSCoding としています。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.otchy.net/20100225/zen-coding-for-perl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
