ms Edge 本当にすごい確かにchromeの方がload早いことが多いけどそれ以上に省メモリであることが全体に対してパフォーマンスに良い影響を与えるし、webブラウザでパワーにぜ全振りしちゃうと広告とか最近のwebコンテンツ事情を考えると無駄遣いが大きくなりすぎる。chrome book使ったことないけどやっぱり重くなったりしちゃうんじゃないかなあ

チャットアプリ作っていきたいが2

続いて以下のようなかたちでもってチャットデータを永続化するための準備をすすめる

  • MySQLコンテナ起動しnodeコンテナと接続する
  • nodeコンテナと合わせてdocker-composeでセットアップできるようにする
  • MySQLのデータを永続化する(ディスクへ実ディレクトリを置く)

MySQLコンテナ起動

今回はwsl上のUbuntuでコンテナ起動するのでwindowsディスクをマウントするために起動コマンドはこういう感じになるイメージ

docker run --name hello-nginx -v /c/dev:/usr/share/nginx/html:ro -d -p 8080:80 nginx

この手順でいったんまずMySQL建てようと思ったらdocker-composeV3からはvolumes_fromが使えないらしくErrorする..
https://qiita.com/RW_876/items/1d2ee5726b91887aa594
のでこうしないといけない。修正して起動しmysql clientで接続テストしてok
https://qiita.com/yumetasuke/items/9905487564c5c96c8d4a
(clientがUbuntuにうまくinstallできなくてこの方法で迂回した..
soucelistは修正せずキャッシュ削除してsudo apt-get update -> installし直し)

docker-composeにまとめてnodeコンテナとnetworkを接続する

前回までで作ったTelepathのimageを起動するようにymlを書き換えつつさらにnetwork接続もすることにする

https://github.com/sh3eys/telepath/blob/master/docker-compose.yml

docker-compose upしたあとにnodeコンテナへbashログインして接続ためそうとおもったところでつまづいた
sudo apt install mysql-client-core-5.7
nodeコンテナだとこのpkg入らなかったErrorメッセージで指示された以下だったらinstallできた
mariadb-client-core-10.1
さいどnodeコンテナへbashログインして接続

# パスワード後で直さなあかんな..
mysql -h telepath-db -u example -p'example'

これでいったんnodeコンテナ側からmysqlコンテナへ接続できたいったんこれでok

sh3eys@DESKTOP-VUKTP3T:~/git/telepath$ docker-compose ps
    Name                  Command               State                 Ports
-----------------------------------------------------------------------------------------
telepath-app   docker-entrypoint.sh node  ...   Up      0.0.0.0:8080->3000/tcp
telepath-db    docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp

https://github.com/sh3eys/telepath
(MySQLデータが永続化できたかテストし忘れた..次回はそこから)

チャットアプリ作っていきたいが1

https://nodejs.org/ja/docs/guides/nodejs-docker-webapp/
まずはここからはじめていく

socket.ioでシンプルに実装してdockerで管理し、git pushまでが当面の目標 (本当はサーバー側をjavaでクライアント側をreactでとかおしゃれにやりたいけどまあとりあえず後でいい)
https://socket.io/get-started/chat/

とりあえず手元にnodejs/Express/socket.io環境をつくる

# nodebrewを導入する
curl -L git.io/nodebrew | perl - setup
## bashrcへ以下を追記してloadしとく
export PATH=$HOME/.nodebrew/current/bin:$PATH

# nodeをインストールする、現時点のstableは12系らしい
nodebrew ls-remote
nodebrew install-binary v12.16.3
nodebrew use 12
# 確認
node -v
npm -v

git環境整える(PC買い換えてからやってなかったから手順まとめ)

https://qiita.com/suthio/items/2760e4cff0e185fe2db9 ほぼこれに従うだけだが

# 古いもの確認してバックアップなり避難しとく
ls -al ~/.ssh

# 鍵ペアをつくってgithub等へ公開鍵を登録する
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub
## https://github.com/settings/keys
## Newで登録する

