20191115のdockerに関する記事は12件です。

docker-composeでpostgresの設定を変更する方法

結論

docker-entrypoint-initdb.dディレクトリに*.sql, *.sql.gz, or *.shファイルを置くと、databaseを作成時に実行してくれます

やりたいこと

開発時docker postgresとAWS RDSの設定が異なるので一致させたい
as is

 SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
        name     |  setting   |  context
    -------------+------------+-----------
     lc_collate  | en_US.utf8 | internal
     lc_ctype    | en_US.utf8 | internal
     lc_messages | en_US.utf8 | superuser
     lc_monetary | en_US.utf8 | user
     lc_numeric  | en_US.utf8 | user
     lc_time     | en_US.utf8 | user
(6 rows)

to be

SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
    name     |  setting   |  context
-------------+------------+-----------
 lc_collate  | en_US.utf8 | internal
 lc_ctype    | en_US.utf8 | internal
 lc_messages |            | superuser
 lc_monetary | C          | user
 lc_numeric  | C          | user
 lc_time     | C          | user
(6 rows)

スクリプトとdocker-compose.ymlの修正

今回はinit_dbディレクトリ以下にinit_db.shファイルを作成しました。
やっていることはコンテナ内の/var/lib/postgresql/data/postgresql.confファイルの中身をsedコマンドで書き換えています。
ディレクトリ名はdocker-compose.ymlのvolumesと一致していればなんでもよいです。

init_db/init_db.sh
#!/bin/bash

# 開発環境用のDocker postgresqlの起動設定を変更する
# 本番DBにあわせた設定にする

set -e

sed -i -e"s/^lc_messages = 'en_US.utf8'.*$//" /var/lib/postgresql/data/postgresql.conf
sed -i -e"s/^lc_monetary = 'en_US.utf8'.*$/lc_monetary = 'C'/" /var/lib/postgresql/data/postgresql.conf
sed -i -e"s/^lc_numeric = 'en_US.utf8'.*$/lc_numeric = 'C'/" /var/lib/postgresql/data/postgresql.conf
sed -i -e"s/^lc_time = 'en_US.utf8'.*$/lc_time = 'C'/" /var/lib/postgresql/data/postgresql.conf

volumesでホストのinit_dbディレクトリをコンテナのdocker-entrypoint-initdb.dディレクトリにマウントします。
これでpostgresイニシアライズ時に↑で作成したスクリプトが実行されます。

docker-compose.yml
  postgres:
    image: postgres:9.5.15
    restart: always
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
      - ./init_db:/docker-entrypoint-initdb.d

データベースを作り直す

どうやら作成し直さないと設定が変更にならない項目もあるようなので、データベースを作成しなおします

sudo rm -rf tmp/db

or

# railsなら
docker-compose run --rm web bin/rails db:drop

それでもうまくいかない場合はいったんimageなども削除したほうがよいかもしれません。
※以下はdockerのimagesを全削除するコマンドです。

docker rmi $(docker images -q) -f

before

 SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
        name     |  setting   |  context
    -------------+------------+-----------
     lc_collate  | en_US.utf8 | internal
     lc_ctype    | en_US.utf8 | internal
     lc_messages | en_US.utf8 | superuser
     lc_monetary | en_US.utf8 | user
     lc_numeric  | en_US.utf8 | user
     lc_time     | en_US.utf8 | user
(6 rows)

after

SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
    name     |  setting   |  context
-------------+------------+-----------
 lc_collate  | en_US.utf8 | internal
 lc_ctype    | en_US.utf8 | internal
 lc_messages |            | superuser
 lc_monetary | C          | user
 lc_numeric  | C          | user
 lc_time     | C          | user
(6 rows)

成功です!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Amazon Linux2 にdockerをインストールしようとしたらはまった話

Amazon Linuxはちょっと違うので備忘録。
2019/11/15日時点での対応

Amazon Linux2にDockerのインストールを試みる

ちょっと簡単に開発環境を作りたかったので、EC2上にDockerをインストールしようとしました。
DockerはいつもCentOS方式でインストールしてましたんで、ここを参照しながらインストール。

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ sudo yum-config-manager \
 --add-repo \
 https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker

すると、依存性の関係でエラーが発生

$ sudo yum install docker-ce docker-ce-cli containerd.io
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
docker-ce-stable                                                                                                                | 3.5 kB  00:00:00     
(1/2): docker-ce-stable/x86_64/updateinfo                                                                                       |   55 B  00:00:00     
(2/2): docker-ce-stable/x86_64/primary_db                                                                                       |  37 kB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
〜 略 〜
エラー: パッケージ: containerd.io-1.2.10-3.2.el7.x86_64 (docker-ce-stable)
             要求: container-selinux >= 2:2.74
エラー: パッケージ: 3:docker-ce-19.03.5-3.el7.x86_64 (docker-ce-stable)
             要求: container-selinux >= 2:2.74
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

oh。マジか。どうやらcontainer-selinuxのバージョンが合わないよ、とのこと。

助けてGoogle先生

ということで色々漁ってみた結果、CentOSのリポジトリから対象のバージョンをダウンロードするも、今度selinux-policyの依存性でエラーが。

$ sudo yum install ftp://bo.mirror.garr.it/1/slc/centos/7.1.1503/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm
〜 略 〜
エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch)
             要求: selinux-policy-base >= 3.13.1-216.el7
            インストール: selinux-policy-targeted-3.13.1-192.amzn2.6.noarch (installed)
                selinux-policy-base = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-minimum-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-minimum-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.9
            利用可能: selinux-policy-minimum-3.13.1-192.amzn2.6.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-mls-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-mls-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.9
            利用可能: selinux-policy-mls-3.13.1-192.amzn2.6.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-base = 3.13.1-166.amzn2.9
エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch)
             要求: selinux-policy-targeted >= 3.13.1-216.el7
            インストール: selinux-policy-targeted-3.13.1-192.amzn2.6.noarch (installed)
                selinux-policy-targeted = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy-targeted = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-targeted-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy-targeted = 3.13.1-166.amzn2.9
エラー: パッケージ: 2:container-selinux-2.74-1.el7.noarch (/container-selinux-2.74-1.el7.noarch)
             要求: selinux-policy >= 3.13.1-216.el7
            インストール: selinux-policy-3.13.1-192.amzn2.6.noarch (installed)
                selinux-policy = 3.13.1-192.amzn2.6
            利用可能: selinux-policy-3.13.1-166.amzn2.5.noarch (amzn2-core)
                selinux-policy = 3.13.1-166.amzn2.5
            利用可能: selinux-policy-3.13.1-166.amzn2.9.noarch (amzn2-core)
                selinux-policy = 3.13.1-166.amzn2.9
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest

