投稿

2010の投稿を表示しています

iPhoneSDK:「設定」にアプリ環境設定を置く。

方法が解らず探していたら、プログラミングガイドに詳細が載ってた。 そりゃネットを探しても無いわけだ。。

iPhone/PHPでAES暗号を使う

暗号関連は既に色々なページにも載ってますがメモとして残しておきます。 簡易版の為ECBモードになっていますがWEB上で公開するアプリを作る場合は必ずCBCやCTR で行うようにしてください。 クライアント側がiPhoneでサーバー側がPHP 準備 暗号サンプル CryptoExercise base64 iPhone クライアント側 char * key = "0123456789ABCDEF"; // 16文字 NSData * symmetricKey = [NSData dataWithBytes:key length:16]; NSString* text = @"AES暗号化テスト"; CCOptions padding = kCCOptionPKCS7Padding|kCCOptionECBMode; NSData* data = [[SecKeyWrapper sharedWrapper] doCipher: [text dataUsingEncoding:NSShiftJISStringEncoding] // エンコード文字列は適当に変更してください。 key:symmetricKey context:kCCEncrypt padding:&padding]; [Base64 initialize]; NSString* base64String = [Base64 encode:data]; PHP サーバー側 function pkcs7_unpad($data) { $pad = ord($data{strlen($data)-1}); if ($pad > strlen($data)) { return false; } if (strspn($data, chr($pad), strlen($data) - $pad)

iPhoneSDK:OpenGL ES2.0で最初の一枚

イメージ
3GSからOpenGLES2.0に対応され、処理速度の問題はあるけれどシェーダーで行える事は ぐっと増えて初代xboxでやっているような処理は大抵実装できるようになりました。 私が最後にレンダリングの仕事をしたのは固定シェーダー全盛の時代だったので シェーダーに関する知識はあまりありません。 そこで勉強もかねてゼロから始めてみました。 と、いっても本は必要です。 「OpenGL ES 2.0 プログラミングガイド」 を買っておきましょう。基本から実用程度までは網羅してると思います。 本見ながらlambert光源で頂点シェーダー書いてみました。 今時はC言語で書けるのでとても簡単です。 むしろシェーダーとプログラムのリンクする為の情報 (glBindAttribLocation,glUniform,VeretxAttribPointer)の設定が面倒です。 attribute vec4 aPosition; attribute vec4 aColor; attribute vec3 aNormal; varying vec4 colorVarying; uniform float translate; uniform mat4 viewProjMatrix; // 透視変換行列 uniform mat4 modelViewMatrix; // モデルビュー行列 uniform mat3 viewMatrix; // ビュー行列 uniform vec3 light; // 光源。とりあえずひとつ const float c_one = 1.0; const float c_zero = 0.0; void main() { vec4 vPosition; vec3 vNormal; vec4 vColor; float ndotl; vPosition = modelViewMatrix * aPosition; // 頂点を(モデル行列xビュー行列) に変換 gl_Position = viewProjMatrix * vPosition; // クリップ空間にする // 光源計算 vNormal = viewMatrix * aNormal;

iPhoneSDK:iPodTouchとiPhone4解像度

UIKitが一段落してOpenGL-ES2を触り始めました。 iPhone4の特徴の一つであるiPhone3Gから解像度が縦と横が2倍(計4倍) になったものの画面の幅と高さを取得してもw=320,h=480を返す。 そういうもんなのか。そいやUIKitでもそうだったもんね。 透視変換行列で細工してるのかな。 GLint screenWidth; GLint screenHeight; glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &screenWidth ); glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &screenHeight );

iPhoneSDK:UITableViewCellをカスタマイズ

少しでも凝ったUIを作ろうと思うとInterface Builderを使う必要がでてくる。 といって依存しすぎると起動が重くなったりリソースサイズがデカくなるので 程々が大事っぽい。 詳しいページは沢山あるので割愛しますが、ハマったのはここ。 NibからインスタンスをつくるのはUIViewControllerが担当してるようなので テンポラリとしてこのクラスを通すみたい。 UITableViewCellもinitWithNibNameを持ってますが、こいつに渡しても実行時に落ちてします。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"CustomViewCell"; CustomViewCell* cell = (CustomViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { // Nibからインスタンスをつくる為のテンポラリ UIViewController* tempView = [[UIViewController alloc]initWithNibName:CellIdentifier bundle:nil]; cell = (CustomViewCell*)tempView.view; [tempView release]; } return cell; }

iPhoneSDK:画面サイズ取得とアニメーションメモ

メモ: //画面幅の取得。 CGRect scrRect = [[UIScreen mainScreen] applicationFrame]; //-------------------- //アニメーション //-------------------- // // musicTable = UIViewクラス // CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; // 0.25秒でアニメ [UIView setAnimationDuration:0.25]; [UIView setAnimationDelegate:self]; [UIView setAnimationDidStopSelector:@selector(endAnimtaion)]; // アニメショーン情報を設定 CGPoint point1 = musicTable.center; CGPoint point2 = CGPointMake(point1.x,0); // Animation Of point1 to point2 [musicTable setCenter:point1]; [musicTable setCenter:point2]; // startAnimatino [UIView commitAnimations]; まだiPhoneプログラムを初めて日が浅いけれど 実コードが置かれたページがゴロゴロあり ネット情報そのものがオープンソースに近い。 なのでやり方を調べるだけであまりプログラム書いてる感じじゃないなー。 今のところ。。

いつの間に

ブログデザインのカスタムが充実してる。 cssも追加できるし便利になったなー。 よしblogも更新再会しよう

CSSの外部ファイル化失敗。

bloggerでcssの外部ファイル化しようと思ったんですが どうもbloggerにファイルのupload機能が無くできないようです。 google docsを使えばどんなファイルも1Gまでは無料でできるようですが こんどはそれをリンクする事はできてもcssとして読ませる事はできない感じです。 どこかのサーバに置いてリンクする事はできても、同じサーバに置きたいしなぁ。 もうちょい調べてみるかな。

.NET:FileSystemWatcherで複数フィルタ指定

FileSystemWatcher::filterがひとつしか指定できないので string arg[0] = "C:\TEMP"; string arg[1] = "*.cpp|*.h|*.txt"; string[] filter = args[1].Split('|'); for (int i = 0; i < filter.Length; i++) { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = args[0]; watcher.Filter = filter[i]; watcher.IncludeSubdirectories = true; watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; watcher.Changed += new FileSystemEventHandler(OnFileChanged); watcher.Renamed += new RenamedEventHandler(OnFileChanged); watcher.EnableRaisingEvents = true; } で解決。

DirectX 10を触る

Win7をいれてDirect10のチュートリアルを見て勉強開始。

引越し

ココログのパスワードがniftyidになってしまい、変更もできないので ブログを引っ越すことにしました。 twitterも良いけど残したいlogもあるもんね。 という事でここから新規出発になりますので 宜しくお願いしますね。