So-net無料ブログ作成
前の16件 | -

「Eject for Windows」ちょっとだけリバイズ [プログラミング]

ずっと前、まだ仙台に単身赴任していたころ、ちょこっと作ったアプリがある。僕が作ったファイルをWindowsユーザにUSBメモリなんかで渡すとき、macOSのFinderでは見えないファイルがWindowsでは見えてしまって「どれがそのファイルなんだよ」なんて怒られることがよくあった。そこでリムーバブルなボリュームにできた不可視ファイルを消してからアンマウントする「Eject for Windows」というのを作って公開した(そのいきさつファイルの探し方macOSで実装)。もう7年も前のことである....

続きを読む


nice!(0)  コメント(0) 

ガウシアンビームの疑問、続き [ガウシアンビーム]

ガウシアンビームをレンズに通した式は近軸理論のレンズの式と矛盾するのではないかという話の続き。

それぞれの式をもう一度同じ形で書くと \begin{align} d_1 &= \frac{d_0 f}{d_0 - f}&\mbox{(近軸レンズの式)} \nonumber \\ d_1 &= \frac{\displaystyle \left(\frac{\pi w_1^2}{\lambda}\right)^2\frac{1}{f} - d_0\left(1-\frac{d_0}{f} \right)} {\displaystyle\left(\frac{\pi w_1^2}{\lambda}\right)^2 \left(\frac{1}{f} \right)^2 +\left(1-\frac{d_0}{f} \right)^2} &\mbox{(ガウシアンビームでの式)}\nonumber \end{align} ふたつ目のガウシアンビームの式はごちゃごちゃしてるけど前回、近軸波動方程式の解から出発してもこの式にたどり着くことがわかった(Rayleigh長さ$z_R$とレンズの屈折力$\phi$を使うともう少し簡単になる)。

僕は先入観を持ってしまって、ひとつめの近軸のレンズの式の方が正しくて(何と言っても簡単だし)、ガウシアンビームの式の方のどこかに制限があるのではないか、と思い込んでいたんだけど、やっぱり正しいのではないか、と思い直して改めて見直すことにした....

続きを読む


nice!(0)  コメント(0) 

ガウシアンビームの疑問 [ガウシアンビーム]

ガウシアンビームの話はあともう少しというところでほったらかしになっている。まあ残りはオマケみたいなのしかないのでこれで終わりとしてもいい。

そうやってガウシアンビームのことは、仕事で使うせいもあってそれなりに勉強したつもりだった。でも、ある知り合いの人からガウシアンビームに関して「こうなるのはおかしいんじゃないの?」という問題をもらって、それに答えられなかった。

しばらく考えてやっと僕なりに答えをみつけた。それが面白かったのでここに書くことにする...

続きを読む


nice!(0)  コメント(0) 

aravis解析 その9 [aravis]

aravisの話は今回でひと段落にする。ほんとはSwift化するつもりだったけど、まだSwiftを書き慣れていないのでなかなか進まない。このままでは、また例によってなかったことになりそうなので、その代わりと言ってはなんだけど、aravisのObjective-Cラッパを公開することにした....

続きを読む


nice!(0)  コメント(0) 

日曜美術館再放送「松方コレクション」 [日常のあれやこれや]

今日夜の日曜美術館再放送松方コレクションの話だった。ボロ儲けした金持ちが美術品を買い漁るというのはあまり面白い話ではないんだけど、大正の時代に西洋の名絵画の現物が日本で見ることができる、ということが画期的だったと言うのは十分理解できる。

当時の日本の洋画はヨーロッパに留学できたほんの限られた画家の作品が中心だった。その意味でコレクションの意義が高かった、ということに異論はない。また、そのおかげで僕も西洋美術館でモネやルノワールやゴーギャンの本物を見ることができたので文句を言える立場ではない。でも...

続きを読む


nice!(0)  コメント(0) 

ライブラリのpath指定がやっぱりよくわからん [aravis]

困ったことが起こった。自分用のframeworkを作って、自分で作ったアプリケーションバンドルに内包させた。そのアプリはビルドしたマシンでしか動かなかった。調べてみるとframeworkの中にさらにgnu由来のライブラリを埋め込んだんだけど、そのライブラリがさらに依存しているライブラリが見つからないらしい....

