OpenMythosのサンプルプログラムを動かしました

1.概要 前回、OpenMythosの環境構築まで実現したので、GitHubにあるサンプルプログラム(Usage)を動かしてみました。一部エラーが発生しましたが、結果出力部分なので修正をしました。その内容を記述します。 2.詳細 Usageに記載されているPythonプログラムをopenmythos_usage.pyとして作成します。 $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py 下記エラーとなります [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) Traceback (most recent call last):   File "/home/nakasima/openmythos/openmythos_usage.py", line 48, in <module>     rho = torch.linalg.eigvals(A).abs().max().item()           ^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: linalg.eig: The input tensor A must have at least 2 dimensions. コードの下記部分を修正します #rho = torch.linalg.eigvals(A).abs().max().item() rho = A.abs().max().item() $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) [MLA] Spectral radius ρ(A) = 0.3679 (mus...

一般的なIPv4アドレスと数値IPv4アドレスの相互変換(shell版)

 1.概要

セキュリティが話題となる中で、フィルタリングされたIPアドレスを調べたいと思うことがあります。whoisやcmanを利用することで調べることができるIPアドレスがありますが、調査が難しい場合もあります。国単位に配布されたIPアドレスは公開されているので、どこの国のIPアドレスであるかを調べることはできます。

2.詳細

IPアドレスの配布はセグメント単位です。IPアドレスがIPアドレスセグメントに含まれているかを調べる必要がありますが、IPv4のIPアドレスはドットで分割されたアドレスです。例えば、192.168.10.1などです。しかし、この表記の場合、あるIPアドレスがIPアドレスの範囲(192.168.9.0 - 192.168.10.255)に含まれていることを調べるには不便です。そこで、IPアドレスを10進数に変換してから調べます。

192.168.9.0     =>  3232237824
192.168.10.1    =>  3232238081
192.168.10.255  =>  3232238335

上記結果から数値化することで、大小比較が容易できます。そこで、IPアドレスを10進数に変換する処理をshellで作成しました。今回はその内容を記述します。

(1) 作成したshell(bash)

(a) ipから10進数(ip2dec.sh)

#!/bin/bash

ip2dec(){
echo $(($1 * 16777216 + $2 * 65536 + $3 * 256 + $4))
}

IP1=$(echo $1 | tr "." " ")
ip2dec $IP1

(b) 10進数からip(dec2ip.sh)

#!/bin/bash

dec2ip(){
a=$(($1 / 16777216))
x=$(($a * 16777216))
b=$((($1 - $x) / 65536 ))
y=$(($b * 65536))
c=$((($1 - $x - $y) / 256))
z=$(($c * 256))
d=$(($1 - $x - $y - $z))
echo "$a.$b.$c.$d"
}

dec2ip $1


(2) 利用方法

上記shellをip2dec.shとdec2ip.shで作成したとします。

sh ip2dec.sh 192.168.10.1
3232238081

sh dec2ip.sh 3232238081
192.168.10.1

となります。

(3) 評価

参考資料では、a * 256 ** 3 + b * 256 ** 2 + c * 256 + d
の計算式を利用していますが、私の環境ではエラーとなりました。
そこで、下記計算をした上でshellを作成しました。

256 ** 3 = 16777216
256 ** 2 = 65536

これでエラーはなくなりました。

参考資料    
[外部サイト参照]
IP Address Converter
Bash で文字列を分割

コメント

このブログの人気の投稿

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

LinuxMint-22.3にWine 11.6をサクッと入れてみました

LinuxMint 21.3にWinBoat導入を試してみました