u16suzuの blog

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

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 テーブルのパーティション一覧を表示する

use INFORMATION_SCHEMA;
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME='entries';

パーティションを削除する

ALTER TABLE entries DROP PARTITION p201308;

パーティションを追加する

  • 後で書く

Refer

定数を定義する

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]
  • 定数は初めだけ大文字であればよいのだが、全部大文字の方がしっくりくる

refer

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

  • 実引数側でのアスタリスクの使用例メモ。配列オブジェクトを展開してメソッドの各引数に入れてくれる。便利。
def foo(name, val)
  "#{name}: #{val}"
end

ar = [[:a, 1], [:b, 2], [:c, 3]]

ar.each do |elem|
  puts foo(*elem) # here
end

こちらの記事のscivolaさんのコメントを参考にしました。

Ruby初心者を脱した人が悩みがちな、ちょっと特殊な記法・演算子・イディオム - Qiita

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

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

# 定義時に省略したarg1は呼び出し時には省略できない.(ArgumentErrorが発生する) arg2は省略できる
foo(arg1: "arg1")
# => arg1 arg2

foo(arg1: "a1", arg2: "a2")
# => a1 a2

unknown keyword の例外を抑制する ** 引数

  • キーワード引数に指定していない引数を呼び出し時に指定すると、ArgumentErrorになるが、**引数 を指定することにより解消できる.
  • もしも、メソッド内で使用しない場合 **引数 の引数名は省略できる. (エラーを抑制したい時に使う?)
def foo(arg1:, **others)
  p arg1, others
end

foo( arg1: 1, arg2: 2)

def bar(arg1: **) # 使わない時は省略可
end
  • メソッドの呼び出し時に引数が何なのかがよくわからなくなるので、キーワード引数を積極的に使っていきたい。

参考リンク

enumのメモ

定義

class Log < ActiveRecord::Base
  enum reason: { login: 0, purchase: 1, finish_game: 2 }
end

呼び出し

  • 以下のように書いておくと、後から変更が必要になった時にわかりやすい
pry(main)> Log::reasons[:login]
=> 0
  • 全部欲しい場合
pry(main)> Log::reasons
=> { login: 0, purchase: 1, finish_game: 2 }