<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>hori-uchi.com</title>
  <link rel="alternate" type="text/html" href="http://hori-uchi.com/" />
  <modified>2009-09-14T08:43:50Z</modified>
  <tagline>Perlを中心とした技術系の話などをつらつら</tagline>
  <id>tag:hori-uchi.com,2009://1</id>
  <generator url="http://www.movabletype.org/" version="3.32-ja">Movable Type</generator>
  <copyright>Copyright (c) 2009, horiuchi</copyright>
  <entry>
    <title>Bloggerに引っこしました。</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000461.html" />
    <modified>2009-09-14T08:43:50Z</modified>
    <issued>2009-09-14T17:41:11+09:00</issued>
    <id>tag:hori-uchi.com,2009://1.461</id>
    <created>2009-09-14T08:41:11Z</created>
    <summary type="text/plain">ほとんど更新していないこのブログですが、この度、Bloggerに引っこしました。 http://blog.hori-uchi.com/ 今後はこちらを不定期に更新していく予定です。...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >ほとんど更新していないこのブログですが、この度、Bloggerに引っこしました。</p>
<p ><a href="http://blog.hori-uchi.com/"><a href="http://blog.hori-uchi.com/" onClick="window.open(this.href); return false;" >http://blog.hori-uchi.com/</a></a></p>
<p >今後はこちらを不定期に更新していく予定です。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>10日でおぼえるPython入門教室</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000460.html" />
    <modified>2009-06-03T10:32:32Z</modified>
    <issued>2009-06-03T19:12:00+09:00</issued>
    <id>tag:hori-uchi.com,2009://1.460</id>
    <created>2009-06-03T10:12:00Z</created>
    <summary type="text/plain">CMSコミュニケーションズの寺田さんから「10日でおぼえるPython入門教室」を献本いただきました! どうもありがとうございます!! ちょうど僕の中で「Python」が熱くなっていたところだったんです! まさにベストなタイミング! 10日...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>python</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >CMSコミュニケーションズの寺田さんから「10日でおぼえるPython入門教室」を献本いただきました!</p>
<p >どうもありがとうございます!!</p>
<p >ちょうど僕の中で「Python」が熱くなっていたところだったんです!</p>
<p >まさにベストなタイミング!</p>
<p >10日目にはGoogle App Engineの使い方の解説もあるみたい。</p>
<p >これからじっくり読んでみます。</p>
<br />
<p ><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798118753/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51iy-nMV8aL._SL160_.jpg" alt="10日でおぼえる Python 入門教室" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798118753/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank">10日でおぼえる Python 入門教室</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4798118753/horiuchiweblo-22/ref=nosim/" title="10日でおぼえる Python 入門教室" target="_blank">amazlet</a> at 09.06.03</div></div><div class="amazlet-detail">穂苅 実紀夫 寺田 学 中西 直樹 堀田 直孝 永井 孝 <br />翔泳社 <br />売り上げランキング: 5963<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798118753/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>OpenPNE　flipclip小窓スクリプト　新URL対応版</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000459.html" />
    <modified>2009-03-13T17:32:56Z</modified>
    <issued>2009-03-14T01:43:33+09:00</issued>
    <id>tag:hori-uchi.com,2009://1.459</id>
    <created>2009-03-13T16:43:33Z</created>
    <summary type="text/plain">FlipClpリニューアルに伴って、クリップのURLを下記のように変更しました。 旧URL http://www.flipclpi.net/{userid}/{clip_no} 新URL http://www.flipclpi.net/{c...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>FlipClip</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >FlipClpリニューアルに伴って、クリップのURLを下記のように変更しました。</p>
<p >旧URL</p>
<pre>
<a href="http://www.flipclpi.net/{userid}/{clip_no}" onClick="window.open(this.href); return false;" >http://www.flipclpi.net/{userid}/{clip_no}</a>
</pre>
<p >新URL</p>
<pre>
<a href="http://www.flipclpi.net/{clip_no}" onClick="window.open(this.href); return false;" >http://www.flipclpi.net/{clip_no}</a>
</pre>
<p >旧URLから新URLへはリダイレクトするようにしているので旧URLはそのままにしておいて問題ないのですが、クリップのURLを正規表現でマッチさせてごにょごにょしたりしている場合、新URLだとマッチせずうまく動かないってことがおこっちゃってます。</p>
<p >OpenPNEの小窓機能もそのひとつで、新URLを貼り付けるとうまくURLがマッチせず、動画が表示されなくなってしまってます。</p>
<p >OpenPNEの中の人が対応してくれると思いますが、取り急ぎ、新URLでも動くものをのっけておきます。</p>
<p >以下のflipclip.net.js、www.flipclip.net.jsをダウンロードして、public_html/cmd/に上書きコピーすればOKです。</p>
<pre>
OpenPNE　flipclip小窓スクリプト　新URL対応版
 <a href="http://hori-uchi.com/misc/flipclip.net.js">flipclip.net.js</a>
 <a href="http://hori-uchi.com/misc/www.flipclip.net.js">www.flipclip.net.js</a>
