プロダクト改善について 意思決定 長期で勝つためには数字に基づいた意思決定が絶対 事業会社において組織の強さとは何か? 強さは回せる仮説の量と質で決まる。 仮説検証のサイクルが早く、精度の高い仮説の改善を積み重ねることができる組織が強い 最善の…
メインファイルの作成 main.rbを用意し処理を1ファイルにまとめます。 実行する同一処理の増加などによってはオブジェクト指向の考え方に則って構造化していきます。 走り出しから構造化を意識してコードを書くのではなく、とりあえず処理を実行できるところ…
SEO memo SEO 「Search Engine Optimization」 検索エンジン最適化 検索結果でWebサイトがより多く露出されるために行う一連の取り組みのことを指す Googleが掲げる10の事実 ユーザーに焦点を絞れば、他のものはみな後からついてくる。 1つのことをとことん…
インフラ で学んだことを雑にmemoしていく サーバー サーバーとは、「Linux」や「Windows Server」など、サーバー用のOSインストールしたコンピュータ 「サーバーにどのようなミドルウェアをインストールするか」によってサーバーの用途が変わる。 Webサーバ…
Railsのプロダクトでサーバーのメモリが足りなくなる問題が頻発しました。 構成はnginx + unicorn unicornのワーカープロセスは、起動後ユーザーからのリクエストを処理し、再起動されることがありません。 長期間の運用を続けるとメモリが徐々に食いつぶさ…
AmazonCloudFrontでRailsのAssets周りにある静的ファイルをCDN配信する RailsでアプリのassetsをCloudFront経由で配信した時の話 問題と解決 Railsのアクションキャッシュ導入時、Webサーバ内からassetsの配信を行っていた。 その場合、Deploy時にassets pre…
Constraintsとは Railsのroutingに存在する機能 routingに制限を設けることができる デフォルトで定義されている カスタムで制約を作成することも可能 セグメントの制限 get "books/:id" => "photos#show", constraints: { id: /[A-Z]\d{5} } 上記はconstrai…
無事3月に大学を卒業し、今日から社会人になりました。 都内のWeb系の企業でRailsアプリの企画と開発をやっていきます。 まだまだひよっこエンジニアなので日々精進していきたいです。 今年の目標は、去年よりもブログ記事を多く書くことなので、日々の開発…
INNER JOIN (内部結合) 結合する両方のテーブルどちらにも同じキーが存在するレコードのみを残し、それ以外は切り捨て。 OUTER JOIN (外部結合) 結合する両方のテーブルどちらにしか存在しないキーがあっても切り捨てずに取得する。 どちらのテーブルのレコ…
Webアプリケーションのパフォーマンス改善として、RailsのActionCacheを導入しました。 Railsのキャッシュに関する概要はRailsGuidesが一番わかりやすかったです。 Rails のキャッシュ: 概要 「キャッシュ(caching)」とは、リクエスト・レスポンスのサイク…
Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った Railsで画像アップロードを行うGemにCarrierWaveがあります。 そのCarrierWaveのextension的位置付けの圧縮機能を簡単に実装するGemを作りました。 carrierwave-optimize_image Ruby Gems …
オブジェクト指向のこころを読み終えました オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章出版社/メーカー: 丸善出版発売日: 2014/03/11メディア: 単行本(ソフトカバー)この商品を含…
実際にテストを書いていきたい 前記事で紹介したツール。 React enzyme Mocha sinon power-assert chai jsdom アサーションライブラリは好みで選ぶ。今回はpower-assertを使ってみる。 前提 今回はReactのコンポーネントに対してのテストを行います。 かつ、…
Reactでテストを行う まとめ Reactのテスト環境を構築する際に色々と調べた結果。 もうツールとか色々ありすぎてわけがわからん。 となったので。 もし自分と同じ境遇にいる人がいたら少しでも手助けになれば良いなと思い、自分が調べたことをまとめておく。…
データ管理はしっかりやりたい DBにデータが保存される時に、そのデータが正しいかどうかを検証する仕組みをバリデーションという。 バリデーションのトリガー バリデーションが走るメソッド群 create create! save save! update update! 上記のメソッドはオ…
Railsで画像をアップロードし、かつ画像圧縮も行いたい時の実装をメモで残す。 環境 Macbook OSX 10.11.6 Rails 5.0.0 Ruby 2.3 Carrierwave Piet MiniMagick Gem 実装に必要なGemをインストール gem "carrierwave" gem "piet" gem "mini_magick" bundle ins…
「リファクタリング:Rubyエディション」 読みました。 リファクタリング:Rubyエディション作者: Jay Fields,Shane Harvie,Martin Fowler,Kent Beck,長尾高弘出版社/メーカー: アスキー・メディアワークス発売日: 2010/02/27メディア: 大型本購入: 9人 クリッ…
2017年もよろしくお願いします。 4月からはついに社会人としてスタートします! イケてるRubyエンジニアになれるように頑張ります!
ActiveRecordで値が変更する前後の値を取得することがあったのでメモ Rails 2.1あたりからActiveRecordの変更前後の値を取得する機能が備わっている。 method 意味 changed? 変更されているかどうか changed 変更されているattribute名の配列 changeds 変更…
シングルトンパターンとは 作成したクラスのインスタンスが唯一であることが保証される 唯一であるがゆえに、生成した1つだけのインスタンスにアクセスすることができる。 実装 Rubyにはsingletonと呼ばれるモジュールが定義されているためこれをrequireし、…
jQueryのsortableを用いて並べ替えを実装する Rails acts_as_list モデルの並び順を簡単に操作できるようにするGem 昔のRails1系あたりでは標準で搭載されていたらしいが、 途中でGemとして切り離されて現在は独立したGemとして存在する。 Rails 1.x の時代…
Compositeパターン コンポジットパターンとは あるものが同じような下位のもので作られているという考え方 大きなオブジェクトが小さな子オブジェクトから構成されていて、その子オブジェクトもさらに小さな孫オブジェクトでできていたりする 階層構造やツリ…
開発での小ネタ その2 普段の開発で得た知見を書き留めておく YouTubeへのリンクでクエリを付加するロジック DBにURLが保存してありすでに存在すればそのまま。タグが付いていなければ付加する こちらを参考にしました。 def youtube_url uri = URI.parse("h…
Observerパターン オブザーバーパターンとは Observerとは「観測者」 あるオブジェクトの状態が変化した際に、そのオブジェクト自信が「観測者」に「通知」をする仕組み。 オブザーバーは3つのオブジェクトで構成される。 サブジェクト(subject):変化する側…
Strategyパターン ストラテジーパターンとは 抽象的な処理と具象的な処理を分離することで、 変化に強い構造を実現する。 委譲を用いてアルゴリズムを変更可能にする。 目的の部分としてはテンプレートメソッドパターンと似ているが、 問題に対する解決のア…
TemplateMethodパターン テンプレートメソッドパターンとは 抽象的な処理と具体的な処理を分離することで、 変化に強い構造を実現する。 2つのオブジェクトによって構成される。 骨格としての「抽象的なベースクラス」 実際の処理を行う「サブクラス」 用い…
オブジェクト指向には設計原則とデザインパターンが存在する。 デザインパターンとは Gang Of Four(GoF)が定義したもの Javaで書かれた本がある。 「オブジェクト指向における再利用のためのデザインパターン」 1999/10 出版 プログラミングにおいて繰り返し…
「オブジェクト指向設計 実践ガイド 」を一通り読み終えました。 オブジェクト指向設計実践ガイド ?Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz出版社/メーカー: 技術評論社発売日: 2016/09/02メディア: Kindle版この商品を…
MySQL5.7から実装されたJSON型 使い方メモJSON型のテーブルを作成する CREATE TABLE `blocks` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(120) NOT NULL, `content` varchar(200) NOT NULL, `meta` json DEFAULT NULL, PRIMARY…
React.jsを使っていてVirtualDOMに対してライブラリを適用させたい場面がありましたVirtualDOMなのでライブラリを適用させるタイミングに肝心のDOMがまだレンダリングされていないという状況に遭遇。 Reactの動きは崩さず、VirtualDOM群がレンダリングを終え…