# 疎通確認
ssh -T git@github.com
## "You've successfully authenticated," でok

git pushする

https://nodejs.org/ja/docs/guides/nodejs-docker-webapp/
基本的に手順通りでportだけ8080->3000に変えた結果できた

こちらでやっていく https://github.com/sh3eys/telepath

20200426_Jetty開発環境をつくる2

https://gihyo.jp/dev/feature/01/websocket/0002
今度はマシンが貧弱なのでEclipse部分をVSCodeで対応したいと思った。Mavenは4/23記事で準備できてるはず....だったけどできないjava.home設定しても動かない

"java.home":"C:\\Program Files\\Java\\jdk1.8.0_161"

settings.jsonがこれでは通らない。以下は他にダメな例

"java.home":"\\wsl$\\Ubuntu-18.04\\usr\\lib\\jvm\\java-11-openjdk-amd64\\bin\\java"
"java.home":"/usr/lib/jvm/java-11-openjdk-amd64/bin/java"

ここで方針を見直してMavenを諦めてGradleでいくことに
https://www.task-notes.com/entry/java/20170612/1497196558
https://qiita.com/vvakame/items/83366fbfa47562fafbf4

Gradle使った方が安パイそうに見える
https://qiita.com/gitcho/items/a6c0bb781bc395e43ec4

ほんでgradle initしたあとからcode .でvscode作業に行ってみるが
問題はGradel構成のプロジェクトでJetty開発どうやんだっていう

https://blogenist.jp/2019/11/06/9687/
こうかな?いやあ..Mac手順だしjava.home設定が結局うまくいかんのよねえ、それを解決しなあかん

また方針少し直して、別にVSCodeにこだわる必要なかった素のgradleでやってればいいエディタとして使うだけならいいのかも、と妥協する https://qiita.com/megmogmog1965/items/681710def8bb6b6cd9e1

Gradleのリファレンスをチェックするも、どうしてもGradleの FAILURE: Build failed が解決できない...
http://gradle.monochromeroad.com/docs/userguide/userguide.html

> Plugin with id 'jetty' not found.

https://plugins.gradle.org/plugin/org.gretty
https://stackoverflow.com/questions/51979257/how-to-run-jetty-with-gradle
ここでjettyプラグインは使えないgrettyというプラグインであればいけそうということに気づき gradle wrapper までは通せるようになったが次が通らない

$ ./gradlew -version

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.7'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

wrapper作ったやつがバージョンちゃんとしてないとこうなるっぽいので、build.gradleを適当に書き換えてwrapperを生成しなおし https://github.com/gradle/gradle/issues/8671

task wrapper(type: Wrapper) {
    gradleVersion = '4.10'
}

たけど..やっぱりうまくいかない.... https://github.com/akhikhl/gretty grettyのcommitログみたら2017から更新止まってるなあって..

https://www.task-notes.com/entry/java/20170612/1497196558
最終的にシンプルにJetty起動だけできればいいという妥協したが、sudo /etc/init.d/jetty start がうまくいかないJetty起動しない

StartLog Establishing /opt/jetty/logs/start.log on Sun Apr 26 18:44:22 JST 2020
java.nio.file.NoSuchFileException: /opt/jetty/tmp/start_1428824937462728819.properties
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
        at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:370)
        at java.base/java.nio.file.Files.createFile(Files.java:647)
        at java.base/java.nio.file.TempFileHelper.create(TempFileHelper.java:137)
        at java.base/java.nio.file.TempFileHelper.createTempFile(TempFileHelper.java:160)
        at java.base/java.nio.file.Files.createTempFile(Files.java:912)
        at org.eclipse.jetty.start.StartArgs.getMainArgs(StartArgs.java:792)
        at org.eclipse.jetty.start.Main.invokeMain(Main.java:209)
        at org.eclipse.jetty.start.Main.start(Main.java:491)
        at org.eclipse.jetty.start.Main.main(Main.java:77)
