SFCとDISMの違い

SFC

https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/sfc

>保護されているすべてのシステムファイルをスキャンして整合性を確認し、不正なバージョンを正しいバージョンに置き換えます。このコマンドは、保護されたファイルが上書きされたことを発見した場合、%systemroot%\system32\dllcacheフォルダーから正しいバージョンのファイルを取得し、不正なファイルを置き換えます。

Win10では、
%systemroot%\system32\dllcache
は存在せず、
%systemroot%\WinSxS\Backup
を利用している模様。

・WRP(Windows Resource Protection)
https://docs.microsoft.com/ja-jp/windows/win32/wfp/protected-file-list
>WRPはWindowsの再起動に必要なファイルを%systemroot%\WinSxS\Backupにあるcacheディレクトリにコピーします。

・WFP(ファイル保護機能)
https://support.microsoft.com/kb/222193/ja
WFPは古く現在はWRPになっている。

DISM

https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options

オプションは、
DISM /?

にて確認できる。

Dism /Online /Cleanup-Image /RestoreHealth

/Online
実行中のOSを対象にする。
(ここをImageとするとオフラインイメージが対象)

ここではイメージ=Windowsであり(さらにWindowsの中のコンポーネントストア)と考えると分かりやすい。オフラインの場合は、WIM、VHD 、FFU等。

/Cleanup-Image
イメージ(対象)に対してクリーンアップ操作または回復操作を実行する。

/RestoreHealth
イメージ(対象)をスキャンしてコンポーネント ストアの破損の有無を確認し、修復操作を自動的に実行する。

修復操作に利用する修復ソースの既定はWindowsUpdateだが、
/LimitAccess
を指定するとWindowsUpdateに接続できない。

DISMの修復ソース

https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/configure-a-windows-repair-source

WindowsUpdateかファイルが修復ソースとなり、グループポリシーで優先を指定できる。(既定はWindowsUpdate)

修復ソースにファイルを指定する場合、
Dism /Online /Cleanup-Image /RestoreHealth /Source:xxx

・優先の指定

>gpedit.msc
コンピューターの構成>管理用テンプレート>システム>オプション コンポーネントのインストールおよびコンポーネントの修復のための設定を指定する
・Windows Server Update Services (WSUS)の … 直接ダウンロードする。
を指定する。

適用
gpupdate /force

修復ソースの優先をWindowsUpdate+オフラインにて、
Dism /Online /Cleanup-Image /RestoreHealth
を実行してもエラーがなければ問題なく終了する。コンポーネントストアに不具合が見つかったタイミングでWindowsUpdateに接続するらしい。

コンポーネントストアとは

https://docs.microsoft.com/ja-jp/windows-hardware/manufacture/desktop/manage-the-component-store

パス
%systemroot%\WinSxS

 

Chrome拡張機能 Google検索にfavicon2

Chrome拡張機能 Google検索にfavicon

あまりjQueryを聞かなくなったので。脱jQuery版。

C# Timer 一定間隔実行

一定間隔で実行する実験

Docker MySQL, SQL Server

MySQL

・構成

dockerfile
my.cnf

・dockerfile

FROM mysql:8.0
ENV MYSQL_ROOT_PASSWORD passw0rd!
ADD my.cnf /etc/mysql/conf.d/my.cnf

・my.cnf

[mysqld]
character-set-server=utf8

・実行

docker build . -t mysql8
docker run -d –name mysql8 -p 49152:3306 mysql8

SQL Server

・構成

dockerfile

・dockerfile

FROM mcr.microsoft.com/mssql/server:2019-latest
ENV ACCEPT_EULA=Y
ENV SA_PASSWORD=passw0rd!
ENV MSSQL_PID=Express
ENV MSSQL_LCID=1041
ENV MSSQL_COLLATION=Japanese_CI_AS

・実行

docker build . -t mssql2019
docker run –name mssql2019 -d -p 49153:1433 mssql2019

Chrome拡張機能 不要なタブを閉じる

特定の文字列を含むタブ+右側のタブをショートカットで閉じる。

Chromeのタブ操作はほぼショートカットなのだけど、使用頻度の高い「右側のタブを閉じる」だけマウス操作になってしまっており不便だった。

manifest.json

script.js

AutoHotkeyから呼び出して利用中。

Chrome拡張機能 タブのタイトル取得

アイコンをクリックして実行するタイプ

manifest.json

script.js

アクティブなウィンドウだけの場合

 

VBA 値が含まれる行をコピー

全シートを対象に値が含まれる行をコピー

 

Dockerfile / DockerCompose メモ

Dockerfileファイル命令

FROM:
ベースイメージの設定

MAINTAINER:
製作者

ENV:
環境変数
コンテナ用の環境変数

ARG:
環境変数
ビルド用(Dockerfile内)一時的な環境変数

WORKDIR:
作業ディレクトリ

RUN:
コマンド実行(イメージ作成時)

CMD:
コマンド実行(コンテナ実行時)

EXPOSE:
ポート解放
(docker run -p のみでポートは開く)

USER:
ユーザー切り替え

Dockerコマンド

ビルド:
ベースイメージに対して機能を加えて独自のイメージを作り出す

docker build . -t イメージ名
カレントディレクトリのdockerfileを参照
tオプションで名前を指定する。

コンテナ実行:
docker run イメージ名

DockerCompose.yml命令

設定値は「:」
文字列は「’」「”」
複数の値は「-」
コメントは「#」

Docker Compoesごとに独立したネットワークになる。

version:
バージョン

