読者です 読者をやめる 読者になる 読者になる

ほのぼのぼのぼの

ひよっこエンジニアのほのぼの記録

Docker for Mac のインストールメモ

はじめに

mac でも windows でも安心して開発できる環境を求めて,まずは mac に docker を入れてみました。

環境

docker のインストール

  1. https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac の stable 版をダウンロード
  2. Docker.dmg をマウントして,docker.app を application フォルダへコピー
  3. docker.app を起動

インストールできました。

$ docker version
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/amd64
 Experimental: true

クジラさんかわいい。

f:id:u9bo:20170503231248p:plain

動かしてみました

nginx の起動

$ docker run -d -p 80:80 --name webserver nginx
 Unable to find image 'nginx:latest' locally
 latest: Pulling from library/nginx
 36a46ebd5019: Pull complete 
 57168433389f: Pull complete 
 332ec8285c50: Pull complete 
 Digest: sha256:c15f1fb8fd55c60c72f940a76da76a5fccce2fefa0dd9b17967b9e40b0355316
 Status: Downloaded newer image for nginx:latest
 4ea8d6c8d80fcf256cb55696b692fd32276524cb61adcb1eeef5b3f18213bc10
$ docker ps
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
 4ea8d6c8d80f        nginx               "nginx -g 'daemon ..."   6 minutes ago       Up 6 minutes        0.0.0.0:80->80/tcp   webserver
  • local に image がない場合は,pull してきてくれるとのこと。
  • -p 80:80 は ホストPC の 80 番に nginx の 80 番をフォワード

確認してみました

おおお。動いてる!めっちゃ簡単!

f:id:u9bo:20170503231425p:plain

確認できたので止めてみます。

$ docker stop webserver
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS               NAMES
4ea8d6c8d80f        nginx               "nginx -g 'daemon ..."   13 minutes ago      Exited (0) About a minute ago                       webserver

次にやること

  • php を動かす!
  • windows でも試してみる!

Let's encrypt の証明書の更新作業

はじめに

Let’s encrypt の証明書更新作業メモ。cron に登録したら楽だな,と思いつつ3ヶ月に一度コマンドを実行すれば良いだけなので,登録していない。。。でも更新コマンドを忘れちゃうので個人的なメモです。

こんな件名のメールが届いたら行う作業

Let's Encrypt certificate expiration notice for domain "example.com" 

環境

  • linux
  • nginx
  • letsencrypt

実行するコマンド

$ sudo systemctl stop nginx
$ sudo letsencrypt renew
$ sudo systemctl start nginx

証明書の更新中は nginx が止まるのでご注意を。

終わりに

やっぱり cron に登録しよう,そうしよう。

有彩色照明シーンの色情報を考慮したダイナミックレンジ圧縮

背景と目的

街中のイルミネーションや舞台照明演出において、LED カラー照明を利用した色彩演出が盛んに行われています。 最近では、スマートデバイスを介してディジタル調光が可能なカラー LED 照明1 が民生用にも普及し始めています。ユーザが光源の色を自在に指定できる環境が提供されているイルミネーションや照明デザインで色彩豊かな演出が可能となるに伴い、色彩演出の効果をモニタや紙面上で把握し、その演出効果や演出設計に役立てるシステムが必要になってきます。

しかしながら、一般に市販されているカメラのダイナミックレンジは 80 dB 程度であるため、色彩豊かな照明光や周囲の色調や形状を1枚の画像に納めるのは困難です。(図1.1) f:id:u9bo:20170330212101p:plain

例えば、速いシャッタースピードで撮影した低露光画像(図1.1(a))では光源の色を撮影することが可能ですが、照明周囲は黒く潰れてしまいます。一方、遅いシャッタースピードで撮影した高露光画像(図1.1(c))では照明周囲の色や形状を記録可能であるものの照明領域に白飛びが発生してしまいます。

このような状況下に対して、広いダイナミックレンジを有するHDR(High Dynamic Range)画像を用いると、シーン全体の色調や明るさを精度よく記録できます(図1.2、輝度画像)。

