2013年12月27日

CSS - Structural Pseudo-Classes 的nth-of-type和nth-child

好的,這篇是屬於CSS很基本的東西…但小弟前幾天被這個搞了一整天… ( 該重修CSS了..Orz.. ),所以為了讓自己更加有印象,就寫一下這篇文章嚕…至於CSS的高手們,就不要校小弟啦XDDD

nth-of-type和nth-child是屬於CSS Structural Pseudo Classes的其中幾個,而前幾天才發現,小弟自己的觀念錯誤QQ…直到後來,才深深領悟…是怎樣的範例呢…我們先來看一下範例。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
        .aa:nth-of-type(2) { color: red; }
        </style>
    </head>
    <body>
    <section>
        <div>123</div>
        <div class="aa">我是第1個p標籤</div>
        <div class="aa">我是第2個p標籤</div>  <!-- 希望這個變紅 -->
    </section>        
    </body>
</html>

是的,就是這種簡單的範例,我們利用nth-of-type來選擇要變紅色的區段,而小弟一直預期,應該是第二個標籤會變成紅色… ( 我的觀念錯得離譜,對不起大家QQ )

但結果卻是… ( 喔,至於為什麼div裡面寫著我是p標籤…那是因為我忘記把p標籤這三個字改成我是"我是div標籤"…

image

Orz…竟然是第一個變紅色….好吧,看到這邊,想笑我的人就笑吧XDDDD,我就真的搞錯觀念了嘛…我們先來看看w3cschool的敘述

The :nth-of-type(n) selector matches every element that is the nth child, of a particular type, of its parent.

n can be a number, a keyword, or a formula.

Tip: Look at the :nth-child() selector to select the element that is the nth child, regardless of type, of its parent.

嗯…小弟一直以為,因為小弟是使用class ( .aa:nth-of-type )來當篩選,所以應該會是去尋找所有的.aa,但實際上,不是這樣啊….

那實際上到底應該是怎樣呢??實際上.aa:nth-of-type的意思是指,找出有.aa這個class的元素(也就是div),然後這個div的父原素(也就是body),底下的第幾個div..

所以以上面的案例來說,第二個div是就是"我是第一個p標籤"阿!!~…..

所以,.aa:nth-of-type如字面所說,適用type去尋找…而這個type就是div…

那nth-child呢??…如果我們把上面的範例改成nth-child(2),如下Code.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
        .aa:nth-child(2) { color: red; }
        </style>
    </head>
    <body>
    <section>
        <div>123</div>
        <div class="aa">我是第1個p標籤</div>
        <div class="aa">我是第2個p標籤</div>  <!-- 希望這個變紅 -->
    </section>        
    </body>
</html>

那基本上還是和上面得到的結果是一樣的…那.aa:nth-child是甚麼意思呢?..簡單的說,就是找到.aa這個class後( div ),上面那層父元素( body ),底下的第二個div元素…

所以,結果還是"我是第1個p標籤"會變成紅色…

基本上就是這樣了QQ….所以,我的CSS應該要重修了QQ…

參考資料

2013年12月18日

Windows Azure - 使用Web Deploy和Visual Studio Online CI佈署到Web Site連線字串的關係

最近有空的時候,剛好在追一個小小的問題 ( 其實也不小,搞了好幾天釐清… ),這個問題主要是當使用Visual Studio Online搭配CI並使用從Web Site下載下來的Deploy檔案時,佈署到Web Site時,到底會使用哪個連線字串的實驗…

原本使用CI、或是Deploy的時候是很單純的,但是兩個混再一起,就有一點點小麻煩了,所以既然實驗了,那就在這邊把紀錄記一下嚕…

首先最單純的,如果使用Web Deploy,那我們可以從這邊去指定資料庫的連線字串變更,那這樣就算Web.config裡面的debug或是release沒寫甚麼,最後還是會改成如下圖的字串。

image

所以佈署上去後,字串的確會變成如Web Deploy所設定的…

image

那如果加上CI,並且在Web.config的debug和release加上連線字串的變更,會變成怎樣呢??

首先,我們先來看看Web.Debug.config

<connectionStrings>
<add name="ShihChanDBContext"
  connectionString="Data Source=tcp:web.debug.database.windows.net,1433;"
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

然後是Web.Release.config

<connectionStrings>
<add name="ShihChanDBContext"
  connectionString="Data Source=tcp:web.release.database.windows.net,1433;"
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

當然,如果直接透過CI做佈署,沒透過Web Deploy當然沒甚麼問題,但我們這邊要對CI做設定,讓他使用Web Deploy。

image

等待佈署完後,我們再重新檢查佈署出去的Web.config。

image

是的,也還是l0這組,所以從這邊可以得知,我們改的Web.debug.config和Web.Release.config被覆蓋掉了。

那真的被覆蓋掉了嗎??..我們現在針對Web.config重新拉一個connection string。

<add name="ShihChanDBContext" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=ShihChanDB;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
<add name="ShihChanDBContext2" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=ShihChanDB;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

然後Web.Debug.config為

<connectionStrings>
<add name="ShihChanDBContext2"
  connectionString="Data Source=tcp:web.debug.database.windows.net,1433;"
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

Web.Release.config為

<connectionStrings>
<add name="ShihChanDBContext2"
  connectionString="Data Source=tcp:web.release.database.windows.net,1433;"
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

我們來看看最後產出的結果是…嗯…圖有點小…但基本上,第一組Connection String是Web Deploy所設定的,而第二組的Connection String則是從Web.Debug.config來的;所以我們可以確定Web Deploy的設定會蓋掉Web.config的設定。

image

嗯,等等,眼尖的你發現了嗎??..他替換的是Web.Debug.config而不是Web.Release.config,但我們第一張圖所設定的組態是Release阿!!!!?

image

是的,這是第二個坑…雖然Web Deploy設定的是Release,但實際上CI不會吃到這個設定,而是會依據CI上的設定;CI上預設是空的,所以預設是使用Debug模式…

image

其實我們也可以從佈署成功的畫面看到

image

那如果要改成Release呢??就只能從CI那邊下手了。

image

發行後,我們就可以看到已經正確的替換成Release了…

image

大致上就這樣,所以設定的時候要小心啊QQ…

2013年12月13日

Windows Azure - 與Visual Studio Online連線時,找不到AzureContinuousDeployment.11.xaml檔案

這個問題很簡單,但因為要去VS的建構裡面新增,我怕我未來還是忘記,所以稍微紀錄一下。

這個問題的發生,就是因為小弟手殘,把在版本控制上的AzureContinuousDeployment.11.xaml檔案給刪除了…

所以當使用Web Site要和Visual Studio Online連線的時候,就會出現以下問題。

image

錯誤訊息如下:

Unable to find AzureContinuousDeployment.11.xaml in ShihChan see http://go.microsoft.com/fwlink/?LinkId=254710

當然,如錯誤訊息的內容,我們可以到官方網址看到解說,但基本上還是少了一些步驟…所以在這邊補齊。

首先,我們先到http://go.microsoft.com/fwlink/?LinkId=254710來下載AzureContinuousDeployment.11.xaml,當然,如果想使用版本控制來還原,也是ok啦…

下載下來後,要把AzureContinuousDeployment.11.xaml放到版控的BuildProcessTemplates目錄下,簡單的說,就是要把這個檔案簽入進去啦!!~

接下來,我們假裝要新建一個組件定義,如下圖,但其實不用真的新增組件定義,我們只是要利用這個介面來新增建置流程檔;我們只需要在下圖紅色框框的地方按下新增來建置流程檔。

image

接下來,選擇想要的專案,然後選擇剛剛下載下來的AzureContinuousDeployment.11.xaml檔案。( 別忘記,要把AzureContinuousDeployment.11.xaml放到版控上的BuildProcessTemplates目錄下 )

image

這樣就完成了。

後記

以後不要再手殘了阿QQ..

參考資料

2013年11月19日

Windows Azure - 使用Cache Service來讓Web Site網頁有快取效果

在Windows Azure上,要擴充網站,第一個遇到的問題就是存放Session,在Windows Azure的歷史上,從存放Session到Share Cache ( 2014停止支援 ),然後還有存放到Table Storage (官方也不建議了),然後到Azure SQL Database,然後Cloud Service上的Cache機制…

而雖然Cloud Service上的Web已經有解了,但是Web Site還是只能快SQL Database撐著;而如今隨著時代的演進,Azure上也提供了Cache Service (其實已經提供一段時間了…Orz… )

那今天我們就利用Cache Service來存放網頁的page,來達到提供網站的效能吧!!

首先,我們要先建立一個Cache Service。

基本上,如果沒有特別需求,選擇Basic就夠了…但如果想嘗到Cache的HA,那就必須選擇高階的選項 (最低從5G開始),而如果想要有通知功能,至少也要有中階…簡單的說,口袋不夠深,只選擇Basic,就真的只提供Cache….

image

嗯,小弟的口袋本來就不夠深,所以只能先嘗試看看Basic,看看未來有沒有人願意提供摳摳,小弟再來嘗試看看比較高階的應用XDDD

Cache建構的時間比較久,幾乎可以泡完一碗泡麵….而建立完成後,如下圖,就可以點進去做一些設定。

image

我們進入Configure裡面,就可以針對Cache進行一些設定,例如時間等等…而這邊因為沒有啟用高階或是中階的功能,所以也不能設定通知和高可用性QQ…. ( 未來有需要測試,再來設定看看吧… ) 另外,也因為是Basic,所以只能定義一組,如果是其他等級的,就可以定義10組以上的Cache設定,給不同的狀況下來使用。至於這些詳細的設定,目前MSDN也提供中文的敘述了,就直接貼給大家當作參考吧 !!~

image

接下來切到Scale底下;如果有需要,也可以從這邊進行一些設定,切換成中階的Cache或是高階的Cache,基本上,這是給有錢人看的…哭哭…

image

大致上就這樣,接下來,我們就來看看ASP.NET MVC上,怎樣使用Cache。

首先,我們還是要用老朋友NuGet來取得套件;這邊當然就是Windows Azure Cache了~

image

完成之後,會自動幫我們加上一堆設定檔在Web.config上,但我們還是需要調整一下Web.config。

image

調整的內容如下,我們要把<caching>區段的註解拿掉,然後在<autoDiscover>裡面的identifier屬性輸入Caching的url,並且把<securityProperties>區段的註解拿掉,並且在authorizationInfo裡面也填入金鑰。

基本上如下圖;另外因為這邊沒有使用到將Session存放到Cache的功能,所以<providers>的區段我們就維持註解。

image

另外,這邊也補充一下Web.config對應的關係其實是如下圖所示。

image

這邊是完成後的Web.config,金鑰的地方已經被小弟改成Key了,別忘了要輸入自己的Key喔!

<?xml version="1.0" encoding="utf-8"?>
<!--
  如需如何設定 ASP.NET 應用程式的詳細資訊,請瀏覽
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" />
    <section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" />
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
     <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  <!-- Windows Azure Cache session state provider --><!--<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
      <providers>
        <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/>
      </providers>
    </sessionState>--><!-- Windows Azure Cache output cache provider --><!--Uncomment this section to use Windows Azure Cache for output cache-->
    <caching>
      <outputCache defaultProvider="AFCacheOutputCacheProvider">
        <providers>
          <add name="AFCacheOutputCacheProvider" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" 
               cacheName="default" dataCacheClientName="default" applicationName="AFCacheOutputCache" />
        </providers>
      </outputCache>
    </caching>
  </system.web>
<dataCacheClients>
    <dataCacheClient name="default" isCompressionEnabled="true">
      <!--To use the in-role flavor of Windows Azure Cache, set identifier to be the cache cluster role name -->
      <!--To use the Windows Azure Cache Service, set identifier to be the endpoint of the cache cluster -->
      <autoDiscover isEnabled="true" identifier="test12.cache.windows.net" />

      <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      
      <!--Use this section to specify security settings for connecting to your cache. This section is not required if your cache is hosted on a role that is a part of your cloud service. -->
      <securityProperties mode="Message" sslEnabled="false">
        <messageSecurity authorizationInfo="Key" />
      </securityProperties>
    </dataCacheClient>
  </dataCacheClients></configuration>

接下來,我們要用asp.net mvc程式來測試一下,這邊我們在整個Action上面加上OutputCache輸出,並且另用Duration參數設定為120秒。

using Microsoft.ApplicationServer.Caching;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        [OutputCache(Duration = 120, Location = OutputCacheLocation.Server, VaryByParam = "none")]
        public ActionResult Index()
        {
            ViewData["Date"] = DateTime.Now.Millisecond;
            return View();
        }
    }
}

