VSCodeのカーソル移動で先頭の単語の右側に行ってしまう設定を変更する
サクラエディタや秀丸などのテキストエディタでは、インデントされたスペースやタブがある状態では行頭からctrl+→でカーソル移動した際に最初の単語の左側(青矢印)で止まるが、VSCodeのデフォルトでは右側(赤矢印)で止まって非常に使いにくい。
調べてもなかなか同じような情報が出てこなく、editor.wordSeparators設定に半角スペースが入っていないことが原因かと思いいろいろ試したが、キーボードショートカットの設定で変更できた。
設定>キーボードショートカットから以下の空のキーバインドに設定
cursorWordStartRight : Ctrl + RightArrow
cursorWordStartRightSelect : Ctrl + Shift + RightArrow
VSCodeを再起動することなく設定が反映された
参考: github.com
iPadで完全ワイヤレスプログラミング
完全にワイヤレスでプログラミングできるような机をつくった。iPadはBluetoothキーボード、マウスでほぼパソコンと同じ使い方が出来るのでとても便利になった。
設定でCapsキーをCommandキーに変更出来るので簡単に使いやすくすることが出来た。またlogicoolのキーボードとマウスはボタン1つでデバイスを切り替えられるので、Androidスマホで触れることなくゲームしたりTwitterすることも出来るので非常におすすめ。
・iPad Pro
・キーボード logicool K380マルチデバイスBLUETOOTHキーボード
・静音マウス logicool M590 MULTI-DEVICE SILENT
・ZenCT タブレットアーム 12.9インチ対応
[プログラミング環境]
・Raspberry Pi 3B+
webサーバー
・Panic Code Editor
開発用エディターアプリ
・Terminus
SSH接続アプリ
NASにsambaをインストール
LinkStationにdebian入れたサーバーにsambaをインストールした。 apt -y install samba
/dataを自動マウントするようにする
sudo vi /etc/fstab
最後の行に追加
/data is on /dev/sda4$$
UUID=XXXXX-XXXX-XXXX-XXXXXX /data ext4 errors=remount-ro 0 2
sambaの設定
行番号は目安 viは:set numberで行番号表示
user@debian:~# mkdir /data/share #ここは/dataをマウントしたかったけれどディレクトリを作らないとWIndowsからアクセスできなかった。 user@debian:~# chmod 777 /data/share user@debian:~# vi /etc/samba/smb.conf # 25行目:以下2行追記 unix charset = UTF-8 dos charset = CP932 # 30行目:必要があれば変更 (Windows側に合わせる) workgroup = WORKGROUP # 48行目:コメント解除しアクセス許可IP追記 interfaces = 127.0.0.0/8 192.168.0.0/24 #ここの192.168.0.0は自分のネットワークに合わせる。LAN内の全部のパソコンからアクセスできるように末尾は0にする。 # 55行目:コメント解除 & 追記 bind interfaces only = yes map to guest = Bad User # 最終行に追記 # 任意の共有名称を指定 [Share] # 共有フォルダ指定 path = /home/share # 書き込みOK writable = yes # ゲストユーザーOK guest ok = yes # 全てゲストとして扱う guest only = yes # フルアクセスでファイル作成 create mode = 0777 # フルアクセスでフォルダ作成 directory mode = 0777 user@debian:~# systemctl restart smbd
参考 Debian 9 Stretch : Samba : フルアクセスの共有フォルダ作成 : Server World
増税前にRyzenでパソコン作った
前回の8%増税のときにパソコン作ったままだったので5年ぶりにパソコン作った。
旧パソコン
パーツ | 型番 | 価格 |
---|---|---|
CPU | Core i7 4770K | 40000円くらい |
M/B | Gigabyte Z87 UD3H | 15000円くらい |
Memory | DDR3 16GB | 12500円くらい |
M.2 SSD | AGI M.2 NVMe Type2280 512GB AGI512G16AI198 | 3500円くらい |
Power | Corsair VS550 550W PC電源ユニット 80PLUS STANDARD | 5000円くらい |
M.2 SSDは去年交換したもので、Z87は通常PCI接続のM.2を起動ドライブに設定できないため海外の人が作ったカスタムBIOSを使用。
電源は玄人志向の安いものを使っていたけれどコイル鳴きがしてうるさかったため2年位前に交換。
新パソコン
パーツ | 型番 | 価格 |
---|---|---|
CPU | AMD Ryzen 7 3700X | 34984円 |
M/B | ASUSTeK TUF GAMING X570-PLUS | 18125円 |
Memory | CORSAIR VENGEANCE RGB PRO 2 x 8GB DDR4 3200MHz C16 ホワイト CMW16GX4M2C3200C16W | 9530円 |
・AMD Ryzen 7 3700X
ネットサーフィンとYou Tubeとアニメしか見ないので3700Xはオーバースペックすぎるのにやっぱりこれ以外は買えなかった。とても満足している。
・ASUSTeK TUF GAMING X570-PLUS
X570はIntel Zシリーズと比べて全体的に高かったのでX470かB450にしようかと思っていたけれど、RGBで光らせたりまた5年位使うことを考えるとPCIe4.0使えるほうが良かった。X570で評判が良く比較的安いTUFシリーズにした。
・CORSAIR VENGEANCE RGB PRO 2 x 8GB DDR4 3200MHz C16 ホワイト
初めてOCメモリを買った。デフォルトではクロックが2666MHzで認識されるがUEFIから簡単に3200MHzに変更できた。
ベンチマークなど
・CINEBENCH R20
4572 ptsで4770Kの2.5倍くらいのスコアになった。非常に快適。
・Crystal Disk Mark
Sequential Readで2000MB/s超えは驚いた。当時最安に近いSSDだったけれどもRAID組まずにこのスコアはとても良い。
・CPU-z
メモリは1クロックで2回のデータ転送が可能なため、DRAM Frequencyの1596.8MHzは3200MHzのこと。ちゃんとOCされている。
Apache Tomcat 9がWindows 10で起動できない問題
Webサイトにアクセスして自動でボタンをポチポチするものを作ろうとしているけれど、Web系舐めていた。全然わからない。今までサーバー立ててApache入れるくらいでHTML少しいじって表示変わるの見てWeb系簡単だと思っていたのに動的なサイト作ろうと思ったらすごく難しかった。
やりたいことのためにApache Tomcatをインストールする必要がありそうだとわかったのでWindows 10にインストールしたらlocalhostにアクセスしても表示されない。exeでインストールするだけでできるものじゃなかった。
環境と使ったもの
Windows 10
apache-tomcat-9.0.20.exe
tomcat-native-1.2.21-openssl-1.1.1a-win32-bin
TCPView
問題
Tomcat 9をインストールしてブラウザからlocalhost:8080にアクセスしてもつながらない
やったこと
- jdk-11.0.3_windows-x64_bin.exeのインストール
- Tomcat 9のインストール
- 環境変数のユーザー変数に追加
JAVA_HOME
C:\Program Files\Java\jdk-11.0.3 - 環境変数のシステム変数に追加
Path
C:\Program Files\Java\jdk-11.0.3\bin
出たエラー
tomcatをインストールしたフォルダのlogsフォルダでcatalina.[日付].logを確認する。
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 10-Jun-2019 22:20:25.800 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.20 10-Jun-2019 22:20:25.803 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: May 3 2019 22:26:00 UTC 10-Jun-2019 22:20:25.803 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.20.0 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 10.0 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: C:\Program Files\Java\jdk-11.0.3 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.3+12-LTS 10-Jun-2019 22:20:25.805 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation 10-Jun-2019 22:20:25.805 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\tomcat9 10-Jun-2019 22:20:25.805 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\tomcat9 10-Jun-2019 22:20:25.814 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED 10-Jun-2019 22:20:25.814 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED 10-Jun-2019 22:20:25.815 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 10-Jun-2019 22:20:25.815 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\tomcat9\conf\logging.properties 10-Jun-2019 22:20:25.815 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 10-Jun-2019 22:20:25.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 10-Jun-2019 22:20:25.817 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 10-Jun-2019 22:20:25.818 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs= 10-Jun-2019 22:20:25.819 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\tomcat9 10-Jun-2019 22:20:25.820 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\tomcat9 10-Jun-2019 22:20:25.820 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\tomcat9\temp 10-Jun-2019 22:20:25.822 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk-11.0.3\bin;C:\Windows\Sun\Java\bin;C:\Program Files\Java\jdk-11.0.3\bin;(一部省略)] 10-Jun-2019 22:20:26.064 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] 10-Jun-2019 22:20:26.150 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080]] org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:983) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1059) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:584) at org.apache.catalina.startup.Catalina.load(Catalina.java:607) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:304) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474) Caused by: java.net.BindException: Address already in use: bind at java.base/sun.nio.ch.Net.bind0(Native Method) at java.base/sun.nio.ch.Net.bind(Net.java:461) at java.base/sun.nio.ch.Net.bind(Net.java:453) at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227) at java.base/sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:80) at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:248) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:222) at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1119) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1132) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:557) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74) at org.apache.catalina.connector.Connector.initInternal(Connector.java:980) ... 13 more
エラー1
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path
これはTomcat Native Connectorのtcnative-1.dllがないせいらしい。Tomcatの公式ページへ行き、Apache Tomcat® - Tomcat Native Downloads
から「Native 1.2.21 Windows Binaries zip (recommended) 」をダウンロードする。
解凍してtomcat-native-1.2.21-openssl-1.1.1a-win32-bin\bin\x64の中のtcnative-1.dllをTomcatをインストールしたbinフォルダに入れる。
なくても問題ないけれど、Tomcat9w.exeを起動してJavaタブのJava Optionsの一番下に追加する。
-Djava.library.path=c:\tomcat9\bin
エラー2
Caused by: java.net.BindException: Address already in use: bind
アドレス(localhost、127.0.0.1)が使われていると出る。Portの8080が使われているようなのでTCPViewというMicrosoftのツールで調べるとFirefoxのプロセスが8080でたくさんあったのでサーバーの設定を変更する。
Tomcatをインストールしたフォルダの中のconfフォルダにあるserver.xmlをテキストエディタで開き、Connector portを他とかぶらない適当な80などの値にする。
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
これでブラウザからlocalhostにアクセスするとTomcatのページが表示される。
参考
・Tomcat Native Connector - 1.2
Apache Tomcat® - Tomcat Native Downloads
・TCPView v3.05
TCPView for Windows - Windows Sysinternals | Microsoft Docs
HTMLのボタンからPythonスクリプトでBrythonを使ってSeleniumをimportすることはできなかった
初めてHTMLとPythonとBrythonとSeleniumを使った。すべて初めてでなんにもわからなかった。 言葉の使い方すらあってるかわからない。
やろうとしたこと
- 自動でウェブサイトにアクセスしてボタンを押すPythonスクリプトをつくる
- 指定した時間にPythonスクリプトを実行する
- そのスクリプトに画面をつけるため、ブラウザからボタンを押してPythonスクリプトを実行するようにする
環境
windows 10 python selenium brython chromewebdriver
1について
自動でウェブサイトにアクセスするものの作り方を調べたらPythonとSeleniumでできることがわかった。自分が見たいサイトと同じところにアクセスするものを作っている人がいたのでここまではすぐ出来た。 一部困ったところは以前はJavaScriptのボタンがなかったからSeleniumで楽にボタンを押すことが出来たみたいだったが、今は変わっていてボタンの押し方がわからなかったことだった。これはxPath FinderというFirefoxのアドオンを使ってボタン名を取得できたのですぐにやりたいことができるようになった。
2について
Pythonでパソコンの時刻を取得する方法はdatetimeをimportすれば良いことがわかった。またPythonでタイマーアプリ作ってるものなどを参考にして、スクリプトを実行したあと指定時間になるまでループし続けて待つ処理を追加した。
3について
Pythonスクリプトは"from Selenium import webdriver"を行って自動でブラウザが起動させることができた。これをブラウザから実行したかったので調べたら、PythonはBrythonを使ってHTMLのボタンから実行することができることがわかった。ここでBrythonとかPhantomJSとかJavaScriptとかDjangoとかいろいろ単語出てきたけれど一つもわからなすぎてとりあえずPython、Brython、HTMLだけを選択してつくることにしたが、ここから地獄だった。
最初は簡単にHTMLの入力欄とボタンを作って、文字を入力してボタンを押すとその文字を表示する画面を作った。ここまではうまく出来た。HTMLのボタンを押すと、Pythonに書いたhello()メソッドでreturn 'Hello'し、ブラウザにHelloが表示されるものだった。
このあとボタンを押してブラウザを起動できるようにするため、"from Selenium import webdriver"のたった一行を追加するだけでボタンが無反応になってしまって何が原因か全くわからなくなってしまった。デバッグ方法もわからないのでひたすら"brython selenium html"の単語を混ぜてググりまくった。全く情報が出てこなかったのでpythonのデバッグ方法を調べ始めたけれどこれも全く知りたいことが出てこなくてもうほかの方法で作るしかないかと思ってDjangoとかAjaxとか調べ始めた。
それでもBrythonは諦めたとしてもなんでたった一行importするだけで動かなくなるのか原因しりたくていろいろ考えていたら、たまたまブラウザの開発者モードがあることを思い出した。試しにFirefoxでF12で開いていろいろいじっていたら偶然Consoleタブにエラーが出ることがわかった。 そしたらそこに
Traceback (most recent call last): ImportError: No module named selenium brython.js:5887:9
と出ていた。デバッグ方法がわかってとてもラッキーだった。
ImportErrorだとわかったので「"ImportError: No module named selenium" brython」でググったらたった3件だけヒットし、BrythonではSeleniumを実行できないって書かれていたのでようやく諦めがついた。
また最初から別の方法をググらなきゃいけなくなった。