</pre>]]>
      
    </content>
  </entry>
  <entry>
    <title>FlipClipがリニューアルしました!</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000458.html" />
    <modified>2009-03-11T02:41:20Z</modified>
    <issued>2009-03-11T11:00:48+09:00</issued>
    <id>tag:hori-uchi.com,2009://1.458</id>
    <created>2009-03-11T02:00:48Z</created>
    <summary type="text/plain">FlipClipがリニューアルしました。 詳しい内容はこちら http://blog.flipclip.net/2009/03/post_57.html 今回のリニューアルで体感できるほど、サイトのレスポンスが上がったと思います。 今までサ...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>FlipClip</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >FlipClipがリニューアルしました。</p>
<p >詳しい内容はこちら</p>
<p ><a href="http://blog.flipclip.net/2009/03/post_57.html" onClick="window.open(this.href); return false;" >http://blog.flipclip.net/2009/03/post_57.html</a></p>
<p >今回のリニューアルで体感できるほど、サイトのレスポンスが上がったと思います。</p>
<p >今までサービス全体のレスポンスを下げていた、全レコードに対する検索を見直すことで、DBの負荷が50〜100分の1になりました。</p>
<p >レコードの検索に対して、様々な場面を想定して、柔軟に条件を指定検索できるような実装をしてしまっていたのが、DBのレスポンスを悪くして、サイトを重くしていた主な原因であり、反省する点です。</p>
<p >今回の件で、<strong>「なんでもできる」ものは「なんにもできない」</strong>のと同じだってことを痛感しました。</p>
<p >リーンな開発を心がけようと心に誓いました。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>DjangoXPython</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000457.html" />
    <modified>2009-02-12T09:52:32Z</modified>
    <issued>2009-02-12T18:28:58+09:00</issued>
    <id>tag:hori-uchi.com,2009://1.457</id>
    <created>2009-02-12T09:28:58Z</created>
    <summary type="text/plain">僕のとなりの席の露木さんがDjangoの本を書きました! 「ディージャンゴ」じゃないよ「ジャンゴ」だよ。 Googleも使ってるPythonのフレームワークで、優秀なadmin機能が標準装備されていたり、テンプレートの継承ができたりします。...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >僕のとなりの席の露木さんがDjangoの本を書きました!</p>
<p >「ディージャンゴ」じゃないよ「ジャンゴ」だよ。</p>
<p >Googleも使ってるPythonのフレームワークで、優秀なadmin機能が標準装備されていたり、テンプレートの継承ができたりします。</p>
<p >僕もDjangoに(露木さんに?)インスパイアされてテンプレートの継承っぽいことができるTTのプラグイン書いて、FlipClipで使ってます。</p>
<p ><img src="http://img.skitch.com/20090212-c3fb7uk3af8wdb6jepjbm9u9e8.preview.jpg" /></p>
<p ><div class="amazlet-box"><div class="amazlet-info"><div class="amazlet-name"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/477413760X/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank">Django×Python</a><div class="amazlet-powered-date">posted with <a href="http://www.amazlet.com/browse/ASIN/477413760X/horiuchiweblo-22/ref=nosim/" title="Django×Python" target="_blank">amazlet</a> at 09.02.12</div></div><div class="amazlet-detail">露木 誠 <br />技術評論社 <br />売り上げランキング: 5011<br /></div><div class="amazlet-link"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/477413760X/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer"></div></div></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>友人の奥さんがサロンをオープンしました。</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000456.html" />
    <modified>2008-06-04T10:51:12Z</modified>
    <issued>2008-06-04T19:46:48+09:00</issued>
    <id>tag:hori-uchi.com,2008://1.456</id>
    <created>2008-06-04T10:46:48Z</created>
    <summary type="text/plain">久しぶりの更新かつ、まったくPerlとは関係ありませんが、、 同僚の奥さんが、浦和にまつげエクステ専門サロンをオープンするそうです。 自宅サロンでゆっくり丁寧にカウンセリング、施術をしてくれるそうなので、興味のある方は是非チェックしてみてく...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >久しぶりの更新かつ、まったくPerlとは関係ありませんが、、</p>