原則上,設定完後,就會有效果了,但我們為了確認真的有使用到Azure Cache Service,所以我們這邊稍微對Cache Service的Configure做一個調整,我們把時間調整成1min;這樣做的意思是表示,這個Cache的生命只有一分鐘的時間( 好可憐… ),當一分鐘過後,這個Cache就會消失了…

image

但我們在MVC的OutputCache是設定120秒阿(兩分鐘),是的,所以如果真的有存到Azure Cache Service的話,雖然MVC的OutputCache是設定兩分鐘,但實際上,到一分鐘的時候,在Azure上的Cache就會消失了,是沒辦法到兩分鐘的;而如果設定失敗…那就會有存活兩分鐘的現象… (通常也會直接報錯了…)

最終執行的結果如下,第一次執行的毫秒是584.

image

過了一分鐘後,變成346…好吧,我想這樣大家也看不出來…總之,如果有興趣的話,大家可以試試看,這部分還滿簡單的喔!

image

這樣就完成了Cache..

後記

其實如果要使用Session也很簡單,只要稍微調整一下,原本打算一併寫的,但畢竟現在已經有中文的資料了,所以只拋磚引玉的寫一篇關於OutputCache的,而未來如果有需要,會再寫一篇關於Session的,那現在如果有很急的朋友們,可以先去參考看看中文的資料喔~~謝謝~~

