時間がかかるsqlスクリプトの進捗を確認する
mysqlスクリプトやmysqldumpで大量データをあれこれしたいとき、 なかなか終わらないと進捗が見えなくてわなわなしますよね。
# でかいテーブルを空にする truncate table hoge_db.dekai_table; # すごいテーブルを空にする truncate table hoge_db.sugoi_table; BEGIN; # でかいテーブルに、別DBのでかいテーブルのデータを突っ込む insert into hoge_db.dekai_table select * from fuga_db.dekai_table; # すごいテーブルに、別DBのすごいテーブルのデータを突っ込む insert into hoge_db.sugoi_table select * from fuga_db.sugoi_table; COMMIT ;
トランザクションにした日には完了するまで待ち続けるしかなくて 一層わなわなします。
プロセスリスト(show full processlist)で確認することもできますが、 もうちょっと気軽にシェルスクリプトみたいに途中経過をechoとかで 挟めないのかな、と思ったらありました。
コマンド書いたらいいんですね。
\! echo "でかいテーブルを空にする" truncate table hoge_db.dekai_table; \! echo "すごいテーブルを空にする" truncate table hoge_db.sugoi_table; BEGIN; \! echo "でかいテーブルに、別DBのでかいテーブルのデータを突っ込む" insert into hoge_db.dekai_table select * from fuga_db.dekai_table; \! echo "すごいテーブルに、別DBのすごいテーブルのデータを突っ込む" insert into hoge_db.sugoi_table select * from fuga_db.sugoi_table; COMMIT ;
これをnohupで実行します。nohupすることで、サーバーからログアウトした あとでも処理を続けてくれます。
$ nohup mysql -h hoge_host -u username -ppassword hoge_db -e "source sync.sql" & #=> nohup: ignoring input and appending output to `nohup.out'
仕込んだechoは「$HOME/nohup.out」で見ることができます。
$ tail -f ~/nohup.out #=> でかいテーブルを空にする #=> すごいテーブルを空にする #=> でかいテーブルに、別DBのでかいテーブルのデータを突っ込む
fish shell で $JAVA_HOME を設定する
$JAVA_HOMEに限った話ではないのですが、bashでよくやる
export JAVA_HOME=$(/usr/libexec/java_home)
みたいな、evalして変数に受け取るやつをfishでやってみた
~ ─> ><}}*> vi .config/fish/config.fish set -x JAVA_HOME $(/usr/libexec/java_home)
ら、怒られた。
~ ─> ><}}*> source .config/fish/config.fish $(...) is not supported. In fish, please use '(/usr/libexec/ja…)'. .config/fish/config.fish (line 3): set -x JAVA_HOME $(/usr/libexec/java_home) ^ from sourcing file .config/fish/config.fish called on standard input source: Error while reading file '.config/fish/config.fish'
fishでは$は変数にしか使わなくて、(command)で書けばよいそうです。
~ ─> ><}}*> vi .config/fish/config.fish set -x JAVA_HOME (/usr/libexec/java_home) ~ ─> ><}}*> echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
通った!
MacBook Pro で、特定箇所のカーソルを認識してくれなくなったとき
一旦蓋を閉じてもう一度開けると治るかもしれません。
ここ半年間で使った4台のMBP全てで発生した現象なので、どこかでお困りの
誰かに宛てて、ここにメモっときます。
AngularJS: tabsetで[$compile:nonassign]エラーが出ちゃったよメモ
active要素に評価式を入れていたらこのエラー。
<tabset justified="true" ng-init="activeTab='first'"> <tab heading="ひとつめ" active="activeTab=='first'"></tab> <tab heading="ふたつめ" active="activeTab=='second'"></tab> <tab heading="みっつめ" active="activeTab=='third'"></tab> </tabset>
active要素はラジオボタンのng−model的な変数を設定すれば良いらしい。
<tabset justified="true" ng-init="activeTab['first']=true"> <tab heading="ひとつめ" active="activeTab['first']"></tab> <tab heading="ふたつめ" active="activeTab['second']"></tab> <tab heading="みっつめ" active="activeTab['third']"></tab> </tabset>
上の例だと、activeTab['first']がtrueのとき
activeTab['second']、activeTab['third']はfalseになる。
AngularJS: ng-repeatで[ngRepeat:dupes]が出ちゃったよメモ
オブジェクトのキーが重複していてリピートできないぜってことらしい
これは、ng-repeatの
<div ng-repeat="item in objects"> {{item.value}} </div>
の部分を
<div ng-repeat="item in objects track by $index"> {{item.value}} </div>
とすると解決する。かもしれない。
AngularJS: UI Routerを採用したらtemplateUrlが表示されなくなった
ロードはしているけど表示がない。
そんなときは、もしかしたらview読むとこが
<div> <ng-view></ng-view> </div>
こうなっているので、
<div> <div ui-view></div> </div>
このように変えてみてください。