f:id:u9bo:20170330212615p:plain

HDR 画像の表示には、モニタの表示可能域までダイナミックレンジを圧縮する必要があり、用途に合わせてこれまで多くの圧縮手法が提案されてきました2

ダイナミックレンジ圧縮手法には、輝度に関して圧縮を行うトーマッピングと、カラーアピアランスモデルを用いるものがあります。

カラーアピアランスモデルによるレンジ圧縮手法の一つに、iCAM063 と呼ばれる手法があります。iCAM06 では、色順応や桿体や錐体の非線形応答圧縮といった輝度や色に関する視覚特性を考慮した色見えを再現可能です。しかしながら、カラーアピアランスモデルによるダイナミックレンジ圧縮は、高輝度かつ高彩色の光源が含まれる HDR 画像の場合には、圧縮結果は従来の 8 ビット画像:Low Dynamic Range 画像(LDR 画像)のレンジに収まらず、光源やその周囲に色褪せが生じてしまう問題がありました。

本研究は、有彩色照明を含むシーンで撮影されたHDR 画像の光源色を含めた色情報を、視覚特性に考慮して LDR 画像上で表現することを目的としています。そのために、カラーアピアランスモデルにおける局所順応輝度マップの生成方法を見直し、照明やその周囲などのシーンの局所領域に注視した場合の色や明るさを 1 枚の画像上に表現する方法を提案しました(図1.3、従来手法:Reinhard2012, iCAM06に対し、提案手法:ours)。

f:id:u9bo:20170330213827p:plain

そのほかの結果などは [IEICE paper] Dynamic Range Compression for Chromatic Lights

主な発表文献

  • 有彩色照明シーンの色情報を考慮したダイナミックレンジ圧縮
  • Color restoration of lighting scenes with locally adapted HDR images
    • Yuto Kubo, Takao Jinno and Shigeru Kuriyama
    • 2015 2nd International Conference on Advanced Informatics: Concepts, Theory and Applications (ICAICTA)
    • 10.1109/ICAICTA.2015.7335364
    • http://ieeexplore.ieee.org/document/7335364/
  • Restoration of color appearance by combining local adaptations for HDR images
    • Yuto Kubo, Takao Jinno and Shigeru Kuriyama
    • AIC2015, 2015.05
  • カラー照明による色彩演出の色印象再現
    • 久保雄登、神納貴生、栗山繁
    • 第13回 照明学会ヤングウェーブフォーラム,2015.03(招待講演)

参考文献


  1. Philips. Philips hue. http://www2.meethue.com/ja-jp/

  2. Erik Reinhard, GregWard, Sumanta Pattanaik, and Paul Debevec. High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting (The Morgan Kaufmann Series in Computer Graphics). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2005.

  3. Jiangtao Kuang, Garrett M. Johnson, and Mark D. Fairchild. iCAM06: A refined image appearance model for HDR image rendering. Journal of Visual Communication and Image Representation, Vol. 18, pp. 406-414, 2007.

Windows 7 のインストールディスクに Windows Update を適用して初回のアップデートを短縮してみました

概要

Windows のインストールで時間がかかる作業のひとつに、Windows Update の適用があります。 インストールディスクの版にもよりますが、初回は 100~200 個程度の更新プログラムの適用を必要とすることも少なくありません。

今回はインストールディスクに前もって更新プログラムを適用しておくことで、初回の Windows Update を短縮できないか試しました。

具体的には、インストールイメージの wim ファイルへ更新プログラムのロールアップファイルを適用します。

実施環境

対象OS

Windows 7 Professional SP1 64bit

作業PC

更新プログラムのダウンロード

以下の更新プログラムをダウンロードします。

また、IE11へアップグレートする場合は、以下の更新プログラムをダウンロードします。

作業フォルダの準備

ダウンロードしたファイルを作業フォルダにコピーします。今回は作業フォルダをC:\tmpとしました。

今後の作業に合わせて、各ファイルを以下のフォルダへコピーします。

