Julia を再インストールする

なぜだろう?GeoGebraでエラーが出るようになってしまった.何をやっても,どこにいてもこのエラーが発生する.

image

EStartというアプリがいつの間にかインストールされていて,しかも,アンインストールができない.プログラムと機能にEstartが表示されない.⇒CCleanerを使ってスタートアップから外した.

とりあえず,GeoGebraを使って速攻でシミュレーションしてみようと思ったのだが,どうも要領が分からない.GeoGebra はオブジェクトを単体で定義する操作が主となっているため,全体の作りが見えてこない.つまり,どこで何をすればよいのか?が分からない.通常はネット上のサンプル・ソースをコピペすればすぐ動くものだが,GeoGebra の場合はそれができない.プログラムはモジュール単位でダウンロードして走らせることができるが,その中がどうなっているのかがつかめない.編集画面もバージョンによってさまざまあるようで,解説記事通りになっていないことがしばしばある.GeoGebra には公式のマニュアルがなく,熟練者(主に英語圏)が書いた解説記事を読解したユーザが自分なりのマニュアルを起こすような作りになっている.

どうも埒が明かないので,Python に乗り換えることにしたのだが,こちらもそうそう易しいものではない.サンプルのソースコードはネットで見つけることができるのでGeoGebraよりはましだが,結構敷居が高い.難易度から言うと Julia の方がとっつきやすいような気がする.Python は最後の手段として,Julia に戻ってもう少し粘ってみるという方針に切り替えることにした.それには,どこで躓いているのか?もう少し正確に把握する必要がある.Julia 単独ではなく,VS Code と抱き合わせで動かしているというのも問題をこじらせる原因になっている気がするが,VS Code を使わないという選択肢はないだろう.モジュールが分散しているところが最大の問題なので,一度更地に戻して出直してみたいのだが… できるだろうか?

これまで Julia を使って開発したプロジェクトは「再帰関数JL」だけではないかと思う.無限ビリヤードというのが最新プロジェクトだが,これは動いていない.参った.何も動かなくなってしまった.これはもう完全な認知症と認定するしかないのではないか?再帰関数JLの中には少なくとも4つファイルがある.いや,どうもコマンドが別のアプリとごっちゃになってしまっているのではないか?コードを実行するときにどのキーを押すかだが… メニューからRunしてとりあえず動いた.デバッグ付き実行はF5だ.ともかく動いていることは確かだが,ほとんど「死んでいない」というのに近い.

y=x^2-3÷2.jl は動くが,エラーが起きている.

BoundsError: attempt to access 676-element Vector{UInt8} at index [698]

エラーなしで動くものを保存しているはずなのだが… バックアップされているフォルダにはワークスペースが入っていない.ワークスペースなしで走らせていたのだろう.無限ビリヤードを作った時点で始めて保存したのではないかと思う.「無限ビリヤード」を開いて実行しようとしたら,以下のエラーになった.

image

Julia extension というのは多分 VS Code の拡張のことではないかと思われるのだが,それがないというのはどういうことだろう?View→ Extensions で見ると Julia は INSTALLED に入っているのだが… EXPLORER には NO FOLDER OPENED が表示されている.再帰関数JLもフォルダは持っていない.ともかく,最低限,再帰関数JL がエラーなしで動作する状態を確保しておく必要がある.もう一度 Hello World からやり直す必要があるのではないか?⇒Hello World ではすべての行をコメントアウトしていた.

hello.jl には,plot 関数も入っている.ただし,UdefVarError になってしまう.using Plots を追加しても同じ.usingまで入力して出てくる候補の中に Plots が入っていない.⇒モジュールはpkgでダウンロードする必要がある.VS Codeのターミナルから pkg を起動できない.⇒VS CodeのターミナルのコマンドプロンプトはJulia REPLとは別物なのだろう.⇒Juliaを起動して,Julia>] と入力し,pkg>add Plots でダウンロードが始まった.Users\babalabo\.julia にインストールしている.このコマンドは前にも実行していたはずだが,今回は何もエラーを出さずに完了した.

image

julia のREPLではjulia>using Plots が効くが,VS Code では効いていない.⇒再起動で認識できたようだ.動作するようになったが,まだエラーが出ている.

Exception has occurred: ErrorException
Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to “C:\\Users\\babalabo\\.julia\\compiled\\v1.10\\Plots\\jl_3B8B.tmp”.

Stacktrace:
  [1] top-level scope
    @ d:\再帰関数JL\hello.jl:4

一番最初に以下のエラーが発生しているように思われる.

