Quantcast
Channel: MSDN 台灣部落格
Viewing all 136 articles
Browse latest View live

使用 Visual Studio GDB 擴充套件在 Visual Studio 上遠端偵錯 Linux 上的 C/C++ 程式

$
0
0

在 Linux 上開發 C/C++ 的應用程式,或許你會直接(本機或遠端)登入 Linux,打開編輯器寫完程式碼後,就用 gcc/g++ 來編譯程式,遇到要除錯(debug)的時候,則會選擇使用 gdb 來進行除錯。現在,如果你剛好也很喜歡 Visual Studio,你可以不必改變習慣,用 Visual Studio 寫程式、然後遠端送到 Linux 上編譯、甚至還能接上 gdb 來除錯。這個對於開發像是嵌入式系統、或是 IoT 裝置的程式等等就可以多多利用 Visual Studio 強大的 IDE 能力。


圖: 應該有不少在 Linux 上寫程式的開發人員是這麼工作的吧?

如何做?

首先,你必須使用 Visual Studio 2015,你可以使用免費版[1]的 Visual Studio 2015 Community 或是其它更高等級的版本,記得在安裝時要勾選 Visual C++以及 C++ 跨平台行動開發這兩個元件:


圖: 安裝 Visual C++

然後只要再安裝 Visual Studio GDB Debugger這個擴充套件,就能夠在 Visual Studio 的 Visual C++> 跨平台的專案類型中選擇 Makefile Project (GDB)的專案範本。


圖: 在 Visual Studio 中建立 Makefile Project (GDB)

建立專案後,啟始畫面就會有簡單的說明如何連接遠端的 GDB 來進行除錯,照著做應該就沒有什麼大問題了。會用到與 SSH 相關的工具可以到 PuTTY 的網站上下載相關的工具。


圖: 使用 VS GDB 擴充套件的教學

首先在專案上按右鍵選擇內容,設定偵錯的環境,像是遠端主機的位址、然後認證用的 pub/private key,還有連接的方式(ssh 或 plink)等等,這裡要注意的是連接伺服器是使用 RSA 的公私鑰的方式進行認證,所以你必須先產生一組 RSA 金鑰,然後在 Linux 主機上放好公鑰,然後這裡設定是用私鑰去驗證(圖中的 .ppk 檔案)。


圖: 設定遠端主機連線的資訊

然後就是設定在編譯程式時要如何把程式上傳到目標的 Linux 機器上,然後用機器上的 gcc/g++ 來進行編譯,切換到 NMake 的設定頁,設定建置指令:


圖: 設定如何將程式丟上遠端主機並且進行編譯

這裡我的設定值是:

d:\tools\pscp.exe -i $(PrivateKey) "D:\Temp\Project1\Project1\main.cpp" $(RemoteUserName)@$(RemoteHostName):$(RemoteWorkingDirectory)/main.cpp

$(SecureShellExecutable) $(RemoteUserName)@$(RemoteHostName) -i $(PrivateKey) "cd $(RemoteWorkingDirectory);g++ -g main.cpp -o $(RemoteExecutable)"

這裡我是用 pscp 把檔案傳上 Linux 主機上後,再呼叫 g++ 來進行編譯,其它的變數都是前面設定的值,你可以根據你的工具以及檔案所在位置做修改。

接下來你就可以開始撰寫程式了,然後就像在 Visual Studio 裡寫其它程式一樣設定中斷點,但是執行時選擇 Remote GDB就可以開始進行遠端偵錯了。

>
圖: 啟動遠端主機的 gdb 來除錯,但結合 Visual Studio 的偵錯介面

看起來就好像都是在 Visual Studio 中的除錯畫面,但是這隻程式確實已經送上 Linux 主機進行編譯,並且使用 gdb 來進行偵錯了!

原始文章發佈於「開發者之魂」部落格

推升 R 成為支援企業端與雲端跨平台分析的企業標準

$
0
0

    不到一年前,我們決定買下 R,全球最廣為採用的統計運算與分析預測程式語言,在商用軟體與服務領域的領導廠商 Revolution Analytics 公司 ( 請參考:decided to acquire Revolution Analytics ),在那時候,我們就致力於將 R 及其劃時代的技術建構在我們廣大的產品線,包括資料庫、巨量資料分析、以及商業智慧中 ( 請參考:we committed to ),讓我們的客戶和學生,在企業端或是 Azure 雲端,以及新的平台都能夠使用到統計,分析,與預測的功能,形成競爭的優勢。

到目前為止,我們已經發佈了以下許多新功能,同時也更新了一些原有的功能,讓我們的客戶和夥伴也都能夠享受 R 的威力:

  • 在 2015 年 6 月,我們成為 R Consortium 的創始會員之一,宣告了我們對 R 專案的承諾。
  • 在 2015 年10 月,我們以 Revolution R Enterprise 技術為基礎,發佈了 SQL Server R Service 功能,這是 SQL Server 2016 CTP3 內建的功能,將先進的分析技術整合到 SQL Server 資料庫。
  • 在 2015 年11 月,我們開始支援本機安裝的 Power BI 使用者管理並檢視 R 處理的資料 ( 請參考:visualize and operationalize data in R )。

這次,有更多令人感到興奮的新功能要公佈,這些功能可以協助新的平台、程式開發者、或是 R 社群提供以 R 為基礎的分析技術,包括:

      在多種平台提供 Microsoft R Server,可以支援我們的企業客戶不管是否使用那一種版本的 Hadoop 版本 ( Hortonworks、Cloudera、或是 MapR),那一種版本的 Linux ( Red Hat 或是 SUSE ),或是 Teradata,都能夠只使用一種核心工具,標準化進階分析的作業。對 Windows 的使用者,Microsoft R Server 會內建在 SQL Server 2016 中,也就是 SQL Server R Service 服務 – 內建 Microsoft R Server 的 SQL Server 的售價會比兩者分開購買的價格更加優惠。但是在 SQL Server 2016 正式發佈前,Revolution R Enterprise for Windows 都能夠以獨立的方式進行採購。

      IDC 的商業分析和資訊管理部門的程式開發副總裁 Dan Vesset 說:" 進階的預測與分析必須發展新的開發與測試模型,但是也需要程式開發者的努力,才能夠創造出具自動化決策支援功能的產品,進而為整個企業提供有效的決策支援。透過 Microsoft 對 R 分析決策技術的承諾與支援,Microsoft 在導入分析模型,提供具生產力的工具與程式開發支援方面,扮演了很重要的角色,成功地降低了使用進階的預測分析技術的門檻"。

除了近期發佈的新功能以外,我們將會持續不斷地在我們的產品中提供最佳的整合服務,以及更創新的功能,包括:

加上這些我們將要釋出的功能,就是我們對企業、R 程式開發者、資料科學家提供大規模的進階分析預測平台,協助建立企業端與雲端分析預測功能的應用程式的高成本效益解決方案的承諾。

認識 Microsoft R Server

      Microsoft R Server 是一個以 R 為基礎,支援在不同環境佈署的企業級分析平台,提供以 R 為基礎、高延展性、以及高安全性的運算環境。為了支援各種巨量資料統計運算,預測模型,以及機器學習的能力,R Server 支援完整的分析技術 – 探索 (exploration),分析 (analysis),視覺呈現 (visualization),以及建立模型 (modeling)。Microsoft R Server 使用開放原始碼 R,並加以擴充,但是仍保有與 R script、函式、與 CRAN 套件完整的相容性,提供企業層級的資料分析功能。除此之外,Microsoft R Server 也運用平行運算技術與分段處理資料的技術解決了開放原始碼 R 在 in-memory 運算的限制,協助使用能夠順利地對資料量比電腦主記憶體更大的資料進行分析與預測。

Microsoft 在買下 Revolution Analytics 公司之後,投注了很多心力加入了許多新功能 (詳細資料可以參考:Microsoft R Server – What is New? ),並且在開發新功能的時候努力讓 Revolution Analytics 的產品更加安全,更加國際化,降低入門使用門檻,同時也很容易安裝。以最新發佈的版本為例,其功能包括:

  • R 語言 3.2.2 版
  • Microsoft 提供的企業級支援
  • 符合 Microsoft's Security Development Cycle 軟體開發規範的企業層級安全性,包括威脅模型和攻擊層面分析,程式碼分析,以及延伸的模糊測試等等
  • 符合 Microsoft Accessibility Standards 規範的可用性
  • 支援中國政府 GB18030 編碼標準

使用 Hadoop 的客戶可使用 Microsoft R Server for Hadoop 在分散式的 Microsoft R Server 叢集建立和執行 R 模型,不需要放棄客戶原本喜好的R開發環境。Microsoft R Server for Hadoop 能夠自動將分析與預測的工作延展到 Hadoop 節點,不需要寫作複雜的程式碼。

        Hortonworks 公司的執行長 Rob Bearden 說:“ 在 Hortonworks,我們允許我們的客戶從動態的資料和靜態的資料建立具決策智慧的現代化資料分析應用程式。Microsoft’s R Server 和我們公司的 HDP 與 HDF 平台搭配之後可以提供一個以 R 語言為基礎的高延展性,企業層級的巨量資料與分析解決方案,作為數以百萬計的 R 程式開發者開發各種預測與分析應用程式的基石,分析來自網際網路數以 10 億計的各種資料來源,並轉換成有用的資料供企業參考"。

客戶可以利用 Microsoft R Server for Teradata 享受在 Teradata 提供的設備與資料庫中直接執行進階分析模型,對資料庫中的資料進行分析與預測的好處,不需要付出從資料庫取出欲分析的資料才能夠進行分析的代價。

        Teradata 公司 Product and Services Marketing 部門的副總裁 Chris Twogood 說:“ 我們非常高興 Microsoft 發佈了企業等級,具高延展性,以非常受歡迎的 R 語言為基礎的的巨量資料分析平台。 在 Microsoft 發佈了 Microsoft R Server for Teradata 之後,兩家公司共同的客戶就能夠在 Teradata 整合的資料倉儲設備,利用我們的硬體強大的威力和延展性執行進階的統計和預計分析運算。有了 Microsoft R Server for Teradata,我們的客戶能夠建立和佈署適用於零售業的應用程式,提供詐騙偵測,智慧型客戶關係管理,以及以 IoT 物聯網為基礎的預測維護等功能”。

我們提供的 Microsoft Data Science Virtual Machine 將會包含預先安裝,並設定妥當的 Microsoft R Server 開發者版本,支援 R 使用者能夠藉助於 Microsoft Azure 雲端平台,立即開始使用資料探索與建立模型等功能,不需要自行耗費精神和物力在企業端安裝和設定支援執行資料分析的環境。

認識 Microsoft R Open

      雖然 Revolution R Open 現在叫做 Microsoft R Open,但是 Microsoft 將會持續遵守自己的承諾,包括支援R開放原始碼專案,定期發表更新版,以及支援免費散佈 R 平台。Microsoft R Open 利用 Intel Math Kernel Libraries (MKL) 提供,適用於多執行緒處理器的最佳化運算,大幅地改良了 R 的執行效率,特別是矩陣相關的運算速度。除此之外,透過 Microsoft R Open 提供的簡化 R 套件版本管理功能,可以讓 R 使用者更容易地在 Microsoft Windows、Mac、以及 Linux 平台開發可靠的 R 解決方案。Microsoft R Open 百分之百相容於所有的 R script 和套件,而且和 R 一樣採取開放原始碼的形式,支援有需要的人免費下載,使用,和分享。

R 社群是 R 語言會成功的關鍵因素,也是資料科學家、統計學家、以及企業的重要資源。自從買下 Revolution acquisition 之後,Microsoft 持續支援 R 社群,包括擴展對 R 使用者社群和研討會的贊助,而且也增加了在R 開放原始碼專案的投資,提供 Microsoft R Open 和 DeployR Open (支援以 Web 服務的方式發行 R 的伺服器)的定期更新,提供包括檢查點 (checkpoint) 功能的新版本和更新版本的 R 套件,提供 R 套件的時間機器,支援在叢集執行 R 平行運算的 ParallelR,以及支援將 R 函式佈署到 Azure 雲端平台當做 API 的 Azure ML。除此之外,成為 R Consortium 創始成員之一就是 Microsoft 對支援 R Project 最明確的承諾。

        RStudio 公司的執行長 JJ Allaire 說:“ 身為 R Consortium 的成員,我們非常高興看到 Microsoft 加入支援 R 語言的行列,有像 Microsoft 這樣產品一流的公司在 R 的投資,R 語言已經準備妥跨足企業應用。我們期待能夠和 Microsoft 合作,提供容易佈署的環境、具商品品質的工具、以及基礎建設,為客戶創造成功的環境”。

對 Microsoft R Open 有興趣的讀者可以閱讀 R Community 社群領導 David Smith 發表的文章:the post。有意開始學習 Microsoft R Server 與 Microsoft R Open 的讀者可以到 upcoming webinar series 網站註冊參與以下的網路研討會。

January 28, 2016

Intro to Microsoft R Open

David Smith

February 4, 2016

Using Microsoft R Server to Address Scalability Issues in R

Derek Norton

February 11, 2016

Data Mining with Microsoft R Server

Derek Norton

February 18, 2016

Best Practices for using Microsoft R Server with Hadoop

Jamie Olson

February 25, 2016

Using Microsoft R Server to Operationalize your Analytics

Jamie Olson

 

 

 

 

 

 

 

  

 

學習參考資料連結

本文翻譯自:Making R the Enterprise Standard for Cross-Platform Analytics, Both On-Premises and in the Cloud

 

提醒您,社群之星『學新知拿好禮』活動進行中,快去搶禮物!想知道更多第一手消息,請鎖定 MSDN 台灣

Visual Studio Apache Cordova Apps 單元測試首部曲

$
0
0

這篇文章中您可以閱讀到以下資訊:

要做一個好的 App 就像是偉大的藝術家,演員和運動選手,都是場偉大的演出。人們透過大量的訓練、練習、演練以及實際的回饋檢討,不斷的驗證及持續改善他們的演出。在橫跨整個 App 生命週期裡,我們透過許多層次的嚴格測試,或持續驗證來實現軟體開發上相同的目標。

也許你聽過單元測試,但很可能你並不怎麼清楚明白單元測試實際上是什麼,以及該如何在跨平台的 Apache Cordova 專案上結合單元測試。在 Visual Studio Tools for Apache Cordova 文件內容裡,我們最近新增了一個章節,透過一系列全面性的例子來探討 Cordova apps 的單元測試細節。

在這二篇的文章裡,我會透過一個精簡版本的示範讓大家熟知整個過程。第一篇首先說明單元測試的本質以及一個使用 Visual Studio來進行的基本 Cordova apps 範例,第二篇將稍微深入一點有關測試驅動開發以及單元測試偵錯的主題。

 

單元測試其它形式的測試

 單元測試相較於其它形式測試的獨特點

單元測試

其它形式

直接呼叫或使用App的程式碼測試單位(類別、方法、屬性及方法)

透過使用者界面測試已部署在模擬器或測試設備上的 App

了解到App的程式碼是怎麼寫的(白箱測試)

無法了解到 App 的程式碼是怎麼寫的(黑箱測試)

測試是執行在開發及建置機器的測試執行器(例如一個獨立的JavaScript 執行環境,Node.js)

測試是在模擬器或實體設備上執行的

測試是自我的一部份程式碼 ( 通常是以相同語言撰寫的,例如JavaScript )

測試是腳本(手動撰寫或由錄製器產生)或者只是一組手動測試的步驟

發生於開發週期裡,同步撰寫程式碼甚至是早於開發階段 ( 測試驅動開發TDD )

發生在開發建置成功後

理想情況下是非常快速的,所以可以結合在每一次的建置過程中,有助於程式碼變更時進行回歸測試

是否有時效性 ( 取決於發行管理的過程 )

測試失敗時中止建置或是提交至版本管理

測試失敗是發行管理的流程中止步驟

下圖說明了多數的測試形式(左側)不同於單元測試 (右側),以及說明了單元測試通常獨立於應用程式平台之外。

 

注釋:當你著手於單元測試是完全專注於撰寫或修改程式碼。你不需測試函式庫或其它不是在專案裡正在修改的程式碼,因為這些函式開發者應該已經測試完它們。如果測試欠缺你所需要使用的函式庫,那麼正確的做法應該是在函式庫的原始碼來源進行,而不是在你的專案裡。

 

