challenge ciphertext
作ってみた→tell - MyMiniCity
普段棲んでいるドメイン下では書けないようなlambdaな事を綴る. あと草稿とかも置いたりするかも.
って言うか,ここの使い方ってよくわからないんだけど,「転載」指向のblogか?ここ?
「Add to friends」とか書いてあるボタンは割と無差別に押してます.
テスト前に講義ノートを売るというビジネスがおもしろい
僕の通う大学は世間の大学の多分に漏れずに授業を聴いている生徒が3割と居ないという感じの大学で、昨日に行われたテストで授業を聴いていなかった生徒が「授業を聴いていなかったのですが、この問題は授業を聴いていないと解けない問題なのでせめて問題の意味だけでも教えてください」と先生に抗議している感じのなかなかおもしろい学校だ。
そんな僕の大学ではテスト前になると講義ノートが非公式に販売される。事前に、ノートをコピーさせてくれる人には2万円あげるから綺麗にうつしておいてね、みたいな感じのバイトの広告が生徒に配られていて、それを販売しているようだ。これは他の大学でもあるのかはわからないけど、うちの大学では結構あたりまえのことらしく、ほぼ全ての生徒がその事実を認識している。
ところが本日その講義ノート販売に大学が注意を促してきた。内容は、講義ノートのみをたよりに試験を乗り切ろうとする風潮は大学としては好ましくなく、試験は大学での授業への出席を前提とした理解度を総合的にはかるものということと、大学での授業の意味を理解して欲しい、というものだった。
このメールに書かれていることはとてもよく理解できる。この警告文を送る姿勢は大学として素晴らしいと思う。このメールは講義ノートの販売そのものではなくて、講義ノートだけで試験勉強をする、大学における学問の姿勢を問うものなので、少しこのメールの主旨からはずれるかもしれないが、講義ノートの販売は基本的に間違っていないと思う。
そのノートを見るだけで試験を乗り越えられるくらいの学力がつくのならそれは歓迎すべきことだし、もしノートを見ただけで試験を乗り越えられるようなら、授業がその十数枚の紙程度の内容しかなかったということになるか、実力を問うような試験をつくることができなかったことになる。「授業にでている人にだけわかる問題」というのが確かに存在するのだろうけど、それは講義ノートをみればすぐにわかるような単なる合い言葉ではなくて、本来は「授業の内容を理解していれば解ける問題」なので、講義ノートを見ただけでその問題が解けるのであれば授業の内容を理解しているのでやっぱり問題は無い。
大学側が言っている学問に対する姿勢が悪くなる懸念は、大学が授業の本質を問うような試験をするだけで解決できるような気がする。理解してないけど授業には出席していたような学生に単位をあげようと甘く、授業で扱った例題をそのまま出すようであれば、それこそ学問に対する姿勢をおかしくしていしまうのではないかと思う。
講義ノートの販売自体は知識のシェアと学問の補助という点で歓迎すべきことだと思う。ノートや授業で得た知識はシェアするべきだと思っている僕はこのブログに授業内容を書いたりしていた。ノートをネットで公開してシェアしている先輩も居る。だから、大学側が言っているような講義ノートのみで試験に臨むような輩を排除すればこのノート販売はとても有益なものになる。基本的に大学側はこのメールでは、「講義ノートだけで単位をとろうなどと考えていると痛い目にあうよ」という警告をしているみたいなので、こうゆう警告をしているのは本当に素晴らしいことだと思う。大学の対応次第ではなかなか面白いことになりそうだ。
テスト前に講義ノートを売るというビジネスがおもしろい # 2008-07-23 - Cheshire Lifenext? prev? new? old? before? after? up? down?
- taizooo: @otsune 日付表示のときのrel-next, rel-prev 逆じゃね? http://otsune.tumblr.com/day/2008/06/13 next は過去に潜るほうじゃね? tumblr的には。 [http://twitter.com/taizooo/statuses/834005903]
- otsune: @taizooo おれは単純にtumblrテンプレートの{NextPage}にはrel="next"を付けているだけだからtumblr的には正しいnextだよ。人間の感覚としてどうなのよってのは運営者にリクエストするのだ http://twitter.com/taizooo/statuses/834005903 lang:ja [http://twitter.com/otsune/statuses/834013072]
- taizooo: テンプレがどうかわ、しったこっちゃなくって。そのページの創造主がどのページをnext、prevって決めるかってことがmicroformatsだと理解したんだけど。まさか御大、テンプレを鵜呑みにしたわけじゃあるまいに。まあ SITEINFO でどうにでもなるもんだけんど [http://twitter.com/taizooo/statuses/834026717]
- otsune: @taizooo いやいやいや、間違ってるのはtumblr.comの{NextPage}というテンプレが展開するリンクなんだから、そこを元から治さないと。rel="next" href="{PrevPage}" なんて気持ち悪いのを許容するってどんだけセンス悪いんだ lang:ja [http://twitter.com/otsune/statuses/834027882]
- taizooo: 運営者だか創造主だかなんだかしらんけど [http://twitter.com/taizooo/statuses/834027991]
- taizooo: そういえば、はてなダイアリーもそーだった [http://twitter.com/taizooo/statuses/834033377]
- taizooo: nextLink //link[@rel ="prev"] | //a[@rel ="prev"] http://wedata.net/items/700 [http://twitter.com/taizooo/statuses/834035921]
- taizooo: あらあら御大としたことがセンス、センスなんて有り体な文言をおっしゃって :p [http://twitter.com/taizooo/statuses/834037838]
- taizooo: microformatsのbookmarkの意味のことをあーだこーだ言ってたくせに。tumblrのテンプレのnextpageとmicroformatsのrel-nextの意味が違ったってねえー、センス悪くてわるかったなー [http://twitter.com/taizooo/statuses/834054657]
- taizooo: {NextDayPage} URL for the "next" day page. http://www.tumblr.com/help/custom_themes [http://twitter.com/taizooo/statuses/834058096]
- taizooo: {NextPost} URL for the "next" (older) post. http://www.tumblr.com/help/custom_themes [http://twitter.com/taizooo/statuses/834058844]
- taizooo: {NextPage} URL for the "next" page (older posts). http://www.tumblr.com/help/custom_themes [http://twitter.com/taizooo/statuses/834059233]
- taizooo: センス、扇子、うるさいわー [http://twitter.com/taizooo/statuses/834060971]
- otsune: @taizooo いや%SCALARという変数名のハッシュとかfloating_pointという変数名のintegerとか無意味に使うのを「センスが無い」って表現するんだよ。芸術性とかの「センスが無い」という表現とはニュアンスちがうっしょ lang:ja [http://twitter.com/otsune/statuses/834404941]
- otsune: @taizooo そもそも「tumblr的な次のページ」という逆転現象を扱うためにa rel="next" href="{NextPage}"ってマークアップするのはキモいだろ。後でソース読んでも意図が分からないし。 lang:ja [http://twitter.com/otsune/statuses/834463339]
- otsune: あ、a rel="next" href="{NextPage}"じゃ正しい例だな。a rel="next" href="{PrevPage}"がキモい例だ。 lang:ja [http://twitter.com/otsune/statuses/834465361]
- taizooo: a rel="next" href="{PreviousDayPage}" [http://twitter.com/taizooo/statuses/834483856]
- taizooo: snj14の「実はrel-next/rel-prevも嫌いn(ry」の意味がなんとなくわかった(気がする) [http://twitter.com/taizooo/statuses/834485258]
- taizooo: a rel="prev" href="{NextDayPage}" [http://twitter.com/taizooo/statuses/834485815]
- taizooo: new とか old だったら方向がわかるけど next とか prev とかって主観的なもんでどうとでもとれる。 [http://twitter.com/taizooo/statuses/834489055]
- taizooo: otsuneはテンプレとかへの記述の気持ち悪さについて言ってて、オレはページ移動の気持ち悪さについて言ってて、 [http://twitter.com/taizooo/statuses/834489850]
- taizooo: これは交わることがない。 [http://twitter.com/taizooo/statuses/834490029]
- taizooo: そもそもotsuneのtumblrページなのだからどうしようがotsuneの勝手なのであった。チャンチャン♪ [http://twitter.com/taizooo/statuses/834491594]
- taizooo: オマケ:あんましセンス、センスって言うと揚げ足とられっゾ :-P eace [http://twitter.com/taizooo/statuses/834492779]
- kenmat: 誰かにとってはそう受け取られるが、別の誰かには違う受け取られ方をする、っていうのは何処かに問題がある。 [http://twitter.com/kenmat/statuses/834511249]
- kenmat: 英語の人でも日本語の人でも子供でもじいさんでも、誰でも見たら解るっていう在り方。日夜それを研究しているひとたちももちろんいるだろう。 [http://twitter.com/kenmat/statuses/834512253]
- kenmat: だけどむずかしいな。それが解ればもうあれだ。 [http://twitter.com/kenmat/statuses/834512497]
- snj14: @taizooo rel-next/rel-prevも「次のページ/前のページ」っていう意味しか持ってない.HTMLを書いた人が次と思ったらそのページが次.ただ,それじゃ統一されてなさ過ぎ.てことは,今よりもっと頭の良いAutoPagerizeとか作れないよね. [http://twitter.com/snj14/statuses/834591174]
- snj14: @taizooo 統一されて無さ過ぎってのは,日付が前のものが「次」なのか後のものが「次」なのか.ほかにも,日付は全然関係なしに文章の内容的な「次」ってのもありえる.全部,rel-nextで表現しちゃう. [http://twitter.com/snj14/statuses/834591905]
- snj14: @taizooo じゃあ,どうするかってところで,最終的にrel="bookmark origin"(rel-next問題に置き換えるならrel="new older"等)とかどうよ?って言ってたのがこないだのrel-bookmark戦争. [http://twitter.com/snj14/statuses/834592988]
- snj14: @taizooo 間違えましたrel="next older"です."new older"ってなんじゃそりゃ. [http://twitter.com/snj14/statuses/834593503]
- snj14: @taizooo これなら時系列で古い方へAutoPagerizeしたい人も新しい方へAutoPagerizeしたい人も,仕組み的には不可能ではなくなって,後はどういうUIでそれを切り替えるか,とかそういう問題を考えるフェーズに移ることができる. [http://twitter.com/snj14/statuses/834594502]
- taizooo: @snj14 ああ、その辺りの問題点をねえー、やっと実感として理解できたって感じさあー [http://twitter.com/taizooo/statuses/834613830]
- taizooo: まあ、そういうことにもおかまいなしにセ☆ン☆ス悪く自分が"next"としたいほうに rel-next しちゃうんだけどね。アハハ [http://twitter.com/taizooo/statuses/834614621]
- taizooo: そうとう感覚が"Autopagerize"されてて、今から過去に潜っていくのが普通だと思うようになっていることに、ちょっと驚いている [http://twitter.com/taizooo/statuses/834616719]
- taizooo: おんなじように"j"と"k"で移動する感覚にも、 [http://twitter.com/taizooo/statuses/834617254]
- taizooo: まだ使うようになってから1年経ってないんだけどね。オレは [http://twitter.com/taizooo/statuses/834617720]
パソコンに比べてiPhoneは、メモリなどの内部リソースが小さいため、次のような制約があります。
* デコード後の GIF、PNG、TIFFといった画像は、2Mbytesまで
* デコード後のJPEG画像は、32Mbytesまで
* アニメーションGIFは、2Mbytesまで
* HTML、CSS、JavaScriptといった各リソースファイルは、10Mbytesまで
* JavaScriptの実行時間は、5秒まで
* JavaScriptのアロケーションは、10Mbytesまで
* 同時に開けるドキュメントは、8つまで
5秒とか決まってるのはいいな
(via cxx)
(via ayanamist) (via ichimonji)
(via otsune)NyARToolkitの高速化メモ
高速化で気がついた事、やった事などのまとめと言うか記録。
Java的な高速化
Javaだからと言う事はないけれど。
やること
- new回数を減らす。基本。
- ループ終了条件は定数にする。可能ならデクリメントループにして、0比較にする。何命令か少なくなります。短いループになるほど有効です。
- double演算は出来るだけ減らす。テーブルを使って回数を減らすのが特に有効です。
- 配列操作は1次元でする。AALOADよりALOADの方がかなり高速です。
- 短いFor文は構造を壊さない程度に展開する。4命令くらい省略できます。
- 3回以上アクセスする変数はローカル変数に代入する。GETFIELD命令は遅いので…。
- 値コピー回数を減らす。特にdoubleの場合に顕著です。
- intで計算する。shortとbyteはできるだけ避けましょう。I2S命令が1個消えます。
- 1処理単位で100回以上呼ばれる関数はインライン展開するか、配列を使ってバッチ処理する。
- 最適化できたかは、必ずバイトコードを確認する。微妙な最適化をすると、コンパイラの最適化と干渉して、遅くなる場合があります。
- 大きな書換えを伴う最適化は、処理単位をinterfaceで別クラスに切り出して、派生クラスにして切り替えられるようにする。(後でニヤニヤするためにも重要)
やったらダメなこと
- INT演算のテーブル化。レジスタへのヒット率が下がって遅くなる事があります。
- 処理フローを著しく壊すような処理の展開。結局遅くなることが多いです。
- 最適化のために計算順序を入れ替える。積算除算で桁落ちが起きて結果が変わり、結果比較ができなくなります。
- クラス構造を無視した最適化。プログラムの寿命を縮めます。やるなら処理に最適化したクラス構造を作り直すべきです。
ARToolkitの高速化
オリジナルのARToolkitの高速化ポイント
- 参照ポインタの数が多いです。特にLabering処理の部分に多すぎる気がします。アセンブラに落ちた時に不利になるので、減らした方が早いです。レジスタの多いCPUだと早いのかもしれないけど…。
- 重複演算が多い。arTransmatからコールされる関数は演算ループ構造が冗長で、重複演算がかなりあります。この関数下で行われる演算は8割以上double演算なので、テーブルを使って重複演算部分を排除することで、高速化が可能です。
- 特に行列関係の演算の時に、ワークメモリのmalloc/allocが大量に行われます。何度も割当てるのは無駄なので、一回割当てたら使いまわすと良いかな?
- 画処理用のワークメモリが、静的にどんぶり勘定(超大盛)で取られてるため、メモリの利用効率が極端に良くありません。動的にワークメモリを拡大するシカケを入れると、使用量が1/10くらいに減ります。
- #defineと#ifndef等の静的なパラメータが多数あります。この辺はクラスを使って切り替えるようにすると、見通しが良くなって速度も上がります。
マトメ
ARToolkitの高速化ポイントは、Java化して処理構造を整理した事で見えた問題なので、オリジナルのCコードをそのまま追いかけたとしたら…、多分、気がつかなかったでしょうね。
とりあえず全部読んで書き直しましたが、未だにオリジナルのコードを安全に高速化できる自信は全くありません。(というか無理です。)
・・・、想像ですが、現在のNyARToolkitをC++に戻せば、オリジナルの1.5倍以上の演算性能がでるんじゃないかなと思います。
時間見つけてやってみようかな。
kei 2008/04/28 19:05 まだ高速版ためしてませんが、はやそうですね印象にのこった言葉は(後でニヤニヤするためにも重要)ですけどね^^ 表示したモデルに影が簡単につけれたらいいんじゃね?っておもってそんな物をつくってます。だいたい目処はついたんで高速版導入してソース整理してJavaDoc書いたら(時間掛かりそうだ…)物置におきたいとおもいます。ただ、、、GLSLつかっちゃってるんでOpenGL1.5+拡張環境でないとうごかない気が…いぜんの書き込みで、しのぶさんが1.4と書いてあったしどうしたもんか悩み中…
nyatla 2008/04/29 00:16 keiさん こんばんは。 >まだ高速版ためしてませんが、はやそうですね 今回の高速化版、早いですよ~。そりゃもう見て判るくらいに。でもまあ、ここまできたら、なんとしても性能劣化を10%以下に抑えたいところです。 >印象にのこった言葉は(後でニヤニヤするためにも重要)ですけどね^^ 自己満足はモチベーション保つのに重要ですからねw >表示したモデルに影が簡単につけれたらいいんじゃね?っておもってそんな物をつくってます。 おお、影あるとリアルに見えるんですよね。楽しみ。 そんなわけで飽きもせずまた最適化の作業に戻ります