Skip to content

Instantly share code, notes, and snippets.

View kaiinui's full-sized avatar

kaiinui kaiinui

View GitHub Profile
@kaiinui
kaiinui / GAEの管理機能.md
Created April 3, 2015 14:34
GAEの管理機能
@kaiinui
kaiinui / AppEngine+Slim3のbuild.gradle
Last active August 29, 2015 14:18
appengine+slim3+IntelliJ IDEA の build.gradle
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = 1.7
version = '1.0'
def slim3Version = "1.0.+"
def appengineVersion = "1.9.18"
@kaiinui
kaiinui / BundleUtils.java
Created April 6, 2015 13:14
BundleUtils.java
public class BundleUtils {
public static String toString(Bundle bundle) {
final StringBuilder sb = new StringBuilder("Bundle: \n");
final Set<String> keys = bundle.keySet();
final Iterator<String> it = keys.iterator();
while (it.hasNext()) {
final String key = it.next();
final Object obj = bundle.get(key);
// #{KEY} : #{VALUE} (#{TYPE})
sb.append(key).append(" : ").append(obj).append(" (" + obj.getClass().getSimpleName() + ")").append("\n");
@kaiinui
kaiinui / GCSの設定.md
Created April 9, 2015 05:29
GCSの設定
  1. Default Permission を設定する
  2. ロギングを設定する

To enable Logging

Write パーミッションをつけ、logging を set on する。以上。 Writer にするのは cloud-storage-analytics@google.com

  1. gsutil acl ch -g cloud-storage-analytics@google.com:W gs://my_logs
@kaiinui
kaiinui / GcmHelper.java
Last active August 29, 2015 14:19
雑に gcmHelper.onCreate 呼ぶだけでよしなにやってくれるやつ。
package co.kotori.grumbler.utils;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.util.Log;
@kaiinui
kaiinui / howtousedeferredtask.md
Created April 13, 2015 16:13
AppEngine の DeferredTask

DeferredTask とは

TaskQueue を、URL ハンドラの実装なしに使える便利クラスです。

通常、TaskQueue は指定された URL を叩いて Task を実行します。 この挙動は厳密な設計には便利ですが、Task の種類の数だけ URL を制御しなければなりません。 新たにルーティングを設定し、新たにコントローラメソッドを実装する必要があります。

これらを廃し、より気楽に使えるようにしたのが DeferredTask クラスです。 必要な要素はたった一つ、DeferredTask interface (#run のみ) を実装したクラスのみです。

@kaiinui
kaiinui / BaseController.java
Last active August 29, 2015 14:19
おれおれ Slim3 BaseController
import com.google.appengine.repackaged.org.apache.commons.codec.binary.Base64;
import com.google.appengine.repackaged.org.apache.commons.codec.binary.StringUtils;
import com.google.gson.Gson;
import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;
import java.io.IOException;
abstract public class BaseController extends Controller {
// Working with JSON
@kaiinui
kaiinui / HttpRequestAdapter.java
Created April 23, 2015 07:52
AppEngine+Retrofit+OAuth
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import oauth.signpost.http.HttpRequest;
@kaiinui
kaiinui / Gmail In-Box Actions の調査.md
Last active August 29, 2015 14:19
Gmail In-Box Actions の調査
  • One-Click Action
  • Rsvp Action
  • Review Action
  • Go-To Action

の 4 つがある。

それぞれ受信メール一覧画面にて、当該メールの右のほうに表示される。

@import WatchKit;
@interface CachingInterfaceController : WKInterfaceController
- (void)updateLabel:(WKInterfaceLabel *)label withString:(NSString *)string;
- (void)updateLabel:(WKInterfaceLabel *)label asHidden:(BOOL)hidden;
- (void)updateImage:(WKInterfaceImage *)image withImageNamed:(NSString *)imageName;
- (void)updateImage:(WKInterfaceImage *)image withBaseNameForAnimation:(NSString *)baseName withRange:(NSRange)range duration:(NSTimeInterval)duration repeatCount:(NSInteger)repeatCount;
- (NSString *)currentImageNameForImage:(WKInterfaceImage *)image;