夢見るエンジニアの肥溜めブログ

エンジニアである私の技術日記でございます。インターネッツという大海原にクソみたいな投稿を繰り返すのは申し訳なく思い、インターネットの片隅に肥溜めを配置しました。非常に環境に優しいブログです。

【Cloud9】Amazon Cloud9 初期設定、導入済みソフトェア/パッケージ

Cloud9の初期設定と、初期導入済みパッケージについて、自身のメモとパッケージのバージョン管理も兼ねて記します。

前提

以下をIAMアカウントを参考に登録を実施します。
https://qiita.com/tu-kun/items/d7b4f1fa19cc93bc5b75

【留意点】
- IAMアカウントを個別で作成し、再ログインする際のアカウント情報に注意
- アカウントはメールアドレスではなく、アカウントID(12桁の数字)
- IAMユーザ設定画面にログイン用のURLが記載されているので、そのリンクを踏めば、アカウントIDは自動入力される

環境情報の確認

デプロイされたCloud9環境の状態を確認します。
基本的なミドルウェアはインストール済みですが、必要に応じて自身でアップグレードする必要があります。

環境情報および環境情報取得コマンドを以下に記載します。

【導入済み主要コンポーネントのバージョン】
※2019年1月12日時点

コンポーネント名 バージョン 確認コマンド
OSカーネル Linux version 4.14.77-70.82.amzn1.x86_64 cat /proc/version
Apache 2.4.34 httpd -v
MySQL 14.14 Distrib 5.5.62 mysql --version
sqlite3 3.7.17 2013-05-20 sqlite3 -version
Git 2.14.5 git --version
Subversion 1.9.7 svn --version --quiet
Ruby 2.4.1p111 (2017-03-22 revision 58053) ruby -v
Ruby on Rails 5.2.2 rails -v
Node.js v6.15.1 node -v
Python2系 2.7.15 python -V
Python3系 3.6.5 python3 --version
PHP 5.6.38-1.140 php -v
Go 1.10.6 go version

【導入済みパッケージ一覧】

パッケージ一覧を開く ※出力結果が長いのでご注意ください。

$ rpm -qa | sort