<p >同僚の奥さんが、浦和にまつげエクステ専門サロンをオープンするそうです。</p>
<p >自宅サロンでゆっくり丁寧にカウンセリング、施術をしてくれるそうなので、興味のある方は是非チェックしてみてください！</p>
<p ><a href="http://www.mido3.jp/">まつげエクステ専門サロンmido</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>adsという文字列を動画のURLに入れてはいけない</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000455.html" />
    <modified>2008-01-24T16:41:14Z</modified>
    <issued>2008-01-25T01:35:49+09:00</issued>
    <id>tag:hori-uchi.com,2008://1.455</id>
    <created>2008-01-24T16:35:49Z</created>
    <summary type="text/plain">ユーザーから動画が見れなくなったという問い合わせが来たので確認すると、自分達の環境では普通に見れる。原因がよくわからない。 詳しく聞いてみるとどうやらIE7 ProというIE 7のAdd-onを入れてから見れなくなったらしい。ということでそ...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>WebDevelopment</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >ユーザーから動画が見れなくなったという問い合わせが来たので確認すると、自分達の環境では普通に見れる。原因がよくわからない。</p>
<p >詳しく聞いてみるとどうやらIE7 ProというIE 7のAdd-onを入れてから見れなくなったらしい。ということでそれを入れてみたところ見事に動画が再生されなくなった。</p>
<p >さらに詳しく調べていくと、IE7 ProのFlash広告をブロックする機能が、プレイヤーが取得しようとする動画を広告とみなしてブロックしてしまい、動画を取得できないため再生できないことがわかった。</p>
<p >ブロックされていた動画のURLがこれ。</p>
<p ><a href="http://www.flipclip.net/ads/logo_animation_a.flv" onClick="window.open(this.href); return false;" >http://www.flipclip.net/ads/logo_animation_a.flv</a></p>
<p >この広告ブロック、広告かどうかの判定をURLにテキストマッチをかける形で行っていて、「/ads/」という部分が判定にひっかかていたみたい。</p>
<p >原因がわかれば対応は簡単!</p>
<p >動画のURLを変更することで無事問題解決しました。</p>
<p >めでたしめでたし。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>「FFmpegで作る動画共有サイト」が発売されます!</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000454.html" />
    <modified>2008-01-18T04:07:47Z</modified>
    <issued>2008-01-18T12:21:13+09:00</issued>
    <id>tag:hori-uchi.com,2008://1.454</id>
    <created>2008-01-18T03:21:13Z</created>
    <summary type="text/plain">動画共有サイトを作ってみたいという方向けの書籍「FFmpegで作る動画共有サイト」が1/29にに毎日コミュニケーションズさんから発売されます! FFmpegとはというところから始まり、インストールから各言語でのFFmpegの使いかた、実際に...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>book</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >動画共有サイトを作ってみたいという方向けの書籍「<a href="http://www.amazon.co.jp/exec/obidos/ASIN/483992466X/horiuchiweblo-22/ref=nosim/">FFmpegで作る動画共有サイト</a>」が1/29にに毎日コミュニケーションズさんから発売されます!</p>
<p >FFmpegとはというところから始まり、インストールから各言語でのFFmpegの使いかた、実際にサイトを構築するところまで入ったてんこ盛りな書籍です。</p>
<p >僕も4章のPerlでFFmpegを使うという部分を書きました。</p>
<p >僕が書いた部分ですが、まずはシンプルにsystem関数を使ってPerlからffmpegを実行する方法をサンプルスクリプトを使って紹介し、そのスクリプトをffmpegコマンドの実行結果を取得したり、タイムアウト処理をすることができるように拡張していくという内容になっています。</p>
<p >拡張していくにあたって、誰でも簡単に試せるよう、CPANモジュールは使わず、標準モジュールと組み込み関数のみを使うようにしました。</p>
<p >ただ、CPANモジュールの便利さも知ってもらいたかったので、ここまでに拡張したスクリプトをCPANモジュールを使って書くとどうなるか?というのを最後に紹介しています。</p>
<p >ここではmizzyさん作の<a href="http://search.cpan.org/~mizzy/FFmpeg-Command/">FFmpeg::Command</a>を使ってサンプルコードを書きました。</p>
<p >今回CPANモジュールを使うコードと使わないコードを書いてみて、改めてCPANモジュールの便利さを痛感しました。</p>
<p >これを読んで、Perlっていいかも、ちょっと試してみようかなと思ってくれる方が少しでも増えたら幸いです。</p>
<br />
<p ><div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/483992466X/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/218OfCjwUzL.jpg" alt="FFmpegで作る動画共有サイト" style="border: none;" /></a></div><div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%"><div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/483992466X/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank">FFmpegで作る動画共有サイト</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/483992466X/horiuchiweblo-22" title="FFmpegで作る動画共有サイト" target="_blank">amazlet</a> on 08.01.18</div></div><div class="amazlet-detail">月村 潤 本間 雅洋 堀田 直孝 原 一浩 足立 健誌 尾花 衣美 堀内 康弘 寺田 学 <br />毎日コミュニケーションズ (2008/01/29)<br />売り上げランキング: 15883<br /></div><div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/483992466X/horiuchiweblo-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div></p>
<br />
<p ><blockquote></p>
<p >
    ・予価：2,940円（税込）
