https://github.com/pyenv/pyenv-virtualenv
2017年6月17日 星期六
2017年5月21日 星期日
[工作] 在Android上如何確認你的裝置有連外的能力
在Android上, 我們可能會用ConnectivityManager來檢查連線狀態:
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
這只能檢查Android device是否有連線到AP, 卻不能知道是否有對外連線的能力.
想要檢查現在裝置是否能對外連線, 目前找到兩種方式:
1. 用ping檢查
public boolean isOnline() {
Runtime runtime = Runtime.getRuntime();
try {
Process ipProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int exitValue = ipProcess.waitFor();
return (exitValue == 0);
}
catch (IOException e) { e.printStackTrace(); }
catch (InterruptedException e) { e.printStackTrace(); }
return false;
}
2. 連線至DNS檢查
public boolean isOnline() {
try {
int timeoutMs = 1500;
Socket sock = new Socket();
SocketAddress sockaddr = new InetSocketAddress("8.8.8.8", 53);
sock.connect(sockaddr, timeoutMs);
sock.close();
return true;
} catch (IOException e) { return false; }
}
來源參考:
http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-times-out
2017年5月20日 星期六
[工作] Windows10版docker安裝路徑更改
我的Windows10是Home Edition的,
所以只能安裝Docker tool
首先在還沒開始安裝之前, 需要先設定以下環境變數.
MACHINE_STORAGE_PATH
DOCKER_CERT_PATH
路徑設為你要安裝的地方.
然後再開始安裝docker tool, 就ok了
所以只能安裝Docker tool
首先在還沒開始安裝之前, 需要先設定以下環境變數.
MACHINE_STORAGE_PATH
DOCKER_CERT_PATH
路徑設為你要安裝的地方.
然後再開始安裝docker tool, 就ok了
2017年3月26日 星期日
[工作] shell script加減乘除
在shell script計算加減乘除的方式, 可以用expr
#!/bin/sh
VALUE=100
VALUE=`expr $VALUE - 10`
echo "After minus: $VALUE"
VALUE=`expr $VALUE + 10`
echo "After plus: $VALUE"
VALUE=`expr $VALUE / 10`
echo "After divide: $VALUE"
VALUE=`expr $VALUE * 10`
echo "After multiply: $VALUE"
執行結果:
After minus: 90
After plus: 100
After divide: 10
After multiply: 100
不過在Android上, 會發生找不到expr的錯誤
所以要改用下面的方式
#!/bin/sh
VALUE=100
VALUE=$((VALUE - 10))
echo "$VALUE after minus"
VALUE=$((VALUE + 10))
echo "$VALUE after plus"
VALUE=$((VALUE / 10))
echo "$VALUE after divide"
VALUE=$((VALUE * 10))
echo "$VALUE after multiply"
執行結果:
90 after minus
100 after plus
10 after divide
100 after multiply
#!/bin/sh
VALUE=100
VALUE=`expr $VALUE - 10`
echo "After minus: $VALUE"
VALUE=`expr $VALUE + 10`
echo "After plus: $VALUE"
VALUE=`expr $VALUE / 10`
echo "After divide: $VALUE"
VALUE=`expr $VALUE * 10`
echo "After multiply: $VALUE"
執行結果:
After minus: 90
After plus: 100
After divide: 10
After multiply: 100
不過在Android上, 會發生找不到expr的錯誤
所以要改用下面的方式
#!/bin/sh
VALUE=100
VALUE=$((VALUE - 10))
echo "$VALUE after minus"
VALUE=$((VALUE + 10))
echo "$VALUE after plus"
VALUE=$((VALUE / 10))
echo "$VALUE after divide"
VALUE=$((VALUE * 10))
echo "$VALUE after multiply"
執行結果:
90 after minus
100 after plus
10 after divide
100 after multiply
2017年3月21日 星期二
2017年2月15日 星期三
[工作] Android Studio 從舊專案建立新專案並改名
1. 手動複製舊專案到新資料夾並改名
2. AndroidManifest.xml
將package改成你要的名字
3. app裡build.gradle
application改成你新的package name
4. 在檔案右鍵Refactor -> Rename改成新的package name
2. AndroidManifest.xml
將package改成你要的名字
3. app裡build.gradle
application改成你新的package name
4. 在檔案右鍵Refactor -> Rename改成新的package name
2017年1月12日 星期四
[工作] Kernel driver發uevent的方法
方法很單純,就是把你想要發的event包一包發出去。
char event[20];
char *envp[] = { event, NULL };
sprintf(event_string, "STAND_EVENT=undock");
kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp);
char event[20];
char *envp[] = { event, NULL };
sprintf(event_string, "STAND_EVENT=undock");
kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, envp);
訂閱:
文章 (Atom)