ポリゴンレンダラ - その1 [プログラミング]
こないだの光線追跡をObjective-Cに移植する作業はそれなりに進んでいる。Mathematicaが元々持っているいろんな機能、例えばベクトル演算や方程式の数値解を求めたり、といったものをObjective-Cで実装しないといけないのがやっぱりかなりの手間。でもそれはこう言う数値計算をやるアプリを作るときは避けて通れないので地道にやるだけ。それにそういったところはこれまでにもいろいろ作ってきたので0からやる、という必要はない。
なんだけど、またちょっと思いついたことがあって違うものを始める。
何かというと、なるべく効率よく3次元のポリゴンを2次元に落としてウィンドウ内に描画する、いうもの。当然Cocoa/Objective-Cを使ってMacで動作するものを作る。
そんなの、OpenGLを使えばいいじゃん、と言われるだろうけど、ピクセル単位のレンダリングではなく、PDFベースの描画でそれをやりたい。なんでそんなことをするのか、というと3次元データの可視化が目的。ようするにフォトリアリスティックなレンダリングではなくてぱっとみて3次元の形がわかるようなものを作りたい。それを実際になにに使うか、はできあがってから説明する。アイデアをパクられると困る、なんてね。
なんだけど、またちょっと思いついたことがあって違うものを始める。
何かというと、なるべく効率よく3次元のポリゴンを2次元に落としてウィンドウ内に描画する、いうもの。当然Cocoa/Objective-Cを使ってMacで動作するものを作る。
そんなの、OpenGLを使えばいいじゃん、と言われるだろうけど、ピクセル単位のレンダリングではなく、PDFベースの描画でそれをやりたい。なんでそんなことをするのか、というと3次元データの可視化が目的。ようするにフォトリアリスティックなレンダリングではなくてぱっとみて3次元の形がわかるようなものを作りたい。それを実際になにに使うか、はできあがってから説明する。アイデアをパクられると困る、なんてね。
ドラッグ&ドロップでフォルダを同期するフォルダアクション [プログラミング]
ちょっと時間があいてしまった。
いきさつ、なにがやりたいか、技術的な問題は何か、といったことは前回説明したけど、今日は実際に動作するApple Scriptを示して、その使い方を説明する。
こういうのってどうだろ?面白いかな?
いきさつ、なにがやりたいか、技術的な問題は何か、といったことは前回説明したけど、今日は実際に動作するApple Scriptを示して、その使い方を説明する。
こういうのってどうだろ?面白いかな?
CocoaのDistributed Objects [プログラミング]
Mac OS XのCocoaフレームワークにはDistributed Object(分散オブジェクト)というしくみががあって、これを使うとクライアント・サーバ型のアプリが簡単にできる。クライアント・サーバアプリというと僕はまっさきにX Windowシステムを思い浮かべるんだけど、普通の人にとってはWEBサーバなんかが典型的だろう。
Cocoaを使うと、こんなんでいいの、と言うくらい簡単にできてしまう。
昨日、仕事で必要があってちょっといじっていたら、すごく面白いことに気がついた。2時間ほどこれで遊んでしまった。今日はこの話をメモする。Cocoaでの分散オブジェクトシステムのちょっとコアな話。
Cocoaを使うと、こんなんでいいの、と言うくらい簡単にできてしまう。
昨日、仕事で必要があってちょっといじっていたら、すごく面白いことに気がついた。2時間ほどこれで遊んでしまった。今日はこの話をメモする。Cocoaでの分散オブジェクトシステムのちょっとコアな話。
ドラッグ&ドロップでフォルダを同期するフォルダアクション [プログラミング]
大学で作業していてちょっとしたことだけど、面倒だったことがあった。作業場では古いMac mini(core solo)を置いていくつかの装置の制御や、作業に使うユーティリティや、データのメモに使っている。ところがその部屋は独立した建家にあって、ネットワークがない。そこでUSBのフラッシュメモリを使って、居室のMac mini(mid 2010 Core2Duo)とファイルのやりとりをしている。絵にすると
こうである。絵にするようなものでもないけど。
居室のMac miniは震災前会社で仕事に使っていたやつで、居室では学内のネットワークに繋がっていて、DropBoxなんかを経由して榴岡のiMacにバックアップするようになっている。
最初のうちはフラッシュメモリに丸コピーしてたんだけど、ファイル数が増えてきてどれがコピーすべきファイルなのかわからなくなってきたので、フォルダをまるごとrsyncコマンドで同期するようにした。それでもいいんだけどいちいちターミナルを開いてrsyncを打ち込むのも面倒になってきた。こういうときは「フォルダアクション」でドラッグ&ドロップですぐ同期、だろうと思った。
そういうのってきっと誰かがやってるだろうと思って、ウェブで探してみたんだけどなかなか見つからない。しょうがない、では自分で書くか、と思い立ったけど、これまでフォルダアクションも、それを記述するためのApple Scriptも使ったことなかったので、実際にやってみるとけっこう苦労した。
こうである。絵にするようなものでもないけど。
居室のMac miniは震災前会社で仕事に使っていたやつで、居室では学内のネットワークに繋がっていて、DropBoxなんかを経由して榴岡のiMacにバックアップするようになっている。
最初のうちはフラッシュメモリに丸コピーしてたんだけど、ファイル数が増えてきてどれがコピーすべきファイルなのかわからなくなってきたので、フォルダをまるごとrsyncコマンドで同期するようにした。それでもいいんだけどいちいちターミナルを開いてrsyncを打ち込むのも面倒になってきた。こういうときは「フォルダアクション」でドラッグ&ドロップですぐ同期、だろうと思った。
そういうのってきっと誰かがやってるだろうと思って、ウェブで探してみたんだけどなかなか見つからない。しょうがない、では自分で書くか、と思い立ったけど、これまでフォルダアクションも、それを記述するためのApple Scriptも使ったことなかったので、実際にやってみるとけっこう苦労した。
PaTrash2.0を作る - その12 [プログラミング]
もうほとんどできあがったPaTrash2.0。あともうちょっとのことろで問題が出た。この問題には結構な時間を費やした。わかってしまえばたいしたことないバグなんだけど、普段アプリを書いててそれと同じようにやってると、システム環境設定ペインのようなプラグインのプログラミングには落とし穴があった。今日はその話。
PaTrash2.0を作る - その9 [プログラミング]
遅々として進まないPaTrash2.0。ヘッドレスアプリ(デーモン、あるいはエージェントプロセス)のパラメータ設定のために「システム環境設定」を使おうと考えた。これは僕のiMacのMac OS X10.6.8の「システム環境設定」アプリのウィンドウ。
この「その他」のところに登録されるようにしたい。システム環境設定アプリに呼ばれるためにはプラグインの形式で書けばいい。前回はシステム環境設定アプリのためにはそのプラグインをどこに置けばいいか、を整理した。今日はそのための注意点のいろいろをまとめておく。システム環境設定アプリ用のペイン(プラグイン)を書くためのノウハウ集である。
この「その他」のところに登録されるようにしたい。システム環境設定アプリに呼ばれるためにはプラグインの形式で書けばいい。前回はシステム環境設定アプリのためにはそのプラグインをどこに置けばいいか、を整理した。今日はそのための注意点のいろいろをまとめておく。システム環境設定アプリ用のペイン(プラグイン)を書くためのノウハウ集である。
PaTrash2.0を作る - その8 [プログラミング]
なかなか進まないPaTrash2.0。前回はもうひと月前になってしまった。もうすっかり忘れてしまっている。
ヘッドレスアプリ(ユーザインターフェイスを持たないエージェントプロセス)のパラメータ設定のために、PaTras1.0では専用のアプリを作ったが、2.0ではユーザレベルのシステム環境設定にしたい。前回、システム環境設定はインターフェイスAPIのほとんどないプラグインを作るのと同じでいい、というのがわかった。今日は環境設定のファイル(バンドル)がどこにあるかで影響する範囲が違う(設定したユーザだけなのか、ローカルなシステム全体か、またネットワークに影響するか、などなど)が、それをプログラムからどうやって探すかを整理する。
ヘッドレスアプリ(ユーザインターフェイスを持たないエージェントプロセス)のパラメータ設定のために、PaTras1.0では専用のアプリを作ったが、2.0ではユーザレベルのシステム環境設定にしたい。前回、システム環境設定はインターフェイスAPIのほとんどないプラグインを作るのと同じでいい、というのがわかった。今日は環境設定のファイル(バンドル)がどこにあるかで影響する範囲が違う(設定したユーザだけなのか、ローカルなシステム全体か、またネットワークに影響するか、などなど)が、それをプログラムからどうやって探すかを整理する。