$ sudo hostnamectl set-hostname <hostname>
`crontab -e` で設定した内容はどこに保存されているか?
`crontab -e` で設定した内容はどこに保存されているか?
Linux
/var/spool/cron
macOS、Mac OS X
/var/at/tabs
subjectAltNameが設定されていない証明書はChromeで NET::ERR_CERT_COMMON_NAME_INVALID エラー
開発環境用に自己署名のSSL証明書を使っているサイトにChromeでアクセスしたら、
「この接続ではプライバシーが保護されません NET::ERR_CERT_COMMON_NAME_INVALID」というエラーになった。
自己署名証明書(Self-signed certificate)だが、クライアント側はMacではキーチェーンアクセスに登録してx.509基本ポリシーを「常に信頼」にしているし、Windowsでは「コンピューター証明書の管理」で「信頼されたルート証明機関」に登録してある。
CN(Common Name)とアクセスしているホスト名も一致している。
Chrome以外のブラウザでは問題ない。
Chromeでも問題なくアクセスできていたが、急にエラーになるようになった。
エラーメッセージに「このサーバーのセキュリティ証明書は[missing_subjectAltName]から発行されています。」とあるので、証明書にsubjectAltNameが設定されていないことが関係しているようだ。
原因
Chrome 58 以降で、ドメイン名と証明書の照合にcommonNameが使われず、subjectAlternativeNameのみを使用するようになった。(ただし、Chrome 65 までは、EnableCommonNameFallbackForLocalAnchorsを設定すればcommonNameを使用できるらしい。)
https://support.google.com/chrome/a/answer/7391219?hl=en
解決方法
subjectAltNameを設定した自己署名証明書を作成する
openssl.cnfをコピーしたファイルにsubjectAltNameを設定して証明書作成時に指定する。
- openssl.cnfをコピー(下記はRedHat系の例。openssl.cnfの場所は環境によって読み替える。Ubuntuは/etc/ssl/openssl.cnf、MacPortsなら/opt/local/etc/openssl/openssl.cnf)
$ cp /etc/pki/tls/openssl.cnf my-server.example.com.cnf
- コピーした設定ファイルのreqセクションのx509_extensionsがv3_caになっているので、v3_caセクションにsubjectAltNameを追加すればよさそうだ。
$ vi my-server.example.com.cnf
[ req ] ... x509_extensions = v3_ca # The extentions to add to the self signed cert ...
v3_caセクションにsubjectAltNameを設定
[ v3_ca ] ... subjectAltName=DNS.1:my-server.example.com ...
subjectAltNameを複数設定することもできる。
subjectAltName=DNS.1:my-server.example.com,DNS.2:my-server2.example.com
詳しくは、`man 5 x509v3_config` を参照。
- 秘密鍵の作成
$ openssl genrsa -out my-server.example.com.key 2048
- 証明書の作成(-configに作成した設定ファイルを指定する)
$ openssl req -new -x509 -days 36500 -sha256 -config my-server.example.com.cnf -key my-server.example.com.key -out my-server.example.com.crt
Go の対話的シェル(REPL) gore
Go の対話的シェル(REPL)
Rubyのirbみたいなもの。
https://github.com/motemen/gore
CentOS6にsclのdevtoolsetをインストール
CentOS6でnodejs(v6.9.1)をビルドしようとしたら、makeでエラーになった。
gccとg++の4.8以降が必要だが、CentOS6のgccは4.4.7だからだ。
node-v6.9.1/BUILDING.md
Prerequisites:
* `gcc` and `g++` 4.8 or newer, or
* `clang` and `clang++` 3.4 or newer
* Python 2.6 or 2.7
* GNU Make 3.81 or newer
そこで、sclでgccとg++の4.8以降をインストールしてビルドすることにした。
$ sudo yum install centos-release-scl $ sudo yum install scl-utils $ sudo yum install devtoolset-4-gcc devtoolset-4-gcc-c++ devtoolset-4-binutils $ scl enable devtoolset-4 bash $ gcc --version gcc (GCC) 5.2.1 20150902 (Red Hat 5.2.1-2) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
devtoolset-3、devtoolset-4がある。devtoolset-4にしてみた。
devtoolset-4で全部インストールすると大量なので、nodejsのビルドに必要なgcc、g++とbinutilsのみインストールした。
$ scl enable < コレクション1> [< コレクション2> ...] bash
で、インストールしたコレクションが利用できる環境がセットされたbashが起動する。
システム起動時からsclでインストールしたコレクションを有効にしたい場合は、/etc/profile.dに以下のようなファイルを作成しておけばよい。
$ cat /etc/profile.d/enabledevtoolset-4.sh #!/bin/bash source scl_source enable devtoolset-4
https://access.redhat.com/solutions/527703
注意点
devtoolset-4を有効にすると、`sudo -i` がエラーになったり、リモートコンピューターからのrsyncで `--rsync-path="sudo rsync"` がエラーになるなど、sudoの動作がおかしい場合がある。
$ sudo -i [sudo] password for foo: /var/tmp/sclXXXXXX: line 8: -i: コマンドが見つかりません
https://bugzilla.redhat.com/show_bug.cgi?id=1319936
そのような場合は、明示的に `/usr/bin/sudo` を使うしかないようだ。
Mac OS XのtopはCPU順でない
Mac OS XのtopはデフォルトがCPU順でない。pidの降順となっている。
ソートを変更するには、
$ top -o cpu
または
$ top -o -cpu
で起動するか、top起動後に、o と入力後、cpu(または-cpu) と入力してReturnキーを押す。
+を付けると昇順になる。
その他のソート可能項目については、man top を参照。
Postmanが便利
REST APIのテストに便利。
CentOS 6.7のyum updateでエラー `http://mirror.centos.org/centos/6/SCL/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"`
CentOS release 6.7 (Final)
yum updateで以下のエラー
http://mirror.centos.org/centos/6/SCL/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" 他のミラーを試します。 エラー: Cannot retrieve repository metadata (repomd.xml) for repository: scl. Please verify its path and try again
解決方法
$ sudo yum remove centos-release-SCL $ sudo yum update # CentOS-6.8にアップデート $ sudo yum install centos-release-scl $ sudo yum update
Androidアプリのパッケージファイル(apk)を実機にインストールする
adb install -r <apkのパス>
- -rは、既存のアプリを上書きする。
- 複数のデバイスが接続されている場合は、-s オプションでデバイスのシリアル番号を指定する。
デバイスのシリアル番号は、$ adb devices
で確認できる。
例:
$ adb -s emulator-5554 install -r /Users/pistolfly/AndroidstudioProjects/MyApp/app/release/app-release.apk
Androidエミュレータや実機にテキストをペーストする
$ adb shell input text 'ペーストしたい文字列'
- adbのパスは、Android StudioのProject SturctureのSDK Locationで確認して、環境変数PATHに加えておく。
- 複数のデバイスが接続されている場合は、-s オプションでデバイスのシリアル番号を指定する。
デバイスのシリアル番号は、$ adb devices
で確認できる。
- ペーストしたい文字列をシングルクォート(')で囲っていても、シェルのメタ文字や$0、$1...等が展開されてしまうようだ。
メタ文字や$はバックスラッシュ(\)でエスケープすること。
例:
$ adb -s emulator-5554 shell input text 'ペーストしたい文字列'