acl-2.2.49-6.11.amzn1.x86_64
acpid-2.0.19-6.7.amzn1.x86_64
alsa-lib-1.0.22-3.9.amzn1.x86_64
amazon-ssm-agent-2.3.274.0-1.amzn1.x86_64
apr-1.5.2-5.13.amzn1.x86_64
apr-util-1.5.4-6.18.amzn1.x86_64
at-3.1.10-48.15.amzn1.x86_64
attr-2.4.46-12.10.amzn1.x86_64
audit-2.6.5-3.28.amzn1.x86_64
audit-libs-2.6.5-3.28.amzn1.x86_64
authconfig-6.2.8-30.31.amzn1.x86_64
autoconf-2.69-11.9.amzn1.noarch
automake-1.13.4-3.15.amzn1.noarch
aws-amitools-ec2-1.5.13-0.2.amzn1.noarch
aws-apitools-as-1.0.61.6-1.0.amzn1.noarch
aws-apitools-common-1.1.0-1.9.amzn1.noarch
aws-apitools-ec2-1.7.3.0-1.0.amzn1.noarch
aws-apitools-elb-1.0.35.0-1.0.amzn1.noarch
aws-apitools-mon-1.0.20.0-1.0.amzn1.noarch
aws-cfn-bootstrap-1.4-30.21.amzn1.noarch
aws-cli-1.15.83-1.49.amzn1.noarch
basesystem-10.0-4.9.amzn1.noarch
bash-4.2.46-28.37.amzn1.x86_64
bc-1.06.95-1.10.amzn1.x86_64
bind-libs-9.8.2-0.68.rc1.58.amzn1.x86_64
bind-utils-9.8.2-0.68.rc1.58.amzn1.x86_64
binutils-2.25.1-31.base.66.amzn1.x86_64
bison-2.7-4.11.amzn1.x86_64
bzip2-1.0.6-8.12.amzn1.x86_64
bzip2-libs-1.0.6-8.12.amzn1.x86_64
bzr-common-2.6.0-8.17.amzn1.noarch
bzr-python27-2.6.0-8.17.amzn1.x86_64
ca-certificates-2017.2.14-65.0.1.17.amzn1.noarch
checkpolicy-2.1.10-1.9.amzn1.x86_64
chkconfig-1.3.49.3-2.14.amzn1.x86_64
cloud-disk-utils-0.27-1.5.amzn1.noarch
cloud-init-0.7.6-2.17.amzn1.noarch
compat-libicu4-4.2.1-9.14.amzn1.x86_64
copy-jdk-configs-3.3-10.3.amzn1.noarch
coreutils-8.22-15.52.amzn1.x86_64
cpio-2.10-12.12.amzn1.x86_64
cpp48-4.8.5-28.142.amzn1.x86_64
cracklib-2.8.16-4.14.amzn1.x86_64
cracklib-dicts-2.8.16-4.14.amzn1.x86_64
cronie-1.4.4-15.8.amzn1.x86_64
cronie-anacron-1.4.4-15.8.amzn1.x86_64
crontabs-1.10-33.9.amzn1.noarch
cryptsetup-1.6.7-1.22.amzn1.x86_64
cryptsetup-libs-1.6.7-1.22.amzn1.x86_64
curl-7.53.1-16.85.amzn1.x86_64
cvs-1.11.23-16.9.amzn1.x86_64
cvsps-2.2-0.6.b1.4.amzn1.x86_64
cyrus-sasl-2.1.23-13.16.amzn1.x86_64
cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64
cyrus-sasl-plain-2.1.23-13.16.amzn1.x86_64
dash-0.5.5.1-4.5.amzn1.x86_64
db4-4.7.25-18.11.amzn1.x86_64
db4-utils-4.7.25-18.11.amzn1.x86_64
dbus-1.6.12-14.28.amzn1.x86_64
dbus-libs-1.6.12-14.28.amzn1.x86_64
dejavu-fonts-common-2.33-6.6.amzn1.noarch
dejavu-sans-fonts-2.33-6.6.amzn1.noarch
dejavu-sans-mono-fonts-2.33-6.6.amzn1.noarch
dejavu-serif-fonts-2.33-6.6.amzn1.noarch
device-mapper-1.02.135-1.31.amzn1.x86_64
device-mapper-event-1.02.135-1.31.amzn1.x86_64
device-mapper-event-libs-1.02.135-1.31.amzn1.x86_64
device-mapper-libs-1.02.135-1.31.amzn1.x86_64
device-mapper-persistent-data-0.6.3-1.11.amzn1.x86_64
dhclient-4.1.1-53.P1.28.amzn1.x86_64
dhcp-common-4.1.1-53.P1.28.amzn1.x86_64
diffutils-3.3-4.15.amzn1.x86_64
dmraid-1.0.0.rc16-11.8.amzn1.x86_64
dmraid-events-1.0.0.rc16-11.8.amzn1.x86_64
docker-18.06.1ce-5.22.amzn1.x86_64
dracut-004-409.31.amzn1.noarch
dracut-modules-growroot-0.20-1.5.amzn1.noarch
dump-0.4-0.6.b42.7.amzn1.x86_64
e2fsprogs-1.43.5-2.43.amzn1.x86_64
e2fsprogs-libs-1.43.5-2.43.amzn1.x86_64
ec2-hibinit-agent-1.0.0-2.0.0.amzn1.noarch
ec2-net-utils-0.5-2.35.amzn1.noarch
ec2-utils-0.5-2.35.amzn1.noarch
ed-1.1-3.3.8.amzn1.x86_64
elfutils-libelf-0.168-8.19.amzn1.x86_64
emacs-24.3-20.22.amzn1.x86_64
emacs-common-24.3-20.22.amzn1.x86_64
emacs-git-2.14.5-1.60.amzn1.noarch
epel-release-6-8.9.amzn1.noarch
ethtool-3.15-2.27.amzn1.x86_64
expat-2.1.0-10.21.amzn1.x86_64
file-5.30-11.34.amzn1.x86_64
file-libs-5.30-11.34.amzn1.x86_64
filesystem-2.4.30-3.8.amzn1.x86_64
findutils-4.4.2-6.9.amzn1.x86_64
fipscheck-1.3.1-3.13.amzn1.x86_64
fipscheck-lib-1.3.1-3.13.amzn1.x86_64
fontconfig-2.8.0-5.8.amzn1.x86_64
fontpackages-filesystem-1.41-1.1.2.amzn1.noarch
freetype-2.3.11-15.14.amzn1.x86_64
fuse-libs-2.9.4-1.17.amzn1.x86_64
gawk-3.1.7-10.10.amzn1.x86_64
gcc-4.8.5-1.22.amzn1.noarch
gcc-c++-4.8.5-1.22.amzn1.noarch
gcc48-4.8.5-28.142.amzn1.x86_64
gcc48-c++-4.8.5-28.142.amzn1.x86_64
gdb-7.6.1-64.33.amzn1.x86_64
gdb-gdbserver-7.6.1-64.33.amzn1.x86_64
gdbm-1.8.0-36.6.amzn1.x86_64
gdisk-0.8.10-1.5.amzn1.x86_64
generic-logos-17.0.0-2.5.amzn1.noarch
get_reference_source-1.2-0.4.amzn1.noarch
giflib-4.1.6-3.1.6.amzn1.x86_64
git-2.14.5-1.60.amzn1.x86_64
git-all-2.14.5-1.60.amzn1.noarch
git-cvs-2.14.5-1.60.amzn1.noarch
git-email-2.14.5-1.60.amzn1.noarch
git-p4-2.14.5-1.60.amzn1.noarch
git-svn-2.14.5-1.60.amzn1.x86_64
glib2-2.36.3-5.18.amzn1.x86_64
glibc-2.17-260.175.amzn1.x86_64
glibc-common-2.17-260.175.amzn1.x86_64
glibc-devel-2.17-260.175.amzn1.x86_64
glibc-headers-2.17-260.175.amzn1.x86_64
gmp-6.0.0-11.16.amzn1.x86_64
gnupg2-2.0.28-2.33.amzn1.x86_64
gnutls-2.12.23-21.18.amzn1.x86_64
golang-1.10.6-1.47.amzn1.x86_64
golang-bin-1.10.6-1.47.amzn1.x86_64
golang-src-1.10.6-1.47.amzn1.noarch
gpg-pubkey-0608b895-4bd22942
gpg-pubkey-21c0f39f-56d0e29a
gpgme-1.4.3-5.15.amzn1.x86_64
gpm-libs-1.20.6-12.8.amzn1.x86_64
grep-2.20-3.18.amzn1.x86_64
groff-1.22.2-8.11.amzn1.x86_64
groff-base-1.22.2-8.11.amzn1.x86_64
grub-0.97-94.30.amzn1.x86_64
grubby-7.0.15-7.8.amzn1.x86_64
gyp-0.1-0.6.1010svn.5.amzn1.noarch
gzip-1.5-9.19.amzn1.x86_64
hesiod-3.1.0-19.6.amzn1.x86_64
hibagent-1.0.0-3.amzn1.noarch
hmaccalc-0.9.12-1.9.amzn1.x86_64
http-parser-2.0-3.20121128gitcd01361.3.amzn1.x86_64
http-parser-devel-2.0-3.20121128gitcd01361.3.amzn1.x86_64
httpd24-2.4.34-1.82.amzn1.x86_64
httpd24-tools-2.4.34-1.82.amzn1.x86_64
hwdata-0.233-14.1.19.amzn1.noarch
info-5.1-4.10.amzn1.x86_64
initscripts-9.03.58-1.39.amzn1.x86_64
iproute-4.4.0-3.23.amzn1.x86_64
iptables-1.4.18-1.22.amzn1.x86_64
iputils-20121221-7.13.amzn1.x86_64
irqbalance-1.5.0-1.27.amzn1.x86_64
java-1.7.0-openjdk-1.7.0.201-2.6.16.0.78.amzn1.x86_64
java-1.7.0-openjdk-devel-1.7.0.201-2.6.16.0.78.amzn1.x86_64
javapackages-tools-0.9.1-1.5.amzn1.noarch
jpackage-utils-1.7.5-27.17.amzn1.noarch
kbd-1.15-11.4.amzn1.x86_64
kbd-misc-1.15-11.4.amzn1.noarch
kernel-4.14.77-70.59.amzn1.x86_64
kernel-4.14.77-70.82.amzn1.x86_64
kernel-headers-4.14.77-70.82.amzn1.x86_64
kernel-tools-4.14.77-70.82.amzn1.x86_64
keyutils-1.5.8-3.12.amzn1.x86_64
keyutils-libs-1.5.8-3.12.amzn1.x86_64
keyutils-libs-devel-1.5.8-3.12.amzn1.x86_64
kmod-14-10.10.amzn1.x86_64
kmod-libs-14-10.10.amzn1.x86_64
kpartx-0.4.9-72.8.amzn1.x86_64
krb5-devel-1.15.1-19.43.amzn1.x86_64
krb5-libs-1.15.1-19.43.amzn1.x86_64
lcms2-2.6-2.5.amzn1.x86_64
less-436-13.12.amzn1.x86_64
libacl-2.2.49-6.11.amzn1.x86_64
libaio-0.3.109-12.8.amzn1.x86_64
libassuan-2.0.3-3.3.amzn1.x86_64
libattr-2.4.46-12.10.amzn1.x86_64
libblkid-2.23.2-33.28.amzn1.x86_64
libcap-2.16-5.5.8.amzn1.x86_64
libcap-ng-0.7.5-4.15.amzn1.x86_64
libcgroup-0.40.rc1-5.11.amzn1.x86_64
libcom_err-1.43.5-2.43.amzn1.x86_64
libcom_err-devel-1.43.5-2.43.amzn1.x86_64
libcurl-7.53.1-16.85.amzn1.x86_64
libedit-2.11-4.20080712cvs.1.6.amzn1.x86_64
libevent-2.0.21-4.19.amzn1.x86_64
libffi-3.0.13-16.5.amzn1.x86_64
libffi-devel-3.0.13-16.5.amzn1.x86_64
libfontenc-1.0.5-2.6.amzn1.x86_64
libgcc48-4.8.5-28.142.amzn1.x86_64
libgcc72-7.2.1-2.59.amzn1.x86_64
libgcrypt-1.5.3-12.19.amzn1.x86_64
libgomp-6.4.1-1.45.amzn1.x86_64
libgpg-error-1.11-1.12.amzn1.x86_64
libgssglue-0.1-11.7.amzn1.x86_64
libICE-1.0.6-1.4.amzn1.x86_64
libicu-50.1.2-11.12.amzn1.x86_64
libidn-1.18-2.8.amzn1.x86_64
libidn2-0.16-1.2.amzn1.x86_64
libjpeg-turbo-1.2.90-5.14.amzn1.x86_64
libkadm5-1.15.1-19.43.amzn1.x86_64
libmount-2.23.2-33.28.amzn1.x86_64
libmpc-1.0.1-3.3.amzn1.x86_64
libnfsidmap-0.25-11.10.amzn1.x86_64
libnghttp2-1.21.1-1.4.amzn1.x86_64
libnih-1.0.1-7.8.amzn1.x86_64
libnl-1.1.4-2.10.amzn1.x86_64
libpipeline-1.2.3-3.3.amzn1.x86_64
libpng-1.2.49-2.14.amzn1.x86_64
libpsl-0.6.2-1.2.amzn1.x86_64
libpwquality-1.2.3-4.8.amzn1.x86_64
libseccomp-2.3.1-2.4.amzn1.x86_64
libselinux-2.1.10-3.22.amzn1.x86_64
libselinux-devel-2.1.10-3.22.amzn1.x86_64
libselinux-utils-2.1.10-3.22.amzn1.x86_64
libsemanage-2.1.6-3.13.amzn1.x86_64
libsepol-2.1.7-3.12.amzn1.x86_64
libsepol-devel-2.1.7-3.12.amzn1.x86_64
libserf-1.3.7-1.7.amzn1.x86_64
libSM-1.2.1-2.6.amzn1.x86_64
libss-1.43.5-2.43.amzn1.x86_64
libssh2-1.4.2-2.13.amzn1.x86_64
libstdc++48-4.8.5-28.142.amzn1.x86_64
libstdc++72-7.2.1-2.59.amzn1.x86_64
libsysfs-2.1.0-7.10.amzn1.x86_64
libtasn1-2.3-6.6.amzn1.x86_64
libtirpc-0.2.4-0.8.14.amzn1.x86_64
libtool-2.4.2-20.4.8.5.32.amzn1.x86_64
libtool-ltdl-2.4.2-20.4.8.5.32.amzn1.x86_64
libudev-173-4.13.amzn1.x86_64
libunistring-0.9.3-6.1.amzn1.x86_64
libuser-0.60-7.23.amzn1.x86_64
libutempter-1.1.5-4.1.6.amzn1.x86_64
libuuid-2.23.2-33.28.amzn1.x86_64
libuv-0.10.34-1.el6.x86_64
libuv-devel-0.10.34-1.el6.x86_64
libverto-0.2.5-4.9.amzn1.x86_64
libverto-devel-0.2.5-4.9.amzn1.x86_64
libX11-1.6.0-2.2.12.amzn1.x86_64
libX11-common-1.6.0-2.2.12.amzn1.x86_64
libXau-1.0.6-4.9.amzn1.x86_64
libxcb-1.11-2.21.amzn1.x86_64
libXcomposite-0.4.3-4.6.amzn1.x86_64
libXext-1.3.2-2.1.10.amzn1.x86_64
libXfont-1.4.5-5.12.amzn1.x86_64
libXi-1.7.2-2.2.9.amzn1.x86_64
libxml2-2.9.1-6.3.52.amzn1.x86_64
libxml2-python27-2.9.1-6.3.52.amzn1.x86_64
libXrender-0.9.8-2.1.9.amzn1.x86_64
libxslt-1.1.28-5.12.amzn1.x86_64
libXtst-1.2.2-2.1.9.amzn1.x86_64
libyaml-0.1.6-6.7.amzn1.x86_64
libyaml-devel-0.1.6-6.7.amzn1.x86_64
logrotate-3.7.8-26.14.amzn1.x86_64
lsof-4.82-5.11.amzn1.x86_64
lua-5.1.4-4.1.9.amzn1.x86_64
lvm2-2.02.166-1.31.amzn1.x86_64
lvm2-libs-2.02.166-1.31.amzn1.x86_64
m4-1.4.16-9.10.amzn1.x86_64
mailcap-2.1.31-2.7.amzn1.noarch
make-3.82-21.10.amzn1.x86_64
man-db-2.6.3-9.3.amzn1.x86_64
man-pages-4.10-2.16.amzn1.noarch
mdadm-3.2.6-7.32.amzn1.x86_64
mercurial-common-4.2.3-1.30.amzn1.x86_64
mercurial-python27-4.2.3-1.30.amzn1.x86_64
mingetty-1.08-5.9.amzn1.x86_64
mpfr-3.1.1-4.14.amzn1.x86_64
mysql-config-5.5.62-1.23.amzn1.x86_64
mysql55-5.5.62-1.23.amzn1.x86_64
mysql55-libs-5.5.62-1.23.amzn1.x86_64
mysql55-server-5.5.62-1.23.amzn1.x86_64
nano-2.5.3-1.19.amzn1.x86_64
nc-1.84-24.8.amzn1.x86_64
ncurses-5.7-4.20090207.14.amzn1.x86_64
ncurses-base-5.7-4.20090207.14.amzn1.x86_64
ncurses-devel-5.7-4.20090207.14.amzn1.x86_64
ncurses-libs-5.7-4.20090207.14.amzn1.x86_64
net-tools-1.60-110.10.amzn1.x86_64
newt-0.52.11-3.11.amzn1.x86_64
newt-python27-0.52.11-3.11.amzn1.x86_64
nfs-utils-1.3.0-0.21.amzn1.x86_64
node-gyp-0.10.6-2.el6.noarch
nodejs-0.10.48-3.el6.x86_64
nodejs-abbrev-1.0.4-6.el6.noarch
nodejs-ansi-0.2.1-1.el6.noarch
nodejs-archy-0.0.2-8.el6.noarch
nodejs-asn1-0.1.11-3.el6.noarch
nodejs-assert-plus-0.1.4-1.el6.noarch
nodejs-async-0.2.10-1.el6.noarch
nodejs-aws-sign-0.3.0-1.el6.noarch
nodejs-block-stream-0.0.7-1.el6.noarch
nodejs-boom-0.4.2-2.el6.noarch
nodejs-child-process-close-0.1.1-2.el6.noarch
nodejs-chmodr-0.1.0-4.el6.noarch
nodejs-chownr-0.0.1-9.el6.noarch
nodejs-cmd-shim-1.1.0-3.el6.noarch
nodejs-combined-stream-0.0.4-3.el6.noarch
nodejs-config-chain-1.1.7-1.el6.noarch
nodejs-cookie-jar-0.3.0-1.el6.noarch
nodejs-cryptiles-0.2.2-1.el6.noarch
nodejs-ctype-0.5.3-3.el6.noarch
nodejs-delayed-stream-0.0.5-5.el6.noarch
nodejs-devel-0.10.48-3.el6.x86_64
nodejs-editor-0.0.4-2.el6.noarch
nodejs-forever-agent-0.5.0-1.el6.noarch
nodejs-form-data-0.1.1-1.el6.noarch
nodejs-fstream-0.1.24-1.el6.noarch
nodejs-fstream-ignore-0.0.7-1.el6.noarch
nodejs-fstream-npm-0.1.5-1.el6.noarch
nodejs-github-url-from-git-1.1.1-2.el6.noarch
nodejs-glob-3.2.6-1.el6.noarch
nodejs-graceful-fs-2.0.0-2.el6.noarch
nodejs-hawk-1.0.0-1.el6.noarch
nodejs-hoek-0.9.1-1.el6.noarch
nodejs-http-signature-0.10.0-3.el6.noarch
nodejs-inherits-2.0.0-4.el6.noarch
nodejs-ini-1.1.0-3.el6.noarch
nodejs-init-package-json-0.0.10-1.el6.noarch
nodejs-json-stringify-safe-5.0.0-1.el6.noarch
nodejs-lockfile-0.4.2-1.el6.noarch
nodejs-lru-cache-2.3.0-3.el6.noarch
nodejs-mime-1.2.11-1.el6.noarch
nodejs-minimatch-0.2.12-2.el6.noarch
nodejs-mkdirp-0.3.5-3.el6.noarch
nodejs-mute-stream-0.0.4-1.el6.noarch
nodejs-node-uuid-1.4.1-1.el6.noarch
nodejs-nopt-2.1.2-1.el6.noarch
nodejs-normalize-package-data-0.2.1-1.el6.noarch
nodejs-npm-registry-client-0.2.28-3.el6.noarch
nodejs-npm-user-validate-0.0.3-1.el6.noarch
nodejs-npmconf-0.1.2-1.el6.noarch
nodejs-npmlog-0.0.4-1.el6.noarch
nodejs-oauth-sign-0.3.0-1.el6.noarch
nodejs-once-1.1.1-5.el6.noarch
nodejs-opener-1.3.0-7.el6.noarch
nodejs-osenv-0.0.3-5.el6.noarch
nodejs-packaging-7-1.el6.noarch
nodejs-promzard-0.2.0-6.el6.noarch
nodejs-proto-list-1.2.2-5.el6.noarch
nodejs-qs-0.6.6-3.el6.noarch
nodejs-read-1.0.5-1.el6.noarch
nodejs-read-installed-0.2.4-1.el6.noarch
nodejs-read-package-json-1.1.3-1.el6.noarch
nodejs-request-2.25.0-3.el6.noarch
nodejs-retry-0.6.0-5.el6.noarch
nodejs-rimraf-2.2.2-1.el6.noarch
nodejs-semver-2.1.0-1.el6.noarch
nodejs-sha-1.2.1-1.el6.noarch
nodejs-sigmund-1.0.0-5.el6.noarch
nodejs-slide-1.1.5-1.el6.noarch
nodejs-sntp-0.2.4-1.el6.noarch
nodejs-tar-0.1.18-1.el6.noarch
nodejs-tunnel-agent-0.3.0-1.el6.noarch
nodejs-uid-number-0.0.3-7.el6.noarch
nodejs-which-1.0.5-8.el6.noarch
npm-1.3.6-5.el6.noarch
nspr-4.19.0-1.43.amzn1.x86_64
nss-3.36.0-5.82.amzn1.x86_64
nss-pem-1.0.3-4.3.amzn1.x86_64
nss-softokn-3.36.0-5.42.amzn1.x86_64
nss-softokn-freebl-3.36.0-5.42.amzn1.x86_64
nss-sysinit-3.36.0-5.82.amzn1.x86_64
nss-tools-3.36.0-5.82.amzn1.x86_64
nss-util-3.36.0-1.54.amzn1.x86_64
ntp-4.2.8p12-1.39.amzn1.x86_64
ntpdate-4.2.8p12-1.39.amzn1.x86_64
ntsysv-1.3.49.3-2.14.amzn1.x86_64
numactl-2.0.7-8.11.amzn1.x86_64
openldap-2.4.40-16.31.amzn1.x86_64
openssh-7.4p1-16.71.amzn1.x86_64
openssh-clients-7.4p1-16.71.amzn1.x86_64
openssh-server-7.4p1-16.71.amzn1.x86_64
openssl-1.0.2k-16.146.amzn1.x86_64
openssl-devel-1.0.2k-16.146.amzn1.x86_64
p11-kit-0.18.5-2.3.amzn1.x86_64
p11-kit-trust-0.18.5-2.3.amzn1.x86_64
pam-1.1.8-12.33.amzn1.x86_64
pam_ccreds-10-4.9.amzn1.x86_64
pam_krb5-2.3.11-9.12.amzn1.x86_64
pam_passwdqc-1.0.5-6.8.amzn1.x86_64
parted-2.1-21.18.amzn1.x86_64
passwd-0.79-4.13.amzn1.x86_64
patch-2.7.1-10.10.amzn1.x86_64
pciutils-3.1.10-4.11.amzn1.x86_64
pciutils-libs-3.1.10-4.11.amzn1.x86_64
pcre-8.21-7.8.amzn1.x86_64
perl-5.16.3-286.38.amzn1.x86_64
perl-Authen-SASL-2.15-10.8.amzn1.noarch
perl-Carp-1.26-244.5.amzn1.noarch
perl-Compress-Raw-Bzip2-2.061-3.11.amzn1.x86_64
perl-Compress-Raw-Zlib-2.061-4.1.amzn1.x86_64
perl-constant-1.27-2.5.amzn1.noarch
perl-Data-Dumper-2.145-3.5.amzn1.x86_64
perl-DBD-MySQL55-4.023-5.23.amzn1.x86_64
perl-DBD-SQLite-1.39-3.9.amzn1.x86_64
perl-DBI-1.627-4.8.amzn1.x86_64
perl-Digest-1.17-245.5.amzn1.noarch
perl-Digest-HMAC-1.03-5.7.amzn1.noarch
perl-Digest-MD5-2.52-3.5.amzn1.x86_64
perl-Digest-SHA-5.85-3.5.amzn1.x86_64
perl-Encode-2.51-7.5.amzn1.x86_64
perl-Error-0.17020-2.9.amzn1.noarch
perl-Exporter-5.68-3.5.amzn1.noarch
perl-File-Path-2.09-2.5.amzn1.noarch
perl-File-Temp-0.23.01-3.5.amzn1.noarch
perl-Filter-1.49-3.5.amzn1.x86_64
perl-Getopt-Long-2.40-2.5.amzn1.noarch
perl-Git-2.14.5-1.60.amzn1.noarch
perl-Git-SVN-2.14.5-1.60.amzn1.noarch
perl-GSSAPI-0.28-9.9.amzn1.x86_64
perl-HTTP-Tiny-0.033-3.6.amzn1.noarch
perl-IO-Compress-2.061-2.12.amzn1.noarch
perl-IO-Socket-IP-0.21-4.5.amzn1.noarch
perl-IO-Socket-SSL-1.94-3.13.amzn1.noarch
perl-libs-5.16.3-286.38.amzn1.x86_64
perl-macros-5.16.3-286.38.amzn1.x86_64
perl-Net-Daemon-0.48-5.5.amzn1.noarch
perl-Net-LibIDN-0.12-15.6.amzn1.x86_64
perl-Net-SMTP-SSL-1.01-13.7.amzn1.noarch
perl-Net-SSLeay-1.65-2.10.amzn1.x86_64
perl-parent-0.225-244.5.amzn1.noarch
perl-PathTools-3.40-5.5.amzn1.x86_64
perl-PlRPC-0.2020-14.7.amzn1.noarch
perl-Pod-Escapes-1.04-286.38.amzn1.noarch
perl-Pod-Perldoc-3.20-4.7.amzn1.noarch
perl-Pod-Simple-3.28-4.6.amzn1.noarch
perl-Pod-Usage-1.63-3.5.amzn1.noarch
perl-podlators-2.5.1-3.8.amzn1.noarch
perl-Scalar-List-Utils-1.27-248.5.amzn1.x86_64
perl-Socket-2.010-3.5.amzn1.x86_64
perl-Storable-2.45-3.5.amzn1.x86_64
perl-TermReadKey-2.30-20.9.amzn1.x86_64
perl-Test-Harness-3.28-3.6.amzn1.noarch
perl-Text-ParseWords-3.29-4.5.amzn1.noarch
perl-Thread-Queue-3.02-2.5.amzn1.noarch
perl-threads-1.87-4.5.amzn1.x86_64
perl-threads-shared-1.43-6.5.amzn1.x86_64
perl-Time-HiRes-1.9725-272.5.amzn1.x86_64
perl-Time-Local-1.2300-2.5.amzn1.noarch
perl-YAML-0.84-5.7.amzn1.noarch
php-pear-1.10.1-1.19.amzn1.noarch
php56-5.6.38-1.140.amzn1.x86_64
php56-cli-5.6.38-1.140.amzn1.x86_64
php56-common-5.6.38-1.140.amzn1.x86_64
php56-jsonc-1.3.10-1.20.amzn1.x86_64
php56-mysqlnd-5.6.38-1.140.amzn1.x86_64
php56-pdo-5.6.38-1.140.amzn1.x86_64
php56-pecl-xdebug-2.5.5-1.9.amzn1.x86_64
php56-process-5.6.38-1.140.amzn1.x86_64
php56-xml-5.6.38-1.140.amzn1.x86_64
pigz-2.3.3-1.6.amzn1.x86_64
pinentry-0.7.6-6.11.amzn1.x86_64
pkgconfig-0.27.1-2.7.amzn1.x86_64
pm-utils-1.4.1-31.2.amzn1.x86_64
policycoreutils-2.1.12-5.25.amzn1.x86_64
popt-1.13-7.7.amzn1.x86_64
procmail-3.22-25.1.7.amzn1.x86_64
procps-3.2.8-45.16.amzn1.x86_64
psacct-6.3.2-63.8.amzn1.x86_64
psmisc-22.20-8.12.amzn1.x86_64
pth-2.0.7-9.3.7.amzn1.x86_64
python27-2.7.15-1.124.amzn1.x86_64
python27-babel-0.9.4-5.1.8.amzn1.noarch
python27-backports-1.0-3.14.amzn1.x86_64
python27-backports-ssl_match_hostname-3.4.0.2-1.12.amzn1.noarch
python27-boto-2.48.0-1.2.amzn1.noarch
python27-botocore-1.10.82-1.67.amzn1.noarch
python27-chardet-2.0.1-7.7.amzn1.noarch
python27-colorama-0.2.5-1.7.amzn1.noarch
python27-configobj-4.7.2-7.15.amzn1.noarch
python27-crypto-2.6.1-1.15.amzn1.x86_64
python27-daemon-1.5.2-1.5.amzn1.noarch
python27-dateutil-2.1-1.3.amzn1.noarch
python27-devel-2.7.15-1.124.amzn1.x86_64
python27-docutils-0.11-1.15.amzn1.noarch
python27-ecdsa-0.11-3.3.amzn1.noarch
python27-futures-3.0.3-1.3.amzn1.noarch
python27-imaging-1.1.6-19.9.amzn1.x86_64
python27-iniparse-0.3.1-2.1.9.amzn1.noarch
python27-jinja2-2.7.2-2.15.amzn1.noarch
python27-jmespath-0.9.2-1.12.amzn1.noarch
python27-jsonpatch-1.2-2.5.amzn1.noarch
python27-jsonpointer-1.0-3.4.amzn1.noarch
python27-kitchen-1.1.1-5.6.amzn1.noarch
python27-libs-2.7.15-1.124.amzn1.x86_64
python27-lockfile-0.8-3.5.amzn1.noarch
python27-markupsafe-0.11-4.6.amzn1.x86_64
python27-paramiko-1.15.1-2.7.amzn1.noarch
python27-pip-9.0.3-1.26.amzn1.noarch
python27-ply-3.4-3.12.amzn1.noarch
python27-pyasn1-0.1.7-2.9.amzn1.noarch
python27-pycurl-7.19.0-17.12.amzn1.x86_64
python27-pygpgme-0.3-9.12.amzn1.x86_64
python27-pyliblzma-0.5.3-11.6.amzn1.x86_64
python27-pystache-0.5.3-2.8.amzn1.noarch
python27-pyxattr-0.5.0-1.6.amzn1.x86_64
python27-PyYAML-3.10-3.10.amzn1.x86_64
python27-requests-1.2.3-5.10.amzn1.noarch
python27-rsa-3.4.1-1.8.amzn1.noarch
python27-setuptools-36.2.7-1.33.amzn1.noarch
python27-simplejson-3.6.5-1.12.amzn1.x86_64
python27-six-1.8.0-1.23.amzn1.noarch
python27-urlgrabber-3.10-8.16.amzn1.noarch
python27-urllib3-1.8.2-1.5.amzn1.noarch
python27-virtualenv-15.1.0-1.14.amzn1.noarch
python36-3.6.5-1.9.amzn1.x86_64
python36-devel-3.6.5-1.9.amzn1.x86_64
python36-libs-3.6.5-1.9.amzn1.x86_64
python36-pip-9.0.3-1.26.amzn1.noarch
python36-setuptools-36.2.7-1.33.amzn1.noarch
quota-4.00-7.18.amzn1.x86_64
quota-nls-4.00-7.18.amzn1.noarch
readline-6.2-9.14.amzn1.x86_64
readline-devel-6.2-9.14.amzn1.x86_64
rmt-0.4-0.6.b42.7.amzn1.x86_64
rng-tools-5-11.13.amzn1.x86_64
rootfiles-8.1-6.1.8.amzn1.noarch
rpcbind-0.2.0-13.10.amzn1.x86_64
rpm-4.11.3-21.75.amzn1.x86_64
rpm-build-libs-4.11.3-21.75.amzn1.x86_64
rpm-libs-4.11.3-21.75.amzn1.x86_64
rpm-python27-4.11.3-21.75.amzn1.x86_64
rsync-3.0.6-12.13.amzn1.x86_64
rsyslog-5.8.10-9.26.amzn1.x86_64
ruby-2.0-0.3.amzn1.noarch
ruby20-2.0.0.648-1.31.amzn1.x86_64
ruby20-irb-2.0.0.648-1.31.amzn1.noarch
ruby20-libs-2.0.0.648-1.31.amzn1.x86_64
rubygem20-bigdecimal-1.2.0-1.31.amzn1.x86_64
rubygem20-json-1.8.3-1.51.amzn1.x86_64
rubygem20-psych-2.0.0-1.31.amzn1.x86_64
rubygem20-rdoc-4.2.2-1.43.amzn1.noarch
rubygems20-2.0.14.1-1.31.amzn1.noarch
screen-4.0.3-19.6.amzn1.x86_64
sed-4.2.1-10.10.amzn1.x86_64
sendmail-8.14.4-9.14.amzn1.x86_64
setserial-2.17-25.7.amzn1.x86_64
setup-2.8.14-20.12.amzn1.noarch
sgpio-1.2.0.10-5.7.amzn1.x86_64
shadow-utils-4.1.4.2-13.10.amzn1.x86_64
shared-mime-info-1.1-9.8.amzn1.x86_64
slang-2.2.1-1.8.amzn1.x86_64
sqlite-3.7.17-8.14.amzn1.x86_64
sqlite-devel-3.7.17-8.14.amzn1.x86_64
subversion-1.9.7-1.58.amzn1.x86_64
subversion-libs-1.9.7-1.58.amzn1.x86_64
subversion-perl-1.9.7-1.58.amzn1.x86_64
sudo-1.8.6p3-29.27.amzn1.x86_64
sysctl-defaults-1.0-1.1.amzn1.noarch
sysfsutils-2.1.0-7.10.amzn1.x86_64
system-release-2018.03-0.0.noarch
system-rpm-config-9.0.3-42.28.amzn1.noarch
sysvinit-2.87-6.dsf.15.amzn1.x86_64
tar-1.26-31.22.amzn1.x86_64
tcp_wrappers-7.6-77.12.amzn1.x86_64
tcp_wrappers-libs-7.6-77.12.amzn1.x86_64
time-1.7-38.9.amzn1.x86_64
tmpwatch-2.9.16-4.10.amzn1.x86_64
traceroute-2.0.14-2.7.amzn1.x86_64
ttmkfdir-3.0.9-32.1.5.amzn1.x86_64
tzdata-2018c-1.70.amzn1.noarch
tzdata-java-2018c-1.70.amzn1.noarch
udev-173-4.13.amzn1.x86_64
unzip-6.0-4.10.amzn1.x86_64
update-motd-1.0.1-3.0.amzn1.noarch
upstart-0.6.5-13.3.13.amzn1.x86_64
ustr-1.0.4-9.1.6.amzn1.x86_64
util-linux-2.23.2-33.28.amzn1.x86_64
v8-3.14.5.10-25.el6.x86_64
v8-devel-3.14.5.10-25.el6.x86_64
vim-common-8.0.0503-1.45.amzn1.x86_64
vim-enhanced-8.0.0503-1.45.amzn1.x86_64
vim-filesystem-8.0.0503-1.45.amzn1.x86_64
vim-minimal-8.0.0503-1.45.amzn1.x86_64
wget-1.18-4.29.amzn1.x86_64
which-2.19-6.10.amzn1.x86_64
words-3.0-17.8.amzn1.noarch
xfsprogs-4.5.0-9.21.amzn1.x86_64
xorg-x11-font-utils-7.2-11.5.amzn1.x86_64
xorg-x11-fonts-Type1-7.2-9.1.5.amzn1.noarch
xz-5.1.2-12alpha.12.amzn1.x86_64
xz-libs-5.1.2-12alpha.12.amzn1.x86_64
yum-3.4.3-150.70.amzn1.noarch
yum-metadata-parser-1.1.4-10.20.amzn1.x86_64
yum-plugin-priorities-1.1.31-46.30.amzn1.noarch
yum-plugin-upgrade-helper-1.1.31-46.30.amzn1.noarch
yum-utils-1.1.31-46.30.amzn1.noarch
zip-3.0-1.10.amzn1.x86_64
zlib-1.2.8-7.18.amzn1.x86_64
zlib-devel-1.2.8-7.18.amzn1.x86_64

