u16suzuの blog

日々学んだことのメモブログです。

gemのソースを pry-byebug を使ってブレークポイントで止めて読む準備

いつも仕事でもプライベートでも使っている bundler だけど、中身のコードを把握していないのでどうも雰囲気で使っている感が否めない。 そこで、ソースを読み腹落ち感を得るためにコードを読む準備を進めてみた。 pry-byebug を使ってブレークポイントで止…

rails console から任意のメソッドのソースコードをRubyMineで開く

設定 .pryrcに以下を追記する。RubyMineのCUIコマンドがない場合は Tools > Create Command-line Launcher... で作っておく。 Pry.config.editor = proc { |file, line| "/usr/local/bin/mine --line #{line} #{file}" } Pry.commands.alias_command 'mine',…

自分の小さな「箱」から脱出する方法を読んだ

自分の中で一方的に師と仰いでいる元KLab CTO 仙石さんの投稿をきっかけにして、 以前購入し積読してあった本を読んだ。 とても良い本だった。 > 「私は正しい」という思いに気づくのは、難しいhttps://t.co/kUEFcu3LzM世の中で一番重要な真実でしょうね。…

thoughが使われる文章の訳し方について

github で gem の README を読んでいるとよくでてくる英単語の though について調べました. なんとなく but のように逆説の意味であることは知っていたけれどもいざ実戦で出会うと、though の前の節と後の節が逆のことをいっていて, どちらが文章の真意なの…

RubyMineとiTerm2 でRubyのバックトレースからファイルを開く時に RubyMine で開けるようにする

1 RubyMineのコマンドラインランチャーを作成する RubyMine のツールバー > Tools > Create Command-line Launcher... 2 iTerm2側で設定をする iTerm2 の Preferences > Profiles > 任意のプロファイルを選択 > Advanced タブ > Semantic History > Run Comm…

Rubyでデザインパターン ~Stateパターン~

RubyでStateパターンを実装してみるテスト。 Stateのコンクリートクラスにメソッドの実装を生やすことで、Stateを新しく追加するときに追加しやすくしている。 クラスマクロもちょろっと使ってみたり。 でもクラスマクロはコードが短くなるのはいいけど、初…

ORDER BY 狙いのキーについて動作確認メモ

こちらのスライドで説明されていることの理解を深めるために動作確認してみました。 Where狙いのキー、order by狙いのキー from yoku0825 www.slideshare.net # 実験用に bulk insert でデータを入れる values_1 = (1..9990).to_a.map do |_| "(#{rand(80)},…

Bundlerのエラー設計のメモ

Bundlerのエラー設計メモ module Bundler class BundlerError < StandardError def self.status_code(code) define_method(:status_code) { code } if match = BundlerError.all_errors.find {|_k, v| v == code } error, _ = match raise ArgumentError, "T…

2018/1/8(mon) ホットサンドメーカーの使い方が上達した

ホットサンドメーカーで毎朝トーストを焼いているが、今日はとても上手く焼くことができた。 あんこを挟んでバターを乗せて小倉ホットサンドを作って見た。なかなかの味だった。 夜に妹から電話があり、姪に送ったモンテッソーリのおもちゃであるところのシ…

2017/12/31-2018/1/1,2,3,4,5 久々に名古屋に帰っていた

年末風邪気味だったのが徐々に落ち着いてきた頃に、名古屋に帰った。 RubyKaigiが開催された大須がとても近かったので、観光と初詣がてら行ってみたら、予想をはるかに超えた人の波でかなり混雑していた。 イメージ的には仙台の商店街をイメージしていたがそ…

2018/1/7 オブスキュラに久しぶりに行った

近くにある馴染みの神社である池尻稲荷に初詣に行ってきて、おみくじを引いたら大吉だった。おそらく人生初の大吉ではないかと思う。出産が安産だったのが何より。相場に山気を出すなと書いてあって、これは今年は仮想通貨には手を出さずにおとなしく投信で…

あるオブジェクトに対して1回で複数のメソッドを呼ぶ

書いて見た。jbuilderっぽい見た目になった。 class Object def call(*methods) methods.map do |method| self.send(method) end end end p [1,2,3].(:first, :last, :class) # => [1, 3, Array]

Reactのメモ

準備 sudo npm install -g react-tools # jsファイルをwatch して自動ビルドをさせる jsx --watch src/ build/ html <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <script src="https://fb.me/react-15.1.0.js"></script> <script src="https://fb.me/react-dom-15.1.0.js"></script> …</meta></head></html>

outer join を使ってみる

テストデータ # towns table id name 1 アテネ 2 ヴェネチア 3 ローマ 5 ピサ # users table id name town_id 1 taro 1 2 jiro 2 3 saburo 3 4 shiro 4 inner join town_id 4 のレコードは towns tableに存在しないので表示されない select * from users AS …

TOC と CCPMに関する本を読んだ

