Install Docker

Please goto link for details. Here is the summary for you:

sudo apt-get update
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

Install Kubectl

Please goto link for details.

For Earthman

sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

For the others

  1. First, add the mirrors of aliyun and ustc(alternative)
    echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    echo "deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" |  sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    

    You may get some output like

    Get:1 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease [8,993 B]
    Err:1 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease
      The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ***6A030B21BA07F4FB***
    

    Then run the below commands to add the key

    gpg --keyserver keyserver.ubuntu.com --recv-keys <--the key reported by above step-->
    gpg --export --armor <--the key reported by above step--> | sudo apt-key add -
    
  2. Second, install the kubectl
    sudo apt-get update && sudo apt-get install -y apt-transport-https
    sudo apt-get update
    sudo apt-get install -y kubectl
    

Install Minikube

Please goto link for details.

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/

Start Minikube

For Earthman

sudo minikube start --vm-driver=none

For the others

sudo minikube start --vm-driver=none --registry-mirror=https://registry.docker-cn.com --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

Faced the below error when connect to MySQL Database on Azure instance with MySqlConnector

MySqlException: Access denied for user 'xxx%sss'@'10.0.0.27' (using password: YES)
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
System.Runtime.CompilerServices.TaskAwaiter.GetResult()
System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter.Ge

The IP is actually the internal IP Address of the proxy of MySQL database on Azure.

The is actually a bug for the service provided by azure. When you enable pooling, you will face this issue when a valid connection reused.

By default the MySqlConnector set ConnectionReset=true . The solution is either:

  1. Disable the connection pool by set pooling=false (Not recommanded)
  2. Disable the connection reset option by set ConnectionReset=false (Recommanded)

You can get more dedails on Pomelo.EntityFrameworkCore.MySql Not Support MySQL on Azure

BTW: This only happened when you connect to the MySQL Database on Azure server. Microsoft will shutdown the service on December 1st 2019. Check link for details.

They have a new service called Azure Database for MySQL. And all of your service will be automatically migrated to the new service befor the day. You can also open a ticket to the team to let them help migrate your service earlier.

I have tested that Azure Database for MySQL dose not have this issue.

If the emulator is not appear to be connected to the ADB when you Run/Debug your android project on Android Studio. You may need to adjust where the emulator looks for the ADB.
Android Studio Emualtor for Android uses a registry key to identify the base location of the Android SDK.

Run(Win+R) regedit and navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Android SDK Tools. Modify the Path variable to the path of your Android SDK. D:\Android\Sdk for example.

Notice: If you cannot find the registry key, just create one.

The regedit structor looks like below:

Android Studio support Visual Studio Emulator for Android

Reference: Troubleshoot the Visual Studio Emulator for Android

Answer 1: Force open the wifi

Check this link on stackoverflow for details

Answer 2: Get the mac address by network interface

The below code will help get all mack addresses of the device.


private static String getMacAddress(String interfaceName) { try { Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface networkInterface = interfaces.nextElement(); if (TextUtils.equals(networkInterface.getName(), interfaceName)) { byte[] bytes = networkInterface.getHardwareAddress(); StringBuilder builder = new StringBuilder(); for (byte b : bytes) { builder.append(String.format("%02X:", b)); } if (builder.length() > 0) { builder.deleteCharAt(builder.length() - 1); } return builder.toString(); } } return "<EMPTY>"; } catch (SocketException e) { Log.e(Constants.TAG, "Get Mac Address Error", e); return "<ERROR>"; } }

Use wlan0 if you want to get the WIFI MAC address, and eth0 if you want to get the ethernet MAC address.


public static String getEthernetMacAddress() { return getMacAddress("eth0"); } public static String getWifiMacAddress() { return getMacAddress("wlan0"); }

Copy the vhd file to a local folder, D:\boot for example.

Run the following command with administrator privilege

rem {current} is an identifier id. This is used to backup the {current} setting, ignore it if you dont want.
rem **strongly recommend**
bcdedit /copy {current} /d "current_backup"

rem set the device(the vhd file)
bcdedit /set {current} device vhd=[d:]\path-to-the-vhd-file
rem bcdedit /set {current} device vhd=[d:]\boot\xxxx.vhd for example.

rem set the osdevice(same path of the device)
bcdedit /set {current} osdevice vhd=[d:]\path-to-the-vhd-file

rem set the default boot item(ignore this if you dont want make the new system as the default one)
bcdedit /set {bootmgr} default {current} //guid.

Reboot the host and enjoy the new system.