タグ

ブックマーク / blog.yappo.jp (30)

  • YappoLogs: 2014年に向けた JSON API の実装の方向性と X-JSON-Status 改め X-API-Status header のご提案

    2014年に向けた JSON API の実装の方向性と X-JSON-Status 改め X-API-Status header のご提案 追記 2014/11/20 14:00:00 わりと JSON やら XML やら各種フォーマットで API を運用している環境がある場合に JSON API の時だけ X-JSON-Status にすると XML とかの時と整合性取れないし、 X-XML-Status みたいのを量産するのは困る的なレビューを頂いたので X-JSON-Status をやめて X-API-Status にしました。 へたに JSON に限定するから REST とか JSON-RPC とかいわれるんや! X-API-Status にしたら全部解決したし MessagePack な API でも使い回せるって songmu さん言ってた! XML とかからどうやって引っこ抜

    takatoshiono
    takatoshiono 2014/09/29
    参考に
  • YappoLogs: mysql_use_result on DBD::mysql

    mysql_use_result on DBD::mysql DBD::mysql において、例えばテーブルの中に大量のレコードが入っているテーブルにクエリを投げる場合は execute で凄いブロックされた経験は誰にでも有るはず。 my $sth = $dbh->prepare('SELECT * FROM okkiinari'); $sth->execute; # ここで okkiinari テーブルのデータを全部読み込んでる だからみんなは LIMIT OFFSET とか頑張ったりするんですが、これを回避するための mysql_use_result っていうオプションがある。 connect する時に my $dbh= DBI->connect('DBI:mysql:test;mysql_use_result=1', 'root', '');と指定したり、途中で$dbh->{mysq

    takatoshiono
    takatoshiono 2014/02/19
    前に調べたけどよくわからないので使わないようにしたやつだ
  • YappoLogs: Data::Model っていう ORM みたいの CPAN にあげたよ

    Data::Model っていう ORM みたいの CPAN にあげたよ あざーす。循環参照しすぎるとバターになる。。なんでそんなに人の目を気にするのだろうと、マジレス。 早速ですが Data::Model っていう O/Rマッパー 的な物を CPAN にあげました。 Data::Model http://github.com/yappo/p5-Data-Model/tree/master 元来は MVC モデルで言う所の Model を一括でまかなえるつもりで実装していますが、ロジック処理は普通の Perl のクラスで書いちゃった方が潰しが聞くため、主にストレージを Perl のオブジェクトにマッピングする ORM 的な使い方が主流となっています。 そして、 Data::Model の多くの実装や設計などは Data::ObjectDriver を参考にして開発しました。 他にも後述して

  • YappoLogs: HTTP::Engineの今とこれから

    HTTP::Engineの今とこれから 昨年末にHE con #1 が開催されてから久しいですが、あの前後で話題になっていた 「HTTP::Engineは依存が大杉メモリいまくり」な件に関しては、Shikaという回答を出し、その後Mouse版の0.1.1をリリースしました、 そして最近Stevanから「Any::Mooseはどうか? lang:en」と言った話も有り、現在Any::Mooseに依存した0.1.4を出すべく0.1.4_xをCPANにあげています。 クラスビルダーにMooseを使うか捨てるか論争は、0.1.4にて妥協出来る所に落ち着いたんじゃないかなと思います。 Any::MooseやMouseが細かい所で挙動が変わるかどうかは今のところわかりませんが、少なくともHTTP::Engineで採用した事により安定する方向になるんじゃないでしょうか? もちろんより高い互換性の為の変

  • YappoLogs: Module::Setup - pmsetupをモジュール化した

    Module::Setup - pmsetupをモジュール化した Perlのモジュールをまず最初に作る時はpmsetupやModule::Starterなどを使うのが一般的です。 かく言う余もpmsetupでガリガリ書いてたんですが、はこべさんやらdannさんやらの最近の記事を見て思う所もあってpmsetupをモジュール化してみました。 http://svn.coderepos.org/share/lang/perl/Module-Setup/trunk/ 使い方は簡単!cpan Module::Setupでinstallして(まだCPANにあげてないよ!) $ module-setup Foo:Bar を実行するだけ! ほぼpmsetupと同等の挙動でひな形を作ってくれます。あらべんり! これだけじゃまったく意味が無いのでModule::Setupらしい所を。。。 flavor Modu

  • YappoLogs: 誰でも簡単にOpenID 2.0なOPを作る方法 and CodeReposでOpenID(2.0対応)プロバイダの提供始めましたのお知らせ

    誰でも簡単にOpenID 2.0なOPを作る方法 and CodeReposでOpenID(2.0対応)プロバイダの提供始めましたのお知らせ 先週のbuilder techtalkから俄然としてOpenIDが熱くなって来た今日この頃いかがお過ごしでしょうか。 先日参加して来たOpenID Hackathonの成果として、CodeReposがOpenIDのOpenID 2.0 Providerになりましたことをお知らせします。 CodeReposのアカウントをお持ちの方は、fastladderとかLIMLICとかのOpenIDでサインオンできるサービでOpenID URLをcoderepos.orgとだけ打ち込んでログインしてみて下さい。 2.0に対応していない所だったらhttp://coderepos.org/share/wiki/Committers/usernameとでも入れればいいと

  • YappoLogs: デブサミ2008の発表資料、MacでバランスWiiボードのデータを取れるコードとプレゼンツールPlusenの公開

    デブサミ2008の発表資料、MacでバランスWiiボードのデータを取れるコードとプレゼンツールPlusenの公開 はてなが京都に帰ってしまう発表に盛り上がっている昨今みなさまいかがお過ごしでしょうか。 京都に帰るのははてなと任天堂が提携して、はてなワールドの移動がバランスWiiボードで出来るようになる為だと思い、その可能性を感じられるようなプレゼンをして来たので報告します。 デブサミの資料 早めに資料公開しないと放置してしまうので公開しました。 http://svn.coderepos.org/share/docs/yappo/devsumi2008/ 頑張っても動かせない場合はdevsumi2008.plにテキストで文章が書いてあるので読んで下さい。 このディレクトリに置いてある.plファイルは、そのまま下記で紹介するPlusenとMac::WiiRemoteのサンプルにもなってます。

  • YappoLogs: Cobbler Koan を CentOS な Xen で動かしたよ

    Cobbler Koan を CentOS な Xen で動かしたよ Xenが熱かった今年ですが皆様いかがおすごしでしょうか。 Koan - mizzy.org - Trac これで Xen ゲスト OS のインストールがはじまる、はずなんだけど、うちの環境では Segmentation Fault になってしまった。VMWare 上で Xen を動かすというのは無理があるのかもしれない。 実機で試したいところだけど、試せるサーバがないので保留。Yappo さんあたりが試してレポートしてくれるに違いない、きっと。 という牙指令を頂いたので試してみましたよ! 今回の環境をざっと説明すると、Cobblerを入れるマシンはCentOS5.1(i386)な環境で(master server)、cobbler importするディストリビューションはCentOS5.1(x86_64)、koanでネッ

  • YappoLogs: Perlで数有る$selfを取る手法をベンチマーク取った

    Perlで数有る$selfを取る手法をベンチマーク取った PerlでOOなコード書く時のコンテキストを取る方法は色々あります、最近audreyがselfvarsをリリースしたので、gugodのself.pmとingyのSpiffyそして、既存のmy $self = shift;やshift->や$_[0]->で$selfを取る方法それぞれのベンチマークを取ってみました。 テストコードのモジュール名は、それぞれのモジュールの作者名から取り、既存の手法はYAPC::Asiaでプレゼンした事のある日を代表するPerlな企業のCTOからモジュール名を取らせていただきました。 コードは以下の通りです。 package Audrey; use strict; use warnings; use selfvars; sub new { bless { count => 0 }, shift } sub

  • YappoLogs: そろそろShibuya.pmについて一言いっとくか

    そろそろShibuya.pmについて一言いっとくか 10月1日にShibuya Perl Mongers テクニカルトーク #8でClass::Componentに関してのプレゼンをして来ました。 このプレゼンより更に詳細な記事としてgihyo.jpの記事として公開されています。 gihyo.jpでの記事は、Class::ComponentどころかPerlのattribute周りを日語で詳細に解説している唯一の記事だと思ってます。それくらい気合い入れて書いていたので(ry で、なんでいまさらこんな事書いてるかというと、先日発売されたWEB+DB PRESS vol.42のたつをさんの記事にて、tech talk#8でのustream配信の件が紹介されていたからです。 今回はotsuneさんと自分でustream配信を担当したので、ちょうど良い機会なので勉強会をMacBookでustrea

  • YappoLogs: CodeReposにうpする事は恐くないよ

    CodeReposにうpする事は恐くないよ ユーザ避けとしてのSubversion - blog.fuktommy.comのミラー だから早いうちからソースを公開するのはいいことだと思うんですけど、 問題もあるんですよね。 ソースはできるだけ早くから公開したいんですけど、 実際にユーザが使うのは「ひととおりできあがった」あとにしてほしいんです。 早くから使われると、当然完成度も低いですし、 仕様の変更だってちょくちょくあるから、 「完成度は低いし、バージョンアップのたびに互換性なくなるし、つかえねー」 という評判が立ってしまう。 これは二つの問題を混ぜて考えてしまっている。 ソースを公開する=将来のユーザになる層に告知するという考え方がまず間違っています。 そりゃ2chとかでスレ立ててやっちゃえば、混ぜこぜになっちゃうのもしょうがないかもしれないすけど、ひげぽんとかの成功例もあるからプロジ

  • YappoLogs: twitter2ircd.pl - POEで書いたperlのTwitter IRC Gateway

    twitter2ircd.pl - POEで書いたperlTwitter IRC Gateway Twitterは、どことなくチャット的な利用もされていてiChat使っていたのですが,WindowsTwitter IRC GatewayがあってIRCでやるのが楽しそうだったので、Macで動くようにPerlIRC Gateway書きました。 miyagawaさんにPoCo::Server::IRCのサンプルコードとしてLingrのIRC Gatewayを教えてもらったので、参考にしてPOE::Component::Client::Twitterを作ってCPANにうpしました。 パッケージ中にはtwitter2ircd.plというTwitterIRC Gatewayとなるサンプルコードを同梱しています。 コードの下にサンプルの設定ファイルがあるので参考にして下さい。 こんな感じで 普通

  • YappoLogs: GunghoっていうWebクロウラーたんの件

    GunghoっていうWebクロウラーたんの件 なんか男前そうなクロウラーたんを発見したお 資料はhttp://www.slideshare.net/lestrrat/gungho-swarmage-pocomdba/を見るべし。 ちなみに、これ書くのに使ったGunghoはVersion 0.09001 のCPANの。 概要 GunghoはPlaggerっぽいwebクロウラーたんです。なのでGunghoの名前空間以下にあるモジュールとかを個別に使おうとしたら大変です。 Gunghoのアーキテクチャにそった一道な動作をさせるのがいいはず。 設定はConfig::Any使ってるので、色んな形式のを使えます。 Providerにより収集URLを取得し、EngineがHTTPでコンテンツを取得し、Handlerで取得したコンテンツを処理します。 Provider,Engine,Handlerは、そ

  • YappoLogs: ITPro ChallengeのLTに出て来ました

    ITPro ChallengeのLTに出て来ました インターネットに不自由してる旅先で、つい魔が差してLTに応募したら採用されたので話して来ました。 初の試みとしては、話してる最中の様子をustreamで配信してました、といっても自分の胸ばかり写ってたかもです。そして23viewersくらいあったようです。 内容は、ごにょごにょしたのと、今空前のブームであるGopherのGopperのPRとCodeReposの宣伝して来ました。 あと、はてなスターのTシャツを着てプレゼン中にスターのアピールをしたのに、話し終わった後naoyaさんが怒ってた気がする。 やっぱり、はてなブックマークのアピールをしなかったせいだろうか。ふしぎ! 以外とGopherネタをわかってる人がおおくてよかた。 資料はhttp://tech.yappo.jp/docs/itprochallenge/にて。 キーボードの上下

  • YappoLogs: Gopper - Gopher2.0時代のプラガブルGopher Serverをリリース

    Gopper - Gopher2.0時代のプラガブルGopher Serverをリリース 空前のGopherブームが到来したわけですが、PlaggerやMoxyのようにプラガブルに機能を拡張できるGopher Serverを書きました。 http://coderepos.org/share/browser/lang/perl/Gopper/trunk svn co http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper 今のところ超シンプルなGopher Serverにしかなりませんが、Pluginを書いて行く事によりApacheっぽいhttpdになったりします。 configなんかもPlaggerさわってる人なら判りやすいはず。 global: log: level: debug engine: module: Simpl

  • YappoLogs: CodeRepos - 個人レポジトリを共有しよう!計画

    CodeRepos - 個人レポジトリを共有しよう!計画 typesterさんのつぶやき みんながそれぞれ作って公開してる公開レポジトリを一緒くたにしちゃいたい。参加してる全員がどのファイルもみたり変更したりできるような。 パッチ送られてくる代わりに「後で見とくからコミットしといて」とかいえたりとか、つくりかけで放置したもので他の人が興味もったら続き作ってもらうとか、メンテするのめんどくなったのだれかにやってもらうとか、突発的に誰かと一緒にプロジェクト始めたりとか、できる! に呼応する形で共有レポジトリを作りました。 http://coderepos.org/share/ 特に明確な方向性とかはきまってませんし、決まるかどうかもわかりませんがtypesterさんのつぶやきを現在の方向性という事にしておきますか。 昨日作ったばかりで、今はディレクトリ構成どうしようかとかそういう事をircとか

  • YappoLogs: bradとmyとuse fieldsとPseudo-hashesとHash::Utilと

    bradとmyとuse fieldsとPseudo-hashesとHash::Utilと bradプロダクトではuse fieldsが多用されています。そして、 my ClassName $var;のような変数宣言が多用されています。 perldoc -f myしてみるとuse fieldsで使うみたいな事が書いてありました。 use fieldsってのは package Jitensya; use strict; use warnings; use fields qw/(sound); sub new { my $proto = shift; my $self = ref $proto ? $proto : fields::new($proto); $self; } 1; のようなコードがあるとして use strict; use warnings; use Jitensya; my $

  • YappoLogs: Soozy-0.3.1 released

    Soozy-0.3.1 released Soozyのバージョン上げました。 http://tech.yappo.jp/download/Soozy-0.3.1.tar.gz 主な変更点は バージョンナンバリングルールの変更 $self->forwardした履歴を取得するforwarded_histryを追加 sub do_*なメソッド以外にも転送出来る$self->forward('*method')のサポート 例外処理がうまく動かないのを直した forwardとかヂスパッチャーがちゃんと動かない不具合修正(blessがちゃんとされなかった) 複数のプラグインにメモりリークがあったのを修正 ヘルパースクリプトのバグ修正 Helper::M::DBIC::Schemaで作成されるSchemaクラスをシンプルにした Plugin::Session::State::Cookieで、既にCook

  • YappoLogs: ustreamでモバイル配信を行うTipsとMacBookで外部USBカメラ使うTips

    ustreamでモバイル配信を行うTipsとMacBookで外部USBカメラ使うTips 空前の大ブームを巻き起こしてたustreamですが、自分もさっそくMacBookとwillcomeのデータカード(128kbps)とUSBカメラを両手にもって秋葉原の町並みとかをモバイル中継して来ました。 MacBookはiSightというカメラを内蔵しているのですが、車の全面とかを写すのに向いてないので、わざわざ買って来ました。 ビットレートを下げる 可能な限り画質を悪くするようにします。Qualityは1にします。 フレームレートを適度に 配信は動きが合った方が面白いのでFPSを10くらいにします。 音声は切る どう頑張っても音声を送ると動画がカクカクになってしまうので、思い切って音声を切っちゃいます。 MacBookで外部USBカメラを使う MacBookには標準でUSBカメラ扱いのiSight

  • YappoLogs: encoding::sourceをperl5.8系で動かす

    encoding::sourceをperl5.8系で動かす ことの発端はmiyagawaさんの というわけで上記のような問題になやまされずにリテラルをソースに書くことが出来そう。5.9 からバックポートされたのかなぁ、と思ってソースをみると思いっきり use 5.9.5 が。5.10 のリリースがまたひとつ待ち遠しくなったなぁ。 から なんで5.9から? encoding:sourceのソースを見てみると5.10の新演算子//が使われていた。のでまずはdefined使いまくりでソースを書き換えたけど上手く動かない。よく見ると my $hinthash = (caller($level))[10]; なるコードがある、callerの戻り値のリストは10個しか無い筈なのに11個目を取ってる。 調べてみると、5.10からの仕様でperlpragmaなるドキュメントがある。 callerで指定した