JavaScript 與 Apache Cordova 的單元測試環境

單元測試環境由三個組成項目:執行階段 (runtime),測試框架 (Test framework) 和測試執行器  (test runner)。以下列表說明了這些項目,並且有一些例子。

項目

說明

JavaScript例子

執行階段(runtime)

在App之外裝載並執行程式碼。它可以一個瀏覽器或是獨立的執行環境,有時被稱做為headless browser

Browsers, or Node.js, PhantomJS, Chrome V8

測試框架(Test framework)

定義如何撰寫具體的”測試”,通常是在同樣的程式語言裡被測試,這樣可以共享相同的執行階段(runtime),但這不是必需的。

Jasmine, QUnit, Mocha along with libraries like Chai and assert.js

測試執行器(test runner)

在所支援的執行階段(runtime)裡執行依測試框(Test framework)架定義的測試,並且產出測試報告。

Chutzpah (uses PhantomJS), Karma (uses a browser)

這些關係如下圖所示:

 

單元測試是在適當的時間點調用測試執行器 (test runner) 和查看報告,它可以透過手動進行或是在自動建置過程中的一部份,測試執行器 (test runner) 可以利用命令模式或是整合於 Visual Studio IDE。

一些測試執行器 (test runner),例如 Chutzpah,有整合 Visual Studio 測試橋接器工具,反應在 Visual Studio 測試總管介面裡。其它測試執行器 (test runner),例如 Karma,沒有測試橋接器但它仍然可以整合到 Visual Studio 的工作執行器總管 (Task Runner Explorer),關連到像是 Grunt 及 gulp 。這二種方式都含蓋在文件裡,針對 Karma 及 gulp,請查閱 Basic unit testing  及 Test Apache Cordova apps with Karma and Jasmine

 

動手做單元測試

為了更好理解單元測試的機制,讓我們現在用一段程式碼,透過 Chutzpah,QUnit (jQuery的 unit test framework),以及 Visual Studio 來進行基本的單元測試過程。

 

unit”

首先,假設你已經安裝了 Visual Studio Tools for Apache Cordova,然後透過"檔案 > 新增 >專案> 選擇 JavaScript >Apache Cordova Apps > 空白應用程式"。然後在 www/scripts 資料夾建立一個叫做 normalize.js 的 JavaScript 檔案,並且輸入以下的程式碼。 

/** @description Converts JSON data that may contain Name and PersonalIdentifier 
 *    properties to an object with the properties name (string) and id (positive 
 *    integer up to 9999999999.
 * @param {string} jsonIn The JSON data to normalize.
 * @return {object} An object with name (string) and id (integer) properties,
 *    defaulting to "default" and 0, or null if the JSON is null or invalid.
 */
function normalizeData(jsonIn) {
}

 這個簡單的 normalizeData 函式是我們要測試的單元 (unit),現在我們先讓它保持空白。請注意到這個函式是 App 的一個函式,它跟我們所選擇的測試框架 (test framework) 及測試執行器 (test runner) 無關。

 

單元測試

接下來,每個單元測試都是一段驗證單元的程式碼,透過:

  1. 給與特定的輸入值然後呼叫,接著
  2. 確認期望值的輸出

單元測試必須遵循你所使用的測試框架 (test framework)。因為我們正在測試 JavaScript 程式碼,我們有眾多容易使用的 JavaScript  測試框架可以選擇。在這個例子中,我們將要使用 Jasmine,它內建支援我們待會要使用的 Chutzpah 測試執行器 (test runner),所以我們不需要額外為 Jasmine 安裝其它特別的東西。

針對單元測試,在專案內建立一個資料夾並命名為 Test,然後在這個資料夾內建立一個 normalize_tests.js 的 JavaScript 檔案,並且輸入以下內容:

// First argument to "describe" is the name of this group of tests
describe("normalizeData tests", function () {
    // First argument to "it" is the name of the specific test
    it("accepts golden path data", function () {
        // Use the unit being tested as necessary
        var json = '{"Name": "Maria", "PersonalIdentifier": 2111858}';
        var norm = normalizeData(json);

        // Check the results; "expect" is a Jasmine method.
        expect(norm.name).toEqual("Maria");
        expect(norm.id).toEqual(2111858);
    });
});

在 Jasmine 裡,你建立了一組測試在 describe 方法裡,然後每一個測試在it函式裡,最後形成描繪出這個整個測試。使用單元測試程式碼針對任何你想要的測試,然後使用 Jasmine 的 expect 方法確認結果,最終輸出 pass 或 fail 。

這裡我們只是一個簡單的測試,但請注意它是很明確具體,有特定的輸入呼叫,並且針對輸入給定了確切的名稱/描述。這遵循了最佳原則,每個測試針對一個測試案例,測試的名稱建立成 1:1 的對應,因為這個名稱會呈現在報告上,以及精確的測試案例(意謂:測試使用的參數)。當測試執行器 (test runner) 報告失敗時,你可以確切的知道到哪裡查看你的程式碼,然後很輕易透過在除錯器的測試到達失敗點。這最終會節省你的時間,因為假如你合併多個的測試,當你必須偵錯哪裡失敗時,你很有可能最後會解析所有測試。

 

 測試行器 (test runner)

有了單元程式碼以及至少一個單元測試,現在我們可以執行 Chutzpah 測試執行器 (test runner)。先到 Visual Studio 裡的"工具>擴充功能和更新….",選擇線上,搜尋及安裝"Chutzpah Test Adapter"(你會被提示重新啟動 Visual Studio)

 

在專案根目錄下建立 Chutzpah.json 檔案,然後輸入以下內容,告訴 Chutzpah 它應該執行的檔案。

{
  "References": [
    { "Path": "www/scripts/js/normalize.js" }
  ],

  "Tests": [
      { "Path": "test/normalize_tests.js" }
  ]
}

“References” 區段用來明確指定要測試的程式碼,然後“Tests”區段指定單元測試檔案。當你加入愈多程式碼及測試檔案時,這個列表清單就會愈多。

現在選擇"測試> >測試總管"然後你應該會看到列出可用的測試清單 “References”  區段用來明確指定要測試的程式碼,然後 “Tests” 區段指定單元測試檔案。當你加入愈多程式碼及測試檔案時,這個列表清單就會愈多。

 

注意:如果沒有任何清單,那很有可能是你的測試檔案有語法上的錯誤,而造成 Chutzpah 無法辨示。

點選全部,開始建置專案,執行測試,並查看結果。因為我們在 normalizeData 裡沒有任何實作,所以測試應該會失敗:

這證實了你具有可以在 Visual Studio 裡使用 Chutzpah 的機制。

如果你想要通過測試,實作 normalizeData,至少處理預期的輸入,然後再次執行測試:

function normalizeData(jsonIn) {
    data = JSON.parse(jsonIn);
    return {
        name: data.Name,
        id: Number(data.PersonalIdentifier)
    };
}

當然這個程式碼無法完美的處理其它 JSON,所以肯定是有改善的空間!我們將會在第二篇來談論有關於測試驅動開發 (test-driven development) 以及單元測試除錯。

在此同時,我希望聽聽你是如何在 Cordova apps 進行單元測試,你是如何進行 UI 測試(手動及自動),以及我們可以如何進一步提升我們的支援透過 Visual Studio Tools for Apache Cordova。透過 kraigb (at) microsoft.com留言給我,或是到 http://visualstudio.uservoice.com/. 提出建議。當然這個程式碼無法完美的處理其它 JSON,所以肯定是有改善的空間!我們將會在第二篇來談論有關於測試驅動開發 (test-driven development) 以及單元測試除錯。

本文翻譯自 Unit Testing Apache Cordova Apps with Visual Studio, Part 1

[延伸閱讀 - 影片教學] 

使用 Visual Studio 2015 TACO 建置 Windows 10 應用程式

Visual Studio 2015 tools for Apache Cordova Build apps for Windows 10

MSDN 論壇精選 (01/18 - 02/16)

$
0
0

        MSDN 論壇  是一個可以讓開發人員自由提出問題、尋找資訊的好地方,歡迎大家多多利用,與社群中的同好們一同分享 Microsoft 技術資訊。

而我們會不定期整理論壇精選給大家,希望對您的學習有所幫助!以下為 2016 01/18 - 2016 02/16  的論壇精選,大家在閱讀時有疑問也可以直接加入論壇中討論喔。

現在只要到微軟社群之星學院問問題,就有機會月月抽好禮,參加請點這裡,我們更提供不收費線上課程 Channel 9 讓您尋求更多知識。

日期主題
1/18同時使用 Master Page 與 Inculde File 
1/25ConnectionTimeout 如何宣告使用
1/26MVC 5 的 view 如何更精簡
1/26無法安裝 Visual Studio Community 2015
1/27如何調整 C# Web Form 中的呈現方式
1/29DataTable 弱型別轉強型別的做法
1/29Microsoft Ole DB Provider for Foxpro 註冊
2/01如何自動依日期區間 抓出相關資料
2/02關於將 jquery 放入自訂伺服器控制項的問題 
2/02使用類別庫建立 Web 應用程式專案的問題
2/03Azure VM 無法刪除
2/04Azure VM 架設 FTP 相關問題
2/05SQL Server 如何取得實際小數點位數有幾位
2/13SQL Sexpress 2014 定序修改問題
2/16如何在 Azure 上 debug Web App

 【論壇延伸】針對論壇熱門問題Channel9 不收費教學平台提供眾多技術課程,歡迎參考。

如何在 Azure VM 建立 FTP

 

 C# 6.0 的新功能

 

 

 

服務都關閉了,怎麼還會有費用?


Hands On Lab - Azure 網站服務建立

Learn Once, Write Anywhere - 在 Visual Studio Code 開發 ReactNative 應用程式

$
0
0

ReactNative讓您使用 JavaScript 建置 iOS 與 Android 原生或跨平台應用程式。我們最近剛剛宣布 Visual Studio Code Extension的釋出,讓您能夠建置、偵錯以及預覽 Apache Cordova 應用程式。今天我們很開心的宣布一個類似的好東西, ReactNative的 VS Code擴充元件!

 

ReactNative vs. Apache Cordova

 大多數的你們可能都已經熟悉 Apache Cordova 是一個開源專案讓網頁開發人員能夠透過完整原生的 APIs 以及線下支援建置行動應用程式。

在 Cordova 應用程式中,整個 UI 執行是在一個全屏的 WebView 中,你可以使用和網站開發上相同的 HTML、CSS 以及 JS 框架。但由於 UI 是渲染在 WebView 中,要實現真正的原生樣貌與體驗著實困難。

ReactNative 應用程式同樣是撰寫 JavaScript – 或者,更具體來說是使用 React/JSX 開發框架,程式碼執行在綑綁著應用程式的 JavaScript 引擎上,而非如同 Cordova 執行在 WebView 中。ReactNative 是透過 JavaScript 使用原生 UI 元件 (例如: iOS 中的 UITabBar和 Android 中的 Drawer),這代表妳可以創造原生的使用體驗,這是 Cordova 所無法達成的。

這樣說好了,Apache Cordova 是現在較成熟且穩定的技術讓您使用網頁技術撰寫一個共用的 UI Layer ,然而 ReactNative 較新且仍然需要撰寫不同的 UI Layer。因此如果妳的應用程式需要原生 UI 以及您特別興奮於快速進化的 JavaScript 平台,那 ReactNative 就會是您考慮的選擇之一。

 

點亮您的 ReactNative 開發體驗

為了點亮您的開發體驗,我們問 ReactNative 開發人員是什麼讓他們更有生產力,他們給了我們豐富的靈感,所以我們加了許多用戶導向的功能在 Visual Studio Code 中。

• 語法高亮顯示以及自動補齊JavaScript 陳述式 (Statement) 與來源檔案中的 JSX 片段。 

 Syntax highlighting and autocomplete for ReactNative in Visual Studio Code

• 命令式指令,部署和偵錯應用程式在模擬器以及裝置上,不用離開編輯器本身。

 Command to deploy and debug app without leaving the editor 

• 設定中斷點功能與完整的偵錯工具系列一應俱全,像是監看變數名稱以及檢查呼叫堆疊。

 Setting breakpoints and debugging

以上功能不需要任何修改,都可以成功在您既有的 ReactNative 專案上實現!

 

如何取得?

很簡單! 首先,如果您尚未下載或者安裝 Visual Studio Code 請到 http://code.visualstudio.com。它小於 50 MB、完全免費,可執行在 Mac OS X、Linux 和 Windows 上,在正常網路下不到 2 分鐘即可安裝完成。接著到 Visual Studio Code 市集 下載 ReactNative 擴充元件。您也可以透過編輯器,在執行指令面板 (Mac 上按Cmd+P、Windows 按 Ctrl+P),輸入 “ext install reactnative”,點擊 Enter。此擴充元件不僅開源並可透過 GitHub取得,我們會喜愛您的貢獻讓它更好! 您可以新增 issue 或者給我們一個 pull request 包含您需要的超棒功能。

有興趣實踐超棒的 DevOps 方法在 ReactNative 應用程式? 快看看我們的文章 post on using VSTS, HockeyApp, and CodePush with React Native

 

未來有什麼?

我們團隊持續努力交付更棒的開發工具,也很希望聽到您的聲音!無論你遇到任何問題,有很棒的意見或想法和 ReactNative 有關,我們都會認真聆聽。您可以加入 內線計畫 或者在 reactiflux discord 伺服器 (搜尋 “lostintangent” 或 “axemclion”),通常會在 #code-push 頻道裡找到我們。我們非常期待您的消息!

如同前面提及,我們團隊仍會持續投入在Apache Cordova 以及其擴充元件。我們也希望解決您的問題或者一起討論您對Cordova 的很棒想法!

本文翻譯自Develop ReactNative apps in Visual Studio Code

使用網頁技術

輕鬆幫你的應用程式加入人工智慧: 使用 Project Oxford

$
0
0

Project Oxford 是微軟推出的一套針對視覺、聲音及文字相關辨識的 Web Services,所以不論你是撰寫什麼樣的應用程式,都可以透過 web request 的方式呼叫 Project Oxford 提供 RESTful APIs 來認識你取得的資料。

在 Project Oxford 的首頁上列出了目前所有的提供的 APIs,這些 API 的背後都是基於微軟的人工智慧、機器學習等的智慧平台所建構出來(例如:Azure Machine Learning),但是使用這些 APIs 你不必擁有太多人工智慧的知識或技能,只要會呼叫 RESTful API 還有解析 JSON 格式的資料就可以了。舉例來說,如果你想要判斷一張人臉照片裡這個人的表情是代表什麼情緒,那就可以參考其中的 Emotion APIs 來操作。

使用 Project Oxford 判斷情緒的範例

取得 API Key

呼叫 Project Oxford 的服務都需要 API Key,只要在 Project Oxford 的首頁用 Microsoft 帳號登入後,就可以取得這些 API 免費使用的額度(因為目前這些 API 還在預覽階段,所以還沒有付費購買),每一個 Project Oxford 的 API 都有各自的 API Key。

所以之後要呼叫 API 時要選對 API Key 來進行呼叫。

呼叫 Emotion API 判斷情緒

有了 API Key 之後,就可以準備來呼叫 Emotion API 來偵測照片中人臉的情緒,使用的方式也是參考 Emotion APIs 的 API 參考文件,把照片傳入 API,Emotion API 會根據背後的智慧模型計算出這張臉的情緒,回傳的資料也是 JSON 格式的資料像是這樣:

[
  {
    "faceRectangle": {
      "left": 68,
      "top": 97,
      "width": 64,
      "height": 97
    },
    "scores": {
      "anger": 0.00300731952,
      "contempt": 5.14648448E-08,
      "disgust": 9.180124E-06,
      "fear": 0.0001912825,
      "happiness": 0.9875571,
      "neutral": 0.0009861537,
      "sadness": 1.889955E-05,
      "surprise": 0.008229999
    }
  }
]

