ディスクからのファイル一覧キャッシュ目的で大きなオブジェクトを作ったらSSDに負けたw
tag: wiki
オレwikiの起動時のディスクからのファイル一覧読み込み時、ファイルの数だけ大きな管理用classオブジェクトを作って後続処理に引き渡してたら、SSDディスクアクセスより遅くなるケースがあってワロタw
HDD搭載マシンならこれでも高速化するのだが、SSD搭載マシンだと管理用オブジェクトの数と大きさによっては遅くなるケースが出てきそう。
手元の例だと管理用classオブジェクト数が2倍になると、SSDからファイル一覧を読み込む処理に起動時間で負ける。
ファイル名やディレクトリ位置で判断して不要な管理用オブジェクトを作らないフィルタ処理をいれ、オブジェクト数を約半分にすると起動時間の高速化につながった。
大きな管理用オブジェクトの場合、数作るとえらいことになるな....SSDだとディスクに負けるくらいに...。
アメリカ大統領選挙 日本時間の11月3日夜から投票開始
今回も票読み難しいね。
バイデン優勢と報道されているけど、どうなることやら。
オレ予想では、投票率が100%超える地区が出てくると思うけどどうかなwww
今回は郵便投票が7000万票を超えるらしいので、開票にはずいぶん時間がかかるはず。 大統領が決まるのは12月くらいかもしれん。
5ちゃんねるにアメリカ大統領選挙関連スレが立ちまくっててワロタw
日本の選挙にも少しは興味持てよなーとツッコミが入るレベル。
優勢判断はテレビ局の系列(FoxかCNNかABCか)によって反対の内容を報道してて草。
1%〜2%の差を争う超激戦模様だしそんなものか。
helm v3 の使い方
tag: helm3, helm, ingress, kubernetes
なんか使い方忘れていたのでメモ。
# 公式repo追加
helm repo add stable https://charts.helm.sh/stable
# repoから検索
helm search repo ingress-nginx --max-col-width 120
# hubから検索
helm search hub ingress-nginx --max-col-width 120
# ingressをhelmからインストール
# https://hub.helm.sh/charts/ingress-nginx/ingress-nginx
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
# ingressのhelmの調査
helm pull ingress-nginx/ingress-nginx
tar xvzf ingress-nginx*.tgz
helm template ingress-nginx | less
# 色々見物
helm show readme ingress-nginx/ingress-nginx
helm show values ingress-nginx/ingress-nginx
# ingress のインストール 外部IPを明示的に指定
helm install my-ingress-nginx ingress-nginx/ingress-nginx --set controller.service.externalIPs="{192.168.54.81}"
北海道が飛ばしている模様
tag: 武漢肺炎
やっぱ寒いとダメなんか。
エアコン20度で自動設定してたら冷房に切り替わりやがったwwやめろww
wsl2側のIPアドレスをhostsに登録する
tag: wsl2, windows10
WSL2のデフォルト設定では、WSL2側のIPアドレスはWindows PCとは違うものがついていて、毎回ランダムに変わる。
PS C:\HOME> wsl ip a
4: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
inet 172.24.156.166/20 brd 172.24.159.255 scope global eth0
valid_lft forever preferred_lft forever
PS C:\HOME>
Windows PCのPowerShellとかから、wsl ip a とすれば上のような表示が得られるので、 文字列加工して C:Windows/System32/drivers/etc/hosts を編集する MSYS2 bash スクリプトを作成。 wsl2.hyperv.local というホスト名でアクセスすれば、wsl2側のIPアドレスを指す。
cat > wsl-ubuntu-start.sh << "EOF"
#!/bin/bash
#
# wsl2側のIPアドレスを/etc/hostsに登録する
#
function wsl-ubuntu-start() {
# wsl コマンド存在チェック
if type wsl 1>/dev/null 2>/dev/null ; then
WSL_COMMAND_FOUND=yes
else
echo "wsl command not found. abort."
return 1
fi
WSL2_HOST_IP_ADDR=$( wsl ip -4 -br a | grep eth0 | awk '{print $3}' | sed -e 's%/.*$%%g' )
if [ -z "${WSL2_HOST_IP_ADDR}" ] ; then
echo "wsl ip addr is null. abort."
return 1
fi
WSL2_HOST_NAME="wsl2.hyperv.local wsl2"
WSL2_HOSTS_LINE="${WSL2_HOST_IP_ADDR} ${WSL2_HOST_NAME}"
WINDOWS_HOSTS_FILE="/c/windows/system32/drivers/etc/hosts"
WINDOWS_HOSTS_FILE_2="/c/windows/system32/drivers/etc/hosts_2"
cp ${WINDOWS_HOSTS_FILE} ${WINDOWS_HOSTS_FILE_2}
RC=$?
if [ $RC -ne 0 ]; then
echo "file copy failed. abort."
return 1
fi
cat ${WINDOWS_HOSTS_FILE_2} | grep -v "${WSL2_HOST_NAME}" > ${WINDOWS_HOSTS_FILE}
echo "${WSL2_HOSTS_LINE}" >> ${WINDOWS_HOSTS_FILE}
cat ${WINDOWS_HOSTS_FILE}
}
wsl-ubuntu-start
#
# end of file
#
EOF
chmod +x wsl-ubuntu-start.sh
bash wsl-ubuntu-start.sh
なお、.wslconfig の設定次第では以下のような設定があるので、WSL2側でLISTENしているポートがあれば、Windows PC側でLISTENしているように見せかける設定がある。
localhostForwarding=true # WSLのネットワークポート待ち受けを、ホストマシンにフォワーディングする
つまり、http://localhost:3000/ とかにアクセスすると、実はWSL2側で動作している node express に行く、というようなことも可能らしい。
debian adoptopenjdk install
tag: debian10, adoptopenjdk
Debianでadoptopenjdkをインストールする手順のメモ
上のサイトでインストール方法が表示される。
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ sudo apt update sudo apt search openjdk sudo apt install -y adoptopenjdk-15-hotspot
emacs 24.4以降 に標準搭載されている emacs内ブラウザ eww
tag: eww, emacs
MSYS2のemacsが27.1とかに上がったので、emacs 24.4以降 に標準搭載されている emacs内ブラウザ eww がようやく試せるようになった。
キーバインドは以下らしい。
| M-x eww | EWWの起動 |
| q | EWWを閉じる |
| g | ページの再読み込み |
| w | ページのURLをコピー |
| d | リンク先ファイルをダウンロード(“~/Downloads/“) |
| l | ページを戻る |
| r | ページを進む |
| H | 履歴を表示(eww history バッファが開く) |
| b | ブックマークに追加 |
| B | ブックマーク一覧を表示(eww bookmarksバッファが開く) |
| & | ウェブサイトを外部ブラウザで開く |
| v | ページのソースを表示する |
| C | クッキー一覧を表示する |
| TAB | 次の入力フォームにフォーカスを移動 |
mintty上でテキストonlyでも動く。
w3mみたいに便利に使えそうだ。
今の所、条件は不明ながら表示にめっちゃ時間がかかるWebページがある。 なんだろう?
【国内感染】18日 2201人感染確認 過去最多に
tag: 武漢肺炎
やっぱ冬になると凄いんだなぁ・・・
去年の武漢の11月みたいな感じかね。
あの頃の武漢は謎の呼吸器疾患で工場の作業者一家全員倒れる事例が続出して準備してた交代要員も尽きて工場のラインが止まってた。
日系企業が中国全土から各地域担当の役員を(物理的に)集めて大会議を開催したのは良いが、武漢から来た担当役員の周りには誰も座らなかったという。
JavaScriptでGPSデータを取得する
tag: gps, javascript, wiki
navigator.geolocation.getCurrentPosition(callBackSuccessGps, callBackFailureGps, { enableHighAccuracy: true, timeout: 6000, maximumAge: 600000 });
みたいに使う模様。
ふむ。GPS座標とれた。
緯度:35.NNNNNNN 経度:139.NNNNNNN 高度:101.NNNNNNNNNNNNNN 位置精度:702.NNNNNNNNNNNNN 高度精度:null 移動方向:null 速度:null
ブラウザ上のGPSボタンクリックで上の内容がTEXTAREAに挿入される。
ただ、このままだと使いにくいな。 1行にまとめて出力したいし、Google Mapへのリンクも自動生成したいところ。
GPS座標を表現する一般的な表記(URIみたいな)ぐぐったけど出てこない。うーん。 たとえば WGS84://35.NNNNNNN,139.NNNNNNN みたいなのあっても良いと思うんだが。 ぐーぐるまっぷのパラメータで言えば@35.NNNNNNN,139.NNNNNNN,17zとかだったので、この形式でいいかなー。
何県何市のどこの店くらいの表示も欲しいけど、これは何かAPI使わないと無理だな。
WSL2 Ubuntu 20.04 Docker 環境構築
tag: wsl2, docker, linuxbrew
linuxbrewなんてものがあるのか...。
WSL2を使うDocker環境構築では、ぐぐる検索(英語)だと Docker for Windows Desktop (WSL2対応版) のインストール記事が上位にヒットするけど、 この記事では WSL2 Ubuntu側にストレートにDockerをインストールしている。
linuxbrew使っているのはanyenvのインストールで、docker関連は普通にapt使っているあたりも面白い。
以下、Qiitaの記事のまんま。WSL2へのDockerのインストール
# アップデート sudo apt update && sudo apt upgrade -y # -- Ubuntu 20.04 on WSL2 # Docker (Community Edition) インストール curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" sudo apt update && sudo apt install -y docker-ce ## dockerデーモン起動 sudo service docker start # WSL2 では、デーモンをスタートアップに登録することができない # スタートアップに登録したい場合は、Windowsのタスクスケジューラに登録する必要がある # 参考: https://qiita.com/Ningensei848/items/75adeb29bb143633d60c # Windows再起動の度に sudo service docker start すれば良いだけなので、ここではスタートアップ登録までは行わない # WSL2 には cgroup 用ディレクトリがデフォルトで作られていないため作成しておく ## これをしておかないと Docker でプロセスのグループ化が必要になったときにエラーが起きる sudo mkdir -p /sys/fs/cgroup/systemd sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd # docker-compose 導入 sudo curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # Dockerを sudo なしで実行可能に ## ※ カレントユーザーをdockerグループに所属させた上で docker.sock へのグループ書き込み権限を付与すればよい sudo gpasswd -a $USER docker sudo chgrp docker /var/run/docker.sock sudo service docker restart # 一度ログアウトしないと反映されないため、一旦 exit exit
WSL2スタートアップ時にdocker serviceを起動するハック
tag: wsl2, docker
wsl起動時にdocker serviceを開始するハック。これまたQiitaの記事のまんま。
# /sbin/mount -a 実行時に rc ファイルシステムをマウントするように設定 echo 'none none rc defaults 0 0' | sudo tee -a /etc/fstab # => これにより起動時に /sbin/mount.rc ファイルが呼び出されるようになる # /sbin/mount.rc ファイルを実行可能スクリプトとして作成 echo '#!/bin/bash' | sudo tee /sbin/mount.rc sudo chmod +x /sbin/mount.rc # service docker start を /sbin/mount.rc に追記 echo 'service docker start' | sudo tee -a /sbin/mount.rc # WSL2 には cgroup 用ディレクトリがデフォルトで作られていないため、以下もスタートアップスクリプトに登録しておく ## これをしておかないと Docker でプロセスのグループ化が必要になったときにエラーが起きる echo 'mkdir -p /sys/fs/cgroup/systemd && mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd' | sudo tee -a /sbin/mount.rc # スタートアップスクリプト確認 sudo cat /sbin/mount.rc
windows 上の local tomcat 9 serverに オレオレ証明書をインストールしてHTTPSでアクセスする
tag: tomcat9, オレオレ証明書, windows, keytool
オレwikiにGPSボタンを付けたのは良いが、HTTPSじゃないと動作しないのでlocal tomcatをHTTPS化。
以下PowerShellで実施。
# 各種定義、ディレクトリ定義 (Power Shell)
$IPADDR = "192.168.1.35"
$KEY_STORE_DIR="C:/HOME/tomcat/ssl"
$KEY_STORE_FILE="${KEY_STORE_DIR}/localhost-rsa.jks"
$TOMCAT_BASE_DIR="C:/Program Files/Apache Software Foundation/Tomcat 9.0"
# キーストアのディレクトリを適当に作成
mkdir "${KEY_STORE_DIR}"
# キーペアを新規作成。
# キーストアのパスワードは今回は changeit を指定。
keytool -genkeypair `
-alias tomcatcert -keyalg RSA `
-keystore ${KEY_STORE_FILE} -storepass changeit `
-validity 180 `
-dname "CN=${IPADDR} , O=${IPADDR} , C=JP" `
-ext "SubjectAlternativeName=IP:${IPADDR}"
# tomcatのディレクトリ以下にssl/localhostg-rsa.jksファイルをコピーする。
mkdir "${TOMCAT_BASE_DIR}/ssl"
cp ${KEY_STORE_FILE} "${TOMCAT_BASE_DIR}/ssl"
server.xmlファイルを編集する。
code "C:/Program Files/Apache Software Foundation/Tomcat 9.0/conf/server.xml"
今回はJSSE NIO2を使ってみた。 8443のConnectorにキーストアへのパスを記載する。キーストアのパスワードも指定する。
編集内容
<!-- Define an HTTP/1.1 Connector on port 8443, JSSE NIO2 implementation -->
<Connector protocol="org.apache.coyote.http11.Http11Nio2Protocol"
sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
port="8443"
maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:/Program Files/Apache Software Foundation/Tomcat 9.0/ssl/localhost-rsa.jks"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS"/>
tomcatを起動する。
# サービス一覧の表示 Get-Service -name "to*" # サービスを再起動する場合は以下。 Restart-Service Tomcat9
tomcatにアクセスする。
ブラウザの警告(インチキな証明書を使っている)がでるが、危険を承知で進むとHTTPSで通信していることになる。
openjdk 15 の keytoolで作ったオレオレ証明書のデフォルトの有効期限は3ヵ月だった。短いw
虚構推理2期決定とな
tag: anime
https://twitter.com/kyokou_suiri/status/1332157196541579265 (1) 「虚構推理」TVアニメ公式さんはTwitterを使っています 「いつも応援ありがとうございます! この度、なんと… / #虚構推理 TVアニメ第2期制作決定!
雪女編まで行けるかな?