Gitで各ブランチの一覧を最近commitした日時順にソートしたい。
にコマンドが書かれている。
for branch in `git branch -r | grep -v HEAD`;do echo -e `git show --format="%ci %cr" $branch | head -n 1` \\t$branch; done | sort -r
を実行すればよい。
Gitで各ブランチの一覧を最近commitした日時順にソートしたい。
にコマンドが書かれている。
for branch in `git branch -r | grep -v HEAD`;do echo -e `git show --format="%ci %cr" $branch | head -n 1` \\t$branch; done | sort -r
を実行すればよい。
Atcoderのabc204問題E(E - Rush Hour 2)では の最小値を得るためのを計算する必要があった。
後で調べたMaximaでの計算方法であるが、記録のため保存する。
How to find the maximum and minimum of a function using Maxima? - Stack Overflow
に参考して、Maximaには以下のように入力する。
f(t):=d/(t+1) + t;
(関数定義)
f_deriv: diff(f(t),t);
(関数の微分を求める)
solve(f_deriv=0,t);
(微分が0の解を求める)
結果としては
[t = (- sqrt(d)) - 1, t = sqrt(d) - 1]
と出力されるが、本来関数の最大値と最小値のときの両方のtが入っている。今回はE問題の解説でが回答となることがわかる(E問題ではまた整数に丸める必要がある)。
念のため、グラフでの確認も可能ですが、Maximaで関数にのような変数が定義されている場合のグラフの出力する方法がわからず、とりあえずd=10のときのグラフを出力してみた。
f(x):=10/(t+1)+t;
plot2d(f(x), [t,0,10])$
出力されたのは以下のようなグラフ
のところに最小値になっていることが確認できる。
VimでDBに入れるためのマスターデータのCSVファイルを作成して、最初の項目が数字のIDであるが、実は現在の行番号と同じ数字である。
現在の行番号を1行ずつ入れるのは面倒なので、一括置き換えでできないかを調べてみた。
Replace a pattern with current line number - Vi and Vim Stack Exchange
に答えが書かれていた。xを現在の行番号に置き換える場合、
:%s/x/\=printf("%d", line('.'))
を実行すればよい。
それを自分の場合では,
:%s/^/\=printf("%d,", line('.'))
(行の先頭に「行番号,」を挿入)を実行すればよい。
とある長さの数列に対し、を満たす全ての組について XOR をもとめ、その合計を計算する問題の解き方。
詳細については
Editorial - Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)
の後半に説明されている。
まず、ある桁数に対し、すべてのについて、の桁目が1か0かを判定して、それぞれのの数を数える。例えば、桁目が1の数がで、桁目が0の数がの場合、桁目関して、合計の結果はとなる。
上記の計算を1桁目からの最大桁まで計算し、合計すれば、結果が求められる。
JavaMailを使って、GMailから添付ファイルをしていたが、5Mぐらいの添付ファイルをダウンロードするのに、150秒ほどかかる。いろいろ調べましたが、
Slow rate (Rx) retrieving an attachment from Gmail with javaMail on Android - Stack Overflow
Java Mail Slow downloading attachment Office 365 - Stack Overflow
には解決法が書かれていた。ソースコードに
props.setProperty("mail.imaps.partialfetch", "false");
を追加するだけである。ここのpropsはSystem.getProperties()の変数である。
試しに追加してみたら、魔法のように150秒にかかった添付ファイルのダウンロードが3秒ほどでできた。
Db2でアクセスプランを確認する必要があったため、実施した手順を記録する。
まず、1回のみ実施する前処理として、以下のコマンドを実行する。
$ db2 connect to DB名
$ db2 -tvf ~/sqllib//misc/EXPLAIN.DDL
$ db2 connect reset
そして、以下のURLの資料に参考して、以下の手順でアクセスプランの取得が可能である。
$ db2 connect to DB名
$ db2 "set current explain mode explain"
あるいは
$ db2 "set current explain mode no"
$ db2exfmt -1 -d DB名 -o 出力ファイル名
試しにSAMPLE DBで実行してみた。
$ db2 connect to SAMPLE
$ db2 "set current explain mode explain"
$ db2 "SELECT t1.* FROM employee as t1 INNER JOIN department as t2 ON t1.workdept=t2.deptno WHERE t2.deptname like 'BRANCH%'"
$ db2 "set current explain mode no"
$ db2exfmt -1 -d SAMPLE -o output.txt
作成されたoutput.txtから以下のアクセスプランが見られる。
-----------
Total Cost: 143.581
Query Degree: 1
Rows
RETURN
( 1)
Cost
I/O
|
100
^HSJOIN
( 2)
143.581
21
/-----+------\
1000 100
TBSCAN TBSCAN
( 3) ( 4)
81.9241 61.6304
12 9
| |
1000 1000
TABLE: USER TABLE: USER
EMPLOYEE DEPARTMENT
Q2 Q1
TBSCANの文字ではテーブルスキャンが発生している意味である。
ちなみに、IDを使用するように以下のSQLを実行したアクセスプランも確認してみた。
SQL:
SELECT * FROM employee WHERE empno='000010'
アクセスプラン:
Access Plan:
-----------
Total Cost: 13.6198
Query Degree: 1
Rows
RETURN
( 1)
Cost
I/O
|
1
FETCH
( 2)
13.6198
2
/---+----\
1 1000
IXSCAN TABLE: USER
( 3) EMPLOYEE
6.81278 Q1
1 |
1000
INDEX: USER
PK_EMPLOYEE
Q1
INDEXを使用していることが確認できる。
読めそうで読めない一放送された超難読名字特集:
やはり書き留めないと忘れてしまう。