オートコミットのオン・オフの制御メモ

バッチのロールバックのところではまったのでメモ

DB2のオートコミットの制御

オンする場合(コンソール)
$ export DB2OPTIONS=-c
オンする場合(DB2クライアントコマンド行プロセッサー)
db2 => update command options using c on
オフする場合
$ export DB2OPTIONS=+c
オフする場合(DB2クライアントコマンド行プロセッサー)
db2 => update command options using c off

DB2SQL実行時のオートコミットの制御

$ db2 -c- "DELETE FROM HOGE"
$ db2 +c "DELETE FROM HOGE"

注意点

SQL実行時に「-c-」や「+c」を付け忘れて
SELECT文などを打ってしまうとその時点でコミットされるので、
引数をつけてSQLを流しているときは、常に引数をつけてSELECT文などを流すこと。

オプションの一覧表示

$ db2 list command options

     コマンド行プロセッサーのオプション設定

  バックエンド処理待ち時間 ()              (DB2BQTIME) = 1
  バックエンド接続の再試行カウント            (DB2BQTRY) = 60
  要求キュー待ち時間 ()                    (DB2RQTIME) = 5
  入力キュー待ち時間 ()                    (DB2IQTIME) = 5
  コマンド・オプション                      (DB2OPTIONS) =

  オプション  説明                                       現在の設定
 ------  ----------------------------------------  ---------------
      -a        SQLCA を表示する                           OFF
      -c        自動コミット                               ON
      -d        XML 宣言を検索して表示する                 OFF
      -e        SQLCODE/SQLSTATE を表示する                OFF
      -f        入力ファイルから読み込む                   OFF
      -i        XML データをインデント表示する             OFF
      -l        履歴ファイルにコマンドのログをとる         OFF
      -m        影響を受ける行数を表示する                 OFF
      -n        改行文字を除去する                         OFF
      -o        出力を表示する                             ON
      -p        対話式入力プロンプトを表示する             ON
      -q        空白文字と改行を保持する                   OFF
      -r        出力を報告書ファイルに保管する             OFF
      -s        コマンド・エラーで実行を停止する           OFF
      -t        ステートメントの終了に文字を設定する       OFF
      -v        現行コマンドをエコーする                   OFF
      -w        FETCH/SELECT 警告メッセージを表示する      ON
      -x        列見出しの印刷を抑制する                   OFF
      -z        出力ファイルにすべての出力を保管する       OFF

RAMDISKのススメ(Windows7 32bit)

メモリの増設 or SSDへの移行

誰しもが良いスペックの環境で開発しているわけではなく、
減価償却なども考えると3年選手とかのPCはざらにありますよね。
新しいPC欲しいけどそんな予算ないよって言われることも・・・。
でも、メモリを増やすくらいなら・・・お願いできるかも?

また、メモリじゃなくSSDに交換するという手もありますが、
データのことを考えるとなかなかSSD一本で作業するのも怖くて、
頻繁に更新かかるファイルはHDD上でやってみたり・・・。

そんな方にお勧めなのがRAMDISK!!!
ということで、私のRAMDISK運用レポートでも書きたいと思います。

ちなみに私の環境はこんな感じ

私は12GB用意しました(2GB×2+4GB×2)
32bitマシンだと最大4GBしか認識しませんね。
でもいいんです!(クゥゥゥゥゥー!!!)

RAMDAをインストール・設定

では早速取り掛かりましょう。

    1. RAMDAをダウンロード・インストール
      以下のURLからダウンロード(アンケートとメールアドレスいります)
      http://www.dnki.co.jp//rsh/rsh_TurnA_ramda/start.html

    2. PAEを有効にする
      コマンドプロンプト(管理者権限)で以下のコマンドを入力(大事!!!)
      bcdedit /set pae forceenable

    3. RAMDCtrlを起動して設定を行います。
      8192MB」確保して「NTFS」でフォーマット

      OS管理外メモリ」を選択して「メモリの上限を検出」にチェック


    4. 再起動すれば・・・RAMDISKの出来上がり!!!
      初期設定どおりであれば「Z」フォルダが出来上がり約8GB確保されているはずです。