參考資料

2013年11月18日

Windows Azure - 使用Visual Studio對Web Site進行偵錯

前一篇,我們使用VS對Cloud Service進行偵錯,那Web Site呢??是不是也是心癢癢!?其實Web Site也是可以的,而且方法一樣,所以我們這篇,就針對Web Site進行偵錯吧!!

P.S 因為SDK 2.2後,發行更加的方便,所以這邊就順便紀錄一下發行的步驟;如果是急著想知道如何偵錯的朋友們,只要注意,發行Web的設定的地方,要選擇Debug,然後最後連線到Web Site就可以了;那我們繼續看下去。

首先,我們可以選擇匯入。

image

是低,如果有Windows Azure帳號,這邊就可以選擇新增一個新的Web Site喔!!

image

其實這邊的設定和Azure在Web上的管理介面沒啥兩樣,新增需要的資料也是一樣的。

image

完成之後,就可以按下ok繼續… ( 話說回來,為啥會取名為ok勒- -…通常不是都稱為完成嗎… )

image

這邊的連線設定基本上都不需要改。

image

重點是這邊,要選擇debug!!

image

然後發行就可以了。

image

發行之後,和Cloud Service一樣,我們要從伺服器總管選擇Web Site,然後再附加偵錯工具。

image

按下去的霎那!!!VS就很貼心的幫我們打開瀏覽器,然後就可以開始偵錯嚕!!

