雑記

消費税の任意中間申告の誤指摘

本日,税務署から電話がありました。税務調査かと思い,一瞬緊張しましたが,消費税の任意の中間申告が期限から遅れて申告されていたので,納税された金額を還付すると言われました。とりあえず,税務署の職員さんがそう言うのだから納期に遅れてしまったのだろうと思い「わかりました」と応じて一旦電話を切りました。その後,国税庁のWebページで確認すると,任意の中間申告は対象期間が1月から6月で,申告は対象期間の末日の翌日から起算して2月以内ということでした。つまり,6月末の翌日である7月1日から起算して2月後の8月末まででした。税務署に電話をして確認すると,その通りということで,無事に受理して頂きました。

https://www.nta.go.jp/taxes/shiraberu/taxanswer/shohi/6611.htm

これで還付されてしまったら,国税不服審判所に不服申立をするところでした。

情報セキュリティ

個人/SOHOでも導入可能なLinux用セキュリティソフト

サーバーに限れば広く使われているLinux OSだが,個人やSOHOなどで導入可能なセキュリティソフトの選択肢はあまりない。大手のセキュリティソフトベンダもLinux向けの製品を出してはいるものの,大規模ユーザ向けのものが多く,小規模事業者や個人には手がだせない。

以下の製品は無料または,比較的安価であり,1台から導入可能で,個人でも導入できる。

ESET File Security for Linux

https://www.eset.com/jp/business/server-antivirus/file-security-linux/

ESETはスロバキアの企業が開発したセキュリティソフトである。キヤノンITソリューションズが代理店となっている。同社の価格表によると,新規ライセンスが年間20,000円,更新ライセンスが年間10,000円となっている。

価格表 https://eset-info.canon-its.jp/business/file_security/price.html

Dr.Web

Dr.Webはロシアの企業が開発したセキュリティソフトで,日本語でのサポート対応を行っている。年間3,410円で利用できる。

https://products.drweb.co.jp/home/linux/

Comodo Antivirus for Linux

Comodo Antivurus for LinuxはComodo社が開発したセキュリティソフトで,無料で使用できる。英語の情報に頼ることにはなるが,無料とは思えないクオリティである。

https://www.comodo.com/home/internet-security/antivirus-for-linux.php

ClamAV

ClamAVは無料で利用できる。メールサーバ用に開発されたもののようである。誤検知が多かった印象を持っている。公式の日本語情報はないため,英語のドキュメントを読む必要がある。

http://www.clamav.net/

情報セキュリティ

Linux版セキュリティ対策ソフトDr.Web導入

Linux版のセキュリティ対策ソフトDr.Webを導入してみました。ロシアの会社が開発したものですが,日本にも拠点があり,日本語でサポートを受けられます。価格も年間3410円と安価です。

https://www.drweb.co.jp/

[root]# drweb-ctl appinfo
ConfigD; 1349; RUNNING 1; Installed (ConfigD ScanEngine FileCheck Update ESAgent NetCheck StatD GateD MailD Antispam UrlCheck CloudD MeshD LinuxGUI LinuxSpider LinuxFirewall), Should run (Update), UUID: 52eef68d-78ad-4c72-8d57-d2cea838f819, created: 2021-Sep-04 21:31:31
Update; 2195; RUNNING 1


[root]# drweb-ctl log
2021-Sep-06 12:18:37 ConfigD [1349] Notice: License number 147896597, expires 2022-Sep-08 12:11:08
2021-Sep-06 12:18:37 Update [2195] Notice: Update 11.1.6.2012181656: Ready for service
2021-Sep-06 12:18:38 Update [2195] Notice: Downloaded vrpatch-56.kwo (38842 bytes)
2021-Sep-06 12:18:53 Update [2195] Notice: Downloaded vrpatch-57.kwo (35479 bytes)
2021-Sep-06 12:18:53 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/antispam/vrpatch-56.kwo”
2021-Sep-06 12:18:53 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/antispam/vrpatch-57.kwo”
2021-Sep-06 12:18:53 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/drl/antispam/version2.lst”
2021-Sep-06 12:24:28 Update [2195] Notice: Downloaded vrpatch-58.kwo (35915 bytes)
2021-Sep-06 12:24:28 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/antispam/vrpatch-58.kwo”
2021-Sep-06 12:24:28 ConfigD [1349] Notice: Update: placed “/var/opt/drweb.com/drl/antispam/version2.lst”

情報セキュリティ

セキュリティソフトの誤検知

セキュリティソフトのMcAfee製マカフィーリブセーフが,私が作成した暗号化アプリをマルウェアとしてブロックしてくれました。実行ファイルが隔離されてしまいました。中身もすべてわかっていますので,ビルドし直した上で再度インストールして,ホワイトリストに登録しました。幸い,一般に提供しているものではなかったので被害者は自分だけでした。

新型コロナウイルス関連

IOCに質問

日本政府,東京都,JOCがはっきりした説明をしてくれないので,IOC(ジュネーブ)に質問メールを送りました。

