タグに「雑記」を持つ
11〜20件目 / 79件
前へ 1 2 3 4 5 6 7 8 次へ

 色々と手詰まり中 / magicien 

ここのところ色々なバグや問題に引っかかってあらゆるものが停滞している。以下、駄文。

iOSでclassの変数にアクセスすると、EXC_BAD_ACCESSエラーで落ちる

JSONDecoderで取得したデータにアクセスしようとすると、エラーで落ちる問題があって困惑している。
考えられる原因としては、
  • MainThread以外でJSONDecoderを使っているから?
  • Codableなclassをextendsして使っているから?
  • ARCの処理が変わった?どこかをweakとかunownedとかにしないといけないのか?
  • JSONDecoderかARCのバグ?
といった感じなのだけれど、よくわからない。コールスタックを見ると、こんな感じの見知らぬ関数が呼ばれていた。

  • materializeForSet
  • swift_beginAccess
  • insert
  • reportExclusivityConflict
JSONDecoderで取得したデータにアクセスした時に、排他アクセスチェックが行われ、問題があったのでデバッガにリポートを送信した帰りに変なメモリにアクセスして落ちているようだ。実際は、reportExclusivityConflictが終わり、insertから帰る寸前で何かをやらかしている。スタックに退避したデータをレジスタに書き戻す直前に何かごにょごにょやっているようなのだが、処理を追う気力が無かった...
まぁ元々の問題はどこかで変数書き込み処理がコンフリクトしていることらしいので、それを解決すれば、この問題も自ずと解決するはず。せめて、reportExclusivityConflictの出力がデバッガで受け取れれば良いのだが、その前にエラーで落ちてしまっているようで、原因の究明が難航している。

SCNSkinnerが使えなくなった

ベータ版を使っていた時は大丈夫だったのに。
SCNSkinnerを使うには、boneIndicesとboneWeightsを渡す必要があるのだが、boneIndicesにいつも通りUInt16のデータを渡すと、
[SceneKit] Error: Compiler error while building render pipeline state for node "(null)" (0x1016db2c0): Error Domain=CompilerError Code=2 "Vertex attribute skinningJoints(4) of type uint4 cannot be read using MTLAttributeFormatShort4" UserInfo={NSLocalizedDescription=Vertex attribute skinningJoints(4) of type uint4 cannot be read using MTLAttributeFormatShort4}
というエラーが出る。uint4は4バイトのunsigned intを4つセットにしたベクタ。要するに、2バイトじゃなくて4バイトのデータをくれ、ということなので、UInt32に変換してデータを渡してみると、
[SceneKit] Error: SCNSkinner: bone indices must be uint8 or uint16 (maximum of 2 bytes)
boneIndicesは最大2バイトまでだという。何を言っているのか。
SceneKitに渡せるのは2バイトまで。SceneKitの先にあるMetalに渡す必要があるのは4バイト。詰んだ。

追記:
GLTFQuickLookを作った時に偶然発見したんだけど、NSKeyedArchiverでSCNSceneをNSDataに変換した後、SCNSceneのイニシャライザにデータを渡したら、SCNSkinnerの問題を回避できた... とりあえず、バグが直るまではこれで対応しよう。

その他バグ

以前、いくつかのバグを報告をしたところ、1件だけ反応があり、最新のベータ版OSで再発するか試してくれ、と書いてあったので試したけれど、挙動が変わったものの問題は解決していなかった。報告用のログを集めるのが面倒なのと、ベータ版を使い続けるのが嫌になってダウングレードしてしまったので、返事をせず放置していたら、バグレポートがクローズされてしまった。残りのレポートは応答なし。バグを報告するのが億劫になってきた。でも、SCNSkinnerについてはなんとかしないと先に進めないので、適当に書いて送ろう。
2017/10/28(Sat) 05:39:06

 新iPhone! / magicien 

既に色々と情報がリークしていましたが、ようやく新iPhoneが発表されましたね。