環境のアップデート

好みの環境にあわせて、環境をアップデートします。
ここでは、全て最新にアップデートします。

  • カーネルも含めて、パッケージをアップデートします。
    $ sudo yum -y update

インストールおよびアップデートされたのは、以下のパッケージ

Installed:
  kernel.x86_64 0:4.14.88-72.76.amzn1                                                                                                                                                                                                     

Updated:
  aws-cfn-bootstrap.noarch 0:1.4-31.22.amzn1      httpd24.x86_64 0:2.4.37-1.83.amzn1         httpd24-tools.x86_64 0:2.4.37-1.83.amzn1      kernel-headers.x86_64 0:4.14.88-72.76.amzn1      kernel-tools.x86_64 0:4.14.88-72.76.amzn1     
  php56.x86_64 0:5.6.39-1.141.amzn1               php56-cli.x86_64 0:5.6.39-1.141.amzn1      php56-common.x86_64 0:5.6.39-1.141.amzn1      php56-mysqlnd.x86_64 0:5.6.39-1.141.amzn1        php56-pdo.x86_64 0:5.6.39-1.141.amzn1         
  php56-process.x86_64 0:5.6.39-1.141.amzn1       php56-xml.x86_64 0:5.6.39-1.141.amzn1      python36.x86_64 0:3.6.7-1.10.amzn1            python36-devel.x86_64 0:3.6.7-1.10.amzn1         python36-libs.x86_64 0:3.6.7-1.10.amzn1 

