|
setup diary |
ImageMagickを使って、pdfをjpegに変換しようとしたら、security policyのせいで出来ないと言われてしまった。昔はできたはずなんだけど。調べてみたら、回避方法が分かった。/etc/ImageMagick-6/policy.xmlでPDFの制限をしている行をコメントアウトすれば良いようである。実際にやってみたら、うまく動くようになった。
rglを使うと、Rで三次元の図を作って、マウスで回したりすることができる。webGLを利用して、htmlにすることもできる。
library('rgl') open3d() shade3d(cube3d(),col='red') writeWebGL(filename='index.html')
とすると、index.htmlが出来て、これをブラウザーで表示させると、三次元の図が現れる。そのままの設定だとwebGLというフォルダが出来てしまうけど、まあいいか。このhtmlには、長いjavascriptが埋め込まれている。これを取り除いて、図形のデータだけにしたい場合は、
writeWebGL(filename='index.html',commonParts=FALSE)
とすればよい。しかし、そのままでは図形を表示できない。/usr/lib/R/site-library/rgl/htmlwidgets/lib/CanvasMatrix/CanvasMatrix.src.jsと/usr/lib/R/site-library/rgl/htmlwidgets/lib/rglClass/rglClass.src.jsを同じフォルダに置いて、"src."を除いたファイル名に変更して、htmlの最初の方に
<script src="CanvasMatrix.js" type="text/javascript"></script> <script src="rglClass.js" type="text/javascript"></script>
を加える必要がある。また、同じhtmlに複数の図を置く場合には、div idを変更する必要がある。
<div id="div" class="rglWebGL"></div> <script type="text/javascript"> var div = document.getElementById("div"),
にある二つの"div"を重複しない名前に変更すれば良い。この方法がなかなか分からずに苦労した。
自作の装置で測定する場合には、rubyを用いて測定している。PCと機器で通信する場合には、インターフェースとしてGPIBやRS232CやUSBTMCを主に使っているが、これらを切り替える必要がある場合がある。当初は、機器に対してインターフェースを固定して、それ専用のプログラムを書いていたが、インターフェースを変えるために、別のプログラムを作らないといけないので面倒である。
現在ホームページに公開しているversionでは、インターフェースをclassとして定義して、機器はそれらのサブclassとして定義することによって、インターフェースを指定している。インターフェースを切り替えるためには、機器を記述しているプログラムのスーパーclassの部分を書き換えるだけで良い。スーパーclassは後から変えることは出来ないようなので、プログラムの書き換えが必須であった。
新たに装置を立ち上げるにあたって、いろいろと考えていたら、moduleを使えば、インターフェースと装置のプログラムを書き換えずに、測定プログラムからインターフェースを切り替えるという方法を思いついた。つまり、インターフェースはmoduleにして、測定プログラムの中から、機器のclassを再定義してincludeさせるのである。測定プログラムの先頭が少し長くなるが、そこでそれぞれの機器のインターフェースが明示されるのは、良い点とも考えられる。もう少しプログラムが固まってきたら、公開するかも知れません。