タグ

ブックマーク / blog.recruit.co.jp (5)

  • Railsアプリの処理を100倍以上に高速化して得られた知見 | Recruit Tech Blog

    はじめまして。2019年4月から妊娠・出産アプリ『Babyプラス』の開発チームにJOINした濱田です。 『Babyプラス』のバックエンドはRailsで実装されているのですが、とあるCSV生成処理がとても遅かったので100倍以上に高速化しました。この過程でRailsアプリの処理高速化に関する以下の知見が得られたので、具体例を交えて共有します。この知見は、ActiveRecordを使用してMySQLなどのRDBMSからデータ抽出をする様々な場面で活用できると思います。 いわゆる「N+1問題」を起こさないのは基 「ActiveRecordインスタンスの生成コスト」はそれなりに高い pluckはjoinsと組み合わせることで他テーブルのカラム値も取得できる 前提: DBスキーマとデータ規模 今回の処理高速化に関わるモデルのDBスキーマとデータ規模は以下の通りです。なお、これらはエントリ向けに少

    Railsアプリの処理を100倍以上に高速化して得られた知見 | Recruit Tech Blog
    petitviolet
    petitviolet 2019/08/05
    生SQLはそれはそれでダルいマッピングを書きまくらないといけないので辛い
  • Lambda が VPC に対応したので rundeck と繋げてみた | リクルート

    リクルートデータ組織のブログをはじめました。※最新情報はRecruit Data Blogをご覧ください。 Recruit Data Blogはこちら 分析系雑用係の丸山です。 この度、AWS LambdaVPC に対応しました。めでたい。国民の祝日にしてもいい位めでたい。 この偉業を讃えるために、以下のことができないかと遊んでみました。 AWS S3 にファイル置く ファイルを置いたことで AWS Lambda が起動される AWS Lambda が自分を眠りから覚ましたファイルのパスを、とある VPC 内にある AWS EC2 インスタンス上で待ちわびてる rundeck に送る rundeck が S3 のパスを受け取る AWS Lambda の使い方としては、ただ VPC が加わっただけなので面白くないのですが、 API から rundeck を起動したり、rundeck に

    Lambda が VPC に対応したので rundeck と繋げてみた | リクルート
  • Scalaプログラミングスタイル集 | PSYENCE:MEDIA

    はじめに 人によって様々な書き方ができてしまうのがScala記事では、階乗を求めるfac関数を例に、いくつかの興味深いプログラミングスタイルを紹介します。 以下のコードは、REPLで:pasteすることで、簡単に動作を確認できます。 手続きプログラミング 破壊的操作をためらわない男らしいプログラミングスタイル。 def fac(n: Int) = { var result = 1 for (i <- 1 to n) { result *= i } result } 再帰で書くより速い(はず)です。 普通の再帰 初学者泣かせの再帰スタイル。 def fac(n: Int): Int = if (n == 0) 1 else n * fac(n - 1) // 再帰呼び出しの外側に * による演算がある このように書くとスタックをどんどん消費するので、後述する末尾再帰を使ったほうがいいで

    Scalaプログラミングスタイル集 | PSYENCE:MEDIA
  • [ Android ] - これからの「設計」の話をしよう | PSYENCE:MEDIA

    はじめまして。 6/1より入社いたしましたAndroidエンジニアの釘宮です。よろしくお願いいたします。 今日はAndroidの設計について語ってみようと思います。 その前に 「良い設計とはなにか」という議論が「正義とはなにか」という議論のようにいつまでたっても結論がでないのは、環境やチームメンバのスキルセット、ステークホルダーによって目指すべきゴールが変わるためだと考えます。 つまるところ、設計に正解はありません。 そのため以下で話すことは、「これが設計の正解だ!!」というわけではなくて、「こういう設計の仕方するとうまくいくっぽい」くらいのノリです。 あと、特にMVCとかDDDとか人によって解釈のズレが起きやすいところなどは、冗長になるのを嫌って自分の解釈で言い切っています。ご了承ください。 設計の目的について ハードルが下がったところで、早速。 まず設計の目的ってなんでしょうか? この

    [ Android ] - これからの「設計」の話をしよう | PSYENCE:MEDIA
  • Android Design Support Libraryを使う | PSYENCE:MEDIA

    どうもこんにちは。Google I/O 2015 帰りの 英単語サプリ 担当 田澤です。 Material Designを実現するためのAndroid Design Support Libraryが発表されました。 これまではサードパーティーのライブラリを利用するか、独自実装してMaterial Design対応をする必要がありましたが、ついに公式でサポートされるようになりました。サポートOSバージョンはAndroid 2.1 以上となっています。 そこで、記事ではAndroid Design Support Libraryで追加されたコンポーネントと使い方を紹介します。 また、各コンポーネントに関するDesign Guidelineのリンクも用意しているのでご参照ください。 なお、ここで紹介しているコードは Github - android-SampleDesignSupportLib

    Android Design Support Libraryを使う | PSYENCE:MEDIA
    petitviolet
    petitviolet 2015/06/10
    動画もあって良い
  • 1