<?xml version="1.0" encoding="utf-8" ?>


<?xml-stylesheet href="http://d.hatena.ne.jp/koba04/rssxsl" type="text/xsl" media="screen"?>


<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/koba04/rss">
<title>車輪を再発明 / koba04の日記</title>
<link>http://d.hatena.ne.jp/koba04/</link>
<description>車輪を再発明 / koba04の日記</description>

<dc:creator>koba04</dc:creator>
<dc:date>2013-04-22T00:34:33+09:00</dc:date>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://d.hatena.ne.jp/koba04/20130420/1366388757"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/koba04/20130419/1366300381"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/koba04/20130404/1365002456"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/koba04/20130330/1364620728"/>
<rdf:li rdf:resource="http://d.hatena.ne.jp/koba04/20130318/1363612951"/>
</rdf:Seq>
</items>
</channel>



<item rdf:about="http://d.hatena.ne.jp/koba04/20130420/1366388757">
<title>[Perl]Perl5.14でeval内の$@の挙動が変わっていた</title>
<link>http://d.hatena.ne.jp/koba04/20130420/1366388757</link>
<description> Try::LiteとException::Tinyで例外処理をやろうと導入していたのですが、どうやらネストさせてTry::Liteを使った場合に外側でうまく例外をキャッチ出来ないという現象が発生して悩んでました。 Try::Liteで外側で例外を取得出来なかった例 こんなコードです。 自分が使って</description>

<content:encoded><![CDATA[
<div class="section">
<p>Try::LiteとException::Tinyで例外処理をやろうと導入していたのですが、どうやらネストさせてTry::Liteを使った場合に外側でうまく例外をキャッチ出来ないという現象が発生して悩んでました。</p>
<br>

<h4> Try::Liteで外側で例外を取得出来なかった例</h4>
<p>こんなコードです。</p>
<p><script src="https://gist.github.com/5417491.js"></script></p>
<p>自分が使っているPerlのバージョンは5.14より古いものでしたので、ここにある通り外側で例外がキャッチできない状態でした。</p>
<p>die $@でも、$@-&#62;rethrowでもException::Tiny-&#62;throwでもダメでした。</p>
<br>

<h4> Twitterで解決</h4>
<p>その時には5.14以上で動くことは知らなくて悩んでいたところ、@hide_o_55さんが</p>
<p></p>
<div class="twitter-detail twitter-detail-left">
  <div class="twitter-detail-user">
    <a class="twitter-user-screen-name" href="http://twitter.com/hide_o_55">
      <img src="http://a0.twimg.com/profile_images/2243320064/my_icon_normal.png" alt="hide_o_55" height="48" width="48">
    </a>
  </div>
  <div class="twitter-detail-tweet">
    <p class="twitter-detail-text">
      @<a class="twitter-user-screen-name" href="http://twitter.com/koba04" target="_top">koba04</a> 期待する挙動をするのは、perl 5.14以降ですね
    </p>
    <p class="twitter-detail-info">
      <a href="http://twitter.com/hide_o_55/status/325072498880303106" class="twitter-detail-info-permalink"><span class="twitter-detail-info-date">2013-04-19</span> <span class="twitter-detail-info-time">11:24:57</span></a> <span class="twitter-detail-info-source">via <a href="http://twicca.r246.jp/" rel="nofollow">twicca</a></span> to @<a href="http://twitter.com/koba04/status/325061245864656897"  class="twitter-user-screen-name">koba04</a>
    </p>
  </div>
</div>
<p></p>
<p>と教えてくださり、試したところ確かにgistにある通り意図した通りに動きました。。</p>
<br>

<h4> 5.14からeval内の$@の挙動が変わった！？</h4>
<p>というわけで5.14のどの変更が影響しているのかなぁと思ったところ、ここに書かれているのが影響してそうだなということがわかりました。</p>
<blockquote>
<p>同様に eval の中の local $@ はスコープ内の例外を上書きすることは なくなりました。 以前は、巻き戻しによる $@ の復元によって、投げられた例外が 上書きされることがありました。 今では例外はとにかく eval に渡されます。 そのため、die の前の local $@ は安全です。</p>
</blockquote>
<p><a href="http://perldoc.jp/docs/perl/5.14.0/perl5140delta.pod#Exception32Handling" target="_blank">http://perldoc.jp/docs/perl/5.14.0/perl5140delta.pod#Exception32Handling</a></p>
<br>

<p>というわけでevalにして検証コードを書いてみました。evalの中でlocal $@ で値を入れてその後にdieしてみた動作です。</p>
<pre class="syntax-highlight">
<span class="synPreProc">#!perl</span>
<span class="synStatement">use </span><span class="synConstant">5.010</span>;

<span class="synStatement">eval</span> {
    <span class="synStatement">local</span> <span class="synIdentifier">$@</span> = <span class="synConstant">&#34;foo&#34;</span>;
    <span class="synStatement">die</span> <span class="synConstant">&#34;hoge&#34;</span>;
};
say <span class="synConstant">&#34;throw Exception [</span><span class="synIdentifier">$@</span><span class="synConstant">]&#34;</span> <span class="synStatement">if</span> <span class="synIdentifier">$@</span>;

<span class="synComment"># perl 5.12 (何も出力されない)</span>

<span class="synComment"># perl 5.14</span>
throw Exception [hoge at try.pl line <span class="synConstant">14.</span>
]
</pre>

<p>5.12ではevalを抜けた時に$@が巻き戻されて(？)、undefになってるんですかね...。ちなみにevalの前にlocal $@ = "init";などとしても結果は同じでした。</p>
<br>

<h4> というわけで</h4>
<p>5.14より前の環境でevalの中でlocal $@とやったり、Try::Liteをネストさせて使いたい場合は注意が必要かなと思いました。</p>
<p>Try::Liteが5.14より古い環境でもネストさせても動くようになると嬉しいので、pull req出来たらしたいなと思ったりしています。</p>
</div>
]]></content:encoded>
<dc:creator>koba04</dc:creator>
<dc:date>2013-04-20T01:25:57+09:00</dc:date>
<dc:subject>Perl</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/koba04/20130419/1366300381">
<title>[Perl][Amon2]Amon2::Plugin::Web::Rawというのを書いてみた</title>
<link>http://d.hatena.ne.jp/koba04/20130419/1366300381</link>
<description> Amon2::Plugin::Web::Rawというのを書いてみました。 追記ModuleをWeb::ImageからWeb::Rawに変更 https://github.com/koba04/Amon2-Plugin-Web-Raw 何 まぁ見ての通り、Pluginを読み込むとrender_rawっていうメソッドが生えてデータのtype(gif, png, jpeg, swf, zip)とバイ</description>

