TechDays 2012隨堂筆記 0918
4 |
微軟年度盛會TechDays 2012又來了! 身為靠微軟技術討生活的中年大叔,跟著進香團帶筆電過個香爐參與課程認真做筆記,也是佷合情合理的。所以,TechDays 2012隨堂筆記來囉~~
【Keynote】
- 看到尚未上市的Intel Ultrabook雛型機展示,Keyboard + Mouse + 觸控螢幕操作三合一。開機速度快、圖檔觸控式解鎖(取代開機密碼)、整合重要資訊的開始畫面(常用功能以動態磚方式集中在開始畫面: 股票、新聞、Facebook)、個人化設定儲存在雲端,在不同裝置也享有同樣個人設定、Office支援手指Zoom In/Out搭配鍵盤輸入
- ARM平板(WinRT)展示: Bing地圖(中文圖資)、IE10(無邊框模式Chromeless,力求內容空間最大化)、Charm工具列的分享功能可將網頁轉成Email(類似FB貼Link時的操作)
- acer All-In-One電腦: Win8要求多點觸控最少要支援五點(現場展示機為10點觸控)、相片App: 整合SkyDrive, FB雲端空間、可用相片App轉換成拼圖遊戲
- 未來一年內 Win8相容裝置將可達6億9千萬台(把PC也算進去的話),將成為全世界最大的軟體市集(相較於Android、iOS)
- App展示: 譯點通、KKBOX(雙指縮放進入音樂分類或回上層)、關鍵字搜尋可涵蓋App的內容
- 企業觀點的App應用類型:
* 消費型: Game、FB
* B2C: PCHome、中華電信
* 商業套裝軟體: MS Dynamic、SAP... (平板應用, 以高層主管觀點操作)
* 內部專案: 允許企業內部自建私有App市集 - Windows To Go: 將作業系統安裝在USB行動碟上(BitLocker全硬碟加密)
- Windows App開發方式: .NET, C++, HTML5+JavaScript三種擇一
- Windows 8正式上市日期: 10/26
- The new Office的四大特色: 跨裝置可用、儲存在雲端、社群分享、管理(DLP原則範本,配合個資法)
- OneNote MX(針對平板觸控手寫最佳化) 支援照相功能
- Office On Demand: Browser連Office 360,以Streaming方式下載程式後在本機執行
- PowerPoint新增酷炫特效: 拉窗簾、摺成紙鶴飛走
- Office支援HTML5 + JS開發相關應用
- SkyDrive Pro: 企業版的DropBox,多裝置間檔案同步
- 終於!! 新版Office可以Side-By-Side與舊版並存
- 雲端演變: 1993 Client-Server -> 2012 Devices-Services(裝置愈來愈多樣化)
- Wndows 2012已於9/4正式上市: Hyper-V 3.0單一Host可承載的VM規模大幅提升,ODX(Offloaded Data Transfer,同一Server網路分享間Copy不透過網路,直接在Server傳輸,快100倍)、Live Migration(把VM轉到另一台機器上執行)
- MVMC -> VMWare轉至Hyper-V的工具
- Windows Azure: 現有8個資料中心,24個CDN節點
- 本屆倫敦奧運透過Azure愛爾蘭資料中心做轉播(含大量轉檔作業),未建置任何機房,算是通過一次大規模壓力測試
- 今年6月起Azure提供VM IaaS服務,允許使用者上傳Hyper-V VM Image到雲端建立虛擬機器。CloudXplorer(Open Source工具)可以把VM下載回來,沒有被廠商綁死的問題。
- SQL Server 2012: Excel 2013結合地理資訊、本地SQL混合SQL Azure組成Mirror,由本地Failover到雲端
- Big Data: 支援Apache Hadoop,非結構式鉅量資料
- 應用程式生命周期: System Operation Manager示範,OP檢視網站正式台上出現錯誤事件 -> 將錯誤訊息派工給開發人員 -> Visual Studio裡可直接檢視訊息細節,甚至可連結到錯誤發生所在的程式碼位置
【SQL 2012 T-SQL】
- Sequence
- 在多個Table間保持Unique。傳統做法: GUID、複合Key、Global Table管理。2012新增Sequence (向Oracle看齊,符合ANSI SQL標準)
- 可要求循環(CYCLE,跳到最大值後重頭開始算)、設Cache可以減少硬碟IO(但異常關機可能重號)
- DEMO失敗囉! 有Cache比無Cache的Sequence還慢了幾ms(八成是受現場某種神祕力量影響 XD)
- WHERE、TOP、GROUP BY... 等不可使用Sequence(NEXT VALUE)
- SSMS TIPS: "GO 10"表示執行10次, 選項可設定捨棄執行結果(測效能時避免結果傳送的消耗
- GUID重複的機率: 小於慧星撞地球的機率
- GUID缺點: 偏長(16Bytes)、產生慢(相較於Sequence或Identity)、不連號(但就算一般Key要保證絕對連號也很難,談規格時能免則免)
- 例外處理:
- 新Keyword: THROW: 跟C# throw不加參數一樣,可以在Catch錯誤處理後,把原來的系統錯誤往上層抛
- RAISERROR Level< 20,傳回錯誤, 但不會放棄Batch,後續指令可繼續執行。RAISERROR 20 WITH LOG(要加WITH LOG,呼叫時要有管理者權限,會寫入系統事件,會中止連線)
- THROW一律中斷批次
- FormatMessage("…%s …", variable)
- xp_logevent 偷偷寫入事件,不引發任何錯誤
- 比較表: RAISEERROR, THROW, xp_logevent, 自訂記錄資料表
- 計算&彙總:
- 跨筆比較、遞移平均: 用CURSOR比Self-Join / Sub Query好!! <== 少數用CURSOR較好的情境
- 2012新增Windowing函數: 比Cursor跟Sub-Query都有效率
PARTITION BY ... ORDER BY ... ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW - 新函數: CUME_DIST、LAG(上一筆)、LEAD(下一筆)、FIRST_VALUE、LAST_VALUE...
- 30筆 vs 10萬測試: 不同方法30筆時差不多,但筆數增加所需時間會呈級數成長,開發時無法察覺,上線才爆炸的地雷。實測 Cursor - 3秒 Sub Query - 18秒 Self-Join - 跑不完 Window函數 - < 1秒(相當於用C語言跑Cursor)
- 大量新函數: TRY_PARSE, TRY_CONVERT, TRY_CAST, FORMAT, IIF, CHOOSE(Oracle DECODE), CONCAT
日期: EOMonth, DateFormParts… - OFFSET / FETCH: 支援分頁取回
ORDER BY ... OFFSET <expr> ROWS FETCH NEXT <expr> ROWS ONLY
注意: 跟傳統row_number()法相比沒變快,因為瓶頸在排序 - EXECUTE ... WITH RESULT SET可將傳回結果的欄位重新命名及轉換型別
- 支援Unicode延伸字集Surrogate
【IE10相容性】
- Windows 8試圖在Smart Phone, Pad, NB, PC上提供統一的操作模式
* Modern Style(以前的Metro Style已改名) vs Destktop Mode(傳統操作模式) - 用Modern IE10 vs Desktop IE10術語區別IE10的兩種操作模式: History、我的最愛是共享的
- Modern IE10
* 回上頁回下頁,滑鼠移至左右兩邊出現箭頭
* 移至下方開啟工作列(存取我的最愛)
* 連結預覽: Charm 分享 -> 郵件 自動帶入Thumbnail & 摘要(跟Facebook一樣)
網頁可用<meta name="title" …>指定標題、縮圖、摘要資訊
* 關聯到App: msApplication-ID / 從下方工具列的工具圖示下載或開啟 (Desktop IE無此功能)
* 釘選成動態磚,另可提供動態數字訊息
網頁透過meta指定Polling-uri, Frequency(分鐘為單位)
* 觸控: 縮放、多點觸控 - Charm Bar: 中文翻成 常用工具列,Win8右側垂直那一條
- Desktop IE10
* Tab: 關掉某個Tab,釋放出的空間會留給仍存在的Tab均分
* 可記住上回瀏覽階段(留意隱私議題: ex: 電腦借人用)
* 可啟用"受保護模式",信任區域的網站,結束後清空History及暫存快取 - Modern IE10不再支援ActiveX(部分網站支援Flash子集)
- 工具 / 管理附加元件 / 追蹤保護功能 (不提供GPS定位)
Desktop IE預設停用 / Modern ID預設啟用 - 支援CSS 3, HTML5 (AppCache, 非同步指令碼執行, 通道訊息, 拖拉API, 檔案API, History, 沙箱, 拼字檢查, Worker...), IndexDB ...
- 相容性問題: (10/26開始要面對問題)
- IE10 user-agent變了
- Conditional Comment: <!-- [if IE 8]>
對特殊版本IE套用特定設定的Hacking技巧,依HTML5標準就只會是註解。這個Change應會導致大爆炸,來不及改就開相容模式 吧! - X-UA-Compatible
- IE10標準模式:
一旦宣告<!DOCTYPE html>, 不支援X-UA-Compatible meta <== 這個會爆炸 - IE10 Quirks模式:
網頁未宣告<!DOCTYPE html>,此時X-UA-Compatible設定有效 - Desktop IE10 工具/ActiveX篩選 -> 模擬Modern IE10 無外掛的環境
- 無外掛Hint:
HTML5 video, audio取代Flash, QuickTIme, Silverlight
HTML5 canvas, SVG, CSS3取代Flash, QuickTime, Silverlight, Java Applets - 強制切換到Desktop IE10: X-UA-Compatible: requiresActiveX
(下方會出現詢是否要切換的對話條) - IE10相容式檢視清單: (向微軟註冊申請iepo@microsoft.com, 請閱讀MSDN注意事項)
<domain docMode="EmulateIE10">darkthread.net</domain> - 偵測是否支援觸控: if (window.navigator.msPointerEnabled) …
- 偵測是否支援多點觸控 if (window.navigator.msMaxTouchPoints) 結果可能為0, 1或n
- 偵測為Modern or Desktop IE?
1) window.innerWidth == screen.width 2) new ActiveXObject("")是否失敗 - CompatInspector: 把該.js Include進來,網頁上會出現紅、黃、藍燈,,出現不相容處的統計,甚至可用Debug跳到問題所在的程式位置
【.NET程式偵錯及效能調校】
- VS2012的新偵錯功能:
- 多執行緒: 除了[執行緒]視窗、新增[GPU執行緒]視窗
- 新增[平行監看式]
- DOM總管/JavaScript主控台: 進入中斷才能用,儼然就是IE Dev Tools翻版,目前JS Console不支援Intellisense
- Win8 App Simulator: 可用滑鼠摸擬觸控
- IntelliTrace
- VS Ultimate 2012才提供(最貴的版本才有)
原名HistoricalDebugger, 記錄發生錯誤的完整場景,類似飛機的黑盒子
* 記錄Application執行的事件及歷史記錄(預設只有事件,設定後可多記下方法)
* 單元測試失敗的狀態
* DailyBuild失敗狀態
* 重現TestManager錯誤
* 追蹤執行環境的錯誤(這個很猛) - 在不改程式前題下可記錄: 例外、檔案/Registry存取、使用者操作(Mouse/Kbd行為)...
- IntelliTrace操作: 巡覽邊(上一事件/下一事件)、事件/方法歷史記錄清單、找到某行程式對應的事件(程式碼按右鍵"在IntelliTrace中搜尋這一行")、使用Filter找特定執行緒的事件、也可對事件進行關鍵字搜索
- 正式環境偵錯: (極強)
- 必要條件: IIS7+, 對象限.NET程式,要有.NET 3.5
- 在伺服器端安裝IntelliTraceCollection.cab
- PowerShell cd \資料夾 (RunAs管理員身分)
- Expand /f:* IntelliTraceCollection.cab . (別用WinZip、WinRAR解壓, 要保留目錄結構)
- AppPool的身分對該Folder要有Write權限
- Import-Module .\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll
- 先IISRESET(等下重新啟動的Instance才會適用)
- Start-IntelliTraceCollection "AppPoolName" c:\資料夾\collection_plan.ASP.NET.trace.xml
- Stop-IntelliTraceCollection "AppPoolName", 停止後Dump檔案
- 在VS2012中開啟偵錯記錄檔,可還原出錯當下的資訊細節,跟使用VS線上Debug的情境很像
(要配合pdb才能找出程式錯在哪一行)
- ASP.NET Validator支援Unobtrusive Validation,可減少Script的量,預設啟用(UnobtrusiveValidationMode)
- 打包CSS/JS:
- 方法1: <script src="scripts/js"></script>指定資料夾,全部打包。如要決定順序,請用01, 02, 03為JS命名調順序, 記得<header runat="server">
- 方法2: ScriptBundle, StyleBundle, DynamicFolderBundle
- ASP.NET MVC內建,WebForm要另外用NuGet下載
- Win 8 ASP.NET 4.5最高可省35%記憶體,最高快35%
- 效能精靈: Pro以上的版本就有
- CPU取樣: CPU%
- 檢測: 方法被呼叫的次數
- .NET記憶體用量
- 資源爭用資料(並行)
- ** 效能精靈可以比較兩個報告(.vsp) **
- Web效能測試:
- Ultimate版本才有
- Web效能分析前要取得實際使用情境: 各網頁的點擊率、順序,結果才會逼真
- 負載測試前要確立效能目標
- 錄製結果可以轉成程式碼,做進階客製
- 參數化Web伺服器: 將WebServer URL變成參數
- 報告名稱: 為每個動作定義在報告中出現的名稱,不然只有URL很難讀
- 用錄製結果進行負載測試(可指定使用者數量、多個錄製測試採不同比例混合),結果寫入DB,報告可轉成Excel
Comments
# by EvanKuo
Modern IE10不再支援ActiveX? 那不是連網路ATM也不能用了嗎?
# by ice
不好意思想請教一下 >IE10標準模式: >一旦宣告<!DOCTYPE html>, 不支援X-UA-Compatible >meta <== 這個會爆炸 所指的會爆炸是指無效還是會造成未知的效果?
# by Jeffrey
to EvanKuo, Modern IE10不能用ActiveX->網路ATM不能用? => 只能導向到Desktop IE10再操作,而ARM平板似乎就無解了 to ice, 爆炸是寫給自己看的,過去沒留意這點,可能有混用<!DOCTYPE html>跟X-UA-Compatible的寫法埋在專案中,若meta無效恐會產生問題
# by RED
http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/58c2f719-727b-4dda-912e-d8b983ec3f90/ IE10的標準模式下 若不開啟相容性 XML則無法完整載入XSL 這算BUG?