実測!!!

ちょうどHDD・SSDRAMDISK
フル装備なので実測してみますと、
こんな感じになりました。

私の運用はこんな感じ

RAMDISKは当然ながら「再起動すると初期化」されてしまいます。
なので「シャットダウン」は使わず「スリープモード」で運用しています。
半年くらい使ってますがメモリが空っぽになるということはありません。
むしろスリープモードの方がすぐに仕事に取り掛かれるので好きになりました。

WindowsであればWindowsUpdateなどが起こると勝手に再起動されてしまうので、
更新プログラムを確認するが、ダウンロードとインストールを行うかどうかは選択する
に設定して、うっかり再起動されないようにコントロールしています。

ちなみにRAMDAにもバックアップ機能がついていたりしますが、
個人的には信用していないので使っていません(^-^;)
なので、バックアップ・リストアを手動で行いますが、
以下のようなバッチファイルを作っていると便利です。

ROBOCOPY Z:\Sync G:\RamDisk\Sync\ /COPYALL /MIR

リストアは逆になります。

トラブルシューティング

RAMDAの設定をミスってしまうとブルースクリーンになったりしてしまう場合は
落ち着いてセーフモードで起動してRAMDAをアンインストールしたり、
設定を変更したりすることをオススメします。

Sublime Textの完全削除

Sublime Textのアンインストール

みなぞうさん(@)から教えてもらった
Sublime Text 3をインストールしたのはいいのですが、
プラグインなどインストールしていると動作がおかしくなってしまい
アンインストールしても完全には削除されないみたいで、
いろいろ苦戦してしまいました。

思い切ってキャッシュなどを削除しよう!!!

Windows7であれば以下を削除すれば、
アンインストールまでしなくても元通りになります。
(プラグインとかは入れなおしになりますが・・・)

C:\Users\<< ユーザー名 >>\AppData\Local
C:\Users\<< ユーザー名 >>\AppData\Roaming\Sublime Text 3\Packages

ほっと一安心・・・だがしかし