iPhone9が欠番になっちゃいましたが、8sの代わりに9が出たりするのかなぁ。Xも出ちゃったので以降のネーミングはmacOSみたいな感じになりそうですね。

個人的にはAnimojiが一番気になりました。顔認証技術をそうやって使うのかと。
そのうちMacBookにも同じ機能が付くのかなぁ。MMDの表情モーションを自分で演じて作るというのも面白いかもですね。
Dot Projectorというパーツが増えていたので、Kinectと同じようなことをしているんでしょう。Microsoftと何らかのやり取りがあったんでしょうか。ここら辺の技術はどこが持っているのか。
(追記:2013年にAppleがイスラエルのPrimeSenseという会社を買収していたようですね。Kinectのセンサーを作っていた会社らしいです。4年前からFaceIDの開発が進められていたってことですかね。対してKinectは生産終了...うーむ。iPhoneのDot Projectorで姿勢検知までできるようになると良いですね。)

もう一つ気になったのは、Apple TVとiPhoneのHDR対応。ディスプレイ側がHDRに対応するとなると、シェーダはどうやって書けば良いんでしょう。HDR対応有無でシェーダ書き分けるのとか面倒そう...

そういえば、Touch IDで他人がロックを解除できる確率は1/50,000とか言っていたけれど、結構確率高くないですか。まぁiPhoneに限らず、指紋認証機能を使っていると、自分の指なのになかなか認証が通らなかったり、他の人の指で解除できてしまったりということが多々あったので、あんまり信用できないか、精度を上げようとするとお金がかかる技術なのかなぁという印象があったのですが。
Face IDは、人工マスクでもロック解除できないことをテストしました、ということでしたが、サーモグラフィでも見ているんですかね。そのうち例によって顔認証をハックしちゃう人たちが現れるでしょう。

2017/09/13(Wed) 05:21:53

 いろいろと更新中 / magicien 

気づいたらサーバのPHPバージョンが5から7になって動かなくなったものが出てきたので修正中。

ついでに左側に3Dライブラリのリンクを追加しました。PHP7になってもほとんどの関数はそのまま使えたので、ほぼ修正なしで大丈夫でした。ついでに使っているフレームワークも最新化。

image JSceneKitの方は、物理演算で疲れたので、Badgerの移植で気分転換中。ただものすごく遅い...FPSが0.1とかいうレベルなので、高速化しないとデバッグもできない。とりあえず、トロッコが線路外を走っているのは分かった。





2017/07/08(Sat) 06:22:58

 大変ご無沙汰しております / magicien 

気づいたら3年以上放置していました。まじか...
この3年間で色々あったので、追い追い書いていきたいとは思いますが、今回は2つだけ。

1つ目は、マルパチが結婚したこと。これはめでたい!
残念ながら結婚式には参加できなかったのですが、草葉の陰から彼の幸せそうな顔を見て感涙にむせんでおりました。
お祝いはまたいずれ改めて。

2つ目は、アメリカ大統領選挙。これには目が飛び出るかと思いました。
Brexitの轍を踏むんじゃないかと気を揉んでいたら、イギリスに追突ひき逃げするレベルでしたね。
色々あって今サンフランシスコに住んでいるんですが、カリフォルニア州がヒラリーを支持しているのが救いです。
EUもアメリカも崩れたらどこが覇権を握るのだろう...。日本にはトランプショックに耐え切って欲しいところ。

2016/11/10(Thu) 03:27:51

 あけましておめでとうございます / magicien 

2013年もよろしくお願いします。


今年の目標はこんな感じで行こうと思います。
  • MMD杯参加
  • 簿記1級取得
  • 特殊小型船舶免許取得
  • TOEIC 860点取得
  • WebGLライブラリのドキュメント作成
  • I.Q REVENGE完成版作成
  • WebGLのゲームを作成
  • 何かしらの海外のコミュニティに参加
  • GIMP(かSeashore)に慣れる
  • 読書50冊

