Homebrewをインストールする
インストール
以下のコマンドでHomebrewをインストール
$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
環境の確認
インストール後に、以下のコマンドを行い正しく環境が設定されているか確認
$ brew doctor
Your system is raring to brew.
ということなので、大丈夫そうだ。
以下のコマンドでHomebrewをインストール
$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
インストール後に、以下のコマンドを行い正しく環境が設定されているか確認
$ brew doctor
Your system is raring to brew.
ということなので、大丈夫そうだ。
UITableViewのtableHeaderViewをリサイズする方法ではまったのでメモ。
まず、headerViewそのものサイズを変更し、tableHeaderViewに再設定すればよかったみたいだ。
そもそも、gistにはembedするためのスクリプトが用意されているがTumblrに貼り付けてもうまく動かない。
そこで、以下のGistを使用するとうまく表示することが出来る。感謝!
https://gist.github.com/1395926
あとは自分のレイアウトにあわせて、cssを定義するだけだ。
最近よくダーツをやっているので、DartsliveからRating等を取得できないかと思いスクリプトを書いてみた。
以下のようなメッセージで、Unit Testが動かなくなってしまった。
No api proxy found for service “xmpp”
Channel APIを使うようにしたのだが、それの影響でどうやら、XMPPのStubを登録しておく必要があるみたいだ。
ということで、Unit Testの最初の方で以下のように登録してあげる。
from google.appengine.api import apiproxy_stub_map
from google.appengine.api.xmpp import xmpp_service_stub
apiproxy = apiproxy_stub_map.APIProxyStubMap()
apiproxy.RegisterStub('xmpp', xmpp_service_stub.XmppServiceStub())
ということで、ChromeだとGmailのNotificationのような通知を結構簡単にできる。
注意点としては、requestPermissionはユーザのアクションによる呼び出しでないとうまく動かない。
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
</head>
<body>
<ul>
<li><a href="#" id="permission">Allow notification</a></li>
<li><a href="#" id="notification">Show notification</a></li>
</ul>
<script>
var notify = function(message) {
if(window.webkitNotifications.checkPermission() != 0) {
return;
}
var n = window.webkitNotifications.createNotification('favicon.ico', 'Alert', message);
n.show();
// close after 3000 ms
setTimeout(function(){
n.close();
}, 3000);
};
$('#permission').click(function(e) {
window.webkitNotifications.requestPermission(function() {
notify('Notification Allowed');
});
});
$('#notification').click(function(e) {
notify('Message');
});
</script>
</body>
</html>
コンパイルに必要なものをインストールする
Brewを使う。(オフィシャルにはPortを使った方法も書いてある)
$ brew install ragel boost multimarkdown hg ninja
※hg(mercurial)はSCMのライブラリのテストに使うだけなのでSkip出来る。
ninjaが見つからないと言われてしまった、Formulaが古かったようなのでアップデート
$ brew update
$ brew install ragel boost multimarkdown hg ninja
Lionを使っている場合は、pgrep と pkill のためにproctoolsをインストールする必要がある。
これもBrewを使ってさくっとインストール
$ brew install proctools
他にも、Xcode 4.4 以上が入ってない場合は、clangをインストールする必要がある。
試していないが、以下のコマンドで入れられるらしい。
$ brew install --HEAD llvm --with-clang
ソースコードをGithubからCloneしてくる。
$ git clone https://github.com/textmate/textmate.git
$ git submodule update --init
準備ができたらコンパイルを行う。
$ ./configure && ninja
コンパイルに成功するとそのまま、TextMateが起動する。
NSErrorで、以下の様なメッセージが出て怒られてしまった。
Potential null dereference. Accordning to coding standards in ‘Creating and Returning NSError Objects’ the parameter maybe null
以下の様な実装をしていたのだが、
- (void)testHoge:(NSError *__autoreleasing *)error {
...
*error = [NSError errorWithDomain:@"ErrorDomain" code:1 userInfo:nil];
}
errorがNullの可能性があるので、errorにNSErrorを代入する前にチェックが必要だった。
if (error) *error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];
標題の通りはまってしまったのでメモ。
以下の様に、テンプレート内で共通の表示部分をまとめることができる。
{% macro input(name, value='', type='text') -%}
<input type="{{ type }}" value="{{ value|e }}" name="{{ name }}">
{%- endmacro %}
そして、以下の様にMacroを呼び出すことができる。
{% import 'forms.html' as forms %}
{{ forms.input('username') }}
非常に便利なのだが、Macroから、Contextに定義した関数がが使えなかったのだ。
というのにちょっとだけ、はまったのだがドキュメントを見たら書いてあった。
importする際に”with context”を付けてあげる必要がある。
先ほどの例だと以下の様にすれば大丈夫だった。
{% import 'forms.html' as forms with context%}
{{ forms.input('username') }}
UIViewの子クラスを使い、以下の様にawakeFromNibでグラデーションを設定
- (void)awakeFromNib {
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[
[UIColor whiteColor] CGColor],
(id)[[UIColor colorWithRed:0.69 green:0.769 blue:0.871 alpha:1] CGColor], nil];
[self.layer insertSublayer:gradient atIndex:0];
}