</p>
<p >
    ・B5変型判　272ページ
</p>
<p >
    ・ISBN978-4-8399-2466-9
</p>
<p >
    ・発売日：2008年01月29日
</p>
<p >
    ■内容紹介
</p>
<p >
    YouTubeやニコニコ動画など、最近のWebサービスでは動画共有サービスが大人気です。その多くのサイトで、動画投稿時の変換に利用されているのがオープンソースの動画変換ソフト（エンジン）「FFmpeg」です。
</p>
<p >
    FFmpegは、様々な動画・音声形式の変換に対応しており、動画共有サービス立ち上げの際に必須の技術ですが、これまでまとまった解説書がありませんでした。本書は、動画共有サイトの開発を日常的に行っている著者による、FFmpegを利用して動画共有サービスを構築するための技術解説書になります。
</p>
<p >
    本書では、動画に関する基本的な解説から、FFmpegのインストールや使い方、Perl、PHP、Python、Javaの4つのプログラム言語での利用方法、字幕を入れられるFlashを使った動画プレイヤーの制作方法、Pythonを使った動画共有サイトの構築まで、サンプルを交えて解説します。本書で解説するのは、比較的小規模での動画共有サイトの作り方となりますが、サーバサイドの工夫次第では、大規模な動画共有サイトにも発展させることも可能です。
</p>
<p >
    動画共有サイトの開発環境は多岐に渡り、本書はそのエッセンスをまとめたもので、すべての環境や手順は解説してません。また、本書の開発環境は、著者が日常的に利用している環境で、必ずしも一般的な環境ではないかもしれません。ただ、実際に動画共有サイト構築のために、著者自身が試行錯誤しながら身につけた知識や技術は、FFmpegを利用した動画共有サイト構築の際に、必ず参考になると考えています。
</p>
<p >
    著者：原一浩・寺田学・本間雅洋・足立健誌・堀内康弘・堀田直孝・月村潤・尾花衣美
</p>
<p ></blockquote></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>FlipClipでクリップ検索用フィード公開しました。</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000452.html" />
    <modified>2007-02-01T11:34:00Z</modified>
    <issued>2007-02-01T19:53:31+09:00</issued>
    <id>tag:hori-uchi.com,2007://1.452</id>
    <created>2007-02-01T10:53:31Z</created>
    <summary type="text/plain">最近どこもかしこもAPI公開なご時勢ですが、FlipClipもクリップ検索用のフィードをAPI第1段として公開しました。 FlipClip開発者向け情報のページ http://www.flipclip.net/developer/ フィード...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>FlipClip</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >最近どこもかしこもAPI公開なご時勢ですが、<a href="http://www.flipclip.net/">FlipClip</a>もクリップ検索用のフィードをAPI第1段として公開しました。</p>
<br />
<p >FlipClip開発者向け情報のページ</p>
<p ><a href="http://www.flipclip.net/developer/"><a href="http://www.flipclip.net/developer/" onClick="window.open(this.href); return false;" >http://www.flipclip.net/developer/</a></a></p>
<br />
<p >フィードと言うよりAPIといったほうが世間の受けはよさそうな気がしますが、フィードはフィードなんで、フィードという名前にしときました。</p>
<br />
<p >今のところ、以下のクリップを取得できます。</p>
<ul >
<li > 一般公開クリップ</li>
<li > 特定ユーザーのクリップ</li>
<li > 特定ユーザーの友だちのクリップ</li>
<li > 特定ユーザーのお気に入りクリップ</li>
<br />
</ul>
<p >フィードのフォーマットはAtomフィード、JSONフィード、RSS2.0を用意しました。</p>
<p >フォーマットの指定はクエリパラメータでできるんですが、別の方法として、Acceptヘッダを使った指定ができるようにしてあります。</p>
<p >リソースを取得するためのURLがあって、そのURLに対してこのフォーマットでくれというと、その形式で返す、というようにRESTっぽくしたかったので、つけました。</p>
<br />
<p >それと、絞り込み機能を充実させています。</p>
<p >タグやフリーワード、カテゴリ、撮影日時に位置情報など、対応できそうなのにはひととおり対応してみました。</p>
<br />
<p >また、ソートもいろいろな基準でできるようにしてあります。</p>
<p >フィードなんで基本日付以外でソートできるのは、よろしくないような気もしましたが、</p>
<p >使い勝手を考えて、再生回数とか投票の数などでソートできるようにしてあります。</p>
<br />
<p >もうひとつ、フィードの認証も実装してあります。</p>
<p >認証にはWSSEを採用しました。</p>
<p >フィードのリクエストの際にWSSEヘッダを付与してリクエストを送れば、</p>
<p >認証されたユーザの権限でクリップが取得できるようになります。</p>
<p >たとえば、自分のクリップなら、プライバシー設定に関係なくすべて取得できますし、</p>
<p >自分の友だちのクリップで友だち公開なクリップも取得できます。</p>
<br />
<p >使ってみて、気づいた点、使いにくい点などありましたら、お知らせいただけるとうれしいです。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>mysqldumpで文字化けしないためのメモ</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000450.html" />
    <modified>2006-12-05T06:29:41Z</modified>
    <issued>2006-12-05T11:07:42+09:00</issued>
    <id>tag:hori-uchi.com,2006://1.450</id>
    <created>2006-12-05T02:07:42Z</created>
    <summary type="text/plain">ローカルの開発環境で使っていたMySQLなんですが、何も考えずデフォルトの設定で使っていたら、mysqldumpした際に、データが文字化けして、ちょっとは待ったのでメモ。 MySQLのバージョンは4.1.20。 文字化けする原因は、mysq...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>mysql</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >ローカルの開発環境で使っていたMySQLなんですが、何も考えずデフォルトの設定で使っていたら、mysqldumpした際に、データが文字化けして、ちょっとは待ったのでメモ。</p>