めんどくせえ・・・orz

回り回って公式にたどり着いた

んで、どうしたもんかなと。
依存性の解決をいちいちやりたくないなー・・・、かといってECS使う程ガチな環境じゃないんだよなー・・・とか思ってECSのページを見ると、Amazon LinuxへのDockerインストールマニュアルが偶然見つかりました。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/docker-basics.html

$ sudo yum update -y

パッケージをアップデートして・・・

$ sudo amazon-linux-extras install docker

Extraリポジトリからdockerをインストールして・・・

$ sudo service docker start

サービスを起動

$ sudo service docker start
Redirecting to /bin/systemctl start docker.service
$ ps -ef |grep docker
root     12642     1  1 10:25 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=1024:4096
ec2-user 12818  3438  0 10:25 pts/0    00:00:00 grep --color=auto docker

こんな簡単やったんか・・・orz

教訓

困ったら公式を読め

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker/git credential helperの使い方(一覧)

docker

$ docker-credential-pass store
> {"ServerURL":"__HOST__","Username":"__USERNAME__","Secret":"__PASSWORD__"}
$ docker-credential-pass list
{"__HOST__":"__USERNAME__"}
$ docker-credential-pass get
> __HOST__
{"ServerURL":"__HOST__","Username":"__USERNAME__","Secret":"__PASSWORD__"}
$ docker-credential-pass erase
> __HOST__

git

$ git-credential-libsecret store
> protocol=https
> host=__HOST__
> username=__USERNAME__
> password=__PASSWORD__
>
$ git-credential-libsecret get
> protocol=https
> host=__HOST__
>
username=__USERNAME__
password=__PASSWORD__
$ git-credential-libsecret erase
> protocol=https
> host=__HOST__
>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu18.04にNVIDIA Container Toolkitをインストールする

最初に

手元で上手くいった例を記録として残しているだけで、何が正しいか分かっていない(動けば正義)ので無駄な手順等を行なっている可能性があります、ご了承ください
またコマンドと出力が一緒になっている部分はコマンド前に$を付けています

環境

試した環境

  • Docker, nvidia-driver, CUDA未インストール
  • GPUはGTX 1660Tiと1660の二枚刺し
  • OSはUbuntu: 18.04 (詳しくは以下の通り)
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

nvidia-driverとCUDAをインストールする

以下のサイトを参考にインストール

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
sudo apt-get update
# 自動で合うdriverを入れてくれる
# sudo ubuntu-drivers autoinstallだと435, 以下コマンドだと418のインストールを確認
sudo apt-get -y install cuda-drivers
sudo apt-get -y install cuda

.bashrcにパスを追加

# 以下を追記
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"

sudo rebootで再起動、以下で確認

$ nvidia-smi
Fri Nov 15 00:06:50 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 166...  On   | 00000000:01:00.0  On |                  N/A |
| 29%   33C    P8     5W / 120W |    110MiB /  5911MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1660    On   | 00000000:03:00.0 Off |                  N/A |
| 28%   31C    P8     3W / 120W |      1MiB /  5914MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       953      G   /usr/lib/xorg/Xorg                            39MiB |
|    0      1011      G   /usr/bin/gnome-shell                          69MiB |
+-----------------------------------------------------------------------------+
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

Dockerをインストールする

以下のサイトを参考にインストール

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD8
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io -y
# 確認
sudo docker run hello-world

バージョンの確認(NVIDIA Container ToolkitはDockerが19.03以降でないとダメ)

$ docker -v
Docker version 19.03.4, build 9013bf583a

NVIDIA Container Toolkitをインストール

以下のサイトを参考にインストール

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

動くか確認

$ nvidia-container-cli info
NVRM version:   418.87.01
CUDA version:   10.1

Device Index:   0
Device Minor:   0
Model:          GeForce GTX 1660 Ti
Brand:          GeForce
GPU UUID:       GPU-4dd3cbbf-cb72-be49-a3d0-4625043ce50e
Bus Location:   00000000:01:00.0
Architecture:   7.5

Device Index:   1
Device Minor:   1
Model:          GeForce GTX 1660
Brand:          GeForce
GPU UUID:       GPU-914b0174-e95d-0b8f-cf13-d20ed58f707e
Bus Location:   00000000:03:00.0
Architecture:   7.5

これでGPUコンテナを実行するとき(run)に--gpusオプションを付ければ動く

メモ

dockerコマンドの際に一々sudoを打たなくていいようにする
この記事より以下コマンドを入力後、再起動
dockerコマンドをsudoの付与無しに実行できるようにする

sudo gpasswd -a "権限を付与するuser" docker

実際にpytorchを動かしてみる

閑話休題
今回はお手軽にpytorch公式のdockerhubからイメージを持ってくる(動くか確認もしたかった)

# 色々オプションをつけているが、最低限なら-pとか-vはいらない
# -vするなら適当に作業ディレクトリに移動してから行う
docker run -itd --name pytorch -p 8888:8888 -v $PWD/:/workspace --gpus all pytorch/pytorch:1.3-cuda10.1-cudnn7-devel
docker exec -it pytorch /bin/bash

nvidia-smiもちゃんと動くことを確認
学習部分だけいい感じに切り取ってくれている記事があったので利用させてもらう
Docker(19.03)でgpu有効化してpytorchで訓練するまでやる(Ubuntu18.04)
無事動くことを確認

おまけ

この記事より丁寧でわかりやすい導入記事()
NVIDIA Container Toolkit を使って Docker コンテナで GPU を使う

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker-composeで簡単に環境構築Apache2.4+PHP7.1+PostgreSQL9.6

仕事で上記の環境が必要になったのでもうやりたくない備忘録として残す

環境

  • Mac for Docker
  • Apache2.4
  • PHP7.1
  • PostgreSQL9.6

構成

ディレクトリ構成はこんな感じです。

スクリーンショット 2019-11-15 16.19.43.png

Dockerfile

docker/webDockerfile という名前のファイルを作成し以下の内容で記述

PHPのバージョンを変えたければFROMの php:7.3-apache という風に変えればいけるはず。

