2016年1月27日 星期三

[SQL] 全文索引

 

簡單記錄

DECLARE @SearchWord nvarchar(30)
SET @SearchWord = N'搜尋';

SELECT top 1000 * FROM Table
WHERE CONTAINS(*, @SearchWord)

2016年1月19日 星期二

[Error] 不能將 OriginalValues 用於 Added 狀態的實體

 

問題 :

2016-01-19_171608

 

原因 : 我這裡遇到此狀的原因為某個不允許為null 的欄位為null, 所以新增時產生錯誤!!!

2016年1月15日 星期五

2016年1月13日 星期三

[Google][Error] Google Analytics Api 佈版IIS 系統找不到指定的檔案


前言 : 如果你跟我著我的步驟使用伺服器驗證,那麼當你佈版的時候可能也會遇到跟我一樣的問題:

系統找不到指定的檔案 (The system cannot find the file specified.)

我是本來在本機的IIS佈沒問題,上測試機就丟500…


我試了保哥的文章,也有類似的狀況,但是我沒有成功QQ
最後終於找到方法!!

步驟 :
1. 請到IIS 的應用程式集區
2. 找到你的網站所使用的應用程式集區
3. 進到設定,將”載入使用者設定檔”設為true

2016-01-13_150645

原因 : 預設為false, IIS 就會沒有存取key的權限
參考網站 : http://forums.iis.net/t/1226705.aspx?File+not+found+exception+w3wp+exe+issue+in+IIS+on+test+server+but+no+issues+in+IIS+Express+locally

2016年1月11日 星期一

[SQL] 新增table 欄位


久久沒用,果然很容易生鏽,記錄一下script 新增欄位
//範例
ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}[WITH VALUES]
//

範例 :
//範例
ALTER TABLE MyTable ADD NewField int NOT NULL DEFAULT 10
//
調整欄位結構 :
//調整欄位結構
ALTER TABLE  ApplyInfo ALTER Column IsReserved int NOT NULL
//

2016年1月7日 星期四

[Google] Google Analytics Api 使用教學4 (step by step) 最終回


前言 : 快點給我看結果吧!!!

步驟一 : 我們使用Google 的 Embed API 來呈現,這是官網,裡面有很多相關介紹,尤其是左下方的Query Exploer 可以讓你線上測試自己的搜尋內容唷!!

2016-01-07_175958

步驟二 :  點擊左邊的 Server-side Authorization 裡面的HTML內容設置即可,或是參考下面程式範例 :

<script>
 (function (w, d, s, g, js, fs) {
  g = w.gapi || (w.gapi = {}); g.analytics = { q: [], ready: function (f) { this.q.push(f); } };
  js = d.createElement(s); fs = d.getElementsByTagName(s)[0];
  js.src = 'https://apis.google.com/js/platform.js';
  fs.parentNode.insertBefore(js, fs); js.onload = function () { g.load('analytics'); };
 }(window, document, 'script'));
</script>
<script>
 // 更多api 設定
 // https://developers.google.com/analytics/devguides/reporting/core/dimsmets
 gapi.analytics.ready(function() {

   /**
    * Authorize the user immediately if the user has already granted access.
    * If no access has been created, render an authorize button inside the
    * element with the ID "embed-api-auth-container".
    */
   gapi.analytics.auth.authorize({
  'serverAuth': {
                                'access_token': '從後台得到的token'
                            }
   });


   /**
    * Create a new ViewSelector instance to be rendered inside of an
    * element with the id "view-selector-container".
    */
   var viewSelector = new gapi.analytics.ViewSelector({
  container: 'view-selector-container'
   });

   // Render the view selector to the page.
   viewSelector.execute();


   /**
    * Create a new DataChart instance with the given query parameters
    * and Google chart options. It will be rendered inside an element
    * with the id "chart-container".
    */
   var dataChart = new gapi.analytics.googleCharts.DataChart({
  query: {
    metrics: 'ga:sessions',
    dimensions: 'ga:date',
    'start-date': '30daysAgo',
    'end-date': 'yesterday'
  },
  chart: {
    container: 'chart-container',
    type: 'LINE',
    options: {
   width: '100%'
    }
  }
   });


   /**
    * Render the dataChart on the page whenever a new view is selected.
    */
   viewSelector.on('change', function(ids) {
  dataChart.set({query: {ids: ids}}).execute();
   });

 });
});
</script>

重點,記得把後台得到的token 放進 'access_token' 欄位!!!

然後基本的圖表就會出來囉!!!  終於!!!



ps.細節參數設定請參考此

[Google] Google Analytics Api 使用教學3 (step by step)


前言 : 在第一篇、第二篇我們已經取得金鑰並設定好網站資訊,也把追蹤碼放到我們的網站上,現在我們要在後端利用google 做好的api 去取得該網站的存取token囉