<p >MySQLのバージョンは4.1.20。</p>
<p >文字化けする原因は、mysqldumpがデフォルトでは、文字コードをUTF-8で出力するようになっていて、フィールドの型がUTF-8でない場合は、自動でUTF-8に変換するためのようです。</p>
<p >僕が使っていたDBは文字コードについて特に何も設定していなかったので、デフォルトの文字コードであるlatin1になっていました。</p>
<p >なので、これもmysqldumpするとlain1 -> UTF-8な変換が自動で行われ文字化けしたということのようです。納得。</p>
<p >この自動変換を行わないようにすれば解決するはず。ということで調べてみると、--default-character-setというオプションを使うとよいことがわかりました。これを使ってデフォルトの文字コードをDBの文字コードとあわせてやることで、自動変換が行われなくなり、文字化けしないようです。</p>
<p >で、結局以下のコマンドで文字化けせずdumpすることができました。</p>
<pre>
mysqldump --default-character-set=latin1 -uroot --all-databses > db.dump
</pre>
<p >これでデータ自体は文字化けしなくなりますが、これをそのまま、UTF-8なDBに取り込むと、取り込んだデータが文字化けしてしました。</p>
<p >ダンプしたデータを見てみると、所々にSET NAMES latin1とかDEFAULT CHARSET=latin1のように「latin1]の文字が。。</p>
<p >これが原因だったようで、ワンライナーでlatin1をutf8に変更してからインポートしたところ、文字化けせずに取り込むことができました。</p>
<pre>
perl -pi -e 's/latin1/utf8/' db.dump
</pre>]]>
      
    </content>
  </entry>
  <entry>
    <title>SledgeでもRESTfulなアプリケーションを書きたい！</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000449.html" />
    <modified>2006-11-25T00:24:46Z</modified>
    <issued>2006-11-25T00:48:03+09:00</issued>
    <id>tag:hori-uchi.com,2006://1.449</id>
    <created>2006-11-24T15:48:03Z</created>
    <summary type="text/plain">今日参加した第9回XML開発者の日の川村さんによる「Ruby on RailsにみるRESTfulアプリケーションの方向性」の話を聞いて、SledgeでもRESTfulなコードを簡単に書きたいと思いたち、ちょっとパッチを書いてみました。  ...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>Sledge</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >今日参加した<a href="http://www.asahi-net.or.jp/~eb2m-mrt/kaihatsu9.html">第9回XML開発者の日</a>の川村さんによる「Ruby on RailsにみるRESTfulアプリケーションの方向性」の話を聞いて、SledgeでもRESTfulなコードを簡単に書きたいと思いたち、ちょっとパッチを書いてみました。</p>