続きを読む


nice!(0)  コメント(0) 

aravis解析 その7 [aravis]

GObjectは複雑で難しいということは身にしみてよくわかった。この程度の知識でaravisのソースが読めるのかどうかはわからないけど読んでみることにする。まずaravis全体の構造を知るために主要なオブジェクトをざっくりみる。

続きを読む


nice!(0)  コメント(0) 

aravis解析 その6 [aravis]

aravisを理解するためにGObejctの使い方を見ている。GObjectではクラス定義からインスタンスを作るのも非常に複雑である。初期化もいろいろなことができるようになっているのでよけいである。マニュアルを読んだぐらいでは、全体像をつかむことはとんでもなく難しい。ごく普通の場合だけを調べることにする....

続きを読む


nice!(0)  コメント(0) 

aravis解析 その5 [aravis]

aravisを読めるようにするためにGObjectをさらっとみている。前回はGObjectの大まかな構造を確認した。インスタンス構造体とクラス構造体があって、Objective-Cのisaポインタみたいなのがインスタンス構造体の先頭にあるということを見た。今日はクラス構造体のほうと、マクロ展開するための名前の規則なんかについて....

続きを読む


nice!(0)  コメント(0) 

Raspberry Pi 4Bだって [Raspberry Pi]

つい昨日、Raspberry Pi 4Bというのが発表された。それを知ったのでちょっと書かずにはいられない。

4Bは3B+から比べるとCPUコアがCortex-A53からA72に、クロックが1.4GHzから1.5GHzに、GigEがちゃんとギガビットのスループットに、4つのUSBのうちふたつがUSB3になった。4k30pディスプレイが2台も繋がるらしいけど、Raspberry Piユーザにそんな人っているのかな....

続きを読む


nice!(0)  コメント(0) 

プレステVRでげろげろに [日常のあれやこれや]

昨日、息子が友人から手に入れたというプレステVRでエースコンバット7をやってみた。イージーモードのミッション1でも敵のロックオンから逃げようとするとぐりんぐりん回ってしまって、すぐにどっちが地面だか空だかわからなくなって、そのうちめまいがしてきた(急な屋根から滑る落ちる夢だ、墓穴を覗き込むんだ、キム・ノヴァクだ)。15分ほどやっただけでゴーグルを脱ぐと、首の後ろが重くなって完全にげろげろになってた。気持ち悪くてそのまま半日寝たままで過ごすことになった。

たまたま帰ってきた娘がそのあとやったら、娘はすぐに慣れて、きゃあきゃあ言いながら次々ミッションをクリアしていった。僕は娘がやってるのを固定モニタで見てるだけでまた気持ち悪くなってきたので逃げた。

何が違うんだろ。歳の差だけではないような気がする。でもどっちにしても僕はもうやらない。もういい。

.....息子はバイオハザードも持ってるらしい....きっとグロ怖いんだろうな.....
nice!(0)  コメント(0) 

aravis解析 その4 [aravis]

ということで、これまで(その1その2その3)でほんとうにざっとaravisの使い方をおさらいしてみた。みてわかるように、aravisを使うのは非常に簡単になっている。それはGObjectが使いやすくできている(書きやすいとは言ってない)のと、aravisがGObjectの思想に忠実に従ってできているからだろう。

最初aravisのswiftラッパを作ろうと思っていたんだけど、ほとんどそんな必要はないぐらい簡単だし、そんなものを作ってもaravisのクラスをswiftのクラスに読み替えて、文字列の変換をして、パブリックなメソッドが単にaravisの関数を呼ぶだけのものになってしまう。

Objective-Cラッパなら少しは意味があったかもしれないけど、今更そんなものを作るつもりはない。

そうするとやはりGObjectをswiftのクラス/構造体で書き換えて、glibやgettextやintltoolなどのlinux固有のライブラリの依存をなくすというのが正しい方向だろう(本当は、そんなものをやめて素直にaravisをそのままmacOSでも使うというのがもっとも正しい方向だけど)....

