2012/09/21
OAuth2.0の行き着く先
今更感たっぷりなのだけど、OAuth2.0って1.0から何が変わったのか調べていたらこんな記事に行き着いた。
OAuth 2.0 and the Road to Hell (2012/07/26の記事)
OAuth2.0について少し調べた程度しか予備知識が無いので深い事はわからないのだけれど、上記記事の筆者(Eran Hammerさん)がOAuth2.0が曖昧でひどいものになってしまい手がつけられなくなってしまったため、諦めて手を引くとかいう話の様子。
「OAuth1.0でうまくやってるのならOAuth2.0にアップグレードすることに価値はないし、OAuth2.0を使うのなら信頼できるところのソースをつかってきちんと理解して使わないといけないよ。」とか。
(他に何があるのかは知らないけど) Web2.0と同じように、2.0がつくものはあまり良くない結果になるという事なんだろうか。
ちょっとがっかりだけど、気を取り直してOAuth 2.0の中身について勉強しないと。
[追記] 上記記事の続きがあったので追記
On Leaving OAuth
こちらも併せて読んでみるとおもしろそう。
2012/08/22
UIWebViewのscrollを検知する方法
iOSのUIWebViewでscrollを検知する方法
(iOS5.1)
「UIWebViewを滑らかにスクロールする方法」で紹介した事とほぼ同じです。
UIWebViewのscrollViewプロパティで参照できるUIScrollViewのdelegateを設定します。
(iOS5.1)
「UIWebViewを滑らかにスクロールする方法」で紹介した事とほぼ同じです。
UIWebViewのscrollViewプロパティで参照できるUIScrollViewのdelegateを設定します。
@interface ScrollDetector : NSObject <UIScrollViewDelegate>
@end
@implementation ScrollDetector
#pragma mark - UIScrollViewDelegate methods
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
NSLog(@"start");
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"end");
}
@end
// あとはwebViewへdelegateを設定するだけ
self.webView.scrollView.delegate = [[ScrollDetector alloc] init];
2012/07/01
UINavigationBarに影をつける方法
UINavigationControllerのNavigationBarに影をつける方法
ナビゲーションバーに立体感を持たせる感じで、ほんのり影をつける方法を探してココを見つけました。
http://stackoverflow.com/questions/5940076/how-to-create-uinavigationbar-drop-shadow
ありがたい情報を参考にして、こんな感じで。
私の場合、UINavigationControllerのサブクラス(MyNavigationController:クラス名は適当..)を使っているためこんなコードで実現できました。
ヘッダファイルに "#import <QuartzCore/QuartzCore.h>"を追加した後、ソースファイルをこんな感じで修正
アニメーションしたりするときは、layer.shouldRasterize = YES; とかしておくといいらしいです(未検証).
あと、layerに設定している各種プロパティの値については、こちらのブログで細かく検証されていました。すばらしー。
頭と尻尾はくれてやる!- 画像に影を付けたいのでいろいろプロパティをいじってみた
ナビゲーションバーに立体感を持たせる感じで、ほんのり影をつける方法を探してココを見つけました。
http://stackoverflow.com/questions/5940076/how-to-create-uinavigationbar-drop-shadow
ありがたい情報を参考にして、こんな感じで。
私の場合、UINavigationControllerのサブクラス(MyNavigationController:クラス名は適当..)を使っているためこんなコードで実現できました。
ヘッダファイルに "#import <QuartzCore/QuartzCore.h>"を追加した後、ソースファイルをこんな感じで修正
// MyNavigationController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// ...
// drop shadow
CALayer *layer = self.navigationBar.layer;
layer.masksToBounds = NO;
layer.shadowColor = [[UIColor blackColor] CGColor];
layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
layer.shadowRadius = 3.0f;
layer.shadowOpacity = 1.0f;
}
アニメーションしたりするときは、layer.shouldRasterize = YES; とかしておくといいらしいです(未検証).
あと、layerに設定している各種プロパティの値については、こちらのブログで細かく検証されていました。すばらしー。
頭と尻尾はくれてやる!- 画像に影を付けたいのでいろいろプロパティをいじってみた
iosのUIWebViewを滑らかにスクロールする方法
(iOS5でのみ動作確認済み)
探してみるとjavascriptでスクロールする方法が見つかったけれど、
objc側から制御した方がぬるぬる動くスクロールで見栄えがよかった。
ポイントはwebview.scrollViewでUIScrollViewが参照できるという点。
(iOS5でのみ動作確認済み)
// CGRectは一番上にスクロールしたいから適当なサイズ. CGRect topRect = CGRectMake(0, 0, 10, 10); [self.webView.scrollView scrollRectToVisible:topRect animated:YES];
探してみるとjavascriptでスクロールする方法が見つかったけれど、
objc側から制御した方がぬるぬる動くスクロールで見栄えがよかった。
ポイントはwebview.scrollViewでUIScrollViewが参照できるという点。
2012/01/06
gem twitterで認証付きproxyを越える方法 (続き)
昨日の続き。
rubygemsのfaradayの動作をスッキリさせる方法。
これが一番すっきりする気がした。
require 'rubygems'
require 'twitter'
require 'pp'
module Faraday
class Adapter
class NetHttp
def net_http_class(env)
if proxy = env[:request][:proxy]
Net::HTTP::Proxy(proxy[:uri].host, proxy[:uri].port, proxy[:uri].user, proxy[:uri].password)
else
Net::HTTP
end
end
end
end
end
Twitter.configure do |config|
config.proxy = {
:uri => "http://ユーザ名:パスワード@localhost:3128/"
}
end
pp Twitter.user_timeline("wakatter")
これが一番すっきりする気がした。
gem twitterで認証付きproxyを越える方法
rubygemsのtwitterライブラリ"twitter"を使って認証付きproxyを越える方法を考えてみました。
ライブラリ自体の使い方は調べ中なので他のサイトを漁ってみてください。
方法1. Twitter.configureでproxy(別々にuri,user,password)を設定する。
方法2. Twitter.configureでproxy(uri文字列)を設定する。
設定値として"http://ユーザID:パスワード@ホスト名:ポート番号/"なURIとして有効な文字列を指定してあげたいという方法。
ここまでやってみて、fadarayというgemライブラリのプロキシ設定のデータ構造がopen-uriで使える環境変数での値と異なるところが気持ち悪い事がはっきりした。
ライブラリ自体の使い方は調べ中なので他のサイトを漁ってみてください。
方法1. Twitter.configureでproxy(別々にuri,user,password)を設定する。
require 'rubygems'
require 'twitter'
Twitter.configure do |config|
config.proxy = {
:uri => "http://hostname",
:user => "proxy_user_name",
:password => "proxy_password"
}
end
p Twitter.user_timeline("wakatter")
方法2. Twitter.configureでproxy(uri文字列)を設定する。
設定値として"http://ユーザID:パスワード@ホスト名:ポート番号/"なURIとして有効な文字列を指定してあげたいという方法。
require 'rubygems'
require 'twitter'
require 'pp'
module Faraday
class Connection
def proxy(arg = nil)
return @proxy if arg.nil?
@proxy =
case arg
when String then {:uri => proxy_arg_to_uri(arg)}
when URI then {:uri => arg}
when Hash
if arg[:uri] = proxy_arg_to_uri(arg[:uri])
arg
else
raise ArgumentError, "no :uri option."
end
end
if (@proxy[:uri].user and @proxy[:uri].password) then
@proxy[:user] = @proxy[:uri].user
@proxy[:password] = @proxy[:uri].password
end
@proxy
end
end
end
Twitter.configure do |config|
config.proxy = {
:uri => "http://ユーザ名:パスワード@localhost:3128/"
}
end
pp Twitter.user_timeline("wakatter")
ここまでやってみて、fadarayというgemライブラリのプロキシ設定のデータ構造がopen-uriで使える環境変数での値と異なるところが気持ち悪い事がはっきりした。
2011/08/03
メモリ管理の基本ルール in objective-C
AppleのMemory Management Programming Guideを読んで大事なところをメモ。
メモリ管理の基本ルール
メモリ管理とは、オブジェクトの所有権の管理。
Cocoaのルールに沿ってコードを書かないと後で困る事になる、というお話。
メモリ管理の基本ルール
メモリ管理とは、オブジェクトの所有権の管理。
- 自分で作ったオブジェクトは自分のもの。
- "alloc", "new", "newObject", "copy", "mutableCopy"とかで始まる名前のメソッドで作る。
- "retain"を使ってオブジェクトの所有権を得る。
- 受け取ったオブジェクトは受け取ったそのメソッド内では有効なことが保証され、そのメソッドも安全にオブジェクトを返してくれるはず。
- "retain"を使う二つのケース
- accessor methodの実装、または'init'メソッドの実行
- 必要なオブジェクトが他の操作で無効化されないために。
- 必要なくなったら、オブジェクトの所有権を捨てる。
- "release"または"autorelease"で所有権を捨てられる。
- Cocoaではオブジェクトの所有権を捨てることをオブジェクトを"release"するという。
- 自分のものでないオブジェクトの所有権は捨ててはいけない。
Cocoaのルールに沿ってコードを書かないと後で困る事になる、というお話。
登録:
投稿 (Atom)