services:
コンテナの名前定義

volumes:
コンテナが利用するボリューム定義

networks:
コンテナが利用するネットワーク定義

・サービスの命令

iamge
利用するイメージを指定する。

Dockerfileを利用する場合、build
(ymlから相対パスで指定)

volumes
ホスト:コンテナと記述する。

restart
docker run -d –restart
と同じ

depends_on
compose up/down
したときに指定したサービスが先に起動/終了するようになる。

environment
環境変数設定。

ports
ポートマッピング(ホスト:コンテナ)
(docker run -p xxx:xxxと同じ)

tty
docker run -it
の-tにあたる設定。

Volumes

バインドとボリュームがある。
ボリュームの場合、dockerエンジンの管理領域に永続化ストレージができる。

・ボリュームマウント

volumes:
 db_data:

ボリューム(パス指定のみ)
services:
 wordpress:
  volumes:
   - /var/www/html

WSLでの位置
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\ランダム\_data

名前付きボリューム
services:
 wordpress:
  volumes:
   - aaa:/var/www/html
volumes:
 aaa:

WSLでの位置
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\wordpressfolder_aaa\_data

・バインド

services:
 wordpress:
  volumes:
   - ./html:/var/www/html

.はdocker-compose.ymlのあるパスを指す。

WindowsのDockerDesktopの場合、
– C:\Users\mail\Desktop\html:/var/www/html
のように指定することもできる。
(~を利用するとWindowsからパスが見えなくなる)

WordPressを実行してみる

Win10でGUIのDockerDesktopを利用。

・docker-compose.yml作成

適当なフォルダを作成し、その中に、
docker-compose.yml
を作成する。
(フォルダ名がContainer/Apps名になる)

・Volumes,Containers/Apps作成

作成したフォルダに移動し、
docker-compose up -d
を実行する。

・docker-compose.ymlを修正した場合

Volumes,Containers/Appsをクリアしてコマンドを再実行する。
(docker-compose.ymlの場所を変えれば別のVolumes,Containers/Appsとして作成される)

・ブラウザのアクセス

http://localhost:8000

・エクスプローラのアクセス
(パス指定のみした場合のボリューム)

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

・シェルのアクセス

docker ps
一覧を確認する。

docker exec -it wordpress1-wordpress-1 /bin/bash
接続する。

exit
終了する。

・未使用ボリューム一括削除

docker volume prune

Mattermostを実行してみる

git config –global core.autocrlf input
WSLで利用する場合、Winでcloneすると改行コードが変換されてしまうため。

確認
git config core.autocrlf

・評価版の場合

docker run –name mattermost-preview -d –publish 8065:8065 mattermost/mattermost-preview

***

本番の場合

・クローン

https://github.com/mattermost/mattermost-docker.git

・docker-compse.yamlを編集

args:
– edition=team
のコメントを外す。

・コンテナ作成

docker-compose up -d

Apache/MySQL/PHPを実行してみる

・フォルダ構成

php7.2-apache
└dockerfile
docker-compose.yml

・Dockerfile

FROM php:7.2-apache
RUN docker-php-ext-install pdo_mysql

・コマンド

docker-compose.ymlでビルドされるが、
もし単体でDockerfileをビルドする場合、
docker build . -t php7.2

・docker-compose.yml

・コマンド

docker-compose up -d

・イメージの名前を指定する場合

services:
 fuga:
  build: ここでdockerfileのフォルダ名
  image: 付けたい名前
(pullはされない)

コマンドで実行

ほぼDockerDesktopで作業しているが一部コマンドでやる場合。

・イメージ取得

プル
docker pull node

一覧
docker images

・コンテナ作成

(docker run [オプション] image [コマンド])
docker run -it –name container -p 81:80 -v C:\Users\mail\Desktop\test:/home node /bin/bash

–rm 利用後コンテナ削除
–name 作成するコンテナに名前をつける
-it 中に入れる
-d バックグラウンドで起動
-p ポートマッピング
-v バインド(ホスト:コンテナ)
ここでのコマンドは/bin/bashとなる。最初に実行するコマンド。

 

AutoHotkey Chromeウィンドウサイズ変更

最小/最大は通常サイズへ。通常サイズは最大へ。

 

DockerDesktop用Hyper-V の設定

DockerDesktopを実行している環境はHOME

optionalfeatures
を実行すると、下記の通り似た名前がでてくる。

・仮想マシンプラットフォーム
Hyper-Vのコア部分

・Windowsハイパーバイザープラットフォーム
VirtualBoxなど(Type2)の仮想化ソフトをHyper-V経由で使えるようにする。

・Linux用Windowsサブシステム
WSL

***

仮想マシンプラットフォームはHyper-Vとは違いHOMEでも有効になっており、WSLなど他の機能からも利用されている。

・確認方法

bcdedit /enum {current}
を実行し、
hypervisorlaunchtype
を確認し、Autoの場合、仮想マシンプラットフォームが起動している。

・停止
bcdedit /set hypervisorlaunchtype off
・有効
bcdedit /set hypervisorlaunchtype auto

VirtualBoxとの共存させる場合、仮想マシンプラットフォームを停止すると起動できる。

・フォーマット

OVA:オープンフォーマット
VDI:VirtualBox
VHD/VHDX:Microsoft
VMDK:VMware

・VDIからVHDの変換

“C:\Program FIles\oracle\VirtualBox\VBoxManage.exe” clonemedium disk “MSEdge – Win10-disk001.vdi” Win10.vhd -format VHD