C:\TMP
└─update
    │  IE11-Windows6.1-x64-ja-jp.exe
    │
    ├─iepre
    │      windows6.1-kb2533623-x64_8a59ea3c7378895791e6cdca38cc2ad9e83bebff.msu
    │      windows6.1-kb2670838-x64_9f667ff60e80b64cbed2774681302baeaf0fc6a6.msu
    │      windows6.1-kb2729094-v2-x64_e1a3ecc5030a51711f558f90dd1db52e24ce074b.msu
    │      windows6.1-kb2731771-x64_98dba6673cedbc2860c76b9686e895664d463347.msu
    │      windows6.1-kb2786081-x64_dc63b04c58d952d533c40b185a8b555b50d47905.msu
    │      windows6.1-kb2834140-v2-x64_3db9d9b3dc20515bf4b164821b721402e34ad9d6.msu
    │
    ├─kb3020369
    │      windows6.1-kb3020369-x64_5393066469758e619f21731fc31ff2d109595445.msu
    │
    ├─kb3125574
    │      windows6.1-kb3125574-v4-x64_2dafb1d203c8964239af3048b5dd4b1264cd93b9.msu
    │
    ├─kb3172605
    │      windows6.1-kb3172605-x64_2bb9bc55f347eee34b1454b50c436eb6fd9301fc.msu
    │
    ├─kb3177467
    │      windows6.1-kb3177467-x64_42467e48b4cfeb44112d819f50b0557d4f9bbb2f.msu
    │
    └─kb3212646
            windows6.1-kb3212646-x64_a94cf69326099fb121cdd7daf9dfc558f740afb8.msu

Internet Explorer 11 インストールファイルの解凍

Internet Explorer 11 (IE11)のインストールファイルを wim ファイルへ統合できる形へ解凍します。

C:\tmp\update\IE11-Windows6.1-x64-ja-jp.exe /x:C:\tmp\update\ie

C:\tmp\update\ieにインストールファイルが解凍されました。

作業フォルダにWindowsインストールディスクをコピー

Windows 7 のインストールDVDを挿入し、インストールファイルをコピーします。

> robocopy /E /V /DCOPY:T /A-:R D: C:\tmp\windows

ここで、

  • D: は光学トライブのドライブ
  • C:\tmp\windowsはコピー先のディレクト

です。

更新プログラムの適用

以降の作業は、「展開およびイメージング ツール環境」を管理者権限で起動して実施します。

アップデートするwindowsを確認

Windows 7 のインストールディスクには、複数のエディションのイメージファイルが含まれています。 適用するエディションのインデックス番号を次のコマンドで確認します。

今回は Professional に適用するので、インデックス: 3であることが確認できました。

> dism /Get-WimInfo /wimFile:C:\tmp\windows\sources\install.wim

展開イメージのサービスと管理ツール
バージョン: 10.0.14393.0

イメージの詳細: C:\tmp\windows\sources\install.wim

インデックス: 1
名前: Windows 7 Home Basic
説明: Windows 7 Home Basic
サイズ: 11,681,373,841 バイト

インデックス: 2
名前: Windows 7 Home Premium
説明: Windows 7 Home Premium
サイズ: 12,194,650,761 バイト

インデックス: 3
名前: Windows 7 Professional
説明: Windows 7 Professional
サイズ: 12,096,751,107 バイト

インデックス: 4
名前: Windows 7 Ultimate
説明: Windows 7 Ultimate
サイズ: 12,259,188,245 バイト

操作は正常に完了しました。

イメージファイルのマウント

> dism /mount-wim /wimfile:C:\tmp\windows\sources\install.wim /index:3 /MountDir:C:\tmp\mount

展開イメージのサービスと管理ツール
バージョン: 10.0.14393.0

イメージをマウントしています
[==========================100.0%==========================]
操作は正常に完了しました。

更新プログラムの適用

> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3020369
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3125574
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3172605
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\kb3212646
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\iepre
> dism /image:C:\tmp\mount /Add-package /packagepath:C:\tmp\update\ie