image

還真簡單啊QQ…

後記

還是老話一句,偵錯完成後,別忘了改回Release喔!!

參考資料

Windows Azure - 使用Visual Studio對Cloud Service進行偵錯

最近這段時間真的是超級無敵忙,所以一直到現在,才比較有空產出一些文章,而最近,也因為比較有空閒一點,所以想趕快把Azure前一段時間發佈的一些東西給補齊…

好嚕,廢話不多說,今天來稍微看一下Windows Azure SDK 2.2搭配Visual Studio的一個新功能;就是遠端進行偵錯…

是的,遠端偵錯阿… ( 遙望…. ) 令人多麼需要的一個功能…老實說之前在還沒有這個功能的時候,真的會讓人發瘋,雖然有的時候在Local都測試完成,再加上Unit Test,但上去之後,就是給他錯…所以今天出現這個功能,真的要謝主隆恩…Orz…

廢話不多說,我們盡快的給他看一下吧!!

首先,這個功能要在佈署前先設定,所以我們要進去發行這邊。

image

然後組建組態要設定為Debug。

image

並且勾選啟用所有角色的遠端偵錯工具。

image

修改完成後,就發布吧。

image

然後就要等一段無敵長的時間,不過這是沒辦法,畢竟是Cloud Service,人家可是把整台VM給重建…這樣想,感覺有沒有比較快一點XDDD

佈署完成後,我們可以先設定要偵錯的中斷點。

image

接下來,我們打開伺服器總管,是低,安裝SDK 2.2後,現在很多事情都可以從VS2013裡面進行控管了… ( 不過小弟還是喜歡進去Web管理畫面… )

打開之後就可以看到出現了連結偵錯工具!!