<content:encoded><![CDATA[
<div class="section">
<p>Amon2::Plugin::Web::Rawというのを書いてみました。</p>
<br>

<p><span style="color:#FF0000;" class="deco">追記ModuleをWeb::ImageからWeb::Rawに変更</p>
<p></span></p>
<br>

<p><a href="https://github.com/koba04/Amon2-Plugin-Web-Raw" target="_blank">https://github.com/koba04/Amon2-Plugin-Web-Raw</a></p>
<br>

<h4> 何</h4>
<p>まぁ見ての通り、Pluginを読み込むとrender_rawっていうメソッドが生えてデータのtype(gif, png, jpeg, swf, zip)とバイナリデータを渡すとPlack::Responseにして返してくれるだけのものです。</p>
<p>Pluginにするほどではないのですが毎回書くのは面倒なのでPluginにしてみました。</p>
<h4> 用途</h4>
<p>画像は通常は静的サーバーで配信すると思うのですが、アプリで合成して画像を出力したり、画像にもアプリと同様の認証をしたいという時に使えるかなと思っています。</p>
<br>

<h4> Dist::Milla便利</h4>

<ul>
<li> <a href="http://weblog.bulknews.net/post/46471116934/introducing-milla" target="_blank">http://weblog.bulknews.net/post/46471116934/introducing-milla</a></li>
<li> <a href="http://shoheik.hatenablog.com/entry/2013/04/13/132010" target="_blank">http://shoheik.hatenablog.com/entry/2013/04/13/132010</a></li>
</ul>
<p>今回はモジュール作るのにDist::Milla使ったのですが、Dist::Milla自体のインストールには時間かかりましたが本当に簡単にモジュールを作れたのでとても便利で良かったです。モジュール作るのどうすればいいのか悩まずにアプリのコード書くこと集中できました。</p>
<br>

<br>

<p>こういうのってCPANにあげたりしていいのかな。。PrePANとかにまずあげればいいのかな。</p>
</div>
]]></content:encoded>
<dc:creator>koba04</dc:creator>
<dc:date>2013-04-19T00:53:01+09:00</dc:date>
<dc:subject>Perl</dc:subject>
<dc:subject>Amon2</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/koba04/20130404/1365002456">
<title>「OAuth 2.0をはじめよう」を読んだ</title>
<link>http://d.hatena.ne.jp/koba04/20130404/1365002456</link>
<description> http://www.oreilly.co.jp/books/9784873115580/ OAuth？ OAuthといえば、twitterとかfacebookとかgithubとかと連携したサービスを作るときによく使うと思うのですが、その仕組みって理解できていますか？自分は結構曖昧です。 知識を整理 この本ではOAuth2はどういった仕組</description>