「Ctrl+マウス」の挙動がおかしいので、
これも引き続き調べます・・・(´;ω;`)

TDD Boot Camp Kyoto 0.1

これに参加してきました!

TDD Boot Camp Kyoto 0.1
http://tddbc.doorkeeper.jp/events/5017

参加しようとおもったきっかけ

TDDという言葉は知っているけど、
ペアプロという言葉は知っているけど、
ソースレビューとかはするんですけど、
実際やったことないんですよ・・・。
だからやりたい・・・って気持ちがこみ上げて・・・。

いざ出陣してみると?

そうそうたるTA(講師)の方々の中にひときわ目立つお方が・・・。
・・・ん?テストエンジニアとして有名で
現在はJUnit実践入門オンライン読書会を引っ張ってくださってる
きょんさん(@)が名古屋から緊急参戦しているではありませんか。
しかもTAじゃない。
これはなんだかすごいことになりそうな予感

まずはペアを組んでお互いのことを良く知るために昼食へ

京都に土地勘のあるお方とペアになったので、
おいしい中華料理を食べながらいろいろお話。

お互い同い年だったので
どういう考えをもって行動しているかとか
思っていることに共感できることも多かった。

すぐにコードをバリバリ書くんじゃなくて、
こういうコミュニケーションって時間って、
地味だけどペアプロにはすごく大事だなって思いました。
お互いのコーディングレベルとか考えても仕方ないじゃない?
とにかく2人で楽しくコーディングしようよって気持ち。

というわけで、あっという間に時間が過ぎていました。

さてペアプロ開始

自動販売機の機能をテーマにぺアプロを行いました。
以下のサイトの課題4までやりました。
http://devtesting.jp/tddbc/?TDDBC%E5%A4%A7%E9%98%AA

ペアプロで心がけたことをあげていきます。

  1. 小さな一歩

    一番最後の「逃げるが価値」にもつながりますが、
    とにかくテストは小さくこつこつと一歩ずつ。

  2. リズム

    自分ばかり長時間コーディングしない。
    相手や自分遅くてもある程度はじっと我慢。
    一定の時間で交代しながら進めていきます。
    コーディングって意外に手が止まる時があって、
    そういうときに自らどうですか?って差し出すのもあり。

  3. コードをほめる

    そのコードがいけてるかどうかは別にして、
    自分が考え付かなかったらコードはほめる。
    最初は冗長でもあとからリファクタすればよいのだ
    そこから新たなアプローチが見つかることも多い。

  4. とにかくしゃべる

    これをこうしたらうまくいくんじゃないですか〜?
    などペアに教えてもらいながらコーディング。
    黙々とコーディングしてることはなかったです。

  5. おやつをつまむ

    これはソースレビュー時でもよくやりますが
    時折おやつをつまむと癒されます

  6. 逃げるがかち

    テスト書くのに困ったら無理に作ろうとしない。
    とにかくドライブ感が大事なのでできるところから手をつける。
    それかもう少し細かい単位で進めないか考えてみる。

さいごに

コーディングしてると悶々と考えている時間が多いので、
ペアプロの体験はすごく自分にとって良いものでした。
まだ序の口の課題だったのでもう少し先に進めたときに
どうテストコードとプロダクトコードが変化していくのか
すごく気になるところです。

SC-02C on Android4.2.2 (ReVolt JB I9100)

はじめに

もうすぐ4.3が出るようですが、
恩恵をうけるのはNEXUS系ですよね。

私のGalaxyS2(SC-02C)も4.0でしたが
巷で出回っているROMを焼いてみることにしました。

参考サイト

以下のサイトを参考にさせて頂きました。

Galaxy S2開発手記その1「CWM導入&root化」
http://ameblo.jp/xrui3718/entry-11457615732.html

Galaxy SⅡ(SC-02C)にReVolt JB I9100 Ver. 3.2を焼いてみました。
http://cielsomer.blog.fc2.com/blog-entry-405.html

インストール方法

初めてやりましたが非常に簡単でした。

00.「ROM」のダウンロード+配置

以下のサイトからROMをダウンロードします。
http://forum.xda-developers.com/showthread.php?t=1755884
(Download Link -> Stable 4.3 )

ちなみに私は以下を使用しました。
ReVolt-JB-4.3-i9100.zip

ファイルは端末のわかりやすいところに配置しておきましょう。

01.「Odin3」のインストール

以下でダウンロード:Mirrorリンクから「Odin3-v1.85.zip
http://forum.xda-developers.com/showthread.php?t=1365805
解凍後→exeクリック→画面でること確認

02.「CWM」の導入

以下でダウンロード:「SC02C-SKRMLK-V1.5.10-DCM.7z
https://github.com/sakuramilk/sc02c_wiki/wiki/Kernel
とりあえず解凍だけしておきます。

03.「DLモードで起動」

一度電源をOFFにしてから
ボリューム下+ホーム+電源ボタン長押し

04.「ボリューム上+USB接続」

以下の画面になったらPCとUSBをつなぎます

05.「Odin3」起動+CMW導入

id:COMのところが「黄色」になってることを確認してください。
02で解凍した「SC02C-SKRMLK-V1.5.10-DCM-odin.tar.md5
を選んでおいて「Start」をクリック。終わると再起動します。

06.「Recoveryモード」起動

一度電源をOFFにしてから
ボリューム上+ホーム+電源ボタン長押し

07.いよいよROMを焼いていきます

wipe data/factory reset
 ↓
 Yes -- delete all user data

                                                                              • -

wipe cache partition
 ↓
 Yes --Wipe Cahe

                                                                              • -

advanced
 L Wipe Dalvik Cache
   ↓
   Yes -- Wipe Dalvik Cache
 

                                                                              • -

advanced
 L Wipe battery stats
   ↓
   Yes -- Wipe battery stats
   

                                                                              • -

mounta and storage
 L format /system

                                                                              • -

install zip from sdcard
 ↓
choose zip from internal sdcard
 ↓
ReVolt-JB-4.3-i9100.zip
 ↓
 Yes
 ↓
インストール
 ↓
reboot system now(再起動)

                                                                              • -

オーバークロック

バッテリーの消費量があがりますが、

 1.2Ghz→1.6Ghz

にできます。
全体的にヌルサク感がアップします。

使用感

ちなみに私はキャリアメールを持ってません。
なのでGmailのみしか使用できませんが快適です。

Polaris Office」が4.2に対応していないようなので、
「ThinkFreeOffice」を導入してますがまあまあかな。

オーバークロック(1.6Ghz)状態なので
バッテリーの消耗が少し早いかなと思いつつも、
結構こまめに充電することができる環境なので問題なしです。
むしろそれよりもさくさく動くことのほうが快適です。

4.2から追加されたロック画面へのウィジェット追加は、
アップデート当初は使わないかなと思っていましたが、
今はカレンダーとメールを表示せてます。地味ですが便利です。
紛失したらえらいことになりそうだけど(^-^;)

マルチアカウントは利用していないです。
タブレットじゃあるまいし別にいらない気がします。

地味ですがシャッター音とか消せるようになってます(笑)

Google Nowはもっと楽しいのかなと思ってましたが、
どうでもいい情報しか今のところ流れてきません。
GPSも常時ONでバッテリーの消耗が激しいですが、
もう少し我慢して利用してみようかと思います。

困ってること

画面の色味なども調整できますが、
少し薄暗いような感じはしていて、
いろいろ調整をいじったりしている状況です。

バイブレーションがバージョンアップ前より
弱くなっている気がしていてだいぶ不満です。
ROMのつくりに左右されるのかなと思いつつも、
LINEの通知に気づかないのでよく言われます。

SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=3.58.82

Springでのエラー

org.springframework.dao.DataIntegrityViolationException

エラー内容

テーブルのカラムサイズを超える値を格納する場合に発生

DevLove関西「セルフタスクマネジメント」

これに参加しました!

DevLOVE関西「セルフ・タスクマネジメント」
http://devlove-kansai.doorkeeper.jp/events/2882

昨今のタスクの切り方と管理方法の難しさ

今年1年は猛烈に忙しい日々が続きそうなのですが、
そこで抑えておきたいのがタスクの「切り方」と「管理方法」でした。

ここがうまくいかないとプロジェクトにドライブ感がでないし、
管理が雑になってしまって大切な機能を見失ったり、
よくあるのが予想以上に時間を費やしているのにもかかわらず
進捗が80%から先に進まないとかでてきたり。

え?タスクの切り方が悪い?
おっしゃるとおりです。
だからこそこの勉強会に参加したかったのです。

ワークショップによるタスクマネジメント

吉池氏を中心に

 【海外へ行ってしまう2人の先輩のためのバーベキュー】

を題材にタスクを切り出してそれを進めていくというワークショップ。

チーム編成は以下の4つの属性で切り分けられ、
チーム内にはカンバンを既に業務で使っていたりいなかったり
マネジメントをしていたり会社の歯車(=私)になっていたり
経験値が均一になるように工夫されていました。

そして決めるのが「チーム名」
アジャイルの特徴(?)なんでしょうか・・・。
前回もチーム名を決めて進めましたね。
今回は

 【Teamわん】

・・・1番目だったからです(笑)

次に、「バーベキュー」のテーマ決め。
どういうキーワードで先輩方を送り出すのか。

 【サプライズ】・・・あっと驚かせて思い出にしてもらいたい
 【手作り感】・・・食材(魚とか肉)を現地で調達して調理する
 【参加型】・・・先輩方にも参加してもらう

だいぶ難航しそうなキーワードがあがってしまいますが、
チーム内でゴールを具体的に認識する行動は非常に重要だと感じますし、
定期的にこの行動は続けたほうが良いのではと思いました。

私のチームでも「ゴール」はありますがそれは「単なるリリース」であることが多く、
しかもこのような視点では個々のモチベーションにもあまり結びつかず、
最初は持っていてもどんどん廃れていく一面があるからです。

次に、各個人で思い思いのタスクの切り出し(ツールは付箋とA3用紙)を行います。
このときはタスクの粒度は「とにかく細かく書く」のが良いと感じていました。
「肉」とかいう名詞ではなく「肉を調達する」みたいに動詞も含んだ形で、
「予定を決める」「開催地を決める」「予約する」
「調理器具を用意する」「薪を調達する」「牛を殺しにいく(笑)」・・・とか。

その後、チームでそのタスクを見合って必要なタスクを採用したり、
足りないタスクなどを補填したりしていくのですが、
意外なタスクの見落としがあったりするもので、
現実問題、一発でタスクがでてこなかったときに
どう修正(柔軟に対応)するんだろう
と感じました。

一通りタスクがでてきたところで「カンバン」の登場です。
A3の大きな紙に「TODO・DOING・DONE」を書いて付箋を貼り付け、
いよいよそのタスクを進めていきます。

「1日1人1タスク」をルールに進めていき、
「DOING」に進めるときは「どういう終了条件」なのかを明確にして進め、
進めた後に事前に用意していた「イベント」が実行されます。
イベントは「開催日は台風の予想です」とか「上司から金一封がでました」とか。

ちょっとしたボードゲームみたいですが、
現実世界でいうところの、毎日少しずつ仕事をこなしながら、
上司の急なお願いにも付き合うといった感じでしょうか。

結局このワークショップでは食材すら調達できずに終わるのですが
こうやって擬似的にタスクを進めることでタスクの切り方の問題が
チーム内で浮き彫りになってきました。

ワークショップで学んで印象的だったこと

チームで3つのポイントを出したのですが、
記憶力が乏しいので1つしか覚えてません。
写真も撮ったんですがうっかり端末初期化したので
全部消えてしまいました゜(゜´Д`゜)゜

