タグ

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

  • HerokuでパフォーマンスモニタリングするならLibratoを入れよう! | mah365

    HerokuでのパフォーマンスモニタリングにはNewRelicアドオンを入れるのも便利ですが、Libratoという「よりHerokuに寄り添った」メトリクスを出してくれるアドオンもあります。 こんな感じ とあるサービスで導入してみたところ、こんな感じでメトリクスが出ます。 RouterのQueueが詰まっていないか?とか、Dynoのメモリの推移や、PostgreSQLの容量は大丈夫か?といった情報をひと目で把握できる感じです。ダッシュボード的な感じですね。 他にも必要なメトリクスがあれば追加することができます。 もちろんアラートを設定することもできます。 無料のプランから使えるので、まずはお試しで。 とはいえ無料のプランでも十分に使えるクオリティだと思います。Herokuでアプリを運用している方は、ぜひご活用を! Librato

    HerokuでパフォーマンスモニタリングするならLibratoを入れよう! | 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
  • RubyMineを使っているならReformatでもっと幸せになろう | mah365

    こんにちは! RubyMine Advent Calendar 20143日目の記事です。さて、皆さんはRubyMineのReformatという機能は活用していますでしょうか? ん? 未だに手でインデントを揃えているって? 今すぐReformatを使いましょう! Reformatとは コード中のインデントやスペースなどを、言語別の設定にあわせて整形し直してくれる機能です。 下の画像のように、Preference > Editor > Code Style以下に言語別の設定を行う場所があります。 Code Styleの設定を元に、常に一定の見た目を保持できる点が、Reformatの優れているポイントです。 手動でReformatをかける まずは手動でReformatをかける方法から。例えば以下のようなインデントの崩れているHTMLソースがあったとしますね。このインデントを直してみましょう。

    RubyMineを使っているならReformatでもっと幸せになろう | mah365
  • アジャイル開発で『動くソフトウェア』による開発を始めるために必要な考え方 まとめ | mah365

    アジャイル開発においてもソフトウェアを作り始める以上、仕様を決める必要があります。いわゆる要件定義です。ただし、全く新しいものを作る場合と、古いものを新しく置き換える場合とで、やり方を変える必要があります。 新しいものを作る場合 ビジネスモデルはあるものの、それを実現するソフトウェア像はまだはっきりしない・・・新しいものを作る場合には、当然よくあるケースです。 ウォーターフォールとカウボーイスタイル この場合、「全部決めないと開発できませんよ!」というのが一般的ウォーターフォール開発であり、「とりあえず作りながら考えましょうか!」というのがカウボーイスタイルのアジャイル開発です。前者は冷静に考えて不可能(最初から決められたら誰も苦労しない)ですし、後者は手戻りすぎて永遠にローンチできません。 リーンスタートアップスタイル 新しいものを作り始める場合は、リーンスタートアップのスタイルを採用す

    アジャイル開発で『動くソフトウェア』による開発を始めるために必要な考え方 まとめ | mah365
  • 「元に戻せる」=「トライ・アンド・エラー」を可能にするイノベーション | mah365

    「元に戻せないシステムは、システムの基的な価値を毀損している」みたいなタイトルにしようと思ったのですが、尖り過ぎな気がしたのでユルめのタイトルにしてみました。 「元に戻せる」安心感のためにシステムを使っている 社内で利用しているシステムのいくつかは自分たちで作っているもので、僕も他聞に漏れずそういったシステムにコミットなんぞをしているのですが、つい先日不具合のあるものを勇み足で番リリースしてしまうという事件を起こしました。 「げ、この不具合はまずい・・・」 この事態をひとまず落ち着かせるためには、何とかして一個前のバージョンに戻さなければなりません。 しかし一個前のバージョンって何? 単にソースコードが戻るだけで良いの? むぐぐ・・・ど、どうすれば・・・。 と、普通に考えていると混乱しそうな事態ではありますが、社内で使っているサービスは大体Herokuで運用しているので、この場ではHe

    「元に戻せる」=「トライ・アンド・エラー」を可能にするイノベーション | mah365
  • AngularJSとRailsの丁度良い関係を探る:コード解説編 | mah365

    以前投稿したAngularJSとRailsの丁度良い関係を探るという記事のコード解説編です。前回はざっくりとしたアーキテクチャの紹介のみにとどめていたので、このエントリでサンプルコードの詳細について解説します。 バージョン情報 ruby 2.1.3 rails 4.1.7 devise 3.2.4 angularjs 1.3.2 ディレクトリ構造 app以下のディレクトリ構造は以下のような形です。 app ├── assets │   ├── images │   ├── javascripts │   │   ├── app │   │   │   └── tasks │   │   │   ├── tasks.controller.js.erb │   │   │   ├── tasks.html.erb │   │   │   ├── tasks.js.erb │   │   │  

    AngularJSとRailsの丁度良い関係を探る:コード解説編 | mah365
    ducky19999
    ducky19999 2014/11/26
    AngularJSとRailsの丁度良い関係を探る:コード解説編
  • AngularJSとRailsの丁度良い関係を探る | mah365

    AngularJSとRailsのインテグレーションと言うと、やれ「RailsAPIに専念してビューは全部AngularJSだ!」という極端な話になりがちな気がするのですが、それだとRailsの良いところが活かせませんよね。AngularJSの持ち味はDOM操作三昧で複雑になりがちな画面を良い感じにコーディングできるところにあると思うので、そういう画面でだけAngularJSを使ってはどうか?というのが今回のアイデアです。 丁度良い感じに使う そういう訳で今回作ったサンプルのアプリとソースコードがこちらになります。 https://todo-rails-sample.herokuapp.com/ https://github.com/mahm/todo-rails/ ユーザー認証はふっつーにdeviseを使って、Todoを編集する画面だけAngularJSを利用している、という感じのサンプ

    AngularJSとRailsの丁度良い関係を探る | mah365
    ducky19999
    ducky19999 2014/11/17
    AngularJSとRailsの丁度良い関係を探る
  • 「The DevOps 逆転だ!」は最高のITエンターテイメント小説 | mah365

    会社の棚に仕舞いこんであったThe DevOps 逆転だ!を読了しました。1つ機能をデプロイしようとするだけで2週間も3週間もかかるような悲劇的な現場が、経営から最終通告を突きつけられた後、起死回生の逆転劇を繰り広げるITエンターテイメント小説なのであります。 この90日間に奇跡を起こせたら、ITを社内に残すことを検討しよう。 ビジネスとIT 結果的に1日に何回もデプロイできるような自動化プロセスを作り上げることで、ビジネス要求からITによる実現までのサイクルが短縮化され、IT投資に対するビジネス成果を継続的に獲得することができ、会社の業績も回復した、というあらすじの小説なのですが(ネタバレだけど、題名から何となく分かりますよね・・・)、個人的に重要なポイントはそこではなく、ビジネス目標とITをきちんと結びつけて「どんなことをITで実現すれば、どんな成果が得られるか」ということをビジネス

    「The DevOps 逆転だ!」は最高のITエンターテイメント小説 | mah365
  • 勝手にRubyのオープンソースプロジェクトのソースをチェックする「REFACTORCOP」 | mah365

    勝手にオープンソースプロジェクトのコードをRuboCopにかけてみよう、という粋な試み。 これはリファクタリングテロの自動化だ! あの人がやってるデザインテロと呼ばれる、オープンソースのプロダクトにかっこいいデザインをあてるというのをパクって、リファクタリングテロというのを思いついた。やってもいいというプロダクトはありますか? — Akihiro Matsumura (@mat_aki) 2012, 9月 27 みたいなことをしていた人もいますが(懐かしい)、このREFACTORCOPはそれを自動化してしまう試み。 とはいえ、RuboCopではRubyの書き方レベルの話しか抽出できないので、そこまでレベルの高いリファクタリングができるわけではないのですが、REFACTORCOPの目的はRuboCopに引っかかったコードを晒しあげることではなく、引っかかったコードをメンテナ以外の人にも直して

    勝手にRubyのオープンソースプロジェクトのソースをチェックする「REFACTORCOP」 | mah365
    ducky19999
    ducky19999 2014/11/06
    勝手にRubyのオープンソースプロジェクトのソースをチェックする「REFACTORCOP」
  • Writing Fast Rubyというスライドが良い | mah365

    ちょっとしたコードの書き方でパフォーマンスが変わることがあります。リーダビリティを重視する向きからすれば小手先のテクニックに映るかも知れないのですが、リーダビリティを維持しながらちゃんとしたパフォーマンスを出すためにも、テクニックを知ることは大事なことだと思うのです。 結構違うもんですなー というわけで、そんなテクニックをまとめたスライドがWriting Fast Ruby。見ていて参考になったのでメモ。 たとえば引数に&blockをとってcallするよりも、yieldの方が5倍速い、とか、 def slow(&block) block.call end def fast yield end mapにブロックを渡すよりも、シンボルを渡す方が20%速い、とか (1..100).map {|i| i.to_s} (1..100).map(&:to_s) mapしてからflattenを呼び出すよ

    Writing Fast Rubyというスライドが良い | mah365
  • iOS8はiOS7に比べてDOM操作が3倍早い | mah365

    Apple Shows Love for HTML5 with iOS 8という記事でiOS7のときと比べてiOS8のWebのフロント処理能力がどれほど向上しているかをSenchaがまとめています。結論としてはiOS8からHTML5に気を出せる。 やっとHTML5が火を噴くのかな 具体的なベンチマークなどはApple Shows Love for HTML5 with iOS 8をご覧頂いた方が良いと思うのですが、DOM操作のパフォーマンスが大幅に向上している点などを考えると、どうしてもタップしてからの動作がイマイチもっさりだったHTML5アプリがようやく火を噴くのかなと思います。 Swiftの登場で格段にネイティブアプリのコーディングの敷居が下がったiOSではありますが、マルチデバイスへのリリースにはどうしてもHTML5に軍配が上がりますもんね。 そう考えるとCordovaのいち早いi

    iOS8はiOS7に比べてDOM操作が3倍早い | mah365
  • 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
  • イマドキ、Ruby on Railsで開発するならエディタはRubyMineだよね? 6出たよー! | mah365

    社内の8割方の人間を敵に回すタイトルです。RubyMineを使いはじめてから、かれこれ1年が経ちますが、もうRubyMine無しではRuby on Rails使えません。それぐらいに便利なので、そろそろちゃんとご紹介しようと思うのです。 ちなみに僕は、 vimEmacs → Sublime Text → RubyMine(今ココ!) という感じにエディタを渡り歩いています。 6になって、最強が更に最強になった つい先日、RubyMineがメジャーバージョンアップして6になりました。これにより以下の機能が加わり、より最強になりました。 IDEの中でターミナルを開けるように Zeusを標準で扱えるように(どうせならSpringもサポートして欲しかったけど・・・) 「今までできなかったのかよ!」とツッコミを受けかねない機能追加なのですが、いちいちウィンドウを切り替えてターミナル叩きながらコ

    イマドキ、Ruby on Railsで開発するならエディタはRubyMineだよね? 6出たよー! | mah365
  • WordPressのブログをherokuで立ち上げて、何かメリットあるの? | mah365

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

    WordPressのブログをherokuで立ち上げて、何かメリットあるの? | 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
  • 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
  • 1