<content:encoded><![CDATA[
<div class="section">
<p><a href="http://www.oreilly.co.jp/books/9784873115580/" target="_blank">http://www.oreilly.co.jp/books/9784873115580/</a></p>
<br>

<h4> OAuth？</h4>
<p>OAuthといえば、twitterとかfacebookとかgithubとかと連携したサービスを作るときによく使うと思うのですが、その仕組みって理解できていますか？自分は結構曖昧です。</p>
<br>

<h4> 知識を整理</h4>
<p>この本ではOAuth2はどういった仕組みで認可しているということが簡単に書かれていて、わかっている人にとっては当たり前のことしか書いてないと思いますが、自分はイマイチ理解出来ていない部分もあったので知識を整理するという意味で読んでよかったです。</p>

<ul>
<li> ベアラートークン</li>
<li> リフレッシュトークン</li>
<li> 認可コード</li>
<li> インプリシットグラント</li>
<li> リソース所有者クレデンシャル</li>
<li> クライアントクレデンシャル</li>
<li> OpenID Connect</li>
</ul>
<p>などなど...</p>
<br>

<h4> 実際に使うときに</h4>
<p>OAuth2.0のAPIを使いたいときに、WebアプリやJavaScriptなどのクライアントアプリ、ネイティブアプリから使う場合など、それぞれの場合でaccess_tokenなどをどう扱えばいいのかいったことが書いてあってとても勉強になりました。</p>
<br>

<p>また現在だと古い部分もあるのかもですが、GoogleとFacebookのAPIを例にして、実際にどう使えばいいのかがコードを使って説明してあってわかりやすかったです。</p>
<p>あと、OpenID Connectについても少し書いてあるのもよかったです。</p>
<br>

<h4> というわけで</h4>
<p>今だとtwitterとかfacebookとかと連携したアプリを作る場合は、大抵この辺りはライブラリが用意されていてそれを使うと思うのですが、ライブラリではどういったことが行われているのか、そのようなライブラリを作る場合はどう実装すればいいのかを考える上で、知識を整理出来る薄くてすぐ読めるいい本だと思いました。</p>
<p>Webでの情報を集めたり、APIドキュメント読めばわかることなのですが、わかりやすくまとまっていますしAPIドキュメントを読む前に読んでおくと理解しやすいのではないかと思いました。</p>
<br>

<p>EBook(ePub、mobi)のみでiPadで111ページ程で1,365円とお求めやすくなっております。</p>
<br>

<p><a href="http://www.oreilly.co.jp/books/9784873115580/" target="_blank">http://www.oreilly.co.jp/books/9784873115580/</a></p>
</div>
]]></content:encoded>
<dc:creator>koba04</dc:creator>
<dc:date>2013-04-04T00:20:56+09:00</dc:date>
</item>
<item rdf:about="http://d.hatena.ne.jp/koba04/20130330/1364620728">
<title>[Perl] PerlCasual#5でお話しさせて頂きました #perlcasual</title>
<link>http://d.hatena.ne.jp/koba04/20130330/1364620728</link>
<description> PerlCasual#5で「元タワレコ店員×Perl×Webサービス」というタイトルでトークさせて頂きました。 http://atnd.org/events/37158 話したこと 主に個人でWebサービスを作るときに考えたことと、実際に作ってみた話しと、Perlとの関わりについて話しをさせて頂きました。 これ</description>

