Switch 内で変数持続させたい
switch(1){
case 0: let k = 1
case 1: console.log(typeof k === "undefined" ? 100 : 200)
}

typeof を使っていても 「k is not defined」
switch の値が 0 なら動く (200 が表示される)

{
console.log(typeof v)
let v = 1
}

↑がエラーになるみたいなもの

case 1 でも let 宣言すると 「'k' has already been declared」

switch の外に宣言しておくしかないみたい

ブロックを書かなくても次の case で使えないならメリットはなさそう
それなら case の中が自動でブロックスコープになってくれてもいいのに
JavaScript の上書きできるプロパティ
よくわからなくなるので

const x = {}
Object.defineProperty(x, "a", {configurable: false, writable: false, value: 1})
Object.defineProperty(x, "b", {configurable: false, writable: true, value: 1})
Object.defineProperty(x, "c", {configurable: true, writable: false, value: 1})
Object.defineProperty(x, "d", {configurable: true, writable: true, value: 1})

// Object.defineProperty(x, "a", {value: 2}) -> cannot redifine
Object.defineProperty(x, "b", {value: 2})
Object.defineProperty(x, "c", {value: 2})
Object.defineProperty(x, "d", {value: 2})

// {a: 1, b: 2, c: 2, d: 2}

configurable と writable の両方が false のは再定義できない
npm install での package.json への書き込み
--save というのはない
ヘルプに載ってないし古い書き方?

使えるのは

--save-prod (-P)
--save-dev (-D)
--save-optional (-O)
--no-save

save-prod は 「dependencies」
save-dev は 「devDependencies」
save-optional は 「optionalDependencies」
に追加される

no-save は package.json に書き込みしない

指定しないと save-prod 扱いで dependencies に追加される
dependencies はパッケージを実行するときに必要なもの
ライブラリとかフレームワークとか

devDependencies は開発時に必要なもの
テストとかデバッグ用のツールとか

バージョン指定はその時の最新版と互換性あるものとして 「^4.0.0」 みたいな表記になる
正確にその時インストールしたバージョンを保存するには --save-exact (-E) をつける
fedora の PHP 実行環境は FPM/FastCGI
root@localhost ~# cat /etc/fedora-release 
Fedora release 27 (Twenty Seven)
root@localhost ~# dnf install -y php httpd
root@localhost ~# systemctl restart httpd
root@localhost ~# echo "<?php phpinfo();" > /var/www/html/phpinfo.php
root@localhost ~# curl http://localhost/phpinfo.php 2>/dev/null | grep FPM
<tr><td class="e">Server API </td><td class="v">FPM/FastCGI </td></tr>
Composer.phar がほしい
単純に composer.phar というファイルがほしくてググっても この公式サイトではインストーラとかセットアップファイルとか
他の使い方説明のページを見てもダウンロード URL 書いてるところが全然ない
コマンド実行とかなしで単にファイルがほしいだけなのに

もしかしてプログラムでビルドとか必要?

github にあったりしないかなと探しているとなんとかバージョンごの phar ファイルを置いてるところを発見
https://github.com/composer/getcomposer.org/tree/master/web/download

ここで落として満足してたのだけどあとから見直したら最初の公式サイトの下の方のバージョン書いてるところ
そこを押せばダウンロードできるファイルが composer.phar だった

なぜ気づかなかったんだ……
セットアップ用の実行ファイルとかがダウンロードできるのかと思ってたよ
Node.js で SQLite のモジュール読み込みが遅い
Node.js で SQLite を使うために sqlite3 モジュールをインポートするとけっこう待たされる
インポートだけして console.log すると表示されるまで 2, 3 秒程度
実際の DB ファイルにはアクセスせず本当にモジュールロードだけ
実行して結果見てソースコード書き換えて再実行を繰り返すときにけっこう待たされる
なんでこんなに遅いんだろう?
PostgreSQL の Unicode
E プレフィックスを付けると書ける
ないと 「\」 がエスケープ扱いされない

postgres=# select E'\u3042\u3044\u3046';
?column?
----------
あいう
(1 行)

x プレフィックスで一文字ずつ文字コードから文字変換もできる

postgres=# select chr(unnest(array[x'3042', x'3044', x'3046']::int[]));
chr
-----



(3 行)

x つけたのは型的には bit で int キャストすると 16 進数の数値リテラルみたいに使える

postgres=# select pg_typeof(x'3042'), x'3042';
pg_typeof | ?column?
-----------+------------------
bit | 0011000001000010
(1 行)
ライブドアブログのファビコン
いつのまにかライブドアブログのファビコンがちょっと変わってる
背景の水色だったのが青色になってちょっとくっきりした感じ
dnf の使い方サンプル
なにかおかしいとき

dnf clean all


履歴の一覧

sudo dnf history


履歴一覧から指定パッケージを含むものだけ

sudo dnf history git

upgrade もでてくる


履歴の詳細

sudo dnf history info 1

履歴の番号を指定する
スペース区切りで複数指定できる


指定のパッケージを含む履歴の詳細

