タグ

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

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

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

    aki77
    aki77 2014/03/13
  • 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

  • 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 とかからどうやって引っこ抜

    aki77
    aki77 2013/11/19
  • 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 って名前が

    aki77
    aki77 2013/03/13
  • YappoLogs: DeNA のノウハウが12個も馬鹿正直に書いてある「Mobageを支える技術 ~ソーシャルゲームの舞台裏~」を読んだ

    DeNA のノウハウが12個も馬鹿正直に書いてある「Mobageを支える技術 ~ソーシャルゲームの舞台裏~」を読んだ 先週末くらいに届いて週末うっかり読むの忘れて昨日の夜にだいたい読み終わりました。 実際の発売日は明日からなので、今すぐアマゾンで予約するか明日屋に並ぶといいよ! なんていうか書評書くのが凄い難しいん素よねこの、高層ビルの上層階のレストラン街のような感じで、それぞれの著者がそれぞれの業務に関して得た知見を惜しげもなくこれでもかって書いてるので、全体としてはまとまり感が凄いないっていうw ガラゲーの話とかサービス終わってるDoCoMoのPDC端末の判定方法とか Flash とか FastCGI とか2012年に出るらしからぬトピックスがあったりしますが、それが当に今の DeNA/Mobage を支えている技術である事には間違いないので当に馬鹿正直に、包み隠さず書籍化

    aki77
    aki77 2012/06/13
  • YappoLogs: Web関連エンジニアなら必ず読むべき本 〜 Webエンジニアのためのデータベース技術[実践]入門 〜 を全部読んだ

    Web関連エンジニアなら必ず読むべき 〜 Webエンジニアのためのデータベース技術[実践]入門 〜 を全部読んだ 2709円でこんなに濃厚なコストパフォーマンスがアホみたいに高いは読んだ事無いし、Web関連のエンジニアをやっている人は必ず読んだ方が良いし、特にどのレイヤをやるかに関わらずエンジニアを目指す学生さんも卒業までには読んでおいたほうが良いでした。 なんか誤解が多そうなんで追記しておくと、書は「カジュアルなデータベース*利用者*のための入門」ではなくて「質的なデータベース技術の知見を得る為の入門」である。ちゃんとタイトルだってデータベース技術って書いてあるでしょ? 明日着でWDP献先と同住所に送付さ せていただきます。ご一読いただき、コメントなどいただけると大変ありがたい です。 明日発売なので念のためご連絡させていただきました。 というメールを3月8日に頂いて、実

  • YappoLogs: InnoDB Deep Talk #1 に参加して来た話または 住所正規化 MySQL UDF を作った話

    « Kyoto.pm Tech Talks #01 に JPA の 地域PM向け 講師派遣支援プログラム で参加してきます! | Main | Kyoto.PM #1 で発表してきました » InnoDB Deep Talk #1 に参加して来た話または 住所正規化 MySQL UDF を作った話 昨日は起きたら参加申し込みしてたはずの InnoDB Deep Talk #1 が始まってるらしいのに気づいて急いで行ってきました。入館面倒い会場なのに遅刻者対応したりピザとか飲み物調達とか面倒い事をニコニコやってるいちい++だったし、ピザーラのピザじゃなくてサルヴァトーレのピザはやっぱり上手くて沢山くってしまった。 っていう話は置いといて、一通り終わって歓談タイムに突入した時に、もりよしさんが昨夜思いついた inokodb っていう素晴らしいストレージエンジンを、その場で実装してて LT して

    aki77
    aki77 2012/03/15
  • YappoLogs: GrowthForecast ノススメ

    GrowthForecast ノススメ みなさん管理画面毎にグラフ作ってませんか?作るのめんどくさくて数値の表だけだして、直感的にサービスの動向掴みにくいとおもっていませんか? Google スプレッドシートの機能でグラフだせるからいいよ?とかいってませんか? Google スプレッドシートに吐かせる方法より簡単にグラフが作れたらいいとおもいませんか? 遂に GrowthForecastというグラフ表示ツールで捗る話 - blog.nomadscafe.jp リリースされたので、早速僕が GrowthForecast をどんな感じで紹介しようと思いますが、なんか忙しいので便利ツールだけ紹介します。 https://github.com/yappo/grouthforecast-worker こういうツールを使っているので、グラフ追加したい時にいちいちある程度のボリュームのあるコードとか書か

  • YappoLogs: iPhone で position:fixed な UIToolBar を簡単に作る jquery.mobile.iscroll.js を作った

    « iPhone とかの フリックで操作するカルーセル UI を jQuery mobile で作ってる話 (jquery.mobile.carousel) | Main | FizzBuzz最短回答 もしくは Yahoo!Japan 入社課題提出エントリ » iPhone で position:fixed な UIToolBar を簡単に作る jquery.mobile.iscroll.js を作った iPhoneのWebサイトを作っていて、良くあるアプリの上と下の position:fixed なメニューを実装しようとした時に、iScrollを使えばわりかし楽に実装出来ます。 jQuery mobile (1.0a2) を使ってると header/footer 要素に data-position="fixed" を書いておけばそれっぽい動きになるんですが、スクロールイベントを受け取るた

  • YappoLogs: jQuery Mobile 所感

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

  • YappoLogs: #!なんか糞だ

    #!なんか糞だ #!というものは、根的にURLの使い方を破壊しているからうんこである。 まず、質ではない。jsが壊れたら見れなくなる!っていう批判は的外れだが。 #!に妄信するのは愚かなことであるのは間違いない。 何が糞かってのは、もうさんざんDISられてるから中略。 というかlifehackerとかのそれはやる意味がまったくないし、もし軽くしたいんであればもっと別の手段を取ればよい。 そもそも http://www.lifehacker.jp/ にアクセスすると http://www.lifehacker.jp/ に飛ばされるし、頑張って http://us.lifehacker.com/ からアクセスして記事のリンクをクリックすると http://www.lifehacker.jp/ に飛ばされるので、ほんと死ねばいい。 動的に書き換えられたコンテンツのパーマリンクを作るためには、

    aki77
    aki77 2011/02/17
    『#!対応を行うよりもposhState/replaceState/popstate対応をした方が、将来的にもちゃんと使えるし、URL的にも正しい動作になるし既存の全ての機械的にURLを処理するプログラムからも正しく使えるアプリになりますよ』
  • YappoLogs: トランザクションを使用したMySQLのおまとめINSERTはどれくらい速いか

    トランザクションを使用したMySQLのおまとめINSERTはどれくらい速いか 元ネタはMySQL のおまとめINSERTはどれくらい速いか - bonar noteです。 トランザクションでまとめてInsertしてからcommitしたほうが速くなるので、元ネタのベンチマークをベースにして試してみました。 環境は macports で入れた mysql 5.1.44 です。 まぁnormalからbulk(100)くらいの差は出てなくても、トランザクション使ってまとめてコミットしても多少速くなっとりますね。 normal と txn の差よりも bulk(100) と bulk(100)_txn の差が小さいのは、 bulk insert で最初から効率的になってるぶん差が少なくなってるという感じでしょうか。 コードは以下の通り。 Posted by Yappo at 2010年03月09日

  • YappoLogs: PHPの関数と同等の実装をPerlでどう書くリファレンスプロジェクト開始のお知らせ

    PHPの関数と同等の実装をPerlでどう書くリファレンスプロジェクト開始のお知らせ ふとしたきっかけでPHPのリファレンスマニュアルにある関数と同等の機能をPerlで実装するにはどうするか?といったリファレンスを作るプロジェクトを始めました。 PHP使いの人がPerlを弄る時に「PHPのこれPerlでどうやれば良いんだ!」といった要望や、ごく普通のPerl使いの人が「これどうやって書けば良いのかな?」って時に使うcookbook代わりに使える事を想定しています。 ドキュメント管理にはgithubhttp://github.com/yappo/docs-php-funcref-in-perlを使い、ドキュメントのビューワーとしてwikihubWikiHub :: php-funcref-in-perl :: READMEを使っています。 書いて欲しいと思った人にはあらかたコラボレータ入れてる

  • YappoLogs: goo.gl の API を叩いて goo.gl のショートURLを作る WWW::Shorten::Google ってモジュールかいた

    goo.gl の API を叩いて goo.gl のショートURLを作る WWW::Shorten::Google ってモジュールかいた http://goo.gl/ ってのが巷では始まっていますが、まだ勝手に tinyurl を作れないようなので 簡単に http://goo.gl/hoge な tinyurl を作る WWW::Shorten::Google ってモジュールを書きました。 http://github.com/yappo/p5-WWW-Shorten-Google CPAN には、各種 tinyurl を使って url を短くするための統一インタフェイスとして WWW::Shorten ってのがあるので、それの流儀にしたがって作りました。 Posted by Yappo at 2009年12月15日 19:54 | TrackBack | Perl

  • 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: Q4MをMacPortsのMySQL環境に入れる方法

    Q4MをMacPortsのMySQL環境に入れる方法 macportsでmysql入れると /opt/local/lib/mysql5/mysql とかいう独創的な所にライブラリが入るので、そのまんまのQ4Mのconfigureじゃ./configureすら上手く動かないし、ググっても良くわからないのでてっとり早くconfigure.inを書き換えたよ。 パッチはhttp://gist.github.com/94339から 実行令とかは下記の通り。 $ patch < ../for-macports.patch $ autoconf # include ディレクトリを追加するのが必要 $ CPPFLAGS=-I/opt/local/include ./configure --with-mysql=/opt/local/var/macports/sources/rsync.macports.

    aki77
    aki77 2009/04/14
  • 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とでも入れればいいと

    aki77
    aki77 2008/03/03
  • YappoLogs: はてブのエントリページに出て来るクリッピングサイトを消してくれるグリモン書いた

    はてブのエントリページに出て来るクリッピングサイトを消してくれるグリモン書いた みなさんは、はてなブックマークの「このエントリーを含む日記」をクリックして何か言及があるかと思ったら、クリッピングサイトで特に言及がなかった経験はありませんか? また、自分のエントリに「このエントリーを含む日記」が付いてて、よく考えたら特定数以上のusersが付いたエントリを自動収集してる日記だったりしてがっかりしませんでしたか? このはてブクリッピングサイトリムーバは、そんな貴方のお悩みを解決してくれる優れたuserscriptです。 このユーザースクリプトを入れるだけで、これらクリッピングサイトがエントリリスト画面から無くなってしまいます。 hatebu clipping site removerを入れたときのキャプチャ ちなみに消してるサイトは、ざっくり見てクリッピングサイトっぽいのだけをピックアップして

  • YappoLogs: 複数のsvnリポジトリを一つにまとめる方法

    複数のsvnリポジトリを一つにまとめる方法 うちのsvnリポジトリは、trac等で公開をする前までは、各コンポーネント毎にリポジトリを作るという非効率な管理をしていました。 そろそろ嫌になって来たので、これを全部公開用にまとめようと思い、helpみながら頑張りました。 要件的には、リビジョン番号が変わっても良いから、とにかくlogを含めてインポートしたい! という感じです。 最初はsvkとか使わなきゃだめなのかなぁ、とか思ってたのですがsvnadminだけで願いが叶いました。 dumpとloadを使います。 loadする時はオプション無しでloadしてしまうと、dump前のファイルパスにデータをぶっ込んでくれちゃうので、trunkとかが混ざってカオスになっちゃいました。 そこで--parent-dirオプションを使って、どのパスにloadするかを明示的に指定してloadします。 --par

    aki77
    aki77 2007/09/17
    dump, load
  • YappoLogs: Twitterっぽいサーバースクリプト書いたよ

    Twitterっぽいサーバースクリプト書いたよ twitterAPItwitter以外でも互換APIだしたり、ライブラリとかがtwitter以外でも使えるようになってたりと、API周りが面白い今日この頃です。 大して深い意味は無いのですが、オレオレTwitterみたいのが欲しくなってサクっとTwitter APIが使えるサーバスクリプト書いてみました。 デモはhttp://tech.yappo.jp:11111/にて動いてます。 id/passwodはguest/guestもしくはtest/testです。 ソースはhttp://svn.yappo.jp/repos/public/misc/twitterd.pl 使い方はドキュメント書いてあるけど、htpasswdでユーザーアカウントを作成して、その作成したアカウントを使ってTwitterもどきにログイン出来ます。 サーバーを立ち上げた