Hatena::ブログ(Diary)

やわらかコード このページをアンテナに追加

2013-05-12

ARC対応のReachabilityでネットワーク状況を確認する

| 16:23 | ARC対応のReachabilityでネットワーク状況を確認するを含むブックマーク

ここからARC対応バージョンをDLして、プロジェクトに加える。

次にBuild PhasesのLink Binary With LibrariesでSystemConfiguration.frameworkを追加。
あとはヘッダを読み込んだファイルで以下を記述したら完了。

コード引用元

Reachability *reachablity = [Reachability reachabilityForInternetConnection];
NetworkStatus status = [reachablity currentReachabilityStatus];
switch (status) {
    case NotReachable:
        NSLog(@"インターネット接続出来ません");
        break;
    case ReachableViaWWAN:
        NSLog(@"3G接続中");
        break;
    case ReachableViaWiFi:
        NSLog(@"WiFi接続中");
        break;
    default:
        NSLog(@"??[%d]", status);
        break;
}

追記

オフラインかどうか調べたいだけなのでマクロにした。

#define isOffline \
([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == NotReachable ? YES : NO )
トラックバック - http://d.hatena.ne.jp/toku_bass/20130512

2013-05-07

XPathQueryでHTML要素取得

| 02:29 | XPathQueryでHTML要素取得を含むブックマーク

XPathQuery

XMLのパーサを利用すると、不完全なHTMLパースに失敗するので、
ここにあるlibxml2のラッパーを利用して、
XPathで要素を取得。

導入の仕方

ここ
一部変更したのはHeader Search Pathsに追加するのを/usr/include/libxml2にすること。

実装

PerformHTMLXPathQueryを使う。

    NSURL *url = [NSURL URLWithString:@"http://google.com"];
    NSURLRequest *request = [NSMutableURLRequest requestWithURL: url];

    NSURLResponse *response = nil;
    NSError *error = nil;
    
    NSData *data = [
        NSURLConnection sendSynchronousRequest: request
                                                 returningResponse: &response
                                                                    error: &error
    ];

    if(error) {
        LOG(@"%@", error);
    }

    NSArray *imgs = PerformHTMLXPathQuery(data, @"//img");
    for (NSDictionary *dic in imgs) {
        for (NSDictionary *attr in [dic objectForKey:@"nodeAttributeArray"] ) {
            NSString *attr_name = [attr objectForKey:@"attributeName"];
            NSString *attr_value = [attr objectForKey:@"nodeContent"];
        }
    }
トラックバック - http://d.hatena.ne.jp/toku_bass/20130507

2013-04-23

shibuya.lisp Meet Up #4

| 00:24 | shibuya.lisp Meet Up #4を含むブックマーク

shibuya.lisp覚えてる範囲まとめ

  • 今回はcommon lispが中心
  • アカデミックな方が多かった?
  • 素数夜曲
  • import-from律儀に書くの面倒くさいから実行時に実際に使ってる関数だけimport-fromするようにする。
    • 完璧にしようとするとやることはたくさんある
  • SPDY対応
  • パッケージ管理はquicklisp
  • swankは仕様が文書で無い。pidとかいろいろ送ってる変なプロトコルemacsに特化してると思って良い。
  • clojureはswank使わずにnrepl?
  • llvm誰か早よ
  • 普及のためにはOAuth2モジュールとかそういうモジュールも作らないと
  • 衝突したときにデバッガに遷移するのイラっとする->emacsならpopwinでミニバッファに出すと随分マシ。
  • GPU使ってもバスで詰まるから、まだ焦ってGPU使う時期でもない
  • 毎月開催しようと思ったらラフな感じじゃないと続かない
  • 土日にハッカソンする?
  • ust

Perl入学式のサポーター?してきました

| 00:01 | Perl入学式のサポーター?してきましたを含むブックマーク

@__papix__ さんが各地で開催しているPerl入学式in東京に参加してきました。
第1回はubuntuとplenvの導入がメインでした。計6回で、twitteっぽいwebアプリを作るのが目標だそうです。
参加者はサポーター入れて30人前後かな?

基本のキから解説するので、
ちょっと本を読めば、ちょっとググれば解ること、、、なんだけど腰があがらない、きっかけがない、って人には良いんじゃないかなぁ、と思います。
(でも皆のハマりどころは、pathが設定できてなかったり、シェルの使い方だったり、rootでplenv入れたり、とperl関係ない周辺知識だったので、一人でやるにはしんどいかもですね。今回解決できてよかったですね!)

今回参加できなかった人用に補講があるかもなので、要チェック!

トラックバック - http://d.hatena.ne.jp/toku_bass/20130423

2013-03-31

git-catch-up 書いた

| 00:24 | git-catch-up 書いたを含むブックマーク

何これ?

ローカルブランチをfork元(upstream)の更新に追いつかせるスクリプトです。
pull request用にローカルでブランチ切って作業してる間に、fork元が更新しちゃったYOって時用のショートカットスクリプトです。
pull requestするまで」というエントリで書いた通りの、一連の手順を逐次実行するだけです。

使い方

githubから取得してください。
次に、git-coreディレクトリに配置します。(centOSなら/usr/libexec/git-core/)

git catch-up で実行されます。リモートリポジトリ名のデフォルトはupstreamになりますが、引数で変更できます。
git catch-up origin

コマンドは以下を実行するだけ

今のブランチがprotoだと仮定。
git stash
git checkout master
git pull upstream master
git checkout proto
git rebase master proto
git stash pop

感想

お手製感たっぷりだけど、自分としてはすごい楽になった。

トラックバック - http://d.hatena.ne.jp/toku_bass/20130331