2013年7月25日木曜日

【メモ】UIImageViewに描画したイメージのUNDO方法について

UNDOについて
いろいろ考えたんだけれども
結局NSMutableArrayにUIImageView.imageを保存するという方法で
対処する事に


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    
    //canvasの情報を保存する
    //undo用にデータを保存
    if (canvas.image != nil) {
        [imageArray addObject:canvas.image];
    }
}

- (IBAction)undo:(id)sender {
    
    NSLog(@"imageArray.count = %d", [imageArray count]);
    if ([imageArray count] > 0) {
        if ([imageArray count] - 1 == 0) {
            canvas.image = nil;
        } else {
            canvas.image = [imageArray objectAtIndex:[imageArray count] - 2];
        }
        [imageArray removeLastObject];
    }
}


本当に使いやすいUNDOってなんだろうか?
これからもう少し実装しながら考えようと思う。



2013年7月23日火曜日

【メモ】VirtualBox for MacにWindows8.1(64bit版)をインストールしようとするとエラー(Error Code: 0x000000C4)の対処

Windows8.1プレビュー版がダウンロードできることを
すっかり忘れてたので、今さらだけどもインストールしてみようと思い立ったら

インストール時にエラーが。。。。

Your PC needs to restart.
Please hold down the power button.
Error Code: 0x000000C4
Parameters:


インストール時にエラーが。。。。
同じ現象がここにあったので
参考にさせて頂きました!

VirtualBoxをインストールしているMacのターミナルから
VBoxManage setextradata [vmname] VBoxInternal/CPUM/CMPXCHG16B 1」
を実行する事で回避できました。

助かりましたーーー!



2013年4月26日金曜日

【メモ】UIImageView(canvas)のタッチした場所にUIImageを貼り付ける方法(Objective-C)

iPhoneやiPadアプリの
お絵かきアプリであるような
キャンバス上にタッチしたら画像が重なるアレを考えてみました。

元となる画像(UIImage)に追加する画像(UIImage)を次々と貼りつけて
UIImageViewに表示させるイメージです。

// 画面に指をタッチされた時
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
    // タッチ開始座標をインスタンス変数touchPointに保持
    UITouch *touch = [touches anyObject];
    touchPoint = [touch locationInView:canvas];
    
    UIImage* addImage = [UIImage imageNamed:@"draw_square.png"];

    // 描画領域をcanvasの大きさで生成
    UIGraphicsBeginImageContext(canvas.frame.size);
    // canvasにセットされている画像(UIImage)を描画
    [canvas.image drawInRect:CGRectMake(0, 0, canvas.frame.size.width,canvas.frame.size.height)];
    // 追加するイメージをタッチした座標位置に配置(ここは画像サイズを計算した方がよさげ)
    [addImage drawAtPoint:CGPointMake(touchPoint.x, touchPoint.y)];
    // 描画領域を画像(UIImage)としてcanvasにセット

    canvas.image = UIGraphicsGetImageFromCurrentImageContext();
    // 描画領域のクリア
    UIGraphicsEndImageContext();
}


上の実装でとりあえずは動いたけど、
正しいかどうかはこれからテストしようかと。。。

2013年4月25日木曜日

【メモ】addObserverでエラー(Objective-C)

UIImagePickerControllerのカメラをやめて
AVFoundationを使ってカメラアプリ作ってると以下のエラーが。。。



An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.


調べてみると
addObserverあたりで発生している感じ。

今回の場合は、AVCaptureDeviceのキー値監視をしていたんだけど
Viewを閉じる動作(カメラを閉じる)があったのでremoveObserver文を追加するとうまくいった。


-(IBAction)cancel:(id)sender{
    
    AVCaptureDevice* captureDevice =
    [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    
    [captureDevice removeObserver:self forKeyPath:@"XXXXX"];
    [self.captureSession stopRunning];
    
    self.captureSession = nil;
    [self dismissModalViewControllerAnimated:YES];
}

2013年4月1日月曜日

【メモ】PostgreSQLに使えるデータベース設計ツール「SQL Power Architect」

すでにオープンソースのデータベース利活用が広がりを見せる中で
特にPostgreSQLは面白い存在だと思ってるんだけど、
MySQLと比較すると周辺ツールがどうしても貧弱に見えてしまう。

そんな感じなので、PostgreSQLで使えるMySQL Workbenchのようなツールを探してみたら
「SQL Power Architect(http://www.sqlpower.ca/page/architect)」というツールがあるそうだ。

ダウンロードは↓のサイトでできます。
https://code.google.com/p/power-architect/

早速インストールしてみる。



初回起動時は↓のダイアログが表示されて「PL.INI」というファイルの作成をするように
指示される。ので、「Create」をクリックする。



起動したら、とりあえず「New Connection」でDBに接続してみる。
「Database Type」にPostgreSQLを選択すると入力項目が変化し、ある程度補完してくれる。







対応しているデータベース
  • Oracle8i
  • Oracle9i
  • Oracle10g
  • PostgreSQL
  • SQL Server 2000
  • SQL Server 2005
  • SQL Server 2008
  • MySQL
  • DB2
  • Derby Embedded
  • HSQLDB
  • SQLstream
  • H2 Database


接続が完了すると
スキーマ、テーブルが選択できるようになる。

テーブルをドラッグすることでモデリングも可能になるようだ。

まとめ:
どういう場面で活躍するかはまだまだ未定。。
PostgreSQLも良いけど、MacでSQL Serverを使う機会があるので
まずはクライアントツールとして使ってみようかな??

2013年2月6日水曜日

【メモ】XCode4(4.5.1)でアプリ更新する時にミスったからメモ

久々にXCodeネタ

XCode4 (4.5.1)でアプリ更新する時に

Organaizer - Archivesの[Validate...]ボタンを押すと以下の様なエラーが。。。



Info.plistの
【Bundle versions string, short】と【Bundle version】が現在のバージョンのままだった
という事でした。。。