no memo

メモばっか

cursorとDBの基本のめも

DBのカーソル(Cursor)基礎まとめ。

Cursor とは

DBに対して(主にループ処理や分岐を含んだ連続処理)を行いたい時にsetする。

SQL (syntax)

  • 宣言
  • open
  • while 文書き出し
  • BEGIN ループ処理 END
  • close
DECLARE CURSOR_NAME CURSOR FOR (SELECT ... FROM ... *FOR UPDATE OF TABLE_NAME)

OPEN CURSOR_NAME 

WHILE :FETCH_STATUS = 0 ## FETCH_STATUS success: 0, failed: 1, empty: 2

BEGIN
 UPDATE tablename set hoge = fuga ## ... roop処理の対象 
 WHERE CURRENT OF CURSOR_NAME ## current cursor に↑(のroop処理)を実行
 FETCH NEXT FROM  CURSOR_NAME INTO hoge ##hoge:roop処理で使う処理 ## 1行目の時:1行目をfetch、その他:次の行をfetch
END

CLOSE CURSOR_NAME

宣言の時に * のFOR UPDATE OF をつけると捜査中のこのテーブルをロックでき、 他のトランザクションと同時に実行されて整合性が失われることを防げる。

参考

もっと基本がわからなくなった時 【MySQL, SQL】データベースを扱う基本SQL一覧

公式 MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.6.6 カーソル

その他めも

  • きほんのき Create:INSERT
    Read:SELECT
    Update:UPDATE
    Delete:DELETE

  • ODBC Open Database Connectivity. csv fileへのアクセスを簡単にしたり。

  • ACID特性

 特性名 説明 機能
Atomicity 原子性:1(実行完了)か0(未完了)か コミットメント制御
Consistency 一貫性:トランザクションの状態に関わらずDBの整合性が保たれなければならない 排他制御(ロック)
Isolation 独立性:複数トランザクションを同時実行しても、単発で複数個実行しても同じ結果にならなければいけない 排他制御
Durability 耐久性:障害発生時もトランザクション内容を保持しなければならない

排他制御1:ロック * ロック > 占有ロックと共有ロック * デッドロック * 検出 * 待ち状態のまま一定時間が経過したらデッドロックとみなす * 各トランザクションが占有している資源の有向グラフ=待ちグラフを作る * 解除  * ロールバック

排他制御2:ロック以外 * 時刻印方式:timestampを記録 * 楽観的方式:書き込み直前に更新されていないかチェック。更新されていたら計算し直してから書き込む。 indexeddb のcursorもう一度読みに行こう。。。

unix commandをちょっと復習したメモ

ちょっと総復習したことのメモ

unix コマンド

  • $ echo
  • $ uname
  • $ cal
  • $ ls -F //ディレクトリには末尾に-aをつけて実行
  • コマンドラインのキーそうさ
    • Ctr - K カーソル〜行末を削除
    • Ctr - U カーソル〜行末を削除 いかzshの単語編集 Control+w # 左の単語を切り取り Meta+d # 右の単語を切り取り Control+u # その行全部切り取り(bashだとカーソルより前を削除) Control+y # ペースト Control+/ # undo Control+l # 今のコマンドラインをウィンドウの一番上に持ってくる Control+a # カーソルを先頭へ Control+e # カーソルを末尾へ
  • cp -R #ディレクトリごとごそっと持ってくる
  • ln -s #シンボリックリンク作成

lsの ロングフォーマット

  • $ ls -l #ロングフォーマット
  • drwx—— 4 username staff 136 9 25 2015 Applications
  • 種類 permission ハードリンク数 所有者 所有グループ filesize(直下のみ) 最後に変更された日時

  • $ls -lh,-ld ファイルサイズ付き

ワイルドカード

vim のショートカットメモ

  • HJKL
  • 0,^ 行頭へ
  • $ 行末へ
  • % 対応するかっこへ
    • 3X
    • dd 行を削除
    • 2dd 2行削除
    • D カーソル〜行末を削除
    • d0 先頭~カーソルを削除
    • dG カーソル~ファイル末尾を削除
    • Ctr-v 矩形選択モード
      • d カット
      • ui
    • v ビジュアルモード(選択できる) -> dd で削除, yyでヤンク

    http://qiita.com/satomyumi/items/755cfbb0e97d48280775

人の脳の特性からわかる、目標を確実に実行にうつすためのたった2つの方法

目標を立てても実行に移せないことが良くあります。
私もこの記事を書くのに、書こう書こうと思いながら、下書きにある状態から公開するまで、ダラダラしてしまいました。

脳科学を学んでいるI君から教えたもらった、「決めたことを確実に実行するための2つの方法」を書きます。備忘録です。

 

  1. すぐにやること
    そんなの当たり前だ、と思うかもしれません。でも、どうしてか知っていますか?
    これは人の脳は変化を嫌う、という性質のせいだそうです。

    一つ例を出します。今日は明日締め切りのレポートを絶対にやらなくちゃ!と思っていたとします。ですが家に着くと、5分だけ、のつもりでテレビをつけたり本を読み始めたりします。5分だけ、10分だけと思っているうちにどんどんレポートに手をつけるのが億劫になり、先延ばしにしてしまう、ということはよくありますね。
    これは、「人の脳の変化を嫌う」という特性のせいだそうです。5分だけ、10分だけ...と先延ばしにしている時間が長ければ長いほど、脳はその先延ばしにしている状態を変えることに対して抵抗を持つようになります。つまり、先延ばしにしてテレビを見ている時間が長くなるほど、レポートに取り掛かるハードルをどんどん高めてしまっているのです。
    家に着いた瞬間に始めることが、これが一番レポートを始めるのに、ハードルが一番低い瞬間なのです。こういうわけで、すぐやる=脳にとっての行動を起こすハードルが一番低い状態の時に実行開始する、とスルッと実行できるのです。

  2. 自分で決めた目標、と思わないこと。神様(もしくは偉大な人)とかに与えられた目標であり、これを実行できれば絶対に自分はすごくなれる、と思うこと。

    最近仕事で英語を使う機会が増えてきましたが、私は中々始められませんでした。そんな時私は、英語やっとけよ、と直接言ってくださった会社の偉い人に与えられた仕事、と思って英語の勉強をするようにしています。

    裏付けとなるこんな実験があるそうです。2つのグループの人たちに、それぞれパズルに取り組んでもらいました。グループAの人たちにはこのパズルを解いてください、グループBの人たちには3種類のパズルの中から好きなパズルを選んで解いてください。とお願いしました。
    すると、人からパズルを与えられたグループAの人たちは、自分でパズルを選んだグループBのどの人よりも、長い時間取り組んでいたそうです。

    この実験から実証されたのは、人の脳は、自分で決めて実行するより、人に与えられたことを実行する方が確実に、しかも高い集中力で取り組める、という性質がある、ということです。
    人の脳は、同じことを取り組むのにも他者から与えられたものだと思い込むと、すぐにとりかかり、熱心に取り組むそうです。「できなかった」と言いたくないからでしょうか。

    ちなみに、「夢をかなえるゾウ」という本が、この良い例だそうです。私も近いうちに読みたいと思っています。


    以上の2つの方法で、実行にうつしやすくなります。
    実行に移すのが億劫なとき、チラッと思い出すと良いかもしれません。

はじめまして

ポジティブに生きていくために、人から教えてもらったこと、学んだこと、忘れたくないこと、を書き残していきます。

自分の備忘録です。もし間違ったことを書いていたら、コメントで教えてくださると嬉しいです。


たまに関係ないことも書きます。