カーネルとApache、PHPやpythonがアップデートされていますね。

以下のコマンドで、再起動の有無を確認します。
$ sudo needs-restarting --reboothint

【実行例】

Core libraries or services have been updated:
  kernel -> 4.14.88-72.76.amzn1

Reboot is required to ensure that your system benefits from these updates.

More information:
https://access.redhat.com/solutions/27943

カーネルのアップデートにより、システムの再起動が必要なことがわかります。
以下のコマンドで、再起動します。
$ sudo reboot

再起動に伴い、Cloud9の画面がローディング状態となります。
読み込みが完了するまで暫く待ちます。

アップデート後のコンポーネントのバージョンは以下です。
※2019年1月12日時点

コンポーネント名 バージョン 確認コマンド
OSカーネル 4.14.77-70.82 -> 4.14.88-72.76 cat /proc/version
Apache 2.4.34 -> 2.4.37 httpd -v
MySQL 14.14 Distrib 5.5.62 mysql --version
sqlite3 3.7.17 2013-05-20 sqlite3 -version
Git 2.14.5 git --version
Subversion 1.9.7 svn --version --quiet
Ruby 2.4.1p111 (2017-03-22 revision 58053) ruby -v
Ruby on Rails 5.2.2 rails -v
Node.js v6.15.1 node -v
Python2系 2.7.15 python -V
Python3系 3.6.5-> 3.6.7 python3 --version
PHP 5.6.38 -> 5.6.39 php -v
Go 1.10.6 go version