sudo dnf history info python3

パッケージを含む履歴番号が複数あるなら全部表示される


ユーザがインストールしたものだけ

sudo dnf history userinstalled

依存関係で入ったのが出てこないので別環境に移行するときになにをインストールするか考えるときに便利
自分でインストールしてないのも少しある kernel, grub2, lvm2, xfsprogs など


パッケージの詳細

dnf info nano


指定パスのファイルを含むパッケージの詳細

dnf info /usr/bin/zsh


パッケージのインストール

sudo dnf install v8


指定パスのファイルを含むパッケージのインストール

sudo dnf install /usr/bin/fish


URL の rpm をインストール

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-28.noarch.rpm


ローカルの rpm をインストール

sudo dnf install /tmp/download/dmd-2.080.0-0.fedora.x86_64.rpm


グループをインストール

sudo dnf install @GNOME
sudo dnf group install GNOME

install からグループをインストールするには @ が必要
group install に @ つけるとグループが見つからない


グループのサマリー

dnf group


グループの一覧

dnf group list


グループの詳細

dnf group info KDE


パッケージの再インストール

sudo dnf reinstall sqlite


指定パスのファイルを含むパッケージの再インストール

sudo dnf reinstall /var/lib/pgsql


パッケージのアンインストール

sudo dnf remove php


指定パスのファイルを含むパッケージのアンインストール

sudo dnf remove /var/lib/mysql


パッケージすべてをアップグレード

sudo dnf upgrade


指定のパッケージをアップグレード

sudo dnf upgrade kernel


アップグレードのあるパッケージ一覧

dnf list upgrades


全パッケージの一覧

dnf list


パッケージ検索

dnf list fire\*
dnf search fire\*

list だとパッケージ名から検索する
インストール済みや利用可能などにわけられてる
search だと名前と概要から検索する
インストール済みかどうかは見えない


指定パスのファイルを含むパッケージを検索

dnf list /usr/bin/irb
dnf provides /usr/bin/irb

表示のされ方が違うけど結果は同じ


最近更新のあったパッケージ一覧

dnf list recent

最近がどれくらいなのかは知らない


インストール済みパッケージ一覧

dnf list installed
rpm -qa


リポジトリ一覧

dnf repolist
dnf repolist --all

--all があると有効無効も表示される


リポジトリの詳細

dnf repoinfo


指定リポジトリの詳細

dnf repoinfo fedora


アップデート情報

dnf updateinfo

アップデートの内容のサマリー
セキュリティ通知が 5 件 バグ修正通知が 20 件 みたいな情報が表示される


指定パッケージのアップデート情報

dnf updateinfo nginx


指定パッケージを必要としているパッケージを検索

dnf repoquery --whatrequires nodejs


指定パッケージをレコメンドするパッケージを検索

dnf repoquery --whatrecommends npm

npm なら nodejs がでてくる


パッケージの中のファイル一覧を表示

dnf repoquery -l micro
rpm -ql micro


インストールする rpm の場所(URL)を表示

dnf repoquery --location clang


エイリアスみたいなもの

dnf repoquery --whatprovides python

python をインストールすると実際にインストールされるパッケージを見れる
python2 が表示される
mysql だと community-mysql と mariadb の 2 つがあるけど実際にインストールされるのは mariadb のほう


OS アップグレード

プラグイン dnf-plugin-system-upgrade を入れて

sudo dnf system-upgrade download --releasever=28
sudo dnf system-upgrade reboot

ダウンロード後に reboot でアップグレードされる


nevra

name, epoch, version, release, arch のこと

httpd-0:2.4.33-5.fc28.x86_64

名前         : httpd
バージョン : 2.4.33
リリース : 5.fc28
アーキテクチ : x86_64
dnf のパッケージ関係がよくわかんない
repoquery に
--whatdepends <capability>
--whatconflicts <capability>
--whatenhances <capability>
--whatobsoletes <capability>
--whatprovides <capability>
--whatrecommends <capability>
--whatrequires <capability>
--whatsuggests <capability>
--whatsupplements <capability>

とかいろいろあるけどそれぞれが具体的にどういうものなのかドキュメントに書いてないしよくわからない
recommends と suggests とか何が違うの?
requires と recommends だと言いたいことはなんとなくはわかるけど recommends のものでも 拒否する選択肢出てこないし違いがわからない
recommends のパッケージは必須ではないから recommend されたパッケージを後から消しても元パッケージは消えない?

一番上の whatdepends はドキュメントにあるのに実際に使うと そんなオプションないってエラーでるし
usage のオプション一覧だと載ってない
同じバージョンのはずなのに
micro が dnf でもインストールできた
Github の README だと homebrew とか chocolatey とか snap とかいろいろ載っているのに yum/dnf はないから fedora だと自分でバイナリダウンロード必要だと思ってたけど fedora28 環境でなんとなく

sudo dnf install micro

ってやったらインストールできた
dnf でインストールできると いろいろな環境で楽に使えるから嬉しいね
CentOS だと EPEL リポジトリでも今のところ含まれてないみたい