<content:encoded><![CDATA[
<div class="section">
<p>PerlCasual#5で「元タワレコ店員×Perl×Webサービス」というタイトルでトークさせて頂きました。</p>
<p><a href="http://atnd.org/events/37158" target="_blank">http://atnd.org/events/37158</a></p>
<br>

<h4> 話したこと</h4>

<ul>
<li> 主に個人でWebサービスを作るときに考えたことと、実際に作ってみた話しと、Perlとの関わりについて話しをさせて頂きました。</li>
<li> これまでに考えたことを色々詰め込んだので駆け足な感じの説明になってしまったのですが、Webサービス作るのは意外と簡単に作れて楽しいってことと、アウトプットするとさらに楽しくなるよということが伝わればいいなと思い話をしました。</li>
<li> 技術的な部分も一応混ぜてみたつもりなのですが、もっと役に立つ感じの内容にすればよかったかなぁと後で思ったりも。</li>
<li> どうやらスピリチュアル属性らしくてそんな話も期待されているのかなと思い、後半はPerlと出会ってどう変わったのかといった話もさせて頂きました。</li>
</ul>
<p></p>
<div class="twitter-detail twitter-detail-left">
  <div class="twitter-detail-user">
    <a class="twitter-user-screen-name" href="http://twitter.com/songmu">
      <img src="http://a0.twimg.com/profile_images/54643811/my3_normal.jpg" alt="songmu" height="48" width="48">
    </a>
  </div>
  <div class="twitter-detail-tweet">
    <p class="twitter-detail-text">
      僕にスピリチュアルの「レッテル」を最初に貼りつけたのは多分@<a class="twitter-user-screen-name" href="http://twitter.com/yusukebe" target="_top">yusukebe</a>で、Kamakura.pm<a href="http://twitter.com/search?q=%231" target="_top">#1</a>の時。その時今やPerl界でスピリチュアルの第一人者とも言える@<a class="twitter-user-screen-name" href="http://twitter.com/koba04" target="_top">koba04</a> さんが来ていて意気投合した覚えがあるのでその頃から僕のスピリチュアル人生が始まった気がする
    </p>
    <p class="twitter-detail-info">
      <a href="http://twitter.com/songmu/status/315855638460768257" class="twitter-detail-info-permalink"><span class="twitter-detail-info-date">2013-03-25</span> <span class="twitter-detail-info-time">01:00:27</span></a> <span class="twitter-detail-info-source">via web</span>
    </p>
  </div>
</div>
<p></p>

<ul>
<li> あと、PetatubeでキャッシュはしているもののCoro+Furlで並列にNaverまとめにリクエスト投げてることを怒られないかなと話していて密かにドキドキしてました。</li>
</ul>
<h4> スライド</h4>
<p><a href="http://koba04.com/slide/perl-casual-5/" target="_blank">http://koba04.com/slide/perl-casual-5/</a></p>

<ul>
<li> スライドはreveal.jsを使っていてソース見てもらえれば分かるのですが、markdownで書いたものをそのまま読み込むことが出来るのでHTMLで書かなくていいので楽でした。（その分レイアウトなどは制限されますが）</li>
</ul>
<br>

<h4> 参加者として</h4>
<p>@yusukebeさんだからこその雰囲気でカジュアルでとても楽しかったですし、会場もオシャレで、横長でスクリーンが２枚あって見やすくてとてもよかったです。</p>

<ul>
<li> @ruik さんの話はWebサービス作り方を丁寧に説明されていてとてもわかり易かったです。</li>
<li> @sugyan さんのライブコーディングは一つ一つの操作が早くてスゴかったしとても勉強になりました。あれくらい速くコード書けるようになりたいなと思いました。あとChromeの新しいタブ開くページがとてもカッコよかったです。</li>
<li> LTはみなさんとても落ち着いていて上手くて、Perl関係ない話でもとても面白かったです。話をしてなかったのにfujiwaraさんの印象がとても残っていますｗ</li>
<li> yappoさんのマジメな例外処理の話もとても参考になり使いたいなと思いました。</li>
<li> 金曜に横浜の方にいくと美味しいビールが飲めるみたいなので、副都心線も開通したので行ってみたいですね。</li>
</ul>
<br>

<p>懇親会でもRSSについてなどのガチな話を聞けたり、@maeharin さんなど話してみたかった方と話せたり、@yoshiyuki_kondo さんと話せて、初めてPerlの訳がわかりやすくて読みやすかったですというのを伝えられたり、あっという間でしたがとても楽しかったです。</p>
<br>

<h4> ありがとうございました</h4>
<p>リアクションを見ていて、次回どこかでお話させてもらうことがあれば、Petatubeなど1つのWebサービスを取り上げて、構成する要素をコードをもっと出しながら説明して、どうやって実際に作っているのかといった話が出来ればいいなと思いました。</p>
<br>

<p>@dameninngenn さんをはじめ、発表者、関係者、会場を提供して頂いたNHN Japanさんありがとうございました！</p>
</div>
]]></content:encoded>
<dc:creator>koba04</dc:creator>
<dc:date>2013-03-30T14:18:48+09:00</dc:date>
<dc:subject>Perl</dc:subject>
</item>
<item rdf:about="http://d.hatena.ne.jp/koba04/20130318/1363612951">
<title>SoftwareDesign4月号に執筆させて頂きました</title>
<link>http://d.hatena.ne.jp/koba04/20130318/1363612951</link>
<description> SoftwareDesign 4月号の特集「裏口からのプログラミング入門」に執筆させて頂きました。 雑誌に記事書くのは初めてだったのでわからないこともありましたが、とてもいい経験をさせて頂いて楽しかったです。 Software Design (ソフトウェア デザイン) 2013年 04月号 [雑誌] </description>