それは・・・。

 タスクが細分化しすぎていて
 切り出したタスク同士が依存してしまっている

という問題。

TODOからDOINGに持っていくときに終了条件を決めるのですが、
実はDONEにいたるまでに他のタスクと依存してしまっていました。
例えば

 「開催場所を決める」
 「予定を決める」
 「予算を決める」

というのはDOINGに持っていってもDONEした時点では、
個々の振る舞いだけで終わってしまうので、
場所は決まったけど予算は決まったけど
・・・ってつなげていくとまた1からやり直される可能性が大きいです。

この場合のDONE条件とは

 「場所と予定と予算が決まっていること」

が本来の形であり「1つのタスク」として切り出すのが望ましいのです。

言葉で書くとアッサリしてしまいますけどこれは非常に難しい問題です。
逆にタスクが抽象的すぎると動かしにくいものなので、
お互いに相反関係のあるこれらの問題の妥協点を
チーム内で話し合って出た意見としてしっくりきたのが

 依存しそうなTODOを既にDOINGにあるタスクにマージする(3→1)
  or
 DOINGに持っていったタスクを細かくできそうなら切り出してTODOに戻す(1→3)

といった柔軟な対応です。

そもそものタスク切り出しのスキルが高ければいいんですが、
私のような初心者はこういうのが一番しっくりきます。

さいごに

・・・書いててだいぶ長くなってしまいました。

ワークショップの他にも、中村氏・前川氏による
タスクマネジメントの非常に参考になるセッションをいただきました。

こちらはスライドがdoorkeeperにあります。
概略としてはタスクを切り出したあとの動かし方・管理(マネジメント)で、
経験を元にされているものなので非常に参考になります。

頭よりも体で動かしたほうが良いので、
まずはできるところからやっていきたいと思います。
実際バーベキューやってみるのもおもしろいかも?