おんや?
WSL2をAppStore版にして、VSCodeを最新版にしたらリモートつながらなくなった・・・
WSL開いて以下のようにしたら繋がった
sudo apt-get update && sudo apt-get install wget ca-certificates
ターミナル見たらライセンスがどうたら謎のメッセージが出ていてわからんかったが、まぁ、こんなもんだろ
おんや?
WSL2をAppStore版にして、VSCodeを最新版にしたらリモートつながらなくなった・・・
WSL開いて以下のようにしたら繋がった
sudo apt-get update && sudo apt-get install wget ca-certificates
ターミナル見たらライセンスがどうたら謎のメッセージが出ていてわからんかったが、まぁ、こんなもんだろ
最近シェルスクリプトを書くことがあって、
オプションを使ってパラメータを処理しようとしたわけなのだが、
シェルスクリプトで字句解析して、そのパラメータの組み合わせが出来上がったらアクションをするようないわゆるLexとYaccの処理を書かないといけないのかと調べていたところ、
getoptsという物があるとわかった。
今までPerlスクリプトでやってきたもので、Bashスクリプトなんてあんま書いてこなかった。
Bashスクリプトで正規表現も後方参照もできるし、
空白の混じったファイル名を扱うときに、Forで回すと空白のところで分割されてしまうので、
$IFSでなんとかするという風習があることもわかった。
まぁ、大体のことはできるんだねぇ?
でも、もっと何でもかんでもできるPerlやPythonのが流行るよなぁ?
https://github.com/ChaosReadman/lex_and_yacc_programming
lex & Yacc プログラミングのコードをUbuntu20.04LTSで動くように修正したもの
https://iss.ndl.go.jp/books/R100000002-I000002412297-00
ただし、3章までだ。
4章以降やる気が出なかった。
4章以降やったからといって、何ができるようになるわけでもない。
実用例を入れて欲しかった。
昔読んだ時もしっくりこなかった。
lexとyaccが何をするものなのか、という説明から全然載ってないのだ。
たとえば、スクリプトの組み込みするとかなんだとか色々できることはあるだろうに、
こんな説明しかできない連中ばかりなのだろうか?
富士通のAH53/B3を使っている
前にSSDにしたときに、M2スロットがあるのを確認した。
調べたらSATA M2がささるようだ。
そんで、増設してみた。
M2 SATAのシールははがしてバッテリーの下に張り付けておいた。
(機種わからなくなると困るんで)
ヒートシンクは輪ゴムで止めるだけの簡単な奴だ。
M2用のネジやスペーサーのセットになったいたので、
これでいいやと購入した。
それと最初、M2のNVME買ってしまって認識しなかった。
切り欠きが一個しかなかったのでNVMEだと思ってたらSATAだった。
NVMEは後でケースに入れて、外付けSSDとして使おうと思ってる。
増設したらディスク1(今までのはディスク0)として認識された。
今までのところはdiskpartでパーティションを消してから、ボリューム作った。
今回の部分で、未割当があるのがちょっと嫌
なんとかならんのか?
このノートは8世代のCorei7で、SSD化してから起動も早くなったし、
かなり使い勝手が良くなった。
Win11Previewも入れてて、VMでかなり古いイメージとかも残ってて、
便利に開発につかっている。
VMのイメージはWin2008WorkstationにVS2005、VB6が入っている。
こんなのでも案件が来るから持っておかないといけない。
VMイメージの置き場に困ってたけど、ひとまずこれで安心だ。
船橋は8月の予約システムは停止していて、2021/09/16に再開した。
嫁に知らされて予約をしたら10/06に予約が取れ、18:15にワクチン接種をすることができた。
船橋では実質2か月?ワクチン接種が出来ない状態が続いていたことになる。
次の予約は10/27に同じ時間となった。
これで、ワクチン接種が進んだ、すごい成果だと国は宣っているが、
嘘もいい加減にして欲しい。
ワクチン接種を勧めますと政府広報を行っていたが、
受けられない状態だったのだ。
歴史の事実をゆがめるのはやめて頂きたい。
国のワクチン接種スケジュールは遅々として進んでいない。
多くの人が受けたくても受けられない状態進んでいる。
リナザウのCPUは400MHzかそこらだったよな
PocketChipは1GHzあるし、時代の流れを感じるなぁ
https://shop.pocketchip.co/
小さいPCが欲しいという連中の需要はある程度はあるんだけど、どうしても続けて使い続けてもらえるものには育たない。
ハードの問題もあるし、使う側の問題もある。
iPhone出始めの頃だってかなり怪しんだ。
まさか10年続くとはなぁ
WindowsCEでさえ流行らなかった。
俺はTouchDiamond使ってたし、WinCEのドライバ作ってたし、MFCアプリだって動くんだよ、でも、流行らなかった。
AppleのNewtonだって流行らなかった。
Palmだってごくごく一部だった。
Blackberryはクールだったけど、やはり廃れた。
Androidは出始めの頃に、なにこのJavaVM?ガラ系のVMのが早いじゃんて馬鹿にしてた。
実際、Dalvikは遅いしクソだったが、Androidは5.0からAndroidRuntimeに置き換わり、そこそこで動くようになったらしい。
今のAndroidは、Java信者がずっと焦がれていたJava OSだと言ってもいいのかもしれない。
だが、今まで下手したら30年くらい続いているOpenGLの流れをMetalで断ち切ったAppleはすげーなと思う。
SonyのCollada形式も正式に採用してるし、独自な物、良い物はどんどん取り入れている。
こだわりもなんもなく、ただ、いい物を採用する姿勢は他の会社には見られない事だ。
ある会社さんから画像からDXFを作って欲しいという案件がきたので、
golangで試しに作ってみた。
ちなみに環境は相変わらず、RaspberryPi4 にVSCでリモート接続して開発している。
元画像から輪郭を抽出するところは、https://github.com/hybridgroup/gocv を使わせていただいた。
元画像
使わせていただいたものばかりだけど、
それを知っても出来ない人には一生できないだろう。
それがプログラムというものだ。
とりあえず出来上がったファイル構造でgrep検索してみた。
データが少ないからかもしれないけど、画像も混ざったDATA.txtがある中、結構な速度で結果が得られるもんだなぁと感心した。
さすがgrepさん
vscodeでも検索したけど、まぁ早いよね、どうなってんだろうね?
実際のSELECTでは例えば、jsonRoot.recipe.materials[]のデータを検索対象としたい。
この場合、recipeにはDATA.txtがあって、そこにUUIDのフォルダ名が並んでる。
そのフォルダの下にはmaterials[]フォルダがあって、そこにもDATA.txtがあり、そのファイル自体も検索対象なんだけど、UUIDが記録されていたらその下も検索対象となる。
grepが探すよりは断然少ないファイルを検索して求める値があるかどうかで、ルートノードを決定する。
そんで、SELECTしたい値をルートから持ってくるのも同じやり方ってことになるが、SELECTしたい値の指定方法はまだ悩んでる
SELECT_NODEだったら、そのノード以下全部
SELECT_ITEMSだったらノードの中から指定したITEMだけ
って感じだろうか?
例えば、TITLEとMAINIMAGEだけ取得したい時はSELECT_ITEMSだよな
RECIPE全体のデータが欲しいときはSELECT_NODEって感じだろうか
SELECT_NODEの場合はノードのUUIDも返してあげた方が便利だろう
色々あったが、JSON DBライクなものを作ろうと決意した。
とはいっても、一度フォルダ構造へ展開し、
その後、フォルダに対するアクセスを行うことで、JSONのアクセスを行う仕組みを考えている。
だって、フォルダのがファイル仮想システムより早いでしょ?
それにファイルが壊れても、壊れた責任はOSに取らせられる。
つまり、ファイルの復元なども、OS側の機能にまかせられるはず。
そして、フォルダ展開しておけば、バックアップはフォルダ事コピーで済む。
この決意をしたのは、Sedna XML DB がラズパイでコンパイルできなかったからだ。
それに今どき、Golangでお気楽に逝きたい。
C++とか、もうないわーと思うし!
JSONを食わせると、1バイトずつ判定しつつ、JSONのキーやバリュー配列なんかを考慮し、フォルダに展開する。
展開結果は図の通り
3枚の画像が入り合計1M程度のJSONだが、WSLで動かして700mSecから2秒程度でインサートできる感じ
WSLが遅すぎるんじゃなかろうか・・・
さっきWindowsUpdateする前は、700mSecだったのに、今アップデート後にもう一度やってみたら、めちゃ遅いんですけど、倍から3倍くらいかかるようになったんですけど?
どういこっちゃ・・・
あとで、ラズパイで環境作ってやって見ようと思う
んで、やってみた。
golang 1.17をRaspberryPi4に入れてやってみたんだが・・・
5秒から7秒弱かかる。
こりゃやばいなぁ・・・なんでこんなに遅いんだろう?
SDカードだから?
HDD付けてそっちに書いてみるか?
いや、でも、SDカードは読み書き100MB/Sくらいはあるはずだ。
たかだが、数百キロのファイルを書き込むのにこんなにかかるわけがない。
もしかして、ファイルアクセスは遅いのか?
なので、データベースは仮想ファイルシステムを使っているのか?
よくわからんす・・・
そこら調べてみるっす
ベンチ調べたらファイルのReadで時間がかかってた。
一度os.ReadFileしてから、bytes.NewReaderでio.Readerにしたら0.226sで終わった。
なんじゃこりゃ・・・
ファイルから1バイトずつ読むと遅いのか・・・
まぁ一度に書き込んだ方が早いわなそりゃ
昔そんなコピーツールがあったっけ・・・
いずれにしろ、テストコード側の問題だったので、ネットワークから渡ってくる文字は全部読んでから処理する方針だし(早くRead終わりたいからね)本体側プログラムいには問題が無いと思われる。