docker/web/Dockerfile
FROM php:7.1-apache

COPY ./php.ini /usr/local/etc/php/

RUN set -ex apk --no-cache add postgresql-dev libpq-dev && \
    apt-get update && apt-get install -y libpq-dev \
    vim \
    less \
    && docker-php-ext-install pdo pdo_pgsql pgsql mbstring

同階層で php.ini ファイルを作成します。

docker/web/php.ini
[Core]
display_errors = On
error_reporting = E_ALL
error_log = /var/log/apache2/error.log
log_errors = On

[Date]
date.timezone = 'Asia/Tokyo'

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = auto
mbstring.http_input = auto
mbstring.http_output = auto
mbsting.encoding_translation = Off
mbstring.detect_order = auto

docker-compose.yml

PostgreSQLのバージョン変えたければ image: postgres:9.3 の部分を変更してください。
またはポートを変えたいときは ports: -8110:80 を変更してください。

docker-compose.yml
version: '3'

services:
  web:
    build: ./docker/web/
    ports:
      - 8110:80
    volumes:
      - .:/var/www/html
    depends_on:
      - db
  db:
    image: postgres:9.3
    ports:
      - 5433:5432
    volumes:
      - ./docker/db:/docker-entrypoint-initdb.d

公開ファイルを編集

適当に今回は index.php を上げるので phpinfo を表示させよう

index.php
<?php

phpinfo();

実行

実行してみる

docker-compose up -d

立ち上がってるか確認してみる

$ docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
0e5271d55548        4b77e94c903a        "docker-php-entrypoi…"   38 minutes ago      Up 38 minutes       0.0.0.0:8110->80/tcp     test_web_1
d7ae129bf106        postgres:9.3        "docker-entrypoint.s…"   38 minutes ago      Up 38 minutes       0.0.0.0:5433->5432/tcp   test_db_1

ブラウザ確認

先ほどのdocker-compose.ymlをそのまま使用している人なら以下のリンクから飛べるはず
localhost:8110

下の画面が表示されていれば成功

スクリーンショット 2019-11-15 16.39.00.png

マシン接続

コンテナ内に入ってみる

$ docker exec -it test_web_1 bash

# ls
# docker  docker-compose.yml  index.php

最後に

docker-compose.ymlが便利すぎて辛い。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerのベースイメージディストリビューション選定のベストプラクティス

結論

以下3つのどれか

  • Alpine Linux
  • Ubuntu
  • Debian

厳しい

  • CentOS (理由によってはありえます)

選定理由の云々

コンテナのイメージ設定のベタープラクティスとして

  • コンテナのイメージサイズは極力減らす

といったものが挙げられます。

CentOSはサーバー上で直に動かす分には、便利なモジュールがデフォルトで色々入ってて便利ですが、Dockerコンテナとして使うと余計なモジュールが多すぎてイメージサイズが莫大になってしまうため、一般的には控えたほうが良いです。CentOSイメージのBuildが遅すぎてストレスフルですし。

とにかく軽いイメージを目指すのであればAlpine Linuxですが、資料的ものが少ない(肌感)で、安定した運用を目指すのであればUbuntuかDebianです。Debianで作られたイメージがDocker Hub上では多い(印象)です。

その他備考というか独り言

CentOSはLTSでサポート期間が長くてええやん!
かもしれませんが、イメージサイズの観点だけからすると厳しい印象です。

他にも良いディストリビューションあります!
って意見多数出ると思いますが、上記4つのディストリビューション以外試してないんですすみません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker&Railsの環境構築をしようとしたらはまった話

はじめに

私は、Arch Linuxをインストールして1カ月くらい経つぐらいの人です。Arch Linuxの知識ほぼないです:sweat: Dockerについても今回初めてやるので、全く知識がない状態の人がDockerやってみたので、おかしいところが少々あるかもしれないので、よろしくお願いします。

私が開発した環境

種類 version
使用OS Arch Linux
Docker 19.03.4
Ruby 2.5.7
Rails 5.2.3
rbenv 1.1.2

実現したかったこと

ローカル上のRuby,RailsのバージョンをDockerコンテナの中のバージョンと揃えて、開発をすること。

試してみたこと

  • rbenvを使って、Rubyのバージョンを切り替える。
    • バージョンを変えても適用されないなどと、環境がおかしくなり、断念しました。
  • dockerコンテナの中で、開発をすべて行う(?)
    • railsコマンドを書き換えてdockerコンテナのバージョンで作成するように書き換えたら、うまくできました。

私なりに、やって正解だったことをまとめます。

やったこと

rails コマンドをそのまま打ち込むとローカルのRuby,Railsのバージョンが適用されてしまうため、頭にかならず,docker-compose run web とつけるとDockerコンテナ内のバージョンが適用されるので、バージョンのエラーなどが起きなくなり、正常に作成できます。

注意すること

また、何回も同じポート番号を指定してしまうと、重複エラーが出るので、ポート番号に気を付けましょう!間違えた場合は、
docker psコマンドで、今動いてるコンテナを確認して、docker stop コンテナ名(または、$(docker ps)) コンテナを止めてあげないと、削除することができないので、気を付けます。止めた後、docker rm コンテナ名 でコンテナを削除しましょう。また全削除したい場合はコンテナ名$(docker ps -a) とすると今あるコンテナをすべて削除することができます。

最後に

rbenvを駆使してバージョン問題に取り組むことも重要ですが、
コンテナ技術をつかえば違う選択肢もあるのかな、と感じました。
dockerコンテナわかると、消したり作ったりするの楽しくなるんでよかったら、やってみてください!

参考
DockerでRailsの環境構築してHerokuへデプロイする

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「量子アニーリングの基礎」を読む 第5日

「量子アニーリングの基礎」西森秀稔, 大関真之, 共立出版, 2018 を読む
4184JBeEEZL._SX350_BO1,204,203,200_.jpg
https://qiita.com/kaizen_nagoya/items/29580dc526e142cb64e9

『量子アニーリングの基礎』正誤表 (西森秀稔・大関真之 著) 2019年6月20日更新
https://www.kyoritsu-pub.co.jp/app/file/goods_contents/3037.pdf

量子アニーリングの数理 東京工業大学 大学院理工学研究科 物性物理学専攻 西森 秀稔
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/189516/1/bussei_el_033203.pdf

本は、
1 量子力学
2 熱力学、統計力学
がわかっている人にとっての丁寧