image

如果沒有執行一開始的步驟,是沒有的~~

image

按下去後,就會讓vs2013進入偵錯模式,然後我們就可以打開網址,進行偵錯嚕!!

image

這個功能真的是佛心來的….

後記

也別忘記,佈署到正式環境後,要把此功能關掉喔!!

參考網址

2013年10月6日

Microsoft TechDays 2013

10/06 Update SQL Server影片已經放到最下面,有需要的可以略過上面這些碎碎念XDD,直接看最下面的影片。

TechDays已經是小弟我每年必定參加的年度大拜拜了,甚至以前要去新公司面試時,對方主管問我,有沒有甚麼要問的問題,我一定會必問的問題就是"每年我可以請假三天去TechDays嗎?";而到今年2013,小弟也已經第四年參加了這個隆重的聚會,而每次的TechDays,都是小弟一次又一次的目標與轉淚點。

記得第一次的TechDays,由各個神人前輩們給小弟的震撼,體驗到,來上技術課程是那麼的充實與愉悅,也決定每次都要來。

記得第二次的TechDays,小弟與神人們的第一次接觸…( Orz,不是ET那種接觸啦.. ),更加的決定,自己以後也要站上這大舞台。

記得第三次的TechDays,從MVP和社群的角度出發!!

而這次,第四次的TechDays,小弟終於圓了夢,站上了TechDays的大舞台上。

所以,今年的TechDays,雖然忙到快要死掉,但對小弟來說,也特別有意義。

而今年,小弟一樣又來參加了這個聚會,而且這次不用再特別請假XDD,公司讓全公司的同仁一起參加去!! ( 根本就是變相的員工旅遊嘛= =… )

一樣,每年都必定要拍的一個看板,而今年Study4.TW也一樣很榮幸的,參加了合作社群的攤位~

IMG_1778

既然是合作社群,所以小弟前一天,還是要到場看一下攤位狀況,並且測試機器,而今年,我們攤位終於不是躲在1F的後方,而是移到了2F的位置;而台灣最大的SQL PASS社群,這次也由百敬老師和Terry哥坐鎮,擺設了SQL Server問答攤位區XDD ( 說到這個,SQL PASS後面那箱帽子,快讓我的半條命去了- -… ),而當天抵達後,現場還在施工…

IMG_1756IMG_1757

完成圖如下,到了正式開始的那天,整個氣勢都出來了!!而這次少了IT幫幫忙等社群,只剩下我們三個了 QQ…

SONY DSC

而我們攤位,一樣贈送的贈品還是去年的書籤…

SONY DSC

當然,還有印製新版的書籤…沒辦法,我們是公益社群,後面沒有經費QQ…很難和一般大廠,闊氣的拿出高貴的贈品…,另外,順便偷拍一下百敬老師,和他那傳說中的超重量級筆電…

SONY DSCSONY DSC

今年的水一樣有貼上TechDays的標籤喔!!

SONY DSC

比較可惜的是,今年比較沒甚麼機會去逛攤位… ( 完全沒空…QQ.. ),而今年,主要就是平板的Surface為主 (其實說Surface為平板也不恰當…畢竟他的硬體可是媲美一台筆電… ),然後一樓一樣有超大型海報…

SONY DSCSONY DSC

而今年的主題,主要就如1F的旗子一樣,有Office 365、Windows Azure,和超熱的Visual Studio 2013和Windows Server 2012 R2。( 當然Win 8.1也是主力啦!! )

SONY DSCSONY DSC

就如小弟說的,今年沒時間去逛攤位,也沒時間收集神人照幫大家拍照;第一天剛好在樓下遇到Ruddy老師和ChiaChi,所以就順手一拍XDD,至於Ruddy老師就不用說了…業界資深之程度,除非老師退休去騎腳踏車外,大家要超越大概也很難了吧…至於ChiaChi…每次他說很簡單的問題,一定都是不簡單…。

SONY DSC

Ruddy老師這次講了三場,老實說,場場都爆滿,更厲害的是,能把沒甚麼技術的Yammer,講出有深度,有涵量,這真的不是一般人能辦到…結果Yammer那場不但爆滿到位置座不下,更體會到…甚麼是24hr的工作方式XDDD

IMG_1777

