IT練習ノート

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

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 実例紹介 すぐに使える実用スクリプト メール送信やイベント監視

hs-bootファイルとは何か

Haskellのライブラリのコードを見ていると、まれに、hs-bootという拡張子がついたファイルを見かけることがあります。なんだろうと思っていたのですが、モジュールインポートで相互参照を解決するために使用するようです。

10.8. Filenames and separate compilation — Glasgow Haskell Compiler 8.6.5 User's Guide

Haskell - resolving cyclical module dependency - Stack Overflow

モジュールの相互参照 - Qiita

比(ratio)、割合(proportion)、率(rate)をきちんと区別する

英語 定義 補足
ratio 分子分母が別々なもので、互いに相手を含まない 一般には次元がある BMI 性比
割合 proportion 分子が分母に含まれる分数 次元はない 値はゼロから1の間 有病率 打率 死亡率 「率」と言うが、意味は「割合」であることに注意
rate 現象が起きる速さを測る 平均的な率とは、時間当たりで平均すること 離婚率 反応速度 気温の逓減率 率の意味で正しく死亡率を使うこともある。

「医療統計を学ぶ」の1章に説明があります。

宇宙怪人しまりす 医療統計を学ぶ 検定の巻 (岩波科学ライブラリー)

宇宙怪人しまりす 医療統計を学ぶ 検定の巻 (岩波科学ライブラリー)

比(ratio)、割合(proportion)、率(rate)をきちんと区別する

英語 定義 補足
ratio 分子分母が別々なもので、互いに相手を含まない 一般には次元がある BMI 性比
割合 proportion 分子が分母に含まれる分数 次元はない 値はゼロから1の間 有病率 打率 死亡率 「率」と言うが、意味は「割合」であることに注意
rate 現象が起きる速さを測る 平均的な率とは、時間当たりで平均すること 離婚率 反応速度 気温の逓減率 率の意味で正しく死亡率を使うこともある。

「医療統計を学ぶ」の1章に説明があります。

宇宙怪人しまりす 医療統計を学ぶ 検定の巻 (岩波科学ライブラリー)

宇宙怪人しまりす 医療統計を学ぶ 検定の巻 (岩波科学ライブラリー)