【Java】Prefix lengthからNetwork maskに変換する方法

Javaプレフィックス表記からネットワークマスクに変換する方法です。

import java.net.InetAddress;
import java.net.UnknownHostException;

public class CodeSample {
    public static void main(String args[]){
        InetAddress inetAddr;

        for(int i = 1; i <= 32; i++){
            inetAddr = prefixLengthToInetAddress(i);
            System.out.println("prefix length : " + i + " network mask : " + inetAddr.getHostAddress());
        }
    }

    public static InetAddress prefixLengthToInetAddress(int prefixLength){
        if(prefixLength < 0 || prefixLength > 32){
            throw new IllegalArgumentException("Invalid prefix length (0 <= prefix <= 32)");
        }

        int addrInt = 0xFFFFFFFF << (32 - prefixLength);

        byte[] addressBytes = {
                (byte) (0xFF & (addrInt >> 24)),
                (byte) (0xFF & (addrInt >> 16)),
                (byte) (0xFF & (addrInt >> 8)),
                (byte) (0xFF & addrInt)
        };
        try{
            return InetAddress.getByAddress(addressBytes);
        } catch(UnknownHostException e){
            throw new AssertionError();
        }
    }
}
出力結果
prefix length : 1 network mask : 128.0.0.0
prefix length : 2 network mask : 192.0.0.0
prefix length : 3 network mask : 224.0.0.0
prefix length : 4 network mask : 240.0.0.0
prefix length : 5 network mask : 248.0.0.0
prefix length : 6 network mask : 252.0.0.0
prefix length : 7 network mask : 254.0.0.0
prefix length : 8 network mask : 255.0.0.0
prefix length : 9 network mask : 255.128.0.0
prefix length : 10 network mask : 255.192.0.0
prefix length : 11 network mask : 255.224.0.0
prefix length : 12 network mask : 255.240.0.0
prefix length : 13 network mask : 255.248.0.0
prefix length : 14 network mask : 255.252.0.0
prefix length : 15 network mask : 255.254.0.0
prefix length : 16 network mask : 255.255.0.0
prefix length : 17 network mask : 255.255.128.0
prefix length : 18 network mask : 255.255.192.0
prefix length : 19 network mask : 255.255.224.0
prefix length : 20 network mask : 255.255.240.0
prefix length : 21 network mask : 255.255.248.0
prefix length : 22 network mask : 255.255.252.0
prefix length : 23 network mask : 255.255.254.0
prefix length : 24 network mask : 255.255.255.0
prefix length : 25 network mask : 255.255.255.128
prefix length : 26 network mask : 255.255.255.192
prefix length : 27 network mask : 255.255.255.224
prefix length : 28 network mask : 255.255.255.240
prefix length : 29 network mask : 255.255.255.248
prefix length : 30 network mask : 255.255.255.252
prefix length : 31 network mask : 255.255.255.254
prefix length : 32 network mask : 255.255.255.255

あったら便利!キャンパーズコレクション 3段ラック

キャンプに行くとよくこのような3段、もしくは4段ラックを見かけます。

f:id:make-freedom:20190605001807j:plain

 

小物類、水タンクの置き場にいつもどこに置けばいいのか迷ってしまうので、

ずっと前からこのラックが気になっていました。

でも荷物が増えてしまうのであまり買う気にはなれませんでしたが、

やはり物の置き場に困ってしまったため、

ついにAmazonでポチッと!しました。

 

届いて見ると、

まぁ、値段相応でしょうか。

ちょっと手を入れたほうが良さそうなところがありました。

 
問題点
  • 色落ちする
  • 水しみる

 

これらを改善するために自分でニスを塗装することにしました。

手を掛けたほうが使い勝手がよくなるし愛着が湧きます。

まぁDIYが好きだからやるんですが。

 

最初の状態はこんな感じです。

水拭きすると雑巾に色が移ります。

でも色合いは悪くないです。

f:id:make-freedom:20190605002635j:plain


娘が手伝いたいと言うので、ニスの塗装を任せてみました。

使用しているニスはワシンの「水性ウレタンニス」になります。

このニスは乾くとニチャニチャせず、水も弾いてくれる優れものです。

f:id:make-freedom:20190605003008j:plain

 

ニスを塗ってから2時間ほどで乾くので、これで出来上がり!

いい艶も出ています。

f:id:make-freedom:20190605003500j:plain

 

3段ラックはいろんなところで売っていますが、

大体色落ちや水がしみる問題があるので、

一手間を加えてみてはいかがでしょうか。

使い勝手は改善されますし、質感もぐっと良くなります。

"火おこし器"兼"焚き火台"のヘキサUG-7に買い替え!

f:id:make-freedom:20190602212432j:plain

キャプテンスタッグの火おこし器を以前から愛用していましたが、

大きさがちょっと小さいのもありますが、

サビだらけになってしまったため、買い換えることにしました。

f:id:make-freedom:20190602213018j:plain

サビだらけになった「火おこし器 炭焼き名人」

↑このサビだらけの火おこし器の素材を調べてみたところ・・・

      f:id:make-freedom:20190602213833p:plain

