(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| package com.firebase.client; | |
| import com.firebase.client.core.Constants; | |
| import rx.Observable; | |
| import rx.Subscriber; | |
| import rx.functions.Action0; | |
| import rx.functions.Func1; | |
| import rx.subscriptions.Subscriptions; | |
| public class RxFirebase { | 
| import android.text.SpannableStringBuilder; | |
| import java.util.ArrayDeque; | |
| import java.util.Deque; | |
| import static android.text.Spanned.SPAN_INCLUSIVE_EXCLUSIVE; | |
| /** A {@link SpannableStringBuilder} wrapper whose API doesn't make me want to stab my eyes out. */ | |
| public class Truss { | |
| private final SpannableStringBuilder builder; | |
| private final Deque<Span> stack; | 
| NOTE: Easier way is the X86 way, described on https://www.genymotion.com/help/desktop/faq/#google-play-services | |
| Download the following ZIPs: | |
| ARM Translation Installer v1.1 (http://www.mirrorcreator.com/files/0ZIO8PME/Genymotion-ARM-Translation_v1.1.zip_links) | |
| Download the correct GApps for your Android version: | |
| Google Apps for Android 6.0 (https://www.androidfilehost.com/?fid=24052804347835438 - benzo-gapps-M-20151011-signed-chroma-r3.zip) | |
| Google Apps for Android 5.1 (https://www.androidfilehost.com/?fid=96042739161891406 - gapps-L-4-21-15.zip) | |
| Google Apps for Android 5.0 (https://www.androidfilehost.com/?fid=95784891001614559 - gapps-lp-20141109-signed.zip) | 
| import java.time.*; | |
| import java.time.format.DateTimeFormatter; | |
| import java.time.format.FormatStyle; | |
| import java.time.temporal.ChronoUnit; | |
| import java.time.temporal.TemporalAdjusters; | |
| import java.util.*; | |
| import static java.time.temporal.TemporalAdjusters.*; | |
| public class Java8DateTimeExamples { | 
| # delete local tag '12345' | |
| git tag -d 12345 | |
| # delete remote tag '12345' (eg, GitHub version too) | |
| git push origin :refs/tags/12345 | |
| # alternative approach | |
| git push --delete origin tagName | |
| git tag -d tagName | 
| #!/bin/bash | |
| file=$1 | |
| test -z $file && echo "file required." 1>&2 && exit 1 | |
| git filter-branch -f --index-filter "git rm -r --cached $file --ignore-unmatch" --prune-empty --tag-name-filter cat -- --all | |
| git ignore $file | |
| git add .gitignore | |
| git commit -m "Add $file to .gitignore" | 
| # required: ffmpeg (e.g. from homebrew), terminal-notifier from https://github.com/alloy/terminal-notifier | |
| # you can schedule this with launchd to run e.g. weekly | |
| # Specify in seconds how long the script should record (default here is 1 hour). | |
| seconds=3600 | |
| # Date format for the recording file name | |
| DATE=`date "+%d-%m-%y_%H-%M"` | |
| # start ffmpeg recording | 
| // By Jamie Chapman, @chappers57 | |
| // License: open, do as you wish, just don't blame me if stuff breaks ;-) | |
| public class ParseProxyObject implements Serializable { | |
| private static final long serialVersionUID = 1L; | |
| private HashMap<String, Object> values = new HashMap<String, Object>(); | |
| public HashMap<String, Object> getValues() { | |
| return values; |