MacにPythonとSphinx, blockdiagをセットアップ

HomebrewでPython(とPIL)をインストール(Macデフォルトと環境を分ける)

brew install python pil

.zshrc (.bashrc) に下記を追加

export PATH=/usr/local/share/python:$PATH

Pythonのインストールを確認

which python && python -V
 > /usr/local/bin/python
 > Python 2.7.3

Sphinx と blockdiag をインストール

pip install Sphinx blockdiag sphinxcontrib-blockdiag

Sphinxでプロジェクトを作成

mkdir ~/sphinx-test && cd ~/sphinx-test
sphinx-quickstart

ウィザードが完了したら、

make html && open build/index.html

dodaiiのカスタマーAPIの顧客IDに関して

iOSアプリのアプリ内課金(In App Purchase)対応ASPであるdodaii。
顧客情報取得APIに対して、顧客IDの初期化を-1とかでしてたら、ID取得に失敗した場合に困ったことになったお話。
顧客IDが負の値、もしくは2147483647(=LONG_MAX)より大きい数字になると、全件取得になるのか、もしくは1件目のみ出力される模様(1件しかまだ顧客登録してないので詳細不明)。
ということで初期化を0でして、顧客情報のget or post時にidが0でないかチェックしてからAPIを叩くように修正しました。

UITableViewCellのカスタムセルでUILabelの複数行表示をうまいことする

メモエントリ。

複数行表示したいUILabelを置いたカスタムセルを作って、UILabelの高さ調整とセルの高さ調整をうまいことまとめる方法。

// MyTableViewController.m
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
	NSString *text = @"cell text"; // indexPathから該当セル用のデータをよしなに。
	
	CGFloat cellHeight = 83; // カスタムセルのデフォルトのheight
	CGFloat textHeight = 22; // カスタムセル内の複数行表示したいラベルのデフォルトのheight
	
	UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:18]; // IBで設定したのと同じに。
	CGSize size = CGSizeMake(292, 4000); // カスタムセル内のラベルのwidth。heightは適当に。
	CGSize textSize = [text sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeCharacterWrap]; // IBで設定したのと同じlineBreakModeにする。
	
	cellHeight += (textSize.height - textHeight);
	
	return cellHeight;
}
// MyCustomCell.m
- (void)layoutSubviews {
	[super layoutSubviews];

	〜〜レイアウトコード

	// ラベルはnumberOfLines = 0, lineBreakModeにはCharacterWrapかWordWrap
	CGRect frame = [label frame];
	frame.size = CGSizeMake(292, 0); // ラベルのwidthを都度指定。セルは再利用されるので、テキストが短い状態でフィットされるとその後が困ったことになるため。
	[label setFrame:frame];
	[label sizeToFit];

	〜〜レイアウトコード
}

あとはIBでAutosizingを調整。
対象のラベルより下にUIパーツがある場合は、それらのボトムマージンを固定にし、ラベルのボトムマージンは固定しない。

カスタムセルはこのあたりを。
http://d.hatena.ne.jp/KishikawaKatsumi/20081024/1224857278

Amazon EC2の無料ティアはEC2のサインアップが初めてならOKっぽい

ほとんどタイトルだけの内容。

ちょっとしたWordPress置き場として、EC2の無料ティア(マイクロインスタンス)を使おうと思い立ちまして。
前にAmazon Web Serviceのアカウントだけは取ってあって、EC2は使ったことはありませんでした。
無料対象になるのは、AWSの新規サインアップだけのようなことを書いてあったけど、エイヤっとEC2のサインアップをやってみたら、今の所は課金されてなさそうで一安心。

ということで、AWSのアカウントは既に持っていても、EC2の新規サインアップなら無料提供の対象になるみたいだよー、という結論でした。

UINavigationController配下のviewControllerのviewWillAppear/viewDidAppearが呼ばれない件

ハマったので、メモ。

UINavigationControllerのrootViewControllerにUITableViewControllerを設定した状況で、UITableViewController側のviewWillAppear/viewDidAppearが実行されなかった。

ググったところ、以下を参考に何とか解決。
http://discussions.apple.com/thread.jspa?threadID=1549270

UINavigationControllerを管理するController(もしくはAppDelegate)にて、
UINavigationControllerDelegateプロトコルを実装
navigationController.delegate = self (もしくはIBでoutlet接続)

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
	[viewController viewWillAppear:animated];
}

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
	[viewController viewDidAppear:animated];
}

ちなみに呼ばれる順番は、

  1. willShowViewController
  2. viewWillAppear
  3. didShowViewController
  4. viewDidAppear

となります。

以上。

ブタフルナイト@豚組しゃぶ庵

もはや1ヶ月も前のことですが、六本木にある「豚組 しゃぶ庵」にて開催されたブタフルナイトに参加しました!

ということで、顔バレのしない食べ物達の写真をどうぞ♪


www.flickr.com