JavaScript学習2

  • thisが難しい...
  • thisの4つのパターン
    • new演算子をつけて呼び出した時 => 新規制生成されるオブジェクト
    • メソッドとして実行された時 => その所属するオブジェクト
    • それ以外の関数 [非ストリクトモード] => グローバルオブジェクト
    • それ以外の関数[ストリクトモード] => undefined
  • class構文でのthisの挙動の問題点と対処法
    • 問題点
      • bind()で関数にthisを束縛する。
    • call(), apply()を使用して、thisを指定して実行する。
    • thisを一時変数に代入する
    • アロー関数で定義する
  • 結論
続きを読む

Javascript学習1

  • 変数の宣言について
    • 再宣言、再代入に関して
    • 巻き上げ(Hosting)について
    • スコープについて(一番、厄介)
    • 結論
    • 参考
  • データ型
    • プリミティブ型
      • Boolean
      • Null
      • Number
      • BigInt
      • String
      • Symbol
      • Undefined
    • オブジェクト型
続きを読む

トランザクション

  • トランザクションとは
  • トランザクションの4つの性質(ACID性質)
    • A: 原子性(Atomicity)
    • C: 一貫性(Consistency)
    • I: 独立性(Isolation)
    • D: 永続性(Durability)
  • 同時実行における弊害と解決策
    • 弊害
      • ダーティーリード(Dirty Read)
      • 反復不能読み取り(Non Repeatable Read)
      • ファントムリード(Phantom Read)
    • 解決策: ロック(排他制御)
      • 分離レベル
      • ロックの種類
        • 共有ロック(shared lock)
        • 排他ロック(excluve lock)
      • ロックの方法
        • レコードロック
        • テーブルロック
      • デットロック
  • 参考
続きを読む

Rubyで挿入ソートを書いてみた

はじめに

Rubyにはsortメソッドがありますが、あえて使わずに挿入ソート(昇順)のロジックを書いてみました。

挿入ソートについて

実際のコード

def sort(array)
  size = array.size

  #最初の要素を固定し、(要素数 - 1)回まわす。
  (1..(size - 1)).each do |i|
      while i > 0 && array[i - 1] > array[i]
          # 要素を入れ替える。 [3, 1] => [1, 3]
          array[i - 1], array[i] = array[i], array[i - 1]
    # i - 1 し、whileの条件式を満たさなくなるまで繰り返す。
          i -= 1
      end
  end
  puts array.join(' ')
end

array = Array.new(rand 10) { rand 100 }

sort(array)