すべて鉄やないかーい! そりゃ錆びるわ。
 

 

なので新しい火おこし器はオールステンレスがいいなー

なんて思いながらAmazonを散策してみましたが、

なかなかありません。

 

大体は本体だけがステンレスでそれ以外の部品は鉄。

まぁ。そこは妥協することにしました。

 

その中で一番多機能で使いやすそうな物を買ってみました。 

 

こんな用途で使える
  • 火おこし器
  • 焚き火台
  • コンロ(一人用)
いいところ
  • 多機能(多用途で使える)
  • 折りたたみができる
  • 本体がステンレス
  • 大きい(4人以上でBBQするなら大きいほうが良い)
 あと一歩なところ
  • オールステンレスではない(ゴトク・目皿・ハンドル)
  • 値段がちょっと高め(4320円で購入)

 

ソロキャンプならこの一台だけで調理から焚き火までできちゃいます。

もちろんファミリーキャンプに使う予定ですが、

機能が多いと何故か男心をくすぐられます。

f:id:make-freedom:20190602215054j:plain

 

前に使っていた火おこし器は目皿の部分が一番サビがひどかったのですが、

この火おこし器の目皿は前と同じ鉄でできているため、

おそらく何年か使ったらサビだらけになってしまうと思われます。

 

そこで、効果はどれくらいあるかは分かりませんが、

目皿に耐熱ペイントを施しました。

 

[塗装前]

f:id:make-freedom:20190602221308j:plain

 

[塗装後]

f:id:make-freedom:20190602221502j:plain

 

[コンロを使って焼入れ(塗料を固定させる)]

f:id:make-freedom:20190602221630j:plain

 

完成!

f:id:make-freedom:20190602221824j:plain

 

次回のキャンプが楽しみです。

現実世界でcore dumpするケースについて考える

core dumpは動物が生まれ持った能力の一つであります。


生きていれば誰しも何回・・・

いや何十回...(もっと?)はcore dumpしたことがあるかと思います。

 

例えば、

  • 飲みすぎた時
  • 食べすぎた時
  • 乗り物酔いした時
  • 悪阻の時
  • 3回まわってワンッ!をやりすぎた時
  • 便秘がひどすぎた時
  • 下痢を我慢しすぎた時
  • 真夏の掃除されていない仮設トイレで用を足している時
  • 満員電車で胃袋を強く圧迫された時
  • 腸炎などの病気に罹った時
  • 緊張しすぎた時や興奮しすぎた時
  • etc... etc... etc...

 

仮想世界ではcore dumpが出たら必ず誰かが

「マジかぁ。リリース直前なのにこんな重バグが...」と

心の声を漏らしながら解析を行い、原因の特定及び修正を行います。 

 

現実世界ではほとんどの場合、

core dumpが見つかると制服を着た方が木くずのようなもの

振りかけた上でせっせと掃き捨てるのが一般的かと思います。


場合によっては塩素使いが出てきて、

大量の水や塩素を巧みに扱いながら

証拠隠滅を謀るその道のプロが出てきて、

痕跡を上手に消し去ることもあるかと思います。

 

ときには電車の中でcore dumpをした時、

モーセ十戒という神秘的な現象を体験することができます。

もしかしたらそれ以後は神からのお告げが聞こえるようになるかもしれません。

 

現実世界ではcore dumpの近くにいる人が

連鎖的にcore dumpをするという奇妙な現象が稀に確認されることもあります。

 

core dumpの近くでcore dumpをすると、

そのdumpしたものに繋がりが生まれます

それはもしかしたら現実世界で具現化した

ブロックチェーンというものなのかもしれません。

 

仮想世界でも連鎖的にcore dumpすることはあるかもしれませんが、

ほとんどの場合、システムが不正終了し、ユーザのデータが吹っ飛び

システムの再起動が行われるか、hang-upするだけです。

 

まとめ?

core dumpは恥ずかしいことではありません!

とても立派な生理現象なのであります。

現実世界でもcore dumpしたら、仮想世界のように

詳細を分析(棒などでつつく)、原因を特定し、

エンバグしないように修正を行うように心掛けましょう。

 

 

よく使うgitコマンド

  • 変更した差分を確認する
git status

  • commit候補に追加する
git add <変更したファイル>

  • 変更したファイルをすべてcommit候補に追加する
git add --all

git commit

  • 最後にコミットした修正に上書き(追加)コミットする
git commit --amend

  • 最後にコミットした修正をコミット前の状態に戻す
git reset HEAD~

  • リモートリポジトリから変更差分を取得する
git pull

  • 変更したファイルを変更前の状態に戻す
git checkout -- <変更したファイル>

  • 変更差分を確認する
git diff

  • コミット候補に追加した変更差分を確認する
git diff --cached

  • コミットログ(リスト)を表示する
git log

  • 指定したコミットIDの変更差分を表示する
git show <コミットログに表示されているコミットID>

  • 1行ずつ誰が、いつ、どのコミットで変更を入れたのかを表示する
git blame <確認したいファイル>


git command manual page
https://git-scm.com/docs