回傳的資料主要是一個陣列,因為一張照片可能有不只一張臉,每一張臉就會是一個 JSON 物件,faceRectangle 抓到的是臉部的位置,而 scores 則是這張臉譜的每一種情緒的比重,你可以全部列出來,或是只挑出最顯著的幾種情緒來進行判斷或顯示。

參考資料

原始文章發佈於「開發者之魂」部落格

從現代化診所的例子看微軟的開發及雲端技術: (1) ASP.NET Core 跨平台的 Web 開發及運行技術

$
0
0

前言

Microsoft Connect(); //2015 的開發技術大會上,為了解說微軟的各平台的開發技術(包含 Web、Desktop、Mobile、Cloud、DevOps 等),製作了一個具體而微(其實也是不小的專案) --HealthClinic.biz 來串接各種微軟開發技術,由於這個範例已經全面開源並公開在 GitHub 上,所以任何人都能從這個範例的原始碼中瞭解及學習微軟最新的開發技術。

 

系統架構

整個 HealthClinic.biz 的設計架構如圖所示:

整個系統後端由 ASP.NET Core 技術處理 Web 以及資料庫的操作,並且部署至 Microsoft Azure 雲端平台;而各個 client 端應用程式搭配不同的使用情境,但都是呼叫系統後端提供的 API 來存取資料。

目錄

這系列會分成 5 個部份來介紹這個範例所展示出來的開發技術

  1. ASP.NET Core 跨平台的 Web 開發及運行技術
  2. 從 Node 應用程式看 TypeScript 以及 Visual Studio 與現代開發工具的整合
  3. 使用 .NET 技術開發原生應用程式:傳統桌面應用程式、Universal Windows Apps
  4. 跨平台開發 Android 以及 iOS 應用程式:使用 Xamarin 或 Apache Cordova 技術
  5. 資料處理應用程式

HealthClinic.biz 的 Web

在這個範例中,Web 的用途有兩個:「首頁(Landing page)」與「診所管理人員操作」(上述架構圖左上角的部份),所以重點是在後台管理人員操作的部份。如果你是使用 Visual Studio 2015 來開啟範例,你可以直接開啟 01_Demos_ASPNET5.sln 來開啟所有相關的專案,包括(src/ 目錄下):MyHealth.Web, MyHealth.Model, MyHealth.Data, MyHealth.API, MyHealth.Office365,從專案名稱上大致上就可以猜到它的用途:

  • MyHealth.Web: Web 專案的主體,如果要部署或執行測試就從這個專案下手。
  • MyHealth.Model: 定義這個 Web 專案中有哪些資料模型,例如定義了病患(patient)的資料模型,然後裡面定義病患的資料欄位等。
  • MyHealth.Data: 定義程式介面,透過操作上述資料模型來完成某些工作。例如:定義一個可以列出 N 筆病患的函式等等。
  • MyHealth.API: 定義 API 介面,供後台程式呼叫完成操作,呼叫 MyHealth.Data 定義的函式,不過提供的是供外部呼叫的 REST 介面。
  • MyHealth.Office365: 處理與 Office 365 服務整合的程式。

以下我們就以 Web 的前後端來介紹如何閱讀範例。

Web 後端:ASP.NET Core

Web 主要是以 ASP.NET Core (原名:ASP.NET 5)這個開發框架來開發,因為 ASP.NET Core 是基於 .NET Core 這個跨平台的 .NET 執行環境所開發,這同時也意味著這個 Web 不僅能在 Windows/IIS 平台上運作,也能在非 Windows 非 IIS 的平台上運作,所以當然你也能將它部署到 Linux、Mac OSX 或是 Docker 等,或是在這些平台上開發測試,所以在這個範例中,除了在 Windows 下使用 Visual Studio 之外,您也能在 Mac OSX 下使用喜愛的編輯器(我們也建議您可以使用跨平台的程式開發編輯器: Visual Studio Code)來開發測試 MyHealth.Web 專案。

Web 後端主要就是展示如何用 ASP.NET Core (以及 ASP.NET 相關套件)開發 Web 端應用程式,而用 Entity Framework Core (原本的 Entity Framework 7 更名為 Entity Framework Core 1.0)來處理資料庫的操作,所以如果您正開始學習 ASP.NET Core 以及 Entity Framework Core,可以從這些程式碼中看到不少操作範例。

Web 前端: 使用現代化前端開發套件

MyHealth.Web 的 Web 後台是用 AngularJS 所開發的一個單頁應用程式(SPA, Single Page Application),你可以在 MyHealth.Web 專案中的 content/app 目錄中看到後台使用 TypeScript (*.ts)檔案搭配 AngularJS 來開發,這個範例使用大量的現代化前端開發套件,除了應用程式使用 TypeScript 及 Angular 之外,整個專案用到的許多工具用到了 npm 做套件管理、也使用了 Bower 做前端套件函式庫的套件管理、使用 Gulp 來定義許多處理前端的工作、而且全站的樣式表也都是以 SASS 開發再編譯成 CSS 的,所以這個範例也是非常適合用來學習這些新穎的前端技術,更可以體會到 Visual Studio 在整合這些前端技術上花費了多少心力。


圖: 使用 Gulp 定義的工作,Visual Studio 中的工作執行器總管都可以辨識並操作它們

一方面也由於是用這些主流的前端開發套件,所以專案拿到 Mac OSX 下進行開發也不用做任何特殊的設定或是找尋替代方案。

部署 Web 應用程式

如果你打算把所有的 HealthClinic.biz 的程式都建置起來,因為所有的 clients 都會到這個 Web 程式來存取資料,所以勢必要把這個 Web 應用程式部署在網路上以便存取,當然最簡單的就是將這個應用程式直接部署到 Azure Web 應用程式服務上,而資料庫的部份,也只需要使用 Azure SQL 資料庫服務建立一個資料庫就好了。在部署時,您不必修改專案中設定檔的資料庫連接字串,只需要在應用程式的部署環境中加入一個 DefaultConnection 的環境變數,然後代入資料庫的連接字串,這個 Web 應用程式就會自己去讀環境變數中的 DefaultConnection 的值而連上資料庫了。

 

除了 Azure Web 應用程式服務之外,你也可以參考這篇文章將它部署到 Linux 伺服器上,或是利用專案目錄下的 Dockerfile 將它製作成一個 docker image,以便在你的 docker 環境中部署,Visual Studio 也可以安裝這個小工具,就能直接在 Visual Studio 中打包成 Docker 的 image,甚至是發佈出去。

參考資料

原始文章發佈於「開發者之魂」部落格

從現代化診所的例子看微軟的開發及雲端技術: (2) 從 Node 應用程式看 TypeScript 以及 Visual Studio 與現代開發工具的整合

$
0
0

此為系列文章,系統架構以及應用簡介請參考第一部份

系統架構

整個 HealthClinic.biz 的設計架構如圖所示:

整個系統後端由 ASP.NET Core 技術處理 Web 以及資料庫的操作,並且部署至 Microsoft Azure 雲端平台;而各個 client 端應用程式搭配不同的使用情境,但都是呼叫系統後端提供的 API 來存取資料。

目錄

這系列會分成 5 個部份來介紹這個範例所展示出來的開發技術

  1. ASP.NET Core 跨平台的 Web 開發及運行技術
  2. 從 Node 應用程式看 TypeScript 以及 Visual Studio 與現代開發工具的整合
  3. 使用 .NET 技術開發原生應用程式:傳統桌面應用程式、Universal Windows Apps
  4. 跨平台開發 Android 以及 iOS 應用程式:使用 Xamarin 或 Apache Cordova 技術
  5. 資料處理應用程式

專案角色

這篇文章主要是介紹 HealthClinic 範例中使用 Node.js 技術所開發的網站後台,在系統架構圖的左上角可以看到是診所管理人員(Clinic Management)所使用。

單就網站的功能來說,這個專案的功能與第一部份介紹的 ASP.NET Core 專案的網站後台是相同的,只是這個專案全以 Node.js 技術來實作,也藉此展示 Visual Studio 與 Node.js 開發的整合,以及使用 TypeScript 做為主要的開發語言,可以運用它許多特色來加強 JavaScript 在中大型專案上開發的表現。


圖: 以 Node.js 寫成的診所管理後台

Visual Studio 家族與 Node.js 開發的整合

Node.js Tools for Visual Studio (NTVS)

首先以 Visual Studio 來說,只要安裝 Node.js Tools for Visual Studio (NTVS 是一個開源專案,目前支援 VS2012, 2013 以及 2015) 這個套件,就能夠在 Visual Studio 中建立及開啟 Node.js 專案,而在這個範例中就能順利開啟 07_Demos_NodeClinics.sln 專案,而 Visual Studio 會偵測專案中的 package.json 檔案來協助運用 npm 來管理套件,所以你可以在專案視窗中確認 package.json 裡定義的套件是否全部都正確地安裝好了。


圖: Node.js 專案中 npm 套件管理結構

事實上在 Visual Studio 2015 中,只要你在專案中加入了 package.json 檔案(不限專案),Visual Studio 就會在專案結構中加入 npm 套件管理的部份,以前一部份的 ASP.NET Core 專案為例,它會自動去讀取專案中 package.json 檔案的內容來產生結構化資訊整理這些套件,你也可以在方案總管中處理安裝或移除的操作,這些操作也會自動更新 package.json 檔案內容。

 
圖: ASP.NET Core 專案中讀取 package.json 所產生的 npm 套件管理結構

除了套件管理、程式碼編輯之外,也可以直接在 Visual Studio 中啟動瀏覽器來測試這個 Web 專案,並且在 Visual Studio 中進行除錯的工作。


圖: 在 Visual Studio 中偵錯 Node.js 的應用程式

Visual Studio Code 天生支援 Node.js 開發

Visual Studio Code 雖然是一個編輯器,但是它對於 Node.js/JavaScript 程式碼的編寫做了一些優化(像是語法提示等),所以在開發 node.js 專案也可以利用到這些好處,而且,您還能使用 Visual Studio Code 直接執行並除錯 node.js 的應用程式,想像一下雖然在非 Windows 的環境沒有 Visual Studio 這麼功能完整的 IDE,也可以在 Visual Studio Code 中享受到這些輔助開發的工具。


圖: 使用 Visual Studio Code 偵錯 node.js 應用程式

使用 TypeScript 開發

如果你仔細看 HealthClinic.Web.Clinics 專案的內容,你會發現前端頁面的部份(原始碼在 public/app 目錄下)主要是以 TypeScript 所寫成,由於 TypeScript 是 JavaScript 的超集合(superset),所以只是在原本的 JavaScript 語法中加入一些更明確定義資料型態等等的語法,你還是可以按照原本寫 JavaScript 的方式來寫程式,而這個專案用 TypeScript 開發的前端頁面會在建置時轉成瀏覽器看得懂的 JavaScript 語法(可以定義要轉成 ES3, ES5 或 ES6 的語法)。在這個範例中例用 gulp 定義了一個工作 ts: 透過 gulp-typescript 來進行程式碼轉譯,ts 這個工作順利結束後便會在 public/app 目錄下產生轉譯完的 JavaScript 檔案。


圖: 左邊是 TypeScript 的原始碼,右邊則是轉譯後的 JavaScript 程式

與前端工具結合

在 Visual Studio 2015 中,只要你透過 npm 套件安裝了 Grunt 或是 Gulp 後,Visual Studio 的工作執行器(Task Runner)就會解析專案中的 gruntfile.jsgulpfile.js 檔案,然後建立這些建置工作的 UI 操作介面,像在 HealthClinic.Web.Clinics 專案中使用了 Gulp 作為工作執行指令,於是 Visual Studio 的工作執行器就把 gulpfile.js 裡定義的工作拆解出來,你就可以在工作執行器總管中來執行它們。

關於工作執行器的介紹可以參考 MSDN 台灣部落格上的這篇文章

參考資料

原始文章發佈於「開發者之魂」部落格


從現代化診所的例子看微軟的開發及雲端技術: (3) 使用 .NET 技術開發原生應用程式:傳統桌面應用程式、Universal Windows Apps

$
0
0

此為系列文章,系統架構以及應用簡介請參考第一部份

系統架構

整個 HealthClinic.biz 的設計架構如圖所示:

整個系統後端由 ASP.NET Core 技術處理 Web 以及資料庫的操作,並且部署至 Microsoft Azure 雲端平台;而各個 client 端應用程式搭配不同的使用情境,但都是呼叫系統後端提供的 API 來存取資料。

目錄

這系列會分成 5 個部份來介紹這個範例所展示出來的開發技術

  1. ASP.NET Core 跨平台的 Web 開發及運行技術
  2. 從 Node 應用程式看 TypeScript 以及 Visual Studio 與現代開發工具的整合
  3. 使用 .NET 技術開發原生應用程式:傳統桌面應用程式、Universal Windows Apps
  4. 跨平台開發 Android 以及 iOS 應用程式:使用 Xamarin 或 Apache Cordova 技術
  5. 資料處理應用程式

專案角色

這篇文章介紹的專案包括架構圖右上角給診所掛號櫃臺使用的傳統桌面應用程式,以及右下角給病人使用的通用 Windows 應用程式(UWP app)。這兩個專案的共通點是使用 .NET/C# 的技術來開發這兩種不同的應用程式——傳統桌面應用程式是用 WPF 的框架開發,而病人使用的應用程式是 Windows 10 以後的 UWP 應用程式,雖然是不同的技術,共通的只是使用 .NET/C#,不過這個範例也示範了在這樣的情況下,如何製作共用的函式庫,可以同時讓 WPF 的應用程式以及 UWP 應用程式來使用(甚至下一篇要介紹的 Xamarin 也能共用)。


圖: 使用 WPF 開發的傳統桌面應用程式)


圖: 使用 UWP 開發的通用 Windows 應用程式

除了應用程式之外,從架構圖上也看到這兩種應用程式都是從同樣的資料服務來存取的,所以這裡我們也可以在範例中看到如何透過 Azure 行動應用程式服務製作資料服務 API 供應用程式存取。

資料存取服務

資料存取服務在範例中是 06_Demos_MobileApp.sln 這個專案,它是使用 Azure 行動應用程式服務來做成 API 服務供應用程式存取,雖然資料是由第一部份所介紹的診所管理人員使用 Web 所產生的,不過這個專案藉由 Azure 行動應用程式存取同一份資料庫(使用環境變數設定,或是修改 Web.config 檔案中的 MS_TableConnectionString 常數),然後只負責生成存取資料的 Web API 服務讓用戶端的應用程式來呼叫。

除了資料存取的 API 呼叫之外,這個範例也用 Azure 通知中樞(Notification Hub)來做各大平台的推播通知(push notification)的功能,所以只要設定好 iOS/Android/Windows 推播通知平台的憑證或密鑰,就可以輕易地在應用程式中發送或接收推播通知。

在 HealthClinic 這個範例的設定中,醫生用的應用程式可以發送推播訊息到病人的應用程式中。

掛號櫃臺使用的傳統桌面應用程式

打開 02_Demos_NativeMicrosoftApps.sln 專案,你會看到有三個專案:

  • MyHealth.Client.Core: 共通的 .NET 可攜式類別函式庫(portable class library),在這個範例中此專案負責資料存取的邏輯(也就是呼叫資料存取 API 服務的部份,不涉及應用程式 UI 的操作),而不論是用 WPF 還是 UWP 甚至是下一篇要介紹的 Xamarin 應用程式都可以將這個類別函式庫引入後使用。
  • MyHealth.Client.Desktop: 使用 WPF 框架所寫成的傳統桌面應用程式的專案。
  • MyHealth.Client.W10.UWP: 使用 UWP 寫成的應用程式,可以在 Windows 10 的桌機、平板或是手機上執行。

在建置 WPF 或 UWP 的應用程式之前,要先至 MyHealth.Client.Core 專案中修改 AppSettings.cs 檔案,最主要要將第一部份介紹 ASP.NET 寫成的 Web 它的 URL 位址設定至 ServerlUrl 變數,而上述的資料存取 API 服務的 URL 則是設定在 MobileAPIUrl 的變數上。

這個給診所中掛號櫃檯人員操作的桌面應用程式,功能就是在「查詢病人的掛號記錄」、「檢視病人的資料」、以及「預約新的掛號」,這些操作都是呼叫上述部署在 Azure 行動應用程式服務上的資料存取 API 服務,範例程式基本上就是 XAML + WPF 的功能展現,從 MVVM 模式的架構、自訂 XAML 控制項等等,算是不錯的學習 WPF 及 XAML 的範例。