ここでは、どちらもわかっていないことを前提として資料を整理する。

「量子アニーリングの基礎」を読む 第1日
https://qiita.com/kaizen_nagoya/items/2bc284faaf0f61278778

「量子アニーリングの基礎」を読む 第2日
https://qiita.com/kaizen_nagoya/items/749043f4f8ae026ec5e5

「量子アニーリングの基礎」を読む 第3日
https://qiita.com/kaizen_nagoya/items/3f3d67d841075e8c867a

「量子アニーリングの基礎」を読む 第4日
https://qiita.com/kaizen_nagoya/items/a75e954194de820637a3

量子コンピュータ:量子力学にたどり着くための三つの方法
https://qiita.com/kaizen_nagoya/items/cfc35e62c81a978cc2fc

プログラマが量子力学を勉強するときの7つの道
https://qiita.com/kaizen_nagoya/items/7061f62b3629eee395f2

スピングラス理論と情報統計力学 西森秀稔 参考文献
https://qiita.com/kaizen_nagoya/items/702c08becfcca98fa9d8
p.183

このプロセスを計算機上で数値的に実現して最適化空間の解を近似的に求める方法をシミュレテッドアニーリング(模擬徐冷)という。無限の時間をかけてTをゆっくり下げていくと現実に最適化に到達するが、実際にはほどほどの速さで温度を下げ、しかも適当なところで打ち切る。この意味で近似解法なのである。

第9章

量子モンテカルロ法

量子モンテカルロ法の最近の発展 京都大学 大学院情報学研究科 原田健自
https://www-np.acs.i.kyoto-u.ac.jp/~harada/misc/qmc.pdf

マルコフ連鎖

マルコフ連鎖の基本とコルモゴロフ方程式
https://mathtrain.jp/markovchain

確率過程の基礎-マルコフ連鎖- 2016/4/25
スタートアップゼミ 社会基盤学科 交通研 B4 前田翠 東京大学
http://bin.t.u-tokyo.ac.jp/startup16/file/2-2.pdf

ギブス・ボルツマン分布

1.材料の熱力学・統計力学 鹿児島大学
http://www.mech.kagoshima-u.ac.jp/~nakamura/bussei/thermo-statistics.pdf

エントロピーとギブスの正準集団
https://ist.ksc.kwansei.ac.jp/~nishitani/Lectures/2005/NewMaterialDesign/Statistics.pdf

統計熱力学講義 第9回 担当:西野信博 A3-012号室 広島大学
https://home.hiroshima-u.ac.jp/nishino/2010/toukei/toukei_9.pdf

メトロポリス法

モンテカルロ法の前線 —サイコロを振って積分する方法 — 福島 孝治 東京大学
https://www.smapip.is.tohoku.ac.jp/~smapip/2003/tutorial/presentation/koji-hukushima.pdf

ベイズ統計の理論と方法 5.1 マルコフ連鎖モンテカルロ法
大橋耕也 東京工業大学 情報理工学院 数理・計算科学専攻
http://watanabe-www.math.dis.titech.ac.jp/~kohashi/document/bayes_51.pdf

熱浴法

物理学特別講義 伊庭幸人 情報・システム研究機構統計数理研究所 (東工大 連携教員)
https://www.ism.ac.jp/~iba/kougi_2006_ism/c20061.pdf

simulated annealing

組合せ最適化問題に対するSimulated Annealing法
http://www.orsj.or.jp/~archive/pdf/bul/Vol.31_01_043.pdf

知的システムデザイン研究室 SA プログラムの作成およびパラメータ検討 吉井健吾 同志社大学
http://mikilab.doshisha.ac.jp/dia/monthly/monthly04/20040524/yoshii.pdf

連続最適化問題における近傍並列シミュレーテッドアニーリング
同志社大学工学部知識工学科卒業論文 2003年3月
学籍番号 990064 知的システムデザイン研究室 及川雅隆
http://isw3.naist.jp/IS/Bio-Info-Unit/gogroup/masata-o/PDF/graduation_thesis.pdf

マルコフ連鎖に対する Spectral Gap とその Simulated Annealing への応用
千代延研究室 八田大樹
https://sci-tech.ksc.kwansei.ac.jp/~chiyonobu/gseminar/hatta.pdf

Adaptive Simulated Annealing の基礎 平尾 洋樹 同志社大学
http://mikilab.doshisha.ac.jp/dia/monthly/monthly07/20070523/hirao.pdf

逆温度

p.85
周辺尤度計算における温度交換の確率
渡辺澄夫 東京工業大学
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/exchange_free_energy.pdf

逆温度1の事後分布のサンプルからWBICを計算する
http://statmodeling.hatenablog.com/entry/WBIC-approximation

D-Waveの量子ボルツマンマシンの逆温度パラメータ最適化でPFNのOptunaつかってみた
https://qiita.com/YuichiroMinato/items/25232450d2c22d1c2fe9

ベイズ学習における必要最低サンプル数の推定
Estimating a minimum required sample size for Bayesian learning
徳田悟 永田賢二 岡田真人
https://www.ai-gakkai.or.jp/jsai2015/webprogram/2015/pdf/2F1-5in.pdf

虚時間

経路積分入門-経路積分,虚数時間の場合も- (Introduction to Path Integral –Path Integral in Imaginary-Time as Well-)
一瀬 孝
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1723-01.pdf

第 17 章 経路積分法 東京大学
https://ocw.kyoto-u.ac.jp/ja/graduate-school-of-science-jp/course-chemical-statics/pdf/lect13.pdf

経路積分による量子力学と 物性論における幾何学的位相
(総合科目「物理と数学3」) 東京大学大学院工学系研究科 物理工学 初貝 安弘1
http://rhodia.ph.tsukuba.ac.jp/~hatsugai/modules/pico/PDF/lectures/Hatsugai-Geom.pdf

経路積分表示 part 1:1 粒子の場合 永井佑紀 東京大学
http://park.itc.u-tokyo.ac.jp/kato-yusuke-lab/nagai/note_071025_path.pdf

sinh

https://www.geisya.or.jp/~mwm48961/electro/hyperbolic_fun1.htm

双曲線関数にまつわる重要な公式まとめ
https://mathtrain.jp/hyperbolic

双曲線関数の世界入門 明松 真司
http://haikara-city.com/wp-content/uploads/2017/09/hyp_world2.pdf

非可換

