blog

紫陽花

2016-01-01から1年間の記事一覧

Rails ActiveRecordで値が変更する前後の値を取得する

ActiveRecordで値が変更する前後の値を取得することがあったのでメモ Rails 2.1あたりからActiveRecordの変更前後の値を取得する機能が備わっている。 method 意味 changed? 変更されているかどうか changed 変更されているattribute名の配列 changeds 変更…

Singletonパターン Ruby

シングルトンパターンとは 作成したクラスのインスタンスが唯一であることが保証される 唯一であるがゆえに、生成した1つだけのインスタンスにアクセスすることができる。 実装 Rubyにはsingletonと呼ばれるモジュールが定義されているためこれをrequireし、…

acts_as_listとjQueryで並べ替えを実装する

jQueryのsortableを用いて並べ替えを実装する Rails acts_as_list モデルの並び順を簡単に操作できるようにするGem 昔のRails1系あたりでは標準で搭載されていたらしいが、 途中でGemとして切り離されて現在は独立したGemとして存在する。 Rails 1.x の時代…

Compositeパターン Ruby

Compositeパターン コンポジットパターンとは あるものが同じような下位のもので作られているという考え方 大きなオブジェクトが小さな子オブジェクトから構成されていて、その子オブジェクトもさらに小さな孫オブジェクトでできていたりする 階層構造やツリ…

開発での小ネタ その2