夏休みの読書感想文。 最近 TOC と CCPMに関する本を会社からいただいて読んだ。 また、会社での研修にも参加することができそこでも座学とワークショップで CCPM, TOC について学んだ。 これにより、スケジュール通りに品質を落とさずに、仕事を進めるため…

ARのjoinまわりのメソッドを勉強した

ARのjoinまわりのメソッドを勉強した。N+1を解消するのにとても便利。 joins アソシエーションをキャッシュしない アソシエーションを検索条件でだけつかいたいときに有効 内部的には普通にjoinしてる preload アソシエーションをキャッシュする 必要なテー…

1 on 1 についてのまとめ

最近、自分の周りで 1 on 1 をやる機会が多くなってきた。 そんな折に、タイムリーにも WEB+DB PRESS で ひげぽんさんが 1 on 1 の記事を書いていらして、 とても良い記事だったので、後から見返しやすいようにまとめてみました。 1 on 1 を行う目的 半年の1…

リトライ処理のメモ

Rubyでリトライ処理をする際のテンプレ。再帰を使って綺麗に書ける。 class RetryException < StandardError; end def foo p Time.now raise RetryException end def retry_foo( rc = 3) begin foo rescue RetryException => ex # RetryException以外はretry…

Object#methodについてメモ

この書き方ができるの知らなかった. # レシーバがself. (Object#methodはレシーバとメソッドの実態を封入する.) [1,2,3].each( &self.method(:puts) ) [1,2,3].each( &method(:puts) ) # selfを省略できる [1,2,3].each{|i| puts(i) } こちらはたまに使う. #…

MySQLのパーティションのメモ

各パーティションのサイズを確認 check size of each partitions mysql> use information_schema; mysql> select partition_name,data_length,index_length from partitions where table_name = 'entries'; entries テーブルのパーティション一覧を表示する …

定数を定義する

module Constants GOLD_DEFAULT = 100 ITEM_MAX_COUNT = 255 end p Constants::GOLD_DEFAULT, Constants::ITEM_MAX_COUNT # => 100 # => 255 p Constants.constants # => [:GOLD_DEFAULT, :ITEM_MAX_COUNT] 定数は初めだけ大文字であればよいのだが、全部大…

現在見ているページのmarkdown形式のリンクを生成するブックマークレット

javascript:(function(){prompt('%E3%82%B3%E3%83%94%E3%83%BC%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84',%20%20%20%20%20'-%20['%20+%20document.title.replace(/([\[\]])/g,'\\$1')%20+%20']'%20+%20'('%20+%20location.href%20+%20')');})…

実引数側でのアスタリスク(*)の使用例メモ

実引数側でのアスタリスクの使用例メモ。配列オブジェクトを展開してメソッドの各引数に入れてくれる。便利。 def foo(name, val) "#{name}: #{val}" end ar = [[:a, 1], [:b, 2], [:c, 3]] ar.each do |elem| puts foo(*elem) # here end こちらの記事のsci…

scopeの使い方メモ

よくググるのでメモ scope :available, -> { where('deleted = false') } scope :available, -> { receivable.opened.showable } # 引数あり scope :find_by_friend_ids, -> friend_ids { where( target_id: friend_ids ) }

[キーワード引数] キーワード引数の使い方メモ

よく忘れるのでキーワード引数の使い方のメモ. 2.1からarg1のようにキーワード引数のデフォルト引数は省略できるようになった. def foo( arg1: , arg2: "arg2") puts "#{arg1} #{arg2}" end # 定義時に省略したarg1は呼び出し時には省略できない.(ArgumentEr…

enumのメモ

定義 class Log < ActiveRecord::Base enum reason: { login: 0, purchase: 1, finish_game: 2 } end 呼び出し 以下のように書いておくと、後から変更が必要になった時にわかりやすい pry(main)> Log::reasons[:login] => 0 全部欲しい場合 pry(main)> Log::…

Rubyのメタプログラミングメモ

Classをインスタンス化する時にHashで渡した値でInitializeするクラスのテンプレート class Person attr_accessor :name, :age, :address def initialize( hash={}) if block_given? yield( self ) else hash.each do |k, v| public_send("#{k}=", v) if res…

空白で区切って指定したフィールドの文字を取得

$ echo "1 2 3" | cut -d " " -f3 3 参考: フィルタを使用した文字列操作 2 | UNIX & Linux コマンド・シェルスクリプト リファレンス

def check_names names return unless Hash === names invalid_options = names.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc] unless invalid_options.empty? then raise ArgumentError, "invalid options: #{invalid_options.join ', '}" …

Rubyの特殊変数メモ

$! : 最後に発生した例外オブジェクト $: : Rubyライブラリの検索パス, $LOAD_PATH $0 : 実行中のRubyスクリプトのfile名 $/ : 区切り文字 $, : デフォルトの出力フィールド区切り文字列 参考: module Kernel (Ruby 2.1.0)