p.89
非可換の世界を覗いてみよう
筑波大学数学系 星野光男
https://nc.math.tsukuba.ac.jp/?action=cabinet_action_main_download&block_id=282&room_id=80&cabinet_id=1&file_id=9&upload_id=225

量子空間の世界 —非可換方程式を解いてみよう—
毛利 出 静岡大学理学部数学科 2015年11月26日(木)
https://www.sci.shizuoka.ac.jp/sciencecafe/news/20151126_02.pdf

第10章

ボルツマン機械学習

統計的機械学習理論とボルツマン機械学習
山形大学 大学院理工学研究科 安田 宗樹
https://www.r-ccs.riken.jp/labs/cms/workshop/20170322/presentation/yasuda.pdf

D-Waveでボルツマン機械学習する際のテクニック集
https://qiita.com/piyo7/items/c8f21b86f1b17dc42df3

機械学習の関数「ボルツマンマシン」を用いて、量子多体系という難問に挑む
https://academist-cf.com/journal/?p=10216

勾配法

量子コンピュータを用いた変分アルゴリズムと機械学習
https://www.jps.or.jp/books/gakkaishi/2019/09/74-09seriesAIphys1.pdf

量子アニーリングが拓く 機械学習と計算技術の新時代
東北大学大学院情報科学研究科応用情報科学専攻 *
大関真之
http://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/2059-02.pdf

量子大規模固有値問題における共役勾配法の収束性
https://www.jstage.jst.go.jp/article/jsces/2006/0/2006_0_20060027/_pdf

Contrastive divergence(CD)

コントラスティブダイバージェンス法とその周辺
Contrastive Divergence and Related Topics
前田 新一 京都大学大学院情報学研究科
https://jsai.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=1664&item_no=1&attribute_id=22&file_no=1&page_id=13&block_id=23

連続値 RBM における Contrastive Divergence 学習の平衡点解析 東大新領域 A 理研 BSIB
唐木田亮 A, 岡田真人 A,B , 甘利俊一 B
https://www.jstage.jst.go.jp/article/jpsgaiyo/70.1/0/70.1_2992/_pdf

Contrastive Divergence 法 突然終わるかもしれないブログ
http://mkprob.hatenablog.com/entry/2014/07/20/034311

persistent contrastive divergence(PCD)

KL情報量

Kullback-Leibler 情報量に関する解説 黒木玄 東北大学
http://www.math.tohoku.ac.jp/~kuroki/LaTeX/20160616KullbackLeibler/20160616KullbackLeibler-0.2.1.pdf

正規分布間のKLダイバージェンス
https://qiita.com/ceptree/items/9a473b5163d5655420e8

生成モデルで語られる Kullback-Leibler を理解する
https://qiita.com/TomokIshii/items/b9a11c19bd5c36ad0287

QBoost(D-WAVE)

辞書学習

辞書学習 アルゴリズム
樺島祥介(東工大総理工), 坂田綾香(統計数理研究所)
https://www.ieice.org/ess/sita/forum/article/2015/201512081915.pdf

辞書学習によるビッグデータからのパターン発見
筑波大学 手塚太郎
https://www.jstage.jst.go.jp/article/cicsj/32/4/32_76/_pdf

辞書学習アルゴリズム
https://qiita.com/kibo35/items/67dedba4ea464cc494b0

近接勾配法応用編その1 ~スパースコーディング、辞書学習からの超解像~
http://yamagensakam.hatenablog.com/entry/2018/04/12/074955

対数尤度関数

第 10 章 推定量の求め方 大阪大学
http://www2.econ.osaka-u.ac.jp/~tanizaki/class/2018/basic_econome/04.pdf

対数尤度関数の最尤推定
https://stats.biopapyrus.jp/glm/mle.html

最尤法によるパラメータ推定の意味と具体例
https://mathtrain.jp/mle

キメラグラフ(Chimera graph)

キメラグラフ
https://qard.is.tohoku.ac.jp/T-Wave/?glossary=キメラグラフ

グラフマッピング
https://quantum.fixstars.com/introduction_to_quantum_computer/quantum_annealing/programming/graph_mapping/

量子人工脳
~ 組み合わせ最適化問題を解くコヒーレント・イジングマシン 国 情報学研究所 宇都宮聖
https://www.jst.go.jp/impact/hp_yamamoto/symposium/pdf/project2_material_3.pdf

富士通のHPCの取り組みについて FUJITSU'S LATEST ACTIVITIES IN HPC DEVELOPMENT
宮原豊
http://www.ee.utsunomiya-u.ac.jp/~kawatalab/pse/workshop/j2018/papers/02_0930.pdf

クエンチ(急冷)

p.107

https://www.keyence.co.jp/ss/products/recorder/heat/basics/type.jsp

What is a quantum quench?
https://www.quora.com/What-is-a-quantum-quench

凝縮系物理学 特別講義 人工原子 量子ドットとは何か
筑波大学物理学系 舛本泰章
https://www.px.tsukuba.ac.jp/~ikezawa/lab/chibadai.pdf

トポロジカル量子戦略
~量子力学の新展開がもたらすデバイスイノベーション~
https://www.jst.go.jp/crds/pdf/2016/SP/CRDS-FY2016-SP-02.pdf

分配関数

§4 統計力学の基礎

http://phys.sci.hokudai.ac.jp/~kita/StatisticalMechanicsI/Stat4.pdf

正準分布の分配関数と熱力学関数
https://nagoya.repo.nii.ac.jp/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=14201&item_no=1&attribute_id=17&file_no=10&page_id=28&block_id=27

量子統計力学
上智大学理工学部 大槻東巳
http://www.ph.sophia.ac.jp/~tomi/kougi_note/stat_phys.pdf

トレース

分配関数とトレースの関係Z=Tr(exp(-βH))=Σexp(-βEk)の証明
https://batapara.com/archives/19115592.html/

統計力学の原理
http://rhodia.ph.tsukuba.ac.jp/~hatsugai/modules/pico/PDF/lectures/stat.pdf

分配関数,密度行列,古典対応
http://www7b.biglobe.ne.jp/~fortran/education/partitionfn.pdf

制限ボルツマンマシン Restricted Boltzmann Machine: RBM

制限ボルツマンマシン
https://quantum.fixstars.com/introduction_to_quantum_computer/quantum_computer_research/restricted_boltzmann_machine/

制限付きボルツマンマシンの初心者向けガイド POSTD
https://postd.cc/a-beginners-guide-to-restricted-boltzmann-machines/

