Codeigniter get user IP address – 如何使用Codeigniter 取得使用者的IP地址

之前的網誌和大家介紹了怎樣用PHP 取得 Client IP Address
PHP Get Client IP Address on OpenShift

今天想和大家分享當你使用 Codeigniter Framework時怎樣取得 Client IP Address

解決方法十分簡單..
我們可以直接使用Codeigniter 上的 功能 便可以了

input->ip_address()

E.g.

$ip = $this->input->ip_address();

Hope you find it useful

Ionic Publish Android application – 在Ionic 上如何發佈 Android 程式

回到英國之後.. 開始專注使用Ionic Framework來開發程式

因為常常想到新的功能..所以便常常要再發佈更新到 Google PlayStore

為了方便自己.還是寫一個筆記方便自己將來發佈 Android 程式

我相信大家還是在你的 Ionic Project Directory
你可以使用以下指令 去建立 一個”Release Build

cordova build --release android

Ionic Release Build
之後我們便需要去到輸出 apk 檔的 資料夾 以方便之前的動作
通常在Ionic Project上的 platforms\android\ant-build 資料夾上
Ionic Build directory

e.g.

cd platforms\android\ant-build

之後我們便會看到 ionic generateunsigned release apk檔案
CordovaApp-release-unsigned.apk on Ionic Build Folder

之後我們便可以 Sign 這個 unsigned releaseapk
Ionic defaultunsigned release apk名是這樣的 “CordovaApp-release-unsigned.apk

我們可以用以下指令到簽署unsigned apk

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [Full filename and path.keystore / 你的keystore的 路徑和檔案名] CordovaApp-release-unsigned.apk [alias name / 別名] 

e.g.

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\Ionic\SampleProject\keystores\SharechiwaiDemoReleaseKey.keystore CordovaApp-release-unsigned.apk ShareChiWaiDemoReleaseKey 

之後他們叫你輸入之前在這個keystore上設定的 密碼
use jarsinger to sign unsigned apk
* keystore 是在之前的網誌上有介紹給大家如何建立自己的sign key

詳情可以參考以下網誌

Useful command for Android Development 1 – 一些有用的在開發Android程式時幾有用的指令筆記

Ionic Android Signed Apk
完成後便可以使用 “zipalign” 功具來 優化 Android 程式.. 主要用來壓縮apk內的 圖/資料檔等等..
以便減輕記憶體/RAM 的使用量

zipalign -v 4 CordovaApp-release-unsigned.apk [Your APK name / 你想出現的檔案名].apk

e.g.

zipalign -v 4 CordovaApp-release-unsigned.apk sharechiwai_demo.apk

zipalign - compress apk
可以準備 Upload 你的 APK 了
Signed APK with zipalign

Hope you find it useful

Useful command for Android Development 1 – 一些有用的在開發Android程式時幾有用的指令筆記

最近多了開發Android程式..
發現有很多時候..有一些幾長的指令..
常常在準備發佈
一些有用的 android development command 記下便可以在這裡複製了..
不用自己打 =)

發現做程式開發很多時候都需要sign key

以下便是建立 Sign Key的 指令..
只是把 [ 的內容/名字 ]更變了便可以用來Generate 自己的Sign key

我通常會把我的key 方在同一個地方上..方便搵
E.g

D:\Ionic\SampleProject\keystores

之後便用command prompt 開啟這個資料夾..

keytool -genkey -v -keystore [my-release-key.keystore/你的Release Key的名.keystore] -alias [alias_name/別名] -keyalg RSA -keysize 2048 -validity 10000

然後輸入以下指令
e.g.

keytool -genkey -v -keystore SharechiwaiDemoReleaseKey.keystore -alias ShareChiWaiDemoReleaseKey -keyalg RSA -keysize 2048 -validity 10000

之後便會要求你輸入一個密碼給這個keystore
Keytools - Generate Key Step 1

完成後會叫你輸入一些資料給這個keystore e.g. 你的名稱/ 公司名和地區等等

之後會叫你確認之前輸入的資料
如果沒有問題的話..輸入”yes
Keytools Confirm Key Information

他會再叫你輸入一個新的密碼 給這個 key
如果想使用和keystore一樣的密碼..可以按”Enter
keytools - confirm key password

之後便完成了 Generate Release Key 這個動作了

keystore file
Hope you find it useful

How to Exit Application on Ionic – 如何在 Ionic 上 離開 / 關閉程式

如果想在 Ionic Framework 上自己寫一個關閉程式的制/ 功能可以怎樣?

解決方法十分簡單
我們可以使用以下的 程式碼便可以了

ionic.Platform.exitApp();

e.g. 在Controller

$scope.Quit = function(){
  ionic.Platform.exitApp();
}

Hope you find it useful

TSQL Clear Stored Procedure / SQL Query Caches – 如何清除 Stored Procedure / SQL Query上的 快取