【アップデートされたパッケージ】

aws-cfn-bootstrap-1.4-31.22.amzn1.noarch
httpd24-2.4.37-1.83.amzn1.x86_64
httpd24-tools-2.4.37-1.83.amzn1.x86_64
kernel-4.14.88-72.76.amzn1.x86_64
kernel-headers-4.14.88-72.76.amzn1.x86_64
kernel-tools-4.14.88-72.76.amzn1.x86_64
php56-5.6.39-1.141.amzn1.x86_64
php56-cli-5.6.39-1.141.amzn1.x86_64
php56-common-5.6.39-1.141.amzn1.x86_64
php56-mysqlnd-5.6.39-1.141.amzn1.x86_64
php56-pdo-5.6.39-1.141.amzn1.x86_64
php56-process-5.6.39-1.141.amzn1.x86_64
php56-xml-5.6.39-1.141.amzn1.x86_64
python36-3.6.7-1.10.amzn1.x86_64
python36-devel-3.6.7-1.10.amzn1.x86_64
python36-libs-3.6.7-1.10.amzn1.x86_64

本手順では、マイナーアップデートのみ適用されます。
必要に応じて、最新メジャーバージョンのパッケージを導入します。

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト ? アソシエイト教科書

  • 作者: ??部昭寛,宮?光平,菖蒲淳司,株式会社ソキウス・ジャパン
  • 出版社/メーカー: インプレス
  • 発売日: 2019/01/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門 (CodeZine BOOKS)

  • 作者: WINGSプロジェクト阿佐志保,山田祥寛
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/06/17
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

合格対策 AWS認定ソリューションアーキテクト ?アソシエイト

合格対策 AWS認定ソリューションアーキテクト ?アソシエイト

【JavaScript】重みを付けてランダムに出現させる。(重み付き乱択) 簡単説明

背景

JavaScriptにおいて、ある特定の要素群を重みを付けてランダムに出現させる方法について記載します。 既に記載されている方も多いのですが、私の理解力不足でイメージしづらかったため、少しずつ順を追って説明していきます。

重み付き乱択について

前提

ゲームなどで、アイテムごとに出現確率を変えてドロップさせたい場合の実装を例に説明していきます。
例えば、以下の3つのアイテムがある場合を考えます。

  • 金の剣
  • 青銅の剣
  • 木の棒

上記アイテムの能力を考慮し、以下の重みをそれぞれ設定します。

アイテム名 重み(個数)
金の剣 1
青銅の剣 2
木の棒 7

重みは出現のしやすさですから、ここではわかりやすさのため、重み=個数と捉えていただいて構いません。
金の剣 1個は、「青銅の剣 2個分」 および 「木の棒 7個分」の価値があると考えてください。
また、上記10個のアイテムはすべて宝物庫に入っているとします。

棒グラフで図示すると以下のようになります。
このように位置関係で考えることが理解に繋がります。

f:id:stuffed_cabbage:20190112025702p:plain
全体要素のグラフイメージ

説明

本例では、以下の順に処理していきます。

  1. 宝物庫内にアイテムを準備する。
  2. 宝物庫内のアイテムの合計個数を取得する。
  3. 宝物庫からアイテムを取り出す。(ランダムな値を取得)
  4. どのアイテムが取り出されたか確認する。

それでは、順に説明していきます。

1. 宝物庫内にアイテムを準備する。

