2019-08-11

AMD 在更新 Windows 10 1903 後 Android Studio AVD 無法正常啟動?

是這樣的,我的電腦本來是 windows 10 1809 ,但因為手賤,所以就突然給它更新至 windows 10 1903。

我是用 windows update 更新上去的,中間還遇到 amd chipset 驅動的問題而停止安裝更新,然後上 amd 官網下載最新的晶片組驅動來安裝後就可以更新了。

本來想說會沒事…但沒想到更新 1903 後系統整體變的頗遲緩,而且有一些軟體的反應變的怪怪的,然後視窗的放大縮小都會遲緩而且還會有殘影;想說之前更新 1809 時也沒這個狀況,那我就回復至 1809 好了,是用系統原本的回復功能,結果回復回去,那一些遲緩的問題也跟著回去…後來果斷就重新安裝 1903 算了(雖然是說果斷,但我還是這樣遲緩的用了近一周才重灌…)。

全新安裝後的 1903 就都很順了…

但是…

2019-07-20

如果透過 windows batch command 來新增環境變數

我會有這個需求,主要是因為工作的地方有 AD 權限的管制,只要執行需要提升權限的程式時都需要請資訊部門的人來 key 管理帳密,但理論上 user 應該是對自己的東西有權限的,只是 windows 在叫出環境變數的地方是有小盾牌要提權的…所以我才想到使用 batch command 的方式。

batch command 的方式有分一般跟進階兩種
以下都以設定 JAVA_HOME 為例

一般:
set JAVA_HOME="xxxxxx\jdk-xxxx"
set PATH=%PATH%;%JAVA_HOME%\bin

進階:
setx JAVA_HOME "xxxxx\jdk-xxxx"
setx PATH "%PATH%;%JAVA_HOME%\bin"

一般之所以一般,是因為這個方式的有效時間只在那個作用視窗中,也就是你打開 cmd 後,下了那兩行指令,然後把 cmd 視窗關掉,這時就失效了,因為該方式並沒有寫到真正的環境變數裡面。

進階的方式就有了,視窗關掉後依然有效,甚至重開機都是有效的…
那要怎麼刪除?
這就比較麻煩了,如果只是要讓路徑失效,可以使用
setx JAVA_HOME ""
的方式…但 %JAVA_HOME% 這個變數還是存在,只是是空的,如果要刪除這個變數或請管理員來開環境變數的gui畫面來刪除,或者是用 reg delete 的方式,但這應該也要權限

如何在 Windows 讓 Apache 在一個 host 中,指定某個資料夾下的 php 是跑不同的版本

標題下的好像很怪…簡略說明一下

其實就是 Windows 下 Apache 跑 php-fpm (Fastcgi) - 使用 VirtualHost 這篇的另一個形式…我的目的還是要在一個 apache service 中跑不同版本的 php ;只是之前是使用 VirtualHost 來操作,但我現在是希望在一個 host …或者也可以理解為一個 VirualHost 下,不同的 Directory 可以跑不同的 php 版本,這樣我就不用換 VirualHost 的 domain:port ,只要切換 localhost/______/ 就好了。

前置作業說明:

  1. 跟之前一樣使用 xampp ,apache 2.4.39 x64 + php 7.3.7 x64,這是主要的,然後指定一個 localhost/php52 這個位置可以跑 php 5.2.17 x86
  2. 作不作 vhost 都無所謂,因為這一篇要的就是一個 host 就做到可以跑不同的 php 版本
  3. 如前一篇說的,因為此種方式已經算改了 xampp 的部份算大改了,所以會建議就不要讓 apache load httpd-xampp.conf 了,或者將 httpd-xampp.conf 中的每一行都用 # 註解起來

2019-07-18

Windows 下 Apache 跑 php-fpm (Fastcgi) - 使用 VirtualHost

因為工作需求…有些案子會需要用頗舊的 php 版本來跑,但我又不想在系統資源有限的測試機 (本機 windows 10 電腦,還不是server) 安裝一堆配合 php 的 apache 版本,然後又在那邊糾結 x86/x64 的,所以想到在 linux 上在用 nginx 時好像都是用 php-fpm 在跑 php ,而不是跟 apache 那樣在 loadmodule (難怪 nginx 比較輕量級),而且 loadmodule 會使用固定的 module name ,像 php7 是 php7_module, php5 是 php5_module …不同版本之間是還行,但同一個大版本之後想分載各個小版本會因為都是用同一個 module name 的關係會有衝突而載入失敗,所以最後在想比較簡單的方式…那就是讓 apache 也走類似 php-fpm 的 fastcgi 方式。
(為什麼說類似,因為好像 php-fpm 沒有 windows 版,而且好像 windows 的 php 中的 php-cgi.exe 就是為了讓 windows 有 php-fpm 而用的)

所以接下來有幾個重點,主要是要讓 apache 2.4.39 x64 在使用 VirtualHost 的情況下,讓走 80 port 跑 php 7.3.7 x64 ,而 8080 port 跑 php 5.2.17 x86

前置作業說明:

  1. apache 2.4.39 x64 + php 7.3.7 x64 我是用 xampp ,然後再去 php 網站找到 5.2.17 x86 回來放進 xampp 資料夾中
  2. 我不特別講 apache vhost 的設定,反正這個 google 一下資料就很多,所以下面的「操作」我是以 vhost 已經分別可以讓 80, 8080 的網頁服務執行成功的情況下來講的
  3. 因為我是分 80, 8080 來跑 vhost ,所以記得 httpd.conf 的 listen 要加 80, 8080

2019-07-15

使用 cordova-plugin-camera 後,在調用相機時會詢問相機權限


<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
放進 project-root/plugin/cordova-plugin-camera/plugin.xml 的「<user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE />」之後

像這樣
        <config-file target="AndroidManifest.xml" parent="/*">
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="android.permission.CAMERA" />
            <uses-feature android:name="android.hardware.camera" />
            <uses-feature android:name="android.hardware.camera.autofocus" />
        </config-file>

不過其實不特別加,我在測試時相機是可以正常開啟然後拍照的…我不確實是不是 cordova-plugin-camera 某個版本之後已經可以省略掉詢問相機權限的動作,但照上面的加確實在啟動相機前是會詢問權限的。

不過,其實我覺得應該是做在安裝 app 時會先告知本程式會使用哪一些權限,但我找不到應該怎麼寫是能在安裝 app 前就告知權限的方式,我是覺得應該是放在 project-root/config.xml 中,但…把上面的那個方式放進 config.xml 中在 build 時會 failed…

所以
todo:1 - 應該要找到是可以在安裝前就宣告權限的方法
todo:2 - 上面的方式不適用 PhoneGapBuild ,但相機仍可使用,但只會出現詢問儲存媒體的權限而已,所以可能也要想想 PhoneGapBuild 會詢問相機權限的方法