雖然自己還是在香港渡假中..
但是公司有些他們覺得是和我有關的 programming 問題都會 Google Hangout Message我
今天的問題是有一個Generate Report 的程式出Report的時間比之前的長很多..
原定一小時入可以完成輸出Report這個動作..
過了兩個小時還未能完成

所以我便覺得有機會是Stored ProcedureExecution Plan Cache左的問題
因為這一次出 這一個Report 的數據是比平時出的大很多很多 [因為是幫一個公司最大的客出Report.. 但的Size是佔公司客的 五分之一]

可能之前的 Data 比較細..所以Clear Stored Procedure Caches 應該可以解決這個問題

解決方法:

如何清除 Stored procedureCaches

大家可以在 SQL Server Management Studio 上 選擇你想清除 Stored procedure Caches 的 Database
之後執行 以下SQL 指令

DBCC FREEPROCCACHE

Clear TSQL Caches - DBCC FREEPROCCACHE
詳情可以參考以下網頁
http://msdn.microsoft.com/zh-tw/library/ms174283.aspx

有時間再和大家分享如何只清除某一個Execution Plan的 “Caches/快取”

Hope you find it useful

Unlock/ Activate Samsung Gear S without using a Samsung Device – 如何激活 Samsung Gear S

十分幸運 有機會得到 Samsung Gear S. 一個使用Samsung 自己研發的OS Tizen系統的#smartwatch #wearable..
很可惜現在Samsung Gear 只能配備 Samsung device 來使用..
不像其他 Google Wearable一樣可以配備任何支援wearable 的 Device也可以使用

最大的問題是即使只想使用他的基本功能 .. E.g. 電子錶的功能.
也需要使用Samsung Device 安裝 Samsung Gear ManagerActivate / 激活 這隻 Smartwatch才可以使用
否則只能打求救電話

之前試過使用朋友的Samsung Galaxy Note 2來 Activate / 激活 這隻 Smartwatch
activate 之後便會和那部Note 2的資料連繫了..
E.G. 可以取得他的 contact list 等等

所以最後也做了factory reset / 恢復原廠設定

Factory reset Samsung Gear S

Factory Reset
Factory Reset Samsung Gear S

做了一會research之後..發現原來SamsungGearS有一些 方法可以不用 Samsung DeviceUnlock / Activate / 激活 這隻 Smartwatch

解決方法:
由於這隻Samsung Gear S 是在法國買的所以會是法文介面

啟動 Gear S 之後 他便會叫你在手機上安裝 Samsung GearActivate / 激活 這隻 Smartwatch
按”Next / 下一步 / Suivant
Samsung Gear S - Start up screen

之後大家可以不停按 手錶icon
Unlock / Activate Samsung Gear S

直到他彈出 “Please press BT address while 3 seconds” 後
Please press BT address while 3 seconds

便可以長按 BlueTooth名 E.g. 藍色字 在這隻錶會是(ADA6)

大概3 到5鈔後便會出現 另一個畫面.. [應該是和 SIM 咭有關的吧]
按一下屏幕便可以關閉
Samsung Gear S - Sim

之後便會出現一個Welcome screen
Samsung Gear S - Welcome screen

便可以使用了

Samsung Gear S - Smart Watch

我也嘗試做了一個Video Demo... 雖然有些不順暢..但是也算是 Activate了這隻 Samsung Gear S
有興趣的朋友可以去看看 [不怕我的聲音悶的話]

Hope you find it useful

‘zipalign’ is not recognized as an internal or external command, operable program or batch file

在準備發佈我的Ionic Android 程式到 Google Play Store 前 需要使用 zipalign 來把這個 APK 優化。。。
可惜當我使用 zipalign 指令時。。
出現了以下的錯誤信息
“‘zipalign’ is not recognized as an internal or external command, operable program or batch file
'zipalign' is not recognized as an internal or external command, operable program or batch file

很多時候遇到 “‘xxx’ is not recognized as an internal or external command, operable program or batch file” 都是因為 “Environment Variable” 沒有設定好

我在想..像adb 這些 Android SDKtools都可以用到..
所以應該不是 “Environment Variable” 的 Path的問題

做了一會research之後發現

原來zipalign.exe.不是儲存在我們android SDK tool 這個資料夾內。。

<span style="color: #008000;"><strong>"C:\Users\[Username]\AppData\Local\Android\sdk\tools"
</strong></span>

Android SDK Tools Folder
而是在。。

<span style="color: #008000;"><strong>"C:\Users\[Username]\AppData\Local\Android\sdk\build-tools\[Build version]"
</strong></span>

Android SDK Build Tools
解決方法
。。
zipalign 從 “build-tools“的資料夾內
複製到 “tools” 的資料夾內

之後便可以成功使用 zipalign 指令了
ZipAlign tools work

Hope you find it useful


style="display:inline-block;width:336px;height:280px"
data-ad-client="ca-pub-4266560994470212"
data-ad-slot="3788424641">