lamndaとProcをclass_evalの引数として渡すときの挙動の違い

気になって調べたのでメモがてら書く。 調べたこと 何が気になったのかというとlambdaで以下のように書くとArgumentErrorになることだ。 foo = -> { def bar; puts 'baz'; end } Piyo = Class.new Piyo.class_eval(&foo) #=> ArgumentError: wrong number of…

メモ化でフィボナッチ数列(Ruby)

ちょっと調べたのでメモがてら書く。 実装 fibo = Hash.new do |hash, num| if num < 2 num else hash[num] = hash[num - 1] + hash[num - 2] end end 10.times { |val| puts fibo[val] } puts fibo 実行結果 0 1 1 2 3 5 8 13 21 34 {2=>1, 3=>2, 4=>3, 5=>…

instance_evalとclass_eval

今日たまたまenum_helpというgemの実装を見てて、「instance_evalとclass_evalってどっちがどうなんだっけ」ってなったので少し調べた。 zmbacker/enum_help 試しにenum_helpと似たようなサンプルを実装してみたので、サンプルとるりまの説明文をもとに備忘…

Base64形式の画像をRailsで保存できるように変換する

Railsでアプリを作ってる際、Base64に変換された画像をS3に保存するという要件があったので実装してみた。 実装にあたって以下のサイトとかを参考にした。 [rails]base64エンコードされた画像をcarrierwaveに保存する 環境 ruby: 2.3.1 rails: 5.0.0.1 実装 …

コミットメッセージにgit issueのIDを入れるgit hookをつくった(Source Tree対応)

Git Issuesにはコミットメッセージに#1などIssue IDを入れておくことで、Pull Requestを出した際にCommitとIssueを紐付けてくれる機能がある。 ただ、いちいち自分でコミットメッセージにIssue IDを入れるというのは忘れてしまうので、git hooksで自動的に挿…

CircleCIでElixir環境構築

CircleCIだとElixirの環境は用意されてないので自分で構築する必要がある。 なのでasdfというバージョンマネージャーを使ってElixir環境を構築してみた。 asdf-vm/asdf asdf-vm/asdf-erlang asdf-vm/asdf-elixir 環境 circleci: Ubuntu 14.04 (Trusty) erlan…

OTPを勉強した(Supervisor)

前回・前々回と同様、OTPについて公式ガイド見ながら学習した。 以下公式ガイドのコードを利用しつつ備忘録がてら書く Supervisor and Application Supervisor エラーが起きた場合、そのエラーをrescueしようとするのが普通のプログラミング言語 だが、elixi…

OTPを勉強した(GenServer)

前のエントリでAgentを勉強したので、今回はGenServerの公式ガイドを読む。 以下のガイドをざっくりと訳しながらやってきます GenServer 前置き Agentの場合プロセスのpidを特定するために、以下のように名前をつけることができる iex(1)> Agent.start_link(…

OTPを勉強した(Agent)

OTP周りがイマイチわからなかったので公式ガイドをなぞりつつこの機会に勉強してみた 備忘録がてらかく Agent Agentはelixirのstate管理を簡易的に行ってくれるmodule Agent 基本的にはAgent.start_link, Agent.get, Agent.putといったビルトインモジュール…

よくあるGemName.configureの実現方法をまとめた

ruby 2.4.0がついにでましたね。 Ruby 2.4.0 リリース FixnumとBignumがIntegerに統合されるとかが移行時に影響でそうな気がしますね。 さて今回はconfig/initializers/gem_name.rb内で GemName.configure do |config| confing.foo = 'bar' end とか設定して…

yarnでReact + webpack-dev-serverな環境をつくった

備忘録がてら書く 環境 PC: MacBook Pro (Retina, 15-inch, Mid 2015) OS: Sierra 10.12 node: 6.9.1 yarn: 0.17.10 手順 Node環境構築 nodebrewで環境を構築。 $ brew install nodebrew # nodebrewのPATHを通す $ echo 'export PATH=$HOME/.nodebrew/curren…

HTTPoisonを試してみた

edgurgel/httpoison README見ながら簡単に試してみただけなので上記URLでやってることとほぼ同じ。 ブログのテスト及び備忘録がてら書く。 mixプロジェクト作成 mix で作成 $ mix new github_api * creating README.md * creating .gitignore * creating mix…

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

オブジェクト指向設計実践ガイド ?Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz出版社/メーカー: 技術評論社発売日: 2016/09/02メディア: Kindle版この商品を含むブログ (1件) を見る Practical Object-Oriented Design in R…

「みんなではじめるデザイン批評」をよんだ

みんなではじめるデザイン批評―目的達成のためのコラボレーション&amp;amp;コミュニケーション改善ガイドposted with カエレバアーロン・イリザリー,アダム・コナー ビー・エヌ・エヌ新社 2016-05-24 Amazon ぼくは所謂webのサーバーサイドエンジニアであっ…

「仕事のやり方間違えてます」を読んだ

以前こちらで紹介されてて気になったので読んだ。 blog.yusuke.be 仕事のやり方間違えてます ―成功を手にする「理系思考」10の法則― どうでもよいけどタイトルもっとなんとかなんなかったのかこれ。。 まとめ 「価値創造」こそが良い仕事であり、それは多く…