イメージのアンマウント

更新プログラムが正常に適用できたら、以下のコマンドで更新内容を保存します。

> dism /Unmount-Image /MountDir:C:\tmp\mount /commit

ここで、/commitは更新内容を保存する(commit)を示します。更新内容を破棄する場合は、 /discardを指定します。これは、更新が失敗した場合に、指定するとよいでしょう。

ISOファイルへ書き出し

> oscdimg -n -m -bc:\tmp\windows\boot\etfsboot.com c:\tmp\windows c:\tmp\win7_hotfixed.iso

動作確認

作成したインストールディスクを用いて、Windowsインストールを実施した結果、初回の更新プログラムは63個と大幅に減らすことができました(2017/3/26実施)。

参考文献

Windows 7 のカスタムインストールディスクを作成してみました

概要

前回は、Windows をネットワークストレージ経由でインストールしました。 この方法で、複数台に同時にかつ、高速にインストールできるようになりました。 ただし、この方法でインストールされる Windows はまっさらな状態です。 そのため、この後に MS-Office や、ユーティリティといった各種ソフトウェアを それぞれの PC でインストールする必要があります。

今回は、各種ソフトウェアをインストールした状態を、複数の PC に展開する方法を試してみました。 感覚的には、家電量販店などで購入できる PC のリカバリディスクのように、 様々なソフトウェアがインストールされたイメージディスクを作成すると思っていただければと思います。

エンジニア的には、開発機に各種開発環境を構築した状態でイメージを作成しておけば、 システムが不安定になった場合でも、サクッときれいな状態に戻せるのがメリットだと思います。

環境

手順

大まかに次の手順で進めていきます。

  1. Windows 7 のインストール
  2. ひな形の作成
  3. ハードウェアドライバ、ソフトウェアのインストールなど環境の構築
  4. システムの一般化
  5. コピー用イメージの作成
  6. コピー先 PC への展開

MS のこちらの記事を参考に進めました。ただし、こちらの記事ではイメージの作成に ImageX コマンドを使用しているのに対し、今回は Dism コマンドで作成してみました。

Windows 7 の標準イメージの作成: ステップバイステップ ガイド

Windows のインストール

いつもどおりに Windows をインストールします。

注意点としては、インストール時に作成するユーザアカウントは、コピーイメージの準備だけに使用します。 そのため、コピー先 PC への展開時には保持されないことに注意してください。

各種ソフトウェアのインストール

Windows のインストールが完了したら、各種ソフトウェアをインストールします。

今回は次のソフトウェアのインストールと環境設定を行いました。

システムの一般化

インストール後の Windows は、それぞれのハードウェア固有の情報を持っています。
これらの情報を削除して、他の PC に展開できるようにします。

クリーンアップ

Windows キー + R」で「ファイル名を指定して実行」を起動します。 以下のパスで、Sysprep(システム準備ツール)を起動します。

C:\Windows\System32\sysprep\sysprep.exe

Sysprep が起動したら、次の手順で監査モードに入ります。

  1. 「システム クリーンアップ アクション」 で 「システム監査モードに入る」を選択
  2. 「一般化する」にチェック
  3. 「シャットダウン オプション」で 「再起動」 を選択
  4. 「OK」を押下して、再起動

Sysprep が実施されます。

一時ユーザの削除

再起動後には、Administrator ユーザでログインされます。 次に、ソフトウェアのインストールで使用したローカルユーザ情報を削除しましょう。

  1. スタートメニューの「コンピュータ」を右クリックし、「管理」を選択
  2. 「コンピュータの管理」が起動します。「ローカルユーザーとグループ」の「ユーザ」で インストールに使用した「ユーザー」を右クリックし、「削除」を選択

一時ユーザの情報が削除されました。プロファイルも削除しておきましょう。

  1. スタートメニューの「コンピュータ」を右クリックし、「プロパティ」を選択
  2. 「システムの詳細設定」を選択
  3. 「ユーザープロファイル」の「設定」を選択
  4. 「不明なアカウント」を選択し、「削除」