ERROR: LoadError: InitError: could not load library “C:\Users\babalabo\.julia\artifacts\f9f799e6ae3fe7f244bb55052db7ff1cea876c27\bin\libgettextlib-0-21.dll”
Access is denied.

libgettextlib-0-21.dllというDLLにアクセス拒否されている.VS Code を管理者として実行してみよう.今度は,

Exception has occurred: ErrorException

Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to “C:\\Users\\babalabo\\.julia\\compiled\\v1.10\\Plots\\jl_BE50.tmp”.

Stacktrace: [1] top-level scope @ d:\再帰関数JL\hello.jl:4

のようなエラーになった.冒頭で

ERROR: LoadError: InitError: UndefVarError: `GR_jll` not defined

のエラーが起きている.GR がインストールされていないということだろうか?⇒julia のREPMでpkgを実行し,GRをインストール⇒VS Code を管理者権限で再起動で,上のエラーは消えたが,InitError というのが残っている.

Exception has occurred: InitError

InitError: UndefVarError: `GR_jll` not defined during initialization of module GRPreferences

Stacktrace: [1] top-level scope @ d:\再帰関数JL\hello.jl:4

GR_jl1 というのが,定義されていないという.GR_jl1というのはパッケージには入っているようだ.Julia REPLでコードを実行してみたが,やはりエラーが起きている.

ERROR: The following 1 direct dependency failed to precompile:

Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] 

Failed to precompile Plots [91a5bcdd-55d7-5caf-9e0b-520d859cae80] to “C:\\Users\\babalabo\\.julia\\compiled\\v1.10\\Plots\\jl_51CD.tmp”.

ERROR: LoadError: InitError: could not load library “C:\Users\babalabo\.julia\artifacts\f9f799e6ae3fe7f244bb55052db7ff1cea876c27\bin\libgettextlib-0-21.dll”

Access is denied.  

jl_51CD.tmpというファイルとlibgettextlib-0-21.dllでエラーが起きている.⇒どうもJuliaも管理者として実行する必要があったようだ.⇒JuliaとVS Codeをアンインストールしてもう一度インストールし直してみる.⇒VS CodeはProgramFiles\WindowsAppにインストールされているが,ここは開くことができない.⇒今回はJulia をmicrosoft store からダウンロードすることにした.今回はきっちりインストールできたようだ.pkg>add GRの動作がまったく違う.ネットワークの問題だった可能性はある.今回はpovo1.0に24時間使い放題でダウンロードしている.以下のコードを実行してみた.

msg=”Hello World”
println(msg)

using GR
using Plots
x = 1:10; y = rand(10); # These are the plotting data
plot(x,y, label=”my label”)

x = 1:10; y = rand(10); # These are the plotting data
plot(x,y, label=”my label”)
x = 1:10; y = rand(10); # These are the plotting data
plot(x,y, label=”my label”)

GRがパッケージに含まれていないというエラーが出ていたが,実行されたようで,以下の画面が出ている.

image

julia> import Pkg; Pkg.add(“GR”) を実行して再インストールしたところ,今度は完全にエラーなしで動作するようになった.Julia REPL 画面への貼り込みも CTRL+SHIFT+V でできるので,VS Code を使わなくても最低限のことはできそうだが,ともかく手順に従ってインストールしておこう.⇒VS Codeは以下のフォルダにインストールされる.

C:\Users\babalabo\AppData\Local\Programs\Microsoft VS Code

VS Code の使い方もよく分からないので,少し勉強しておくことにしよう.VS Code ではHTMLの編集もできる.これは役に立つときがあるかもしれない.⇒何本か,チュートリアル動画を見てみた.

Julia Plots が動かない

無限ビリヤードゲームの図版をGeoGraphで作成しているところだが,なかなか難しい.隣り合った直線がほとんど重なってしまうため,作図困難な状態に陥っている.むしろ,リアルタイムのシミュレーションのが見易いのではないかと考えているところだが,何を使えばよいか?それが問題だ.候補はとりあえず,GeoGebra, GRAPES, Julia, Maxima の4つだ.※→FB上で,Tomoyuki Suzuki 氏から,Pythonが使えるというアドバイスを頂いた.おそらく,Python ならこれほど手こずることはないのではないかと思う.Julia には未練もあるが,もし,どうしてもダメなら Python に移るしかなさそうだ.

