タグ

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

  • YappoLogs: Mac + emacs + PlantUML でさくさく UML 職人

    例えば ./uml/ に uml ファイルを置いておいて ./img/ に UML の画像ファイルを書き出すような環境の場合。JAVA_TOOL_OPTIONS="-Djava.awt.headless=true" watcher --dir ./uml/ -- 'java -jar /foo/bar/plantuml.jar ./uml/*.uml && open -g -a Preview ./img/*.png'のようなコマンドをバックグラウンドで起動しとくと、編集作業の邪魔されずに .uml ファイルが保存されるたびに全自動で画像を生成して Preview.app で開いといてくれる。 開いといてくれるけど Preview.app にフォーカスが移動しないと window 中の画像は反映されないので注意。 そしてwatcher コマンドはみなさんが嫌いな Perl でできていて C

  • 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

    dann
    dann 2014/03/12
  • YappoLogs: YAPC::Asia 2013 #yapcasia

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

  • YappoLogs: Amon2 で国際化アプリを簡単に書く Amon2::Plugin::L10N を出しました

    « HTTP::AcceptLanguage - Accept-Language ヘッダを解析して適切な言語を返す君 | Main | zh-hans, zh-hant に対応してない!って怒られた時は » Amon2 で国際化アプリを簡単に書く Amon2::Plugin::L10N を出しました Perl で L10N する方法としてはPerl でつくった web サイトを L10N する方法 - tokuhirom's blog.が有名ですが、昨今はうっかりパンケーキとか唐揚げをべてたらロンドンとかに海外進出しちゃうようなのが当たり前になった現代においては、 blog のコードをコピペするやつは死んどけば良いので、死なないため殺されない為に実用的に CPANize して殺す側に回りました。 https://metacpan.org/release/Amon2-Plugin-L10N

    dann
    dann 2013/05/13
  • 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 するのを忘れてしまうとクリティカルなバグを発生させる要因となりま

    dann
    dann 2013/02/18
  • YappoLogs: Exception::Tiny - ちょー簡単な例外処理

    Exception::Tiny - ちょー簡単な例外処理 I wrote too easy exception interface module. https://metacpan.org/release/Exception-Tiny 既存の例外処理モジュールは、結構頑張ってるのが多くてドキュメント凄いいっぱいあったり実装が読みにくかったり痒い所がかけないので、おばあちゃんの孫の手的な実装をリリースしました。 例外処理に最低限必要な実装しか無いので使うのが簡単です。 例外クラスにアクセサを生やしたければ、お好きなアクセサーで生やすもよいし、例外の階層構造作りたければ普通に use parent すればいいし、既存の実装を変えたければ user parent 'Exception::Tiny'; で継承された側のモジュールでメソッドを上書きすればいいです。 Exception::Tiny

    dann
    dann 2013/02/13
  • YappoLogs: サービスをつぶさない為に Web アプリを書く時にやっとくと良い事2選

    サービスをつぶさない為に Web アプリを書く時にやっとくと良い事2選 テンプレートのエラーが出た時にアプリケーションのログだけに書くのでは無く、誰にでも「ここがえらってるよ!」って見えるようにしとくと間違いが少なくなる傾向があるのでテンプレートエンジンでフック出来るようになっておいてたら、それをうまく使うと良い。 また、テンプレートエンジンがレンダリングしてるフェーズで DB にクエリが飛ぶような構造で書いてあると、非エンジニアのカジュアルにテンプレートいじる人が甚大なクエリを実装してしまう可能性があるので、これも早期に発見しないとサービスが止まってしまい会社の売り上げが下がってしまい社員が路頭に迷うケースが発生してしまうので、これらも未然に防がなければならない。 Text::Xslate + Amon2 ならこうかける。 package MyProje::Web; ...; { my

    dann
    dann 2012/11/26
  • YappoLogs: YAPC::Asia TOKYO 2012 と Geohash リリースのお知らせ #yapcasia

    YAPC::Asia TOKYO 2012 と Geohash リリースのお知らせ #yapcasia 僕の YAPC::Asia TOKYO 2012 さっき終わったので書く事にしよう。悪意は無いので素直に読んで頂ければと。 位置情報系処理のお話 a.k.a 続・自文書抽出日的住所 http://yappo.github.com/talks/20120928-yapcasia2012-geo/ ikasama さんとかには、前のプレゼンとか見てたら見なくて平気だよね敵な事言われたけど、大体新しいトピックでお伝えしました。 基的には CPAN での位置情報の扱い方と、視覚化の重要性の話と、位置情報は様々なサービスに欠かせないという話と、住所を美味く扱う話、その他注目するべき事と言った内容で緩く話してきました。 やるネタとしては住所正規化API出した時に決まってたのですが、その後色々とネ

  • YappoLogs: YAPC::Asia Tokyo 2011 ぼくのかんそうぶん

    YAPC::Asia Tokyo 2011 ぼくのかんそうぶん かんそうぶろぐかけってことなので、ぶくますうがのびるきょうこのたいみんぐでこうかいします。 ここのついきはげつようあさなんですが、あっとうてきにつかれててしゅっしゃできるかわからないくらいかいふくしてないのです。 なんか、こうしたほうがいいんじゃね?とか書いてるけどスルー推奨です。 発表について なんか優等生トーク(内容ではなくて枠の使い方そのもの)ばっかりよりも、少し型を崩した時のほうが理解を深める事もあるんじゃないかなーと思ってた所で、makamakaさんのゲームのデモをやってるトークは当に良かった。(まったくみにいってないけど!) 伝えたい目的によっては、壇上の机の前に突っ立ってるより効率よく伝える方法が他にもあるかもしれないので、ちょっと考えてみるといいかもしれない。資料の朗読をしてるだけだと後でスライド見れば良いや

  • YappoLogs: YAPC::Asia Tokyo 2011 で発表してきましたわよ

    YAPC::Asia Tokyo 2011 で発表してきましたわよ 前回からPHPとかJavaScriptとかしかやってないから何も無いよなーと思いつつ、とりあえずWeb+DB PRESSの話でもしようと思って応募してたんだけど、急に Perl とかやるようになったので急遽LT二応募とかしましたとさ。 死霊一覧はこちら http://yappo.github.com/ perl hackers hubの話 どんなにblogが発達しようとも、雑誌が無くなってしまおうとも、プロの編集者を通した技術的な出版物というものは大事です。このセッションは、その間口を広げようとするのを目的としました。 前日まで当にスライドどうしようか良いアイデアが無かったんだけど、発表として伝えたい事は「誰でもこういう事できるんだよ。みんなもやりなよ。」っていうのだったので、年末に発売される回のサプライズな企画の紹介

  • YappoLogs: App::Ikachan - 様々なサーバのバッチ処理の結果等を IRC のチャンネルに通知するサーバ

    App::Ikachan - 様々なサーバのバッチ処理の結果等を IRC のチャンネルに通知するサーバ 皆さんは、日々のお仕事の中で様々なバッチ処理やデプロイツールまたはCIツールを動かすと思います。 一般的なネット系のエンジニア仕事のコミュニケーション手段として IRC を用いているというのが有名ですが、これらバッチ処理の処理状況等を普段の生活環境である IRC に流せたら便利です。 実際に前の会社では、 deploy tool, ci tool, etc batch script の処理結果を社内 IRC channel に通知するような物を hirose31 さんが作ってくれて、とても便利でございました。 とはいえ、各種スクリプトが独自に IRC server に繋ぎに行く事は大げさですし、バッチが走る都度 join/part されたらうざいです。 そこで前の会社では、 IRC s

    dann
    dann 2011/08/16
  • YappoLogs: Joining livedoor

    Joining livedoor So, here's the update I promised this week: I'm thrilled to join livedoor as a software engineer, starting Aug. co-workers with lestrrat, nipotan, kazeburo, mala(bulkneets), 941(YAPC::Asia 2011 coordinator) And too many perl hackers ;) みんなが感動するような転職エントリを書こうと頑張っていたのですが、僕の才能では無理だったようなのでもう書きます。自社サービスのブログでお知らせしたとおり8月1日からライブドアに通っております。 20人以上いる会社で働くのが9年ぶりくらいなので緊張するかと思ったのですが、よく考えたら周りを気にし

    dann
    dann 2011/08/04
    おめでとうございます!
  • YappoLogs: BPStudy#39 で Ficia の UI とテストに関する事を発表してきました

    BPStudy#39 で Ficia の UI とテストに関する事を発表してきました 当に今更で申し訳ないのですが、さる2010年11月30日にBPStudyで発表する機会を頂いて、FiciaのサクサクなUIをどうやって作っているのか?というプレゼンとFiciaで利用しているテストツールのJSTAPdについてのプレゼンの二を行って来ました。 ベースは、Web+DBの連載の内容になっていて、YAPCやFukuoka.PMでの発表内容に近しい形とはなっていますが、発表する場所も違うので少しだけ構成を変えて発表するというtrue TAKESAKO methodをしました。 発表資料はイカよりそれぞれどうぞ。 http://yappo.github.com/talks/20101130-bpstudy-webui/ http://yappo.github.com/talks/20101130-

    dann
    dann 2011/05/13
  • YappoLogs: LWP::UserAgent の HTTPS 対応は LWP::Protocol::https というパッケージに分離されました

    LWP::UserAgent の HTTPS 対応は LWP::Protocol::https というパッケージに分離されました 最近あたらしい Perl の環境を作って LWP を入れて https なページにアクセスしようとしたら LWP will support https URLs if the LWP::Protocol::https module is installed.って言われてビビるかもしれません。 それは https 対応するモジュールが別ですと李に分離されたためです。 そういう時は迷わずLWP::Protocol::httpsを入れればいいです。 Posted by Yappo at 2011年04月26日 19:24 | TrackBack | Perl

    dann
    dann 2011/05/06
  • YappoLogs: jQuery Mobile 所感

    jQuery Mobile 所感 しばらくjQuery Mobileを弄ってて思った事をメモ。まだまだあるふぁ何で色々変わるとおもうけど。 ドキュメントがすくないよママン アルファリリースなんで仕様固まって無い部分もあるから放置され気味なんすかね。 素直に実装読んだ方が速い。 あるふぁ2からあるふぁ3にしたらへんになったよ アルファリリースっていってんだろがカスが! 標準のCSSだけじゃiPhoneアプリっぽくならない 最初からついてるアイコンとかだけだと、良くあるiPhoneアプリの画面になりません。 Sencha Touchつかったほうがその辺充実してる。 テーマカスタマイズして頑張れって事ですかね。 正式リリースしたらテーマ作成ツールとかちゃんと出してくれるみたいだし、しばらく我慢の子。 heaer/footerの位置を固定にしてもなんか変 なんか頑張って実装してるんだけど、スクロー

    dann
    dann 2011/02/15
  • YappoLogs: HTML5 の Application Cache 用の manifest ファイルを簡単に作れる HTML5::Manifest and Module::Install::HTML5Manifest released

    « jQuery Mobile の permalink を HTML5 使って location.hash じゃなくする jquery.mobile.useHistoryState.js を書いた | Main | 俺とPHP » HTML5 の Application Cache 用の manifest ファイルを簡単に作れる HTML5::Manifest and Module::Install::HTML5Manifest released HTML5 から offline application を作るための強力な機能として application cache が追加されています。 これのキャッシュを制御する方法としては、専用の manifest ファイルを書かなければいけないんですが、手で書くのもだるいし専用コマンド作るのも打つのもだるいので $ make html5manife

  • YappoLogs: Plack::Middleware::Debug のアイコンをどかす Middleware

    Plack::Middleware::Debug のアイコンをどかす Middleware Plack処女喪失したての金曜日の天使ですおげんきですか。 Plack::Middleware::Debug を使って Debug のメニューを消したときって みたくなってなんか邪魔なので、端っこにどかすCSSを適用するMiddleware書いてみた。 やりたい事としては、アプリとは関係ないファイルの管理をしないで PM::Debug のcssだけを置換して使いたいって事。 Plack::Middleware::Debug は、必要なjsやらcssをshareディレクトリ以下に入れて自分の好きなように書き換えて使えるんですが、それやるとアプリ以外にファイル管理しなきゃいけないので面倒なのでやりたくないというワケ。 上のコードを app.psgi に入れとくと な感じになってくれました。 とりあえず目

    dann
    dann 2010/01/05
  • YappoLogs: Ajax アプリ等の為の JavaScript コードのテストツール JSTAPd を作ってるよ

    Ajax アプリ等の為の JavaScript コードのテストツール JSTAPd を作ってるよ Data::ObjectDriverをDISってる人の話題が三周目に突入した今日この頃ですが皆さんは何をDISってますか?Yappoです。 JavaScript にもテストツールが色々とあると思うんですが、 Ajax アプリの XHR リクエストとかも含めてラクチンにテストできるツールが見つからなかったので JSTAPd というツールを作りました。 http://github.com/yappo/JSTAPd 名前の通りテスト結果はTAPで出力してるのでproveコマンドとかを使ってPerlの作法でテストできます。 ブラウザの連携の設定をすれば prove -v foo/hoge.t とかをコマンドで打ち込めば勝手にブラウザ立ち上げてテストコード実行してブラウザ閉じて結果をコンソールに吐いてく

  • YappoLogs: Makefile polyglot (make And perl Makefile)

    Makefile polyglot (make And perl Makefile) Careless you doing "perl Makefile", then you take many error messages. Your trouble will be solved if the polyglot technology is used. # Example Makefile irst_labe: length X;$Y=Z; dummy_label: length 0; print "perl world\n"; $x = <<'END_OF_MAKEFILE=' length: echo "make world" END_OF_MAKEFILE= actually, this code is works on perl and make command. $ perl M

    dann
    dann 2009/10/20
  • YappoLogs: HTTP::Engine 0.03001 has streaming response now / multipart/mixedなストリームをHTTP::Engine/Plackでpushする

    HTTP::Engine 0.03001 has streaming response now / multipart/mixedなストリームをHTTP::Engine/Plackでpushする thanks many ideas from yusukebe, mattn, miyagawa. I created a streaming response support for HTTP::Engine. it was a too easy hack. example here [ゆ]: multipart/mixedなストリームをPlack/PSGIでpushする みて、HTTP::Engineの上で動くかと思ったけど全然動かなかったので、HTTP::Engine側で対応して動くようにしました。 http://github.com/yappo/fast-twitter-stream IO