PHP + MySQL 的 VPS 免費虛擬主機

Byethost 和 000webhost 這兩家都是經營多年的 VPS 虛擬主機供應商,也提供相當不錯的免費方案,我將這兩家的免費方案(2016 年 10 月)列表整理如下。

Byethost 000webhost
檔案空間 1 TB 1.5 GB
每月流量 50 GB 100 GB
每日請求數 50000 無上限
支援 FTP
支援 Cron Job
phpMyAdmin
後台 CPanel CPanel
MySQL 資料庫 5 個 無上限
自訂網域 最多5個 無上限
PHP版本 5.6.32 5.2.x
MySQL版本 5.6.30 5.1.x

000webhost 的系統版本稍舊,檔案空間只能算堪用,可是它每個月的流量較多,也沒有每天請求數的限制。Byethost 則是 1TB 的大容量空間非常吸引人。 我在這兩家 VPS 都試裝過 WordPress,搭配 CloudFlare,連線速度和穩定度都不錯。如果對流量的要求大於空間的話,建議使用 000webhost

對於有架設網站需求的朋友,雖然不少人推薦使用 WixWeebly 之類,號稱快速架站的 Website Builder,但這些網站免費帳號提供的服務,不但不能自訂網域,也有流量上的限制,還不如申請免費的虛擬主機自行架站,也較有主控權。


分類:

使用 Vysor 在電腦上控制 Android 裝置

市面上有很多工具(例如之前介紹過的 Anrdoid Tool for Mac)都能將 Android 裝置畫面投射到電腦上,但這些工具的投射方式,多半使用 ADB 不斷對 Android 裝置截圖,再將截圖畫面傳送到電腦,讓用戶在電腦上感覺到 Android 裝置在操作,而這些工具無法從電腦上控制 Android 裝置。

這裡介紹 ClockworkMod 創辦人及主要開發者 Koush,開發的 Vysor

安裝

首先,在手機上安裝 Vysor App