まず、宝物庫内にアイテムを生成する必要があります。
以下のコードで、アイテムを生成します。

const itemList = [
  { name: '金の剣' , stock: 1 },
  { name: '青銅の剣' , stock: 2 },
  { name: '木の棒', stock: 7 }
]

上記コードにより、金の剣が1個、青銅の剣が2個、木の棒が7個生成されます。

2. 宝物庫のアイテムの合計個数を取得する。

次に、以下のコードで、宝物庫(アイテムリスト)内のアイテムの合計個数を求めます。

const totalWeight = itemList.reduce((previous, current) => {
  return { weight: previous.weight + current.weight }
});

ここでは、アロー関数(※1)と配列のreduceメソッド(※2)を利用しています。
上記処理により、宝物庫内のアイテム合計個数が 10個 であることがわかります。

3. 宝物庫からアイテムを取り出す。(ランダムな値を取得)

宝物庫からアイテムを取り出します。

let pickedItem = Math.random() * totalWeight;

Math.random()では、0.0~1.0未満の乱数が返ります。
また、totalWeightには、現在10.0が格納されています。

つまり、pickedItemには、0.0~10未満の値が格納されることがわかります。
これが、どうしてアイテムを取り出したことになるのかは、次の項目で説明します。

4. どのアイテムが取り出されたか確認する。

処理2で取り出した値(pickedItem)が、どのアイテムに該当するか、アイテム鑑定書と比較する必要があります。
ここで、アイテム鑑定書は下図をイメージをしてください。

f:id:stuffed_cabbage:20190112025801p:plain
アイテム鑑定書イメージ

0.0から10.0までの長さがあるグラフに、左から順番にアイテムを並べてあります。
金の剣は1個あるので、0.0~1.0の幅でアイテム1個分のスペースをとります。続けて1.0を起点として青銅の剣を2個並べます。青銅の剣は1.0~3.0までの幅で、アイテム2個分のスペースをとります。同様に、木の棒は3.0~10.0までの幅で、アイテム7個分のスペースをとります。

上記がアイテム鑑定書となります。取り出したアイテム(pickedItem)とアイテム鑑定書を比較することで、どのアイテムが取り出されたか判明します。アイテム鑑定書は、あくまでイメージのため、コードを書く必要はありません。

以下に、取り出したアイテムとアイテム鑑定書を比較するコードを示します。

const AppraiseItem = (pickedItem, itemList) => {
  let searchPosition = 0.0;
  for (const item of itemList) {
    searchPosition += item.weight
    if (pickedItem < searchPosition) { 
      return item.name }
  }
}

取り出したアイテム(pickedItem)が、2.6だったと仮定して解説していきます。

本コードでは、アイテム鑑定書の左から順番に比較していきます。
はじめの探索位置(searchPosition)は、0.0から始まります。

1回目のfor文で、1個目の要素幅(金の剣)分探索します。 イメージとしては、下図になります。

f:id:stuffed_cabbage:20190112025655p:plain
探索1回目

初期探索位置(0.0)から現在探索位置(1.0)までの範囲で、取り出したアイテム(pickedItem)が該当しないか確認します。
取り出したアイテム(pickedItem)の値は、2.6ですので、金の剣には該当しません。
金の剣に該当しませんでしたので、次の要素(青銅の剣)に進みます。

2回目のfor文で、2個目の要素幅(青銅の剣)分探索します。
イメージとしては、下図になります。

f:id:stuffed_cabbage:20190112025651p:plain
探索2回目

前回探索位置から(1.0)から現在探索位置(3.0)までの範囲で、取り出したアイテム(pickedItem)が該当しないか確認します。
取り出したアイテム(pickedItem)の値は、2.6ですので、この範囲に該当することがわかります。つまり、取り出したアイテムが「青銅の剣」であったことがわかります。

総括

このように、重み付け乱択は、グラフ(軸)で考えると非常にわかりやすいです。
全部で10の範囲のうち、0.0~1.0は金の剣、1.0~3.0は青銅の剣と、全体の領域を、 それぞれの要素が、自身の重み分の領域を占有するイメージになります。当然、占有する幅が大きいほど、出現する確率は高くなります。
このアルゴリズムは、順番が前後しても出現確率は同様です。重み(幅)が変わらない限りは変化がありません。

完成コード

完成コードを以下に示します。
処理3と4については、GetItem関数として1つにまとめています。

    const itemList = [
     { name: '金の剣' , weight: 1 },
     { name: '青銅の剣' , weight: 2 },
     { name: '木の棒', weight: 7 }
    ]
    
    const totalWeight = itemList.reduce((previous, current) => {
      return { weight: previous.weight + current.weight }
    });

    const GetItem = (itemList) => {
      const pickedItem = Math.random() * totalWeight.weight;
      let searchPosition = 0.0;
      for (const item of itemList) {
        searchPosition += item.weight
        if (pickedItem < searchPosition) { 
          return item.name }
      }
    }

参考

※1: JavaScript アロー関数を説明するよ
※2: 【javascript】reduce
参考1: 【JavaScript】重み付けされた値をランダムで取得する | Black Everyday Company
参考2: 2017-03-25
参考3: ガチャプログラムの実装(中級者向け) - Qiita
参考4: 重み付けの抽選を行うアルゴリズム – Lancarse Blog

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

初めてのJavaScript 第3版 ―ES2015以降の最新ウェブ開発

  • 作者: Ethan Brown,武舎広幸,武舎るみ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/01/20
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