Dear. International Olympic Committee.

  Hi, I am KUBO, an inhabitant in Tokyo. I have a question about the Olympic Game 2020 Tokyo. But all of Japanese Government, Tokyo Metropolitan government and Japanese Olympic Committee make ambiguous explanations. Would you give me a definite answer?

 Will the Olympic Game 2020 Tokyo, which was postponed a year, be held?  Dr. OMI, Shigeru, who is former regional director of WHO western Pacific region, says "Under infection circumstance (of COVID-19) nowadays, we usually do not  hold". Because the expert on infection says like this, I will evacuate from Tokyo if the Olympic Game be held. I must make  reservations for accommodations before long.

<参考訳>
親愛なる国際オリンピック委員会様

私は東京の住民で久保と申します。東京オリンピック2020について質問があります。しかし,日本政府,東京都,日本オリンピック委員会のすべてが曖昧な説明をしています。はっきりした回答を頂けますでしょうか?

 1年延期されていた東京オリンピック2020は開催されるのでしょうか? 尾身茂先生(元WHO西太平洋地域事務局長)は,「今の(COVID-19)の感染状況では,普通はやらない」と述べました。感染症の専門家がこのようにおっしゃるので,もしオリンピックが開かれるのであれば私は東京から避難します。まもなく宿泊の手配をしなければなりません。

JDK

Java 16新機能(4)

Stream APIにtoList()メソッドが実装され,StreamからListへの変換が容易に行えるようになりました。これまではStreamのcollectメソッドにCollectors.toList()を渡していました。今後はStreamオブジェクトに対して直接toList()メソッドを実行してList型に格納してくれるようになります。

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class StreamToList
{
	public static void main(String[] args)
	{
		IntStream stream = IntStream.range(1, 100);
		//List<Integer> list = stream.boxed().collect(Collectors.toList());
		List<Integer> list = stream.boxed().toList();
		for(int item : list)
		{
			System.out.printf("%d\t", item);
		}
		System.out.println("");
	}
}

警告:実験的なモジュールを使用しています: jdk.incubator.foreign
警告1個
WARNING: Using incubator modules: jdk.incubator.foreign
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

JDK

Java 16新機能(3)

Java 16からは値ベースのAPIクラス,つまり,プリミティブ型のラッパークラスであるInteger,Long, Float, Double, Booleanなどが非推奨となり,コンパイル時に警告が出されるようになりました。次のような非常に簡単なプログラムをコンパイルしてみると,この振る舞いを確認できます。

public class ValueBased
{
	public static void main(String[] args)
	{
		Integer i = new Integer(1);
		Double d = new Double("123.54");
	}
}

警告:実験的なモジュールを使用しています: jdk.incubator.foreign
ValueBased.java:5: 警告:[removal] IntegerのInteger(int)は推奨されておらず、削除用にマークされています
Integer i = new Integer(1);
^
ValueBased.java:6: 警告:[removal] DoubleのDouble(String)は推奨されておらず、削除用にマークされています
Double d = new Double(“123.54”);
^
警告3個

JDK

Java 16新機能(2)

Java 16では,JDK内部の隠蔽が強化されています。例えば,enumクラスのprotectedメソッドclone()をリフレクションを使って呼び出してみましょう。このメソッドの実装は単にCloneNotSupportedExceptionをスローするだけのものになっています。次のようなプログラムを書いて,JDK11とJDK16での挙動の違いを比較してみます。

JDK11で実行した場合は,CloneNotSupportedExceptionがスローされており,protectedメソッドであるclone()がリフレクションによって実行できていることがわかります。しかし,JDK 16で実行した場合はsetAccessible()メソッドを呼び出した段階で,InaccessibleObjectExceptionがスローされています。そのため,invokeメソッドによってclone()メソッドを呼び出すことができていないことがわかります。

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class StronglyEncapsulate
{
	enum EnumExample { A, B, C; }
	public static void main(final String[] args) throws Throwable
	{
		try
		{
			Method method = Enum.class.getDeclaredMethod("clone");
			method.setAccessible(true);
			String result = (String)method.invoke(EnumExample.A);
			System.out.println(result);
		}
		catch(InvocationTargetException e)
		{
			throw e.getCause();
		}
	}
}

JDK 11での実行結果

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by StronglyEncapsulate to method java.lang.Enum.clone()
WARNING: Please consider reporting this to the maintainers of StronglyEncapsulate
WARNING: Use –illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread “main” java.lang.CloneNotSupportedException
at java.base/java.lang.Enum.clone(Enum.java:165)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at StronglyEncapsulate.main(StronglyEncapsulate.java:12)

JDK 16での実行結果

警告:実験的なモジュールを使用しています: jdk.incubator.foreign
警告1個
WARNING: Using incubator modules: jdk.incubator.foreign
Exception in thread “main” java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Object java.lang.Enum.clone() throws java.lang.CloneNotSupportedException accessible: module java.base does not “opens java.lang” to unnamed module @13221655
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
at StronglyEncapsulate.main(StronglyEncapsulate.java:11)