圖:應用程式中檢視病人資料的畫面

病人使用的通用 Windows 應用程式

在整個 HealthClinic 範例中,設計給病人的有 Windows、Android 以及 iOS 三大平台的應用程式,其中 Android 以及 iOS 的應用程式會在下一部份介紹,Windows 的部份則是以 UWP 通用 Windows 平台的方式所設計的,簡單地說,就是一個應用程式能同時在 Windows 10 的桌機、筆電、平板、手機等裝置上安裝使用,這就是 UWP 想要達到的目標。

這個應用程式的作用除了讓病人可以檢視自己的掛號記錄之外,主要的資料讀取或是操作也都是引入了共通的函式庫來呼叫使用,而在這個應用程式中,也同時示範了如何用 Microsoft Graph 將資料與 Outlook.com 結合;若醫生有針對病人的照護有下醫囑或用藥方式都會在這個應用程式中呈現,甚至是提醒病人用藥時間,算是病患自主管理的應用程式,而程式中也加入了與 Microsoft Band 2 的結合,讀取手環中記錄的心跳以及睡眠資料。最後,若醫生使用他的應用程式(下一個部份會介紹)發送訊息給使用這個應用程式的病人,也會收到推播通知。


圖: UWP 應用程式的首頁,顯示了用藥時間、方式、以及掛號記錄等資訊

也由於這是一個 UWP 應用程式,所以當然也可以直接安裝到 Windows 10 Mobile 的手機上執行。與 WPF 應用程式相同,這個 UWP 專案沒有使用太多特殊的第三方函式庫,也是很紮實的 UWP 應用程式範例,而且您也可以從這個範例中看到它的 UI 設計是如何做到適應式設計(adaptive UI)。


圖:因為這個應用程式在 UI 設計上有考量到 Adaptive UI,所以在桌面環境執行時,寬度較低的 UI 顯示與手機上的 UI 相同,功能也完全相同。

參考資料

原始文章發佈於「開發者之魂」部落格

使用 Visual Studio GDB 擴充套件在 Visual Studio 上遠端偵錯 Linux 上的 C/C++ 程式

$
0
0

在 Linux 上開發 C/C++ 的應用程式,或許你會直接(本機或遠端)登入 Linux,打開編輯器寫完程式碼後,就用 gcc/g++ 來編譯程式,遇到要除錯(debug)的時候,則會選擇使用 gdb 來進行除錯。現在,如果你剛好也很喜歡 Visual Studio,你可以不必改變習慣,用 Visual Studio 寫程式、然後遠端送到 Linux 上編譯、甚至還能接上 gdb 來除錯。這個對於開發像是嵌入式系統、或是 IoT 裝置的程式等等就可以多多利用 Visual Studio 強大的 IDE 能力。


圖: 應該有不少在 Linux 上寫程式的開發人員是這麼工作的吧?

如何做?

首先,你必須使用 Visual Studio 2015,你可以使用免費版[1]的 Visual Studio 2015 Community 或是其它更高等級的版本,記得在安裝時要勾選 Visual C++ 以及 C++ 跨平台行動開發這兩個元件:


圖: 安裝 Visual C++

然後只要再安裝 Visual Studio GDB Debugger 這個擴充套件,就能夠在 Visual Studio 的 Visual C++ > 跨平台 的專案類型中選擇 Makefile Project (GDB) 的專案範本。


圖: 在 Visual Studio 中建立 Makefile Project (GDB)

建立專案後,啟始畫面就會有簡單的說明如何連接遠端的 GDB 來進行除錯,照著做應該就沒有什麼大問題了。會用到與 SSH 相關的工具可以到 PuTTY 的網站上下載相關的工具。


圖: 使用 VS GDB 擴充套件的教學

首先在專案上按右鍵選擇內容,設定偵錯的環境,像是遠端主機的位址、然後認證用的 pub/private key,還有連接的方式(ssh 或 plink)等等,這裡要注意的是連接伺服器是使用 RSA 的公私鑰的方式進行認證,所以你必須先產生一組 RSA 金鑰,然後在 Linux 主機上放好公鑰,然後這裡設定是用私鑰去驗證(圖中的 .ppk 檔案)。


圖: 設定遠端主機連線的資訊

然後就是設定在編譯程式時要如何把程式上傳到目標的 Linux 機器上,然後用機器上的 gcc/g++ 來進行編譯,切換到 NMake 的設定頁,設定建置指令:


圖: 設定如何將程式丟上遠端主機並且進行編譯

這裡我的設定值是:

d:\tools\pscp.exe -i $(PrivateKey) "D:\Temp\Project1\Project1\main.cpp" $(RemoteUserName)@$(RemoteHostName):$(RemoteWorkingDirectory)/main.cpp

$(SecureShellExecutable) $(RemoteUserName)@$(RemoteHostName) -i $(PrivateKey) "cd $(RemoteWorkingDirectory);g++ -g main.cpp -o $(RemoteExecutable)"

這裡我是用 pscp 把檔案傳上 Linux 主機上後,再呼叫 g++ 來進行編譯,其它的變數都是前面設定的值,你可以根據你的工具以及檔案所在位置做修改。

接下來你就可以開始撰寫程式了,然後就像在 Visual Studio 裡寫其它程式一樣設定中斷點,但是執行時選擇 Remote GDB 就可以開始進行遠端偵錯了。

>
圖: 啟動遠端主機的 gdb 來除錯,但結合 Visual Studio 的偵錯介面

看起來就好像都是在 Visual Studio 中的除錯畫面,但是這隻程式確實已經送上 Linux 主機進行編譯,並且使用 gdb 來進行偵錯了!

原始文章發佈於「開發者之魂」部落格

推升 R 成為支援企業端與雲端跨平台分析的企業標準

$
0
0

    不到一年前,我們決定買下 R,全球最廣為採用的統計運算與分析預測程式語言,在商用軟體與服務領域的領導廠商 Revolution Analytics 公司 ( 請參考:decided to acquire Revolution Analytics ),在那時候,我們就致力於將 R 及其劃時代的技術建構在我們廣大的產品線,包括資料庫、巨量資料分析、以及商業智慧中 ( 請參考:we committed to ),讓我們的客戶和學生,在企業端或是 Azure 雲端,以及新的平台都能夠使用到統計,分析,與預測的功能,形成競爭的優勢。

到目前為止,我們已經發佈了以下許多新功能,同時也更新了一些原有的功能,讓我們的客戶和夥伴也都能夠享受 R 的威力:

  • 在 2015 年 6 月,我們成為 R Consortium 的創始會員之一,宣告了我們對 R 專案的承諾。
  • 在 2015 年10 月,我們以 Revolution R Enterprise 技術為基礎,發佈了 SQL Server R Service 功能,這是 SQL Server 2016 CTP3 內建的功能,將先進的分析技術整合到 SQL Server 資料庫。
  • 在 2015 年11 月,我們開始支援本機安裝的 Power BI 使用者管理並檢視 R 處理的資料 ( 請參考:visualize and operationalize data in R )。

這次,有更多令人感到興奮的新功能要公佈,這些功能可以協助新的平台、程式開發者、或是 R 社群提供以 R 為基礎的分析技術,包括:

      在多種平台提供 Microsoft R Server,可以支援我們的企業客戶不管是否使用那一種版本的 Hadoop 版本 ( Hortonworks、Cloudera、或是 MapR),那一種版本的 Linux ( Red Hat 或是 SUSE ),或是 Teradata,都能夠只使用一種核心工具,標準化進階分析的作業。對 Windows 的使用者,Microsoft R Server 會內建在 SQL Server 2016 中,也就是 SQL Server R Service 服務 – 內建 Microsoft R Server 的 SQL Server 的售價會比兩者分開購買的價格更加優惠。但是在 SQL Server 2016 正式發佈前,Revolution R Enterprise for Windows 都能夠以獨立的方式進行採購。

      IDC 的商業分析和資訊管理部門的程式開發副總裁 Dan Vesset 說:” 進階的預測與分析必須發展新的開發與測試模型,但是也需要程式開發者的努力,才能夠創造出具自動化決策支援功能的產品,進而為整個企業提供有效的決策支援。透過 Microsoft 對 R 分析決策技術的承諾與支援,Microsoft 在導入分析模型,提供具生產力的工具與程式開發支援方面,扮演了很重要的角色,成功地降低了使用進階的預測分析技術的門檻”。

除了近期發佈的新功能以外,我們將會持續不斷地在我們的產品中提供最佳的整合服務,以及更創新的功能,包括:

加上這些我們將要釋出的功能,就是我們對企業、R 程式開發者、資料科學家提供大規模的進階分析預測平台,協助建立企業端與雲端分析預測功能的應用程式的高成本效益解決方案的承諾。

認識 Microsoft R Server

      Microsoft R Server 是一個以 R 為基礎,支援在不同環境佈署的企業級分析平台,提供以 R 為基礎、高延展性、以及高安全性的運算環境。為了支援各種巨量資料統計運算,預測模型,以及機器學習的能力,R Server 支援完整的分析技術 – 探索 (exploration),分析 (analysis),視覺呈現 (visualization),以及建立模型 (modeling)。Microsoft R Server 使用開放原始碼 R,並加以擴充,但是仍保有與 R script、函式、與 CRAN 套件完整的相容性,提供企業層級的資料分析功能。除此之外,Microsoft R Server 也運用平行運算技術與分段處理資料的技術解決了開放原始碼 R 在 in-memory 運算的限制,協助使用能夠順利地對資料量比電腦主記憶體更大的資料進行分析與預測。

Microsoft 在買下 Revolution Analytics 公司之後,投注了很多心力加入了許多新功能 (詳細資料可以參考:Microsoft R Server – What is New? ),並且在開發新功能的時候努力讓 Revolution Analytics 的產品更加安全,更加國際化,降低入門使用門檻,同時也很容易安裝。以最新發佈的版本為例,其功能包括:

  • R 語言 3.2.2 版
  • Microsoft 提供的企業級支援
  • 符合 Microsoft’s Security Development Cycle 軟體開發規範的企業層級安全性,包括威脅模型和攻擊層面分析,程式碼分析,以及延伸的模糊測試等等
  • 符合 Microsoft Accessibility Standards 規範的可用性
  • 支援中國政府 GB18030 編碼標準

使用 Hadoop 的客戶可使用 Microsoft R Server for Hadoop 在分散式的 Microsoft R Server 叢集建立和執行 R 模型,不需要放棄客戶原本喜好的R開發環境。Microsoft R Server for Hadoop 能夠自動將分析與預測的工作延展到 Hadoop 節點,不需要寫作複雜的程式碼。

        Hortonworks 公司的執行長 Rob Bearden 說:“ 在 Hortonworks,我們允許我們的客戶從動態的資料和靜態的資料建立具決策智慧的現代化資料分析應用程式。Microsoft’s R Server 和我們公司的 HDP 與 HDF 平台搭配之後可以提供一個以 R 語言為基礎的高延展性,企業層級的巨量資料與分析解決方案,作為數以百萬計的 R 程式開發者開發各種預測與分析應用程式的基石,分析來自網際網路數以 10 億計的各種資料來源,並轉換成有用的資料供企業參考”。

客戶可以利用 Microsoft R Server for Teradata 享受在 Teradata 提供的設備與資料庫中直接執行進階分析模型,對資料庫中的資料進行分析與預測的好處,不需要付出從資料庫取出欲分析的資料才能夠進行分析的代價。

        Teradata 公司 Product and Services Marketing 部門的副總裁 Chris Twogood 說:“ 我們非常高興 Microsoft 發佈了企業等級,具高延展性,以非常受歡迎的 R 語言為基礎的的巨量資料分析平台。 在 Microsoft 發佈了 Microsoft R Server for Teradata 之後,兩家公司共同的客戶就能夠在 Teradata 整合的資料倉儲設備,利用我們的硬體強大的威力和延展性執行進階的統計和預計分析運算。有了 Microsoft R Server for Teradata,我們的客戶能夠建立和佈署適用於零售業的應用程式,提供詐騙偵測,智慧型客戶關係管理,以及以 IoT 物聯網為基礎的預測維護等功能”。

我們提供的 Microsoft Data Science Virtual Machine 將會包含預先安裝,並設定妥當的 Microsoft R Server 開發者版本,支援 R 使用者能夠藉助於 Microsoft Azure 雲端平台,立即開始使用資料探索與建立模型等功能,不需要自行耗費精神和物力在企業端安裝和設定支援執行資料分析的環境。

認識 Microsoft R Open

      雖然 Revolution R Open 現在叫做 Microsoft R Open,但是 Microsoft 將會持續遵守自己的承諾,包括支援R開放原始碼專案,定期發表更新版,以及支援免費散佈 R 平台。Microsoft R Open 利用 Intel Math Kernel Libraries (MKL) 提供,適用於多執行緒處理器的最佳化運算,大幅地改良了 R 的執行效率,特別是矩陣相關的運算速度。除此之外,透過 Microsoft R Open 提供的簡化 R 套件版本管理功能,可以讓 R 使用者更容易地在 Microsoft Windows、Mac、以及 Linux 平台開發可靠的 R 解決方案。Microsoft R Open 百分之百相容於所有的 R script 和套件,而且和 R 一樣採取開放原始碼的形式,支援有需要的人免費下載,使用,和分享。

R 社群是 R 語言會成功的關鍵因素,也是資料科學家、統計學家、以及企業的重要資源。自從買下 Revolution acquisition 之後,Microsoft 持續支援 R 社群,包括擴展對 R 使用者社群和研討會的贊助,而且也增加了在R 開放原始碼專案的投資,提供 Microsoft R Open 和 DeployR Open (支援以 Web 服務的方式發行 R 的伺服器)的定期更新,提供包括檢查點 (checkpoint) 功能的新版本和更新版本的 R 套件,提供 R 套件的時間機器,支援在叢集執行 R 平行運算的 ParallelR,以及支援將 R 函式佈署到 Azure 雲端平台當做 API 的 Azure ML。除此之外,成為 R Consortium 創始成員之一就是 Microsoft 對支援 R Project 最明確的承諾。

        RStudio 公司的執行長 JJ Allaire 說:“ 身為 R Consortium 的成員,我們非常高興看到 Microsoft 加入支援 R 語言的行列,有像 Microsoft 這樣產品一流的公司在 R 的投資,R 語言已經準備妥跨足企業應用。我們期待能夠和 Microsoft 合作,提供容易佈署的環境、具商品品質的工具、以及基礎建設,為客戶創造成功的環境”。

對 Microsoft R Open 有興趣的讀者可以閱讀 R Community 社群領導 David Smith 發表的文章:the post。有意開始學習 Microsoft R Server 與 Microsoft R Open 的讀者可以到 upcoming webinar series 網站註冊參與以下的網路研討會。

January 28, 2016

Intro to Microsoft R Open

David Smith

February 4, 2016

Using Microsoft R Server to Address Scalability Issues in R

Derek Norton

February 11, 2016

Data Mining with Microsoft R Server

Derek Norton

February 18, 2016

Best Practices for using Microsoft R Server with Hadoop

Jamie Olson

February 25, 2016

Using Microsoft R Server to Operationalize your Analytics

Jamie Olson

 

 

 

 

 

 

 

  

 

學習參考資料連結

本文翻譯自:Making R the Enterprise Standard for Cross-Platform Analytics, Both On-Premises and in the Cloud

 

提醒您,社群之星『學新知拿好禮』活動進行中,快去搶禮物!想知道更多第一手消息,請鎖定 MSDN 台灣

Visual Studio Apache Cordova Apps 單元測試首部曲

$
0
0

這篇文章中您可以閱讀到以下資訊:

要做一個好的 App 就像是偉大的藝術家,演員和運動選手,都是場偉大的演出。人們透過大量的訓練、練習、演練以及實際的回饋檢討,不斷的驗證及持續改善他們的演出。在橫跨整個 App 生命週期裡,我們透過許多層次的嚴格測試,或持續驗證來實現軟體開發上相同的目標。

