タグ

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

  • YappoLogs: xlsx ファイルを git diff しやすくする為の天才的な wrapper script を書いた

    皆さんはプロジェクトのリソースとしてエクセルの xlsx ファイルを使う事があると思います。 何てったって事務職の人ですら楽々使えるスーパー優れた UI なので、 web の管理画面とかを作り込むよりもエクセルでシート作ってもらってしまった方が早いケースも多いんです。現実の世界では。 で、普通の人は TSV にするだの CSV にしてもらうだのすると思うんですが、一方的にデータ貰うだけなら良いんだけど、相手とやり取りする時にはどうしても xlsx ファイル経由とかにしないと相手がこまる!やっぱりエンジニアのエは優しさのエだから相手に優しくしないとだめです。 で、 xslx ファイルでエンジニア以外の人とデータやり取りするとやっぱり、バージョン管理したくなるのが人情です。 でも xslx ファイルはバイナリファイルなので git diff とかが残念です。。。 って事で作っちゃいました。 h

    lesamoureuses
    lesamoureuses 2014/06/19
    すごい。エクセル使ってないけどこれ使いたいがために使いたい
  • YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

    なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか ここ最近の大規模サービス関連したデータページング考です。 mysql 5.5.34 で試して記事書いてます。 bigdata テーブルは id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) なカラムがある前提です。もちろん InnoDB です。 2014年なんだからCOUNT(*)とかSQL_CALC_FOUND_ROWSとかLIMIT OFFSETのページングはやめようぜ - Togetterまとめが発端にみえるけど、わりと昔から話されてる事なんだけど、「nippondanji SQL_CALC_FOUND_ROWS」でググっても有用な情報ないし文書化されてないからしとく。 ページング処理で使われがちな機能です。 S

    lesamoureuses
    lesamoureuses 2014/03/12
    ほんとそう “自分以外の誰かがメンテナンスをする事になった時に、その誰かが良くわからないでコピペで新機能を作ってしまう、その新機能がわりとデカイデータを取り扱う仕様だった! という状況は日常”
  • 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 とかからどうやって引っこ抜

    lesamoureuses
    lesamoureuses 2013/11/20
    jsonのstatus codeむずい
  • YappoLogs: YAPC::Asia 2013 #yapcasia

    YAPC::Asia 2013 #yapcasia 今日みた夢が「blog 書かないと干すぞ!」ってがちぎれる941さんとlestrratさんがでてきたので書く事にした Yappo です。みなさん週末はいかがお過ごしでしたか?僕はカート大会いって箱根で温泉と美味しいご飯べてきました。 編発表資料 社内開発簡単化と世界で戦う開発を考える技術 明らかに会場でかくていっぱい人見に来る、裏発表の DeNA の人が Yappo に負けないクオリティにする!的な宣言してて泣きそうになったのでささやかな反撃でタイトルぱくりました。 1日目の午後一から40分の枠をもらったので、仕事向けのアプリケーション開発で考えなきゃいけない事と、雛形スクリプトを作る時に便利なKsgkの紹介をしました。基的にはコピペ脳は害でしか無いのでいかにしてコピペを排除するか、ちゃんと自分の頭で考えていくか。のような話をしまし

    lesamoureuses
    lesamoureuses 2013/09/24
    こういうのサラッと入れてくるのかっこいい “「YAPC::Asia もう終わりって言ってるけど、やってほしいなでも自分はやりたくないな」とか思ってたら本気でもう開催されない"
  • YappoLogs: lingr-ircd でお気楽 perl チャット

    lingr-ircd でお気楽 perl チャット 最近 Perlの話題を日語で – Lingr という革新性力が活発ですが、やっぱり lingr は情報密度が薄いから、情報密度が濃い irc client から使いたいっていう事で1週遅れで導入しました。 材料 Perl(筆者はCentOSに最初から入ってる5.8.8を使っています) Carton(適当に入れてください、筆者は sudo cpan Carton で入れました) git 入れ方 git clone git://github.com/tokuhirom/lingr-ircd.git cd lingr-ircd (5.8.8 標準の Scalar::Util が Mouse で動かんから cpanfile に requires 'Scalar::Util' => '1.27'; っての追加した) carton install

    lesamoureuses
    lesamoureuses 2013/05/20
    lingr] https://github.com/tokuhirom/lingr-ircd/blob/master/bin/lingr-ircd 見ながらがんばったのにまとまってた。ググる力が足りてなかった
  • YappoLogs: perlbrew best practice

    perlbrew best practice perlbrew には $ perlbrew upgrade-perlというのが実装されてるのがあまりにも有名ですが、これは現在使ってる環境の perl を、そのマイナーバージョンの中で一番新しいバージョンにアップグレードしてくれるんです。 perl-5.16.1 を使っていたら perl-5.16.3 に perl-5.14.2 を使っていたら perl-5.14.4 に。という具合ですね。 同じマイナーバージョンの Perl では XS バイナリの互換性とか保証されているので、すでにインストールされているモジュールはそのまま利用できる状態になっています。 だがしかし $ perlbrew install perl-5.16.2して作った環境を upgrade-perl すると 5.16.3 が入ってるのに perl-5.16.2 って名前が

    lesamoureuses
    lesamoureuses 2013/03/13
    "例えば、ついでに perl-5.16 から perl-5.17 に移行したい時とかは、こうやると 5.16 で入れてたのを引き継げる。"
  • YappoLogs: Try::Lite 「より安全な例外キャッチを簡単に」

    Try::Lite 「より安全な例外キャッチを簡単に」 I wrote too safety exception handling module. https://metacpan.org/release/Try-Lite $@ の処理を安全に取り扱う例外処理モジュールとしては Try::Tiny があまりにも有名ですが、別の実装を作ってみました。 アプリケーションを作る時は、よく例外クラスを作ってから die bless {}, $foo_class; みたいな形のオブジェクトの例外を投げて、上流の方で eval で受け取ってから $@ の isa を調べて例外に応じた処理をする事が多いと思います。 ここで問題になるのが、受け取った例外の中から不要な物を、さらに上位に向けて rethrow するわけですが、 rethrow するのを忘れてしまうとクリティカルなバグを発生させる要因となりま

    lesamoureuses
    lesamoureuses 2013/02/19
    あとで使ってみる
  • YappoLogs: OSDC.tw 2011 で Groonga 布教してきました/もしくは TOEIC スコア 100 未満の日本人が国外カンファレンスで英語プレゼンする方法

    OSDC.tw 2011 で Groonga 布教してきました/もしくは TOEIC スコア 100 未満の日人が国外カンファレンスで英語プレゼンする方法 エントリだけ書いててすっかりpostするのを忘れてたんですが、猿先々週にSPM48の中から数名のメンバーを集めたチーム台北2011選抜メンバーがosdc.tw 2011で発表してくるイベントがあったのですが、僕はそこで Groonga の布教をしつつ日での検索ソフトウエアについての発表をしてきました。 チーム台北2010選抜の時にいったosdc.tw 2010では、日語でプレゼンして来たんですが今度は英語でしてきました。 すったもんだがございまして、資料の英訳が全く間に合わなくて @__gfx__, @charsbar, @obra のお三方に英訳を助けて頂きました、当に助かりました! 実際のトークとかは、keynoteの機能を

    lesamoureuses
    lesamoureuses 2011/04/08
    こういう機転をきかせられるカッコいい男になりたい>ふと思いついて質問してる人のとこまでPCもってって「たいぷぷりーず!」ってお願いしてexcite先生のtextareaに入力してもらって質問内容を理解しました!
  • 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: TokyoCabinetがPerlのHASHより遅いわけがない!

    TokyoCabinetPerlのHASHより遅いわけがない! こんにちわ!金曜日担当・Shibuya内フェアリーことYappoです。 mixi Engineers’ Blog » PerlRubyで省メモリなハッシュを使おうにて 100万件のレコードを格納した場合のメモリ使用量と処理時間を測ってみましょう。Perl(5.8.8)でテストコードを動かしたところ、以下の改善が確認できました。標準のハッシュに比べて、メモリ使用量がTCのオンメモリハッシュだと約61%、TCのオンメモリツリーだと約37%になることがわかります。処理時間に関しては157%ほどになっていますが、まあ許容範囲ですよね。といった事が書かれており、その文面の上の解説で、tieしたので、tieしてるからおせーんじゃねーの?とテストコードも見ないで呟いてたらmikioさんからtie使わないでやってるよ!とつっこんでいただき

  • YappoLogs: はてなのお気に入りアンテナをTwitter Clientで見れるゲートウェイ「Hatetter」作りました

    はてなのお気に入りアンテナをTwitter Clientで見れるゲートウェイ「Hatetter」作りました 注意:ブックマークだけでなく、お気に入りアンテナのフィードを使うようになりました。 はてブのお気に入りリストってRSSリーダとかで見たりするのが多いんですが、もっとTwitterのようにカジュアルにウオッチしたいと思って、お気に入りリストのRSSTwitter API互換のFeedに変換するサーバを書きました。 Hatter - 太っ腹にソースコードも公開してるので、自宅サーバとかに置いて使うってのもできます。 たとえばid:acotieがお気に入りに入れてる人達のブックマークをTwitter風に変換したい時は http://hatetter.blogdb.jp/acotie/statuses/friends_timeline.json もしくは http://hatetter.b

    lesamoureuses
    lesamoureuses 2009/04/16
    あとで技術的補足のところ勉強する
  • YappoLogs: HTTP::Engine で進捗表示しつつアップロード

    HTTP::Engine で進捗表示しつつアップロード HECon前の前菜に最適だったので。 404 Blog Not Found:perl - LWP::UserAgentで進捗表示しつつダウンロード というかHECon1は参加条件緩めたしまだあと10名程来れるので是非是非きて下さい。発表枠も1-2枠くらい余ってます。Shibuya.pmの前夜祭的な参加もおkす。 で、何をやったかというとファイルアップロードされるとプログレスバーを表示する。 ServerSimpleやPOE向きの実装。 これを使う事によりアップロードされまくってる感が増大します。しかも簡単なhackで済んでるところも素敵ですね。 こんな感じにコンソール出力されます。 $ perl ./http-engine-progressbar.pl HTTP::Server::Simple: You can connect to

    lesamoureuses
    lesamoureuses 2008/11/26
    >これを使う事によりアップロードされまくってる感が増大します
  • YappoLogs: Math::Pari を Mac 環境で入れる方法

    Math::Pari を Mac 環境で入れる方法 Crypt::RSA を Mac で使いたくて Crypt::RSA を install 仕様としたら Math::Pari でこけた。 なにやっても入らない macports しても無駄。fuckfuckfuckfuckだったのですが、ようやく入れる事が出来た。 GCC の インライン最適化を仕様として全オブジェクトファイルに_overfllowというシンボルを作ってリンクできなかったかんじ? cd /tmp wget ftp://megrez.math.u-bordeaux.fr/pub/pari/unix/OLD/pari-2.1.7.tgz pari-2.1.7が必要 tar zxvf pari-2.1.7.tgz sudo cpan> look Math::Pari で 2.010800 を入れようとして shell に。 おも

    lesamoureuses
    lesamoureuses 2008/11/18
    同じようにインストールできなくって諦めました。頑張ってと応援してました。
  • YappoLogs: Yacafi という軽量CGIフレームワーク書いたよ

    Yacafi という軽量CGIフレームワーク書いたよ MENTA というウェブアプリケーションフレームワークをかいてみた - TokuLog 改めB日記やらNanoA というウェブアプリケーションフレームワークをかいてみた - id:kazuhookuのメモ置き場やらと軽量CGIフレームワーク作りが流行ってるようなので昼飯った後に20分くらいで書いたよ。 Yacafi(Yet another CGI application framework interface)と言います。 http://svn.coderepos.org/share/lang/perl/Yacafi/trunkからsvn coできるけど、Yacafiはモジュール一個だけあれば動くようにしてあるのでhttp://svn.coderepos.org/share/lang/perl/Yacafi/trunk/lib/Yac

  • 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

    lesamoureuses
    lesamoureuses 2008/10/07
    全然わからないから後で勉強する
  • YappoLogs: Moose のコードを探索して理解を深めた

    Moose のコードを探索して理解を深めた 日は Roppongi.PM の第一回 Moose コードリーディングがありました。 Mooseは、単純に使ってる分には分り易いのですが、その実装を見ようとすると途端に複雑さが増します。 とにかくメソッドの呼び出しのスタックが深い。MySQL程では無いにしろ曲者です。 今回はそんなMooseの挙動を把握する手がかりを掴もうという回です。 Moose.pm Moose.pmは、主にuse Mooseされた時にexportするメソッドの定義をしています。 use Mooseすると、extends,with,has,before,after,around,override,inner,augment,make_immutable($c->meta->make_immutableすべき),confess,blessedがexportされます。 そしてM

  • YappoLogs: WebService::Simple::Cabinet をリリースしました。

    WebService::Simple::Cabinet をリリースしました。 erogeekの処女作のWebService::Simpleが普通過ぎてドン引きしていた所、これを使ったモジュールの実装アイデアを夢の中で思いついたので、起きて速攻で実装しました。 WebService::Simple::Cabinetって言います。 昨日ちょろっと作ってみた所、面白そうとブクマされたのでCPANにうpしたけどindexはまだみたい。 リポジトリはhttp://svn.coderepos.org/share/lang/perl/WebService-Simple-Cabinet/trunk/からどうぞ。 何をする物かというと、miyagawaさんがWSDL/WADLっぽいって言ってたけどWSDLとかの説明が一番しっくりきました。 WebService::Simpleを使って簡単にアクセス出来るよう

  • 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: Re: screen のキーバインド

    lesamoureuses
    lesamoureuses 2008/02/13
    なるほど。困ってた。
  • 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