[https://kotlinlang.org/docs/reference/native-overview.html]
Practical Kotlin Native Concurrency Part 2 [https://dev.to/touchlab/practical-kotlin-native-concurrency-part-2-48ac]
[https://blog.jetbrains.com/kotlin/2018/02/kotlinnative-v0-6-is-here]
7 free cources about data science (https://habrahabr.ru/company/icanchoose/blog/348570/)
OpenDataScience by Mail.ruGroup (https://habrahabr.ru/company/mailru/blog/344044/)
CatBoost by Yandex (https://habrahabr.ru/company/yandex/blog/333522/)
Artificial neural network + С# (Истинная реализация нейросети с нуля на языке программирования C#) (https://habrahabr.ru/post/335052/) (https://habrahabr.ru/post/352632/)
Continue reading Data science, Machine learning, AI, bigdata
https://android.jlelse.eu/connection-detection-using-livedata-android-623bd02b0e30
public class ConnectionModel { private int type; private boolean isConnected; public ConnectionModel(int type, boolean isConnected) { this.type = type; this.isConnected = isConnected; } public int getType() { return type; } public boolean getIsConnected() { return isConnected; } }
public class ConnectionLiveData extends LiveData<ConnectionModel> { private Context context; public ConnectionLiveData(Context context) { this.context = context; } @Override protected void onActive() { super.onActive(); IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); context.registerReceiver(networkReceiver, filter); } @Override protected void onInactive() { super.onInactive(); context.unregisterReceiver(networkReceiver); } private BroadcastReceiver networkReceiver = new BroadcastReceiver() { @SuppressWarnings("deprecation") @Override public void onReceive(Context context, Intent intent) { if(intent.getExtras()!=null) { NetworkInfo activeNetwork = (NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); if(isConnected) { switch (activeNetwork.getType()){ case ConnectivityManager.TYPE_WIFI: postValue(new ConnectionModel(WifiData,true)); break; case ConnectivityManager.TYPE_MOBILE: postValue(new ConnectionModel(MobileData,true)); break; } } else { postValue(new ConnectionModel(0,false)); } } } }; }
ConnectionLiveData connectionLiveData = new ConnectionLiveData(getApplicationContext()); connectionLiveData.observe(this, new Observer<ConnectionModel>() { @Override public void onChanged(@Nullable ConnectionModel connection) { if (connection.getIsConnected()) { switch (connection.getType()) { case WifiData: Toast.makeText(this, String.format("Wifi turned ON"), Toast.LENGTH_SHORT).show(); break; case MobileData: Toast.makeText(this, String.format("Mobile data turned ON"), Toast.LENGTH_SHORT).show(); break; } } else { Toast.makeText(this, String.format("Connection turned OFF"), Toast.LENGTH_SHORT).show(); } } });