GeoGebraには豊富なサンプルがあり,特に,Bunryu Kamimura 氏のサンプルなどは参考になりそうだ.プログラミング言語として GeoGebra Script と JavaScript の2種類が使えるが,GeoGebra Script というのは基本的に入力バーへの命令と同じなので,かなり敷居が高い(最近ようやくちょっとだけ使い始めたところだ).いまさら JavaScript はないと思われるのでこの選択肢は消える.GeoGebra の問題は浮動小数点数の精度だ.最大でも小数点以下15桁ないし,有効数字13桁までしか使えない.GeoGebra はネット上で公開することもできるので,その意味では最適なのだが…

GRAPES ではグラフウィンドウとデータパネルを表示することができる.かなり高度なことまでできそうだが,まだ触ったことがない.GRAPES スクリプトは GeoGebra と同様コマンドの逐次実行タイプのようで,関数などは使えないようだ.できることは限られているが,それだけシンプルに使えるということかもしれない.マニュアルには精度についての記述は見当たらないので,多分倍精度までということではないかと思う.GRAPES は国産なので使いたいという気持ちはあるのだが…

Julia は任意精度の浮動小数点数が使えるので最有力候補だが,どちらかというと数値計算に強いというイメージがあり,シミュレーションに使うという話はあまり聞いたことがない.いや,かなり強力なビジュアライズ用のツールがそろっているようだ.今のところはおそらく,Plots.jl だけで間に合いそうだが… ということで using Plots を実行してみたが,どうもかなりエラーが出ている.パッケージがインストールされていないのだろうか?どうも,Julia Plots には外部のバックエンド環境が必要なようだ.これを実行する必要があるのではないだろうか?

import Pkg
Pkg.add(“Plots”)

# if you want the latest features:
Pkg.pkg”add Plots#master”

どうもそういうことのようだ.

julia> import Pkg
julia> Pkg.add(“Plots”)
Updating registry at `C:\Users\babalabo\.julia\registries\General.toml`
Resolving package versions…               
No Changes to `C:\Users\babalabo\.julia\environments\v1.10\Project.toml`
No Changes to `C:\Users\babalabo\.julia\environments\v1.1\\Manifest.toml`
julia> # if you want the lates features:
julia> Pkg.pkg”add Plots#master”            
Cloning git-repo `https://github.com/JuliaPlots/Plots.jl.git`
Updating git-repo `https://github.com/JuliaPlots/Plots.jl.git` 
Resolving package versions…
Updating `C:\Users\babalabo\.julia\environments\v1.1\Project.toml`
[91a5bcdd] ~ Plots v1.40.1 ⇒ v1.40.2 `https://github.com/JuliaPlots/Plots.jl.git#master` 
Updating `C:\Users\babalabo\.julia\environments\v1.10\Manifest.toml`
[91a5bcdd] ~ Plots v1.40.1 ⇒ v1.40.2 `https://github.com/JuliaPlots/Plots.jl.git#master`
Precompiling project…
✗ Plots
0 dependencies successfully precompiled in 22 seconds. 145 already precompiled. 9 skipped during auto due to previous errors.
1 dependency errored.                                               
For a report of the errors see `julia> err`. To retry use `pkg> precompile`

どうも,まだ何か不足しているようだ.この記事には以下のようなアニメーションのアニメが掲載されている.これはまさに,いま我々がやろうとしていることそのものだ.このコードが動きさえすれば…

はて,何をどうしたらよいのだろう?

docs.juliaplots.org/stable/

バックエンドパッケージをインストールする別コマンドがあるので,実行してみよう.

Pkg.add(“GR”)
Pkg.add(“PGFPlotsX”)
Pkg.add(“PlotlyJS”); Pkg.add(“PlotlyBase”)
Pkg.add(“PythonPlot”)
Pkg.add(“UnicodePlots”)

GRはデフォルトでインストールされることになっている.また,PGFPlotsXを使うためにはLaTexが別途必要だ.Pythonはとりあえず使う予定はないし,UnicodePlotsがなくても済みそうな気はする.とりあえず,Pkg.add(“GR”) だけ実行してみたが,状況は変わらない.plot3d という関数が未定義になっている.

https://docs.juliahub.com/CalculusWithJulia/AZHbv/0.0.7/differentiable_vector_calculus/plots_plotting.html

上記リンクでは,以下を実行している.

using CalculusWithJulia
import Contour: contours, levels, lines, coordinates
using LinearAlgebra, ForwardDiff

LazySets.plot3dという関数はどこかにあるようだが… 

https://discourse.julialang.org/t/error-using-lazysets-plot3d/52994/3

https://github.com/JuliaReach/LazySets.jl/blob/master/src/Plotting/mesh.jl#L117

