タグ

ブックマーク / k0kubun.hatenablog.com (8)

  • 個人開発を黒字にする技術 - k0kubun's blog

    最近は個人開発は自分のOSSのメンテで手がいっぱいになってしまったのでサービス開発のようなものは普段あまりやらないのだが、大学院*1で今学期、何作ってもよいという感じの授業を取ってWeb/iOS/Androidアプリ*2を全て作るという体験をする中で、たまたま個人開発のコストを抑える活動をしたので、その時に調べたり考えたりしたことを書いておく。 Herokuで無料にする Herokuでは毎月550時間free dynoが使え、クレジットカードを登録しておくと更に450時間、合計1000時間無料で使える。Herokuは30分アクセスがないと一旦停止するが、今回授業で作ったサービスでこれを使い切らないことは明らかだったので最初はこれでセットアップした。セットアップも簡単だし、PostgreSQLも無料でついてくる。 ただ、コールドスタートに10秒くらいかかり、これがこのサービスではUX的に致命

    個人開発を黒字にする技術 - k0kubun's blog
    kazeburo
    kazeburo 2022/05/07
  • SSEを使ってHTMLエスケープを高速化してみた - k0kubun's blog

    高速なHTMLエスケープをするライブラリを作った ある日HTMLエスケープを速くしたくなって、hescapeというライブラリを作った。 github.com とにかく速いHTMLエスケープがしたい Railsアプリのビューのレンダリングにおいて、CGI.escapeHTMLを高速化*1することでRailsのデフォルトのテンプレートエンジンが大きく高速化されたり*2、GitHubでもHTMLエスケープが全体のパフォーマンスに影響が大きかった事例もある*3など、常に自動でHTMLエスケープが行なわれるRailsの環境ではHTMLエスケープの速度が割と大きな意味を持っている。 従って、Hamlitの最速性を維持するためにHTMLエスケープのパフォーマンスを極めておきたかった。 vmg/houdini を倒したい 前述したGitHubの人が既にhoudiniというかなり速いエスケープライブラリを作

    SSEを使ってHTMLエスケープを高速化してみた - k0kubun's blog
    kazeburo
    kazeburo 2016/08/15
  • RubyなしでItamaeレシピを実行できる「itamae-go」を作った - k0kubun's blog

    Goとmrubyを使ってitamae-goを作った github.com Pokemon Goが流行っていたので流行に乗じてItamae Goを作った。 というのは冗談で、手元の開発環境のセットアップにitamaeを使っているのだけど、まっさらな環境でitamaeを実行したい時にRubyitamaeをどういれるかについて考えるのが面倒なので、Rubyなしで実行できるitamaeを作った。Goで実装し、mrubyレシピを読むことによりRubyなしでの実行を実現した。 インストール方法 Releasesにバイナリを置いてあるのでこれをダウンロードする。基的には環境セットアップ用のシェルスクリプトからこれをcurlなりwgetなりでダウンロードして使うことを想定している。 なんか動かなかったらgit cloneしてmakeすればその環境用のバイナリが作れるはず。 *1 使い方 普通にita

    RubyなしでItamaeレシピを実行できる「itamae-go」を作った - k0kubun's blog
    kazeburo
    kazeburo 2016/07/26
  • #CookpadTechConf 2016で「Railsアプリ開発環境の高速化」について話した - k0kubun's blog

    クックパッドの社員が発表するCookpad TechConfというイベントの第一回が今日行われ、「Railsアプリ開発環境の高速化」というテーマで話してきた。 開発環境の改善について 僕が技術部に入る前、サービス開発をやる中で一番不満だったのが開発環境のパフォーマンスだったので、技術部に配属されたころからこの仕事をやりたいと思っていた。 今回は先輩方が既に行っていた開発環境のパフォーマンスチューニング - クックパッド開発者ブログの一部を紹介しつつ、その続きとして自分がやってきたことを発表した。 業務で出した成果のうちいままで外部で発表したのはbyebugの高速化くらいだったので、普段僕がどんな仕事をやっているのか紹介する良い機会になった。 発表内容の補足 思ったより15分の枠で話せたことが少なかったので、発表内で話し足りなかったことについて書く。 libsassおすすめです 急いでて全然

    #CookpadTechConf 2016で「Railsアプリ開発環境の高速化」について話した - k0kubun's blog
    kazeburo
    kazeburo 2016/01/25
  • #RubyKaigi 2015 でテンプレートエンジンの高速化について話しました - k0kubun's blog

    FamlとHamlitがなぜ高速かについて話しました RubyKaigi 2015の1日目に、「High Performance Template Engine」というタイトルで発表しました。 @eagletmtさんが作ったFamlと、僕が作ったHamlitがなぜオリジナルのHamlに比べ高速か話しました。 発表は以下のような内容でした。 テンプレートエンジンとは何か テンプレートエンジンの例 テンプレートエンジンの仕組み パフォーマンス どのようにRubyのコードを速くするか ベンチマークがなぜ必要か プロファイリングの方法 改善の仕方 高速化のために何をしたか Famlがやったこと Attributeの最適化 高速なRuntime Attribute Builder Hamlitがやったこと String Interpolationのコンパイル 使われていない挙動の削除 以下、発表内で

    #RubyKaigi 2015 でテンプレートエンジンの高速化について話しました - k0kubun's blog
    kazeburo
    kazeburo 2015/12/14
  • Hamlit v2.0をリリースしました & RubyKaigi登壇します - k0kubun's blog

    Slimより高速なHaml実装「HamlitRubyHTMLを生成するのにERB以外でよく使われるテンプレート言語にHamlやSlimがあります。haml *1 をやめて高速なslimに移行する人が多かったのですが、私はHamlのシンタックスの方が好きなので、slimが用意したベンチマークでslimより高速なHaml実装「Hamlit」を3月にリリースしました。 *2 これはslimが提供しているベンチマークでHTML escapeを有効にし *3、FamlとHamlitを追加したベンチマークの結果です。なおHamlitは完全にHaml互換の仕様ではなく、この非互換が有利に働いています。 互換性と性能が大幅に向上したHamlit v2.0 Hamlitの互換性の問題 Hamlitは最初のv0.1の時点で上記のようなベンチでSlimより高速ではあったのですが、以下のような欠陥がありまし

    Hamlit v2.0をリリースしました & RubyKaigi登壇します - k0kubun's blog
    kazeburo
    kazeburo 2015/12/01
  • ISUCON5予選に「railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。 」チームで参加してきた #isucon - k0kubun's blog

    学生枠で出場した去年に引き続き、今年は新卒社員になった@cnosukeと@rkmathiと僕@k0kubunの3人でISUCON5予選に出場した。 僕らが最後に確認できたスコアは11045で、その時のスクショだと2日目の16位という感じで、予選通過はなりませんでした。 id:rkmathiの記事: http://rkmathi.hatenablog.com/entry/2015/09/28/004734 戦略 最初にコードは読まず、nginxのアクセスログをパースして集計する奴とnewrelicを使ってベンチ中最も時間を使っているエンドポイントを特定し、そのエンドポイントの中でどこが遅いかはrack-lineprofで把握してそこだけ読んで潰していく感じでやった。 去年の感じだと予選はいきなりキャッシュとか入れなくても落ちついて普通のチューニングをしていれば突破できると思っていたので、地道

    ISUCON5予選に「railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。 」チームで参加してきた #isucon - k0kubun's blog
  • ISUCON4本戦に「railsへの執着はもはや煩悩」というチームで参加しました - k0kubun's blog

    @cnosukeと@rkmathiと僕で学生枠で予選通っていたので、ISUCON4戦出てきた。 予選で反省して直した点 悲惨な前回の記録 予選の時は常に精神的に余裕がなかった上にチームワークが全く成立していなかったので、@cnosukeに指揮をとってもらってお互いの作業が被らないようにし、 サーバー上で変更を加えるときは声を掛け合い、またチームの誰かが話してるときは落ち着いて聞くようにした。 前回はDevOps的なことに時間を大量に使っていたけど、普通に全員サーバー上で作業して手動デプロイするようにした。 @cnosukeと@rkmathiがインフラを見てくれていて、僕はアプリのコードの読み書きに集中できたのでよかった。 戦略 ファイルサイズの大きい動画配信だったので、何か去年と同じような問題なのかなーと思って全台の帯域を使い切ることを目標にした。 フロントは3台でリクエストを受け、動画

    ISUCON4本戦に「railsへの執着はもはや煩悩」というチームで参加しました - k0kubun's blog
  • 1