開発での小ネタ その2 普段の開発で得た知見を書き留めておく YouTubeへのリンクでクエリを付加するロジック DBにURLが保存してありすでに存在すればそのまま。タグが付いていなければ付加する こちらを参考にしました。 def youtube_url uri = URI.parse("h…

Observerパターン Ruby

Observerパターン オブザーバーパターンとは Observerとは「観測者」 あるオブジェクトの状態が変化した際に、そのオブジェクト自信が「観測者」に「通知」をする仕組み。 オブザーバーは3つのオブジェクトで構成される。 サブジェクト(subject):変化する側…

Strategyパターン Ruby

Strategyパターン ストラテジーパターンとは 抽象的な処理と具象的な処理を分離することで、 変化に強い構造を実現する。 委譲を用いてアルゴリズムを変更可能にする。 目的の部分としてはテンプレートメソッドパターンと似ているが、 問題に対する解決のア…

TemplateMethod パターン Ruby

TemplateMethodパターン テンプレートメソッドパターンとは 抽象的な処理と具体的な処理を分離することで、 変化に強い構造を実現する。 2つのオブジェクトによって構成される。 骨格としての「抽象的なベースクラス」 実際の処理を行う「サブクラス」 用い…

Rubyを用いてデザインパターンを学ぶ

オブジェクト指向には設計原則とデザインパターンが存在する。 デザインパターンとは Gang Of Four(GoF)が定義したもの Javaで書かれた本がある。 「オブジェクト指向における再利用のためのデザインパターン」 1999/10 出版 プログラミングにおいて繰り返し…

オブジェクト指向設計 実践ガイド 読んだ

「オブジェクト指向設計 実践ガイド 」を一通り読み終えました。 オブジェクト指向設計実践ガイド ?Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz出版社/メーカー: 技術評論社発売日: 2016/09/02メディア: Kindle版この商品を…

MySQL5.7 JSON型の使い方メモ

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のVirtualDOM componentDidMount

React.jsを使っていてVirtualDOMに対してライブラリを適用させたい場面がありましたVirtualDOMなのでライブラリを適用させるタイミングに肝心のDOMがまだレンダリングされていないという状況に遭遇。 Reactの動きは崩さず、VirtualDOM群がレンダリングを終え…

Rubyの配列展開 *[a, b, c]

Rubyの配列展開 array = ["a", "b", "c"] *array # => a # => b # => c arrayのオブジェクトが入った変数の先頭に*(アスタリスク)をつけることでarray[0] array[1] array[2] の出力をしてくれる。 Rubyの中でも地味な機能ではあるけれども便利。筆者はこの機…

Railsの画像遅延ロードにはlayzr.jsがいいぞ

Webサービスのパフォーマンスを向上させるために表示する画像の遅延ロードを実現したい! そんなときにオススメなlayzr.jsを紹介します。筆者は実際にプロダクトに実装しました。 画像の遅延ロードをすることで得することは? 読み込み速度が速くなったり通…

git cherry-pick is 良い

学びをメモ:Gitを使っていて特定のブランチの特定のコミットのみを新しく作ったブランチに反映させたいなという場面がありました。 git rebaseもあるけどそれだと全てが過去のコミットとして反映されるから嫌だな〜、何か良い方法はないかな〜、と探していた…

Rails select2でajax処理を行い1万件以上でもスムーズに動くようにする。

jQueryのライブラリでいい感じに選択機能を実装するselect2があります。 今回はselect2でajax処理を行う方法を紹介します。 本家サイト Select2 - The jQuery replacement for select boxes本家サイトのExamplesにもあるようにselect2にajax処理でデータを取…

Rails kaminariにモンキーパッチをあててmetaタグをいい感じにする。

Railsでページネーションを実装するライブラリ、kaminariに対してモンキーパッチを当てました。 人生初のモンキーパッチでもあったのでやったことをまとめておこうと思います。 なにをやるのか? 環境は、Ruby 2.3.0 Rails 5.0.0 kaminari 0.17.0今回モンキ…

DBひでんのしょ

データベース(以下:DB)に関する自分の知見を整理しておきます。 DB秘伝の書という記事タイトルですが、公開した時点でもはや秘伝でもなんでもないですね。 ここにはDB設計に関するごく普通の考え方をまとめて書いています。 前述 なぜDBが必要なのか? DBを…

Rails5 に Draper 導入した際にエラーが出た

Rails5を使ってて出たエラーをメモRails5が正式にリリースされてもうすぐ2ヶ月ほど経とうとしています。Ruby on Rails最近新しく作り始めたアプリケーションにRails5を採用して開発を始めました。 そこで開発を効率よく進めていくために色々とGemを導入して…

Rails 複数のカラムに 一意制約 (ユニーク)を設ける

Rails ActiveRecordで複数のカラムに対して一意制約を設ける。複合一意制約複数のカラムの組み合わせがユニークであってほしい場面に遭遇しました。例えば、Siteテーブル Keywordテーブルが存在する時、Keywordテーブルにある site_id と name そして date …

Rubyのあれこれ、

あれこれ 普段Rubyを触っていてこれは学びとして記録しておきたいなと思ったものを紹介していきます。 OpenStruct Rubyには手軽に構造体を作成することができるOpenStructクラスが用意されています。 require 'ostruct' ab = OpenStruct.new ab.foo = 25 p a…

メタプログラミング まとめ

メタプログラミングRuby 第2版 を読んで学んだことをまとめておく。 メタプログラミングの中身 メタプログラミングとはコードを記述するコードを記述することである。Rubyはほぼ全てがオブジェクトでできている、純正オブジェクト指向の言語。 オープンクラ…

メタプログラミングRuby 第2版 読んだ。

読み終えました。メタプログラミングRuby 第2版メタプログラミングRuby 第2版 : Paolo Perrotta, 角 征典 : 本 : Amazon.co.jp この記事を書く前に内容を理解するために3週ぐらい読み直してるので、最初に読み終えたのは半月ほど前になります。最近、雨が降…

Emacs Magit使い方

Emacs の拡張パッケージ Magitを紹介します。 Magitってなに? MagitとはテキストエディタEmacsの機能を拡張するパッケージの一つです。 Emacs上でGitの操作を行うことができるようになります。github.comこんな感じにEmacs上でGitログを追えたりもします。 …

RubyのブロックとProcと、ときどきlambda

Rubyはほぼ全てがオブジェクトである。 ブロック ブロックとは、 {}もしくはdo...endで定義するもののこと。 ブロックを定義できるのはメソッドを呼び出すときだけ。 メソッドに渡されたブロックはyieldで呼び出される。 def method(a, b) a + yield(a, b) e…

Swift CocoaPod setup 導入手順

CocoaPods とは? CocoaPodsはObjective-C そして Swift のライブラリ管理ビルドツールです。 RubyでいうRubyGemsと同じ位置付けになります。CocoaPods 公式 CocoaPods.org CocoaPodsを導入する CocoaPodsはRubyGemを使用するためRubyが入った環境を必要です…

Rails 自分なりのapp以下のディレクトリ構成

RubyのアプリケーションフレームワークRailsは便利なもので、コマンド1つでアプリケーション開発を行うために必要な環境を一瞬で構築してくれます。さらにRailsは開発を快適にかつ、素早く行っていけるように設計されており、近年のWebスタートアップ系の企…

基本情報技術者試験に合格しました。

4月の第3週目に行われた基本情報技術者試験に合格しました(できました)。パチパチ合否の発表だけ先日発表されて受験番号を確認しました、なおまだ合格証書は手元に届いてません。6月上旬あたりにはくるのかな?基本情報を取ろうと思った理由は、特別に就活で…

はてな伊藤直也氏MIJS講演「プログラマでいること」を読んで

小野和俊さんのブログがとても面白く読み漁ってます。記事タイトルの、はてな伊藤直也氏MIJS講演「プログラマでいること」で語られている伊藤直也さん自身のお話がぐっとくるものがあったので紹介web界隈でお仕事している人なら知る人ぞ知る達人プログラマー…

【メモ】盗む側にもキャリアが必要なんだよって話

今どきの若手育成にひそむ3つの思いこみ というタイトルのスライドが"なるほど"といった感じだったのでメモがてら投稿。 今どきの若手育成にひそむ3つの思いこみ from Mariko Hayashi www.slideshare.net若手の育成者向けに作られたスライドですが、育成され…