<pre class="perl">
 --- Sledge/Pages/Base.pm.orig   2006-11-25 00:40:59.000000000 +0900
 +++ Sledge/Pages/Base.pm        2006-11-25 09:27:50.000000000 +0900
 @@ -8,6 +8,9 @@
  use strict;
  use base qw(Class::Accessor Class::Data::Inheritable);
 
 +use vars qw($MethodQueryKey);
 +$MethodQueryKey  = '_method';
 +
  __PACKAGE__->mk_accessors(
      'r',                       # Apache::Request or Sledge::Request::CGI
      'session',                 # Sledge::Session
 @@ -81,10 +84,16 @@
      eval {
         $self->init_dispatch($page);
         $self->invoke_hook('BEFORE_DISPATCH') unless $self->finished;
 -       if ($self->is_post_request && ! $self->finished) {
 +       if ( $self->is_put_request && ! $self->finished) {
 +           my $putmeth = 'put_dispatch_' . $page;
 +           $self->$putmeth() if $self->can($putmeth);
 +       } elsif ( $self->is_delete_request && ! $self->finished) {
 +           my $deletemeth = 'delete_dispatch_' . $page;
 +           $self->$deletemeth() if $self->can($deletemeth);
 +       } elsif ($self->is_post_request && ! $self->finished) {
             my $postmeth = 'post_dispatch_' . $page;
             $self->$postmeth() if $self->can($postmeth);
 -       }
 +    }
         unless ($self->finished) {
             my $method = 'dispatch_' . $page;
             $self->$method();
 @@ -188,6 +197,16 @@
      return $self->r->method eq 'POST';
  }
 
 +sub is_put_request {
 +    my $self = shift;
 +    return ($self->r->method eq 'PUT' || ($self->r->method eq 'POST' &&  lc($self->r->param($MethodQueryKey)) eq 'put'));
 +}
 +
 +sub is_delete_request {
 +    my $self = shift;
 +    return ($self->r->method eq 'DELETE' || ($self->r->method eq 'POST' && lc($self->r->param($MethodQueryKey)) eq 'delete'));
 +}
 +
  sub make_content {
      my $self = shift;
      # template output, then fillin forms
</pre>
<p >これを使って書いたPagesクラスのサンプルはこんな感じです。</p>
<pre class="perl">
package MyProj::Pages::Items;
use strict;
use base qw(MyPfoj::Pages);
sub dispatch_index {
    my $self = shift;
    my $item_id = int $self->r->param('id');
    if ( $item_id ){
        # アイテム単体を返すコードを記述
    } else {
        # アイテムリストを返すコードを記述
    }
}
sub post_dispatch_index {
    my $self = shift;
    # アイテムを追加するコードを記述
}
sub put_dispatch_index {
    my $self = shift;
    # アイテムを更新するコードを記述
}
sub delete_dispatch_index {
    my $self = shift;
    # アイテムを削除するコードを記述
}
</pre>
<p >MyProj::Pages::Itemsクラスがアイテムをあらわすリソースに対応していて、</p>
<p >各メソッドにあわせて、CRUDの操作を実行するという風に書けてすっきりする気がします。</p>
<p >ブラウザからはPUT,DELETEリクエストはできないので、_method=putまたはdeleteとクエリパラメータを使うことで代用しています。</p>
<p >こんなのいかがでしょうか？</p>]]>
      <![CDATA[<p >
 
</p>]]>
    </content>
  </entry>
  <entry>
    <title>Akamaiで認証付きコンテンツを配信する方法</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000448.html" />
    <modified>2006-10-22T16:27:11Z</modified>
    <issued>2006-10-22T20:18:04+09:00</issued>
    <id>tag:hori-uchi.com,2006://1.448</id>
    <created>2006-10-22T11:18:04Z</created>
    <summary type="text/plain">IPAに脆弱性として提出されていた、ミクシィにアップロードされた画像がURLを直接たたけばログインしていなくても閲覧できる件が技術的には改修せず、ヘルプにその旨を記載することで決着したという話題について、その理由のひとつに画像の配信は一部、...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>Technology</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >IPAに脆弱性として提出されていた、ミクシィにアップロードされた画像がURLを直接たたけばログインしていなくても閲覧できる件が技術的には改修せず、ヘルプにその旨を記載することで決着したという話題について、その理由のひとつに画像の配信は一部、CDN（akamai）を使っているため、そこに認証をかけるのが難しいのではというものを見かけました。</p>
<p >このakamaiなのですが、実は、僕が開発運用している動画共有サイト<a href="http://www.flipclip.net/">FlipClip</a>でも、日ごとに増え続けるサーバへの負荷、トラフィックに対応すべく、動画の配信にこれを使えないかと検討してまして、先日akamaiの人にきていただいて話を聞いてみました。</p>
<p >このとき一番聞きたかったのがまさに今回のミクシィの件で話にでてきた「認証のかかったコンテンツをakamaiで配信できるのか？」という点でした。</p>
<p >というのもFlipClipでは動画・サムネールの配信はすべてmod_perlアプリケーションから動的に行っていて、動画に設定されたプライバシーからユーザのアクセス権を判定し、OKならば動画・サムネールを吐き出すという処理をおこなっているからです。</p>
<p >この質問に対してのakamaiの方からの回答は、3つの方法があるというものでした。</p>
<ol >
<li > akamai-FlipClip間でルールを決めて作成したCookieを使ってアクセス権を制御する方法</li>
<li > akamai-FlipClpi間でルールを決めて作成したクエリパラメータを使ってアクセス件を制御する方法</li>
<li > akamaiはIf-Modifiedヘッダ付きのリクエストを毎回FlipClipに送りつけ、認証はFlipClipに任せる方法</li>
</ol>
<p >1のCookieを使う方法と2のクエリパラメータを使う方法は、どちらもあらかじめakamaiとFlipClipの間で認証OKかNGかをakamaiが理解できるクッキー、クエリパラメータ生成ルールを決めておき、それを動画・サムネールのリクエストと一緒に送りつけると、それを元にakamaiが認証を行い、キャッシュがあればakamaiからコンテンツを返すという方法だそうです。</p>
<p >この方法の利点としては、</p>
<ul >
<li > akamaiが認証を行うので、動画のリクエストの際に、FlipClipまでリクエストが飛んでこず、FlipClipのサーバへの負荷はかなり減る</li>
</ul>
<p >という点があげられるんですが、欠点として、</p>
<ul >
<li > 認証箇所が2箇所（akamaiでの認証だけでなく、FlipClipでもCookieやクエリパラメータを生成する際に認証が必要）になってしまうため、セキュリティ的にリスクが大きくなってしまう</li>
<li > akamaiのためにそれ用の実装をしないといけない</li>
<li > 仮にクエリパラメータがばれたら誰でもアクセスできることになる</li>
<li > そもそもクエリパラメータをつけるなんてかっこ悪い</li>
</ul>
<p >という点があり、ちょっと微妙な感じだなーと感じました。</p>
<p >3の毎回FlipClip側に認証を求める方法ですが、これは、akamaiは認証は行わず、akamaiに動画・サムネールのリクエストが送られてきたら、そのリクエストにIf-Modified-SinceヘッダをつけてFlipClipのサーバに転送してくれるという方法だそうです。</p>
<p >これの利点は、</p>
<ul >
<li > アクセス制御はFlipClip側1箇所で行うので、ここだけを考えればいい。</li>
<li > 同じ動画・サムネールへのリクエストが多いという傾向があれば、キャッシュのヒット率があがり、FlipClipサーバからのトラフィックをぐんと軽減することが期待できる</li>
</ul>
<p >欠点としては、</p>
<ul >
<li > FlipClip側がIf-Modified-Sinceヘッダを理解できるようにしないといけない</li>
<li > 動画・サムネールへのアクセスがほどよく分散されているような傾向の場合は、キャッシュヒット率があまりあがらず、本サーバ側の負荷軽減は小さくなる</li>
<li > リクエストごとにFlipClip側にリクエストが飛ぶので、クッキーやクエリパラメータを使った方法よりは、サーバの負荷がかかる</li>
</ul>
<p >という点があげられますが、</p>
<p >1つ目の欠点は、すでにIf-Modified-Sinceは理解するようになっているので、問題なし。</p>
<p >2つ目の欠点は、FlipClipの動画の配信傾向を見ていると、パレートの法則にほぼ従っていて、1日に配信される動画のうち20％の動画の再生数が全体の再生数の約90％を占めているという状況なので、キャッシュのヒット率はかなり高くなりそうなので、問題なし。</p>
<p >3つ目の欠点はリクエストは毎回FlipClipのサーバまで飛んできますが、上記のとおりキャッシュがうまく働いてくれそうなので、FlipClipサーバはほとんど、302をレスポンスとして返すだけで済むはずで、負荷、トラフィックはかなり減らすことが期待できそうなので、まあ問題なし。</p>
<p >ということで、この方法はいいかもという感想でした。</p>
<p >このようにakamai経由でも認証付きコンテンツの配信はできそうなのですが、なぜミクシィがそれをできないのかというと単純にこの修正で影響を受ける箇所が多すぎて、直すに直せないってことなんじゃないかなーとか、静的に返していたコンテンツを動的にアプリケーションから吐き出すようにすると、パフォーマンスがでないと考えているのかなーとか考えちゃいますがほんとのところはどうなんでしょうねぇ。</p>
<br />
<p >via: <a title="スラッシュドット ジャパン | ミクシィ、画像に認可制御なしの欠陥を改修できず、ヘルプで弁解" href="http://slashdot.jp/security/06/10/17/1958219.shtml">スラッシュドット ジャパン | ミクシィ、画像に認可制御なしの欠陥を改修できず、ヘルプで弁解</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>Firefoxの「選択した部分のソースを表示」はJavaScriptで動的に生成したHTMLも表示される</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000447.html" />
    <modified>2006-10-04T01:43:28Z</modified>
    <issued>2006-10-04T10:24:04+09:00</issued>
    <id>tag:hori-uchi.com,2006://1.447</id>
    <created>2006-10-04T01:24:04Z</created>
    <summary type="text/plain">これ知りませんでした。「選択した部分のソースを表示」しても、普通にその部分の生のソースが出てくるだけかと思い込んでました。 最近はJemplateなんかを使って動的にHTMLを生成するというのをやることが多いんですが、これ、HTMLのメンテ...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >これ知りませんでした。「選択した部分のソースを表示」しても、普通にその部分の生のソースが出てくるだけかと思い込んでました。</p>
<p >最近はJemplateなんかを使って動的にHTMLを生成するというのをやることが多いんですが、これ、HTMLのメンテがしづらいとデザイナーさんからはすこぶる評判がわるかったんです。</p>
<p >これで少しはメンテが楽になるかなー。</p>
<p >via: <a title="subtechグループ - マングローブ - JavaScriptなんかでいじられた後の現在のソースを表示" href="http://subtech.g.hatena.ne.jp/h2u/20061002/1159762557">subtechグループ - マングローブ - JavaScriptなんかでいじられた後の現在のソースを表示</a></p>]]>
      
    </content>
  </entry>
  <entry>
    <title>巨大なFLVを再生中に他のリンクをクリックしてもなかなか移動できない現象を回避する方法</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000446.html" />
    <modified>2006-10-03T15:02:23Z</modified>
    <issued>2006-10-03T23:28:04+09:00</issued>
    <id>tag:hori-uchi.com,2006://1.446</id>
    <created>2006-10-03T14:28:04Z</created>
    <summary type="text/plain">FlipClipでクリップを見ていると、再生の途中で画面内のリンクをクリックして他のページに移動しようとしても、なかなか移動できなくてイライラすることがあったので、これを回避する方法がないものかと考えていたのですが、今日試した方法が有効だっ...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>WebDevelopment</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >FlipClipでクリップを見ていると、再生の途中で画面内のリンクをクリックして他のページに移動しようとしても、なかなか移動できなくてイライラすることがあったので、これを回避する方法がないものかと考えていたのですが、今日試した方法が有効だったので紹介します。</p>
