タグ

ブックマーク / blog.mah-lab.com (17)

  • JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった | mah365

    JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった。知らなかった(迫真)。 典型的なRailsアプリのテストプラン そういう訳で典型的なRailsアプリのテストプランを書いてみたのがこちら。 ユーザーログインページでCSRFトークンを取得し、常にHTTPヘッダにつけるようにする ユーザーログイン情報をクッキーに保存 といった典型的な処理を盛り込んでいます。あとはREADME.mdを読んでもらえれば大体の書き方が把握できるかと思います。 ちなみに、# Debugというコメントの下2行をコメントアウトしてもらうと、JMeter上でデバッグ用の出力を表示することができます。テストプランが上手く動かないときに、リクエストヘッダやレスポンスを確認するのに便利です。 で、これをコマンドラインで ruby sample.jmx.rb && j

    JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった | mah365
  • 全件取得したら重すぎて死んでしまうようなAPIの返り値を絞り込んで取得したい(Lazy Enumratorの話) | mah365

    Ruby2.0以上の話です。 ときにActiveRecord::Relationが便利なのは、実際にto_aされるまでSQLが発行されないことですよね。SQLが発行されるまではいろいろな条件をインスタンス内に保持しておいてくれます。全件取得してインスタンス化してから絞り込む、なんてしていたら死んでしまいますからね。これ、無限に要素がある配列から特定条件の要素のみ10個取り出したい、というときでも似たようなことできませんかね? Enumerable#lazyを使えばできるよ redditのWhats you’re favorite ruby trick or quirk that most people don’t know about.というスレでも話題になっていたのですが、例えば API経由でとあるサイトの記事が取得できるとする。 記事はすっごくたくさんある。全部取得とかしたら死ねる

    全件取得したら重すぎて死んでしまうようなAPIの返り値を絞り込んで取得したい(Lazy Enumratorの話) | mah365
  • Railsで外部JavaScriptライブラリなどのAssetを管理するなら、bower-railsが便利 | mah365

    みなさま、Railsで外部のJavaScriptライブラリ、例えばUnderscore.jsなどを管理するとき、どんな方法を使っていますか? ファイルを落としてきてvendor/以下につっこんでますか? でもそれだと、いざバージョンアップしようと思ったときに面倒ですし、バグがあるのでバージョンを戻したい、といったときにも不便です。そもそもバージョンを管理できていません。 そんなとき、JSの世界ではBowerというツールでライブラリを管理します。Rubyの世界でのBundlerのようなものです。これをRailsで簡単に使えるようにしたのがbower-railsです。 使い方 事前に用意するもの Railsの環境があることは前提にして、他に以下のセットアップが必要です。 node.js bower このセットアップについては「Bower入門(基礎編)」という記事で分かりやすくまとめられています

    Railsで外部JavaScriptライブラリなどのAssetを管理するなら、bower-railsが便利 | mah365
  • 過去のmigrationをまとめてくれるGem「Squasher」 | mah365

    ずっと開発を続けていくと、どうしてもmigrationファイルがめちゃくちゃに増えてしまいますよね。あまりにも昔のmigrationファイルだと「とあるバージョンのGemを前提にしていたのだけど、Gemのバージョンが上がって実行できなくなった」みたいな事態が起こったりして厄介です。そういう訳で過去のmigrationファイルをひとまとめにしたいと思ったときに役に立つGemがSquasherです。 使い方 gem install squasherでGemをインストールしたあと、 squasher 2014 とコマンドを打つと、2014年以前のmigrationファイルをひとまとめにしてくれます。また、 squasher 2013/12 squasher 2013/12/19 などと、月・日を指定することで、「2013年12月19日以前のmigrationファイルをひとまとめにする」といった指

    過去のmigrationをまとめてくれるGem「Squasher」 | mah365
  • 先月から糖質制限ダイエットをはじめた結果 | mah365

  • 「実践DevOps! SonicGarden流Herokuガチ運用術!」というテーマでCIO安達とHerokuでの運用について話しました | mah365

    運用=監視ではない。現状把握(監視)+リスク低減(リカバリ)=運用である。 今「データ保全に細心の注意をはらっている」と言いましたが、単純に「バックアップが行われているか?」「コピーしたDBダンプが保存されているか?」をチェックするだけでは運用とは言えません。運用=監視ではないんですね。 監視観点を網羅することでしっかりと現状把握をするのと同時に、いざ問題が起こったときに速やかにリカバリできる必要があります。 SonicGardenでは主に以下のリスクを念頭に置き、問題が起こったときに速やかにリカバリできるようにしています。 アプリケーションデータの一部が破損するリスク ログファイルを一定期間保存(デフォルト3年分)し、ログからのリカバリを行えるようにする。 データベース内のデータの一部が消滅するリスク リージョンをまたいだ冗長化バックアップを行い、もしもの場合には別リージョンを利用したサ

    「実践DevOps! SonicGarden流Herokuガチ運用術!」というテーマでCIO安達とHerokuでの運用について話しました | mah365
  • 自動的にEager Loadingしてくれるようになる「Goldiloader」というGemが良い感じ | mah365

    RailsでのDBへのクエリの組み立ては常にN+1問題との戦いですよね。N+1が発生すると大幅にパフォーマンスがダウンしてしまうので、適切な事前ロードをいかに行えるかがプログラマの腕の見せどころになります。 でもそれって質でしょうか? DBにクエリを投げる部分の実装の詳細なのでは? クエリが空気読めばいいじゃん!という「Goldiloader」 「それって実装の質じゃないよね。詳細だよね。それはクエリを投げる部分(ActiveRecord)が空気読めばいいんじゃね?」 そんな思想で現れたGemGoldiloaderです。Gemfileに加えるだけで勝手にEager Loadingしてくれるようになります。 このGembundleせずに以下のコードを叩くと、eachでpostsが呼ばれるたびにロードを繰り返してしまうのですが・・・ > blogs = Blogs.limit(5).t

    自動的にEager Loadingしてくれるようになる「Goldiloader」というGemが良い感じ | mah365
  • 独断と偏見で選んだ7大クラウドソーシングサービスの利用手数料をまとめてみた | mah365

    ふとクラウドソーシングの新しいビジネスを思いついたのですが、既存のクラウドソーシングサービスの利用手数料ってどのぐらい取っているんだろうかと疑問に思い、調べてみました。 という訳でスプレッドシートにまとめてみました 見知っているクラウドソーシングサービスを7つほど絞り、Google Docsのスプレッドシートにまとめてみました。誰でも見られるようにしていますので、ご自由に閲覧下さい。(注:僕のメモ書きなので、内容はどんどん更新される可能性はあります。あしからず・・・) クラウドソーシングサービスの利用手数料まとめ まとめてみたところの所感 ポイント制、当にユーザーつくのかなー? 一番特殊なのが、Yahoo! クラウドソーシングですね。報酬は現金でなく、Tポイントでやり取りされます。あくまでちょっとした小遣い稼ぎという位置付けにしているのと、システムとしても決済をTポイント側に投げられるの

    独断と偏見で選んだ7大クラウドソーシングサービスの利用手数料をまとめてみた | mah365
    kitokitoki
    kitokitoki 2014/01/08
    GJ!
  • Githubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみる | mah365

    SaaSのCIと言えばTravis CIやCircle CIといったサービスが有名ですが、いずれにしてもプライベートリポジトリを使う場合は有料なのです。しょうがないよね、商売だもんね。でもCI入れたいなぁ。 そんな中、GithubだろうがBitbucketだろうがプライベートリポジトリでも無料で使っていいよ!というβ期間中のCI、Werckerが僕の周辺で話題になっていたので、触ってみました。画面もスゲー使いやすい上に、ハマりどころもなく、これはひょっとしてひょっとするんじゃないの?という期待を込めて、rails newからRailsアプリをHerokuにデプロイするまえのチュートリアルを作ってみました。みなさんもこの記事を参考に、ぜひ使ってみてください。 この記事のゴール Githubにpushしたら自動的にWercker上でRSpecのテストが動くこと Werckerでのテストに成功し

    Githubのプライベートリポジトリでも無料で使えるCI、Werckerを使ってrails newからHerokuのデプロイまでやってみる | mah365
  • RedisのPub/Subは面白そう at Kitazawa.rb #10 | mah365

    11/26(土)はKitazawa.rbの日でした。地域技術者コミュニティとしてゆるく活動しているKitazawa.rbですが、ついに10回目になりました。会場はOpenSource Cafe。勉強会用に場所を借りるのは別料金のようですが、オープンソースに関連した話だと半額になるようです。一応Rubyのコミュニティなので、半額にしてもらいました。ありがとうございました! 発表ネタがあったのは@yoheiさんのRedisの話とbackbone.js。backbone.jsの話は@mah_labが先日話したものの焼き増しです。 Redisの話 Redisとは永続化に対応しているインメモリDB(KVS)です。memcachedよりも速いという話。爆速ですね。 基はcacheサーバとして使うと思うのですが、Instagramは写真とユーザの紐付きをRedisで永続化しているようです。とはいえ、R

    RedisのPub/Subは面白そう at Kitazawa.rb #10 | mah365
  • 知っておきたい!Herokuを使う上では当たり前?の16の常識 | mah365

    Herokuの公式ドキュメントは英語なので読みづらいですよね。herokaijp/devcenterのように、有志が日語訳してくれているドキュメントもありますが、その中でも特に抑えておきたい16個の常識について挙げてみました。(16日に公開する予定の記事なので、何となく16個挙げてみました。。) (補足)Herokuを使う上での登場人物の名前 Dyno 「だいの」と呼びます。1Dynoと言ったとき、一つサーバが立ち上がっているようなものだと考えて下さい。 Routing Mesh Herokuアプリにアクセスがあったときに、Dyno間の負荷をロードバランスしながらリクエストを振り分ける機構をRouting Meshと呼びます。たまに「Router Error」というログを吐くのですが、そのとき障害が起こっている場所はここです。 常識1. Dynoは1時間アクセスがないとアイドル状態になる

    知っておきたい!Herokuを使う上では当たり前?の16の常識 | mah365
  • WordPress on Herokuで画像アップロードできるようにする方法 | mah365

    先日「WordPressのブログをherokuで立ち上げて、何かメリットあるの?」というブログを書きました。 「画像アップロードできる方法は、要望があったら書きます」と書いたところ、Messageleaf経由で応援のメッセージをいただきましたので、早速書いてみたいと思います! ちょっと待って、WordPressは何も設定しなくてもファイルアップロードできるでしょ?? できるのですが、Herokuアプリを再起動すると、Gitでバージョン管理されていないファイルは消えてしまいます。 なので、アップロードはできるけれども、アップロードしたファイルは消えてしまうかも知れないのです。 そこで、外部のサービスに画像ファイルを保存することで、画像ファイルが消えないようにする必要があります。 今回は Amazon Web ServiceのS3という安価で使い勝手の良いストレージサービス WordPress

    WordPress on Herokuで画像アップロードできるようにする方法 | mah365
  • WordPressのブログをherokuで立ち上げて、何かメリットあるの? | mah365

    blog.mah-lab.comはWordPressに移行した上に、現在みんな大好きherokuで運用しております。 「なんでわざわざherokuなんかで運用するんですか? マゾなんですか?」 いえいえ、ライトに立ち上げるなら、わざわざVPSなんて借りなくてもいいんですよ! herokuで立ち上げるメリットは、たくさんあるんです。なんといっても、無料だしね。 以下のような人に多大なメリットがあります。 無料で運用したい。 FTPなんて前時代的なものは使いたくない。git push heroku masterとか、コマンド一発でリリースしたい。 WebサーバやMySQLの面倒を自分で見たくない。誰か代わりに運用して! ものすごい負荷が来たときでも(金さえ払えば)落ちないようにしたい。 無料で運用したい。 herokuは無料からはじめられます。上手くいくかどうか分からないものを、お金を払っては

    WordPressのブログをherokuで立ち上げて、何かメリットあるの? | mah365
  • 2013年版! SonicGardenにおけるherokuでのサービス運用構成 | mah365

    ちょうど去年の今頃、SonicGardenにおけるherokuでのサービス運用構成をご紹介しました。去年の比較して、今ではheroku番運用されているサービスも増えているかと思いますが、実際の構成例はあまり紹介されていないようです。去年ご紹介した内容も少し古くなっていますので、2013年バージョンとして、再度ご紹介したいと思います! 去年からの変更点 去年と比較して大きく変わっている点は、以下の3点ですねー。 バックアップ取得方法の見直し & 監視の導入 Route53愛してる! ログ取得のアドオンをPapertrailに変更 バックアップ取得方法の見直し & 監視の導入 @interuが去年のJAWS-UG in Nagoyaで講演したように、「当にバックアップ取れてるの?」というのは重要な視点ですね! なので、バックアップを取得するところと、監視するところ、セットで構成するように

    2013年版! SonicGardenにおけるherokuでのサービス運用構成 | mah365
  • Railsプログラマはこれを入れればすぐにズルいデザインをはじめられます! | mah365

    先日のプログラマ向けデザイン勉強会で発表された「少ない手間と知識で”それなり”に見せる、ズルいデザインテクニック」(by 赤塚さん)の中に書かれていたSassのMixinをRailsで使えるGemにしてみました。 zurui-sass-rails: https://github.com/mahm/zurui-sass-rails sample: http://zurui-sample.herokuapp.com/ うおおずるい!w RT @mah_lab: .@ken_c_lo さんのズルいデザインをGemにしてみました。 github.com/mahm/zurui-sas… サンプルはこちら zurui-sample.herokuapp.com (based on github.com/machida/Custom…) — TAEさん (@ken_c_lo) 11月 7, 2012 @m

    Railsプログラマはこれを入れればすぐにズルいデザインをはじめられます! | mah365
  • totoコードリーディングで学ぶRuby on 生Rack 「第1回 totoで使われているライブラリの動作を知ろう」 | mah365

    約350行程度のコードでブログエンジンが実装されているtoto。このtotoのコードリーディングを通して、Rubyの実践的な使われ方やRackアプリケーションの作成方法を学んでいきたいと思います。第1回目はtotoで使用されている各ライブラリの使われ方を展望します。

    totoコードリーディングで学ぶRuby on 生Rack 「第1回 totoで使われているライブラリの動作を知ろう」 | mah365
  • 社内でbackbone.js with Rails勉強会を開催しました | mah365

    backbone.js + Rails3.1で作成したサイト「best vimrc」を題材にSonicGarden社内で勉強会を開催しました。ustreamされながら話すのは緊張しますねー。。 結果的に「クライアントサイドのコードを無理にMVCで書く理由が分からない。もっとシンプルで分かりやすいアーキテクチャがあるのでは?」という話に落ち着きましたが、サーバ側がRailsでフルAjaxなアプリを作る際には、backbone.js + Railsはgemが充実しているので良い選択肢なのかなという気がしています。 Getting Start backbone.js with Rails 次はknockout.js + Sinatraの組み合わせを試してみよう。 「best vimrc」のソースコードはgithubにあげてありますので、興味のある方はご覧下さい。

    社内でbackbone.js with Rails勉強会を開催しました | mah365
  • 1