步驟一 : 到你的專案打開nuget 並下載Google.Apis.Analytics…..這個套件,他會連同相關連的dll一起載入
2016-01-07_173356
步驟二 : 我這裡是用.net mvc 示範,所以直接在隨意的Controller內建立一個Action,並填入以下程式碼
/// 
/// Google Analytics
/// 
/// 
public string GetGoogleAnalyticsToken()
{
 // Downloaded from https://console.developers.google.com
 //將自己的金鑰.p12檔放到app_data
 string[] scopes = new string[] { AnalyticsService.Scope.AnalyticsReadonly }; // view and manage your Google Analytics data
 var keyFilePath = HttpContext.Server.MapPath("~/App_Data/你的金鑰檔案名稱.p12");
 var serviceAccountEmail = "你的服務帳號信箱";

 //loading the Key file
 var certificate = new X509Certificate2(keyFilePath, "notasecret", X509KeyStorageFlags.Exportable);
 var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
 {
  Scopes = scopes
 }.FromCertificate(certificate));

 //取得token
 string AuthenticationKey = "";
 if (credential.RequestAccessTokenAsync(CancellationToken.None).Result)
 {
  AuthenticationKey = credential.Token.AccessToken;
 }

 return AuthenticationKey;
}

注意 :
  • 把金鑰放到app_data (看個人習慣)
  • 更改程式碼中的金鑰位置與名稱
  • 把服務帳號的信箱改成你的
  • 出現紅色的程式碼請自己include相關的dll即可

步驟三 : 接下來我們來測試是否順利拿到token,藉由postman我們順利拿到token囉!!
2016-01-07_174800


最後一篇,我們將使用Embed API 展示成果,把得到的token喂給前端google analytics api 就可以順利呈現圖表囉!!


ps. 如果實做過程中你有遇到token無法順利匯入 : 可以參考這篇試試看唷

Google Analytics Api 佈版IIS 系統找不到指定的檔案

[Google] Google Analytics Api 使用教學2 (step by step)

 

前言 : 在第一篇我們已經準備好google開發者帳號的服務金鑰,接下來我們要把服務帳號的信箱加到Google Analytics

2016-01-07_172022

 

步驟一 : 登入Google Analytics網站 (請先註冊唷,簡單略過)

步驟二 : 將服務帳戶信箱加入使用者管理

點選管理 –> 選擇你先前建立的帳戶(略) –> 點選使用者管理 –> 把上一篇文章的gmail新增上去 –> 記得給予檢視與分析權限唷!!!

2016-01-07_172419

註 : 如果先前從未申請過網站,請記得在申請網站後把追蹤碼(script)加自己的網站唷

2016-01-07_173139

 

2016-01-07_173210

 

下一篇我們就會利用google api提供的api取得後端的token!!

[Google] Google Analytics Api 使用教學1 (step by step)


前言 :
今天來整理一下之前使用google analytics api 搭配後端C# 的操作過程,我也是花了不少時間才建起來,希望下次遇到可以更快重複利用唷。
目標 : 希望將下面的google圖表加到自己的網站上
2016-01-07_164447

步驟一: 先註冊Google Developers (簡單略過)
步驟二 :  啟用API服務,Google 很用心,時常更新,所以有時候位置可能跟現在不一樣,但藉著主標題應該還是可以找到的,
2016-01-07_164956
服務太多也是很不容易找的 Open-mouthed smile
2016-01-07_165042
啟用API
2016-01-07_165144
印象中好像會先要你同意OAuth授權,就把基本資料填一下送出囉



2016-01-07_165311
接下來來到憑證,因為我會透過後端取得google token,因次這裡請選擇服務帳戶金鑰
ps. 其他兩種方式可以參考此文章(英文)
2016-01-07_165444
新增一個自己的服務,填寫名稱,並記得勾選P12的金鑰(後端需要此金鑰才能存取token)
2016-01-07_165853
建立後挑出視窗,請記住私密金鑰密碼,後端會用到,然後同時金鑰會跟著下載下來。
2016-01-07_170044
接下來我們要去此服務帳號的mail,未來要把此mail加到Google Analytics的權限內
2016-01-07_170838
記住下面的地址
2016-01-07_171112
OK!!
這邊基本上該註冊該啟用的東西都已經完成了,
我們現在手上會有: 金鑰檔案.p12、金鑰密碼、服務帳戶的mail
接下來就是google analytics網站及程式的部分囉!!
待續…


[C#] 如何製作日期迴圈 (foreach datetime)


前言 :
最近遇到需要存取特定時間範圍內的資料,所以需要讓時間可以跑迴圈阿!!!
C#語言很貼心的幫我們實做迭代,所以不用自己實做foreach,但是,沒有實做日期迴圈阿!!!
沒關係,我們來練習一下
先把目標列出來 :
var today = DateTime.Now;
var someday = DateTime.Now.AddDays(+10);

foreach (var day in EachDay(today, someday))
{
 // 處理期間內邏輯...
 Console.WriteLine(day);
}

然後完成這項任務 :
private static IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
{
        for (var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
          yield return day;
}

 貼心一點自己做成Util,方便日後重複使用 :
public static class MyDateHelper
    {
        public static IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
        {
            for (var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
                yield return day;
        }

        public static IEnumerable<DateTime> EachMonth(DateTime from, DateTime thru)
        {
            for (var month = from.Date; month.Date <= thru.Date || month.Month == thru.Month; month = month.AddMonths(1))
                yield return month;
        }

        public static IEnumerable<DateTime> EachDayTo(this DateTime dateFrom, DateTime dateTo)
        {
            return EachDay(dateFrom, dateTo);
        }

        public static IEnumerable<DateTime> EachMonthTo(this DateTime dateFrom, DateTime dateTo)
        {
            return EachMonth(dateFrom, dateTo);
        }
    }


ps. 有問題請歡迎告知,如果好用的話也請多給一些支持唷 (ex. 點一下廣告 : D)