Ensure our operating system is entirely up to date:
sudo apt-get update
sudo apt-get upgrade| eufy: | |
| image: bropat/eufy-security-ws | |
| container_name: eufy | |
| restart: unless-stopped | |
| environment: | |
| - USERNAME=email | |
| - PASSWORD=pass | |
| - COUNTRY=country | |
| ports: | |
| - 3000:3000 |
| version: "3" | |
| services: | |
| vpn: | |
| image: qmcgaw/gluetun | |
| container_name: vpn | |
| cap_add: | |
| - NET_ADMIN | |
| ports: | |
| - 8888:8888/tcp # HTTP proxy | |
| - 8388:8388/tcp # Shadowsocks |
| package example | |
| import android.arch.lifecycle.ViewModel | |
| import android.arch.lifecycle.ViewModelProvider | |
| import dagger.Binds | |
| import dagger.MapKey | |
| import dagger.Module | |
| import javax.inject.Inject | |
| import javax.inject.Provider | |
| import kotlin.reflect.KClass |
| import android.databinding.ObservableList | |
| import android.support.v7.widget.RecyclerView | |
| /** | |
| * Links an [ObservableList] to a [RecyclerView], so that whenever the list is changed, the view is | |
| * updated. | |
| */ | |
| class RecyclerViewAdapterOnListChangedCallback<T>( | |
| private val adapter: RecyclerView.Adapter<*> | |
| ) : ObservableList.OnListChangedCallback<ObservableList<T>>() { |
| package au.id.alexn; | |
| import android.content.Context; | |
| import android.util.AttributeSet; | |
| import android.util.Log; | |
| import android.view.MotionEvent; | |
| import android.view.ScaleGestureDetector; | |
| import android.view.View; | |
| import android.widget.FrameLayout; |
| import android.os.Handler; | |
| import android.os.Looper; | |
| /** | |
| * A helper class that provides more ways to post a runnable than {@link android.os.Handler}. | |
| * | |
| * Created by Petros Douvantzis on 19/6/2015. | |
| */ | |
| public class SynchronousHandler { |
| package au.id.alexn; | |
| import android.content.Context; | |
| import android.util.AttributeSet; | |
| import android.util.Log; | |
| import android.view.MotionEvent; | |
| import android.view.ScaleGestureDetector; | |
| import android.view.View; | |
| import android.widget.FrameLayout; |