java.nio.file.NoSuchFileException: /opt/jetty/tmp/start_1428824937462728819.properties
        at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
        at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)

もうアドリブで直した、見た感じたぶんbuildとかの時にtmpディレクトリ配下へのファイル生成で失敗して必要なファイルが足りなくなってるぽい。tmpディレクトリなかったのでjettyユーザでmkdirだけしてから再実行したらstartできるようになった

そのあとは普通に gradle build/wrapper して gradlew war 使ってデプロイしていけばなんとかhttpサーバ起動できた... 長かった.....

以下は最終的なbuild.gradleファイルの中身

group 'com.task_notes'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'war'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.10'
}

Jetty + OpenJDK でWebSocket使うための環境をつくってみたかった

https://qiita.com/dongsu-iis/items/6c7974022083d3036dc8
これを参考にして進める

とりあえずVSCode入れたけどこの手順
https://qiita.com/yoshiyasu1111/items/e21a77ed68b52cb5f7c8
でインストールすると、Ubuntuからcodeコマンド呼んだ時に失敗するようになってた
errorメッセージ「もうWSLは普通にWindowsでインストールしてWSLのcodeコマンド呼んでくれUbuntuから別でインストールしないでくれ」って言うので、普通にWindowsでインストールしたらうまくいった


この手順も使う。OpenJDK入れてVSCodeの拡張を入れる
https://qiita.com/dongsu-iis/items/6c7974022083d3036dc8
VSCodeもあんまりよくわかってなかった拡張機能はinstallした後に確認し直して、
ReloadかInstallWithWSLかが表示されてる場合は消えるまで処理しておかないと有効化できてないみたいでコマンドパレットでGenerateが呼べなくてちょっと探した

いったんここまで

アベンジーズ エンドゲーム見た

インフィニティウォーの序盤は比較的良かった強引な展開もあったけどまあいいかと思える範囲

でもエンドゲームまで通して見ると明らかに「役者やスタッフや版権者やら関係者多すぎてこうなってしまいました」みたいな展開が多く見えるし、単に辻褄合わせるためだけにシナリオが書かれてる感じでつまんなくなった…

インフィニティストーン6こ要るか?っていうほぼ全員が感じる感想の答えがこれだと思う。指パッチンでキャラ数絞るのとキャップとトニーが仲直りして過去に戻ってやり直すのだけが軸にあって、それ以外の展開は全部ご都合主義がもたげてて悲しい…

シビルウォーは面白かったのになあ……

win10の使い勝手をMacに近づけたいからEmacsキーバインド導入したけどちょっとつまづいた

qiita.com

win10でも概ねこの通りにやればできる感じかなーと思って舐めてたけど、もうちょっと面倒くさかった

 

この通りにやるとまずWinキーが死ぬ。それと、Caps <-> Ctrl 状態ではCtrl + NなんかのWindows標準ショートカットとかぶっちゃって結局Emacsキーバインド自体も有効にならないという悲しいおまけがついてる

 

https://w.atwiki.jp/ntemacs/pages/25.html

リンク先(Keyhac公式)のガイドにある「CapsLock キーを持つ一般的な日本語キーボードを使っている場合のお勧めの設定」を参考にやったらうまくいった。ポイントは以下

KeySwap でCapsLock に RCtrl キーを割り当てる

side_of_ctrl_key 変数を "R"(右)に変更し、保存する

 

Keyhacを起動した状態だとこれまた Ctrl + c とか Ctrl + v とかがうまくいかなかったりしてnotepad操作でconfig.pyの編集できてないまま気づかないとかあって悲しみを得るはめにもなる

こうなったら右クリックメニューでコピペを暫く頑張って side_of_ctrl_key を修正するしかない。それと Winキーが利かなくなる件はconfig.pyのこの辺を適当にコメントアウトしたら治った

# Simple key replacement
keymap.replaceKey( "LWin", 235 )
keymap.replaceKey( "RWin", 255 )