サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
decafish.blog.ss-blog.jp
困ったことが起こった。自分用のframeworkを作って、自分で作ったアプリケーションバンドルに内包させた。そのアプリはビルドしたマシンでしか動かなかった。調べてみるとframeworkの中にさらにgnu由来のライブラリを埋め込んだんだけど、そのライブラリがさらに依存しているライブラリが見つからないらしい.... ややこしいので、具体的に書くと、 のようにA.appというアプリバンドルの中にFrameworksというディレクトリがあって、そこに自作のF.frameworkを内包している。F.frameworkはそいつが使うためのL1.dylibというライブラリをLibrariesというディレクトリに持っている。L1.dylibはL2.dylibという別のライブラリを参照しているので、同じLibrariesディレクトリにコピーした。 このL2.dylibというライブラリの参照が実行時に解決さ
最近Gen<i>Camの実装が進まないせいで、このブログの技術的な記事が減っている。このままではこのブログの存在意義が揺らぎかねず、アイデンティティの危機を感じる(そんな大げさなものか)ので、頑張ろうと思う。 だからというわけではないけど、Raspberry Piのデジタル入出力のGPIOを使いやすくするためのライブラリであるpigpioを何回かに分けてちょっと詳しめに見ることにする。 pigpioライブラリはすごく面白い特徴を持ったライブラリなんだけど、ちょっとあさっての方向に尖ってしまってるとも言える。その一方で日本語での記事は断片的で、とりあえず動かしてみたら動きました、というような、パッと見る限りではWiringPiやbcm2835とどこが違うのかよく分からない記事が多いような気がする。本家のサイトもあまりにあっさりしていて、だからどうなんだ? ということになっているんではないだろ
実は今日ほとんど丸一日ずっとこれで遊んでしまった。すごく面白い。 平林さんにそそのかされた、いや、教えてもらったRaspberry Piで動くMathematica、平林さんは速攻で試しておられたが、僕も先週Raspberry Piを手に入れた。今日開梱してやってみた... 買ったのはRaspberry Pi TypeB。Raspberry Piは電源にmicroUSBを使ってるんだけど、microUSBのケーブルなんか部屋のどこかに転がってるだろうと思っていたら、どれもminiUSBだった。ジジイのしょぼくれた目にはminiUSBもmicroUSBも違いがわからない。しょうがないので近所の百円ショップに行ってUSBケーブルを買ってきた。 僕はテレビを持ってないのでHDMIを受けられるディスプレイがない。昔のアナログTV放送時代のチューナのほこりをはらって外部入力にRaspberry Pi
たまたまあるコラムを読んでいると、どうも、Macの「現在非使用中」のメモリは少ない方がいいと思われているらしく、積極的にパージするソフトなんかがある。しかし、Appleのサポートの記述の通りだとすると、全く実害はないし、パージしたとしてもパフォーマンスはあがらない。 ページングのアルゴリズムは複雑で、最新のOS Xで具体的にどうなっているかは完全には知らないんだけど、「現在非使用中」メモリはOSが終わったプロセス、アプリのテキスト領域(実行コードなどの読み出ししか行われない領域)なんかをわざわざ消さずにほったらかしてある領域にすぎない。ページを整理するのにも手間が必要だし、ひょっとしてユーザがもう一度同じアプリを起動すれば、そのまま中身を流用できる可能性もある。もし新しいページが必要になれば当然それがクリアされて使われる。「空き」メモリとの違いは、違うキューにつながっている、ということぐら
先日から始めたポリゴンレンダラの実行効率のいい実装のためにひさしぶりに調べ物をしている。MacOS Xで数値計算を実装するならAccelerateフレームワークを使うのが一番手っ取り早くて効率もいい。MacOS XではAccelerateフレームワーク以外にはFFTWとgslがフリーであって、それ以外と言えばインテルのMKLと、NAGのポートぐらいだろう。Windowsではどうなんだろ。全然知らないんだけど、もっといい選択肢がいっぱいあるんだろうな。 MacOS XではAccelerateフレームワークは10.0から標準でインストールされるので使えるなら使ったほうがいい。またiOS6/MacOS X10.7からは完全に同じ呼び出しが両方のOSで使えるようになっている。 実はAccelerateフレームワークはいわゆるアンブレラフレームワークで、その中に vDSP vecLib vImage
Mac OS XのCocoaフレームワークにはDistributed Object(分散オブジェクト)というしくみががあって、これを使うとクライアント・サーバ型のアプリが簡単にできる。クライアント・サーバアプリというと僕はまっさきにX Windowシステムを思い浮かべるんだけど、普通の人にとってはWEBサーバなんかが典型的だろう。
タイトルは「なんちゃってMathematica」(「なんちゃって」なんて古いか)だけど、Mathematicaのクローンを作りたいわけではない。タイトルの理由はいくつかある。あとで説明する。 もう7、8年前の話だけど、gslが1.0台にあがったとき、そのフロントエンドを作ろうと思った。gslは単なるライブラリなので、自分で目的にあったコードを書いてgslをリンクして動かす、というのが普通の使い方で僕も多項式フィッティングやチェビシェフ近似など部分部分を使っていたが、gslが全体として充実した広い数値計算の範囲をカバーしているということに気がついた。そこでなんとなく汎用の計算環境として使えるのではないか、と思っていた。 たとえばMATLABは、もともとはLINPACK(LAPACKの前身)のフロントエンドとして作られていた。MATLABはいろいろなところで使われている汎用のソフトウェアで、非
昨日はスレッド間で情報のやりとりを整理するためのメカニズムのうち、unixならだいたい実装されている機能をおさらいした。今日はMacOS X独自のスレッド制御の機能について。 4 MacOS X固有のスレッド制御メカニズム これまでのロックやメモリ障壁はMacOS X以外のOSでも存在する。MacOS X固有のメカニズムとしてrunLoopSourceがある。runLoopSourceはロックやメモリ障壁ではレベルの違う機能で、スレッド間通信とみなしたら遅くてオーバーヘッドも大きいが、複雑で大量の通信をする必要があるときには便利な機能である。前にもちょっとだけ勉強したけどもう一度整理する。 Cocoa/Objective-CのレベルではNSRunLoopはスレッドそれぞれに一つずつあって、このオブジェクトが入出力のディスパッチをしている。NSRunLoopの中でループがあって、キーボード
昨夜、遅くまでOpenCVで遊んでいた。そもそも何を思ったかというと、たまたまこの記事を見た。写真にモザイクをかけるアプリ。これはiPhoneアプリで、モザイクをかけたい位置を指定するようになっている。こんなのOpenCVの顔認識を使えば自動的にできるじゃん、iPhoneにもOpenCVは移植されているし、と思った。 で、ちょっとやってみようと思ったのが運のつき。ついつい嵌って夜中まで遊んでしまった。で、以前遊んだFaceTrackerに手を入れて動作するものを作った。その結果は.... 昔の家族旅行の写真にモザイクをかけてみた(追記)。 ちゃんとひとの顔を見つけ出してその目の部分にモザイクがかかっている。微笑ましい家族旅行の写真が、一気に怪しげな見てはいけないものになったような感じになる。 OpenCVを使えば画像の中にある顔の位置を取り出すことができる。その中から目の部分にモザイク処理
まえの「バックグラウンドのアプリを軽くする」で作ったやつよりもうちょっとましな新しいバージョンを書いて、それをversion1.1とした。すごい。珍しく予定通り。 もし古いのを使っている人がいたら、1.1のほうが問題になる部分が少ないので、こちらと交換してください。 Desquander1.1のダウンロードはここから。 Xcodeプロジェクト形式のソースはこれ。 また、いつものパターンで一見(いちげん)さん用の専用ページを作った。 英語ページも。 ついでにSpaghettiMazeMakerもよろしく。 3 Desquander1.1
「Macの手書き説明書」さんの「バックグラウンドで開いているアプリを劇的に軽くするPythonスクリプト」というエントリで知った。元ネタは「日曜研究室」さんのこの記事。 同じ動作をする専用の簡単なアプリDesquanderを書いたので、それを紹介する。 元ネタの記事を見せてもらうと 1 killall -SIGSTOP firefox-bin 2 killall -SIGCONT firefox-bin でアプリケーション(ここではFireFox)の動作を一時停止したり、継続したりできるらしい。 なに、それ?SIGTRAPとかSIGALRMじゃなくてSIGSTOPなの? ちょこちょこ調べてみるとどうやらそういうシグナル(signal)があるらしい。全然知らなかった。すくなくとも昔のSytemVにはなかった。なぜそれが断言できるか、というとずっと昔、HP-UX(HP社のunix)でsigna
こないだ終わった迷路生成のアプリ「SpaghettiMazeMaker」がAppleのCards&PuzzlesのDownloadsに登録された。ところでこのページ、これ以外みんなMBなのね。 ずいぶん前に申請してすっかり忘れてた。ここから申請する。ADCのメンバなら申請できるけど、開発会社が作るアプリが前提になってるみたいな感じ。面倒なメールが来るのも困るのでこのためにgoogleメールに新しいアカウントを作った。 ちなみに、日本のダウンロードにも申請したけどそっちは音沙汰無し。 続きを読む
今日もまた送別会があった。今日は初めて僕より年上。こないだのことがあったのでもったいないけどあまり飲まずにかえってきた。来月すぐまたある。しかしこう送別会が続くと出費がかさんで苦しい。 さて、AGG方式のSmoothingのNSBezierPathのカテゴリとしての実装の続き。今回はアルゴリズムそのものの実装。 続きを読む
先日unixの場合のデバイスの扱い方を思い出した。しかしこの方法はMacOS Xではレガシーなやりかた。1394やUSBなどのホットスワップに対応できるようにMacOS Xでは作り直されている。その構造のプログラマにとってのインターフェイスが「I/O Kit」。 しかしまたこれが難物。 今日は難物さかげんをちょとだけレビューしてみる。 I/O Kit MacでUSBデバイスのプログラミングをするにはI/O Kitを使うことになる。めずらしく「I/O Fundamentals」は日本語化されているので敷居が高くなりがちなI/Oがちょっとだけ低くなっている。 MacOS Xでのデバイスの考え方の普通のunixと違うところはデバイスドライバがオブジェクト指向に作られていることである。 Core FoundationのCやCocoaのObjective-Cではなく、I/O KitではC++のサブセ
前回の続き。このまま休みに入ると何をやってたのか忘れてしまうのでキリがいいところまで書いておく。 世間で言われているようにNSOperationのmainメソッドの中でAutoreleasePoolのインスタンスを作らないとリークするか、というとそうではない。 ではどうなっているのか? どうなっているのかを見るためにちょっと実験してみる。 NSAutoreleasePoolにはドキュメントされてないけどデバグに使うと思われるメソッドがある。 + (void)showPools; これはFoundation frameworkのclass-dumpを読んでいて見つけた。こういう隠しメソッドと言うかデバグ痕跡のようなものがときどきある。こういうドキュメントされていないメソッドはOSのバージョンによって動作が違ったり、極端な場合全然違う意味だったりそもそも存在しなかったりするので注意が必要である
avahiがよくわからないので先にこないだの続き。 数値計算では一般に時間がかかるループ処理が多く、UIを持つアプリケーションとしてBuildした場合、計算が始まってしまうとキー入力やマウスクリックを全く受け付けず、しばらくするとビーチボールが回り出す。数値計算のソフトを書くとこれをどうするか、の話。前回はタイマを使った場合のメモだった。 3.Threadを別にする 一番外のループでも処理時間が長い場合やループが深かったり複雑だったりして一番外のループの時間が読めない場合がある。このとき深いループの中でタイマを呼ぼうとするとプログラミングが面倒になったりする。そのときは別Threadを作ってそこで計算をすると言う手がある。例えば - (void)doCalculation { [NSThread detachNewThreadSelector:@selector(outerMostLoop
去年の春に個人的な問題が発生して、その対応のせいで仕事が押してしまって、このブログの更新が止まってしまった。平常運転にはまだもう少し時間がかかるけど、年始なので仕切り直ししておこうと。 恒例今年の年賀状は: 3ヶ月サボっていた反動が現れている。先送りしていたいろんな仕事が襲ってきて忙しい。めんどくさい。まあでもやらなきゃな、仕事だし。 このところウクライナがいったいどうなるのかと心配でテレビのニュースを見るんだけど、そのたびに突然爆発するアパートとか、瓦礫の山になった街とか、怪我をしてぐったりしてる子供とか、目を覆って泣いている女とか、担架に乗せられて運ばれる男とか、そんなのばかり見ることになって、辛くていやになる。 今のロシアはショスタコーヴィチが生きていた頃のソビエト連邦のような、今で言うなら中国や北朝鮮並みの情報統制が敷かれた独裁国家になっているらしい。独裁者の都合のいい情報だけを流
QTKit Captureとか言いながら表示品質の問題にばかり注目して、QTKitCaptureの使い方を忘れてしまいそう。今回はCore Videoを使ってみる。続きを読む 昨日Core Imageのフィルタを使ってデインターレース(インターレース解除)をしようとした。結果的にあまり上手くいかなかったけど、フィルタの使い方はわかった。 たとえば、CITwirlDistortionを入れてみると とかになる。 これって、Leopardのアプリケーションに入っている「Photo Booth」のエフェクトそのものやね。とても簡単で、それほどCPUの負荷は大きくない。これはおもしろい。 フィルタの書き方を勉強してみようか。なんか大変そうだけど。
自分でインストールしておきながら忘れてしまうのでメモしておこう。 FFTのフリーのライブラリとしてfftwというのがある。 http://www.fftw.org/ マルチプラットフォームで使い勝手が良くて最高のパフォーマンスでかつフリーという売りで有名。 MacにはnativeのvDSPと言うベクトルユニットを使うライブラリがあるが、ベクトルユニットがサポートしていないデータには当然使えない。 fftwはベクトルユニットを指定するコンパイル用スイッチがある。 ダウンロードはhttp://www.fftw.org/download.htmlから。07/10現在3.1.2がstable。3.2 alpha2も人柱向けに上がっている。 MacではFinkを使うことも出来る。 まず、ファイルを展開 % tar xvf fftw-3.1.2.tar したあとのフォルダ % cd fftw-3.1.
こないだの続き。 Conwayのライフゲーム(Conway's Game of Life)(wikipedia)は僕の大学の頃流行ったが、当時はパソコンなどなく、実際にプログラムすることは少なかった。剛の者のある友人は5mm方眼のノートに鉛筆で丸を入れてFペントミノ(Rペントミノと言う人もいる)の世代交替を1ページ1世代ずつ描いて追っていた。「途中で間違ってたらどないしょ」と言いながらノート1冊を使い切って2冊目に突入してしまってからはさすがに挫けていた。 会社に入ってVAX/VMS(みんな知らんだろうなあ)に繋がったVT220(もっと知らんだろうなあ)ターミナルのReGIS(うわー懐かし)というグラフィクス命令を使って書いてみたことがあるが、せいぜい40x30ぐらいの範囲しか表示できなかった。ReGISはとてつもなく面倒なエスケープシークェンスを使う命令だったが、ホットキーひとつで画面が
さて、マルチコアを使い倒すためにはthreadを生成しなければならない。それを簡単にするためのNSOperationのお勉強。このFoundationのクラスは10.5 Leopardから使えるようになった。 Cocoaアプリでマルチコアに対応させるためにはこれまでNSThreadを使っていた。NSThreadはthreadの同期の機能はなく、自分でNSLockなどを使って実装する必要があった。注意深く作法を守らないと、つまらない理由のせいでデッドロックから抜け出せないコードになってしまうなんてことがよくある。 そのthread生成から同期、特に終了処理(子threadが全部終わるまで待つ)というのを肩代わりしてくれるのがNSOperationらしい。 マルチコアを使う用途だけでなく、ある程度時間のかかる処理をマルチスレッド化する場合にも使えるらしいので、以前数値計算のためにNSThrea
このページを最初にブックマークしてみませんか?
『腰も砕けよ 膝も折れよ:So-net blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く