Skip to content

Instantly share code, notes, and snippets.

View mindwing's full-sized avatar
:octocat:

Jase HA mindwing

:octocat:
View GitHub Profile
@mindwing
mindwing / D5_Challenge_3.java
Created May 25, 2016 06:43
[5일차] 도전과제 - 주어진 라인수만큼의 직각삼각형
/**
* Fast Campus 안드로이드 앱 개발 입문 캠프
* Java for Android (by mindwing)
* [5일차] 강의노트
* 도전과제3 - 주어진 라인수만큼 직각삼각형 모양 출력
*/
public class D5_Challenge_3 {
public static void main(String[] args) {
}
}
@mindwing
mindwing / AgeraActivity.java
Created June 8, 2016 04:49
Agera Explained - 00.Home
public class AgeraActivity extends Activity
implements Receiver<Bitmap>, Updatable {
private static final ExecutorService NETWORK_EXECUTOR =
newSingleThreadExecutor();
private static final ExecutorService DECODE_EXECUTOR =
newSingleThreadExecutor();
private static final String BACKGROUND_BASE_URL =
"http://www.gravatar.com/avatar/4df6f4fe5976df17deeea19443d4429d?s=";
private Repository<Result<Bitmap>> background;
@mindwing
mindwing / MyUpdatableActivity.java
Created June 8, 2016 05:05
Agera Explained - 02.Observables and updatables
public class MyUpdatableActivity extends Activity implements Updatable {
private Observable observable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
observable = new MyObservable();
}
@Override
// For type clarity only, the following are smaller, reused operators:
Function<String, DataBlob> urlToBlob = …;
Function<DataBlob, List<ItemBlob>> blobToItemBlobs = …;
Predicate<ItemBlob> activeOnly = …;
Function<ItemBlob, UiModel> itemBlobToUiModel = …;
Function<List<UiModel>, List<UiModel>> sortByDateDesc = …;
Function<String, List<UiModel>> urlToUiModels =
Functions.functionFrom(String.class)
.apply(urlToBlob)
@mindwing
mindwing / ViewClickedObservable.java
Created June 8, 2016 05:20
Agera Explained - 07.Custom observables
public class ViewClickedObservable extends BaseObservable
implements View.OnClickListener {
@Override
public void onClick(View v) {
dispatchUpdate();
}
}
@mindwing
mindwing / MyListenable.java
Created June 8, 2016 05:22
Agera Explained - 08.Incrementally Agerifying legacy code
public final class MyListenable extends SomeBaseClass implements Observable {
private final UpdateDispatcher updateDispatcher;
public MyListenable() {
// Original constructor code here...
updateDispatcher = Observables.updateDispatcher(new Bridge());
}
// Original class body here... including:
@mindwing
mindwing / NetworkCallingSupplier.java
Created June 8, 2016 05:24
Agera Explained - 08.Incrementally Agerifying legacy code
public class NetworkCallingSupplier implements Supplier<Result<ResponseBlob>> {
private final RequestBlob request = …;
@Override
public Result<ResponseBlob> get() {
try {
ResponseBlob blob = networkStack.execute(request); // blocking call
return Result.success(blob);
} catch (Throwable e) {
return Result.failure(e);
@mindwing
mindwing / MutableRepositoryTest.java
Created June 8, 2016 05:25
Agera Explained - 08.Incrementally Agerifying legacy code
// MutableRepository<RequestBlob> requestVariable =
// mutableRepository(firstRequest);
// OR:
MutableRepository<Result<RequestBlob>> requestVariable =
mutableRepository(Result.<RequestBlob>absent());
@mindwing
mindwing / NetworkCallingFunction.java
Last active June 8, 2016 05:26
Agera Explained - 08.Incrementally Agerifying legacy code
public class NetworkCallingFunction
implements Function<RequestBlob, Result<ResponseBlob>> {
@Override
public Result<ResponseBlob> apply(RequestBlob request) {
try {
ResponseBlob blob = networkStack.execute(request);
return Result.success(blob);
} catch (Throwable e) {
return Result.failure(e);
}
@mindwing
mindwing / OperatorTrickTest.java
Created June 8, 2016 05:27
Agera Explained - 08.Incrementally Agerifying legacy code
Result<ResponseBlob> noResponse = Result.absent();
Function<Throwable, Result<ResponseBlob>> withNoResponse =
Functions.staticFunction(noResponse);
Repository<Result<ResponseBlob>> responseRepository =
Repositories.repositoryWithInitialValue(noResponse)
.observe(requestVariable)
.onUpdatesPerLoop()
// .getFrom(requestVariable) if it does not supply Result, OR:
.attemptGetFrom(requestVariable).orEnd(withNoResponse)
.goTo(networkingExecutor)