入門JavaScript フロントエンドエンジニアになるための基本と実践スキル (Web Engineer's Books)

入門JavaScript フロントエンドエンジニアになるための基本と実践スキル (Web Engineer's Books)

【Windows】SQL Server 2017 基本的な可用性グループ(AlwaysOn 可用性グループ)概要

SQL Server 2017 Standard Editionにおいて、基本的な可用性グループ(AlwaysOn 可用性グループ)を構築することとなったため、背景と構築手順を記す。

背景

  • SQL Server 2016より、Standard EditionにおいてもAlwaysOn 可用性グループが利用できるようになった。(ミラーリング機能の後継)
  • Standard EditionにおけるAlwaysON 可用性グループのことを"基本的な可用性グループ"と呼ぶ。
  • SQL Server 2016/2017でもミラーリング機能は利用できるが、非推奨である。(今後のバージョンアップで削除される可能性)
  • そのため、SQL Server 2016以降においては、基本的な可用性グループを利用することが一般的になっている。

AlwaysOn 可用性グループについて

  • データベースミラーリングに代わる、高可用性と災害復旧のための機能である。
  • 1つの書き込み/読み取り可能なプライマリデータベースと、1~8つの読み取り専用のセカンダリデータベースを構成する。
  • 上記を可用性データベースと呼ぶ。
  • 可用性グループ(可用性データベース)をインスタンス化したものを可用性レプリカと呼ぶ。
  • 可用性レプリカは、2種類ある。
    • プライマリ レプリカ
      クライアントからプライマリデータベースの読み取り/書き込みを可能にし、各プライマリデータベースのトランザクションログレコードをすべてのセカンダリレプリカに送信する。
    • セカンダリ レプリカ
      各可用性グループのセカンダリコピーを保持し、可用性グループの潜在的なフェールオーバターゲットとして機能する。必要に応じて、セカンダリデータベースへの読み取り専用アクセスと、セカンダリデータベース上でのバックアップ作成をサポートする。
  • セカンダリレプリカがディスクにトランザクションログレコードを書き込むまで、プライマリレプリカによるデータベースへのトランザクションのコミットを待機するかどうか決定する"可用性モード"がある。
  • 可用性モードは以下の2種類ある。
    • 非同期コミットモード(Asynchronous-commit mode)
      • この可用性モードを利用する可用性レプリカを非同期コミットレプリカと呼ぶ。
      • セカンダリレプリカのログ書き込みを待機せずに、プライマリレプリカがトランザクションをコミットする。
      • トランザクション遅延が最小となるメリットがある。
    • 同期コミットモード(Synchronous-commit mode)
      • この可用性モードを利用する可用性レプリカを同期コミットレプリカと呼ぶ。
      • セカンダリレプリカのログ書き込みを待機してから、プライマリレプリカがトランザクションをコミットする。
      • セカンダリデータベースへの書き込みを待機するため、トランザクションが完全に保護されることがメリットである。
      • ただし、トランザクションの遅延が増加するデメリットがある。
  • フェールオーバーと呼ばれるプロセスで、可用性レプリカのプライマリロールとセカンダリロールが交換される。
  • フェールオーバー動作実行時、セカンダリ レプリカがプライマリ ロールに移行し、新しいプライマリ レプリカとなる。
  • 元のプライマリレプリカが利用可能となると、セカンダリ ロールに移行し、セカンダリ レプリカになる。
  • フェールオーバーには以下の3種類の方式がある。
    • 計画的な手動フェールオーバー
      • データベース管理者が手動でフェールオーバーする方式である。
      • データ保護が保証される。
      • プライマリレプリカとフェールオーバー対象のセカンダリレプリカにおいて同期コミットモードが設定されている必要がある。
      • また、セカンダリ レプリカが既に同期されている必要がある。
    • 自動フェールオーバー
      • エラーが発生すると自動的にフェールオーバーする方式である。
      • データ保護が保証される。
      • プライマリレプリカとフェールオーバー対象のセカンダリレプリカにおいて同期コミットモードが設定されている必要がある。
      • さらに、セカンダリ レプリカが既に同期され、WSFCクォーラムを持ち、可用性グループの柔軟なフェールオーバーポリシーで指定された条件を満たしている必要がある。
    • 強制フェールオーバー
      • 非同期コミットモードで使用される。
      • データ損失の可能性がある手動フェールオーバーである。
      • セカンダリ レプリカがプライマリ レプリカと動機されない場合に使用できる唯一のフェールオーバー形式である。
  • 可用性グループリスナーを作成することによって、特定の可用性グループのプリマリ レプリカへのクライアント接続を提供する。
  • アクティブなセカンダリ レプリカをサポートする。アクティブなセカンダリ機能は以下の2種類である。 (基本的な可用性グループでは未サポート)
    • セカンダリ レプリカでのバックアップ操作の実行
    • 1つ以上のセカンダリ レプリカへの読み取り専用アクセス

参考

www.slideshare.net

AlwaysOn 可用性グループ (SQL Server) - SQL Server Always On | Microsoft Docs

AlwaysOn 可用性グループの概要 (SQL Server) - SQL Server Always On | Microsoft Docs

SQL ServerのAlwaysOn可用性グループを利用した、クラスター構成の検証 - ニフクラ ブログ

SQL Server 2016データベース構築・管理ガイド Enterprise対応

SQL Server 2016データベース構築・管理ガイド Enterprise対応

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

新人エンジニアのための データベースのしくみと運用がわかる本

新人エンジニアのための データベースのしくみと運用がわかる本

【Active Directory】ADサーバのバックアップおよびリストアについて

Active Directoryサーバにおいて、何も考慮せずにサーバのバックアップ/リストアを実施してしまうと、 復元できないどころか、最悪の場合には破損させてしまうことがあります。本記事では、適切なバックアップおよびリストアの手法を整理して記載します。
// 理解不足の点がありますので検証後、修正予定(2018/09/17時点)

ActiveDirectoryの構成について

  • Microsoft Active Directory(以下、AD)の各サービスは、ドメインコントローラのファイルシステム上にあるデータベースを使用します。
  • 2台以上のドメインコントローラが構成されている場合、データベースに格納されている情報は、複数のドメインコントローラ間で複製されます。
  • ADデータベースは「%systemroot%NTDS」フォルダに存在します。

ActiveDirectoryのバックアップについて

  • ボリューム・シャドウ・コピー・サービス(VSS)を利用することで、ADデータベースの整合性をとり、バックアップを取得できます。
  • データベースとトランザクションログの両方を取得する必要があります。

Active Directoryのリストアについて

  • リストアケースとして、以下の3つがあります。

    • ドメインコントローラのリストア
    • ADデータベースのリストア
    • ADレコードのリストア
  • ドメインコントローラのリストアを実施する際には、ディレクトリサービス復元モードを利用する。(VSS連携したバックアップソフトウェアを使用する場合はその限りではない)

  • 冗長構成された環境において、リストアを実施する場合は、USNロールバックに注意します。

    • 仮想環境において、スナップショットからリストアする場合は、WindowsServer2012以降であればUSNロールバックの対策が取られています。(ハイパーバイザから、VM-generation IDを付与してリストアされたことを識別、詳細は※1、※2、※3を参照)
    • 「VM-generation ID」は、Hyper-VだけでなくVMware vSphereもサポートしています。(※4)
  • 復旧モードにも、Authoritativeリストアと非Authoritativeがあります。

    • Authoritativeリストア
      復元対象のADサーバから、複製してリストアする方法です。USN+10,000することで、クラスタ内で最新のUSNとし、複製を実施します。
    • 非Authoritativeリストア
      他のドメインコントローラより複製されることを前提としてリストアする方法です。クラスタ内に正常なドメインコントローラが存在する場合に使用します。

参考

※1 ドメイン・コントローラのスナップショット対策
※2 USN Rollback, Virtualized DCs and improvements on Windows Server 2012.
※3 Introduction to Active Directory Domain Services (AD DS) Virtualization (Level 100))
※4 vSphere での VM-Generation ID のサポートについて (2041872)
※5 Active Directory(バックアップ) - マイクロソフト系技術情報 Wiki
※6 Windows Server 2003、Windows Server 2008 および Windows Server 2008 R2 で、USN ロールバックから回復する方法
※7 Windows Server 2012におけるAD DSのTombstone Lifetimeについて
※8 Introduction to Active Directory Domain Services (AD DS) Virtualization (Level 100) | Microsoft Docs
※9 Invocation ID – バックアップからの復元は神頼み?! | Always on the clock
※10 VSSを利用したActiveDirectoryバックアップについて ※11 Active Directory on AWS / JAWS Days 2014

Windows Server2012R2のActiveDirectoryリストアについて、以下の動画で手順を確認することができます。

www.youtube.com

ひと目でわかるActive Directory Windows Server 2016版

ひと目でわかるActive Directory Windows Server 2016版

脱オンプレミス! クラウド時代の認証基盤 Azure Active Directory 完全解説 (マイクロソフト公式解説書)

脱オンプレミス! クラウド時代の認証基盤 Azure Active Directory 完全解説 (マイクロソフト公式解説書)

MCP教科書 Windows Server 2008 Active Directory(試験番号:70-640)第2版

MCP教科書 Windows Server 2008 Active Directory(試験番号:70-640)第2版

  • 作者: エディフィストラーニング株式会社神鳥勝則,甲田章子,竹島友理,田島静
  • 出版社/メーカー: 翔泳社
  • 発売日: 2011/11/18
  • メディア: 単行本(ソフトカバー)
  • 購入: 1人 クリック: 16回
  • この商品を含むブログを見る

【Docker】Docker for Windowsのインストール手順

インストール要件

下記 3点を満たす必要があります。

  • 64bit版のWindows 10(バージョン1511、ビルド10586以降)、 ProもしくはEnterprise/Educationエディション
  • Hyper-Vが利用できること
  • コンテナ実行用の仮想マシンには、メモリ2GB、ディスク60GB (容量可変タイプの仮想ディスクで、初期サイズは4GB程度)のリソースが必要

Windowsのバージョンおよびエディションの確認

  1. Windows + R を押下し、ファイル名を指定して実行を開きます。
  2. winverと入力し、OKを押下します。
  3. 表示されたダイアログボックスを確認します。

Hyper-Vを有効化

  1. Windows + X を押下し、Pキーを押下します。
  2. プログラムをクリックします。
  3. 「Windwosの機能の有効化または無効化」をクリックします。
  4. Hyper-Vのチェックを入れて、OKボタンを押下します。
  5. インストールを完了するため再起動します。

※ Hyper-Vの有効化が行えない場合、Intel VTが有効になっていない可能性があります。BIOSを画面を開き、[Advanced]タブ-[CPU設定]から有効にします。

インストールファイルのダウンロード

  1. 下記URLにアクセスします。 https://docs.docker.com/docker-for-windows/
  2. Stable channel(最適版)かBeta channel(ベータ版)をダウンロードします。 基本的にはStable channelで問題ないです。

Docker for Windowsのインストール

  1. ライセンスに同意し、Installを押下します。
  2. インストールが行われます。完了次第、Finishで画面を閉じます。
  3. Lanch Dockerにチェックを入れていると起動画面が表示されます。

参考

https://docs.docker.com/docker-for-windows/ http://www.atmarkit.co.jp/ait/articles/1609/01/news053.html

【VMware】Intel NUC(BOXNUC7I7BNH)にESXi 6.7をインストールしてみた。

Intel NUC(BOXNUC7I7BNH)にESXi 6.7をインストールしている記事が見当たらなかったため、記載します。 USBをインストール用ブータブルメディアとして利用する以外は、通常のサーバにESXi 6.7をインストールする手順と変わりません。ただし、ESXi 6.5をIntel NUCにインストールした際に、データストアへのアクセスが遅いといった事象(※1)が発生しているようですので、あくまで公式サポートされていない点にご注意ください。私の環境では執筆時点(2018年08月26日)で特に問題は起きていません。(NVMe接続のSSDのみ利用しているからかもしれません。)

構成

事前準備

ESXiインストール用のUSBブータブルメディアを作成します。
 以下を参考にさせていただきました。
   - Rufus: 様々なOSのブータブルUSBを作成できるフリーソフト

Rufusの最新は2018/8/16時点で、v3.1(2018/06/19)のようです。
以下からダウンロードできます。
 https://forest.watch.impress.co.jp/library/software/rufus/

インストール

以下にESXi6.5のインストール手順を示します。
※ ディスプレイをカメラで撮影するという苦肉の策で、画面キャプチャを取得したため、
  非常に見づらくなっております。仕様です。繰り返します。仕様です。

  • 事前準備で作成したブータブルUSBメディアを挿して起動します。
    正常に起動すると以下の画面が表示されます。[Enter]を押下し、次の画面に進みます。 f:id:stuffed_cabbage:20180826113210j:plain

  • EULAを一読し問題がなければ、[F11]を押下します。 f:id:stuffed_cabbage:20180826113424j:plain

  • ESXiが認識しているディスクが表示されます。インストール先ディスクを選択します。
    今回は、「NVMe Samsung SSD 970」を選択します。 f:id:stuffed_cabbage:20180826114007j:plain

  • 利用するキーボードレイアウト(言語)を選択します。
     日本語キーボードを利用するため、「Japanese」を選択します。
    f:id:stuffed_cabbage:20180826114050j:plain

  • rootユーザのパスワードを設定します。
    f:id:stuffed_cabbage:20180826114209j:plain

  • [F11]を押下し、インストールを開始します。
    f:id:stuffed_cabbage:20180826114249j:plain

  • インストールが完了すると、以下の画面が表示されます。
    [Enter]を押下し、再起動します。
    f:id:stuffed_cabbage:20180826114401j:plain

  • 再起動処理が開始します。
    ※ ここで、ブータブルUSBメディアを取り外します。 f:id:stuffed_cabbage:20180826114521j:plain

  • 再起動後、以下の画面が表示されることを確認します。
    f:id:stuffed_cabbage:20180826115052j:plain ※ IPアドレスが表示されている箇所をマスキングしています。

  • ログインし、必要に応じてネットワーク設定等を行います。

まとめ

今回、Intel NUCにESXi 6.7をインストールしてみました。以前のESXiバージョン、通常のサーバと同様にインストールすることが出来ました。省スペース、省電力、低コストで導入できるため、自宅環境として非常におすすめです。RJ45ポートが1つしかないため、ネットワーク周りで凝ったことは出来ませんが、接続先スイッチをタグ対応の機器にすることで、幅が広がるかと思います。

802.1Q VLAN対応のスイッチですが、4000円弱で以下のようなものがあります。 意外と安くであるものですね。

参考

 ※1 Intel NUC に ESXi 6.5 を入れる | kurokobo.com
 Rufus: 様々なOSのブータブルUSBを作成できるフリーソフト

徹底攻略VCP6.5-DCV教科書 VMware vSphere 6.5対応

徹底攻略VCP6.5-DCV教科書 VMware vSphere 6.5対応

  • 作者: 二岡祐介,中川明美,株式会社ソキウス・ジャパン
  • 出版社/メーカー: インプレス
  • 発売日: 2018/01/19
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

VMware徹底入門 第4版 VMware vSphere 6.0対応

VMware徹底入門 第4版 VMware vSphere 6.0対応

改訂新版VMwareの基本~仮想化/クラウドのための設計・構築・運用のポイントがわかる

改訂新版VMwareの基本~仮想化/クラウドのための設計・構築・運用のポイントがわかる

  • 作者: 中島淳之介,小原光弥,豊原啓治
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/08/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

【Windows】移動ユーザープロファイルとフォルダリダイレクトについて

VMware Horizonの設計/構築を実施するにあたり、移動ユーザプロファイルとフォルダリダイレクトの理解が必要となったため、調べてみました。

そもそもユーザプロファイルとは何かから確認していきます。

ユーザプロファイル

ユーザごとの環境情報を定義する設定ファイルです。Windowsにおいてユーザアカウントを作成後、初回ログインのタイミングで作成されます。

具体的には、以下のような設定やユーザ固有のフォルダが作成されます。

  • 設定
    • デスクトップ設定(壁紙、スクリーンセーバー)
    • 「スタート」メニュー設定
    • プリンタ設定
    • ネットワークドライバ設定
    • コントロールパネル設定(コントロールパネルから設定した情報)...など
  • フォルダ
    • デスクトップ
    • ドキュメント
    • お気に入り
    • ピクチャ
    • ミュージック...など

以下の手順を実行することで、現在ログインしているユーザのユーザプロファイルを確認することができます。

 (1) [Windowsキー]+[Rキー]を押下し、「%userprofile%」と入力します。

 f:id:stuffed_cabbage:20180811114805j:plain

 (2) 以下のようにユーザ固有のデータが保存されるフォルダが表示されます。

 f:id:stuffed_cabbage:20180811115429j:plain

また、[コントロールパネル]‐[システムとセキュリティ]‐[システム]ー[システムの詳細設定]から、端末に保存されているユーザプロファイルを確認することができます。
※ WindowsServer2012R2の場合の手順です。

 f:id:stuffed_cabbage:20180811114756j:plain

ユーザプロファイルは、それぞれのユーザの端末内に保存されているため、バックアップを取得する場合は、個別に取得する必要があります。また、ユーザ固有の設定情報(ユーザプロファイル)が端末に紐づくため、作業端末が変わるとユーザは再度設定を行う必要がありました。それらを改善する機能が次項の「移動ユーザプロファイル」です。

移動ユーザプロファイル

ユーザプロファイルをネットワーク上のサーバに保存し、ユーザがログオンするたびにサーバからユーザプロファイル情報を取得する方式です。ユーザプロファイルが端末ではなくユーザに紐づくため、どの端末からでも同様の環境を利用することができます。

以下の手順で、移動プロファイルを設定することができます。

 (1) 「Active Directory ユーザーとコンピューター」を開きます。

 (2) 設定対象のユーザを右クリックし、「プロパティ」を選択します。

 f:id:stuffed_cabbage:20180811115437j:plain

 (3) 「プロファイル」タブを選択して、「プロファイル パス」欄に共有フォルダパスを入力します。

 f:id:stuffed_cabbage:20180811115441j:plain

通常のユーザプロファイルと同様にユーザのログオン時に自動作成されます。
「%username%」と入力することで、ユーザ名のディレクトリが作成することができます。

上記のようにファイルサーバでユーザプロファイルを管理する際には、共有フォルダの権限に注意が必要です。本設定のみで移動ユーザプロファイルを設定した場合、管理者(Administrator)がユーザプロファイルにアクセスできなくなります。そのため、以下のグループポリシーを設定して、ユーザプロファイルが格納されるフォルダに対して管理者(Administrator)権限をフォルダ作成時に自動的に付与します。

  • [コンピュータの構成]‐[管理用テンプレート]‐[システム]‐[ユーザプロファイル]
    • 移動プロファイルフォルダのユーザ権限を確認しない: 有効
    • Administratorセキュリティグループを移動ユーザプロファイルに追加する: 有効

上記のグループポリシーを設定することで、管理者からもユーザプロファイルを管理することができます。

移動ユーザプロファイルを設定することで、ユーザプロファイルの管理が一元化され、バックアップや移行作業などが容易になりました。しかし、移動ユーザプロファイルにもデメリットがあります。

それは、ユーザログオン時に共有フォルダからユーザプロファイルを読み込む際に時間がかかるという点です。

移動ユーザプロファイルはネットワーク経由でアクセスする共有フォルダに配置されています。
ユーザプロファイルの容量やネットワーク負荷によっては、ユーザプロファイルの読み込みに時間がかかり、ローカルにユーザプロファイルを配置する場合に比べてログオン時間が長くなります。

上記の問題を解決する方法が、次項の「フォルダリダイレクト」です。  

フォルダリダイレクト

ユーザプロファイルに存在するユーザ固有のフォルダ(デスクトップ、ドキュメント)を共有フォルダにリダイレクトする方式です。ログオン時にはショートカットのみ読み込むような動作となるため、移動ユーザプロファイルのみを利用する場合に比べてログオン時間を短縮することができます。

以下の手順で、フォルダリダイレクトを設定することができます。

 (1) 設定対象のグループポリシーを編集します。

 (2) 「グループポリシー管理エディタ」を開き、[ユーザの構成]-[Windowsの設定]-[フォルダリダイレクト]を開きます。

 f:id:stuffed_cabbage:20180811115444j:plain

 ユーザプロファイルから確認できたユーザ固有のフォルダが一覧表示されていることが確認できます。

 (3) 「デスクトップ」を右クリックし、[プロパティ]を選択します。

 (4) 以下の画面が表示されるので、設定を「基本‐全員のフォルダを同じ場所にリダイレクトする」を選択し、必要事項を入力します。

  f:id:stuffed_cabbage:20180811115448j:plain

 上記画面の設定では、ファイルサーバである「fileserver」上の「redirect」フォルダに「ユーザ名フォルダ\デスクトップ」が作成されます。画面下部より、ユーザ クレアさんには「\fileserver\redirect\クレア\Desktop」でリダイレクトされることがわかります。

 (5) 以下のようにユーザグループ別にフォルダリダイレクトさせることもできます。

 f:id:stuffed_cabbage:20180811115452j:plain

参考

VMware Horizon 導入実践ガイド [モバイルクラウド時代のワークスタイル変革] (impress top gear)

VMware Horizon 導入実践ガイド [モバイルクラウド時代のワークスタイル変革] (impress top gear)

  • 作者: 大谷篤志,工藤真臣,熊谷哲人,染谷文昭,照川陽太郎,三ッ木恒幸,山辺和篤
  • 出版社/メーカー: インプレス
  • 発売日: 2014/11/13
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る
Citrix XenDesktop デスクトップ&アプリケーション仮想化 実践ガイド

Citrix XenDesktop デスクトップ&アプリケーション仮想化 実践ガイド

ひと目でわかる Active Directory WindowsServer 2012 R2版 (TechNet ITプロシリーズ)

ひと目でわかる Active Directory WindowsServer 2012 R2版 (TechNet ITプロシリーズ)