也許你聽過單元測試,但很可能你並不怎麼清楚明白單元測試實際上是什麼,以及該如何在跨平台的 Apache Cordova 專案上結合單元測試。在 Visual Studio Tools for Apache Cordova 文件內容裡,我們最近新增了一個章節,透過一系列全面性的例子來探討 Cordova apps 的單元測試細節。

在這二篇的文章裡,我會透過一個精簡版本的示範讓大家熟知整個過程。第一篇首先說明單元測試的本質以及一個使用 Visual Studio來進行的基本 Cordova apps 範例,第二篇將稍微深入一點有關測試驅動開發以及單元測試偵錯的主題。

 

單元測試其它形式的測試

 單元測試相較於其它形式測試的獨特點

單元測試

其它形式

直接呼叫或使用App的程式碼測試單位(類別、方法、屬性及方法)

透過使用者界面測試已部署在模擬器或測試設備上的 App

了解到App的程式碼是怎麼寫的(白箱測試)

無法了解到 App 的程式碼是怎麼寫的(黑箱測試)

測試是執行在開發及建置機器的測試執行器(例如一個獨立的JavaScript 執行環境,Node.js)

測試是在模擬器或實體設備上執行的

測試是自我的一部份程式碼 ( 通常是以相同語言撰寫的,例如JavaScript )

測試是腳本(手動撰寫或由錄製器產生)或者只是一組手動測試的步驟

發生於開發週期裡,同步撰寫程式碼甚至是早於開發階段 ( 測試驅動開發TDD )

發生在開發建置成功後

理想情況下是非常快速的,所以可以結合在每一次的建置過程中,有助於程式碼變更時進行回歸測試

是否有時效性 ( 取決於發行管理的過程 )

測試失敗時中止建置或是提交至版本管理

測試失敗是發行管理的流程中止步驟

下圖說明了多數的測試形式(左側)不同於單元測試 (右側),以及說明了單元測試通常獨立於應用程式平台之外。

 

注釋:當你著手於單元測試是完全專注於撰寫或修改程式碼。你不需測試函式庫或其它不是在專案裡正在修改的程式碼,因為這些函式開發者應該已經測試完它們。如果測試欠缺你所需要使用的函式庫,那麼正確的做法應該是在函式庫的原始碼來源進行,而不是在你的專案裡。

 

JavaScript 與 Apache Cordova 的單元測試環境

單元測試環境由三個組成項目:執行階段 (runtime),測試框架 (Test framework) 和測試執行器  (test runner)。以下列表說明了這些項目,並且有一些例子。

項目

說明

JavaScript例子

執行階段(runtime)

在App之外裝載並執行程式碼。它可以一個瀏覽器或是獨立的執行環境,有時被稱做為headless browser

Browsers, or Node.js, PhantomJS, Chrome V8

測試框架(Test framework)

定義如何撰寫具體的”測試”,通常是在同樣的程式語言裡被測試,這樣可以共享相同的執行階段(runtime),但這不是必需的。

Jasmine, QUnit, Mocha along with libraries like Chai and assert.js

測試執行器(test runner)

在所支援的執行階段(runtime)裡執行依測試框(Test framework)架定義的測試,並且產出測試報告。

Chutzpah (uses PhantomJS), Karma (uses a browser)

這些關係如下圖所示:

 

單元測試是在適當的時間點調用測試執行器 (test runner) 和查看報告,它可以透過手動進行或是在自動建置過程中的一部份,測試執行器 (test runner) 可以利用命令模式或是整合於 Visual Studio IDE。

一些測試執行器 (test runner),例如 Chutzpah,有整合 Visual Studio 測試橋接器工具,反應在 Visual Studio 測試總管介面裡。其它測試執行器 (test runner),例如 Karma,沒有測試橋接器但它仍然可以整合到 Visual Studio 的工作執行器總管 (Task Runner Explorer),關連到像是 Grunt 及 gulp 。這二種方式都含蓋在文件裡,針對 Karma 及 gulp,請查閱 Basic unit testing  及 Test Apache Cordova apps with Karma and Jasmine

 

動手做單元測試

為了更好理解單元測試的機制,讓我們現在用一段程式碼,透過 Chutzpah,QUnit (jQuery的 unit test framework),以及 Visual Studio 來進行基本的單元測試過程。

 

unit”

首先,假設你已經安裝了 Visual Studio Tools for Apache Cordova,然後透過"檔案 > 新增 >專案 > 選擇 JavaScript >Apache Cordova Apps > 空白應用程式"。然後在 www/scripts 資料夾建立一個叫做 normalize.js 的 JavaScript 檔案,並且輸入以下的程式碼。 

/** @description Converts JSON data that may contain Name and PersonalIdentifier
 *    properties to an object with the properties name (string) and id (positive
 *    integer up to 9999999999.
 * @param {string} jsonIn The JSON data to normalize.
 * @return {object} An object with name (string) and id (integer) properties,
 *    defaulting to "default" and 0, or null if the JSON is null or invalid.
 */
function normalizeData(jsonIn) {
}

 這個簡單的 normalizeData 函式是我們要測試的單元 (unit),現在我們先讓它保持空白。請注意到這個函式是 App 的一個函式,它跟我們所選擇的測試框架 (test framework) 及測試執行器 (test runner) 無關。

 

單元測試

接下來,每個單元測試都是一段驗證單元的程式碼,透過:

  1. 給與特定的輸入值然後呼叫,接著
  2. 確認期望值的輸出

單元測試必須遵循你所使用的測試框架 (test framework)。因為我們正在測試 JavaScript 程式碼,我們有眾多容易使用的 JavaScript  測試框架可以選擇。在這個例子中,我們將要使用 Jasmine ,它內建支援我們待會要使用的 Chutzpah 測試執行器 (test runner),所以我們不需要額外為 Jasmine 安裝其它特別的東西。

針對單元測試,在專案內建立一個資料夾並命名為 Test,然後在這個資料夾內建立一個 normalize_tests.js 的 JavaScript 檔案,並且輸入以下內容:

// First argument to "describe" is the name of this group of tests
describe("normalizeData tests", function () {
    // First argument to "it" is the name of the specific test
    it("accepts golden path data", function () {
        // Use the unit being tested as necessary
        var json = '{"Name": "Maria", "PersonalIdentifier": 2111858}';
        var norm = normalizeData(json);

        // Check the results; "expect" is a Jasmine method.
        expect(norm.name).toEqual("Maria");
        expect(norm.id).toEqual(2111858);
    });
});

在 Jasmine 裡,你建立了一組測試在 describe 方法裡,然後每一個測試在it函式裡,最後形成描繪出這個整個測試。使用單元測試程式碼針對任何你想要的測試,然後使用 Jasmine 的 expect 方法確認結果,最終輸出 pass 或 fail 。

這裡我們只是一個簡單的測試,但請注意它是很明確具體,有特定的輸入呼叫,並且針對輸入給定了確切的名稱/描述。這遵循了最佳原則,每個測試針對一個測試案例,測試的名稱建立成 1:1 的對應,因為這個名稱會呈現在報告上,以及精確的測試案例(意謂:測試使用的參數)。當測試執行器 (test runner) 報告失敗時,你可以確切的知道到哪裡查看你的程式碼,然後很輕易透過在除錯器的測試到達失敗點。這最終會節省你的時間,因為假如你合併多個的測試,當你必須偵錯哪裡失敗時,你很有可能最後會解析所有測試。

 

 測試行器 (test runner)

有了單元程式碼以及至少一個單元測試,現在我們可以執行 Chutzpah 測試執行器 (test runner)。先到 Visual Studio 裡的"工具>擴充功能和更新….",選擇線上,搜尋及安裝"Chutzpah Test Adapter"(你會被提示重新啟動 Visual Studio)

 

在專案根目錄下建立 Chutzpah.json 檔案,然後輸入以下內容,告訴 Chutzpah 它應該執行的檔案。

{
  "References": [
    { "Path": "www/scripts/js/normalize.js" }
  ],

  "Tests": [
      { "Path": "test/normalize_tests.js" }
  ]
}

“References” 區段用來明確指定要測試的程式碼,然後“Tests”區段指定單元測試檔案。當你加入愈多程式碼及測試檔案時,這個列表清單就會愈多。

現在選擇"測試> >測試總管"然後你應該會看到列出可用的測試清單 “References”  區段用來明確指定要測試的程式碼,然後 “Tests” 區段指定單元測試檔案。當你加入愈多程式碼及測試檔案時,這個列表清單就會愈多。

 

注意:如果沒有任何清單,那很有可能是你的測試檔案有語法上的錯誤,而造成 Chutzpah 無法辨示。

點選全部,開始建置專案,執行測試,並查看結果。因為我們在 normalizeData 裡沒有任何實作,所以測試應該會失敗:

這證實了你具有可以在 Visual Studio 裡使用 Chutzpah 的機制。

如果你想要通過測試,實作 normalizeData,至少處理預期的輸入,然後再次執行測試:

function normalizeData(jsonIn) {
    data = JSON.parse(jsonIn);
    return {
        name: data.Name,
        id: Number(data.PersonalIdentifier)
    };
}

當然這個程式碼無法完美的處理其它 JSON,所以肯定是有改善的空間!我們將會在第二篇來談論有關於測試驅動開發 (test-driven development) 以及單元測試除錯。

在此同時,我希望聽聽你是如何在 Cordova apps 進行單元測試,你是如何進行 UI 測試(手動及自動),以及我們可以如何進一步提升我們的支援透過 Visual Studio Tools for Apache Cordova。透過 kraigb (at) microsoft.com留言給我,或是到 http://visualstudio.uservoice.com/. 提出建議。當然這個程式碼無法完美的處理其它 JSON,所以肯定是有改善的空間!我們將會在第二篇來談論有關於測試驅動開發 (test-driven development) 以及單元測試除錯。

本文翻譯自 Unit Testing Apache Cordova Apps with Visual Studio, Part 1

[延伸閱讀 – 影片教學] 

使用 Visual Studio 2015 TACO 建置 Windows 10 應用程式

Visual Studio 2015 tools for Apache Cordova Build apps for Windows 10

MSDN 論壇精選 (01/18 – 02/16)

$
0
0

        MSDN 論壇  是一個可以讓開發人員自由提出問題、尋找資訊的好地方,歡迎大家多多利用,與社群中的同好們一同分享 Microsoft 技術資訊。

而我們會不定期整理論壇精選給大家,希望對您的學習有所幫助!以下為 2016 01/18 – 2016 02/16  的論壇精選,大家在閱讀時有疑問也可以直接加入論壇中討論喔。

現在只要到微軟社群之星學院問問題,就有機會月月抽好禮,參加請點這裡,我們更提供不收費線上課程 Channel 9 讓您尋求更多知識。

日期 主題
1/18 同時使用 Master Page 與 Inculde File 
1/25 ConnectionTimeout 如何宣告使用
1/26 MVC 5 的 view 如何更精簡
1/26 無法安裝 Visual Studio Community 2015
1/27 如何調整 C# Web Form 中的呈現方式
1/29 DataTable 弱型別轉強型別的做法
1/29 Microsoft Ole DB Provider for Foxpro 註冊
2/01 如何自動依日期區間 抓出相關資料
2/02 關於將 jquery 放入自訂伺服器控制項的問題 
2/02 使用類別庫建立 Web 應用程式專案的問題
2/03 Azure VM 無法刪除
2/04 Azure VM 架設 FTP 相關問題
2/05 SQL Server 如何取得實際小數點位數有幾位
2/13 SQL Sexpress 2014 定序修改問題
2/16 如何在 Azure 上 debug Web App

 【論壇延伸】針對論壇熱門問題Channel9 不收費教學平台提供眾多技術課程,歡迎參考。

如何在 Azure VM 建立 FTP

 

 C# 6.0 的新功能

 

 

 

服務都關閉了,怎麼還會有費用?


Hands On Lab – Azure 網站服務建立

Learn Once, Write Anywhere –在 Visual Studio Code 開發 ReactNative 應用程式

$
0
0

ReactNative 讓您使用 JavaScript 建置 iOS 與 Android 原生或跨平台應用程式。我們最近剛剛宣布 Visual Studio Code Extension 的釋出,讓您能夠建置、偵錯以及預覽 Apache Cordova 應用程式。今天我們很開心的宣布一個類似的好東西, ReactNative的 VS Code擴充元件!

 

ReactNative vs. Apache Cordova

 大多數的你們可能都已經熟悉 Apache Cordova 是一個開源專案讓網頁開發人員能夠透過完整原生的 APIs 以及線下支援建置行動應用程式。

在 Cordova 應用程式中,整個 UI 執行是在一個全屏的 WebView 中,你可以使用和網站開發上相同的 HTML、CSS 以及 JS 框架。但由於 UI 是渲染在 WebView 中,要實現真正的原生樣貌與體驗著實困難。

ReactNative 應用程式同樣是撰寫 JavaScript – 或者,更具體來說是使用 React/JSX 開發框架,程式碼執行在綑綁著應用程式的 JavaScript 引擎上,而非如同 Cordova 執行在 WebView 中。ReactNative 是透過 JavaScript 使用原生 UI 元件 (例如: iOS 中的 UITabBar 和 Android 中的 Drawer),這代表妳可以創造原生的使用體驗,這是 Cordova 所無法達成的。

這樣說好了,Apache Cordova 是現在較成熟且穩定的技術讓您使用網頁技術撰寫一個共用的 UI Layer ,然而 ReactNative 較新且仍然需要撰寫不同的 UI Layer。因此如果妳的應用程式需要原生 UI 以及您特別興奮於快速進化的 JavaScript 平台,那 ReactNative 就會是您考慮的選擇之一。

 

點亮您的 ReactNative 開發體驗

為了點亮您的開發體驗,我們問 ReactNative 開發人員是什麼讓他們更有生產力,他們給了我們豐富的靈感,所以我們加了許多用戶導向的功能在 Visual Studio Code 中。

• 語法高亮顯示以及自動補齊JavaScript 陳述式 (Statement) 與來源檔案中的 JSX 片段。 

 Syntax highlighting and autocomplete for ReactNative in Visual Studio Code

• 命令式指令,部署和偵錯應用程式在模擬器以及裝置上,不用離開編輯器本身。

 Command to deploy and debug app without leaving the editor 

• 設定中斷點功能與完整的偵錯工具系列一應俱全,像是監看變數名稱以及檢查呼叫堆疊。

 Setting breakpoints and debugging

以上功能不需要任何修改,都可以成功在您既有的 ReactNative 專案上實現!

 

如何取得?

很簡單! 首先,如果您尚未下載或者安裝 Visual Studio Code 請到 http://code.visualstudio.com。它小於 50 MB、完全免費,可執行在 Mac OS X、Linux 和 Windows 上,在正常網路下不到 2 分鐘即可安裝完成。接著到 Visual Studio Code 市集 下載 ReactNative 擴充元件。您也可以透過編輯器,在執行指令面板 (Mac 上按Cmd+P、Windows 按 Ctrl+P),輸入 “ext install reactnative”,點擊 Enter。此擴充元件不僅開源並可透過 GitHub 取得,我們會喜愛您的貢獻讓它更好! 您可以新增 issue 或者給我們一個 pull request 包含您需要的超棒功能。

有興趣實踐超棒的 DevOps 方法在 ReactNative 應用程式? 快看看我們的文章 post on using VSTS, HockeyApp, and CodePush with React Native

 

未來有什麼?

我們團隊持續努力交付更棒的開發工具,也很希望聽到您的聲音!無論你遇到任何問題,有很棒的意見或想法和 ReactNative 有關,我們都會認真聆聽。您可以加入 內線計畫 或者在 reactiflux discord 伺服器 (搜尋 “lostintangent” 或 “axemclion”),通常會在 #code-push 頻道裡找到我們。我們非常期待您的消息!

如同前面提及,我們團隊仍會持續投入在 Apache Cordova 以及其擴充元件。我們也希望解決您的問題或者一起討論您對 Cordova 的很棒想法!

本文翻譯自Develop ReactNative apps in Visual Studio Code

使用網頁技術

從現代化診所的例子看微軟的開發及雲端技術: (4) 跨平台開發 Android 以及 iOS 應用程式:使用 Xamarin 或 Apache Cordova 技術

$
0
0

