Hatena::ブログ(Diary)

..たれろぐ.. このページをアンテナに追加 RSSフィード

2016-08-20

Gradle で依存設定しているローカルjarファイルにはソースjarなどを紐付けできない?

Gradle、ローカルに置いた jar を依存設定するのはいいのだけれども、その jar のソースjarJavadoc jarを紐付けできないのでちょっと不便。

Gradle というか Eclipse プラグインの Buildship の問題と見るべきかもだけれども…。

Can the Gradle Eclipse Plugin (buildship) attach sources to local jar dependencies using a sources folder (not a sources jar)?


ビルドパスの設定から、自前で同じローカルjarファイルを追加して、それにソースやJavadocを紐づければ、やりたいことはできるのだけれども、やや手間なのと、 Gradle の依存関係解決から外れるのでライブラリを入れ替えた場合などにトラブルになりそう。

2016-08-19

シーケンス番号の連続性チェックのやりかた

UDP パケットとかドロップが起き得るデータにシーケンス番号を振っておいて、受け側でドロップがないか検査したりすることはよくあると思いますが、そのよくあるはずの検査アルゴリズム知識がなかったので、頭をひねった結果をメモ。

int[] seq = new int[]{
        (int) 0xfffffff8L, (int) 0xfffffff9L, (int) 0xfffffffaL, (int) 0xfffffffbL,
        (int) 0xfffffffcL, (int) 0xfffffffdL, (int) 0xfffffffeL, (int) 0xffffffffL,
        0, 3, 4, 6, 7, 8, 9, 10, 13, 19, 20, 21, 22, 24, 27, 42, 43, 44, 45, 46, 47};

for (int i = 0; i < seq.length; i++) {
    if (i == 0) {
        System.out.printf("%2d %2d %08X%n", i, seq[i], seq[i]);
    } else {
        int diff = seq[i] - seq[i-1];
        if (diff == 1) {
            System.out.printf("%2d %2d %08X 連続%n", i, seq[i], seq[i]);
        } else {
            System.out.printf("%2d %2d %08X 脱落 %d 個%n", i, seq[i], seq[i], diff - 1);
        }
    }
}

シーケンス番号と前のシーケンス番号との差分をみてやれば、符号の有無や、ラップアラウンドに関係なく検知できるはず。
シーケンス番号半周分(Short.MAX_VALUE とか Integer.MAX_VALUE とか)落ちるとかそんなのは無しで。
diff が負の場合は順序の入れ替わりなのでソートして再検査するか破棄するか。

2016-08-08

Win32 Disk Imager Error 32

Win32 Disk Imager を使っていて、「Error 32: プロセスはファイルにアクセスできません。別のプロセスが使用中です。」が出たらパスが悪いのかもしれないので、イメージファイルをルートに置いてやり直してみよう。
f:id:naga_sawa:20160808215350p:image