New Relic Mulitple site on same server – 如何使用New Relic在同一個Server上來監測不同的Web Application / Domain 呢?

公司久不久便會有VPN/ BroadbandNetwork的問題
老闆常常都說要買一些工具來Monitor 一下網絡的問題
當公司網頁不能連接時 要有SMS 短信或 EMAIL 的通知..

之前聽過有一間公司New Relic 有這個服務..
http://newrelic.com/
可惜沒有時間嘗試..今天終於在自己的VPS 上安裝了
感覺良好…
安裝和設定方法十分簡單.. 他的網頁上有Video 教學.十分清晰
New Relic Dashboard

因為我的VPS 上有多個Web Application的關係..
那麼如何使用New Relic在同一個Server上來監測不同的Web Application / Domain 呢?

做了一會Research 後發現..

其實解決方法十分簡單..
我們只需要在 Root Folder / 主文件夾上 的 .htaccess 檔案上加上 一個 更新 PHP 的變數的 詞句便可以
E.G.
newrelic.appname 設定成你想在 New Relic 網頁上想看到的名稱便可以
[我們需要在每一個想Monitor 的網頁上加上這些設定]

E.G.
在這個Blog上的 .htaccess 檔案 加上

<IfModule mod_php5.c>
 php_value newrelic.appname "blog.sharechiwai.com"
</IfModule>

.htaccess confic for New Relic multiple website on same server
Server Down的時候我得到了以下的Email 警報
New Relic Downtime alert

Hope you find it useful

Codeigniter Get first Row of the database result – Codeigniter 如何取得第一個Row的 Record

今天在電腦活動 Hackathon 上寫一些Web Service用來 在Server 上的Database
取一些資了
誰不知..我忘了怎樣可以簡單地使用CodeigniterActive Record來取得第一個Record
所以便想寫下今天的網誌作一個小小的筆記了

解決方法 十分簡單
我們可以使用 $row = query->row()便可以
E.G.

if($query->num_rows() > 0){
  // Get current row
  $row = $query->row();
}

Codeigniter Get Current Records

Hope you find it useful

Android Rate Button – 如何建立Android 評分按鈕

最近到了一個電腦活動
他們講解了鼓勵Apps使用者在你的App評分的重要性

所以使想到要為自己的程式更新..增加一個方便使用者Rate This App的功能
做了一會Research很發現..

解決方法十分簡單
我們可以建立一個功能.. 這可以方便將來重用…
之後使用 getPackageName 這個功能來取後這個程式的 Namespace
再建立一個 Google Play Store的網址連結
之後在用一個Intent來關啟便可以了
Google Play Store - L Quiz UK

E.G.

public void RateMyApp(){

  // 建立一個Intent - 在這個Intent 上使用 Google Play Store 的連結
  // E.G. market://details?id=
  // 之後用 getPackageName 這個功能來取後這個程式的 Namespace.
  Intent goToMarket = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()));
 
  try {
        // 之後開始一個新的Activity 去這個Intent
        startActivity(goToMarket);
  } catch (ActivityNotFoundException e) {
        // 如果有錯誤的話 使用正常的網址來連接到 Google Play Store的網頁
        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName())));
  }
}

大家有沒有嘗試過找的 L Quiz UK App 呢?
https://play.google.com/store/apps/details?id=com.sharechiwai.lquizuk
L Quiz UK - About Page and Rate my App button

Hope you find it useful

View Log on Openshift – 如何檢視Openshift 上的Log

最近使用了Openshift來寄存我在電腦活動的Project

由于這個Project是的Source Code是會和其他人分享的關係
所以便使用一些較Standard的Code了
為免令大家混淆…

我的Website 是用PHPCodeigniter framework 來寫的..
在電腦活動時用了我自己原有的網頁來暫時建立一頁出來
E.g.
http://sharechiwai.com

所以把程式碼轉到新的Project上應該不太難..
只要下載Codeigniter最新的檔案..之後再把和這個Project相關的程式碼由自己的網頁上抽出來便和更新一些變數便可以..

完成後CommitOpenshift上也很順利..
但是不知道為什麼某些頁面會出現