此為系列文章,系統架構以及應用簡介請參考第一部份

系統架構

整個 HealthClinic.biz 的設計架構如圖所示:

整個系統後端由 ASP.NET Core 技術處理 Web 以及資料庫的操作,並且部署至 Microsoft Azure 雲端平台;而各個 client 端應用程式搭配不同的使用情境,但都是呼叫系統後端提供的 API 來存取資料。

目錄

這系列會分成 5 個部份來介紹這個範例所展示出來的開發技術

  1. ASP.NET Core 跨平台的 Web 開發及運行技術
  2. 從 Node 應用程式看 TypeScript 以及 Visual Studio 與現代開發工具的整合
  3. 使用 .NET 技術開發原生應用程式:傳統桌面應用程式、Universal Windows Apps
  4. 跨平台開發 Android 以及 iOS 應用程式:使用 Xamarin 或 Apache Cordova 技術
  5. 資料處理應用程式

專案角色

在第三部份的文章中,我們介紹了這個範例專案使用通用 Windows 應用程式(UWP app)來製作病患使用的應用程式,但是這個診所的病患不可能只用 Windows 裝置,所以也要想辦法開發適用於 Android 以及 iOS 的應用程式,而為了讓這個為病患使用情境所設計的程式碼能重複運用,通用 Windows 應用程式是用 .NET 開發的,所以在這個範例中選用 Xamarin 技術,簡單地說,使用 Xamarin 技術可以用 .NET/C# 來撰寫應用程式並且編譯成 Android 或是 iOS 的應用程式,如此一來,就能夠把病患使用應用程式的程式邏輯(不包含使用者介面)設計成共用的 .NET 函式庫,共用在三個平台的應用程式中。

值得一提的是,Microsoft 前幾天確認收購 Xamarin 公司,未來可望有更深入的整合。


圖:Xamain 技術架構

像這樣跨平台應用程式開發,在這個範例中也有另外一種情境使用另外一個技術來做示範,那就是醫生所使用的應用程式(架構圖中的左下角)。在這個範例中是使用 Apache Cordova 的技術,讓開發人員可以一次就用 JavaScript/HTML5 寫出用於 Windows/iOS/Android 的應用程式,而有別於 Xamarin 的部份,除了使用的程式語言不同之外,用 Xamarin 開發 Android 及 iOS 的專案是分開且獨立的,而 Apache Cordova 則是一個專案根據需要建置出不同平台的應用程式。所以如果想要進行跨平台開發的規劃,可以評估開發團隊是對於 C#/.NET 的掌握度高還是比較熟悉 JavaScript/HTML5 的技術,以此來決定要選擇 Xamarin 還是 Apache Cordova。


圖: Apache Cordova 的技術架構

使用 Xamarin 開發的病患應用程式

在 HealthClinic.biz 的專案目錄中開啟 04_Demos_NativeXamarinApps.sln 就可以開啟這個範例中用 Xamarin 開發的相關專案,您可以看到:

  • MyHealth.Client.Core: 在第三部份介紹過,這個專案是使用 .NET 撰寫的可攜式類別函式庫(portable class library),這個可攜式類別函式庫除了能讓 Windows 應用程式使用之外,因為 Xamarin 的技術也是基於 .NET,所以也能使用這個函式庫。
  • MyHealth.Client.Droid: 使用 Xamarin 技術所開發的原生 Anroid 應用程式,雖然是用 C#/.NET 寫的程式碼,但 Xamarin 的技術就會將它編譯成 Android 原生的程式碼,所以跟直接使用 Android SDK 開發出來的應用程式是相同的,當然也可以部署至您原本(如果有的話)的 Android 環境。
  • MyHealth.Client.iOS: 使用 Xamarin 技術所開發的原生 iOS 應用程式,不過與 Xamarin 處理 Android 應用程式的方式略有不同 —— 在建置 iOS 應用程式時需要運用一台 Mac 電腦來協助編譯建置的工作,您可以在 Visual Studio 中寫程式,或是在程式執行起來時在 Visual Studio 中除錯,但就是在編譯時,需要透過網路連接到另外一台 Mac 電腦來完成編譯與建置。
  • MyHealth.Client.iOSWatchKitApp, MyHealth.Client.iOSWatchKitExtension: 使用 Xamarin 技術所開發的 iOS 手錶應用程式,同上。

從專案的結構便可以看出使用 Xamarin 技術 1) 可以共用 .NET 的可攜式類別函式庫  2) Android 與 iOS 是不同的專案


圖:在 Visual Studio 中使用 C# 寫 Android 應用程式,並且用 Visual Studio Emulator for Android 來測試

使用 Apache Cordova 開發的醫生應用程式

Apache Cordova 是一個開源專案,是從 PhoneGap 專案演化而來的,而 Microsoft 的角色就是在 Visual Studio 中整合 Apache Cordova 專案的相關建置、安裝 plugin 等工作,甚至也將這些整合的技術衍生出另一個開源專案:TACO(Tools for Apache Cordova),透過這個專案,即使是從 Visual Studio 中建立的 Apache Cordova 專案,拿到 Mac OSX 下使用 TACO 工具一樣可以繼續工作。而與 Xamarin.iOS 相似,在建置成 iOS 應用程式時也需要將專案傳到 Mac 上建置(如果本來就是在 Mac 上開發的話就直接建置了),這個遠端編譯的技術也是由 TACO 來處理的。

 
圖: 使用 Apache Cordova 技術所開發的 Android 應用程式,在 Visual Studio Emulator for Android 上進行測試

而在第二部份中也介紹過 Visual Studio 大量整合現代的前端開發工具,在這個醫生的應用程式中也用了 TypeScript 以及 Angular JS 來開發應用程式的介面,當然也運用了不少前端工具來管理套件以及執行相關打包的工作。


圖:在 Mac 上用 TACO 編譯並執行 Apache Cordova 開發出來的 iOS 應用程式

更多 Xamarin 與 Apache Cordova 專案的展示,可以參考我在 mini Connect() 中的影片(53 分 36 秒開始)。 

原始文章發佈於「開發者之魂」部落格


Windows10 IoT Core 之 Node.js 的最新進展

$
0
0

在最近幾年中,物聯網(IoT)為技術愛好者狂熱的新趨勢之一,在未來幾年,它轉變為企業和終端用戶最著迷的技術。由於 Windows10 IoT Core 有支援 Raspberry Pi2MinnowBoard Max 和 DragonBoard 等目前較流行的板子,而且 Node.js 在物聯網和創客社群裡持續出現許多令人驚奇的事物,所以,我們在去年發布了 Node.js support for Windows 10 IoT Core,並且持續積極地對於新的應用情境做更新

Node.js 對 Windows10 IoT Core 的支援來到了一個重要的新里程碑。Chakra 小組將開放程式碼的 ChakraCore JavaScript 引擎,在 GitHub 發出了 Pull Request (PR) to mainline Node.js 的請求。一旦該請求被接受後,這個 PR 將協助我們完成以下兩個目標,讓我們能在 Node.js 上迅速發展。首先,讓程式碼在社群回饋的基礎上開發;第二,在 Windows10 IoT Core 上更快速地為開發者帶來新事物。在部落格裡有我們開發藍圖的詳細資訊,Chakra 團隊將持續與社群和 Node.js 基金會緊密合作,以提升模組相容性和評估 Node.js 效能。

針對 Node.js 對 Windows10IoT Core 的支援,我們九月份做了更新,使得它更容易入門,並提升了一些關鍵的物聯網 npm 模組的相容性。在保持最新版 Node.js 與吸取社群回饋之下,這個計畫將持續進行。這次,我們發布了 Node.js Tools for Windows IoT 1.5 的更新版本,下面是這個新版本的要點。

主控台應用程式

目前在 Windows10 IoT 上開發 Node.js,大多數還是為主控台應用程式模式。基於 Node.js 的熟悉體驗,開發人員習慣使用他們喜愛的各種平台的編輯器和命令提示字元來工作。Windows10 IoT Core 從一開始就支援這樣的應用程式模式,允許 Node.js 與 Chakra 一起使用,並且用 PowerShellSSH 或 SMB file transfer 手動部署其指令碼 (script) 到設備上。而在 Node.js with ChakraCore 更新到 1.5 版時,這方面的使用體驗將會延續。 ChakraCore 將開放原始碼來開發,更新預計會更快,並能在 Windows 7 和之後的 Windows OS 版本上執行。Node.js with ChakraCore 將與 Node.js 大師和 Node.js V6.0.0 的開發者密切合作,目前可以在 Node.js with ChakraCore 下載獨立安裝程式來開始嘗試使用。你可以套用一些我們放在網站的主控台應用程式範例,如 MemoryStatus 和 Using Cylon

通用 Windows 平台(UWP) 應用程式

Windows10 IoT Core 的 Node.js 開發者也可以感受到在通用 Windows 平台(UWP)模式使用 Node.js 的好處,這個應用程式模式為 Windows10 生態系統的中心,讓開發者能通用的應用於整個 Windows10 系列的設備。Chakra JavaScript engine 將強化 Node.js 所建置的 UWP 應用程式,而且 Node.js Tools for Windows IoT V1.5 將安裝 Node.js 所有相關的工具和產生 UWP 應用程式所需要的 binary 檔案,這個選項提供了熟悉的Visual Studio 使用體驗。最近的版本有更好的偵錯支援和更多的範本,以幫助開發人員容易入門,而且 Node.js 支援最新的穩定版本。它需要安裝 Visual Studio 2015 Update 1,以下是其主要提升要項:

VS1.1 對於 Node.js 工具的支援

對於 NPM V3、程式碼片段,NTVS 最新版本帶來更可靠的偵錯和 IntelliSense,並且在穩定度和效能皆有所提升。

支援 Node v5.4.1

我們總是想成為 Node.js 的先鋒,最近的 Node.js Tools for Windows IoT 支援最新的 V5.4.1 穩定版本。

內建 Johnny-Five Template

Johnny-Five,一個廣受歡迎的 JavaScript 機器人技術和物聯網程式設計框架,對 Windows 10 IoT Core 有很好的支援;為了使 Johnny-Five 更容易入門,這個版本中,內建有 Johnny-Five 的 UWP Template。

Candy Robot

我們的目標是在 Windows10 IoT Core 上持續提升和提供良好的 Node.js 支援。在推出 ChakraCore 時,我們記錄了 Node.js 與 ChakraCore 主控台應用程式執行在安裝了 Windows10 IoT Core 的 Raspberry Pi2 上的展示。我們稱它為 “ Candy Robot ”。這個展示使用了 100 個以上相關的 npm 模組,包括 cylon、SerialPort、firmata 和 express(也有一個取代 cylon 的 Johnny-Five 版本,在我們的 repo),這只是為了說明我們對模組支援的廣度。

Candy Robot 上有一個光感測器。當機器人移動時,它會上傳指定點的光強度資料到伺服器。伺服器提供一個介面,用來查看平均亮度資料和探索時間。它進一步顯示 Time-Travel debugging 的早期預覽功能,我們會繼續研究和分享更多關於它的發展。

如果你想在這上面自由發揮,並且加入一些更有趣的感測器和功能,這裡有詳細的逐步教學

相關影片參考請點這裡

如何入門?

要創造一些有趣的事情嗎?使用 Node.js Tools for Windows IoT 來入門,這裡有建立 UWP 應用程式和 Node.js with ChakraCore 主控制台應用程式的教學。Docs and Samples 網頁提供一些詳細教學和程式碼的範例,讓你可以好好的玩一下。

歡迎利用以下教學影片,踏出 IoT 第一步

本文翻譯自:Advancing Node.js for Windows 10 IoT Core

提醒您,社群之星『學新知拿好禮』活動進行中,快去搶禮物!想知道更多第一手消息,請鎖定 MSDN 台灣

Visual Studio Apache Cordova Apps 單元測試二部曲

$
0
0

這篇文章中您可以閱讀到以下資訊:

這系列文章的第一篇使用 Visual Studio 撰寫 Apache Cordova app,透過一個基本範例說明了單元測試的本質。在這篇文章中,我們將以測試驅動開發 (test-driven development) 的過程,針對範例程式進行許多改善,這會有助於幫助你解析思考如何挑戰一個單元程式碼從失敗到成功的過程。我們也會討論一點點關於單元測試偵錯。

同樣的這二個部份都是我們最近新增到 Visual Studio Tools for Apache Cordova 文件, Author & run tests 章節中的精簡版本。

 

測試驅動開發 Test-driven development

很明顯的它是一個空的測試 (過於簡化),normalizeData 的實作是遠遠不足的。一個健全的 normalizeData 需要處理各種會引發像是 JSON.parse 函式或屬性失敗的不良  JSON 。當然我們需要測試所有我們能想的到各種變化資料。

問題是,從哪裡開始?撰寫程式碼,撰寫測試,或是來回二者之間?你可能做了很多後者,在 normalizeData 裡寫了一些很好的程式碼,然後寫了一些測試,測驗失敗情況下,然後寫更多的程式碼,寫更多那些你還沒有涵蓋到的測試,再次修改程式碼等等….。儘管這是可控制的,它促使你來回思考程式碼及資料,並試著讓程式碼在正常運作以及想辦法讓它失敗間來回轉變。這確實是二種不同的思考過程。

這是測試驅動開發方式所顯示出的價值。充分的執行任何一段單元程式碼,最終你必須考慮所有必要輸入值的變化。測試驅動開發進行這種前置思考,是非常有效的,因為一旦你想到一些測試案例,你可以很快的連想到其它的。例如,如果你想到 JSON 裡包含一個物件,你會很自然的認為包括陣列。假如你想到包括一個整數,而單元程式碼可能預期是一個字串,它自然也就預期是一個整數的字串。

normalizeData 函式,我發現它可能是花了15分鐘思考一套完整的不同輸入值測試,來驗證 JSON.parse ,驗證 JSON 結構假設,以及驗證有關資料型別的假設。這裡有份清單:

'{"Name": "Maria", "PersonalIdentifier": 2111858}'
null
''
'blahblahblah'
'{{}'
'{{[]}}}'
'document.location="malware.site.com"'
'drop database users'
'{"Name": "Maria"}'
'{"PersonalIdentifier": 2111858}'
'{}'
'{"name": "Maria", "personalIdentifier": 2111858}'
'{"nm": "Maria", "pid": 2111858}'
'{"Name": "Maria", "PersonalIdentifier": 2111858, "Other1": 123, "Other2": "foobar"}'
'{"Name": "Maria", "PersonalIdentifier": "2111858"}'
'{"Name": "Maria", "PersonalIdentifier": -1}'
'{"Name": "Maria", "PersonalIdentifier": 123456789123456789123456789123456789}'
'{"Name": , "PersonalIdentifier": 2111858}'
'{"Name": 12345, "PersonalIdentifier": 2111858}'
'{"Name": {"First": "Maria"}, "PersonalIdentifier": 2111858}'
'{"Name": "Maria", "PersonalIdentifier": {"id": 2111858}}'
'{"Name": {"First": "Maria"}, "PersonalIdentifier": {"id": 2111858}}'
'{"Name": ["Maria"], "PersonalIdentifier": 2111858}'
'{"Name": "Maria", "PersonalIdentifier": [2111858]}'
'{"Name": ["Maria"], "PersonalIdentifier": [2111858]}'
'{"Name": "Maria", "PersonalIdentifier": "002111858"}'
'{"Name": "Maria", "PersonalIdentifier": 002111858}'

同樣的,一旦你開始思索關於輸入值的變化,測試案例自然會一個一個被引導出來。然後一旦你制定完成 JSON 變化形成一個單元測試,本實上你已經建立一個可重覆使用於其它任何需要用到 JSON 的專案測試資源了。

隨著手邊的輸入值清單,接著現在是件簡單的事,在每一組輸入的必要測試結構上,重覆的複製及貼上,例如:

it('accepts golden path data', function () {
    var json = '{"Name": "Maria", "PersonalIdentifier": 2111858}';
    var norm = normalizeData(json);
    expect(norm.name).toEqual("Maria");
    expect(norm.id).toEqual(2111858);
});

it ('rejects non-JSON string', function () {
    var json = 'blahblahblah';
    var norm = normalizeData(json);
    expect(norm).toEqual(null);
 });

