タグ

ブックマーク / son-son.sakura.ne.jp (36)

  • sonson@Picture&Software - [iPhone SDK] SQLiteへの誤解

    私は激しくSQLiteを誤解していました.その誤解を並べてみました. 1.INSERTは遅くない INSERTクエリは,トランザクションでまとめる.トランザクションとは,一旦,他からの処理をロックして,まとめて登録するような感じの処理らしい. 多くのデータをINSERTするときは, sqlite3_exec( database, "BEGIN", NULL, NULL, NULL ); for(){ insert---- } sqlite3_exec( database, "COMMIT", NULL, NULL, NULL ); とする. 2.VACUUMして,メモリを効率よく使う SQLiteは,削除した項目が残る.定期的にVACUUMをして,残ったゴミを掃除する. iPhoneでは,使えるメモリが少ないので,これはかなりクリティカルな問題となる. ただし,経験的にVACUUMはゴミが

  • sonson@Picture&Software - [iPhone SDK] @property (nonatomic, retain) の挙動

    iPhoneがガーベッジコレクションに対応してくれれば,こんなことしなくていいのだが・・・.@property (nonatomic, retain)の挙動を調べてみた. @property (nonatomic, retain)は,新しく外部からオブジェクトをセットすると,古いオブジェクトには,releaseが渡される. ただし,dealloc時に自動的にreleaseは投げられないので,dealloc時には,プロパティにreleaseを自前で投げる必要がある. - (void) setHoge:(id)newValue { if( hoge_ != nil ) [hoge_ release]; hoge_ = newValue; } セッターの内部はこんな挙動になってるはずだ. @Psychsさん,色々教えていただき,ありがとうございました.

    griffin-stewie
    griffin-stewie 2008/11/26
    メモリ関係
  • sonson@Picture&Software - hideHere

    hideHere sonson カテゴリ 写真 ユーティリティ バージョン 1.0 公開日 審査中 価格 115円 特徴 ・撮影した写真をFlickrのような写真共有サイトにアップロードするとき,顔や個人情報を隠したいときがありませんか? ・hideHereは,そんなときに撮影した写真・ダウンロードした画像にモザイク・スタンプで目隠しを入れられるソフトです. ・モザイク・スタンプを入れた画像は,iPhone/iPod touchに保存できます. ・主な機能 - モザイクを付ける - スタンプを付ける - スタンプに使う画像を変更する(右上の画像では作者が自分で作った画像をスタンプとして使っています) 実装予定の機能 既知の問題・課題・要望 ・スタンプ画像をもっと増やすか否か. FAQ ・スタンプ画像を選ぶときにどうしてiPhone/iPod touchの写真ライブ

  • sonson@Picture&Software - [iPhone SDK] begin, endIgnoringInteractionEvents

    beginIgnoringInteractionEventsとendIgnoringInteractionEventsメソッドは,アプリケーションへの操作をロックする. とにかくユーザに操作をされると困るときはこのメソッドを使う. [[UIApplication sharedInstance] beginIgnoringInteractionEvents]; こうすると,操作はロックされる.解除するには, [[UIApplication sharedInstance] endIgnoringInteractionEvents]; でよい. ただし,経験上こんなことがあったので補足すると, ユーザの操作→操作ロック→処理→操作アンロック→通常 という流れでプログラミングしていたときにendIgnoringInteractionEventsがうまく動かないことがあった.どうやらこれは,処理が短

    griffin-stewie
    griffin-stewie 2008/11/17
    ユーザの操作を禁止する時のTips
  • sonson@Picture&Software - [iPhone SDK] UISegmentControllのtoggle動作を止める

    UISegmentControllは,セグメントが二つの時はtoggle動作,つまり,どちらを押しても反応するようなデフォルト設定になっている. それを抑制する方法が,AppleのDiscussionにあったので,抜粋. @interface UISegmentedControl(StopToggle) - (BOOL) toggleWhenTwoSegments; - (void) setToggleWhenTwoSegments: (BOOL) flag; @end @implementation UISegmentedControl(StopToggle) - (BOOL) toggleWhenTwoSegments { return ( _segmentedControlFlags.dontAlwaysToggleForTwoSegments == 0 ); } - (void)

  • sonson@Picture&Software - [iPhone SDK] Hack UIWebView - How to get a touch event completed

    [iPhone SDK] Hack UIWebView - How to get a touch event completed 完成!!!私はソースコードをまとめただけかw今回のソース完成は,@Psychs, @norioのおかげ.完全に彼らのおかげ. それでは,UIWebViewのクリックイベントを取得する方法を説明していく. ・概要 UIWebViewは,subviewにUIScrollerを持ち,UIScrollerは,subviewにUIWebDocumentViewを持つ.残念ながらUIScroller,UIWebDocumentViewはともにprivateクラスなので,SDKからはアクセスできないし,ドキュメントにも詳細情報はない. このUIWebDocumentViewに対するtouchesXXXX:withEvent:のメソッドをオーバーライドできれば,実は,クリック

  • sonson@Picture&Software - [iPhone SDK] クラスが持っているメソッドを見る

    メモ書きです. クラスのメソッドは,これで出力できる. #import <objc/objc-runtime.h> ------ unsigned int outCount; Method *p = class_copyMethodList( classObject, &outCount ); int i; for( i = 0; i < outCount; i++ ) { SEL sel = method_getName( *(p+i) ); NSLog( @"%s", sel_getName(sel) ); } objc-runtimeを使えば,色々ハックできますね.ハイ.

  • sonson@Picture&Software

    ネットで検索してよく出てくるエミナルクリニックの静岡院がめっちゃ気になるなぁ。 医療脱毛なのにすごい安くていい評判も聞くけど、ほんとに痛くないのかな? 通っている人の口コミをみてみたいなぁー。 なんて気になったので、エミナルクリニックの静岡院についてSNSやネットで調べてみました。 そう思ってSNSを中心に調べてみたら、、、口コミや評判も良いじゃない♪ ちなみに、似たようなサービスや商品があるかも?なので、今回調べてみたのはこちらになります。 オープンしました! エミナルクリニックの静岡院ですが、すでにオープンしています!(2020年11月20日オープン済) もちろんですが、オープンしたてなんでめっちゃ予約が取りやすいです。 人気のある医療脱毛院なので早めの予約が良いかも?!

  • sonson@Picture&Software - [iPhone SDK] Loading HUDの実装サンプル

    ・下記ムービーのHUDを実現するサンプル とりあえず動くレベル版 ・リリースノート ・表示するためのスレッドをクラスに内包したいがうまくいかない.スレッドがらみは難しい. ・ムービー ・実装例 以下のようなソースコードで実装します. - (IBAction)openHUD:(id)sender { [NSThread detachNewThreadSelector:@selector(openActivityHUDOfString) toTarget:self withObject:nil]; int i; for( i = 0; i

  • sonson@Picture&Software - [iPhone SDK] UIImage,CGImageの小技

    UIImage,CGImageにはいくつか小技がある模様. UIImageの引き延ばし ボタン,ビューなどの背景に画像をセットするとき,そのまま拡大されるとかっこ悪い.AppleiPhone上で提供しているボタンなどは,すべて四方の隅をそのままに中央のピクセル値を繰り返して拡大するように引き延ばされている.この引き延ばしのセットもAPIが用意されている. UIImage *stretched = [original stretchableImageWithLeftCapWidth:5 topCapHeight:5]; 一つ目と二つ目の引数が四方の隅のサイズ.これで生成したUIImageをUIImageViewにセットして使用したり,drawInRectなどのUIImageのメソッドでサイズを大きくして描画するとちゃんと引き延ばされて描画される. UIImageのリサイズ UIImag

  • sonson@Picture&Software - [iPhone SDK] UIImageでピクセルを扱う

    Quartz 2DまわりのAPIを使い,UIImageからCGImageRefを経由してピクセルの値を取得することができる. UIImage* source = [UIImage imageNamed:@"image.png"]; CGImageRef inputImage = [source CGImage]; これでCGImageのポインタを取得できる.CGImageからは,CGImageGetDataProviderとCFDataGetBytePtrを使い,ピクセルの値やピクセルのデータサイズ,1行ごとのバイトサイズなどを取得できる. CFDataRef inputData = CGDataProviderCopyData(CGImageGetDataProvider(inputImageRef)); unsigned char *pixelData = (unsigned char

  • アプリ高速化のための5つのノウハウ

    sonsonの経験則です. 1.大量のメモリを使わない,メモリの確保と解放の繰り返しは避けて,再利用 ・メモリを大量に使用すると目に見えて実行速度が低下する.また,memoryWarningによる割り込みのメッセージが多発する可能性があるため,その処理にも時間がかかる. ・TableViewでセルの再利用APIが提供されているようにインスタンスの確保と解放の繰り返しは大きく速度に影響を与える.(SDKが出る前,Jailbreak時代は再利用関数を自前で作ってたなぁ・・・) 2.恒久的に使いそうなオブジェクトはなるべく保持する ・利用しているクラスにメモリリークがあると,それの確保・解放を繰り返している内にメモリがどんどんいつぶされる.怪しいクラスは特に注意して使うようにする.まぁ,なんら抜的な解決策ではない気もしますが(アップル頼むよ). 3.背景に透明色を使わない ・ついつい

  • sonson@Picture&Software - [iPhone SDK] Ad Hocビルドで特定の人にアプリを配布する

    やっとiPhone SDKについて書ける項目ができた・・・・. 不特定多数の人にソフトウェアを公開するにはApp Storeを使うしかないと私も考えていたが,よくよく考えるとAd Hocビルドがある.Ad Hocビルドはソフトウェアを使用する人のデバイスをUDIDを登録した配布プロファイルを利用する.Ad Hocビルドを利用すれば,100台までのデバイスにApp Storeを介さずにアプリケーションをインストールすることができる. 概要 ビルドの流れを説明する.Xcodeの使い方やプロビジョニングファイルに関する説明はしない.NDAに抵触しそう. 1.配布したい相手のUDIDを教えてもらう. 2.UDIDを登録し,Ad Hoc配布プロビジョニングファイルをダウンロードする. 3.プロビジョニングファイルを利用してAd Hocビルドする.参考情報Apple掲示板 4.プロビジョニングファイ

    griffin-stewie
    griffin-stewie 2008/10/24
    Ad Hocビルドで特定の人にアプリを配布方法。
  • sonson@Picture&Software - [Objective-C] NSOperationQueue - NSOperation

    Leopardから提供されたマルチスレッド用のクラス.マルチコア処理向けに提供されたものらしい.Appleのホームページにも以下のように書かれている.noviさんのTwitterでの発言で知ったAPIなのだが,非常に便利で使いやすい. アップルのエンジニアの成功の秘訣は、NSOperationを 使ったこと。 NSOperationは、マルチコア処理のために アプリケーションを最適化する、画期的な新しいAPIです 。NSOperationが計算(演算)のグループをNSOperati onQueueに追加し、現在のアーキテクチャをもとに、並 列処理の演算回数を動的に決定してくれます。複雑なスレ ッディングとロッキングのマニュアルコーディングは一切 不要。プログラムで演算と従属性を指定するだけで、あと はCocoaが処理してくれます。 NSOperationおよびNSOperationQueu

  • sonson@Picture&Software - [MacOSX] - (NSString*) description; でメモリリーク?

    MacOSXでツールを作っていたときに,Instrumentsでメモリリークテストをしているときに気付いた・・・. 私の間違いだと思うのだが,気になるのでブログでも書いて反応を見てみる. 環境:MacOSX10.5.3(9D34) NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableArray* list = [NSMutableArray array]; int i; for( i = 0; i これを実行するたびに,少しずつメモリがリークしていく.[dict description]をコメントアウトすると,メモリリークは起こらない. Instrumentsを使ってもLeakでは検出できず,ObjectAllocで総量を見ていくしかない.

  • sonson@Picture&Software - [Ruby] RMagickで画像をつなげる〜基礎

    RMagickの基礎 ・画像をファイルパスから開く,画像のサイズ img = Magick::ImageList.new( "./hoge.jpg" ) img.columns # width img.rows # height ・画像をバイナリBLOBデータから生成する img = Magick::Image.from_blob(bin).first ・画像を合成する(横にくっつける) image1 = Magick::ImageList.new( "./1.jpg" ) image2 = Magick::ImageList.new( "./2.jpg" ) new_width = image1.columns + image2.columns new_height = image1.rows > image2.rows ? image1.rows : image2.rows dst =