これで一時ユーザのプロファイルが削除されました。

OOBE モード

Sysprep を起動して、OOBE モードに入ります。 OOBE モードに入ると、次回起動時に Windows の初期設定画面が表示されます。

Windows キー + R」で「ファイル名を指定して実行」を起動します。 以下のパスで、Sysprep(システム準備ツール)を起動します。

C:\Windows\System32\sysprep\sysprep.exe

Sysprep が起動したら、次の手順で OOBE モードに入ります。

  1. 「システム クリーンアップ アクション」 で 「システムの OOBE (Out-of-Box Experience) に入る」を選択
  2. 「一般化する」にチェック
  3. 「シャットダウン オプション」で 「シャットダウン」 を選択
  4. 「OK」を押下して、シャットダウン

これで環境に依存しない Windows が作成できました。

展開用イメージの作成

次に他の PC に展開するためのイメージを作成します。

Windows PE ディスクで Windows PE を起動します。

ネットワークストレージへ接続

今回は HDD からキャプチャしたイメージをネットワークストレージに保存するため、 ネットワークストレージに接続します。

X:\windows\system32>net use N: \\192.168.10.100\share /user:john *
\\192.168.10.100\share のパスワードを入力してください:
コマンドは正常に終了しました。

共有フォルダ(\\192.168.10.100\share)が N:\ にマウントされます。

/user:john は接続ユーザ名です。環境に合わせて変更してください。

キャプチャする HDD パーティションの確認

キャプチャするパーティションを確認します。

diskpart で確認するのがよいかと思います。

X:\windows\system32>diskpart

Microsoft DiskPart バージョン 10.0.14393.0

Copyright (C) 1999-2013 Microsoft Corporation.
コンピューター: MININT-XXXXXXX

DISKPART> list volume

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     E   DVD_ROM      UDF    DVD-ROM      444 MB  正常
  Volume 1     C   システムで予約済み    NTFS   Partition    100 MB  正常
  Volume 2     D                NTFS   Partition    126 GB  正常

DISKPART> exit

DiskPart を終了しています...

X:\windows\system32>

D: にマウントされていることが確認できました。

パーティションのキャプチャ

パーティションを確認したら、イメージファイルへキャプチャします。

Dism /Capture-Image /ImageFile:n:\original-system.wim /CaptureDir:D:\ /Name:"Original System"

n:\original-system.wim にイメージファイルが作成されました。

カスタムインストールディスクの作成

Windowsインストーラは、インストールディスクの\sources\install.wimを HDD に展開することで インストールを実現しています。これを今回作成したイメージファイルに置き換えることで、 オリジナルのイメージディスクを作成します。

作業用 PC で、Windows 7 のインストールディスク内のフォルダ、ファイルを、ネットワークストレージにまるごとコピーします。 今回は、以下の共有フォルダにコピーしました。

\\192.168.10.100\share\original-7\

先ほど作成したイメージファイルoriginal-system.wimを、install.wimにリネームし、 sourcesにコピーします。

これでカスタムインストール用のデータが作成できました。

イメージの展開

カスタムインストール用のデータが準備できたので、実際に他の PC へ展開してみましょう。

展開方法は、こちらの記事を参照いただければと思います。

9bo.hateblo.jp

通常どおりにインストールを進めたのち、再起動をすると Windows の初期設定画面が表示されます。 こちらもそのまま進めていきましょう。

f:id:u9bo:20170205135849p:plain

インストール後には、イメージ作成時にインストールしたソフトウェアが、既に存在していることが確認できます。

f:id:u9bo:20170205140129p:plain

まとめ

今回は、各種ソフトウェアをインストール済の環境を他の PC へ展開することを目的に、 カスタムイメージディスクを作成しました。

ソフトウェアのインストール、Windows Update は、イメージ作成時の一度だけ行えばよいため、 キッティング台数が多い場合に、驚異的な威力を発揮します。