it('accepts PersonalIdentifier only, name defaults', function () {
    var json = '{"PersonalIdentifier": 2111858}';
    var norm = normalizeData(json);
    expect(norm.name).toEqual("default"); //Default
    expect(norm.id).toEqual(2111858);
});

it('ignores extra fields', function () {
    var json = '{"Name": "Maria", "PersonalIdentifier": 2111858, "Other1": 123, "Other2": "foobar"}';
    var norm = normalizeData(json);
    expect(norm.name).toEqual("Maria");
    expect(norm.id).toEqual(2111858);
});

it('truncates excessively long Name', function () {
    //Create a string longer than 255 characters
    var name = "";
    for (var i = 0; i < 30; i++) {
        name += "aaaaaaaaaa" + i;
    }

    var json = '{"Name": "' + name + '", "PersonalIdentifier": 2111858}';
    var norm = normalizeData(json);
    equal(norm.Name).toEqual(name.substring(0, 255));
    equal(norm.Name.length).toEqual(255);
    expect(norm.id).toEqual(2111858);
});

it('rejects object Name and PersonalIdentifier', function () {
    var json = '{"Name": {"First": "Maria"}, "PersonalIdentifier": {"id": 2111858}}';
    var norm = normalizeData(json);
    expect(norm).toEqual(null);
});

注意測試的名稱(it函式的第一個參數),它會呈現在 UI 裡,例如測試總管,所以它應該要能辨示出是測試什麼以及測試的基本性質 (例如, “rejects”或“accepts”) 。此外,當然它可以把輸入及預期結果放到一個集合陣列,來取代逐一撰寫每個測試。目前在這裡所呈現的樣子。

這裡的重點是,首先花 30 分鐘專注於進行輸入值的變化,然後裝載到單元測試裡,你是完全無拘束的專注在撰寫程式碼,不需要去懷疑(或擔心!)是否已經真的處理了所有可能的輸入。

事實上,如果你針對像 normalizeData 這樣尚未實作的函式,進行全部的測試,很明顯大部份的結果都會是失敗的。但是這只是表示那些結果失敗的測試是你必須在程式碼裡的待處理事項,反應出實際上還沒有被妥善處理的輸入情況。增加更多的實作程式碼,然後通過更多的測試。當這個函式可以通過所有的測試時,你就可以完全信任它可以處理所有應該被處理的情況。針對整個完整的示範演練,包含完成 normalizeData 實作,請參閱 Improving the unit tests: an introduction to test-driven development 文件。

測試驅動開發 (Test-driven development) ,簡單來說,就是明確的針對這些輸入的情況,分別撰寫程式碼來處理它們。最後,如果你真的想做好你的程式碼測試工作,你就必須拆解這些任務。在這個前題之下,測試驅動開發 (Test-driven development) 可以在開發初期階段就建立更強壯健全的程式碼,整體來看是可以降低成本的。

 

偵錯測試及行期變數值

先前的單元測試揭漏了一個 bug 。你有看出是哪一個嗎?我以為已經寫完了 normalizeData 函式的實作,包含處理"截斷過長的名稱 (truncates excessively long Name)"的測試案例,但這個案例還是失敗了,我無法立即看出問題所在。

幸運的是, Visual Studio 提供你可以單元測試偵錯的能力,就像其它類型的程式碼一樣,設置中斷點,檢查變數值,然後逐步遍歷測試程式碼。測試程式碼仍然還是程式碼,只是出現 bugs !

無論如何,在 Visual Studio 編輯器設置中斷點是不夠的。透過測試總管執行測試無法掛起那些中斷點,因為像 Chutzpah 這類的測試執行器 (test runner) 是在獨立的  PhantomJS 程序中去載入 JavaScript 並執行的,但是 Visual Studio IDE 沒有辦法關聯這些引擎進行偵錯。

你必須進入"測試>偵錯>執行 ",在這裡你可以看有 "選取的測試 " "所有測試 "選項。你也可以在失敗的測試上按右鍵,然後選擇偵錯所選擇的測試。這些命令可以驅使測試執行器 (test runner) 在瀏覽器中執行 JavaScrip t程式碼, Visual Studio 就可以捕抓到偵錯器。測試框架 (test framework) 的報告也會顯示在瀏覽器。

提醒!在"]測試>偵錯>所有測試 "以及"測試總管>全部執行 "命令,會自動儲存你在專案裡所做的任何程式碼變更。但是,執行個別測試的命令,是不會儲存變更的,這可能會造成預期應改變卻沒有生效的困惑。所以執行個別測試前先確認已經儲存程式碼變更。

在偵錯器 (debugger),我看到我的單元測試錯誤引用了norm.Name 而不是 norm.name :

 

修正這個問題之後,我剩一個測試還未通過,它是測試在 JSON 裡帶有 0 開頭的整數值。我不知道為何它是失敗的,因此我啟用偵錯器 (debugger) 對它進行偵錯。但是在偵錯器 (debugger) ,它通過了測試!這是怎麼一回事?

原來,我發現到 JSON.parse在PhantomJS 與 Internet Explorer 的執行環境,在實作上有些微不同,在偵錯器 (debugger) 以外的 PhantomJS 執行環境運作時針對 0 開頭的會引發例外,而在偵錯器 (debugger) 內部採用 Internet Explorer 執行環境進行則不會引發例外。詳細原因請參閱 Debugging unit tests 文件。

最重要值得注意的是,你也許會發現在單元測試所使用的環境與 App 真正執行所使用的環境,執行時有些許的差異。正因為如此,所以好的建議是偶爾在所有行動平台上執行你的單元測試。要做到這一點,在你的 App 開發版本加入一個特殊頁面,然後在瀏覽該頁面時執行你的單元測試。在這個情況下,瀏覽行為就像是個測試執行器 (test runner) ,你必須要引用參考測試框架 (test framework libraries) ,以便裝載該頁面。

 

 

包含第一篇和第二篇的文章內容,都是我們發佈在文件裡 Author & run tests  章節內容的精簡版本,你可以在那裡找到更詳細的演練示範,以及談論有關使用 “mocks” 來處理呼叫平台 APIs ,還有其它延伸未談及到的單元測試執行環境內容。歡迎告訴我們你的想法。

我也希望聽聽你是如何在 Cordova apps 進行單元測試,你是如何進行 UI 測試(手動及自動),以及我們可以如何進一步提升我們的支援透過 Visual Studio Tools for Apache Cordova ,歡迎到 http://visualstudio.uservoice.com/. 提出建議。

本文翻譯自 Unit Testing Apache Cordova Apps with Visual Studio, Part 2

[延伸閱讀 – 影片教學]

使用 Visual Studio 2015 TACO 建置 Windows 10 應用程式

Visual Studio 2015 tools for Apache Cordova Build apps for Windows 10

五步輕鬆實現對現代瀏覽器的相容

$
0
0

作為 Web 工程師,最頭痛的問題莫過於瀏覽器相容性測試,各種類型瀏覽器,各種版本的瀏覽器,還有各種麻煩的前綴碼等等。dev.modern.IE 是微軟推出的用來幫助開發者創建現代網站的基本開發工具,建議使用網站相容性掃描工具來掃描您的網站,看看您的網站是否存在一些相容性問題。請根據以下五步進行檢查,就可解決一些較為基本的相容性問題,實現對 Google Chrome、Microsoft Edge、Apple Safari 等現代瀏覽器的相容。

Step 1:檢查網站是否在標準模式下顯示 (渲染) 頁面

在 W3C 的標準出現前,瀏覽器對網頁如何顯示並沒有統一的標準,各家有各家的方式。當 W3C 標準出來之後,標準的顯示模式就稱之為標準模式,而各家瀏覽器還保留了原來的顯示方式來相容舊版本的網站,稱之為 " Quirks Mode(一般翻譯為怪異模式或者相容模式)"。那瀏覽器怎麼知道用標準模式還是相容模式來解析您的網站呢?現在的瀏覽器廠商們基本都是用 Doctype 來判斷。如果您的網頁沒有 Doctype 的聲明,那麼瀏覽器就認為您的網站是老舊版本,瀏覽器將啟用相容模式來解析您的網站,這樣對於用戶來說,將不能夠得到完整的體驗。

檢查您的網站是否被使用相容模式顯示,最簡單的方式是使用 IE 作為測試工具來測試。

  • 在 IE11 中打開您的網站。
  • 按 F12 鍵啟動 F12 開發人員工具,或者您也可以在 IE 的工具列中找到它。
  • 檢查工具列右上角是否有 Edge 的標誌,如果有 Edge 標誌,那麼恭喜您,您的網站已經運行在符合 IE 最新標準的標準模式下。如果顯示不是 Edge,那麼您的網站是在相容模式下渲染。

如果您的網站是被當作相容模式顯示,那麼可能是存在以下問題:

  • DOCTYPE 無效或者沒有使用

檢查是否使用了有效並且格式正確的 DOCTYPE。如果您的網站是採用 HTML5 標準的網站,請使用標準 HTML5 的 Doctype 聲明:

<!DOCTYPE html>

  • 文檔模式受到X-UA-Compatible這個元標籤的強制限制

在IE11之後已經棄用文檔模式,除了臨時情況外不應再使用。如果您當前針對舊文檔模式使用 X-UA-Compatible 標頭,那麼您的網站可能無法使用IE11最新的功能。如果必須針對特定文檔模式,以便支援您現在的網站能夠繼續運作,則需要注意,您使用的是過渡功能,以後的版本中可能不提供該功能。請在頁面檢查是否存在類似以下的代碼,刪除並重新測試您的網站。

<meta http-equiv=“X-UA-Compatible" content="IE=EmulateIE7″>

<meta http-equiv=“X-UA-Compatible" content="IE=8″>

  • 可能您的網站處於相容性視圖列表(Compatibility View List )中,IE強制將您的網站在相容視圖中顯示,以保證網站能夠正確顯示

首先檢查您的網站是否在相容性視圖列表中。相容性視圖列表是一個 xml 檔,該檔位於:

C:\Users\%YOUR_USERNAME%\AppData\Local\Microsoft\Internet Explorer\IECompatData\iecompatdata.xml

這個檔案維護著系統下的網站與 IE 的相容資訊,每日更新。如果您發現您的網站於該相容列表中,請您修改網站中不符合 HTML5 標準的內容,然後向 iepo@microsoft.com 發送電子郵件,請求在 Web 上有可用更新時,請求將您的網站移出相容性視圖列表。郵件需要包含以下內容:(所有者名稱、公司職務、電子郵寄地址、電話號碼、公司名稱、街道地址、網站地址)。

微軟將審查提供的資訊,並在下一個計畫的列表更新時從 " 相容性視圖列表 " 中刪除您的網站

Step 2:檢查您使用的網站開發框架與類別庫是否存在相容性問題

使用一些過時的開發框架和類別庫有可能引起相容性問題,請仔細檢查您的網站使用的開發框架和類別庫的版本資訊與其最新版本資訊,看看是否與最新版本的 IE 相容。建議使用相容性最高穩定性最好的開發框架版本,比如 JQuery 請使用 1.7.2 版本。如果使用最新的版本的話,請進行多次測試。除了穩定性最高以及最新的版本兩個版本以外的版本,不推薦使用。

您們可能會問哪個版本才是相容性最高穩定性最高的框架版本呢?

請使用此工具掃描您的網站,網站會檢查您是否使用了適合的開發框架、檢查其版本並給出建議。

Step 3:檢查您的網站是否還在使用 UA 探測

在以前要知道用戶的瀏覽器是否支援一個特殊的功能的方式,通常是檢測瀏覽器的類型以及版本,然後選擇相應的程式碼片段執行,這個過程通常稱之為 User Agent 檢測,簡稱 UA 檢測。但是這個過程是非常容易出錯的,容易被欺騙,代碼邏輯複雜,而且隨著瀏覽器版本的增加,維護困難。

在現在的 web 開發中,我們會有更好的方式來解決這些問題。現在原則上伺服器端不檢測瀏覽器的類型和版本了,現在用本機端的方法和物件來檢測使用者的瀏覽器所是不是支援某些功能,我們稱之為功能檢測。通過功能檢測,我們能夠知道某個方法在某個瀏覽器上是否真正可用,使用時更加安全,邏輯也更加清楚。

//錯誤示範,極不推薦

if (navigator.userAgent.indexOf(“MSIE 7″) > -1) {

// Only for IE7

}

//√正確示範,推薦做法

function load() {

 if (‘localStorage’ in window) {

  // Now use local storage

return;

}

}

推薦使用自動化工具 Modernizr 來進行功能檢測,然後根據檢測的結果來執行相應的邏輯,而不是根據 UA 檢測的結果。更多關於功能檢測的請參考這裡

Step 4:檢查您的瀏覽器前綴碼是否正確

我們在做 Web 開發的時候,我們需要用到瀏覽器前綴碼(Vendor prefixes)來使用一些比較新的 CSS 或者 JavaScript 的屬性。瀏覽器前綴碼包含 CSS 前綴碼以及 JavaScript 前綴碼,我們說到瀏覽器前綴碼一般是指 CSS 前綴碼。CSS 前綴碼是用來添加對一些實驗性的功能或者屬性的支援。他們不是 CSS 標準的一部分,但是他們是瀏覽器現存的一些屬性,也許未來會成為 CSS 標準的一部分。

以下是四個主要的瀏覽器前綴碼:

-ms-  Microsoft
-moz-  Mozilla
-o-  Opera
-webkit-  Safari, Chrome, 以及其他基於 WebKit 的 browsers

也許有的時候屬性加了 -webkit- 或者 -moz-,就是沒有 -ms-。如果在 IE 中預設屬性沒有正常工作,嘗試一下加上 IE 的瀏覽器前綴碼 -ms-,-webkit-, -moz- 和 -o- 不會影響 IE 怎麼渲染屬性。目前的 IE10 和 IE11 已經支持了非常多的 CSS3 標準屬性,保證標準屬性在沒有前綴碼下也能正常工作。當屬性沒有正常工作的時候,加上 -ms- 試試吧(或者到 caniuse.com 查查看)。標準屬性可以在很多現在的瀏覽器中正常工作,但是如果您不確定某個屬性是否需要前綴碼或者是否能在某個瀏覽器工作,可以上 caniuse.com 查看。所有這些工作都非常得耗費精力和時間,所以我們是不是可以有自動化的過程呢 ? 答案是肯定的。對我們開發者開說,有很多自動化工具來説明我們完成前綴碼的過程。這些工具能夠説明我們大大提高添加瀏覽器前綴碼的效率。您可以選擇前期處理的 mixin 工具包如 Sass 的 Compass 和 Stylus 的 Nib 。但是如果您不想要包含他們所有的Mixin 函式庫,您只是想把您的 CSS 加上瀏覽器前綴碼,那您可以使用 Autoprefier。Autoprefixer 將會解析您的 CSS 檔(如果是使用前期處理工具,那麼是在編譯之後)並且根據 caniuse.com 上的資料添加適當的瀏覽器前綴碼。這個工具將幫您寫 CSS 的時候無需擔心某一個屬性是否可用或者是否該加瀏覽器前綴碼。

而對於 JavaScript 前綴碼來說,目前還沒有比較好的自動化工具,不過您還是可以通過 caniuse.com 來查詢。

更多關於瀏覽器前綴碼的內容,請訪問這裡

下載並使用 Autoprefixer,請訪問這裡

Step 5:檢查您的網站是否還在使用外掛程式

隨著移動網際網路的發展,越來越多的流覽行為是在日益增多的行動設備以及這些設備內建的瀏覽器上發生的,因此越來越多的用戶正在不支持外掛程式的瀏覽器下瀏覽網頁。向這些不使用外掛程式瀏覽的用戶提供優秀的網站體驗,是一項非常重要的工作,因為網站必須要面向最廣泛的目標客群。而且越來越多的現代瀏覽器已經宣佈停止支持外掛程式技術,比如 Google 宣佈在 Chrome42 版本以上不再支持 NPAPI,詳細請見這裡 。微軟 Edge 也不支援 ActiveX、BHO 等外掛程式技術。

我們建議網站不再使用這些外掛程式技術,利用 HTML5,現代的瀏覽器和網站即使不用外掛程式,也能提供優秀的用戶體驗。