無理矢理ひねり出して10個にしました。
いつぞやの年に立てた目標よりスケールが小さくなっている気がしますが、いつも大それた目標を立てて失敗しているので、今回は頑張れば実現できそうなものにしてみました。
趣味と語学とWebGLといった感じです。今年からは趣味に読書を挙げられるよう頑張って本を読もうと思います。

ちなみに、今年の初夢は、広大で複雑な学校(たぶん高校。小学校が隣接していて敷地がつながっているので余計に複雑)で授業に間に合うべく教室へ向かって頑張って走るも、迷った挙げ句遅刻が確定する、というもの。
現実になってたまるか、という内容ですが、ゲームにしたらシュールな感じで面白いかなと思いました。
時間割に合わせて、いろんな教室を回りつつ定期的にトイレによったり昼食食べたり、とか。シュール...

2013/01/03(Thu) 03:28:09

 静的ファイルのキャッシュ無効化(JavaScriptの場合) / magicien 

ウェブサーバ上でプログラムからtxtファイルを頻繁に更新しているような場合、ウェブブラウザでキャッシュ機能が有効になっていると(というか大抵なっているので)、ローカルにあるキャッシュを見に行ってしまい、サーバ上の最新のtxtファイルを見に来てくれない、という場合の対応。

時と場合によりやり方はいろいろあるんだろうけど、JavaScriptでは次のようなソースを書いた。
var url = "dynamic_content.txt";
url += "?" + (new Date() * 1); // disable cache

var data;
new Ajax.Request(fileName, {
  method: 'get',
  asynchronous: false,
  onComplete: function(result){
    data = result.responseText;
  },
});
URLの後ろに時刻(ミリ秒)をクエリで追加してやると、あたかも違うファイルを呼び出しているように見えるので、毎回サーバまで読み込みに行くようになる。
上記の例だと、urlの中身は "dynamic_content.txt?1349282126489" のようになる。
new Date()のままだと、"Thu Oct 04 2012 01:35:26 GMT+0900 (JST)" のような文字列になるため、適当に数値計算をして、整数にキャストする。ただ、"new Date() + 0" みたいなことをすると文字列が連結され、"Thu Oct 04 2012 01:35:26 GMT+0900 (JST)0" となってしまうため、0を引くなり、1を掛けるなりしてやればOK。
まぁクエリが日付のままでも問題無いとは思いますが。
2012/10/04(Thu) 01:44:24

 【2012年4月1日】I.Q REVENGE【発売】 / magicien 

もう4月1日も19時を回りそうですが、私が制作に携わったゲームのCMをご紹介します。



2012/04/01(Sun) 18:51:18

 日本優勝! / magicien 

ワールドカップ優勝ってまじですか!

PK戦は神懸かってましたね!
劣勢での粘りとか...ドラマか漫画かと思うような展開でした。

6月にWebGLソース公開だったはずが、延長戦に突入した私も見習いたいです。

2011/07/18(Mon) 07:12:20

 簿記試験に初挑戦 / ノリオ 

簿記3級を受けてきました。
試験時間が2時間ということを知ったのが数日前。先週あまり勉強できなかったので、対策も不十分な状態でした。

2時間もいらないやろーと思っていたけど、実際に問題を解いてみると、あやふやな点が多くて結局満足に解答を埋めることができず終了。受かったら奇跡に近いと思います。

ともあれ試験の雰囲気はだいたいわかったので、今回の合否に関わらず次は2級受けてもいいかなーと思ったり。
とりあえず、過去問は買っておくべきだと思いました。
2010/11/21(Sun) 22:57:47

 今更ですが / ノリオ 

先週、情報処理試験がありましたね。僕は情報セキュリティを受験しました。
手応えで言うと、半々くらいの確率かなぁ。
午前IIはあるアクシデントがあったけれど、なんとか合格点に達していたので、あとは午後IIの出来次第といったところか。

1回で受かれば儲けものだけど、そう上手くいくかはわかりませんね。何はともあれ試験も終わったので、自分の作業を再開せねば。早速今まで見たことない構文が!?
2010/10/24(Sun) 19:33:22