LazySets.jl というものがあり,そこにはplot3dという関数も定義されている.どうもいま一つ分からない.もう少し,シンプルなサンプルから入ってみよう.@gif というマクロも未定義になっている.

https://qiita.com/MTNakata/items/0418ae3493a26ac44603

どうも訳が分からないが,パッケージが分散しているのも問題だ.多分別のところにあったものを移動してしまったのではないかと思われるが,Julia というフォルダは開発履歴(G:)が最終版ではないかと思われる.多分これは開発用(D:)にあったもと思われる.タスクバーにあるアイコンは C:\Program Files\WindowsApps\Julia にあるもので,これが最初にインストールされた場所ではないかと思う.

C:\Userts\babalabo\.julia というフォルダがあり,その下にpackages がある.GRなどもこの中に入っている.VS Code はまた別の場所に保管されているはずだが,VS Code では拡張機能として Julia をインストールしているはずだから,上記とはまた別のモジュールを使っているのではないか?

開発環境が開発履歴にあるというのもおかしいので,とりあえず,開発用ドライブに戻してみよう.いや,いっそもう一度インストールし直した方が早いのではないか?Julia はアプリとしてはインストールされていないように思われる.いや,どうもインストールされているのはProgram Filesに入っているもののようだ.これを活かしてみよう.いや,どうもこのバージョンは少し古いのではないか?アイコンが古ぼけて見える.パッケージ GR と Plots はインストールできたようだが,以下のコードが実行できない.

#パッケージのインポート
using Plots
gr()
#uとvの定義
function u(x,y)
return x^3 – 3*x*y^2
end
function v(x,y)
return 3*y*x^2 – y^3
end
#yの範囲設定
y = [i*0.1 for i in -100:100]
#アニメーションのインスタンス生成
anim = Animation()
#xを-10から10まで0.5刻みで動かしてグラフを描き、フレーム画像として保存
for x0=-20:20
x = x0*0.5
u_result = map(u,[x for i in 1:length(y)],y)
v_result = map(v,[x for i in 1:length(y)],y)
plt = plot(u_result,v_result,label=”x=$x”,
xlims=(-1000, 1000), ylims=(-500, 500),
xlabel=”u”,ylabel=”v”)
frame(anim, plt)
end
#gifに変換
gif(anim, “test.gif”, fps = 5)

Animationという関数が未定義になってしまう.Animation.jl というパッケージが別途必要なのではないか?いや,そんなはずはない.

using Plots

@gif for i in 1:50
     plot(sin, 0, i * 2pi / 10)
end

これで出るはずなのだが,@gifが未定義になってしまう.Pluto.jlという話も出てきた.どうも,Julia のREPM環境だけでは足りない模様だ.Pluto.jlをインストールしてみたが,動かない.Plutoというのは,ブラウザ上の実行環境だ.独自のREPMを持っている.using Plots で時間をバカ食いするのは仕方ないとして,@gifがやはり未定義になってしまう.その上,Restart notebookという割り込みが掛かるようになる.リモートとのリンクでタイムアウトしてしまうのだろう.ちょっと使い物になりそうもない.Plutoというのは,notebookの上で走るもののようだが,Jupyter とか Observable などというのもあるようだ.GRという描画環境を持っているのに出せないというのはまったく腑に落ちない.VS Code も試してみたが,やはり,@gif が未定義になってしまう.

来訪者カウントが19万人を超えた

来訪者カウントが19万人を超えた.

image

前回18万人を超えたのはいつ頃だったか?2023年3月31日の記事では106662とある.1年で倍増と言ってよいのではないだろうか?23年12月17日には「17万アクセスにリーチ」とあるので,去年の暮頃には17万を越えようとしていたということのようだ.まぁ,いずれ20万の大台を超えるのは時間の問題と言ってよさそうだ.

ネットアクセス用のサブノートで Libre Office が使えない状態になっている.起動してもなぜか立ち消えてしまう.開発機には別にインストールしてあるが,こちらは特に問題なく起動できている.メモリ不足とか何かその種のリソースが不足していることも考えられなくはないが… あるいは,カスペルスキーがブロックしているのではないかとも思われたが,それでもなさそうだ.打つ手がないので,一度アンインストールすることにする.どうも,このアプリはどこかこじらせてしまっているのではないだろうか?「削除の準備中」パネルを出したまま,まったく進まない状態が続いている.

image

いや,ただ別のパネルが出て応答待ちになっていただけかも知れない.OKで進み始めた.⇒復旧した.問題なさそうだ.show