<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>Webシステム開発の株式会社フラッツ &#187; FLATzブログ</title>
	<atom:link href="http://www.flatz.jp/archives/category/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.flatz.jp</link>
	<description>フラッツはWebシステム開発専門の会社です。お客様のお悩み・ご要望に沿ったWebシステム開発プランをご提案いたします。お気軽にご相談ください。</description>
	<lastBuildDate>Tue, 27 Jul 2010 09:04:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/category/blog/feed" />
		<item>
		<title>5月の旨いものの会報告！</title>
		<link>http://www.flatz.jp/archives/3176</link>
		<comments>http://www.flatz.jp/archives/3176#comments</comments>
		<pubDate>Fri, 04 Jun 2010 07:26:35 +0000</pubDate>
		<dc:creator>taniguchi</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[旨いもの]]></category>
		<category><![CDATA[旨いものの会]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=3176</guid>
		<description><![CDATA[谷口です。

5月も恒例の旨いものの会を開催いたしました。
今月は社内（SINAPオフィス内）での開催で、お取り寄せで注文した品々や近くのお店で買ったものを美味しくいただきました！]]></description>
			<content:encoded><![CDATA[<p>
</p><p>谷口です。</p>
<br />
<p>5月も恒例の旨いものの会を開催いたしました。<br />
今月は社内（SINAPオフィス内）での開催で、お取り寄せで注文した品々や近くのお店で買ったものを美味しくいただきました！</p>
<br />
<p><a href="http://www.flatz.jp/wp-content/uploads/2010/05/c55f6edcf3c99bae99a0a7feaa6cd2b1.jpg"><img src="http://www.flatz.jp/wp-content/uploads/2010/05/c55f6edcf3c99bae99a0a7feaa6cd2b1-300x200.jpg" alt="うなぎちまきと惣菜" title="うなぎちまきと惣菜" width="300" height="200" class="alignleft size-medium wp-image-3178" /></a></p>
<br />
<div>&nbsp;</div>
<br />
<p><a href="http://www.flatz.jp/wp-content/uploads/2010/05/c5f9594c3fd8f0319824d6d47205ce43.jpg"><img src="http://www.flatz.jp/wp-content/uploads/2010/05/c5f9594c3fd8f0319824d6d47205ce43-300x200.jpg" alt="惣菜２" title="惣菜２" width="300" height="200" class="alignleft size-medium wp-image-3179" /></a></p>
<br />
<div>&nbsp;</div>
<br />
<p><a href="http://www.flatz.jp/wp-content/uploads/2010/05/7f7ad697c2f352f69d58cefee0cdfcd4.jpg"><img src="http://www.flatz.jp/wp-content/uploads/2010/05/7f7ad697c2f352f69d58cefee0cdfcd4-300x200.jpg" alt="はらロール白巻き" title="はらロール白巻き" width="300" height="200" class="alignleft size-medium wp-image-3180" /></a></p>
<br />
<p>今回取り寄せた料理はそれぞれ以下の通りです。</p>
<br />
<h3>うなぎのちまき</h3>
<br />
<ul>
    <li>四万十屋</li>
    <li><a href="http://www.shimantoya.com/">http://www.shimantoya.com/</a></li>
</ul>
<br />
<p>今回のメインの料理です！･･･が量が少なかったかな･･･？<br />
左の画像の手前ブルーの皿に盛られているのがうなぎのちまきです。<br />
たれとうなぎともち米のハーモニー、とても美味しかったです！</p>
<br />
<h3>惣菜いろいろ</h3>
<br />
<ul>
    <li>明惣（【みょうそう】と読みます）</li>
    <li><a href="http://mart.gnavi.co.jp/myousou_biz/">http://mart.gnavi.co.jp/myousou_biz/</a></li>
</ul>
<br />
<p>こちらは和惣菜を多く取り扱っているお店で、季節ごとに目玉商品が変わるようです。（今回はほたるいか系のお料理でした。）<br />
思っていたより量があって非常に満足でした！</p>
<br />
<p>ちなみに、取り寄せた惣菜は以下。</p>
<br />
<ul>
    <li>切干大根煮（中画像手前の角皿）</li>
    <li>鶏肉と大根の旨煮（中画像左側の丸皿）</li>
    <li>牛肉と糸こんにゃくの炒め煮（中画像右側の丸皿）</li>
    <li>こんにゃくのピリ辛炒め（上画像白い角皿の1番左）</li>
    <li>ほたるいか甘露煮（上画像白い角皿の左から3番目）</li>
    <li>ほたるいか沖漬け</li>
    <li>ほたるいか甘酢漬け</li>
    <li>【サービス品】滑川産小アジの南蛮漬け（上画像白い角皿の左から2番目）</li>
</ul>
<br />
<h3>その他近所モノ</h3>
<br />
<ul>
    <li>カツサンド（まい泉）</li>
    <li>焼き鳥（鳥武）</li>
    <li>サラダ（R1/F）</li>
</ul>
<br />
<p>定番的な。</p>
<br />
<h3>すいーつ</h3>
<br />
<ul>
    <li>白巻き（はらロール）（下画像）</li>
</ul>
<br />
<p>これまた定番的な。</p>
<br />
<h3>終わりに</h3>
<br />
<p>参加してくださった方々ありがとうございました！<br />
私個人はとても楽しかったです。（途中仕事で抜けたりしましたけど･･･）<br />
次回もまた是非ご参加ください！</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=3176&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/3176/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/3176" />
	</item>
		<item>
		<title>モテるアルゴリズム講座　 第2回 Skip Graphでモテたい</title>
		<link>http://www.flatz.jp/archives/3092</link>
		<comments>http://www.flatz.jp/archives/3092#comments</comments>
		<pubDate>Fri, 30 Apr 2010 08:25:57 +0000</pubDate>
		<dc:creator>amakata</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[アルゴリズム]]></category>
		<category><![CDATA[技術情報]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=3092</guid>
		<description><![CDATA[
天方です。

それでは、アルゴリズム講座第2回をはじめたいと思います。

おかげさまで、前回の講座では、公開後、たくさんの知り合いの方から声をかけていただきました。

やはりアルゴリズムがモテるということを実感した第1 [...]]]></description>
			<content:encoded><![CDATA[<p>
</p><p>天方です。</p>
<br />
<p>それでは、アルゴリズム講座第2回をはじめたいと思います。</p>
<br />
<p>おかげさまで、前回の講座では、公開後、たくさんの知り合いの方から声をかけていただきました。</p>
<br />
<p><strong>やはりアルゴリズムがモテるということを実感した第1回講座でした。</strong></p>
<br />
<p>さて、今日は、Google App Engine(GAE)で利用を検討したアルゴリズムについて紹介したいと思います。</p>
<br />
<p>GAEでは、プログラムをする際に、クラウドの特性を意識する必要があるのですが、それは、アルゴリズム、特に並列アルゴリズムの知識を生かすには非常によい環境ともいえます。</p>
<br />
<p><strong>はっきりいいます。GAEでアルゴリズムができるとモテます。</strong></p>
<br />
<p>この講座を通じて少しでも皆様にモテをおすそ分けできたらと思います。</p>
<br />
<p>さて、本日も前回と同様、アルゴリズムとデータ構造に着目しています。</p>
<br />
<p>GAEでは、データを格納するストレージとしてRDBMSを使う代わりにBigTableという分散Key-Value Storeを使っています。</p>
<br />
<p>この分散Key-Value Storeは、クラウド環境で性能をスケールさせるためには非常によいデータの格納方法なのですが、RDBMSのようなリレーションを使った機能がないという問題があります。</p>
<br />
<p>やはり性能をスケールさせることを中心に考えているからですが、その分、プログラマーの方が余裕をもって、しっかりマメにケアしてあげることが必要になってきます。<strong>余裕のあるマメな男がモテるのと同様です。</strong></p>
<br />
<p>例えば、データは複数のコンピュータにまたがって保持されているため、RDBMSのようにソートなどを効率的に行うことができません。</p>
<br />
<p>ではどうするのかというと、事前にソートした結果を持っておき、ソート結果を使いたいときは、その結果のデータを見ればいいのです。GAEのDatastoreではそういったソート機能があります。</p>
<br />
<p>今回は、Datastoreのソート機能そのものではありませんが、そういった分散環境で使えるかもしれないSkip Graphというソートアリゴリズムについて紹介したいと思います。</p>
<br />
<p>Skip Graphを理解するには、そのより単純なバージョンであるSkip Listについて考えるとわかりやすいです。</p>
<br />
<p>SkipListのデータ構造は以下のようになっています。</p>
<br />
<div id="attachment_3119" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.flatz.jp/wp-content/uploads/2010/04/fig1.png"><img class="size-medium wp-image-3119" title="Ｓｋｉｐ Listのデータ構造" src="http://www.flatz.jp/wp-content/uploads/2010/04/fig1-300x151.png" alt="" width="300" height="151" /></a><p class="wp-caption-text">Ｓｋｉｐ Listのデータ構造</p></div><br />
<br />
<p>ところで、この図を見て何かに似ていると思いませんか？</p>
<br />
<p>お気づきの方もいるでしょう。普通と急行がある電車の路線図に似ています。</p>
<br />
<p>Skip Listはまさに、この電車の乗り換えのアナロジーで考えられます。</p>
<br />
<p>電車でどこかに行きたいなら、まず急行などの途中の駅を飛ばす列車に乗り、近くの駅まで来たら普通列車に乗って目的の駅に行けば、停車時間が短縮でき早くつくのです。<strong>デートの約束の時間に遅れずにつくのもモテる男としては当然ですよね。</strong></p>
<br />
<p>Skip Listの図の例だとlevel2のレベルで自分の移動したいノードの近くまで、リンクをたどり、近くまできたら次にlevel1におりてリンクをたどり、最後にlevel0で目的とするノードにたどり着けばいいということです。</p>
<br />
<p><a href="http://www.flatz.jp/wp-content/uploads/2010/04/fig2.png"><img class="aligncenter size-medium wp-image-3120" title="Skip Listでの値の検索方法" src="http://www.flatz.jp/wp-content/uploads/2010/04/fig2-300x151.png" alt="Skip Listでの値の検索方法" width="300" height="151" /></a></p>
<br />
<p>電車と同じようにSkip Listでも、上のレベルのリンクを利用することで、高速に、ソート済みのデータを検索したり、項目を追加したりできます。</p>
<br />
<p><strong>と、こんなアナロジーで、新入社員にSkipListの説明をしてあげたら、この先輩の説明はクールだなとモテまくります。</strong></p>
<br />
<p>この図のSkip Listのデータ構造を数式で表すと</p>
<br />
<p>ソートする値の集合<img src="http://www.flatz.jp/wp-content/cache/tex_8d9c307cb7f3c4a32822a51922d1ceaa.gif" class="tex" alt="N" />とした場合、</p>
<br />
<p><img src="http://www.flatz.jp/wp-content/cache/tex_d7e0e7d16ac0a12a2658a1f5a988ac77.gif" class="tex" alt="N=&#123;n_1,n_2,n_3,n_4,n_5,n_6&#125;" /></p>
<br />
<p>のように表現できます。</p>
<br />
<p>ここではデータ構造を説明するために<img src="http://www.flatz.jp/wp-content/cache/tex_7b8b965ad4bca0e41ab51de7b31363a1.gif" class="tex" alt="n" />は便宜上左から右に大きくなっていくものとします。</p>
<br />
<p><img src="http://www.flatz.jp/wp-content/cache/tex_f05763b3051da6c097d9acd40e1c8144.gif" class="tex" alt="n_x &lt;= n_{x+1}" /></p>
<br />
<p>Skip Listでは、例えば、以下のようなデータ構造で、この値を表現します。</p>
<br />
<p>この図では、各ソートする値<img src="http://www.flatz.jp/wp-content/cache/tex_584a81dbf5bf6aa737ba43567ad6307b.gif" class="tex" alt="n_i" />をノード、レベル<img src="http://www.flatz.jp/wp-content/cache/tex_2db95e8e1a9267b7a1188556b2013b33.gif" class="tex" alt="l" />として、右側へのリンクリストを<img src="http://www.flatz.jp/wp-content/cache/tex_ec2bf34f65c5049318445e345e007a22.gif" class="tex" alt="a_{R_{ln_i}}" />、左側へのリンクリスト<img src="http://www.flatz.jp/wp-content/cache/tex_ab92e81da8cc36ae8496ad65af65e47e.gif" class="tex" alt="a_{L_{ln_i}}" />があります。</p>
<br />
<p>リンクリストは、下からレベル0, 1, 2のようにレベルがあり、レベル0では、大小関係が維持されたまま、隣同士のノードで双方向にリンクされています。</p>
<br />
<p>レベルが上がるほど、途中のノードを飛ばしてリンクされています。</p>
<br />
<p>この状態で、Skip Listはソートがされている状態であると言えます。</p>
<br />
<p>もし、昇順にデータがほしいなら、左の端から、Level0のリンクをたどってノードを見ていけば、ソートされている結果が得られます。</p>
<br />
<p>つまり、このデータ構造を作ることができれば、ソートはされているということになります。</p>
<br />
<p>このデータ構造をどのように作るかはひとまず置いておいて、</p>
<br />
<p>ある値を検索する場合の方法について考えたいと思います。</p>
<br />
<p>この操作の計算量はノード数を<img src="http://www.flatz.jp/wp-content/cache/tex_24eb46e832268b3a8c101a6ec5c9084a.gif" class="tex" alt="|N|" />とした場合、平均<img src="http://www.flatz.jp/wp-content/cache/tex_184387faf1f4956d73ed4c6f7b3347a8.gif" class="tex" alt="O(log_2|N|)" />です。</p>
<br />
<p><img src="http://www.flatz.jp/wp-content/cache/tex_f339b529ee09cd72dc36a7e301a70f2e.gif" class="tex" alt="log_2|N|=x" />というのは、別の表現をすると、<img src="http://www.flatz.jp/wp-content/cache/tex_9d08beb632905d28a5cad432d5e4c6f9.gif" class="tex" alt="x=2^{|N|}" />となります。</p>
<br />
<p>これは、ノード数と計算時間の対応関係を表で表すと次のようになります。</p>
<br />
<table border="1">
<tbody>
<tr>
<th>ノード数N</th>
<th>計算量</th>
</tr>
<tr>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
</tr>
<tr>
<td>8</td>
<td>3</td>
</tr>
<tr>
<td>16</td>
<td>4</td>
</tr>
<tr>
<td>約1000</td>
<td>約10</td>
</tr>
<tr>
<td>約1000000</td>
<td>約20</td>
</tr>
</tbody>
</table>
<br />
<p>つまり、ノード数が指数的に増加しても、検索にかかる計算量は比例しては増加しないということです。</p>
<br />
<p>では、次にSkip Graphについて説明したいと思います。</p>
<br />
<p>Skip Graphは、Skip Listの拡張版だといえます。</p>
<br />
<p>Skip Graphではレベル1以上のノード間のリンクの仕方が違います。</p>
<br />
<p>Skip Listでは、スキップされたノードはそのレベルではリンクを持たないのですが、Skip Graphでは、リンクを持つ場合があります。</p>
<br />
<p>例えば、下記のようなデータ構造になります。</p>
<br />
<p><a href="http://www.flatz.jp/wp-content/uploads/2010/04/fig3.png"><img class="aligncenter size-medium wp-image-3122" title="Ｓｋｉｐ Ｇｒａｐｈのデータ構造" src="http://www.flatz.jp/wp-content/uploads/2010/04/fig3-300x164.png" alt="Ｓｋｉｐ Ｇｒａｐｈのデータ構造" width="300" height="164" /></a></p>
<br />
<p>Skip Graphでは、検索をする場合には、どのノードから初めてもいいことになります。</p>
<br />
<p>最初のノードが決まったら、Skip Listと同じように上位のレベルから下位のレベルに向かって探したいノードに向かって移動していきます。この計算量もやはり平均<img src="http://www.flatz.jp/wp-content/cache/tex_184387faf1f4956d73ed4c6f7b3347a8.gif" class="tex" alt="O(log_2|N|)" />です。</p>
<br />
<p>さて、いままでデータの検索の方法について扱ってきましたが、ではこのデータ構造をどのように作ればいいのでしょうか。</p>
<br />
<p>その方法について説明したいと思います。</p>
<br />
<ol>
    <li>まず、ノード間のリンクの仕方についてですが、ここでは、メンバーシップベクタ関数<img src="http://www.flatz.jp/wp-content/cache/tex_505b30474bf75fb6f9f0d876bf9fdcf1.gif" class="tex" alt="M(n)" />を使って確率的にリンクします。メンバーシップベクタ関数<img src="http://www.flatz.jp/wp-content/cache/tex_505b30474bf75fb6f9f0d876bf9fdcf1.gif" class="tex" alt="M(n)" />は、<img src="http://www.flatz.jp/wp-content/cache/tex_7b8b965ad4bca0e41ab51de7b31363a1.gif" class="tex" alt="n" />によって決まる2進乱数列です。このM(n)の乱数列の長さは無限に続くのですが、Skip Graphで利用するのは長さ<img src="http://www.flatz.jp/wp-content/cache/tex_a6491d13e13a2f81ec24144be2f1c660.gif" class="tex" alt="log|N|" />までです。<br />
<br />
<img src="http://www.flatz.jp/wp-content/cache/tex_505b30474bf75fb6f9f0d876bf9fdcf1.gif" class="tex" alt="M(n)" />の生成方法には決まった方法がありますので、方法を考える必要があります。<br />
<br />
この<img src="http://www.flatz.jp/wp-content/cache/tex_505b30474bf75fb6f9f0d876bf9fdcf1.gif" class="tex" alt="M(n)" />を各ノードについて計算しておきます。<br />
<br />
<img src="http://www.flatz.jp/wp-content/cache/tex_01145830b2ff532745e4fbc4c8470044.gif" class="tex" alt="log_26" />≒<img src="http://www.flatz.jp/wp-content/cache/tex_bf89b90f3e96df038b2e85743042ee79.gif" class="tex" alt="2.59" />なので、メンバーシップベクタの桁数は2桁か、3桁となります。図では2桁にしています。</li>
    <li> さて、計算し終えたら、リンクします。リンクするルールは次の様にします。<br />
<ol>
    <li>まずレベル0では、すべてのノードにおいて、隣接するノードとリンクします。</li>
    <li>次にレベル1では、メンバーシップベクタの1桁目までが一致するノード同士で、順序関係を保ってにリンクします。</li>
    <li>次にレベル2では、メンバーシップベクタの2桁目までが一致するノード同士で、順序関係を保ってにリンクします。</li>
</ol>
</li>
</ol>
<br />
<p>これを一般化すると</p>
<br />
<p>レベルnでは、メンバーシップベクタのn桁目までが一致するノード同士で、順序関係を保ってにリンクします。</p>
<br />
<p>となります。</p>
<br />
<p>さて、最初にいっぺんにリンクを作る方法はわかりました。では、途中のノードを追加する場合はどうなるのでしょうか。</p>
<br />
<p>ご心配なく。そういったことも可能です。その場合の計算量も平均<img src="http://www.flatz.jp/wp-content/cache/tex_184387faf1f4956d73ed4c6f7b3347a8.gif" class="tex" alt="O(log_2|N|)" />です。</p>
<br />
<ol>
    <li>まず、自分が追加しようとしているノードの値に近いノードを探索します。<a href="http://www.flatz.jp/wp-content/uploads/2010/04/fig5.png"><img class="aligncenter size-medium wp-image-3129" title="ノードの追加(level0)" src="http://www.flatz.jp/wp-content/uploads/2010/04/fig5-300x193.png" alt="ノードの追加(level0)" width="300" height="193" /></a></li>
    <li>追加している値のノードか、もっとも近い値のノードを見つけたら、ソート順番が壊れないように、そのノードの隣にノードを追加します。このとき、レベル0では、左右のノードのリンクを、追加したノードにリンクします。<a href="http://www.flatz.jp/wp-content/uploads/2010/04/fig6.png"><img class="aligncenter size-medium wp-image-3130" title="ノードの追加(level1)" src="http://www.flatz.jp/wp-content/uploads/2010/04/fig6-300x193.png" alt="ノードの追加(level1)" width="300" height="193" /></a></li>
    <li>次にレベル1では、メンバーシップベクタの1桁目が一致しているノードを左右でそれぞれ探し、リンクしなおします。</li>
    <li>レベル2では、レベル1でリンクしたノードを起点に、左のノードであれば、さらに左に、右のノードであれば、さらに右に、メンバーシップベクタの2桁目までが一致するノード同士でリンクしていきます。<a href="http://www.flatz.jp/wp-content/uploads/2010/04/fig7.png"><img class="aligncenter size-medium wp-image-3131" title="ノードの追加(level2)" src="http://www.flatz.jp/wp-content/uploads/2010/04/fig7-300x193.png" alt="ノードの追加(level2)" width="300" height="193" /></a></li>
    <li>最終的に、各レベルのノードが終端ノードになるか、リンクがされるまで続けます。（または、ノード数がわかっているなら、<img src="http://www.flatz.jp/wp-content/cache/tex_e2edb0379e8061c4b55918218bf51fd4.gif" class="tex" alt="log_2|N| " />の値からレベル数を求めて、そのレベルまで続けます）</li>
</ol>
<br />
<p>以上が、ノードの追加方法となります。</p>
<br />
<p>SkipGraphが並列アルゴリズムとして有利な点はノードを検索や追加する場合に、どのノードを基点にしても平均計算量は<img src="http://www.flatz.jp/wp-content/cache/tex_184387faf1f4956d73ed4c6f7b3347a8.gif" class="tex" alt="O(log_2|N|)" />になるという点です。（ただし、最悪は<img src="http://www.flatz.jp/wp-content/cache/tex_53fdef5328e843b002c4ea4620b555b1.gif" class="tex" alt="O(|N|)" />です。）</p>
<br />
<p>また、データを追加する場合にも局所的な情報の更新をするだけでいいので、並列でノードの追加などもできるのではないかと思います。</p>
<br />
<p>ただし、このアルゴリズムをつかっていくらモテるようになったからといって、女の子たちと並列で遊んではいけませんよ！</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=3092&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/3092/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/3092" />
	</item>
		<item>
		<title>Ruby On Rails Security Guideの訳 : 4.4 File Downloads</title>
		<link>http://www.flatz.jp/archives/2698</link>
		<comments>http://www.flatz.jp/archives/2698#comments</comments>
		<pubDate>Fri, 30 Apr 2010 06:00:51 +0000</pubDate>
		<dc:creator>kimura</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Security Guide]]></category>
		<category><![CDATA[訳]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2698</guid>
		<description><![CDATA[今回は<a href="http://guides.rubyonrails.org/security.html#file-downloads">4.4 File Downloads</a>です。

原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。

では、以下訳です。

----------------------

<blockquote>
<strong>
4.4 File Downloads
</strong>
</blockquote>

<strong>
4.4 ファイルダウンロード
</strong>]]></description>
			<content:encoded><![CDATA[<p>
</p><p>こんにちは。木村です。</p>
<br />
<p>今回は<a href="http://guides.rubyonrails.org/security.html#file-downloads">4.4 File Downloads</a>です。</p>
<br />
<p>原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。</p>
<br />
<p>では、以下訳です。<br />
私です。</p>
<br />
<p>ああああ</p>
<br />
<hr /><br />
<br />

<blockquote><p><strong> </strong><br />
<br />
<strong>4.4 File Downloads</strong><br />
<br />
<strong><br />
</strong></p></blockquote>
<p>
<br />
</p><p><strong> </strong></p>
<br />
<p><strong>4.4 ファイルダウンロード<br />
</strong></p>
<br />

<blockquote><p>- Make sure users cannot download arbitrary files.</p></blockquote>
<p>
<br />
<ul>
<li>ユーザが任意のファイルをダウンロードできないように確認する。</li>
</ul>
<br />
</p>
<blockquote><p>Just as you have to filter file names for uploads, you have to do so for downloads. The send_file() method sends files from the server to the client. If you use a file name, that the user entered, without filtering, any file can be downloaded:</p></blockquote>
<p>
<br />
</p><p>アップロード時にファイル名にフィルターをかけなければならないように、ダウンロードの場合もフィルターをかける必要があります。send_file()メソッドはサーバからクライアントにファイルを送ります。もしユーザが入力したファイル名をフィルタなしで使用しているならば、どんなファイルもダウンロードされます。</p>
<br />

<blockquote><p>Simply pass a file name like “../../../etc/passwd” to download the server’s login information. A simple solution against this, is to check that the requested file is in the expected directory:</p></blockquote>
<p>
<br />
</p><p>&#8220;../../../etc/passwd&#8221;というようなファイル名を渡すだけでサーバのログイン情報をダウンロードできてしまいます。これに対する簡単な解決方法は、リクエストされたファイルが期待通りのディレクトリの中のファイルであるかチェックすることです。</p>
<br />

<blockquote><p>Another (additional) approach is to store the file names in the database and name the files on the disk after the ids in the database. This is also a good approach to avoid possible code in an uploaded file to be executed. The attachment_fu plugin does this in a similar way.</p></blockquote>
<p>
<br />
</p><p>もう1つの（さらなる)アプローチはファイル名をデータベースに保存して、データベースのIDでディスク上のファイル名をつけることです。これはアップロードファイル中の実行可能なコードを回避するための良いアプローチでもあります。attachment_fuプラグインは似たような方法でこれを実行します。</p>
<br />
<hr /><br />
<br />
<p>次回は<a href="http://guides.rubyonrails.org/security.html#intranet-and-admin-security">5 Intranet and Admin Security</a>です。</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2698&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2698/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2698" />
	</item>
		<item>
		<title>Ruby On Rails Security Guideの訳 : 4.3 Executable Code in File Uploads</title>
		<link>http://www.flatz.jp/archives/2675</link>
		<comments>http://www.flatz.jp/archives/2675#comments</comments>
		<pubDate>Fri, 23 Apr 2010 06:00:19 +0000</pubDate>
		<dc:creator>kimura</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Security Guide]]></category>
		<category><![CDATA[訳]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2675</guid>
		<description><![CDATA[今回は<a href="http://guides.rubyonrails.org/security.html#executable-code-in-file-uploads">4.3 Executable Code in File Uploads</a>です。

今回は<a href="http://guides.rubyonrails.org/security.html#executable-code-in-file-uploads">4.3 Executable Code in File Uploads</a>です。]]></description>
			<content:encoded><![CDATA[<p>
</p><p>こんにちは。木村です。</p>
<br />
<p>今回は<a href="http://guides.rubyonrails.org/security.html#executable-code-in-file-uploads">4.3 Executable Code in File Uploads</a>です。</p>
<br />
<p>原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。</p>
<br />
<p>では、以下訳です。</p>
<br />
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<br />

<blockquote><p>
</p><p><strong><br />
4.3 Executable Code in File Uploads<br />
</strong></p>
</blockquote>
<p>
<br />
</p><p><strong><br />
4.3 アップロードファイル内の実行可能なコード<br />
</strong></p>
<br />

<blockquote><p>
</p><p>
- Source code in uploaded files may be executed when placed in specific directories. Do not place file uploads in Rails’ /public directory if it is Apache’s home directory.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
- アップロードファイル内のソースコードは特定のディレクトリに置かれている時に実行される可能性があります。もしRailsの/publicディレクトリがApacheのホームディレクトリならば、アップロードファイルを置かないでください。<br />
</p>
<br />

<blockquote><p>
</p><p>
The popular Apache web server has an option called DocumentRoot. This is the home directory of the web site, everything in this directory tree will be served by the web server. If there are files with a certain file name extension, the code in it will be executed when requested (might require some options to be set). Examples for this are PHP and CGI files. Now think of a situation where an attacker uploads a file “file.cgi” with code in it, which will be executed when someone downloads the file.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
一般に使用されているApache WebサーバにはDocumentRootと呼ばれるオプションがあります。<br />
これはWebサイトのホームディレクトリのことで、Webサーバはこのディレクトリツリーの中にある全てを扱います。もしある拡張子を持ったファイルがあった場合、その中のコードはリクエストされた時に実行されます(いくつかのオプションが設定されている必要があるかもしれない)。PHPやCGIファイルがそれに当たります。さて、攻撃者がコードが含まれた”file.cgi”ファイルをアップロードするシチュエーションを考えてください。誰かがそのファイルをダウンロードする(リクエストを出した)時そのファイルは実行されるでしょう。<br />
</p>
<br />

<blockquote><p>
</p><p>
If your Apache DocumentRoot points to Rails’ /public directory, do not put file uploads in it, store files at least one level downwards.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
もしApacheのDocumentRootがRailsの/publicディレクトリになっているならば、そこにアップロードファイルを置かずに、少なくとも1階層下にファイルを保存してください。<br />
</p>
<br />
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<br />
<p>次回は<a href="http://guides.rubyonrails.org/security.html#file-downloads">4.4 File Downloads</a>です。</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2675&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2675/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2675" />
	</item>
		<item>
		<title>Ruby On Rails Security Guideの訳 : 4.2 File Uploads</title>
		<link>http://www.flatz.jp/archives/2661</link>
		<comments>http://www.flatz.jp/archives/2661#comments</comments>
		<pubDate>Fri, 02 Apr 2010 06:00:42 +0000</pubDate>
		<dc:creator>kimura</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Security Guide]]></category>
		<category><![CDATA[訳]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2661</guid>
		<description><![CDATA[こんにちは。木村です。

今回は<a href="http://guides.rubyonrails.org/security.html#file-uploads">4.2 File Uploads</a>です。

原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。

では、以下訳です。

-----------------------------------------------------------------

<blockquote>
<strong>
4.2 File Uploads
</strong>
</blockquote>

<strong>
4.2 ファイルアップロード
</strong>]]></description>
			<content:encoded><![CDATA[<p>
</p><p>こんにちは。木村です。</p>
<br />
<p>今回は<a href="http://guides.rubyonrails.org/security.html#file-uploads">4.2 File Uploads</a>です。</p>
<br />
<p>原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。</p>
<br />
<p>では、以下訳です。</p>
<br />
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<br />

<blockquote><p>
</p><p><strong><br />
4.2 File Uploads<br />
</strong></p>
</blockquote>
<p>
<br />
</p><p><strong><br />
4.2 ファイルアップロード<br />
</strong></p>
<br />

<blockquote><p>
</p><p>
- Make sure file uploads don’t overwrite important files, and process media files asynchronously.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
- ファイルアップロードで重要なファイルを上書きしないように、また、メディアファイルを非同期的に処理するようにしてください。<br />
</p>
<br />

<blockquote><p>
</p><p>
Many web applications allow users to upload files. File names, which the user may choose (partly), should always be filtered as an attacker could use a malicious file name to overwrite any file on the server. If you store file uploads at /var/www/uploads, and the user enters a file name like “../../../etc/passwd”, it may overwrite an important file. Of course, the Ruby interpreter would need the appropriate permissions to do so &#8211; one more reason to run web servers, database servers and other programs as a less privileged Unix user.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
多くのWebアプリケーションはユーザにファイルアップロードを許可しています。ユーザが(部分的に)指定できるファイル名を、攻撃者がサーバ上のファイルを上書きするために悪意のあるファイル名を使用するかもしれないとして、常にフィルタするべきです。もし/var/www/uploadsにアップロードファイルを保存していて、ユーザが../../../etc/passwdのようなファイル名を入力したならば、重要なファイルが上書きされるかもしれません。もちろん、Rubyインタプリタがそのように実行する許可を割り当てられている必要があります。これがWebサーバやデータベースサーバやその他のプログラムをより少ない権限のUnixユーザとして実行する理由の一つです。<br />
</p>
<br />

<blockquote><p>
</p><p>When filtering user input file names, don’t try to remove malicious parts. Think of a situation where the web application removes all “../” in a file name and an attacker uses a string such as “..&#8237;..//” ? the result will be “../”. It is best to use a whitelist approach, which checks for the validity of a file name with a set of accepted characters. This is opposed to a blacklist approach which attempts to remove not allowed characters. In case it isn’t a valid file name, reject it (or replace not accepted characters), but don’t remove them. Here is the file name sanitizer from the attachment_fu plugin:<br />
</p>
</blockquote>
<p>
<br />
</p><p>
<br />
ユーザが入力したファイル名をフィルタする時、悪意のある部分を削除しようとしないでください。Webアプリケーション上でファイル名にある全ての「../」を削除し、攻撃者が「..&#8237;..//」というような文字列を(ファイル名の一部に)使用する状況を考えてみてください。結果、「../」という文字列になります。ホワイトリストアプローチを使用することが最良の方法です。ホワイトリストアプローチは許可された文字のセットを用いてファイル名の有効性をチェックします。これは許可されない文字を削除しようと試みるブラックリストアプローチとは反対の方法です。有効でないファイル名であった場合、拒否してください(または許可されない文字を置換する)、しかし文字を削除しないでください。attachment_fu pluginのファイル名をサニタイズする部分を次に挙げます。</p>
<br />

<blockquote><p>
</p><p>
A significant disadvantage of synchronous processing of file uploads (as the attachment_fu plugin may do with images), is its vulnerability to denial-of-service attacks. An attacker can synchronously start image file uploads from many computers which increases the server load and may eventually crash or stall the server.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
アップロードファイルの同期的な処理(attachment_fuプラグインは同期的にイメージを処理します)の著しく不利な点ははDoS攻撃への脆弱性です。<br />
攻撃者は多くのコンピュータからイメージファイルアップロードを同期的に開始し、サーバの負荷を増大させ、最終的にはサーバをクラッシュまたは麻痺させることができます。<br />
</p>
<br />

<blockquote><p>
</p><p>
The solution to this is best to process media files asynchronously: Save the media file and schedule a processing request in the database. A second process will handle the processing of the file in the background.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
この解決方法はメディアファイルを非同期的に処理することが最良の方法です。メディアファイルを保存して、データベースで処理リクエストをスケジューリングしてください。<br />
セカンドプロセスがバックグラウンドでファイルの処理を担当します。<br />
</p>
<br />
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<br />
<p>次回は<a href="http://guides.rubyonrails.org/security.html#executable-code-in-file-uploads">4.3 Executable Code in File Uploads</a>です。</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2661&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2661/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2661" />
	</item>
		<item>
		<title>オープンソースカンファレンス2010 Tokyo/Springに行ってきました</title>
		<link>http://www.flatz.jp/archives/2975</link>
		<comments>http://www.flatz.jp/archives/2975#comments</comments>
		<pubDate>Mon, 29 Mar 2010 07:00:33 +0000</pubDate>
		<dc:creator>taniguchi</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[ZenCart]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[OSC]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2975</guid>
		<description><![CDATA[
谷口です。

2/26(Fri)・27(Sat)でオープンソースカンファレンス2010 Tokyo/Springが開催されました。
26日は仕事で行けなかったのですが、27日は眠いのをこらえつつ行ってきました！

今回 [...]]]></description>
			<content:encoded><![CDATA[<p>
</p><p>谷口です。</p>
<br />
<p>2/26(Fri)・27(Sat)で<a href="http://www.ospn.jp/osc2010-spring/">オープンソースカンファレンス2010 Tokyo/Spring</a>が開催されました。<br />
26日は仕事で行けなかったのですが、27日は眠いのをこらえつつ行ってきました！</p>
<br />
<p>今回は残念ながらZenCart.JPは展示がなかったのですが、その分色々見て回ることができました。</p>
<br />
<p><img src="http://www.flatz.jp/wp-content/uploads/2010/03/OSC11-168x300.jpg" alt="OSC1" title="OSC1" width="168" height="300" class="alignnone size-medium wp-image-2977" /></p>
<br />
<p>今回は前回の2009 Tokyo/Fallより人口密度が高かったように感じました。（展示ブースのスペースが狭かったからかも？）<br />
こんな感じです。</p>
<br />
<p><img src="http://www.flatz.jp/wp-content/uploads/2010/03/OSC2-168x300.jpg" alt="OSC2" title="OSC2" width="168" height="300" class="alignnone size-medium wp-image-2979" /></p>
<br />
<h3>KBMJブースへ</h3>
<br />
<p>さて、今回私が一番気になっていたのは株式会社KBMJの<a href="http://ec.kbmj.com/">エレコマ</a>です。というわけで、真っ先にKBMJのブースへ･･･やはりZen CartをやっているとECサイト構築パッケージは気になります。</p>
<br />
<p>で、元々はECサイト構築案件がきっかけだったとか、そのときはEC-CUBEを使おうという話も出てたとか、EC Riderとの関係が･･･とか、根堀葉堀余計なことまで聞いてしまいました。<br />
かなり失礼な質問もあったと思いますが、真摯に答えてくださったKBMJのスタッフさんありがとうございました！</p>
<br />
<p>エレコマはRuby on Railsで開発されているので、Railsのモジュールがそのまま使えそうですので、機能拡張のしやすさが魅力的ですね。<br />
パッケージとしては今はまだ機能面で物足りない部分もあるなぁという印象ですが、今後の機能アップに非常に期待しています！</p>
<br />
<h3>おわりに</h3>
<br />
<p>今回の開催場所は多くの人にとっては行きづらい場所だったと思いますが、全体的に盛況な印象でした。<br />
今回出展されていたエレコマ以外にも、Live CommerceやEC-RiderなどオープンソースのECサイト構築パッケージが続々と出始めていますので、<br />
Zen Cartもうかうかしてられないですなぁ・・・。</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2975&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2975/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2975" />
	</item>
		<item>
		<title>Ruby On Rails Security Guideの訳 : 4 Redirection and Files &#8211; 4.1 Redirection</title>
		<link>http://www.flatz.jp/archives/2643</link>
		<comments>http://www.flatz.jp/archives/2643#comments</comments>
		<pubDate>Fri, 19 Mar 2010 06:00:21 +0000</pubDate>
		<dc:creator>kimura</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Security Guide]]></category>
		<category><![CDATA[訳]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2643</guid>
		<description><![CDATA[今回は<a href="http://guides.rubyonrails.org/security.html#redirection-and-files">4 Redirection and Files</a>から
<a href="http://guides.rubyonrails.org/security.html#redirection">4.1 Redirection</a>です。]]></description>
			<content:encoded><![CDATA[<p>
</p><p>こんにちは。木村です。</p>
<br />
<p>今回は<a href="http://guides.rubyonrails.org/security.html#redirection-and-files">4 Redirection and Files</a>から<br />
<a href="http://guides.rubyonrails.org/security.html#redirection">4.1 Redirection</a>です。</p>
<br />
<p>原文の単語と全く違う言葉に置きかえている場合が多々あります。原文ページと併せて、ご覧下さい。気になる箇所や間違っている箇所があれば、どうかご指摘下さい。</p>
<br />
<p>では、以下訳です。</p>
<br />

<blockquote><p>
</p><p><strong><br />
4 Redirection and Files<br />
</strong></p>
</blockquote>
<p>
<br />
</p><p><strong><br />
4 リダイレクトとファイル<br />
</strong></p>
<br />

<blockquote><p>
</p><p>
Another class of security vulnerabilities surrounds the use of redirection and files in web applications.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
もう1つの種類のセキュリティ脆弱性はリダイレクトの使用とウェブアプリケーションのファイルの周辺に存在します。<br />
</p>
<br />

<blockquote><p>
</p><p><strong><br />
4.1 Redirection<br />
</strong></p>
</blockquote>
<p>
<br />
</p><p><strong><br />
4.1 リダイレクト<br />
</strong></p>
<br />

<blockquote><p>
</p><p>
- Redirection in a web application is an underestimated cracker tool: Not only can the attacker forward the user to a trap web site, he may also create a self-contained attack.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
- webアプリケーションのリダイレクトはクラッカーツールとして甘く見られています。攻撃者は罠のあるwebサイトにユーザを転送できるだけでなく、内包型の攻撃を作り出すこともできます。<br />
</p>
<br />

<blockquote><p>
</p><p>
Whenever the user is allowed to pass (parts of) the URL for redirection, it is possibly vulnerable. The most obvious attack would be to redirect users to a fake web application which looks and feels exactly as the original one.<br />
This so-called phishing attack works by sending an unsuspicious link in an email to the users, injecting the link by XSS in the web application or putting the link into an external site. It is unsuspicious, because the link starts with the URL to the web application and the URL to the malicious site is hidden in the redirection parameter: http://www.example.com/site/redirect?to= www.attacker.com. Here is an example of a legacy action:<br />
</p>
</blockquote>
<p>
<br />
</p><p>
ユーザが(部分的な)リダイレクトURLの通過を許可されるときはいつでも、攻撃を受けやすい可能性があります。最も分かりやすい攻撃は、オリジナルサイトと勘違いするような偽者のwebアプリケーションにユーザをリダイレクトすることでしょう。いわゆるフィッシング攻撃はユーザへのメールで不審に思われないリンクを送りつけるか、webアプリケーションのXSSをリンクに入れるか、外部サイトへのリンクを設置します。フィッシング攻撃は不審に思われません。なぜなら、リンクはwebアプリケーションへのURLで始まり、悪意のあるサイトへのURLはリダイレクトパラメータに隠されているからです。http://www.example.com/site/redirect?to= www.attacker.com. あるlegacyアクションの例が次の通りです。<br />
</p>
<br />

<blockquote><p>
<pre style="line-height:0.8em">
def<br />
  legacy redirect_to(params.update(:action=>'main'))<br />
end<br />
</pre>
</p></blockquote>
<p>
<br />
</p>
<blockquote><p>
</p><p>
This will redirect the user to the main action if he tried to access a legacy action. THowever, it can exploited by an attacker if he includes a host key in the URL:he intention was to preserve the URL parameters to the legacy action and pass them to the main action. <br />
</p>
</blockquote>
<p>
<br />
</p><p>
これはユーザがlegacyアクションにアクセスしようととするとmainアクションにリダイレクトします。legacyアクションへのURLパラメータをmainアクションに移動する時に保持することが目的です。しかしながら、URLにホストキーを含めることで攻撃者に悪用される可能性があります。<br />
</p>
<br />

<blockquote><p>
<br />
http://www.example.com/site/legacy?param1=xy&#038;param2=23&#038;host=www.attacker.com<br />
<br />
</p></blockquote>
<p>
<br />
</p>
<blockquote><p>
</p><p>
If it is at the end of the URL it will hardly be noticed and redirects the user to the attacker.com host. A simple countermeasure would be to include only the expected parameters in a legacy action (again a whitelist approach, as opposed to removing unexpected parameters). And if you redirect to an URL, check it with a whitelist or a regular expression.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
URLの終わりがこのようになっていれば、ほぼ気づかれずにユーザをattacker.comホストにリダイレクトします。簡単な対策方法はlegacyアクションに期待されるパラメータだけ含めることでしょう。(また一方で期待されないパラメータを削除するのとは対照的なホワイトリストという方法があります)もしリダイレクトするときは、ホワイトリストか正規表現でURLをチェックしてください。<br />
</p>
<br />

<blockquote><p>
</p><p><strong><br />
4.1.1 Self-contained XSS<br />
</strong></p>
</blockquote>
<p>
<br />
</p><p><strong><br />
4.1.1 内包型のXSS <br />
</strong></p>
<br />

<blockquote><p>
</p><p>
Another redirection and self-contained XSS attack works in Firefox and Opera by the use of the data protocol. This protocol displays its contents directly in the browser and can be anything from HTML or JavaScript to entire images:<br />
</p>
</blockquote>
<p>
<br />
</p><p>
もう1つのリダイレクトと内包型のXSSによる攻撃はデータプロトコルを使うことでFirefoxとOperaで動作します。このプロトコルはそのコンテンツをブラウザで直接表示し、HTMLやJavaScriptから完全な画像まで何にでもなれます。<br />
</p>
<br />

<blockquote><p>
<pre style="line-height:0.8em">
data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K<br />
</pre>
</p></blockquote>
<p>
<br />
</p>
<blockquote><p>
</p><p>
This example is a Base64 encoded JavaScript which displays a simple message box. In a redirection URL, an attacker could redirect to this URL with the malicious code in it. As a countermeasure, do not allow the user to supply (parts of) the URL to be redirected to.<br />
</p>
</blockquote>
<p>
<br />
</p><p>
この例は簡単なメッセージボックスを表示するJavaScriptをBase64エンコードしたものです。リダイレクトURLで使用する場合は、攻撃者は悪意のあるコードをデータプロトコルに含めることでリダイレクトすることができます。対策方法としては、(部分的な)リダイレクトURLをユーザに使わせないことです。<br />
</p>
<br />
<p>次回は<a href="http://guides.rubyonrails.org/security.html#file-uploads">4.2 File Uploads</a>です。</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2643&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2643/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2643" />
	</item>
		<item>
		<title>モテるアルゴリズム講座　 第1回 グラフでモテたい</title>
		<link>http://www.flatz.jp/archives/3001</link>
		<comments>http://www.flatz.jp/archives/3001#comments</comments>
		<pubDate>Fri, 05 Mar 2010 06:00:08 +0000</pubDate>
		<dc:creator>amakata</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>
		<category><![CDATA[アルゴリズム]]></category>
		<category><![CDATA[技術情報]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[グラフ]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=3001</guid>
		<description><![CDATA[
天方です。

今日からモテるアルゴリズム講座を始めたいと思います。

それでは、第1回グラフでモテたいの講義を始めようと思います。
なんといってもアルゴリズムができるとかいうと、いろいろモテます。
この講座を通じて、皆 [...]]]></description>
			<content:encoded><![CDATA[<p>
</p><p>天方です。</p>
<br />
<p>今日からモテるアルゴリズム講座を始めたいと思います。</p>
<br />
<p>それでは、第1回グラフでモテたいの講義を始めようと思います。<br />
なんといってもアルゴリズムができるとかいうと、いろいろモテます。<br />
この講座を通じて、皆さんもアルゴリズムをマスターしてモテてください。</p>
<br />
<p>本日は、モテるアルゴリズムを考える上で重要な<br />
グラフのデータ構造について話をしたいと思います。</p>
<br />
<p>グラフというと、普通思い浮かべるのは棒グラフとか円グラフとかかもしれませんが、今回は違います。そんな反応をしていると婚期を逃します。</p>
<br />
<p>グラフというのは、点と枝かつながってできるものをグラフと言います。</p>
<br />
<div id="attachment_3023" class="wp-caption aligncenter" style="width: 310px"><img src="http://www.flatz.jp/wp-content/uploads/2010/03/graph01_01_03-300x250.PNG" alt="グラフの例" title="graph01_01_03" width="300" height="250" class="size-medium wp-image-3023" /><p class="wp-caption-text">グラフの例</p></div><br />
<br />
<p>グラフはいろいろな分野で使われていると思いますが、<br />
あのGoogleも検索エンジンのページの順位付けのためにグラフの概念を利用していたいりします。</p>
<br />
<p>さて、グラフをコンピュータ上で扱おうとすると、そのデータ構造の持たせ方に悩みます。<br />
グラフ用のライブラリを使えばそれほど大変でもないのですが、やはり自分で書いた方がモテます。</p>
<br />
<p>グラフをデータとして表現するにはいくつか方法があります。<br />
では、上記の図で示したグラフをさまざまなデータ構造で表現してみようと思います。</p>
<br />
<p>まず、上の図の点と枝を数学的な表現を使って次のように表現することにします。</p>
<br />
<p>点の集合 <img src="http://www.flatz.jp/wp-content/cache/tex_61c1f97f9d9d0d76206ce3ff9f6069ce.gif" class="tex" alt="V=&#92;{v_1,v_2,v_3,v_4,v_5,v_6&#92;}" /></p>
<br />
<p>枝の集合 <img src="http://www.flatz.jp/wp-content/cache/tex_b8a99854e1f8fab799c514dce2962621.gif" class="tex" alt="E=&#92;{e_1,e_2,e_3,e_4,e_5,e_6,e_7,e_8,e_9,e_{10}&#92;}" /></p>
<br />
<p>その場合、点と枝の接続関係は次のようになります。</p>
<br />
<p>枝, 始点, 終点<br />
<img src="http://www.flatz.jp/wp-content/cache/tex_4905f169cb5730dde4790a05da990d25.gif" class="tex" alt="e_1,v_1,v_2&#92;&#92;e_2,v_2,v_4&#92;&#92;e_3,v_3,v_4&#92;&#92;e_4,v_4,v_5&#92;&#92;e_5,v_5,v_6&#92;&#92;e_6,v_6,v_1&#92;&#92;e_7,v_1,v_3&#92;&#92;e_8,v_5,v_2&#92;&#92;e_9,v_3,v_6&#92;&#92;e_{10},v_1,v_1" /></p>
<br />
<p>ちなみに、向きがある枝でできたグラフを有向グラフと呼びます。<br />
向きがない枝でできたグラフを無向グラフと呼びます。</p>
<br />
<p>こういったグラフを表現するデータ構造としては、枝の始点と終点の番号の組を持たせることでグラフを表現する方法があります。</p>
<br />
<p>それではこのグラフのデータ構造をRubyをつかって表現してみましょう。</p>
<br />
<p>例えば、上記の視点と終点をRubyの配列で表現すると下記のようになります。</p>
<br />
<p>start_vertex = [1,2,3,4,5,6,1,5,3,1]<br />
end_vertex   = [2,4,4,5,6,1,3,2,6,1]</p>
<br />
<p>これは、さきほど示した数学的な表現だと下記のような表現になります。<br />
<img src="http://www.flatz.jp/wp-content/cache/tex_2d9ceefab138e7cd2104c4e05cf1e671.gif" class="tex" alt="start&#92;_vertex=[v_1,v_2,v_3,v_4,v_5,v_6,v_1,v_5,v_3,v_1]&#92;&#92;end&#92;_vertex=[v_2,v_4,v_4,v_5,v_6,v_1,v_3,v_2,v_6,v_1]" /> &#8230; ①</p>
<br />
<p>配列の添え字が、枝の添え字 &#8211; 1になります。</p>
<br />
<p>頂点間に枝があるかどうかを調べるには<br />
頂点数をnとすると<img src="http://www.flatz.jp/wp-content/cache/tex_7ba55e7c64a9405a0b39a1107e90ca94.gif" class="tex" alt="O(n)" />の計算量(時間的)がかかります。<br />
また、計算量(空間的)は枝数を<img src="http://www.flatz.jp/wp-content/cache/tex_6f8f57715090da2632453988d9a1501b.gif" class="tex" alt="m" />とすると<img src="http://www.flatz.jp/wp-content/cache/tex_93b47baf59ea142b485dc22577a56dac.gif" class="tex" alt="2m" />です。</p>
<br />
<p>そこで、各頂点毎に、出入りする枝を持つという手があります。</p>
<br />
<p>たとえば、下記の様な図のように一つの頂点に出入りする枝に注目します。</p>
<br />
<div id="attachment_3044" class="wp-caption aligncenter" style="width: 310px"><img src="http://www.flatz.jp/wp-content/uploads/2010/03/graph01_02_02-300x214.png" alt="頂点v1に入る枝と出る枝の例" title="graph01_02_02" width="300" height="214" class="size-medium wp-image-3044" /><p class="wp-caption-text">頂点v1に入る枝と出る枝の例</p></div><br />
<br />
<p>これはRubyで表現すると下記のようになります。</p>
<br />
<p>start_edge = [[1, 7, 10], [2], [3, 9], [4], [5, 8], [6]]<br />
end_edge = [[6, 10], [1, 8], [7], [2, 3], [4], [5, 9]]</p>
<br />
<p>数学的な表現では下記のようになります。<br />
<img src="http://www.flatz.jp/wp-content/cache/tex_2bfc331b5fed36f4219ee434e80b86cf.gif" class="tex" alt="start&#92;_edge=[[e_1,e_7,e_{10}],[e_2],[e_3,e_9],[e_4],[e_5,e_8],[e_6]]&#92;&#92;end&#92;_edge=[[e_6,e_{10}],[e_1,e_8],[e_7],[e_2,e_3],[e_4],[e_5,e_9]]" />  &#8230; ②</p>
<br />
<p>これで、頂点と枝の両方から検索ができるデータ構造ができました。ここモテます。<br />
でも、もうすこしハイクラスのモテを期待したい場合は、クラスを利用したほうがいいと思います。</p>
<br />
<p>さて、配列でグラフを表現できるとからモテモテだと思っていい気になってはいけません。<br />
やはりグラフを表現する場合にもTPOがあります。<br />
例えば、他のラフの表現方法としては、接続行列を使う方法もあります。</p>
<br />
<p>接続行列<img src="http://www.flatz.jp/wp-content/cache/tex_63db7b88830cf596a2e05c4297d55e10.gif" class="tex" alt=" M=&#92;left&#92;(<br />
  &#92;begin{array}{ccc}<br />
   1  &amp; 0  &amp;  0 &amp;  0 &amp; 0 &amp; -1 &amp;  1 &amp;  0 &amp;  0 &amp; 0&#92;<br />
   -1 &amp; 1  &amp;  0 &amp;  0 &amp; 0 &amp;  0 &amp;  0 &amp; -1 &amp;  0 &amp; 0&#92;<br />
   0  &amp; 0  &amp;  1 &amp;  0 &amp; 0 &amp;  0 &amp; -1 &amp;  0 &amp;  1 &amp; 0&#92;<br />
   0  &amp; -1 &amp; -1 &amp;  1 &amp; 0 &amp;  0 &amp;  0 &amp;  0 &amp;  0 &amp; 0&#92;<br />
   0  &amp; 0  &amp;  0 &amp; -1 &amp; 1 &amp;  0 &amp;  0 &amp;  1 &amp;  0 &amp; 0&#92;<br />
   0  &amp; 0  &amp;  0 &amp;  0 &amp;-1 &amp;  1 &amp;  0 &amp;  0 &amp; -1 &amp; 0&#92;<br />
  &#92;end{array}<br />
&#92;right)" /> &#8230; ③</p>
<br />
<p>縦の座標が頂点の添え字、横の座標が枝の添え字に対応し、<br />
要素が1であれば、その頂点を始点、要素が-1であれば、その頂点を終点とすることを表現しています。<br />
この場合、計算量(空間的)は<img src="http://www.flatz.jp/wp-content/cache/tex_93122a9e4abcba124d5a7d4beaba3f89.gif" class="tex" alt="nm" />です。頂点間に枝があるかを調べる計算量(時間的)は<img src="http://www.flatz.jp/wp-content/cache/tex_0e2ae329177722b1818828e92b441032.gif" class="tex" alt="O(m)" />です。<br />
ちなみに、接続行列だと、自己ループしている枝を表すことができません。<br />
そういえば、さきほどの配列を用いた、枝の始点と終点の番号の組のデータ構造だと、枝がない頂点を表現できません。<br />
そこらへんについて、「ちょっときみ、そのデータ構造だと、自己ループが表現できないので、今回の案件には使わない方がいいと思うよ」と<br />
それとなく耳打ちできるとそれとなくモテます。</p>
<br />
<p>他に隣接行列で表現する方法もあります。</p>
<br />
<p>隣接行列 <img src="http://www.flatz.jp/wp-content/cache/tex_0b2f32c35d706ae930da4fadc865fa68.gif" class="tex" alt="A=&#92;left&#92;(<br />
  &#92;begin{array}{ccc}<br />
  1 &amp; 1 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &#92;<br />
  0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &#92;<br />
  0 &amp; 0 &amp; 0 &amp; 1 &amp; 0 &amp; 1 &#92;<br />
  0 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &amp; 0 &#92;<br />
  0 &amp; 1 &amp; 0 &amp; 0 &amp; 0 &amp; 1 &#92;<br />
  1 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &amp; 0 &#92;<br />
  &#92;end{array}<br />
&#92;right)" /> &#8230; ④</p>
<br />
<p>これは、縦の座標を始点の頂点の添え字に対応させ、横の座標を終点の頂点の添え字に対応させて表現したもので、1なら接続している、0なら接続していないという表現です。この場合、計算量(空間的)は<img src="http://www.flatz.jp/wp-content/cache/tex_6595d679e306a127a3fe53268bcaddb2.gif" class="tex" alt="n^2" />です。頂点間に枝があるかを調べる計算量(時間的)は<img src="http://www.flatz.jp/wp-content/cache/tex_5e079a28737d5dd019a3b8f6133ee55e.gif" class="tex" alt="O(1)" />です。<br />
みなさん、もうお気づきとは思いますが、隣接行列では、同じ始点、終点をもつ複数の枝を表すことができなくなります。</p>
<br />
<p>さて、４種類ほど表現方法を扱いましたが、それぞれの表現では、表現できるパターンの制約や、グラフを参照、更新する場合の計算量（時間的、空間的）などが違います。<br />
シチュエーションや、相手の好みによって、表現方法を変えるとモテまくります。</p>
<br />
<p>みなさんもグラフでモテてみませんか？</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=3001&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/3001/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/3001" />
	</item>
		<item>
		<title>第1回プログラマーズカフェナイト＠原宿 を開催しました！</title>
		<link>http://www.flatz.jp/archives/2981</link>
		<comments>http://www.flatz.jp/archives/2981#comments</comments>
		<pubDate>Tue, 02 Mar 2010 05:30:50 +0000</pubDate>
		<dc:creator>hisasue</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2981</guid>
		<description><![CDATA[
久末です。

先日(2月22日)、プログラマーズカフェナイト@原宿というイベントを弊社で行いました。



今回はLTをメインに行いました。

さて、今回のLT発表者は以下の方々です。

プログラマーズカフェナイト &#038; [...]]]></description>
			<content:encoded><![CDATA[<p>
</p><p>久末です。</p>
<br />
<p>先日(2月22日)、プログラマーズカフェナイト@原宿というイベントを弊社で行いました。</p>
<br />
<p><object id="utv820912" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="386" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="utv_n_467793" /><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=4922682" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/video/4922682" /><embed id="utv820912" type="application/x-shockwave-flash" width="480" height="386" src="http://www.ustream.tv/flash/video/4922682" allowscriptaccess="always" allowfullscreen="true" flashvars="loc=%2F&amp;autoplay=false&amp;vid=4922682" name="utv_n_467793"></embed></object></p>
<br />
<p>今回はLTをメインに行いました。</p>
<br />
<div id="attachment_2983" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-2983  " title="プログラマーズカフェナイトの様子 Photo by 三鷹PGカフェ" src="http://www.flatz.jp/wp-content/uploads/2010/03/IMG_1172-300x225.jpg" alt="プログラマーズカフェナイトの様子" width="300" height="225" /><p class="wp-caption-text">プログラマーズカフェナイトの様子 Photo by 三鷹PGカフェ</p></div><br />
<br />
<p>さて、今回のLT発表者は以下の方々です。</p>
<br />
<p><a href="http://d.hatena.ne.jp/kuippa/20100222/1266836529" target="_blank">プログラマーズカフェナイト &#8211; 紅茶屋くいっぱのあれこれ日記</a></p>
<br />
<p>webプログラマが楽にiPhoneアプリを開発する方法<br />
<a href="http://twitter.com/jishiha" target="_blank">@jishiha</a></p>
<br />
<p>3分でできるGoogle App Engine<br />
<a href="http://twitter.com/bluerabbit777jp">@bluerabbit777jp</a></p>
<br />
<p>ExtJS &amp; HTML5<br />
<a href="http://twitter.com/Tommy1969" target="_blank">@Tommy1969</a></p>
<br />
<p>お手軽 GoogleAppEngine / Java + slim3<br />
<a href="http://shin1o.blogspot.com/2010/02/pgcafe.html" target="_blank">404 shin1のつぶやき ないわー Not Found: 第１回プログラマーズカフェナイト＠原宿に参加した #pgcafe</a><br />
<a href="http://twitter.com/shin1ogawa" target="_blank">@shin1ogawa</a></p>
<br />
<p>ギークハウスの話<br />
<a href="http://twitter.com/youchan" target="_blank">@youchan</a></p>
<br />
<p>月曜日にもかかわらず40名募集のところに47名ほどの応募があり、最終的には30名程度、Ustreamの試聴が30名を超えるイベントになりました。</p>
<br />
<p>LT発表者のみなさん、参加者のみなさん、お手伝いのみなさん、ありがとうございます。</p>
<br />
<h3>三鷹プログラマーズカフェとは？</h3>
<br />
<p>プログラマーズカフェナイトは<a href="http://groups.google.co.jp/group/m-pgcafe/" target="_blank">三鷹プログラマーズカフェ</a>の派生イベントと述べましたが、<br />
三鷹プログラマーズカフェをご存じない方のために簡単にご紹介を。</p>
<br />
<p>三鷹プログラマーズカフェは、毎週木曜日、15〜18時に、三鷹産業プラザ地下1階で開催しているイベントです。<br />
プログラマ(とは限らないのですが)が集まって話ができる「場」を提供しています。</p>
<br />
<p>プログラマーズカフェは会話が主体で、勉強会やセミナーと違って特定の目的がありません。<br />
ですから、</p>
<br />
<ul>
    <li>自分で作ったプログラムやサービス</li>
    <li>最近近話題になっている技術やサービス</li>
    <li>仕事のこと</li>
    <li>三鷹のこと</li>
    <li>プログラマーズカフェ自体のこと</li>
    <li>世間話</li>
</ul>
<br />
<p>といった話だけでなく、ちょっと公開できないようなこぼれ話や、プログラムなどとは全く関係のない話など、話題はあらぬ方向へ散らばっていきます。<br />
それが面白いかどうか、役に立つかどうかはその人次第ですが、よくわからないものに積極的に興味を持てる人ならおもしろさを感じられるかもしれません。</p>
<br />
<p>三鷹プログラマーズカフェの主催は以下の三方です。</p>
<br />
<ul>
    <li><a href="http://twitter.com/kuippa" target="_blank">@kuippa</a></li>
    <li><a href="http://twitter.com/kclab" target="_blank">@kclab</a></li>
    <li><a href="http://twitter.com/ysakaki" target="_blank">@ysakaki</a></li>
</ul>
<br />
<p>時間があったらこちらにも是非参加してください。</p>
<br />
<h3>三鷹プログラマーズカフェと私</h3>
<br />
<p>私(久末)は、昨年まで弊社が三鷹駅付近にあった関係で、三鷹プログラマーズカフェの最初のイベントから参加することができました。<br />
以来、できるだけ毎回参加しています。何が参ｌ</p>
<br />
<h3>なぜプログラマーズカフェナイト＠原宿なのか</h3>
<br />
<p>三鷹プログラマーズカフェは公式には15時〜18時なのですが、実際は、18時以降も<br />
三鷹産業プラザ内の<a href="http://www.hi-famiglia.com/" target="_blank">Cafe Hi Famiglia</a>さんで、話が盛り上がったりしています。</p>
<br />
<p>とはいえ、公式には、平日の午後に開催ということで一般の会社務めの方には現実的に難しいのも事実。<br />
そこで、たまたま弊社が三鷹から原宿に引っ越し、イベントができるスペースがあるということで、<br />
夜のカフェをやろうという話をプログラマーズカフェの方々に持ちかけました。<br />
すると主催のkuippaさんをはじめ、プログラマーズカフェに参加している数名に賛同していただき開催に至りました。<br />
以下が今回の実行委員会的なメンバー。</p>
<br />
<ul>
    <li><a href="http://twitter.com/2celeb" target="_blank">@2celeb</a></li>
    <li><a href="http://twitter.com/jishiha" target="_blank">@jishiha</a></li>
    <li><a href="http://twitter.com/kohyama" target="_blank">@kohyama</a></li>
    <li><a href="http://twitter.com/kuippa" target="_blank">@kuippa</a></li>
    <li><a href="http://twitter.com/naoranger" target="_blank">@naoranger</a></li>
    <li><a href="http://twitter.com/THashidate"  target="_blank">@THashidate</a></li>
    <li><a href="http://twitter.com/hisasue " target="_blank">@hisasue</a></li>
</ul>
<br />
<h3>次回</h3>
<br />
<p>さて、実は、次回については、既に話を始めています。<br />
興味のある方は是非参加してください。<br />
告知は</p>
<br />
<p>三鷹プログラマーズカフェ (pgcafe) on Twitter<br />
<a href="http://twitter.com/pgcafe" target="_blank">http://twitter.com/pgcafe</a></p>
<br />
<p>で行いますので、気になる方はフォローしてください。</p>
<br />
<p>最後に、弊社で開催と言っていますが、ここのオフィスはそもそも<a href="http://www.sinap.jp/" target="_blank">株式会社シナップ</a>さんのオフィスで弊社がオフィスシェアをさせていただいている場所です。<br />
この素敵なオフィス空間を無償でイベントに使わせてくださったシナップさんにも感謝します。</p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2981&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2981/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2981" />
	</item>
		<item>
		<title>Google Buzz は全然使えない。 だがそれがいい!!</title>
		<link>http://www.flatz.jp/archives/2951</link>
		<comments>http://www.flatz.jp/archives/2951#comments</comments>
		<pubDate>Tue, 23 Feb 2010 10:30:26 +0000</pubDate>
		<dc:creator>hisasue</dc:creator>
				<category><![CDATA[FLATzブログ]]></category>

		<guid isPermaLink="false">http://www.flatz.jp/?p=2951</guid>
		<description><![CDATA[
久末です。

Google Buzz(以下、Buzz)は今のところカオスです。
そしてBuzzの中ではBuzzについての話が多く、何かに利用しようと思っている人には全く使えないかも知れません。

一方、Buzzの中では [...]]]></description>
			<content:encoded><![CDATA[<p>
</p><p>久末です。</p>
<br />
<p>Google Buzz(以下、Buzz)は今のところカオスです。<br />
そしてBuzzの中ではBuzzについての話が多く、何かに利用しようと思っている人には全く使えないかも知れません。</p>
<br />
<p>一方、Buzzの中ではBuzzに対して良好なコメントが見受けられます。<br />
中にはTwitterやFacebookをやめてBuzzに移ったという発言もあるほどで、何らかの中毒的な要素はあるようです。<br />
例えば、多くのユーザをフォローすれば多くのユーザからフォローされ、投稿すると、早ければ1分〜数分で複数のコメントが付きます。<br />
反応しやすいBuzzには数百のコメントが付くこともあります。</p>
<br />
<p>他方、Buzzの外ではBuzzに対して批判的な意見も少なくありません。<br />
リリースされたばかりのサービスではありがちなので、無視しましょう。<br />
Twitterだってはじめはそんなもんでした。</p>
<br />
<p>さて、ここで私が投下したものをご紹介します。</p>
<br />
<p><a href="http://www.google.com/buzz/hisasue/NL4j1MqWKMx/フォローの数のわりに新しい">http://www.google.com/buzz/hisasue/NL4j1MqWKMx/フォローの数のわりに新しい</a></p>
<br />

<blockquote><p>フォローの数のわりに新しい投稿があんまりないのかな？<br />
代わりにスレッドにコメントする投稿が多いとかなのかな？</p></blockquote>
<p>
<br />
</p><p>とBuzzった内容には38のコメントがつきました。<br />
ここでは、Buzzは(Twitter)より会話的だというコメントが多く見られました。<br />
会話の連続性を妨げるようなTwitter雪崩(Twitterと連携しているユーザのつぶやきが<br />
Buzzの画面に一気に流れる現象)のようなものは敬遠され、<br />
コメントしやすいネタを提供といったものには好反応を得られるということでしょうか。</p>
<br />
<p>次。</p>
<br />
<p><a href="http://www.google.com/buzz/hisasue/g9t46SShA9a/Buzzるほどでもないスレですが">http://www.google.com/buzz/hisasue/g9t46SShA9a/Buzzるほどでもないスレですが</a></p>
<br />

<blockquote><p>Buzzるほどでもないスレですが？<br />
テキトーな会話とか独り言とか歓迎</p></blockquote>
<p>
<br />
</p><p>という私の投稿では現在のところ70のコメントが付いています。<br />
これは数日間にわたって、ゆるい雰囲気のなか、コメントが続いている状態で、<br />
2ちゃんねるのまったりとしたスレッドのようです。</p>
<br />
<p>また、Buzzは現在フォロー数の制限がありませんので、<br />
数十〜数百のフォローは当たり前で、数千から数万人をフォローしている強者もいます。<br />
そのフォロー数を可能にしているのは様々な言語圏のユーザです。<br />
翻訳サイトの力を借りるなどして、積極的に異言語ユーザのBuzzにもコメントするユーザも珍しくありません。</p>
<br />
<p>私も中国語のBuzzに「日本人」という発言を見てコメントしてみました。</p>
<br />
<p><a href="http://www.google.com/buzz/113897357861978367159/1yTZ95D8niZ/好多日本人FOLLOW-我-怎么回事">http://www.google.com/buzz/113897357861978367159/1yTZ95D8niZ/好多日本人FOLLOW-我-怎么回事</a></p>
<br />

<blockquote><p>Edward Huang       　好多日本人FOLLOW 我，怎么回事？<br />
(日本人はなぜ私をフォローするんだ？)<br />
Takahiro HISASUE   It&#8217;s not problem for them that following person is Japanese or not<br />
(日本人とか関係ないんだよ)<br />
Edward Huang       　Yes,indeed,I am just curious. What a pity,I don&#8217;t speak Japanese<br />
(まったく。不思議だよ。残念ながら私は日本語分からないしね)<br />
Takahiro HISASUE   Im a Japanese. But talking with you in English. It&#8217;s so fun.<br />
(私は日本人だよ。でも英語で話せるから結構面白い)<br />
jan zx             　　　　　ますます面白くなったね！<br />
(※中国語圏と思われる人が日本語でコメントしたもの)</p></blockquote>
<p>
<br />
</p><p>(()は私が翻訳したもの)</p>
<br />
<p>こんな感じです。</p>
<br />
<p>もちろん、まじめな議論もあったりします。<br />
以下のBuzzはBuzzにFacebookにあるようなゲームは必要だろうか？という話です。<br />
200以上のコメントが付いているようです。</p>
<br />
<p><a href="http://www.google.com/buzz/BuzzUsers/VoXtjjD9xrw/Social-Games-like-Farmville-on-Google-Buzz">http://www.google.com/buzz/BuzzUsers/VoXtjjD9xrw/Social-Games-like-Farmville-on-Google-Buzz</a></p>
<br />

<blockquote><p>Social Games like Farmville on Google Buzz?<br />
<br />
Social Games Like Farmville and Google Buzz?<br />
This is one of the biggest issues I have been hearing discussed about the future of Google Buzz. There are two ends of the argument for whether Google should allow social games like Farmville, and Mafia Wars to be allowed on Buzz. One thing is almost certain. We will see apps being developed specifically for Google Buzz in the near future. Just like you can use apps in Google Wave, I fully expect to have the same features in Buzz. Social gaming would surely make buzz even more attractive</p></blockquote>
<p>
<br />
</p><p>というわけで、</p>
<br />
<p>「で？」「だから？」「なんなの？」「Googleがマイクロソフト化するの？」</p>
<br />
<p>と感じる方も多いと思います。</p>
<br />
<p>「○○でいいじゃん」</p>
<br />
<p>と思えるサービスもあるでしょう。<br />
私もこんなにフォローして意味あるのかなと思いながらが、<br />
ちょっと多めにフォローを繰り返し、Buzzの画面をPCや携帯から覗いています。</p>
<br />
<p>しかし、積極的にやってみるとBuzzにはBuzzの味わいがあります。<br />
デジタルなものに味わいがあるのかかどうか分かりませんが、何となくそういう感じなので、しかたがありません。<br />
というわけで、Buzzを上手く説明できる気がしなかったので、今回は私が実際に使ってみたことを、かいつまんでご紹介してみました。<br />
まとめるべきところをまとめず、適当に何となく終わってみるのもBuzz的かなぁ、なーんて。</p>
<br />
<p>お粗末様でした。</p>
<br />
<p>P.S.<br />
よかったら、フォローしてください。<br />
<a href="http://www.google.com/profiles/hisasue#buzz">http://www.google.com/profiles/hisasue#buzz</a></p>

<img src="http://www.flatz.jp/?ak_action=api_record_view&id=2951&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.flatz.jp/archives/2951/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.flatz.jp/archives/2951" />
	</item>
	</channel>
</rss>