然後在電腦上的 Chrome 瀏覽器安裝 Chrome App (個人猜測大概有用到 Chrome Remote Debugging

Windows 平台需要額外安裝 ADB Driver

手機

在手機上安裝 Vysor App 之後,就開啟它。這個 App 只是做連線之用,沒有與使用者互動的功能。只要隨著它的指示跟著操作即可。

首先是歡迎畫面

然後要打開手機上的 USB Debugging,可以從「Open Developer Options」開啟「開發人員選項」去開啟「USB Debugging」

使用 USB 線連接電腦

完成第一次設定後,以後如果要使用 Vysor,手機接上電腦,然後從電腦端的 Chrome App 開啟,就會自動完成連線,不需要從手機端開啟 Vysor App。

Chrome

打開 Chrome 瀏覽器上的 Vysor App

點選「Find Devices」

此時,Vysor 應會找到你連接至電腦的 Android 裝置。如果沒有找到裝置,可以參考這裡的故障排除方法。

選取裝置之後,Android 裝置會出現安全警示訊息,按下確定即可。

如果出現這個畫面,表示 Android 裝置成功連結到手機。

然後,就可以從電腦觀看或操作 Android 裝置了

結語

Vysor 可以將 Android 裝置的畫面投射到電腦,不但操作非常流暢,而且可以從電腦端操作 Android 裝置,非常適合 Demo 簡報時使用。或者打電動時,覺得手機操控不方便,也可以投射到電腦來操作。


分類: ,

[Mac] 使用 QuickTime Player 的螢幕錄製功能

不同於 Windows,Mac 內建的 QuickTime Player 有「螢幕錄影」功能,因此不用再安裝其他軟體,就能將電腦上的操作步驟錄影下來。

螢幕錄製

直接從應用程式開啟「QuickTime Player」

從上方工具列開啟「檔案 > 新增螢幕錄製」

然後會出現螢幕錄製的小工具

螢幕錄製預設是關閉麥克風,如果要錄聲音,要將麥克風選項選擇「內建麥克風」

然後按下中間的紅點按鈕,開始錄製

錄製之前,如果只要錄製部分的螢幕,直接用滑鼠將你要錄製的部分選取

然後按下「開始錄製」,就會開始錄影了

從工具列的「QuickTime Player」按滑鼠右鍵,選擇「停止螢幕錄製」,就會停止錄製

mov 檔轉 mp4 檔

使用 QuickTime Player 錄製出來的影片是 mov 格式,mov 格式檔案會很大,不利於網路傳輸。此時可以用 Mac 內建的功能,將 mov 格式的影片檔轉檔成 mp4 格式。

選擇要轉檔的 mov 檔,按滑鼠右鍵,選擇「為所選的影片檔案編碼」

此時會出現編碼媒體視窗,將 Setting 改選為「720p」,按下「繼續」,就開始轉檔了

轉檔後會產生 m4v 副檔名的檔案,可以直接把副檔名 m4v,改成 mp4 

同場加映:mov 檔案合併

Mac QuickTime Player 可以將多個 mov 檔案合併成一個檔

先開啟第一個影片檔,再將要合併的檔案依序拖曳到第一個影片檔,第一個影片檔下方會出現一個小視窗,顯示合併進來的影片檔內容,待全部拖曳之後,按下「完成」,然後儲存檔案,就完成檔案的合併。



分類:

[Android] Firebase Remote Config

Firebase 稍早時推出新版函式庫(可參考這篇文章的介紹),其中 Remote Config 能讓開發者將系統參數設定在 Firebase 後台,App 會存取遠端的參數設定。當有任何參數異動時,只要修改雲端的參數設定,其參數值馬上會在 App 端生效。

同樣是將資料儲存在 Firebase 後台,Firebase Remote Config 和 Firebase Database 最大的不同是,因為參數值不像一般的資料,其變動性不大,不需要隨時存取。因此 Remote Config 有 Cache 的機制,預設 expiration time 是 12 個小時(這個值是可以變更的),12 個小時內都會從 local 端取得未過期的資料,超過 12 個小時後 App 執行時,才會再向 Firebase 後台要一次資料。若伺服器端的參數值已變更並重新發佈,仍要等待 Cache 過期後,新的參數值才會生效

因為涉及資料安全,Google 建議 Remote Config 的參數不要放例如使用者認證資料、序號等敏感性資料。

Remote Config 設置

登入 Firebase Console,進入應用程式專案的「Remote Config」 ,新增第一個參數。

自訂參數名稱及參數值,目前支援五種資料型態的參數:Boolean、ByteArray、Double、Long、String。

增加參數後,按下「發佈變更」就立即生效。日後如果要更改參數值,一樣要從這裡發佈變更。

程式

在 App 端程式的部分,首先要加入 Firebase Remote Config 函式庫。
compile 'com.google.firebase:firebase-config:9.6.0'

然後參考下面的範例程式,從 Firebase 取得參數值。addOnCompleteListener 中的 onComplete方法,即使在無網路之下也會執行,因此可以直接將取得參數值之後的動作寫在這裡。


設定參數條件

Remote Config 的參數,還可以設定條件針對部分裝置生效,可用於 A/B 測試和階段性上線(Gradual Rollouts)。

從參數設定的右上方「新增條件的值」進入

可以定義這個參數的條件,條件可定義不只一個。

參考資料

分類: ,

免費 VPN(美國和英國 IP)

雖然不是每個國家都和中國一樣,需要「科學上網」,才能瀏覽被 GFW 封鎖的網站。有些時候仍會遇到,國外的網站限制境內 IP 才能使用服務。

newipvpn.com 這個網站提供免費且無線流量的 PPTP VPN,更好康的是,什麼都不必申請,只要在電腦或手機的 VPN 功能,設定他們的帳號就行了

美國和英國的帳號密碼分別如下


我曾經用這個 VPN 觀看英國 BBC 網站的節目,連線品質還算可以接受,不過這種免費的 VPN,不會進行連線加密,使用時要注意安全。


分類:

[Android] Realm Tips

紀錄一下最近使用 Realm 開發的心得。如果不知道 Realm 是什麼的話,請參考這篇文章

deleteRealmIfMigrationNeeded

Realm 若更動了 Table Schema,就要作 Migration 的動作,否則應用程式會因為錯誤而強制退出。可是如果應用程式使用 Realm 當作例如快取等不重要資料的儲存媒介,每次更動 Schema 都要 Migration,反而是多此一舉。此時可以在設定 Realm 時開啟 deleteRealmIfMigrationNeeded。當有需要 Migration 時,會自動重建 Realm Object。

交易 Transaction Block

當 Realm 執行新增和刪除動作時,必須要用 realm.beginTransaction 和 realm.closeTransaction 確保交易正確執行。現在多了 Transaction Block 的方法,可以將要執行的動作寫在方法裡。Transaction Block 還分為同步(executeTransaction)和異步交易(executeTransactionAync),異步交易會回呼成功和失敗。

Realm + RxJava

Realm 從 0.87 版開始支援 RxJava,可以運用 Realm ORM 的特性,結合 RxJava 的數據流特性,讓程式碼更精簡。下面的範例是將資料從資料庫取出後,轉換型態為 List。然後將 Ream 的 Person 物件當作被觀察者,當被觀察者異動(本例是查詢資料),便觸發後續的動作(本例是將查詢出的資料顯示在 ListView,然後逐筆查詢個別 Person 的 GitHub 資料,並將結果更新 ListView。

分類: ,

Copyright © Andy Cheng

Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes Up ↑