第一天的主會場,和第二天的VS發表會,這次Microsoft也是一樣重裝上陣,小弟我也可以看到Dann哥,在這次的TechDays很努力地推廣Scrum,希望能讓台灣的軟體,更上一層樓。

SONY DSC

當然,身為VS和TFS工具台灣之神的Franma ( 肥馬 ),也負責了TFS的部分~,而比較有趣的是,這次TechDays請到宋少卿來幫忙主導過程,老實說,有了相聲高手來助陣,這次TechDays也多了一分趣味,而非那麼死板的技術呈現( 只是不知道花了多少錢- - )。

IMG_1775IMG_1763

其實,就如前面說的,這次活動,小弟大概就只拍這些照片了…也沒時間趴趴走了。

最後幾張照片,用來紀念小弟自己的里程碑….這次TechDays也收集到了三大證,尤其是中間那張,更是小弟夢寐以求的~^^~

SONY DSC

而這次擔任講師,也很感謝Microsoft官方的邀請,還有Tom哥的推薦,讓我可以站上舞台上,講Azure上的SQL Server和SQL Database,而為了這次的活動,也順便把Macbook順便升級一下Ram…變成16G的筆電…. ( 因為8G跑不動了QQ ),此外,我想我也是少數不怕死,拿著Macbook上台講課的講師之一QQ…. ( 其實我是要證明,Microsoft現在不是以前的封閉了!! (點頭無誤))

IMG_1748

當然,這次的準備過程中,其實還是有很多不滿意的地方,例如,講課內容的重心在Developer上,但準備的方面還是著重於SQL Server AlwaysON和SQL Database,比重的拿捏還是沒有拿捏得很好;其次,這次的Demo也比預期的少很多,梗的鋪設也比較少…

但這也是有原因的,因為被"本次大會最有梗"之神人Eric拍了一下,所以身陷了TechDays魔咒…這個魔咒的出處。是因為中午吃飯的時候,Eric哥和我說…他準備這次TechDays,VS2013出了一堆問題、Azure出了一堆問題,所以我就和他說…你著個賽人,離我遠一點…然後他就拍了我一下,然後也拍了Demo哥一下…於是我們就深陷魔咒之中…

我遇到的狀況,建立好的OS,整個給我掛掉,掛掉就算了,大不了重建,結果Azure不給我重建…於是整個搞了三天,講課前一天我甚至沒睡覺,最後掏出自己的信用卡,講課當天早上,才把Demo復原…所以,未來還有機會…一定要先準備好錄好影QQ…

至於Demo哥…據說他上課的時候VS2013一直當掉…甚至講完課後,整個筆電掛了…Orz…

這樣就結束了嗎??..No…還有Dino哥XDD,當天他也是吃飯名單之一,他是在Review投影片的時候,不小心誤刪…不過他做的比較遠,所以波及比較少XDDD

在來是Franma,據說當天Eric哥站在Franma後面,Franma就在Demo前,服務起不來..

最後是KKBruce,Eric哥第三天拍了他之後,全桌鼓掌XDDD,然後KKBruce有一個Demo就不來了…

最後,附上這次最神之八卦神人,Eric哥的照片….感謝他,讓我這次Demo做了N遍….

SONY DSC

但不管怎樣,還是以傳說的David老師,最為傳說XDD

當然,以上歸八卦,不果魔咒怎樣的,自己還是要多多檢討這次的缺失和講不好的地方,讓自己更加精進~~

最後,這次還是要感謝Microsoft長官們、邀約的Tom哥,讓我一圓站上舞台的夢想、公司老師老闆們的支持、Study4.TW的朋友們、MVP Group前輩們的鼓勵,小朱前輩的盯場QQ、講課當天陪著我的Terry和James和Justin,中午幫我買便當的Franma,放棄去聽百敬老師、David老師、KKBruce,而願意來聽課的大家們,還有在坐月子,忍受我整個連假一直在調整投影片和Demo,忍受我徹夜不睡覺敲敲打打的老婆和兒子"們" ( 另外一個剛出生,可能感覺不到XDD ),謝謝大家!!!~

最後的最後,附上在課堂上說要給大家看得,一鏡到底,未剪輯的Azure SQL Server AlwaysON安裝過程…,這個安裝過程是當天早上安裝的流程,所以滑鼠也會不斷閃動,也請大家見諒,最後,還是謝謝大家的支持,謝謝。

謝謝大家,TechDays 2014再會~~