blog

紫陽花

開発

Rails Routing Constraints

Constraintsとは Railsのroutingに存在する機能 routingに制限を設けることができる デフォルトで定義されている カスタムで制約を作成することも可能 セグメントの制限 get "books/:id" => "photos#show", constraints: { id: /[A-Z]\d{5} } 上記はconstrai…

社会人1年目

無事3月に大学を卒業し、今日から社会人になりました。 都内のWeb系の企業でRailsアプリの企画と開発をやっていきます。 まだまだひよっこエンジニアなので日々精進していきたいです。 今年の目標は、去年よりもブログ記事を多く書くことなので、日々の開発…

Rails ActionCacheを導入する

Webアプリケーションのパフォーマンス改善として、RailsのActionCacheを導入しました。 Railsのキャッシュに関する概要はRailsGuidesが一番わかりやすかったです。 Rails のキャッシュ: 概要 「キャッシュ(caching)」とは、リクエスト・レスポンスのサイク…

Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った

Rails CarrierWave アップロード画像を良い感じに圧縮するGem作った Railsで画像アップロードを行うGemにCarrierWaveがあります。 そのCarrierWaveのextension的位置付けの圧縮機能を簡単に実装するGemを作りました。 carrierwave-optimize_image Ruby Gems …

オブジェクト指向のこころ 読んだ まとめ

オブジェクト指向のこころを読み終えました オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章出版社/メーカー: 丸善出版発売日: 2014/03/11メディア: 単行本(ソフトカバー)この商品を含…

Reactでテストを行う まとめ その2

実際にテストを書いていきたい 前記事で紹介したツール。 React enzyme Mocha sinon power-assert chai jsdom アサーションライブラリは好みで選ぶ。今回はpower-assertを使ってみる。 前提 今回はReactのコンポーネントに対してのテストを行います。 かつ、…

Reactでテストを行う まとめ その1

Reactでテストを行う まとめ Reactのテスト環境を構築する際に色々と調べた結果。 もうツールとか色々ありすぎてわけがわからん。 となったので。 もし自分と同じ境遇にいる人がいたら少しでも手助けになれば良いなと思い、自分が調べたことをまとめておく。…

Rails, Carrierwave, MiniMagick, Piet, 画像アップロード, 画像圧縮

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…

あけましておめでとうございます 2017

2017年もよろしくお願いします。 4月からはついに社会人としてスタートします! イケてるRubyエンジニアになれるように頑張ります!

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 出版 プログラミングにおいて繰り返し…

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…

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

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

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

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

LINE botでレストラン検索してみた

LINE botが先日公開されました。公式プレスリリースはこちら。 linecorp.comLINE CONFERENCE TOKYO 2016で LINE bot オープンAPIを公開する告知があり、 2016.04.07日からトライアルとして1万人限定でAPIの提供が開始されました。それに伴ってweb界隈では続…

slackからピザの注文に挑戦してみた

slackからピザの注文に挑戦してみた。\ピザ駆動開発/参考記事 qiita.com家入和真さんがQiitaに投稿しているのを見つけて面白そうだと思ってやってみました。 しかもちょうど小腹が空いた時にせっかくだしデリバリーでピザでも食べようかな、と思ったので。…

pixiv 2016 SPRING BOOT CAMPに参加してきたぞい

この春最後のインターン参加エントリーになります。 先週3/14(月) ~ 3/18(金) で行われたpixiv 2016 SPRING BOOT CAMPに参加しました。この記事を読む人はたぶんpixivインターンに興味を持っている人だと思うので、 今後pixivインターンに参加を検討している…

Rails URLにランダムな文字列を使いたい時に良い感じにやってくれるやつ

RailsでURLにランダムな文字列を使いたい時、他の人はどんな感じで実装しているんだろうかとおもってググってみると良い感じのgemを作っちゃってる人がいたので使わせてもらいました。詳細はこれ。 qiita.com記事が書かれたのが1年前と古いのでちゃんと動く…

Wantedly Spring Intern 2016に参加してきた

インターン参加エントリー タイトル通り、3月2日から3日まで、Wantedly Spring Intern 2016に参加してきました。 たった3日間という短い時間でしたがたくさんのことを学べて気付けて充実した時間を過ごしました。忘れないようにやったことなどを書き留めてい…

PR TIMESインターンに参加してきた。

これはインターン参加エントリーです。2/22(月)から2/24(水)までの3日間 PR TIMES ウィンターインターン2016 内定直結ハッカソン 3days に参加してきました。詳細はこちら。↓ prtimes.co.jp3日間、PR TIMES, Inc.さんにお世話になり、開発を行ってきました。…

Capistrano3 でsudo passwordを要求された時に入力できるようにするGemに助けられた。

題名のとおりです。Capistrano3でdeployを行った際にsudoコマンドでmkdirを行いたい際にpasswordを要求されて処理が止まってしまう事案が発生してしまいました。 2時間ほど悩んだところちょうど良い感じのGemを見つけで、これでいけるのかなぁ。。。と半ば不…

プログラマー風林火山

プログラマー風林火山なるものがあるらしい。 詳細はこちら。 小野和俊のブログ:プログラマー風林火山 スターエンジニアの特徴をうまく四つに分けてそれに風林火山の名称をつけた分類、 確かにいろいろな特徴をもつエンジニアの方がいるけど、大きくこの4つ…

最近の学び 雑記

最近学んだことを雑記として残しておきます、あくまで雑記なので読んでもあまり理解できないかもしれません。 最近職場の方にビシバシ教わっているのでそのまとめになります。めちゃくちゃわかりやすく教えてもらっていて2004年ごろから開発されているエンジ…