Hatena::ブログ(Diary)

鳥さんの独り言 RSSフィード Twitter

2017年06月04日

GitHub Pull Requestのレビュアー情報を出すChrome拡張を作ってみた

まいど。超久々の鳥だ。
とりあえずまだ生きてるよー。
最近は業務柄あまり外部に公開できるようなものが無くて、だいぶ久しぶりの更新になってしまった・・・

GitHub Pull Request Reviewers - Chrome Web Store

何で作ったかというと・・・

  • メンバーがリーダーにレビュー依頼を出す
  • リーダーがレビュアを割り当てる

という流れになっているんだが・・・

  • リーダーがどれにレビュアを割り当てたか分からない!
  • レビュアに割り当てられた側もどれに自分が割り当てられてるのかぱっと見分からない!

・・・というGitHubさんの痒いところに手が届くのを作りたかった感じ。
トークンの登録無くても(たぶん)一応動くと思うけど、PR1ページ辺り50回APIにアクセスする事になるので、登録するのをオススメ。

一応の補足情報として、公開ボタンをポチっとしてからストアへ反映されるまでは1時間ほどかかるみたい。

特に目新しい事は何もやってないけど、GitHub.comにも公開してみたよ。
GitHub - baado/github-pr-reviewer

あまり目新しいものは無いけど、参考にしたURLを貼っておくよ。

2012年10月07日

[][]iOSデバイスの回転前を検出してみる

やぁ。鳥のようなものだ。
もしかしたら島かも知れないし烏かもしr(ry
あ、毎度うるさいですねすみません(´・ω・`)

今日はチマっとした記事だよん。

iOSデバイス(iPhoneとかiPadとか)の回転後を検知するには、
EZ-NET: iPhone デバイスの回転を検出する : Objective-C プログラミング辺りを
参考にすれば上手くいくんだけど、回転の検知前に、
ビューのリサイズとか、スクロールとか、なんか色々と発生するわけさ。

それを差っ引いても、回転に色々やりたいよね。

ビューが一番上のビューなら、ビューコントローラー(UIViewController)に
ふつーに「willAnimateRotationToInterfaceOrientation」を書いてやれば検出できる。

でも、トップビューでない場合、回転の検出がなぜか出来ない(ぉぃ
そこで、以下のコードを書いてやれば検出できるようになったさ。

ヘッダーに以下。
- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation;

実装に以下。
- (void) viewWillAppear: (BOOL) animated {
  [super viewWillAppear: animated];
  [self updateLayoutForNewOrientation: self.interfaceOrientation];
}

- (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration
{
  [self updateLayoutForNewOrientation: interfaceOrientation];
}


- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation
{
  //ここに回転前の処理を色々書く
}


ただこの方法だと、取得できるのは回転後のサイズだったりするので、
回転前の値はどっか変数で保持しとかないといけない。。
なんか方法ないかの〜?

参考)
iphone - willAnimateRotationToInterfaceOrientation not called on popViewControllerAnimated - Stack Overflow

でわでわノシ

2012年09月22日

[][][]Google Analytics SDK for iOS V2(バージョン2)のマクロを作ってみた

f:id:diveintounlimit:20120922211211p:image

やぁ。鳥だ。

iOS向けのGoogle Analytics SDKの、バージョン2のベータ版が出たわけさ。

何が嬉しいって、専門になってアプリ、OSのバージョンのトラッキングをしてくれるようになったわけさ〜。
それに、ソーシャルやら色々とトラッキングできるよーになったっ
Androidに限って言えば、Playストアからのアクセスも見られちゃう。

ちなみにバージョン1のほうは過去の記事を参照してねん。

で、一式マクロを作ってみたよ。

最初に呼び出す初期化マクロ。
PERIODは溜まったログをGoogle Alanyticsに吐き出す間隔ね。秒単位。

#ifdef DEBUG
#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
[GAI sharedInstance].trackUncaughtExceptions = YES; \
[GAI sharedInstance].dispatchInterval = PERIOD; \
[GAI sharedInstance].debug = YES; \
id<GAITracker> tracker = GAI sharedInstance] trackerWithTrackingId:ACCOUNT; \
tracker.useHttps = true; \
}
#else
#define GA_INIT_TRACKER(ACCOUNT, PERIOD) { \
[GAI sharedInstance].trackUncaughtExceptions = YES; \
[GAI sharedInstance].dispatchInterval = PERIOD; \
[GAI sharedInstance].debug = NO; \
id<GAITracker> tracker = GAI sharedInstance] trackerWithTrackingId:ACCOUNT; \
tracker.useHttps = true; \
}
#endif

イベントをトラッキングするマクロ。
これはほぼバージョン1系と一緒。

#define GA_TRACK_EVENT(EVENT,ACTION,LABEL,VALUE) [GAI sharedInstance] defaultTracker] trackEventWithCategory:EVENT withAction:ACTION withLabel:LABEL withValue:VALUE];

ユーザーが何秒その画面に居たかを記録するマクロ。
TIMEで指定した秒数分いた場合に記録されるよっ
(居た時間が記録されるわけではない点に注意)

#define GA_TRACK_TIMING(CATEGORY,TIME,NAME,LABEL) [GAI sharedInstance] defaultTracker] trackTimingWithCategory:CATEGORY withValue:TIME withName:NAME withLabel:LABEL];

ソーシャルトラッキング。
現時点では記録が見れる画面は無いよ。

#define GA_TRACK_SOCIAL(NETWORK,ACTION,TARGET) [GAI sharedInstance] defaultTracker] trackSocial:NETWORK withAction:ACTION withTarget:TARGET];

クラスのトラッキング。呼びたい部分で「GA_TRACK_CLASS」って書く。

#define GA_TRACK_CLASS GA_TRACK_PAGE(NSStringFromClass([self class]));

メソッドのトラッキング。
呼びたいメソッドのどっかで「GA_TRACK_METHOD」と書く。

#define GA_TRACK_METHOD GA_TRACK_EVENT(NSStringFromClass([self class]), NSStringFromSelector(_cmd), @"", NSNumber alloc] initWithInt:-1]);

ページ(画面?Googleはスクリーンと呼んでる)のトラッキング。
呼びたいビューのviewDidLoadの最初とか最後とかで「GA_TRACK_PAGE(@"ページ名")」。

#define GA_TRACK_PAGE(PAGE) [GAI sharedInstance] defaultTracker] trackView:PAGE];

例外系が結構ややこしくなってるので省いてる。

また、EC向けの設定もあるけど、それはマクロにするとややこしくなるだけなので、本家を見てね〜。

本家: Google Analytics SDK for iOS v2 - Overview - Google Analytics - Google Developers

えぇ、難点としてはカスタム変数のトラッキングが無くなってるとこね。。

でわでわ。