今後の予定として、キャプチャしたイメージのwimファイルには、直接 Windows Update の更新データを適用できるそうです。 こちらについて、取り組んでみようと思います。

Windows をネットワークストレージ経由でインストールしてみました

概要

Windows PE を使って、Windows 7 をネットワークストレージ経由でインストールしました。

通常 Windows は、DVD や USB メモリなどのインストールメディアを使って、インストールします。そのため、一度にインストールできる台数はインストールメディアの数に限られます。

一方、ネットワークストレージを使ったインストールでは、複数台の PC からインストールメディアに アクセスできるため、同時にインストールが可能です。 また、ほとんどの環境では DVD よりもネットワークストレージのほうが、高速にアクセスできるかと 思いますので、インストール時間の短縮になります。

なお、Windows PE イメージの作成方法は、こちらの記事を参照いただければと思います。

9bo.hateblo.jp

メリットとデメリット

メリット

  • 同時に複数台のインストールが可能。
  • ネットワーク環境によっては、インストール時間の短縮。

デメリット

  • ネットワーク環境が必須。ネットワーク内に DHCP サーバが存在することが望ましい。
  • ネットワークストレージ(NAS)が必要。

用意するもの

手順

インストールメディアのコピー

作業用 PC で、インストールメディア内のフォルダ、ファイルを、ネットワークストレージにまるごとコピーします。 今回は、以下の共有フォルダにコピーしました。

\\192.168.10.100\share\7x64\

Windows PE で起動

インストール対象の PC で、Windows PE ディスクを使って起動します。 起動が完了すると、コマンドプロンプトが表示されるかと思います。

f:id:u9bo:20170129000022p:plain

ネットワークストレージへのアクセス

まず、ネットワークに接続されていることを確認しましょう。

>ipconfig

Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .: xxxx
   IPv4 アドレス . . . . . . . . . . . .: 192.168.10.50
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: 192.168.10.1

DHCP サーバから IP アドレスが割り当てられていることを確認します。 DHCP サーバが存在しない環境では、ここで IP アドレスの設定が必要です(今回は割愛します)。

次に、ネットワークストレージへアクセスしましょう

>net use N: \\192.168.10.100\share /user:john *
\\192.168.10.100\share のパスワードを入力してください:
コマンドは正常に終了しました。

共有フォルダ(\\192.168.10.100\share)が N:\ にマウントされます。

/user:john は接続ユーザ名です。環境に合わせて変更してください。

Windows インストーラの起動

Windowsインストーラを起動します。

>N:\7x64\setup.exe

f:id:u9bo:20170204153154p:plain

インストーラが起動しました。あとは、通常と同じようにインストールを進めれば完了です。

f:id:u9bo:20170204153245p:plain

以前、同様な手順で複数台の PC に対して同時にインストールした際には、 Gigabit Ethernet 環境だったということもあり、全体でみると、通常の半分程度の時間で インストールが完了しました。

f:id:u9bo:20170204160646j:plain

まとめ

今回は、ネットワークストレージを使って Windows のインストールを行いました。 難易度は高くなく手軽に実施できるかと思います。

Windows PE は、起動時にシステムファイルが RAM ドライブ(メモリ)に展開されますので、 Windows PE の起動後はディスクを取り外してしまっても問題ありません。 ですので、複数の PC に対して、流れ作業でインストールを行うことができます。

また、Windows PE は PXE でのブートも可能ですので、PXE ブート可能な環境を構築すれば、 Windows PE のディスクを用意する必要なくインストールができるようになります。 こちらについては、今後取り組んでみようと思います。

Windows PE for Windows 10 イメージを作成してみた

概要

Windows PE for Windows 10 イメージを作成してみました。 Windows PE(Windows Preinstallation Environment)は、USBメモリやDVDから起動可能な計量版 Windows で、ローカル環境の Windows が起動しない場合のバックアップや特殊環境での Windows のインストール時などで重宝します。

環境

手順

生成手順をバッチファイルにまとめたので、こちらを見ていただいたほうがわかりやすいかもしれません。

github.com

続きを読む