<content:encoded><![CDATA[
<div class="section">
<p>SoftwareDesign 4月号の特集「裏口からのプログラミング入門」に執筆させて頂きました。</p>
<p>雑誌に記事書くのは初めてだったのでわからないこともありましたが、とてもいい経験をさせて頂いて楽しかったです。</p>
<br>

<div class="hatena-asin-detail">
  <a href="http://www.amazon.co.jp/dp/B00BMS9V7M/?tag=hatena_st1-22&ascsubtag=d-3qo0i"><img src="http://ecx.images-amazon.com/images/I/51DHGF86yRL._SL160_.jpg" class="hatena-asin-detail-image" alt="Software Design (ソフトウェア デザイン) 2013年 04月号 [雑誌]" title="Software Design (ソフトウェア デザイン) 2013年 04月号 [雑誌]"></a>
  <div class="hatena-asin-detail-info">
    <p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/dp/B00BMS9V7M/?tag=hatena_st1-22&ascsubtag=d-3qo0i">Software Design (ソフトウェア デザイン) 2013年 04月号 [雑誌]</a></p>
    <ul>
      
      <li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2" class="keyword">技術評論社</a></li>
      
      <li><span class="hatena-asin-detail-label">発売日:</span> 2013/03/18</li>
                                                      <li><span class="hatena-asin-detail-label">メディア:</span> 雑誌</li>
      <li> <span class="hatena-asin-detail-label">クリック</span>: 7回</li>
      <li><a href="http://d.hatena.ne.jp/asin/B00BMS9V7M" target="_blank">この商品を含むブログ (5件) を見る</a></li>
    </ul>
  </div>
  <div class="hatena-asin-detail-foot"></div>
</div>

<p><a href="http://gihyo.jp/magazine/SD/archive/2013/201304" target="_blank">http://gihyo.jp/magazine/SD/archive/2013/201304</a></p>
<br>

<p>内容は以前スライドで書いた「プログラミング未経験のタワレコ店員がエンジニアになって思ったこと」を文章にしたような内容になっていて、技術的なことも少しは触れていますが、基本的には自分がタワレコ店員から今まで何を考え、どうやって来たのかを偉そうに書かせて頂きました。</p>
<p>あとは勉強会についてやウェブサービスを作ることについても書いています。</p>
<p><a href="http://d.hatena.ne.jp/koba04/20130113/1358005889" target="_blank">http://d.hatena.ne.jp/koba04/20130113/1358005889</a></p>
<br>

<br>

<br>

<p>今回は紙面的な都合もあり技術的な内容はあまり書かなかったので、その辺りは3/29のPerlCasualで少し話せればなと思っています。</p>
<p><a href="http://atnd.org/events/37158" target="_blank">http://atnd.org/events/37158</a></p>
<br>

<p>他にはyusukebeさんも同じ特集で書いたりしているので、是非読んでみてもらえると嬉しいです！</p>
<p>自分を含めた前半3人がPerlのこと書いているのも面白いですね。</p>
</div>
]]></content:encoded>
<dc:creator>koba04</dc:creator>
<dc:date>2013-03-18T22:22:31+09:00</dc:date>
</item>
</rdf:RDF>