制限ボルツマンマシン (RBM) の導出 (1)
http://aidiary.hatenablog.com/entry/20160316/1458129923

深層ボルツマンマシン

【かんたん解説付き】深層ボルツマンマシンをPythonでスクラッチ実装する①
https://qiita.com/yutaitatsu/items/a9478841357b10789514

深層ボルツマンマシンに対する高性能な平均場近似アルゴリズム
高橋 茶子 安田 宗樹 山形大学
https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=180684&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8

統計的機械学習理論と ボルツマン機械学習
https://www.r-ccs.riken.jp/labs/cms/workshop/20170322/presentation/yasuda.pdf

ヘルムホルツ機械学習

機械学習 – 機械学習 – ヘルムホルツ機械の実装[完了]
https://codeday.me/jp/qa/20190707/1196714.html

生成モデルの Deep Learning PFI セミナー 得居 誠也
https://www.slideshare.net/beam2d/learning-generator

弱識別器に SVM を用いた AdaBoost の検討 神戸大学 松田 博義 滝口 哲也有木 康雄
https://pdfs.semanticscholar.org/bf51/de439089be83481f7382f3e2c16a8f00ac80.pdf

AdaBoost の弱学習器を色々試してみた
https://qiita.com/antimon2/items/8761cea58f498e4ff74b

識別器

弱識別器

パターン認識特論 ~研究者から見たBoosting~
2011.10.04
牧田孝嗣@産業技術総合研究所
http://www.kameda-lab.org/lecture/2011-tsukubagrad-PRML/20111004_AIST_Makita.pdf

非負値制約行列分解

非負値行列分解 “Nonnegative/binary matrix factorization with a D-Wave quantum annealer” by Daniel O’Malley, et al. (2017)
https://qard.is.tohoku.ac.jp/T-Wave/?p=397

非負値行列因子分解 亀 岡 弘 和
http://www.kecl.ntt.co.jp/people/kameoka.hirokazu/publications/Kameoka2012SICE09published.pdf

非負制約下における複合行列分解と
そのソーシャルメディア解析への応用
竹内 孝1,a) 石黒 勝彦1,b) 木村 昭悟1,c) 澤田 宏2,d)
https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=99709&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8

経験平均

     知的情報処理の統計力 ―機械学習を始めてみよう― 大関真之

京都大学 大学院情報学研究科システム科学専攻
http://www-adsys.sys.i.kyoto-u.ac.jp/mohzeki/summer2016.pdf

AIC, WAIC, WBICを実感する
http://rstudio-pubs-static.s3.amazonaws.com/451984_464393c3da5d4f7aa94b7ca4d6cfcf3a.html

p.101
経験分布

アンサンブル学習

アンサンブル学習 上 田 修 功†
https://ipsj.ixsq.nii.ac.jp/ej/index.php?action=pages_view_main&active_action=repository_action_common_download&item_id=18021&item_no=1&attribute_id=1&file_no=1&page_id=13&block_id=8

【入門】アンサンブル学習の代表的な2つの手法とアルゴリズム
https://spjai.com/ensemble-learning/

機械学習上級者は皆使ってる?!アンサンブル学習の仕組みと3つの種類について解説します
https://www.codexa.net/what-is-ensemble-learning/

アンサンブル学習 ~三人寄れば文殊の知恵~ たくさんモデルを作って推定性能を上げよう!
https://datachemeng.com/ensemblelearning/

アンサンブル学習のフレームワーク
https://jp.mathworks.com/help/stats/framework-for-ensemble-learning.html

過学習を避ける:ドロップアウト

トンネル効果

凍結現象

戦略的創造研究推進事業 CREST
研究領域 「量子情報処理システムの実現を目指した新技術の創出」
研究課題 「量子多体協力現象の解明と制御」
研究終了報告書
研究期間 平成17年10月~平成23年3月
研究代表者:宮下 精二 (東京大学大学院理学系研究科、教授)
https://www.jst.go.jp/kisoken/crest/report/sh_heisei17/ryoushi/04miyashita.pdf

組み合わせ最適化問題と量子アニーリング : 量子断熱発 展の理論と性能評価
鈴木正 京都大学
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/142655/1/KJ00004982313.pdf

量子アニーリング方式
https://quantum.fixstars.com/introduction_to_quantum_computer/quantum_annealing/

量子アニーリングによる組合せ最適化 大関 真之
http://www.orsj.or.jp/archive2/or63-6/or63_6_326.pdf

この記事はD-Wave機器の弱点を書いている。

フレッシュマンに贈る量子計算の概略と基礎 ―量子計算の考え方と量子ゲートのイメージを中心に-
小竹茂夫
http://www.eng.mie-u.ac.jp/research/activities/30/30_13.pdf

量子の謎「その先を聞いてはならない」
https://www.tel.co.jp/museum/magazine/017/lab01/02.html

深層ビリーフネット

深層学習技術と 信号処理・通信系アルゴリズム ̶概観と展望̶
名古屋工業大学 和田山 正
https://www.ieice.org/ess/sita/forum/article/2018/201807311720.pdf

Golden Thompsonの不等式

用語

統計平均
という用語が、
スタンフォード物理学再入門 量子力学
https://www.amazon.co.jp/dp/B01B2K28Z6
アート・フリードマン レオナルド・サスキンド 日経BP(2016/01/28)
p.22 に

資料整理
https://researchmap.jp/joyxqexdv-49935/#_49935

https://jp.quora.com/ryoushirikigaku-ga-fun-ka-tsu-ta-to-omoi-tsu-ta-hon-enshuu-kaki-nado-ga-arima-shitara-o-oshie-kuda-sai-ma-sen-ka

【連続講義】量子力学入門(全10講)Youbute動画
https://researchmap.jp/joz7zs9b6-49935/#_49935

やさしい量子力学 (1965年) (科学普及新書)
ヴェ・イ・ルィドニク 東京図書(1965)
https://researchmap.jp/jo4lwf59f-49935/#_49935

道具類

Quantum Computer on Github
https://github.com/kaizen-nagoya/way_to_quantum_computer

docker for windows 7
https://qiita.com/kaizen_nagoya/items/490e5a250efabc9dc557

「maxima 入門」入門(Windows編)
https://qiita.com/kaizen_nagoya/items/77cfe874c73d8eae92fc

背景知識

