2010年12月21日火曜日

NSLogでNSStringを表示 %@

NSStringをフォーマット出力する際はオブジェクトそのものを出力する %@ を利用する。
つい %c とするものかと思ったのですが。

NSString *str;
    str = [[NSString alloc] initWithFormat:@"%d/%d/%02d", 2010, 12, 21];
    NSLog(@"date format: %@", str); //NSStringをフォーマット出力する際は %@ を利用。オブジェクトそのものを出力
    //NSLog(str);

2010年12月13日月曜日

Objective-Cの変数のスコープ

他の言語でもそうですが、 { } で囲まれたブロックの内部で定義された変数はそのスコープ内でのみ有効です。
同名の変数が外部に存在する場合は見えなくなります。

#import 

int main (int argc, const char * argv[]) {
    int abc = 3;

    {   
        int abc = 2;
        NSLog(@"%d", abc); // 2
    }   
    NSLog(@"%d", abc); // 3
    return 0;
}

2010年12月7日火曜日

ターミナルでログアウトしてもコマンドを終了させないようにするには nohup を使うと良い

ログアウトしたり、ターミナルが強制切断された場合でも、バッチを動かすには nohup を付けてコマンドを実行すればOKだそうです。
時抱くサーバーで初 rsync が長いので、nohupして寝ようと思います。
$ nohup ./example.sh

2010年12月6日月曜日

bloggerでプログラムソースを表示する方法/prettyprint

bloggerでプログラムソースをきれいに表示する方法の一つとして、prettyprintというのがあるようです。
なかなか良いです。

インストール手順は参考元の Add to Blogger をクリックで一撃です。
使い方は以下の通り

<pre class="prettyprint">
(コード)
</pre>

参考元:
http://www.kuribo.info/2008/04/code-prettify.html

Objective-Cでの整数のデータ長

Macには32bitと64bitの環境が混在しており、以下の通りの長さになるそうです。
longを利用しなければ、動作的に問題なさそうですね。

32bit環境64bit環境
short1616
int3232
long3264

Objective-Cのステートメントの末尾には;(セミコロン)が必要

#import <Foundation/Foundation.h>

//マクロ定義
#define TEST 18 //プリプロセッサへの命令なので;(セミコロン)が必要ない。セミコロンを付けるとそれも展開される

int main (int argc, const char * argv[]) {
    double test = 99; //ステートメント

    NSLog(@"test : %d", test); //ステートメント
    NSLog(@"TEST : %d", TEST); //ステートメント

    return 0;
}

検索語のハイライトをOFFする方法

よく忘れるのでメモ

:noh

Objective-Cで割り算する際の注意点

割り算をする際は %% と % をエスケープする必要があります。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    int num1 = 14;
    int num2 = 4;

    NSLog(@"num1 + num2 = %d", num1 + num2);
    NSLog(@"num1 - num2 = %d", num1 - num2);
    NSLog(@"num1 * num2 = %d", num1 * num2);
    NSLog(@"num1 / num2 = %d", num1 / num2);
    NSLog(@"num1 %% num2 = %d", num1 % num2);

    return 0;
}

2010年12月5日日曜日

Objective-Cで現れるNSの意味

NSLog や NSString のように、Cocoa環境のクラスや関数の名前は NS で始まります。

このNS は Mac OS X の前身である NeXTSTEP の略です。

MacBookProでバックスラッシュを入力する方法

¥はMacBookProではバックスラッシュとは認識されないようだ。

option + ¥ で \ が入力出来た。なるほど。

参考元:
http://blog.livedoor.jp/yukidon12/archives/29195413.html

@から始まる要素は、コンパイラへの指令(ディレクティブ)

@"hello" のように @ から始まる要素は、コンパイラへの指令(ディレクティブ)という意味で、「コンパイラ・ディレクティブ」と呼ばれています。

NSStringのインスタンスは @"hoge" で生成できる

Objective-C のクラスからそのオブジェクトであるインスタンスを生成するには、通常 alloc メソッドなどの専用メソッドを実行する必要があります。

しかし、文字列は頻繁に使用するので、次の形式でインスタンス生成を行う事が出来ます。

@"hoge"

ただし、この方式で生成できるのは「7ビットASCII文字」(半角英筋)のみです。
日本語はサポート外になります。

ターミナルでヘッダファイルを検索する

以下の手順で ヘッダファイルを検索する事ができます。

$ open -h NSString

オプション -h を除くと、通常の Finder から、ダブルクリックした際の挙動と同じにアプリケーションでファイルを開く事ができます。

$ open hoge.txt

※このコマンド自体知りませんでした・・・

Cocoa.hを覗いてみた

以下の3つのヘッダファイルが #import されていた
 
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <CoreData/CoreData.h>


Cocoa.h 自体が GUI アプリケーションのフレームワークであることを考えると納得の漢字です。
  1. Foundation.h …… 基本機能
  2. AppKit.h        …… GUIを構築するフレームワーク
  3. CoreData.h    …… データ管理フレームワーク

objective-cのコメントの書き方

一般的な感じですね。

1行    …… //
複数行 …… /* */

コンパイル前の処理「プリプロセッサ」

#import のように # (シャープ)で始まる文はプロプロセッサに対する命令と言う意味で、「プリプロセッサ・ディレクティブ」などと呼びます。

自作ヘッダなどシステム標準以外のヘッダを読み込むには「<>」の代わりに「"」を利用します。

#import "myHeader.h"

ヘッダファイルのインクルード #import

#import でヘッダファイルを読み込みます。
#import は #include とは違って一回しかヘッダを読み込みません。

2010年12月2日木曜日

rsyncでファイルをバックアップ

ふと、自宅のサーバーのHDD壊れたらどうしよう、と思いまして rsync をちょっとお勉強して動かして見ました。


#バックアップしたいファイルがあるサーバー
cd ~./ssh
ssh-keygen -t rsa -f rsync #rsyncという鍵ファイル
#パスフレーズは無しで作成、rsync.pubが公開鍵
scp rsync.pub user1@remote_server:/var/tmp #バックアップサーバにコピー
#バックアップ先のサーバーへログイン
ssh user1@remote_server
mkdir .ssh
cat /var/tmp/rsync.pub >> authorized_keys
#バックアップ用ディレクトリを作っておきます
mkdir backup
exit
#ログインの確認
ssh -i ~./ssh/rsync user1@remote_server
#rsync サンプル
rsync -av --delete -e 'ssh -i ~/.ssh/rsync' /var/www user1@remote_server:~/backup/


参考: