non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

WindowsでDLLを作ろうとしてmrb_context_runの歴史を調べた

おはようございます。ここ数日夕方になると熱が上がる次男、昨日は夕方も熱も上がらず、汗かいて寝て、今朝も熱が上がらなかったので、おそらく復活かと思います。kjunichiです。

背景

mruby-juliaなるmrubyからはJulia(PyCall経由でPythonも)を呼べ、JuliaからはmrubyのAPIにアクセスできるmrbgemを作ってます。

今年は、Windows環境がメインな環境であれこれ開発進めようとしていて、その際にmruby-sharedlibなるmrbgemを利用して、libmruby.a相当の mruby.dllを作ろうとしたら、defファイルのシンボル「mrb_context_run」が存在しないとうエラー。

mrb_context_runの歴史

1.0.0

mrb_context_runはmruby v1.0.0ではありました。

mrb_value mrb_context_run(mrb_state*, struct RProc*, mrb_value, unsigned int);

1.1.0

MRB_API mrb_value mrb_context_run(mrb_state*, struct RProc*, mrb_value, unsigned int);

1.2.0

MRB_API mrb_value mrb_context_run(mrb_state*, struct RProc*, mrb_value, unsigned int);

current

#define mrb_context_run(m,p,s,k) mrb_vm_run((m),(p),(s),(k))

現在のmasterはこのように、mrb_vm_runを呼び出すマクロとして定義されています。 mruby-sharedlibでDLLを生成しようとしてdefファイルのシンボルが見つからないというエラーの 原因はこれでした。

github.com

まとめ

どうやら、現在のリリース版までは、存在しているようです。 単純にmruby-sharedlibにこのAPIを削除したプルリクを送るのは待った方がいいかもでした。

関連記事

11年前の記事

4年前の記事

3年前の記事

2年前の記事

Ubuntuで/usrを消してsudoができなくなったが、レスキューモードでリカバれたが、mozcが動かなくて再インストールした件

こんばんは。かれこれ、半月以上は次男が熱を出して、ちょっと良くなって、また熱出してを繰り返しています。おそらく夏風邪の一種のようでとくに深刻な病気ではなさそうで、その証拠に、やたら食欲もあり、元気で扱いに困ってます。kjunichiです。

背景

HDDの残量警告を頻繁に受けるようになり、/homeを別途用意したので、ついでに/usrを/homeの容量の空いているHDDへ コピーして

ln -s /home/usr /usr

して、この警告の回避を狙った。

やらかした

が、

sudoが利用しているlibsudo_util.so.0が読み込めなかった LD_LIBRARY_PATHでコピーした先のパスを指定してもダメだった。

sudoコマンドはリカバリできたが。。

起動時に適当にキー叩いて、liloもとい、grubの選択画面が出てきて、ここで、レスキューモードで起動、 その後、rootのシェルでremountして/home/usrを/usrにシンボリックリンク張ってsudoコマンドは事なきを得た。

が、mozcがどうにも動かない、変換プログラムの軌道に失敗したから、再起動の一点張り。 ググるとすぐに~/.mozc配下のファイルを消せとあるが、効果なかった。

HDDの容量を圧迫してた原因が判明

そもそものHDDの容量は/var/log/cups/error.logが原因だった。こいつが8Gも食っていた。 なぜそこまで肥大化したのかはおいおい調べることにする。

関連記事

6年前の記事

大昔に作ったGoogle App EngineのJavaアプリを更新するには

おはようございます。溶連菌で熱を出した次男が、また熱を出して保育園を休んでいます。kjunichiです。

背景

データストアにデータが溜まりすぎ、無料の枠を超えだして、削除する必要があった。 普通にググってGoogle App EngineJavaのページだとMavenを使ったやり方になってしまっていたが、 昔ながらのコマンドラインベースのappcfgが今も使えたので、そのメモ。

コマンドラインでデプロイするには

..\appengine-java-sdk-1.9.53\bin\appcfg.cmd update war

一昔前と違い、OAuthで認証が行われるようで、初回は、ブラウザへのURLの入力指示が 表示され、これに従って進め、キーをコピペして、以降はこれを元に認証される模様。

関連記事

12年前の記事

11年前の記事