bash起動ファイルメモ
概要
man
の結果を読んでみたけどぱっとみよくわからないので整理した。
基本的にDokcer(amazonlinux:2)、一部VirtualBox+CentOS7で検証した。
事前準備
次のDockerfileでDockerイメージを作成し、それを使う。
FROM amazonlinux:2 RUN \ yum install -y procps sudo gcc man && \ echo 'echo /etc/profile && echo $- && shopt login_shell' >> /etc/profile && \ echo 'echo .bash_profile && echo $- && shopt login_shell' >> ~/.bash_profile && \ echo 'echo .bash_login && echo $- && shopt login_shell' >> ~/.bash_login && \ echo 'echo .profile && echo $- && shopt login_shell' >> ~/.profile && \ echo 'echo .bashrc && echo $- && shopt login_shell' >> ~/.bashrc && \ echo 'echo .bash_logout && echo $- && shopt login_shell' >> ~/.bash_logout && \ touch ~/.bash_env && echo 'echo .bash_env && echo $- && shopt login_shell' >> ~/.bash_env && \ touch ~/.env && echo 'echo .env && echo $- && shopt login_shell' >> ~/.env && \ useradd mfham -s /bin/bash && \ echo 'echo mfham_.bash_profile && echo $- && shopt login_shell' >> /home/mfham/.bash_profile && \ echo 'echo mfham_.bash_login && echo $- && shopt login_shell' >> /home/mfham/.bash_login && \ echo 'echo mfham_.profile && echo $- && shopt login_shell' >> /home/mfham/.profile && \ echo 'echo mfham_.bashrc && echo $- && shopt login_shell' >> /home/mfham/.bashrc && \ echo 'echo mfham_.bash_logout && echo $- && shopt login_shell' >> /home/mfham/.bash_logout ENV BASH_ENV=~/.bash_env ENV ENV=~/.env
用語
ログインシェル(login shell)
- 0番目の引き数の最初の文字が - であるシェル
--login
オプション付きで起動されたシェル
対話的なシェル(interactive shell)
- オプションでない引き数がなく、標準入力と標準エラー出力がいずれも端末に接続されていて(
isatty(3)
で調べられる)、-c
オプションが指定されていない状態で起動されたシェル -i
オプション付きで起動されたシェル
非対話的なシェル
man
の結果に定義が記載されていないので、対話的なシェルでないものと認識しておく。
bash
bashが対話的なログインシェルとして起動されるか、--login
オプション付きの非対話的シェルとして起動される
/etc/profile
ファイルが存在すれば、ここからコマンドを読み込んで実行する。
その後、~/.bash_profile
, ~/.bash_login
, ~/.profile
の順番で探す。この中で最初に見つかり、かつ読み込みが可能であるファイルからコマンドを読み込んで実行する(最初に見つかったものだけ)。
また、--noprofile
オプションを使ってシェルを起動すれば、/etc/profile
〜~/.profile
読み込みの動作を行わないようにできる。
非対話的なログインシェル(--login
オプションを使わない)
man bash
の記述的に「非対話的なログインシェル(--loginオプションを使わない)」は/etc/profile
を読み込まないと思っていたけど読み込んだ。
Difference between Login Shell and Non-Login Shell? - Unix & Linux Stack ExchangeのAnswer的に、システムによって読まれたり読まれなかったりするのかな?
ログインシェルが終了する
~/.bash_logout
ファイルがあれば読み込んで実行する。
ログインシェルでない対話的シェルとして起動される
~/.bashrc
ファイルがあれば、ここからコマンドを読み込み実行する。
--norc
オプションを使ってシェルを起動すれば、~/.bashrc
読み込みの動作を行わないようにできる。
--rcfile file
オプションを使うと、~/.bashrc
の代わりにfile
から読み込ませることができる。
(例えばシェルスクリプトを実行するために)非対話的に起動される
環境変数 BASH_ENV
を調べ、この変数が定義されていればその値を展開し、得られた値をファイル名とみなして、そこからコマンドの読み込みと実行を行う。
つまり次のコマンドが実行されたのと同じように動作する。
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ただし、ファイル名を探すためにPATH
環境変数の値が使われることはない。
--posix
コマンドラインオプション等によりPOSIXモードで起動される
起動ファイルに関してPOSIX標準に従う。
このモードでは、対話的シェルはENV
環境変数を展開し、展開して得られた名前のファイルからコマンドの読み込みと実行を行う。
ほかの起動ファイルは全く読み込まない。
リモートシェルデーモンrshd
やセキュアシェルデーモンsshd
によって実行された場合
~/.bashrc
が存在し、かつ読み込み可能であれば、bash
はコマンドをこのファイルから読み込んで実行する。
shとして呼び出された場合には、この動作は行わない。
--norc
オプション、--rcfile
オプションも使うことが可能。
(しかし一般的にはrshd
はこれらのオプションを付けてシェルを起動しないし、指定もできないようになっている)
# VirtualBox+CentOS7での検証 mfham@localhost ~> sudo useradd mfham_test [sudo] mfham のパスワード: # backup mfham@localhost ~> sudo cp /etc/profile /etc/profile_origin # 事前準備1 mfham@localhost ~> sudo su - [root@localhost ~]# echo 'echo /etc/profile' >> /etc/profile && echo 'echo $-' >> /etc/profile && echo 'shopt login_shell' >> /etc/profile # 事前準備2 [root@localhost ~]# su mfham_test [mfham_test@localhost ~]$ echo $SHELL /bin/bash [mfham_test@localhost root]$ cd [mfham_test@localhost ~]$ echo 'echo bash_profile' >>~/.bash_profile && echo 'echo bash_login' >> ~/.bash_login && echo 'echo profile' >> ~/.profile && echo 'echo bashrc' >> ~/.bashrc && echo 'echo bash_logout' >> ~/.bash_logout # ログイン mfham@mac ~> ssh cent7_test mfham_test@****'s password: Last login: Sat Jan 5 05:48:17 2019 /etc/profile himBH login_shell on bashrc bash_profile [mfham_test@localhost ~]$ ps aux | grep mfham_test root 10025 0.3 0.1 159300 6112 ? Ss 05:57 0:00 sshd: mfham_test [priv] mfham_t+ 10027 0.4 0.0 159300 2352 ? S 05:57 0:00 sshd: mfham_test@pts/0 mfham_t+ 10077 0.0 0.0 112724 988 pts/0 R+ 05:58 0:00 grep --color=auto mfham_test # ログインシェルをshに変更 [mfham_test@localhost ~]$ chsh mfham_test のシェルを変更します。 新しいシェル [/bin/bash]: /bin/sh パスワード: シェルを変更しました。 [mfham_test@localhost ~]$ # ログアウト後にログインしなおす mfham@mac ~> ssh cent7_test mfham_test@****'s password: Last login: Sat Jan 5 05:52:10 2019 from **** /etc/profile himBH login_shell on profile -sh-4.2$
シェルが実ユーザ (グループ)IDと異なる実効ユーザ(グループ)IDで起動される
-p
オプションが与えられていない場合- 起動ファイルは全く読み込まれず、シェル関数は環境から継承されず、SHELLOPTS,BASHOPTS,CDPATH,GLOBIGNOREが環境変数に含まれていても無視され、実効ユーザIDには実ユーザIDが設定される。
-p
オプションが起動時に与えられた場合- 起動時の動作は同じだが、実効ユーザIDは再設定される。
参考:
# mfhamユーザでログイン、ログアウト bash-4.2# su - mfham /etc/profile himBH login_shell on mfham_.bashrc himBH login_shell on mfham_.bash_profile himBH login_shell on [mfham@6ac0fadafe8d ~]$ [mfham@6ac0fadafe8d ~]$ exit logout mfham_.bash_logout himBH login_shell on bash-4.2# # bashのパーミッション変更 bash-4.2# ls -l /bin/ | grep bash -rwxr-xr-x 1 root root 964728 Jul 27 18:42 bash lrwxrwxrwx 1 root root 10 Nov 14 07:22 bashbug -> bashbug-64 -rwxr-xr-x 1 root root 6958 Jul 27 18:42 bashbug-64 lrwxrwxrwx 1 root root 4 Nov 14 07:22 sh -> bash bash-4.2# chmod u+s /bin/bash bash-4.2# ls -l /bin/ | grep bash -rwsr-xr-x 1 root root 964728 Jul 27 18:42 bash lrwxrwxrwx 1 root root 10 Nov 14 07:22 bashbug -> bashbug-64 -rwxr-xr-x 1 root root 6958 Jul 27 18:42 bashbug-64 lrwxrwxrwx 1 root root 4 Nov 14 07:22 sh -> bash bash-4.2# # 再度mfhamユーザでログイン bash-4.2# su - mfham Last login: Mon Jan 14 12:48:52 UTC 2019 on pts/0 -bash-4.2$ -bash-4.2$ pwd /home/mfham -bash-4.2$ # 実ユーザID、実効ユーザID確認用スクリプト作成 -bash-4.2$ vi test.c -bash-4.2$ cat test.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> int main() { printf("uid = %d, euid = %d\n", getuid(), geteuid()); getchar(); return 0; } -bash-4.2$ -bash-4.2$ gcc test.c -bash-4.2$ ls -l total 16 -rwxr-xr-x 1 mfham mfham 8328 Jan 14 12:52 a.out -rw-r--r-- 1 mfham mfham 166 Jan 14 12:51 test.c -bash-4.2$ # 確認 -bash-4.2$ ./a.out uid = 1000, euid = 1000 ^C -bash-4.2$ # -pオプションつけてのbash起動後に確認 -bash-4.2$ bash --login -p bash-4.2# ./a.out uid = 1000, euid = 0 ^C bash-4.2#
確認
# 対話的なログインシェル bash-4.2# bash --login /etc/profile himBH login_shell on .bash_profile himBH login_shell on bash-4.2# # --loginオプション付きの非対話的シェル bash-4.2# bash --login -c 'echo foo' /etc/profile hBc login_shell on .bash_profile hBc login_shell on .bash_env hBc login_shell on foo bash-4.2# # 非対話的なログインシェル(--loginオプションを使わない) bash-4.2# ln -s /bin/bash /bin/-bash bash-4.2# -bash -c 'echo foo' /etc/profile hBc login_shell on .bash_profile hBc login_shell on .bash_env hBc login_shell on foo bash-4.2# # --noprofileオプションを使って起動 bash-4.2# bash --login --noprofile bash-4.2# # logout bash-4.2# bash --login /etc/profile himBH login_shell on .bash_profile himBH login_shell on bash-4.2# exit logout .bash_logout himBH login_shell on bash-4.2# # ログインシェルでない対話的シェルとして起動 bash-4.2# bash -i .bashrc himBH login_shell off bash-4.2# # ログインシェルでない対話的シェルとして起動(--norcオプション) bash-4.2# bash --norc -i bash-4.2# # ログインシェルでない対話的シェルとして起動(--rcfileオプション) bash-4.2# touch tmp_file && echo 'echo tmp_file && echo $- && shopt login_shell' >> tmp_file bash-4.2# bash --rcfile tmp_file -i tmp_file himBH login_shell off bash-4.2# # 非対話的に起動 bash-4.2# bash -c 'echo foo' .bash_env hBc login_shell off foo bash-4.2# # 対話的なログインシェル(--posixオプション) bash-4.2# bash --login --posix .env himBH login_shell on bash-4.2#
shという名前でbashを起動
bash
は古くからあるsh
の起動動作をできるだけ真似しようとし、またPOSIX標準にもできるだけ従おうとする。
参考:
# shはbashのalias bash-4.2# ls -l /bin/ | grep sh -rwxr-xr-x 1 root root 964728 Jul 27 18:42 bash lrwxrwxrwx 1 root root 10 Nov 14 07:22 bashbug -> bashbug-64 -rwxr-xr-x 1 root root 6958 Jul 27 18:42 bashbug-64 lrwxrwxrwx 1 root root 19 Nov 14 07:22 setup-nsssysinit -> setup-nsssysinit.sh -rwxr-xr-x 1 root root 1539 Oct 3 18:20 setup-nsssysinit.sh lrwxrwxrwx 1 root root 4 Nov 14 07:22 sh -> bash -rwxr-xr-x 1 root root 37368 Jul 31 20:17 sha1sum -rwxr-xr-x 1 root root 37384 Jul 31 20:17 sha224sum -rwxr-xr-x 1 root root 37384 Jul 31 20:17 sha256sum -rwxr-xr-x 1 root root 37400 Jul 31 20:17 sha384sum -rwxr-xr-x 1 root root 37400 Jul 31 20:17 sha512sum -rwxr-xr-x 1 root root 54104 Jul 31 20:17 shred -rwxr-xr-x 1 root root 50216 Jul 31 20:17 shuf # 起動ファイルの読み込みを行った後にPOSIXモードに入る bash-4.2# bash -c 'echo <(ls)' /dev/fd/63 bash-4.2# sh -c 'echo <(ls)' sh: -c: line 0: syntax error near unexpected token `(' sh: -c: line 0: `echo <(ls)'
対話的なログインシェルとして起動される、あるいは--login
オプション付きの非対話的シェルとして起動される
まず/etc/profile
と~/.profile
の順でコマンドの読み込みと実行をしようとする。
また、--noprofile
オプションを使ってシェルを起動すれば、/etc/profile
、~/.profile
読み込みの動作を行わないようにできる。
対話的シェルとして起動される
環境変数ENV
を調べ、この変数が定義されていればその値を展開し、展開で得た値をコマンドの読み込みと実行を行うためのファイル名として使う。
また、ほかの起動ファイルからコマンドの読み込みと起動を行うことはないので、--rcfile
オプションは全く効果を持たない。
非対話的シェルとして起動される
ほかの起動ファイルを何も読み込まない。
(bash
という名前で非対話的シェルとして起動した場合は、先述の通りBASH_ENV
の参照)
確認
# 対話的なログインシェル bash-4.2# sh --login /etc/profile himBH login_shell on .profile himBH login_shell on .env himBH login_shell on sh-4.2# # --loginオプション付きの非対話的シェル bash-4.2# sh --login -c 'echo foo' /etc/profile hBc login_shell on .profile hBc login_shell on foo bash-4.2# # 非対話的なログインシェル(--loginオプションを使わない) bash-4.2# ln -s /bin/bash /bin/-sh bash-4.2# -sh -c 'echo foo' /etc/profile hBc login_shell on .profile hBc login_shell on foo bash-4.2# # --noprofileオプションを使って起動 bash-4.2# sh --login --noprofile .env himBH login_shell on sh-4.2# # ログインシェルでない対話的シェル bash-4.2# sh -i .env himBH login_shell off sh-4.2# # 対話的なログインシェル bash-4.2# sh --login /etc/profile himBH login_shell on .profile himBH login_shell on .env himBH login_shell on sh-4.2# # --rcfileオプションを使って起動 bash-4.2# touch tmp_file && echo 'echo tmp_file && echo $- && shopt login_shell' >> tmp_file bash-4.2# sh --login --rcfile tmp_file /etc/profile himBH login_shell on .profile himBH login_shell on .env himBH login_shell on sh-4.2# # 非対話的シェルとして起動 bash-4.2# sh -c 'echo foo' foo bash-4.2#
まとめ
- 知らぬも困らぬが役に立つ
/etc/profile
の中身もあわせて理解しておきたい- こういう検証にDocker使うの便利
- 私は最近
fish
シェルを使っている
Laravel + Apacheメモ
問題
/ へのアクセスは問題なくページが表示されるが、/userのようにパスを指定すると404になる。
設定メモ
# before DocumentRoot "/var/www/html <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> # after DocumentRoot "/www/unit/mfham/public" <Directory "/www/unit/mfham/public"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
publicディレクトリ配下に作られる.htacessを効かす。
終わりに
いつもApacheやNginxでめちゃくちゃ時間使ってしまう。
VirtualBox固定サイズのストレージ増やす
前提
VirtualBox(固定サイズ)+CentOS 7
やること
ストレージを増やす。
参考
VirtualBox: 仮想ディスクのサイズを拡張する (VDI)
LVM領域の拡張方法のメモ - Glide Note
VirtualBoxのディスク容量を拡張する - かばちんのエンジニアブログ
CentOS 7(XFS)でLVMディスク拡張でハマったこと
作業
事前状態
[root@localhost ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 6.7G 6.2G 537M 93% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 298M 200M 60% /boot tmpfs 380M 0 380M 0% /run/user/1000 [root@localhost ~]# [root@localhost ~]# vgdisplay -v ... Total PE 1922 Alloc PE / Size 1912 / <7.47 GiB Free PE / Size 10 / 40.00 MiB ... Total PE / Free PE 1922 / 10 ...
手順
インスタンスをシャットダウンする。
mfham@mac ~/V/CentOS7> pwd /Users/mfham/VirtualBox VMs/CentOS7 mfham@mac ~/V/CentOS7> ll total 16781328 -rw------- 1 mfham staff 4.0K Aug 26 03:45 CentOS7.vbox -rw------- 1 mfham staff 4.0K Aug 26 03:34 CentOS7.vbox-prev -rw------- 1 mfham staff 8.0G Aug 26 03:45 CentOS7.vdi drwx------ 6 mfham staff 204B Aug 26 03:33 Logs drwx------ 2 mfham staff 68B Feb 12 2018 Snapshots mfham@mac ~/V/CentOS7> VBoxManage clonehd CentOS7.vdi CentOS7_dynamic.vdi --format VDI --variant Standard 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% # 合計15GBに mfham@mac ~/V/CentOS7> VBoxManage modifyhd CentOS7_dynamic.vdi --resize 15360 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% mfham@mac ~/V/CentOS7> VBoxManage clonehd CentOS7_dynamic.vdi CentOS7_new.vdi --format VDI --variant Fixed 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
設定->ストレージ->コントローラー:SATAに新しいvdiをセットする。
インスタンス起動する。
確認する。
[root@localhost ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 6.7G 6.2G 537M 93% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 298M 200M 60% /boot tmpfs 380M 0 380M 0% /run/user/1000
まだ変わっていない。拡張する。
インスタンス停止する。
参考URLに記載されている通り、GParted -- Downloadをダウンロードする。
それをVirtualBoxのGUIで、設定->ストレージ->コントローラー:IDEに追加する。
起動すると設定画面が表示される。
私はLanguageがEnglishでも構わないので33を選んだ。
終わったらインスタンスを停止する。
VirtualBoxのGUIで、設定->ストレージ->コントローラー:IDEでGPartedの割り当てを削除する。
再度インスタンスを起動する。
確認する。
[root@localhost ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 6.7G 6.2G 537M 93% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 298M 200M 60% /boot tmpfs 380M 0 380M 0% /run/user/1000 [root@localhost ~]# [root@localhost ~]# vgdisplay -v ... Alloc PE / Size 1912 / <7.47 GiB Free PE / Size 1802 / <7.04 GiB ... --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos ... Total PE / Free PE 3714 / 1802 ...
割り当てる。
[root@localhost ~]# lvextend -L +7G /dev/centos/root Size of logical volume centos/root changed from <6.67 GiB (1707 extents) to <13.67 GiB (3499 extents). Logical volume centos/root successfully resized. [root@localhost ~]# vgdisplay -v ... Alloc PE / Size 3704 / <14.47 GiB Free PE / Size 10 / 40.00 MiB ... Total PE / Free PE 3714 / 10 ... [root@localhost ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 6.7G 6.2G 537M 93% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 298M 200M 60% /boot tmpfs 380M 0 380M 0% /run/user/1000
サイズを変更する。
# NG [root@localhost ~]# resize2fs /dev/centos/root resize2fs 1.42.9 (28-Dec-2013) resize2fs: Bad magic number in super-block while trying to open /dev/centos/root Couldn't find valid filesystem superblock. # OK [root@localhost ~]# xfs_growfs /dev/centos/root meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=436992 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 spinodes=0 data = bsize=4096 blocks=1747968, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1747968 to 3582976
事後状態
[root@localhost ~]# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/mapper/centos-root 14G 6.2G 7.6G 45% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 8.5M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda1 497M 298M 200M 60% /boot tmpfs 380M 0 380M 0% /run/user/1000 [root@localhost ~]#
終わりに
参考URLを見ながらなんとか拡張できたけど、ファイルシステムの理解をしながらやったわけではないのでどこかで理解をしたい。
【Linux・CentOS7】 LVM によるディスクの管理について解説 | 100%レンタルサーバーを使いこなすサイト読んでみたり。
【感想】プログラマのためのSQL
サイバーマンデーセール(Kindle本)で購入したもの、購入しなかったもの - メモの時に購入した
プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたにのKindle版を読み終えました。
前提
データ
Kindleを使ったおかげでハイライト数、ブックマーク数を簡単に取得できたので公開します。
ハイライト:頭に入れておきたいものにつけました。
ブックマーク:頭に入れておきたいもので、長文やSQLが含まれているものにつけました。
※各章がどんな内容なのかはAmazonのなか見!検索をご確認ください。
章 | ハイライト数 | ブックマーク数 |
---|---|---|
1 | 0 | 0 |
2 | 0 | 0 |
3 | 0 | 0 |
4 | 0 | 0 |
5 | 3 | 0 |
6 | 0 | 0 |
7 | 0 | 0 |
8 | 0 | 0 |
9 | 6 | 1 |
10 | 5 | 0 |
11 | 5 | 1 |
12 | 5 | 2 |
13 | 12 | 6 |
14 | 0 | 1 |
15 | 14 | 4 |
16 | 6 | 1 |
17 | 4 | 0 |
18 | 4 | 2 |
19 | 5 | 0 |
20 | 3 | 0 |
21 | 13 | 3 |
22 | 14 | 3 |
23 | 5 | 4 |
24 | 7 | 1 |
25 | 13 | 5 |
26 | 9 | 3 |
27 | 1 | 0 |
28 | 5 | 10 |
29 | 6 | 2 |
30 | 3 | 2 |
31 | 0 | 1 |
32 | 0 | 0 |
33 | 1 | 0 |
34 | 1 | 0 |
35 | 0 | 1 |
36 | 1 | 0 |
37 | 0 | 0 |
38 | 3 | 3 |
39 | 15 | 4 |
NULLの話やIN、EXISTS述語など、すぐに使えそうなことに対して多くのハイライトをしていたようです。
感想
あくまで個人的な感想です。
- 一度で大体理解できたか (1 2 3 4 5)
- 私の知識不足か、特に後半は理解できずにざっと読んだところが多かったです。
- 一方で「なるほどー」と感じたところも多かったです。
- 後輩に勧めるか (1 2 3 4 5)
- 最低限SQL理解して使えていますよっていう後輩になら勧めると思います。
- ただ、一部理解できなかったところ、理解しても業務にすぐ活かせるのかわからないところもあったので、そういう部分があったよとも合わせて伝えます。
- ハイライト数、ブックマーク数が少ない章は理解できなくてざっと読んだ可能性が高いです。特に後半部分。
- 先輩に勧めるか (1 2 3 4 5)
- 単に先輩がどういう風に感じるか知りたいです。
- 私が理解できていない部分に関しては教えていただけたら嬉しいです。
- 通勤時間に読むのに適していたか (1 2 3 4 5)
- 買って良かったか (1 2 3 4 5)
- 新しく知ったこともあり、また面白いなーという感情も生まれました。
- 一通り読んだぜっていうドヤ顔的な自己満足ももちろんあります。
今後の展望
- ハイライト、ブックマークしたところを読み返す。
- サンプルSQLを書いて実行してメモする(SQLクイズを作る)。
- 持っている達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)や会社所有の本(理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)かSQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)のどちらかがあった)を読んで、「あーこれプログラマのためのSQLに書いてあったわー」っていう状態をつくって記憶を定着させる。
- 改めてゆっくり理解できなかった章を読む。
【Windows7】iTunesがアンインストールできないときの対応
環境
解決方法
- Windows 7 以降で iTunes とその関連ソフトウェアコンポーネントを削除して再インストールする - Apple サポート を見て、関連コンポーネントの削除順序を確認しておく。
- プログラムのインストールまたは削除をブロックしている問題を解決するにあるツールを利用する。
コントロールパネルの「プログラムと機能」からは削除できなかった"iTunes"と"Apple Software Update"を削除することができました。
※私は"iTunes"と"Apple Software Update"の削除後、"Apple Mobile Device Support"以降の削除を行わずに再インストールを行いました。
サイバーマンデーセール(Kindle本)で購入したもの、購入しなかったもの
今Amazonでサイバーマンデーセールが開催されています。
私がKindle本(50%OFF以上)の中で購入したもの、購入しなかったものを簡単な理由付きで紹介します。
(セール本を数十ページングチェックし気になるものを一度ほしい物リストに追加、そして再度それをチェックして購入するかどうかを決めました)
購入合計金額は12,875円でした。読み終えた後にこれ以上の価値を得たいと思います。
リストをみると、どうやら私は難しい内容のことがマンガで書かれていたら購入する傾向にあるようです。
購入したもの
DBやSQLのこともっと深く知りたいという欲求がここ数ヶ月めちゃくちゃあります。
この本を今すべて理解できるとは思わないですが、将来のために買っておこうという感じです。
アドラー心理学という単語は知っているものの具体的なことはまだ知りません。
そんな中、Amazonレビューを見て、物語調なら読みやすいのかなと思ってえいやで購入しました。
有名なので。
同上。
こちらはハードカバー版を持っているのですが、Kindleで読めると楽かなと思い購入しました。
マンガは読みやすいので・・・
マンガは読みやすいので・・・
50%以上OFFとはいえ1,000円超えるのでどうしようかと思ったのですが、今後自分でもサービスを作っていきたいのでいずれ参考になると思って購入しました。
単行本ページでのなか見検索で中身を確認したとき、これなら読むかなって思えたのも大きいです。
Webデザインに関して今の優先順位は低めで、かつこの本も50%以上OFFとはいえども1,000円弱するのでスルーしようかと思ったのですが、なか見検索で中身を確認したときに読みやすそうだったのでえいやで購入しました。
最近株に興味があります。
レビューが高かったのと292円で買えるのでえいやで購入しました。
後述の購入しなかったものに入れているNLPのほうのレビューではマンガ少なめなことが書いてあり、この本もそうなのかな?と思いつつ興味をそそられたのでえいやで購入しました。マンガが入っていなかったらいったんスルーしていたと思います。
結構頻繁に会社で眠くなり、そして最近体もあちこちボロが出てくるようになりました。
なか見検索で中身を確認したときに読みやすくわかりやすそうだったので購入しました。
今回たくさん購入した中で一番最初に読む予定です。
タイトルに惹かれ、またなか見検索で中身を確認したときに読みやすそうだったので購入しました。
今回購入した中で2番目に読むと思います。
U理論という言葉を初めて聞いたのですが、レビューが高かったのとマンガなら読めそうなのでえいやで購入しました。
コーチングは元々興味があり、レビューが高かったのとマンガなら読めそうなのでえいやで購入しました。
「26万部(2017年9月時点)のベストセラー」ということを知らなかったのですが、なんかパッとタイトルを見たときに気になってしまいマンガなら読めそうなのでえいやで購入しました。
安いしApacheとCentOS7のことがわかるならと思ってえいやで購入しました。
マーケティングにも興味がありえいや購入しました。
本当に10時間で学べるかという確認もしてみたいです。
安かったので。
好かれたい。
購入しなかったもの
Illustratorを使えるようになりたいと思っているものの今の優先順位は低めです。
最初はAdobeのIllustratorチュートリアル | Illustrator CCの使い方を見てみようと思っています。
Bitcoinに興味があるものの手を出さなそうなので、いったん情報に関してはウェブを頼ろうと思ってスルーしました。
同上。
270円なので買ってもいいかなと思ったのですが、kindleunlimitedなら読めることと自分の欲求を抑える訓練のためスルーしました。
ぱっと見気になってほしい物に入れて見たのですが、その後Amazonレビューを見ていったんstayしようと思いました。
なか見検索で中身を確認したときにマンガ調で読みやすそうで迷ったのですが、kindleunlimitedなら読めるということと700円くらいするのでいったんスルーしました。
英語メモ
記事
A Tailwind CSS Preset for Laravel 5.5 - Laravel News
Uploading Images to Cloudinary with Laravel (sponsor) - Laravel News
Learn How to Write a Vue JS Wrapper Component - Laravel News
Laravel v5.5.21 Released - Laravel News
Visual Studio Announces Live Share – Real-Time Editor Collaboration - Laravel News
Atom Teletype – Code Collaboration in Realtime - Laravel News
Laracasts: Free Visual Studio Code Course - Laravel News
単語
- rave
夢中になってしゃべる
- imperative
緊急の、必須で
- For the sake of〜
〜のために
- ubiquitous
至る所にある
- emit
発行する、送る
- leap
跳ぶ
- lag
のろのろ歩く
- Coincidentally
(偶然)一致して、同時に
詐欺
- speculation
思索、憶測
- embrace
含む、抱擁する、取り囲む
メモ
VSCodeの時代なのか〜?