試過更新很多的程式碼和設定也是出現 “500 Internal Server Error

最後朋友建議看看Server 上的 Application Log 看看有沒有一些有用的資訊…
我其實只是一個Linux 的初哥…所以要去查自一些Server的東西真是一點挑戰..
做了一會Research 後找到了 如何檢視Openshift 上的Log

解決方法.
首先以SSH 登入你的Openshift Account
之後
Command Prompt 上輸入以下指令 去 Log 的資料夾上
cd $OPENSHIFT_LOG_DIR

cd /app-root/logs
OpenShift Access Log Folder

之後輸入 “ls” 去看看這個資料夾內有什麼log 我們可以參考
List Directory on the logs folder

之後便可以使用VIMNano 來開啟這些Log
View PHP Log on OpenShift Linux

最後發現原來我的Codeigniter Controller 出現問題[太舊了..和新版的Codeigniter不太夾]

更新了那個Controller 之後再Commit我的程式碼便解決了

Hope you find it useful

Linux Output / Show Environment Variable – 如何檢查 Linux 上環境變數的值呢?

今天嘗試使用Linux的Environment Variable [因為在Openshift 中 他們建議使用Environment Variable 來定義一些程式上的變數]

如何檢查 Linux 上環境變數的值呢?

解決方法十分簡單
我們可以使用 “echo $Environment_Variable_Name” 來檢視

E.G.Linux Show Environment Variable

Hope you find it useful

.Net Get Last Day of Month – 如何在.Net上找出某一個月最後的一天是什麼

今天寫的一個功能會以不同的設定產生不同的檔案名稱
有時候會產生這個月最後一天的 TimeStamp E.g. yyyyMMddd 20140606

之前介紹了如何在 TSQL 取得這個月最後的一天
TSQL Get the last day of the month – TSQL 取得這個月最後的一天

今天想和大家分享如何在.Net上找出某一個月最後的一天是什麼

解決方法十分簡單..
我們只需要知道想找到的那個月有多小天便可以..
我們可以使用 .NetDaysInMonth(Year, Month)功能 來找出那個月有多少天
之後再次建立一個新的DateTime Object便可以了
E.G.

// Init Current Date
DateTime currentDate = DateTime.Now;
// Show Date
Console.WriteLine(string.Format("Current Date: {0:yyyyMMdd}",currentDate));

// Create a new DateTime object to store End Of Month
DateTime EndOfMonth = new DateTime(currentDate.Year, currentDate.Month, DateTime.DaysInMonth(currentDate.Year, currentDate.Month));
// Show Result
Console.WriteLine(string.Format("End of Month: {0:yyyyMMdd}",EndOfMonth));

結果:
.Net Get Last Day of Month

Hope you find it useful

.Net Retrieve Filename from Incompleted Path – 在.Net 的程式上如何取得檔案名稱

之前幫公司寫個FTP Module..
發現不同的Library輸出的Filename 都有點不一樣的..
有些輪出全個Full file path and filename
有些會出現Relative path
有些只出現檔案名稱

所以我便嘗試自行寫一個功能出來找出他們輸出的檔案名稱了..
誰不知…因為有太多不同的Combination 的關係..所以不太成功..
做了一會research 之後發現
解決方法十分簡單..

解決方法
我們可以使用 .Net Framework中的 Path.GetFileName(“檔案名稱 variable”);
便可以取得檔案名稱了

E.G.

// Full File Path -> 輸出: file.txt
string filename1 = @"d:\sharechiwai\file.txt";
Console.WriteLine("File1: " + Path.GetFileName(filename1));

// Full Network File Path -> 輸出: file2.txt
string filename2 = @"\\sharechiwai\file2.txt";
Console.WriteLine("File2: " + Path.GetFileName(filename2));

// Just file -> 輸出: index.php
string filename3 = "index.php";
Console.WriteLine("File3: " + Path.GetFileName(filename3));

// Web link -> 輸出: index.php
string webFile = "http://sharechiwai.com/index.php";
Console.WriteLine("Web File: " + Path.GetFileName(webFile));

結果:
.Net GetFileName Sample Code

Hope you find it useful