功能 基於外掛程式的技術 基於標準的類似技術 詳細資訊
影片和音訊 Flash、Apple QuickTime、Silverlight HTML5 影片 音訊 影片、 音訊
圖形 Flash、Apple QuickTime、Silverlight、Java 程式(Applet) HTML5 Canvas 可縮放的向量圖形 (SVG)階層式樣式表級別 3 (CSS3) 過渡 動畫CSS 轉換WebGL CanvasSVG過渡動畫轉換WebGL
離線儲存 Flash、Java 小程式和 Google Gears Web 儲存文件 APIIndexedDB 和應用程式緩衝 API Web 儲存文件 APIIndexedDB 和應用程式緩衝 API
網路通信、資源分享和檔上傳 Flash 和 Java 程式(Applet) HTML5 Web 消息傳遞跨源資源分享 (CORS) 通道消息傳遞XMLHttpRequest

如果不得不使用外掛程式,強烈建議先測試基於標準的功能是否可用,然後只在必要的時候用外掛程式進行降級。儘量使用標準的HTML5功能進行開發,這樣能使得您的網站在各個瀏覽器上都能有一個非常好的用戶體驗。

通過以上五步,您的網站將會完美相容各種現代瀏覽器,如 Google Chrome、Microsoft Edge 以及 Apple Safari 等。以下是一些 Web 相關的資源和工具,有興趣的同學可以深入瞭解。

附錄

提醒您,社群之星『學新知拿好禮』活動進行中,快去搶禮物!想知道更多第一手消息,請鎖定 MSDN 台灣

使用 Visual Studio 與 Azure App Service 建置雲端 Web 與 Mobile Apps 服務

$
0
0

App Service 概述

Azure App Service 是將過去單獨存在的 Web Site 服務,延伸整合 Mobile Apps 服務(過去稱為 Mobile Services)、API Apps 服務以及 Logic Apps 服務而形成的一項整合性服務。透過 Azure App Service 可以快速建構所需的 Web 網站應用程式以及行動應用服務,除了使用 .NET 語言之外亦支援可以使用像是Node.JS、PHP、Python 或 Java 等開發語言。在 Azure Mobile Apps 服務方面,使用者應用端程式不論是要建置原生的 iOS、Android、Windows App 或是跨平台的 Xamarin 與 Cordova 類型的App,Azure Mobile Apps均提供原生的 SDK,可以讓開發人員可以快速整合單一登入、離線同步、推播通知功能,而伺服器端則提供 .NET 與 Node.js 的 SDK 用來建立 Mobile Apps 伺服器端應用程式。Azure App Service 內的 Web Apps 與 Mobile Apps 會建立在相同在容器資源內執行,因此您甚至可以使用 Web Job 建立連續性批次作業程序,或者您也可以建立自定義的 CName,藉由 Azure App Service 這樣的整合性服務可以讓您在建置 Web 與 Mobile 服務時更易於管理與擴展。

Web Apps 建立與部署

作為開發人員最佳夥伴的 Visual Studio 2015 開發工具,除了開發本地端 Web 應用之外,在整合 Azure App Service 開發上也著實提供最佳的開發體驗。首先開發者必須安裝 Azure SDK for .NET (下載位置),完成後可以直接由 Visual Studio 2015 新增 Web 應用程式專案,開發完成後可以直接透過 Visual Studio 2015 遠端發行的方式直接部署至 Azure App Service。

1

過程中會要求您登入 Azure 帳戶以進行驗證及帳戶連結,而接下來的發行過程中包含二個主要作業流程,首先會在 Azure 環境中建立 Azure App Service 並且完成所指定的設定,例如所在區域、資源群組、App Service 方案等,待 Azure App Service 建立完成後緊接著就會直接進行發行部署作業。

2

此外若已先行在 Azure Portal 管理介面建立完成 Azure App Service 時,透過 Visual Studio 2015 進行專案部署時亦可以選擇已存在的 Azure App Service 來進行發行,發行過程中就會省略第一道建立 Azure App Service 的作業流程而直接進行檔案的發行部署,而除了 Web 部署方式之外也提供 FTP 或檔案部署可供選擇。

3

Cloud Explorer 是一套整合在 Visual Studio 2015 裡的擴充套件,透過 Cloud Explorer 套件開發人員可以直接在 Visual Studio 2015 瀏覽在 Azure 上的資源,甚至可以直接取得檔案進行線上即時的修改,不過要提醒的是當您進行線上修改並儲存,此時所變更的檔案是處於遠端 Azure App Service 上的實體檔案,因此若您重新以本機端專案再進行發行部署,則會覆蓋掉原本已變更的檔案。

4

5

Mobile Apps 後端建立部署

Azure App Service 除了可以建立一般廣為熟知的網站服務外,也可以用來建立服務行動應用所需的伺服器端程式,使用 Visual Studio 2015 建立 Azure Mobile Apps 相當簡單,只要在新增 -> 專案 -> 選擇 Web 類型 -> ASP.NET Web 應用程式,接著就可以看到內建的 Azure Mobile Apps 專案範本,該專案範本裡已包含了所有需要的相關 SDK 參考,因此開發人員可以直接專注在伺服器端服務邏輯的程式碼撰寫,迅速的建立 Mobile Apps 伺服器端的應用程式。若您選擇以 Node.js 來建立 Azure Mobile Apps 伺服器端應用程式,則可以選擇先下載安裝 Node.js Tools 1.1 for Visual Studio 延伸模組,就可以整合 Visual Studio 2015 開發環境介面來開發 Node.js 應用程式。

6

7

Azure Mobile Apps 伺服器端應用程式,其架構是採用 Web API 為基礎,以 .NET Azure Mobile Apps 專案範本為例,在預設上我們可以看到依開發慣例所提供的 Controllers、DataObjects、Models 目錄規劃,當然您也可以依團隊開發規範建立所需的目錄並撰寫程式碼。

8

當開發完成後要部署至 Azure 時,其部署方式與 Azure Web Apps 是相同的,同樣是直接透過 Visual Studio 2015 遠端發行的方式直接部屬至 Azure App Service 服務上,當發佈成功後透過瀏覽器導覽至 Azure Mobile Apps 服務網址時,您會看到表示成功的歡迎頁面。

9

Mobile Apps 離線儲存

一個使用者體驗良好的行動應用,在開發上需考慮到在連線狀態不良或是離線情況下 App仍可以正常作業,Azure Mobile Client SDK 提供開發人員可以建立離線資料同步處理的機制,當 App 應用程式處於離線模式時,使用者仍然可以建立和修改資料,而這些變更將會儲存於本機存放區。當 App 恢復連線能力時,即可將本機的變更與您的 Azure Mobile Apps 伺服器端應用程式進行資料同步化的處理。
Azure Mobile Apps 除了提供 .NET Client SDK 外,針對 iOS、Android 及跨平台的Xamarin 與 Cordova 均提供 Client SDK,因此我們可以依照 APP 類型選擇使用相對應的Client SDK 來開發 Azure Mobile Apps 使用端的應用。以開發 Windows App 為例,透過Visual Studio 2015 的 NuGet 封裝管理員可以輕鬆的取得 .NET Client SDK 並加入至目前專案參考中,日後若專案所參考的 SDK 版本有發行新版本時,NuGet 封裝管理員介面也會有所通知。

10

在開發過程中,Visual Studio 2015 的程式碼智能感知功能(IntelliSense),可以讓開發人員更容易的了解如何使用 Azure Mobile Apps Client SDK。舉例來說透過MobileServiceClient.SyncContext 物件與 IMobileServiceSyncTable 介面在需要同步處理本機儲存區與伺服器資料時,呼叫 IMobileServiceSyncTable.PullAsync 及 MobileServiceClient.SyncContext.PushAsync 方法,有了程式碼智能感知功能(IntelliSense)的幫忙,可以顯示出該方法所需的參數及功用說明。

11

12

Mobile Apps 使用者驗證

現代化的行動應用整合社群或第三方身分識別是必備基礎的設計,Azure App Service 提供一套現成的解決方案,透過少許的步驟設定,就可以馬上為您的行動應用提供整合社群或第三方的驗證程序,目前 Azure App Service 提供了 Azure Active Directory、Facebook、Google、Twitter 和 Microsoft Account 共5種身份驗證。

13

透過 Azure App Service 來整合身份驗證的優點在於,開發者在撰寫行動應用身份驗證的程式碼邏輯時,藉由 Azure Mobile Apps Client SDK 可以呼叫相同的 API 方法,因此程式碼具有高度的一致性。試想如果您的行動應用程式想同時提供 Facebook、Google、 Microsoft Account 三種身份驗證,可能需要自行針對 Facebook、Google、 Microsoft 三個服務商所提供的 API 來撰寫不同的程式碼,但如果是透過 Azure App Service,以Windows App 為例,就只要呼叫 .LoginAsync(MobileServiceAuthenticationProvider.Facebook) 方法,面對不同服務商只需要調整 MobileServiceAuthenticationProvider 名稱即可,是不是顯得相對的簡潔容易了許多呢。針對開發原生行動應用的開發人員,Azure Mobile Apps Client SDK 除了提供 .NET 的 SDK 版本外,對於 iOS Objective-C & Swift 語言以及 Android Java 語言也有提供相對應開發語言的 SDK 版本。

14

Mobile Apps 推播通知服務

即時的推播通知在行動應用中相當常見,然而不同平台間的推播實作卻是不盡相同,此外推播通知的呈現方式亦不相同,例如在 Windows 平台上有所謂的動態磚,而這些平台間的差異也增加了開發人員在程式開發上的複雜度。透過 Azure App Service 的 Mobile Apps 內建整合 Azure Notification Hubs (Azure 通知中樞) 推播通知服務,可以在 Mobile Apps 伺器端應用程式中將通知傳送至 Azure Notification Hubs 上,再由這個共同的介面服務來自動處理各平台間的推播作業管理,同時也具備了雲端高擴充性可應付數百萬個裝置的需求。目前除了支援 Apple (APNS)、Google (GCM) 、Windows (WNS)、Windows Phone (MPNS) 之外,還增加了Amazon (ADM) 與 Baidu (Android China)。

15

由 Mobile Apps 伺器端應用程式發送推播通知,以 .NET 伺服器端應用程式為例,透過 Visual Studio 2015 的 NuGet 封裝管理員加入 Microsoft.Azure.NotificationHubs 參考。

16

接著在程式碼中開發人員只要呼叫各平台專屬的推播發送方法,並給予推播訊息格式內容的參數,例如針對 Apple (APNS),其推播發送方法為 SendAppleNativeNotificationAsync,Google (GCM) 為 SendGcmNativeNotificationAsync,而 Windows (WNS) 則為 SendWindowsNativeNotificationAsync,就可以輕鬆將推播訊息發送至各平台裝置上。

17

 

18

結語

Visual Studio 2015 針對微軟 Azure 雲端服務的整合性可說是相當的完整,除了原本就有的強大程式碼智能提示、測試與專案套件管理之外,在部署方面提供 Click One 一鍵部署的精靈式作業流程,再加上可以透過擴充套件的輔助,能更有效的幫助團隊在雲端專案上的開發可以更加快速方便。

參考資料:
Azure App Service – 建置智慧型 Web 和行動應用程式
開始使用 Visual Studio 2015 開發吧!

【活動邀約】DevOps 在雲端 – Visual Studio Team Services 實戰秘笈

$
0
0

帶您主動出擊,掀起雲端開發革命!

DevOps 是目前 MSDN 開發社群當中最熱門的議題之一,如何快速因應客戶需求變化 (Change),調整服務 (Services) IT 決勝關鍵所在!
本次課程我們將運用工具取代繁瑣重覆的人工作業,使用 VSTS 端到端的演示開發維運一體化,透過雲端自動化編譯 (Auto Build)、佈署 (Auto Deploy) …等解決方案,加速上線、又兼顧品質,是  MSDN VIP 用戶不能錯過的實作課程。

 

Point 1: MSDN 除了每月最高 4700 元的 Azure 點數,現在申請試用 Azure 還加送 6300元! 

image

Point 2: 你開通 MSDN 的 Azure 點數了卻不知道怎麼使用嗎?

Point 3: 全世界的軟體產業都在瘋上雲端,你知道怎麼借力雲端加速軟體開發嗎?

Point 4: 現場講師包含微軟內部技術專家 (技術傳教士、開發平台技術經理、開發平台業務經理) 與外部知名講師 董大偉 和 陳鋒逸 (小風),讓你從頭到尾問題一次問到飽!

立即報名 3/30

講者與議程介紹

董大偉

光岩資訊技術總監、Visual Studio 2010 上市發表會講師、歷任微軟 Tech‧Days、Tech‧ED 研討會講師、MSDN 講座專屬講師、微軟最有價值專家 (MVP)、資訊書籍、雜誌專欄作者。專長於 Microsoft .NET Platform 開發技術、BPM、APS、ERP、Web Solutions、Windows Phone、Azure … 等商業應用之建置與導入。
講述主題:站穩 DevOps 第一步 – 從需求管理看專案透明度
當全球都邁向敏捷、當你聽到越來越多的團隊已朝向DevOps的目標前進,想追求軟體專案開發的透明度與自動化,該如何正確地著手? 在這個場次中,我們將帶領您從源頭開始,探索 VSTS 強大卻易用的功能。將您的需求、版控、工作項目管理…一直到自動建置與持續交付一氣呵成,為您奠定 DevOps 的穩固基礎。
1. VSTS 的 Process Templates
2. 使用 VSTS進行工作項目與需求管理
3. 工作項目的分類與操作流程
4. Kanban 的使用與客製化
5. 專案管理報表與專案透明度
6. 持續整合與自動化
技術參考文件 – Visual Studio Team Services

張韡

現任台灣微軟的開發平台業務經理。

黃承皓

現任台灣微軟的開發平台技術經理。
講述主題:快速因應市場競爭 – 雲上企業應用開發與測試
當迭代發生,開發人員將需求轉化為功能,雲端上開發測試擁有比本機開發更大的彈性、敏捷與品質改善。此議程演練數分鐘內預備好開發測試應用程式所需的計算、儲存體與網路資源,以及端到端的測試應用程式在最接近生產環境的狀態下,了解如何應付真實世界的使用情境,並且使用 Azure DevTest Lab 管理環境,共享可重複使用的範本與構件快速組成環境、設定原則等最佳化您的成本開銷。
技術參考文件 – Azure 研發/測試實驗室 (DevTest Lab)

陳小風 (陳鋒逸)

之前任職於 91mai 就要買 資深軟體工程師,主要專注於ASP.NET MVC、WCF、Angular.js、持續整合以及自動化測試 (BDD、Automation),熱愛 OOP 與 Design Patterns ,目前工作內容為大型電子商務平台的架構設計與流程改善,曾任職於 Yahoo 購物中心擔任軟體工程師,擁有5年以上線上購物網站的開發維護經驗,曾撰寫有《使用 ASP.NET MVC 打造 Web API 》和《使用 Jenkins 打造 .NET CI Server》等系列文。
講述主題:省時省力不停機 – 發行管理與持續部署
1. 在 VSTS 使用 CI/CD 的基本介紹
2. 產品開發如何搭配 CI/CD 進行品質控管與自動化部署
3. Release Management 功能介紹
4. 使用 Release Management 控管產品發行週期
5. 透過 VSTS 搭配 DevOps 進行產品生命週期規劃與管理
技術參考文件 – Release Management for TFS and VSTS 

陳晴

曾任微軟企業顧問服務處技術顧問及微軟 OEM Engineering & Service 部門,熟悉 .NET,協助規劃與開發,現任台灣微軟的技術傳教士 (Technical Evangelist),推廣並協助軟體開發商及新創公司在 App 與 Microsoft Azure 的開發及規劃。
講述主題:學習與反饋 – 全方位掌握應用程式健康度
1. 使用 Application Insights 針對網站效能進行監測
2. 使用 HockeyApp 進行 Crash Report 收集
3. 使用 HockeyApp 分發 Beta 版本
4. 串聯 Application Insights / HockeyApp 與 VSTS 反饋變需求
技術參考文件 – 開始使用 Application Insights / HockeyApp 知識庫

Viewing all 136 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>