続きを読む


nice!(0)  コメント(0) 

aravis解析 その3 [aravis]

aravis解析の続き。今日はmacOSへのインストールと、接続されたカメラ個々に特有な操作をするためにGen<i>Camノードツリーを読んでカメラの機能を探すにはどうするかという話....

続きを読む


nice!(0)  コメント(0) 

aravis解析 その2 [aravis]

昨日から始めたaravisの解析。昨日はaravisのライブラリとしての基本的な使い方をさらっとやった。かなり簡単に使えるようになっていることがわかる。よくできている。

今日はカメラ属性の操作とカメラ列挙とフレームバッファの使い方などについて....

続きを読む


nice!(0)  コメント(0) 

aravis解析 [aravis]

先日コメントをもらって、その気になってしまった。Gen<i>Cam規格カメラのLinux上のドライバであるaravisの中身を見ることにする。

仕事ではそんなことをやってる場合じゃないくて、時間があるならまっ先に書かなきゃいけないアプリケーションとかがあるんだけど、これもいずれは必要になるはずなのでLowest Priorityでやることにする(でも仕事のプライオリティって簡単にひっくり返るからなあ。それに比べて技術進捗の帯域ってずっと狭いもんな)。ちゃんと細部まで解析できればswiftで書き換えてmacOS版のドライバにするところまでいければいいけど、また途中でほったらかすかもしれない。そのときはごめんなさい....

続きを読む


nice!(0)  コメント(0) 

Swift5の数関連プロトコル [Swiftプログラミング]

いつのまにかSwift 5になってた。勉強途中なので追いかけるのが大変。基本的なprotocolに変更があった。詳しくレポートしてくれる人がいた。

数関連のprotocolが代数構造に似ていると思っていたけど、AdditiveArithmeticはいかにも.zeroを単位元とする加法群という感じになっている。ただし逆元があるかどうかや、結合則に従うか、可換性を持つかどうかは実装に依存する形になってるので、Loopかモノイドかそれともアーベル群なのかは具体的な型の実装に任されている。まあ、そこまで代数をモデル化してもプログラミングの役に立たなかったら意味がないので当然だろう。

その結果というかNumeric protocolは積の演算だけが定義されるprotocolになった。Numericには積の単位元である.oneは定義されていないので、Numericは乗法に関して単位元のない半群を持つのような感じになってる。比較的身近な環にクォータニオンがある(正確には整域なのか)。また$n \times n$正方行列全体も環をなす。どちらも乗法に関して非可換な環である。また、この人が指摘してるように$n$次元のベクトルは加法群をなす。

ところがなぜかこないだちょっと見たsimdライブラリではベクトルもクォータニオンも行列もこれらのprotocolをadoptしていない。演算子定義なんかはそれぞれ勝手にやってる。大した手間ではないとは言えるんだけど、せっかくprotocolを整理したのに一方では無視すると言うのは美しくない。simdライブラリがCではなくSwiftに書き換えられた時点でちゃんとするのかもしれない(simdライブラリなんか、やろうと思えばあっという間だと思うんだけど。SwiftはOjbetictive-CよりCのほうが相性がいいのではないか、と最近は感じるようになった)。

ついでに言えば、simdライブラリにクォータニオンがあって同次座標のベクトルと行列の定義はないのもちょっと残念。同次座標ベクトル \begin{equation} \left( \begin{array}{c} x \\ y \\ z \\ w \end{array} \right) \equiv \left( \begin{array}{c} x / w \\ y / w \\ z / w \\ 1 \end{array} \right) \end{equation} の同値関係をEquatable protocolにadoptした形にすれば美しいのに。まあそれがどのくらい便利か、はなんとも言えないけど。

Swift 5での数関連protocolの継承関係をMathematicaでgraphにしなおすと、
0601numbers.png

となる。今回はprotocolだけにした。グレーのprotocolは数ではなく文字列からの変換を表すprotocolである。

MathematicaのGraphLayoutはいろいろできるんだけど、見やすい形にするのは難しい。結局これもIllustratorで細工した。あまり意味ない。
nice!(0)  コメント(0) 
前の16件 | -