<p >この現象は、再生している動画のサイズが大きい場合によく起こる現象で、リンクをクリックしてもブラウザはこの大きな動画の再生に忙しいのか、なかなか画面を切り替えてくれません。</p>
<p >そこで考えたのが、クリックした時に、再生している動画をけしてしまうという方法です。</p>
<p >試した方法は簡単で、リンクなどをクリックしてページが切り替わるタイミングで、再生中のフレームを含むdiv要素のinnnerHTMLを空にしてしまうというものです。</p>
<p >コードのイメージはこんな感じです。</p>
<pre>
 &lt;script type="text/javascript"&gt;&lt:!--
 Event.observe(window, 'beforeunload', function(){
     $('clipPlayer').innerHTML='';
 });
 --&gt;&lt;/script&gt;
</pre>
<p >最初はbeforeunloadではなくunloadで試してみましたが、タイミングが遅いらしく、効果がありませんでした。</p>
<p >beforeunloadはブラウザによっては動かないといった情報をどこかで見たような気がしたのですが、IE, FireFox, Safariでうまく動いたので、互換性に問題なしと判断し、FlipClipでもこの方法を早速採用しました。</p>
<p >画面の移動がスムースになって、いい感じです。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>特定のネットワークからは無制限に、外からのアクセスはパスワードを要求</title>
    <link rel="alternate" type="text/html" href="http://hori-uchi.com/archives/000445.html" />
    <modified>2006-10-03T14:27:58Z</modified>
    <issued>2006-10-03T23:14:44+09:00</issued>
    <id>tag:hori-uchi.com,2006://1.445</id>
    <created>2006-10-03T14:14:44Z</created>
    <summary type="text/plain">今までapacheでアクセス制限かけるときはIP制限ならIP制限だけ、標準認証なら標準認証だけしか設定したことがなかったし、それで事足りていたのでなにも困ることはなかったんですが、社内のネットワークやサーバ間で通信する相手からのアクセスは無...</summary>
    <author>
      <name>horiuchi</name>
      
      <email>horiuchi@vcube.com</email>
    </author>
    <dc:subject>apache</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://hori-uchi.com/">
      <![CDATA[<p >今までapacheでアクセス制限かけるときはIP制限ならIP制限だけ、標準認証なら標準認証だけしか設定したことがなかったし、それで事足りていたのでなにも困ることはなかったんですが、社内のネットワークやサーバ間で通信する相手からのアクセスは無制限に行いたいけど、その他のネットワークからのアクセスはパスワードで制限したいという状況になったので、ちょっと調べてみたら、結構簡単にできました。</p>
<pre>
Require valid-user
Allow from 192.168.1
Satisfy Any
</pre>
<p ><a href="http://httpd.apache.org/docs/2.0/ja/mod/core.html#satisfy">Apacheのドキュメント</a>に普通に書いてありました。マニュアルはちゃんとよんどかないとだめですね。</p>
<p >それにしてもSatisfy Anyってわかりやすい書き方ですね。どっちか満たせばOKって、覚えやすい。</p>]]>
      
    </content>
  </entry>

</feed>