IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

IIJのeSIM対応データ通信サービスの開始

メディアでは既報であるが、7/18よりIIJがeSIMのサービスを始める。

www.appbank.net

www.itmedia.co.jp

IIJでは、6/28に技術レポートを出していて、eSIMの(技術)解説があった。

https://www.iij.ad.jp/dev/report/iir/pdf/iir_vol43_focus2.pdf

2019年の夏には読者の皆様にご利用いただけるサービスを提供する予定です。

と述べており、予定通りのサービス開始となった。

Pythonのifは文と式の2つがある

気になったのでメモ。

世の中的には、1行で書くifと言うらしい。

f:id:naotoogawa:20190708203152p:plain
Googleのサジェスト

文のif

8. 複合文 (compound statement) — Python 3.7.4rc2 ドキュメント

式のif

6. 式 (expression) — Python 3.7.4rc2 ドキュメント

英語だとshort hand ifと言うらしい。

Python Conditions

余談

BingのサジェストではPythonの1行ifはでてこない。ただ、Python if inってなんだろう?

f:id:naotoogawa:20190708203622p:plain
Bingのサジェスト

VSCodeでNeoVimを使う

f:id:naotoogawa:20190609122612p:plain
キャプチャがある正規表現

このようなキャプチャがある置換ができませんでした。

サイトにissueがあって解決されていました。これを見ると、VSCodeVim正規表現JavaScriptエンジンを流用しているらしいです。そこで、NeoVim連携が追加されて、その連携をすると、正規表現キャプチャができるようです。

github.com

正規表現に限らず、NeoVimを入れておくことは損にならないと思うので、サイトから取得します。

github.com

VSCodeVSCodeVimの設定を追加します。

f:id:naotoogawa:20190609122706p:plain
VSCodeの設定

これでできるようになりました。

戻り値の型によって結果が変わる例

 > :{
*| foo :: MonadThrow m => Int -> m Int
*| foo x = (if x == 0 then throwM RatioZeroDenominator else return x)
*| :}
 > :t foo
foo :: MonadThrow m => Int -> m Int

IOの場合

 > foo 1 :: IO Int
1
 > foo 0 :: IO Int
*** Exception: Ratio has zero denominator

Eitherの場合

 > foo 1 :: Either SomeException Int
Right 1
 > foo 0 :: Either SomeException Int
Left Ratio has zero denominator

Maybeの場合

 > foo 1 :: Maybe Int
Just 1
 > foo 0 :: Maybe Int
Nothing

リストの場合

 > foo 1 :: [] Int
[1]
 > foo 0 :: [] Int
[]

例えば、例外の対処のコーディングで、MaybeとEitherの2つ実装をする必要はない。

Cockroach DBを使ってみる

www.cockroachlabs.com

f:id:naotoogawa:20190615161106p:plain
Windows版入手先画面

f:id:naotoogawa:20190615161206p:plain
バイナリ

サーバ起動

PS C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64> .\cockroach start --insecure --listen-addr=localhost
*
* WARNING: RUNNING IN INSECURE MODE!
*
* - Your cluster is open for any client that can access localhost.
* - Any user, even root, can log in without providing a password.
* - Any user, connecting as root, can read or write any data in your cluster.
* - There is no network encryption nor authentication, and thus no confidentiality.
*
* Check out how to secure your cluster: https://www.cockroachlabs.com/docs/v19.1/secure-a-cluster.html
*
CockroachDB node starting at 2019-06-15 07:06:10.8743553 +0000 UTC (took 1.3s)
build:               CCL v19.1.1 @ 2019/05/15 20:36:28 (go1.11.6)
webui:               http://localhost:8080
sql:                 postgresql://root@localhost:26257?sslmode=disable
client flags:        C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64\cockroach.exe <client cmd> --host=localhost:26257 --insecure
logs:                C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64\cockroach-data\logs
temp dir:            C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64\cockroach-data\cockroach-temp032909295
external I/O path:   C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64\cockroach-data\extern
store[0]:            path=C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64\cockroach-data
status:              initialized new cluster
clusterID:           2c4a907d-0445-443f-be44-f648896f61ed
nodeID:              1

クライアントからアクセス

PS C:\Program Files\cockroach\cockroach-v19.1.1.windows-6.2-amd64> .\cockroach.exe sql --insecure --host=localhost:26257
# Welcome to the cockroach SQL interface.
# All statements must be terminated by a semicolon.
# To exit: CTRL + D.
#
# Server version: CockroachDB CCL v19.1.1 (x86_64-w64-mingw32, built 2019/05/15 20:36:28, go1.11.6) (same version as client)
# Cluster ID: 2c4a907d-0445-443f-be44-f648896f61ed
#
# Enter \? for a brief introduction.
#
root@localhost:26257/defaultdb> create database bank
                             -> ;
CREATE DATABASE

Time: 9.4438ms

root@localhost:26257/defaultdb> create table bank.accounts (id INT PRIMARY KEY, balance Decimal);
CREATE TABLE

Time: 16.0357ms

root@localhost:26257/defaultdb> insert inot bank.accounts values (1, 1000.50);
invalid syntax: statement ignored: syntax error at or near "inot"
DETAIL: source SQL:
insert inot bank.accounts values (1, 1000.50)
       ^
HINT: try \h INSERT
root@localhost:26257/defaultdb> insert into bank.accounts values (1, 1000.50);
INSERT 1

Time: 16.0394ms

root@localhost:26257/defaultdb> select * from bank.accounts;
  id | balance
+----+---------+
   1 | 1000.50
(1 row)

Time: 2.4212ms

root@localhost:26257/defaultdb>

f:id:naotoogawa:20190615161759p:plain
クライアントからサーバへのパケット

f:id:naotoogawa:20190615161848p:plain
サーバからクライアントのパケット

PowerShellの入門書?

監視の本なのですが、PowerShellの入門書としてコンパクトにまとまっている気がしました。

PoserShell部分の目次

第3部 スクリプトで監視しよう
第1章 こんなに便利だPowerShell
Part1 便利ポイント Windowsの操作ならほぼ何でも自動化できる
Part2 スクリプトの使い方 まずはコンソールで始めよう デスクトップからも呼び出せる
Part3 実例紹介 すぐに使える実用スクリプト メール送信やイベント監視