2021年9月16日木曜日
GAS使ってみた
2021年9月8日水曜日
golangで画像処理してDXF作った
ある会社さんから画像からDXFを作って欲しいという案件がきたので、
golangで試しに作ってみた。
ちなみに環境は相変わらず、RaspberryPi4 にVSCでリモート接続して開発している。
元画像から輪郭を抽出するところは、https://github.com/hybridgroup/gocv を使わせていただいた。
元画像
使わせていただいたものばかりだけど、
それを知っても出来ない人には一生できないだろう。
それがプログラムというものだ。
2021年9月7日火曜日
JSONから展開したフォルダを検索して目的のデータを得る方法考察
とりあえず出来上がったファイル構造で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も返してあげた方が便利だろう
2021年9月6日月曜日
JSON2FolderStructure(JSONからフォルダ構造への変換)
色々あったが、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終わりたいからね)本体側プログラムいには問題が無いと思われる。
2021年9月1日水曜日
Zesty Nimble V3(Flex)
-
https://social.msdn.microsoft.com/Forums/vstudio/en-US/f0502813-9c4f-4b45-bab8-91f98971e407/popup-popupstaysopen-togglebutton-and-data-bindi...
-
どうも書かなくてはならないネタが出来てしまった。 マルチスレッドには欠かせないSleep(0)についてだ。 自分はSleep(0)を多用していた。 MSDNの記述 によると 「中断時間として 0ms を指定してこの関数を呼び出すと、現在のスレッドは自らに割り当てられている...