2018/05/23

Python2系とPython3系では binascii.crc32 の計算結果が異なるので注意

### python2 では signed、python3 では unsigned として扱われる
具体的な例としては以下。

```python
`title: "python2";
>>> import binascii
>>> binascii.crc32(b"Hello")
-137262718
```

```python
`title: "python3";
>>> import binascii
>>> binascii.crc32(b"Hello")
4157704578
```

数字は違うのですが、`0xF7D18982` を 32bit の signed として扱っているか、unsigned として扱っているかの違いです。

そして、これは仕様のようです。

> 参考
>
> [Issue 4903: binascii.crc32() - document signed vs unsigned results - Python tracker](https://bugs.python.org/issue4903)

2018/05/12

Headless server につないだ Vino のキーボードを日本語レイアウトにする

[モニタをつないでいない Ubuntu の Vino に接続する](https://kokufu.blogspot.com/2018/02/ubuntu-vino.html) で Vino に繋がるようになったのは良いものの、キーボードレイアウトがおかしいようです日本語でもなければ、普通の英字キーボードでもない。
よく考えれば何も設定していないのであたりまえですね。

2018/05/11

Ubuntu 16.04 LTS から 18.04 LTS へのアップデートは7月後半まで出来ない

[Ubuntu 18.04 LTS](http://releases.ubuntu.com/18.04/) が出ましたね。

メインマシン(16.04 LTS) にアップデート通知がこないなーと思いつつ、
ちょうど仕事が忙しいタイミングと重なって放置していましたこのタイミングでアップデートするわけにもいかず、ちょうど良かったとも言える。

しかし、さすがに2週間経ってもこないのはおかしくない?と思って調べてみたら、
16.04 からのアップデートは 18.04.1 が出るまで無効化されているとのこと。

[BionicBeaver/ReleaseNotes - Ubuntu Wiki](https://wiki.ubuntu.com/BionicBeaver/ReleaseNotes#Upgrading_from_Ubuntu_16.04_LTS)

> Upgrades from 16.04 LTS will not be enabled until a few days after 18.04.1's release expected in late July.

18.04.1 の[リリーススケジュール](https://wiki.ubuntu.com/BionicBeaver/ReleaseSchedule)は7月後半一応、7月26日の予定。
ちょっと先ですね。
悩ましい。
2018/04/27

heic ファイルを扱える Imagemgick をインストールする

@Ubuntu 16.04 LTS18.04 LTS がまさに出ようというその時に…

[ImageMagick](http://www.imagemagick.org/script/index.php) が heic フォーマットHEIF フォーマットと言った方が良いのか?しかし、HEIF はコンテナフォーマットのことなので適切とは言えないか…に対応したようなので、ソースコードからコンパイルしてインストールしてみました。

以下によると、6.9.9 もしくは 7.0.7 以降が対象とのこと。

> 参考
>
> [ImageMagick-6.9.9-34差分 - yoyaのメモ](http://d.hatena.ne.jp/yoya/20180123/im)

2018/04/26

doctest を unittest と統合して実行する (Python)

### doctest とは
ここに検索で来られた方には不要かもしれませんが、説明の都合上、簡単に書いておきます。

doctest は、以下のような docstring 内の対話実行例が正しく実行できるか確認するモジュールです。
docstring 内だけでなく、テキストファイルの実行例を確認する事も可能です。

```python
`title: "core.py";
# -*- coding: utf-8 -*-


def times(a, b):
    """
    2つの入力を掛け算して出力

    >>> times(4, 9)
    35
    """

    return a * b
```