canvasと、p5にコマンドを送る方法
JSで経路探索の動画があったのでやってみた。
Pathfinding - Coding for Beginners - YouTube
最初はcanvasで図表の描画から始まって、
次第に経路探索の何たるかみたいなところの説明があり、
幅有線探索、裁量有線探索、A-starの説明に進んでいく。
コメントにあるが 優先度付き探索priority_queue、priority queueやmin heapを使うのが一般的っぽいのでその辺は後でやりたい。
*詰まったところ
動画ではChrome開発ツールでメソッドを叩いているんだけど、俺はFirefoxを使っていたのもあるだろうが、エラーばっかりで頭抱えてた。
そしたらこんなところにメニューが・・・ ようはどこに対してコマンドを送るか?を指定できた。なんだよこんなのあったのかよ・・・
ちなみにFirefoxでは「G.」と入力すると補完リストがでてきてくれるので、ここから利用するメソッドを選択して、引数を入れてやると結果が出る。
(この場合はundefinedになるけど問題はない。描画されていればよい)
更に、Chromeの場合。
こちらでもコマンドを送る対象を選択すると、対象に対してコマンドが送れるようになる。
そして動画と同じような結果が表示されるようになる。
*00座標が左上隅。でもY座標、下に向けてプラス座標
久しぶりに触るとこういうイロハのイが分かってなくってなんでやなんでや愚痴がループする。
よく考えるとピクセル座標っていっても多分iPhoneとPCとAndroidで随分変わると思うからマルチに使えないよね
*P5は、JSライブラリーの1つ。
そこの団体がライブコーディングのウェブサービスをやっている。
[ home | p5.js ] ( https://p5js.org/ )
ライブコーディングのウェブサービスはCodePen、JSFiddleが一番有名かな。
次いでCSS Deck、JSBinなどがあるけどその辺はお好み。
TSなまだしもコンパイルいらないJSならこういうの使って色々お試ししてみるのが良いと思う。
基本無料だが共有してチームで使いたいとかの場合は年1万~3万円ほどだが、本格的開発ならGithub使うだろうからどれくらいニーズあるのだろうか。
Windows Terminal previewが使いづらい。特にコピーが
MSはデカすぎてコミュニケーションが通ってないのは知ってるけどさあ
けどさあ
WindowsTerminalを使った場合、表示されている文字列をコピーするとき、マウス右クリックしないとコピーできない。
従来のコマンドプロンプトやPowershellだと、文字列選択してエンターキーでコピーされる。
いやだから、操作系は統一しろよ。
バッチ(bash)ソース引っこ抜けて これで少しバッチ力あげれそう。かな?
はてブログの仕様かわったのか?新規でブログ書こうとしたら1つ前の記事がそのまま表示されるんだが。
よく見たらキャッシュされたものを表示しましたーみたいなnotificationがついてるし。意味不明すぎる。いやそれもう投稿済みだから・・
注意)書きなぐりなので読まれる方は注意してください。
と愚痴ったところで、具体的には言えないが某VagrantBoxに入っているバッチをローカルに落とせて、これでバッチ力を高められそう!と期待している。
以前から欲しいと思って実行してなかったんだが、抜き取ったバッチ、結構良く出来ていて、CUIなのにGUI並みの画面構成というか、良く出来てるなあ~と感心させられた。
だから自分でも同じようなことできたら良いのに。ってずっと思っていた。
やっぱりバッチと言えど、ライブラリ(関数集)は別に作ってそこに貯めこんで、メインでライブラリを呼び出しているっていうのはフツーなんだろうなと改めて思った。
変数名 | 自動的に設定される値 |
---|---|
$# |
実行時に指定された引数の数を表す変数。 「$ ./test.sh AAA BBB CCC 」と実行された場合、シェルスクリプト test.sh 内で変数 $# を参照するとその値は 3 となる。 |
$@ |
シェルスクリプト実行時、もしくは set コマンド実行時に指定された全パラメータが設定される変数。 変数 $* と基本的に同じだが、 "” で囲んだときの動作が異なる。 |
$* |
**シェルスクリプト実行時、もしくは set コマンド実行時に指定された全パラメータが設定される変数。**変数 $@ と基本的に同じだが、 "” で囲んだときの動作が異なる。 |
$0 |
実行時のコマンド名が設定される変数。「./test.sh 」と実行した場合には「./test.sh」が、「/home/user/test.sh 」と実行した場合には「/home/user/test.sh」が設定される。 |
$1 - $n |
シェルスクリプト実行時に指定した引数の値がそれぞれ設定される変数。 1番目に指定した引数は $1 に、2番目に指定した引数は $2 に、n 番目に指定した引数は $n に設定される。10番目以降の引数参照時は ${10} のように {} を使用する必要がある。これは $10 を $1 "0" のように、シェルに誤った解釈をされることを防ぐためである。 |
引数を処理する | UNIX & Linux コマンド・シェルスクリプト リファレンス ( https://shellscript.sunone.me/parameter.html )
あとこの辺。バッチ作りやってるときはいいんだけど、結構忘れがちになる。
見てて思ったのは、
local
do~done
source
この辺って使ってないなあ。
local
man local
を参照すると「local [option] [name[=value] ...]」との記載があるので、変数名のみで宣言が可能そうと気づきました。
do~done
items=(
"altair"
"betelgeuse"
"canopus"
)
for item in "${items[@]}" ; do
echo "[ ${item} ]"
done
items[0]="altair"
items[1]="betelgeuse"
items[2]="canopus"
for item in "${items[@]}" ; do
echo "[ ${item} ]"
done
for i in `seq 1 10`; do
echo ${i}
done
source
「source」コマンドは、ファイルに書かれたコマンドを現在のシェルで実行する、というコマンドです。
「bash ファイル」などの場合は、現在のシェルとは別のプロセスとしてファイルを実行します。catコマンドやlsコマンドなど、ファイルに書かれているコマンド行を実行するだけなら、処理結果は同じになります。しかし、シェル変数や環境変数の扱い方が変わります ※2。シェル変数は現在実行中のシェルでのみ有効な変数。環境変数は実行されたプログラム(子プロセス)に引き継がれる変数。どちらもシェルで利用可能だ。exportコマンドを使うと、シェル変数を環境変数に変換できる。
sourceコマンドでは、実行したファイル内で扱われた変数の値が保持される。
sourceコマンドについて詳しくまとめました 【Linuxコマンド集】 ( https://eng-entrance.com/linux-command-source#source-2 )
$ bash [file]
はシェルスクリプト内の「裏側=閉じられた環境」でコマンドを実行する。$ source [file]
は「表側=開いた環境」で、コマンドを実行する
Linux - bashでsourceコマンドで実行した先でexportした変数がブランクになってしまう|teratail ( https://teratail.com/questions/110290 )