2019/09/11

[SQL] ウィンドウ関数で累積和を計算する方法


| id | date | profit |
|--:|-----------:|-----:|
| 0 | 2019-03-01 | 1000 | 
| 1 | 2019-03-04 |  500 | 
| 2 | 2019-04-05 | -300 | 
| 3 | 2019-05-01 |  100 | 

上記 table1 から profit の累積和(cumlative_profit)を求める QUERY は以下私は MariaDB 10.3.10 で動作確認しましたが、「達人に学ぶSQL徹底指南書 第2版」によると、主要なDMBSで動作するとのこと。。

```sql
SELECT *,
       SUM(profit) OVER W AS cumulative_profit 
FROM   table1
WINDOW W AS (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
ORDER BY date;
```

これは、以下のように書いたのと同等。
```sql
SELECT *,
       SUM(profit) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_profit 
FROM   table1
ORDER BY date;
```

最近読み終わったのだけど、SQL に関しては以下の本が秀逸。
もちろん、ウィンドウ関数の使い方もとてもわかりやすく書いてある。
お勧め。

2019/06/24

io.grpc.ManagedChannelProvider$ProviderNotFoundException が発生した時の対処方法

[Google Photos API](https://developers.google.com/photos/) の Java クライアントライブラリを使おうとしたところ、以下のようなエラーが出てしまいました。

```
io.grpc.ManagedChannelProvider$ProviderNotFoundException: No functional channel service provider found. Try adding a dependency on the grpc-okhttp, grpc-netty, or grpc-netty-shaded artifact
```

> Try adding a dependency on the grpc-okhttp, grpc-netty, or grpc-netty-shaded artifact

とのことなので `ManagedChannelProvider` の実装が必要なことはわかりました。
が、「どうやって指定するのよ…」と悩むこと小一時間。

2019/06/08

Windows に python-lzo をインストール

@Windows 10 Pro 64bit

[LZO](http://www.oberhumer.com/opensource/lzo/) というアーカイブ系ライブラリを Python でラップしてくれるパッケージに
[python-lzo](https://pypi.org/project/python-lzo/) があります。

Linux では pip で一発インストール可能なのですが、Windows ではエラーが出てしまいインストールできません。

```shell
`gutter: false;
> pip install python-lzo
Collecting python-lzo
  Using cached https://files.pythonhosted.org/packages/af/60/41f17f56c920a956f1d4b9f04f9755c045b2b06b9dd933b33cdd37ab9fd7/python-lzo-1.12.tar.gz
    ERROR: Complete output from command python setup.py egg_info:
    ERROR: Traceback (most recent call last):
      File "", line 1, in 
      File "C:\Users\yusuk\AppData\Local\Temp\pip-install-jzhjob69\python-lzo\setup.py", line 46, in 
        raise Exception("please set LZO_DIR to where the lzo source lives")
    Exception: please set LZO_DIR to where the lzo source lives
```

公式の Issue によると、これは仕様で、自身でコンパイルしないといけないようです。

> 参考
>
> [unable to install python-lzo using "pip install python-lzo" on Windows · Issue #5 · jd-boyd/python-lzo · GitHub](https://github.com/jd-boyd/python-lzo/issues/5)

2019/05/16

VSCode で Ctrl が Ctrl+CapsLock になってしまう場合の対処方法

Ubuntu 18.04 LTS で [Visual Studio Code](https://code.visualstudio.com) を使っていたところ、Ctrl + S を押してもセーブが出来ませんでした。

ステータスバーを見てみると "(Ctrl+CapsLock) was pressed" の文字が。

2019/05/14

Ubuntu 18.04 でキーボードレイアウトが突然変わってしまった

先日のアップデート後だと思うのですが、キーボードレイアウトが英字キーボードになってしまいました。

Mozc の `Show Keyboard Layout` で確認してみると、確かに英字キーボードになっています。