伏見康治・確率論及統計論輪講
https://researchmap.jp/josgkrcbv-2087795/#_2087795

作業記録

macOS
$ brew cask install anaconda
$ pip install matplotlib
$ pip install cmake
$ pip install openjij
$ python openjijch1.py

h_i:  {0: -1, 1: -1, 2: -1, 3: -1, 4: -1}
Jij:  {(0, 1): -1, (0, 2): -1, (0, 3): -1, (0, 4): -1, (1, 2): -1, (1, 3): -1, (1, 4): -1, (2, 3): -1, (2, 4): -1, (3, 4): -1}
[[1, 1, 1, 1, 1]]
[{0: 1, 1: 1, 2: 1, 3: 1, 4: 1}]
[[1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1], [1, -1, 1]]
[-4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0, -4.0]
['a', 'c', 'b']
[{'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}, {'a': 1, 'c': -1, 'b': 1}]
{'states': array([[ 1, -1,  1]]), 'num_occurrences': array([10]), 'min_energy': -4.0}
[[1, 1, 0], [1, 1, 0], [1, 1, 0]]
[-46.04283667268458, -45.40319673739635, -45.43927510769896, -45.8420452385678, -44.69211986420642]
{'states': array([[1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1,
        1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0,
        1, 1, 1, 0, 0, 0]]), 'num_occurrences': array([28]), 'min_energy': -46.04283667268458}

実行

openjijch1.py
import openjij as oj
#https://openjij.github.io/OpenJijTutorial/_build/html/ja/index.html
import random
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.use('Agg')

# 問題を表す縦磁場と相互作用を作ります。OpenJijでは辞書型で問題を受け付けます。
N = 5
h = {i: -1 for i in range(N)}
J = {(i, j): -1 for i in range(N) for j in range(i+1, N)}

print('h_i: ', h)
print('Jij: ', J)

# まず問題を解いてくれるSamplerのインスタンスを作ります。このインスタンスの選択で問題を解くアルゴリズムを選択できます。
sampler = oj.SASampler()
# samplerのメソッドに問題(h, J)を投げて問題を解きます。
response = sampler.sample_ising(h, J)

# 計算した結果(状態)は result.states に入っています。
print(response.states)

# もしくは添字付きでみるには samples を見ます。
print(response.samples)

# 実は h, J の添字を示す、辞書のkeyは数値以外も扱えます。
h = {'a': -1, 'b': -1}
J = {('a', 'b'): -1, ('b', 'c'): 1}
sampler = oj.SASampler(iteration=10)  # 10回 SAで解いてみる. iteration という引数で10回分一気に解くことができます。
response = sampler.sample_ising(h, J)
print(response.states)

print(response.energies)

print(response.indices)

print(response.samples)

print(response.min_samples)

# Q_ij を辞書型でつくります。
Q = {(0, 0): -1, (0, 1): -1, (1, 2): 1, (2, 2): 1}
sampler = oj.SASampler(iteration=3)
# QUBOを解く時は .sample_qubo を使いましょう
response = sampler.sample_qubo(Q)
print(response.states)

N = 50
# ランダムにQij を作る
Q = {(i, j): random.uniform(-1, 1) for i in range(N) for j in range(i+1, N)}

# OpenJijで解く
sampler = oj.SASampler(iteration=100)
response = sampler.sample_qubo(Q)

# エネルギーを少しみてみます。
print(response.energies[:5])

fig=plt.figure()
plt.hist(response.energies, bins=15)
plt.xlabel('Energy', fontsize=15)
plt.ylabel('Frequency', fontsize=15)
#plt.show()
fig.savefig('ch1.png')


min_samples = response.min_samples

print(min_samples)

ファイル
ch1.png

参考資料(reference)

量子計算機16の疑問 「量子アニーリングの基礎」編
https://qiita.com/kaizen_nagoya/items/683961f9e747e144413d

docker(28) Openjij チュートリアルをdockerで
https://qiita.com/kaizen_nagoya/items/09a52b25d54091c8db6f

今日のpythonエラー(macOS)
https://qiita.com/kaizen_nagoya/items/bb79e96104b5ff536de8

Windows(M.S.)にPython3 (Anaconda3) を導入する(7つの罠)
https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679

Windows(M.S.) にAnaconda3(python3)を 2019年版
https://qiita.com/kaizen_nagoya/items/c05c0d690fcfd3402534

文書履歴(document history)

ver. 0.01 初稿 20191115
ver. 0.02 参考資料追記 20191116

このエントリーをはてなブックマークに追加

https://b.hatena.ne.jp/guide/bbutton

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ruby + alpine でほんの少しだけバッチバージョンを変えた Dockerfile を自作してみようとした例 ( #ruby #docker )

Rubyでは公式イメージのDockerfileが公開されている

https://github.com/docker-library/ruby/blob/bf0e16e7511c97fdf351fdfc2e7e17478a4eaf16/2.6/alpine3.10/Dockerfile

image

Ruby

該当のruby version のSHA をコピっておく

https://www.ruby-lang.org/en/news/2019/04/17/ruby-2-6-3-released/

image

Dockerfile

VERSION と SHA だけ書き換えた Dockerfile を作る

ENV RUBY_MAJOR 2.6
- ENV RUBY_VERSION 2.6.4
- ENV RUBY_DOWNLOAD_SHA256 df593cd4c017de19adf5d0154b8391bb057cef1b72ecdd4a8ee30d3235c65f09
+ ENV RUBY_VERSION 2.6.3
+ ENV RUBY_DOWNLOAD_SHA256 11a83f85c03d3f0fc9b8a9b6cad1b2674f26c5aaa43ba858d4b0fcc2b54171e1

build

docker build . -t yumainaura/ruby2.6.4-alipine3.10

うまく行けば動くはず。

うまくいけば。

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2716

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker環境でお試しImageMagickをインストール

コンテナ立て直すと消えちゃいますッ………ドゥフフッッ………

dockerでOSを汚さずに試しにImageMagick使いたいな〜〜ってときに!
またはUbuntuにImageMagickインストールしたいときに!
コンテナたてるときにインストールしたいのであれば、下記記事を参考にしてください。
※dockerイメージphp:7.2-apacheの環境です><
https://qiita.com/saya1001kirinn/items/dacf5ef6b1d66ced846a

Ubuntu + Apatcheの環境です。

ImageMagickのインストール(パッケージマネージャを使ったインストール)

$ apt-get update
$ apt-get install imagemagick

PECLはPHP拡張モジュールのリポジトリとのことなので使えるとは思いますが、PHPが入ってなければ、または下記コマンド叩いて'command not found'がでたら

$ pecl help

下記コマンドでpeclインストール

$ apt-get install php-pear

これでインターフェースであるImagckがインストール可能になる。

必要ないのもあるかもです…

・ライブラリ共通インターフェース

$ apt-get install gcc

・Magick-Wand(ImageMagick C用のAPI)

$ apt-get install pkg-config

・ImageMagick関連のライブラリインストール

$ apt-get install libmagickwand-dev

Imagickのインストール(ImageMagickをインストールしてあることが前提)

$ pecl install imagick

php.ini にextension=imagick.so追加

※php.iniあるディレクトリ取得  

php -i | grep php.ini

※ディレクトリ先移動

cd /usr/local/etc/php  

※php.iniファイルがなければ作る 

cp php.ini-development php.ini 

※vimインストールしてなければイントール 

$ apt-get update 
$ apt-get install vim

php.ini のあるディレクトリで、vimでphp.iniを編集、extension=imagick.soを追加

vi php.ini
extension=imagick.so

i = 挿入(文字打てる)
:w = 内容保存
:q = 終了
esc = 文字打つのもうやめたい(インサートモードを終了し、コマンドモードに移行する)
:q! = わけわからんくなった辛い、とにかく終了したい(保存せず終了)

終了後、catコマンドで追記できてるか確認

cat php.ini

webサーバ再起動

service apache2 reload

PDFから画像に変換するために必要なライブラリGhostScriptをインストール(必要であれば)

$ apt install ghostscript

composerにパッケージ追加

$ composer require spatie/pdf-to-image
$ composer require spatie/pdf-to-text

※バージョン確認やパッケージの種類は下記パッケージリストを確認してください。
https://packagist.org/packages/spatie/pdf-to-imagehttps://packagist.org/packages/spatie/pdf-to-image

終わりッッッ!!!!

(念のため)インストールできているか確認

Imagick

$ imagick identify -version

ImageMagick

$ convert -version
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker環境でお試しImageMagicをインストール

コンテナ立て直すと消えちゃいますッ………ドゥフフッッ………

dockerでOSを汚さずに試しにImageMagic使いたいな〜〜ってときに!
またはUbuntuにImageMagicインストールしたいときに!
コンテナたてるときにインストールしたいのであれば、下記記事を参考にしてください。
※dockerイメージphp:7.2-apacheの環境です><
https://qiita.com/saya1001kirinn/items/dacf5ef6b1d66ced846a

Ubuntu + Apatcheの環境です。

ImageMagickのインストール(パッケージマネージャを使ったインストール)

$apt-get update
$apt-get install imagemagick

PECLはPHP拡張モジュールのリポジトリとのことなので使えるとは思いますが、PHPが入ってなければ、または下記コマンド叩いて'command not found'がでたら

$pecl help

下記コマンドでpeclインストール

$apt-get install php-pear

これでインターフェースであるImagckがインストール可能になる。

必要ないのもあるかもです…

・ライブラリ共通インターフェース

$apt-get install gcc

・Magick-Wand(ImageMagick C用のAPI)

$apt-get install pkg-config

・ImageMagick関連のライブラリインストール

$apt-get install libmagickwand-dev

Imagickのインストール(ImageMagickをインストールしてあることが前提)

$pecl install imagick

php.ini にextension=imagick.so追加

※php.iniあるディレクトリ取得  

php -i | grep php.ini

※ディレクトリ先移動

cd /usr/local/etc/php  

※php.iniファイルがなければ作る 

cp php.ini-development php.ini 

※vimインストールしてなければイントール 

$apt-get update 
$apt-get install vim

php.ini のあるディレクトリで、vimでphp.iniを編集、extension=imagick.soを追加

vi php.ini
extension=imagick.so

i = 挿入(文字打てる)
:w = 内容保存
:q = 終了
esc = 文字打つのもうやめたい(インサートモードを終了し、コマンドモードに移行する)
:q! = わけわからんくなった辛い、とにかく終了したい(保存せず終了)

終了後、catコマンドで追記できてるか確認

cat php.ini

webサーバ再起動

service apache2 reload

PDFから画像に変換するために必要なライブラリGhostScriptをインストール(必要であれば)

$apt install ghostscript

composerにパッケージ追加

$composer require spatie/pdf-to-image
$composer require spatie/pdf-to-text

※バージョン確認やパッケージの種類は下記パッケージリストを確認してください。
https://packagist.org/packages/spatie/pdf-to-imagehttps://packagist.org/packages/spatie/pdf-to-image

終わりッッッ!!!!

(念のため)インストールできているか確認

Imagick

$imagick identify -version

ImageMagick

$convert -version
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

dockerイメージphp:7.2-apacheでImageMagickをインストール

インストールのイメージ

ImagicをインストールするためのImageMagickのインストールが必要。
まずPHPへImageMagicのインストールを行い(※dockerfileへ記述)、その後、Imagicのライブラリをcomposerに追加する。

インストール方法

php側でimagemagickとimagickのインストールが必要なため、dockerfileに下記を追加。

 && apt-get update && apt-get install -y imagemagick libmagickwand-dev \
 && pecl install imagick \
 && docker-php-ext-enable imagick \

これでbuild後、docker-compose up -d !!!ッッッターーーーーン!!!!

Linux側で、下記コマンドを叩いてImagicのライブラリを追加。

$ composer require spatie/pdf-to-image
$ composer require spatie/pdf-to-text

※バージョン確認やパッケージの種類は下記パッケージリストを確認してください。
https://packagist.org/packages/spatie/pdf-to-imagehttps://packagist.org/packages/spatie/pdf-to-image

すると、composer.jsonのrequireに下記が追加されてる。

        "spatie/pdf-to-image": "^1.8",
        "spatie/pdf-to-text": "^1.2"

ImageMagickを使えるようになったか下記コマンドで確認

# convert -version

インストールできてたらこんなんがでるよ。

# convert -version
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib

ちなみに、dockerfileに書いた

 && docker-php-ext-enable imagick \

は、extensionを有効にするけん、 php.iniに extension=imagick.so を書く必要がなくなる!!!

書いてると重複するけん下記のエラーがでる。

PHP Warning:  Module 'imagick' already loaded in Unknown on line 0

以上です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む