跳到主要內容

發表文章

目前顯示的是 4月, 2018的文章

使用NPM套件管理工具

NPM 的全名是 Node Package Manger,  是Node.js 的套件管理系統,   用來管理其背後龐大的開放原始碼, 透過NPM 我們可以很方便地加入第三方開發的套件到我們的專案裡, 縮短開發時間而這也是使用Node.js 開發應用程式的優點 (其實有點像 .Net 的NuGet, 或是 Python 的 Pypi), 如何安裝套件 > npm install simple-export-excel --save simple-export-excel 即我們要下載的套件 如果想要全域安裝而不是侷限在某個專案裡我們可以使用-g參數 > npm install -g "你的套件名稱" 如何使用套件 使用的時候就呼叫 require 把剛剛下載的套件匯入專案 var xlsHelper = require ("simple-export-excel") Package.json Package.json是用來表示這個專案的相關資訊 像是名稱, 版本, 以及相依的套件(dependencies)等等 如果安裝套件的時候有帶 --save 的指令的話, 套件資訊就會被寫入到 dependencies { "name" : "node" , "version" : "1.0.0" , "description" : "" , "main" : "index.js" , "scripts" : { "test" : "echo \"Error: no test specified\" && exit 1" }, "author" : "" , "license" : "ISC" , "dependencies&q

C# 日期時間處理的方法

假設今天要寫一之程式去讀資料庫裡紀錄的時間, 來決定是否執行動作(如資料更新...等等), 一般來說, 我們會在資料庫裡存放UTC時間, 因為我們不知道使用者會在哪個時區使用這支程式 當我們拿到時間的資料後, 如果是字串, 可以使用DateTime.Parse轉成DateTime物件 var timestamp = await GetTimestampFromDbAsync(); DateTime datetime = DateTime.Parse (timestamp); DateTime currentDateTime = DateTime.Now 比較時, 可以在相減之後呼叫 .TotalMinites 將結果轉換成像是分鐘這種實際上的數字方便我們做邏輯判斷 以下的例子就是, 當時間差15分鐘時必須去呼叫 UpdateAsync() double timespan = ( currentDateTime - datatime ).TotalMinites; if( timespan > 15 ) { await UpdateAsync(); } 需要注意的是 DateTime.Parse( String , IFormatProvider , DateTimeStyles ) 允許我們帶入三個參數 其中第二個參數可以決定要轉換成哪個時區的時間 若直接呼叫如下 DateTime.Parse( "Thu, 12 Apr 2018 01:15:08 GMT" ); 預設是用機器當地的時間去做轉換 但如果想還原為還原成UTC的時間的話 可以呼叫 Datetime . ToUniversalTime() 若我們想取得現在的UTC時間的話 也可以藉由呼叫以下的方法獲得 Datetime . UtcNow

C++ NULL 淺談

在C++的世界裡 NULL 是定義成 0, 而布林值的 false 也是定義成 0 所以下的程式碼最後得到的結果會是 "hello" #include <iostream> using namespace std; int main() {     bool bStatus=false;     if( bStatus == NULL )     {        cout << "hello"     }else     {        cout << "goodbye"     } } 因為 bStatus == NULL 這段描述式最後會得到 true 然後執行括號內的 cout << "hello"

How to send a MP3 sound to Alexa with SSML

Alexa Skills Kit provides Synthesis Markup Language(SSML) to enhance the Alexa speech output. It's very convenient to make Alexa say something we expect. In some case, you may want response an MP3 sound to Alexa, how could we do that? This article focuses on how to implement the <audio> tag to play an MP3 file. Converting Audio Files to an Alexa-Friendly Format. Download FFmpeg Convert your file via below command ffmpeg -i <input-file> -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 <output-file.mp3> Hosting the Audio Files for Skills You can store your files on Amazon S3, and make them public. Or using Azure Media Service. The following steps show how to host audio files on Azure Media Service  Create Media Service resource Upload the audio files           Search "Assets" on Media Service, and click upload to add your files Publish your file and save your URL Add <audio> Tag In Your Response Below is an example

使用ask cli 指令快速建立alexa skill, Part I

先前有寫過Skill的朋友一定知道, 如果要開發一個Alexa Skill, 我們必須先登陸Amazon 的帳號, 然後再到Alexa Developer Console建立Skill, 除了填寫Skill的相關資訊之外, 還需要定義 Language Model, 最後綁定我們的Lambda 服務 ... 一整個做下來, 在還沒開發程式就已經耗了30-40分鐘了, 尤其日後想要修改Language Model的話, 我們還需要重新登錄Alexa Developer Console, 找到我們先前定義的Skill, 然後補上新的Intent, Utterance, 或是Slot 現在, 以上的動作通通可以自動化, 因為Amazaon 提供 ASK-CLI 的工具, 讓我們可以在本機端使用它的指令來存取Skill, 包含下載上傳Skill 或是對應的Lambda 程式碼 以下介紹如何使用ASK-CLI Prerequisite: 須設定完aws-cli Step 1. 安裝 ask cli > sudo npm install -g ask-cli Step 2. 設定使用者資料 ask init --no-browser 建立資料並連結你的AWS使用者資料 此時會獲得一組Url 我們必須打開瀏覽器貼上這組Url做認證 再將回傳的認證碼傳回給ask cli 以上動作完成後就可以來建立 Skill ~  Step 3. 建立skill > ask new --template Trivia --skill-name hello-world --lambda-name hello-world-lambda --template Trivia 是指使用現成的範例來修改 目前支援的範例有: How To Pet Match Quiz Game Team Lookup Trivia City Guide Decision Tree Fact Feed High Low Game !如果無法成功直行這個指令地話 可以試試底下方法, 直接指定範例的來源 > ask new --url https://github.com/ale

如何在 Azure 上部屬Node.js應用程式

前言 隨著雲端服務越來越方便, 相信也越來越多人開始把程式部屬在雲端上了吧, 像是Azure App Service 這種Platform as a Service的雲端服務, 對工程師來說開發時只要把精力專注在寫程式的部分, 而不需要勞心費神地搞伺服器, 拉網路線, 申請SSL的憑證,,,等等. 如果使用得宜, 相信絕對會減少許多開發成本 以下就簡單的介紹如何將NodeJs 的程式部屬到Azure 首先必須在Azure上面建立資源 1. 建立Resource Group 2. 建立App Service Plan 3. 建立Web應用 注意: 如果想將Web應用建立在既有的Resource Group並套用既有的App Service Plan 則可以省略(1)(2)步驟 首先, 登陸Azure並打開Azure Cloud Cli (1) 建立Resource Group管理底下的虛擬化資源(Optional) az group create --name NodeResourceGroup --location "West US" 上面的範例是指定一個美西的位置給NodeResourceGroup, 讓它把底下資源的相關資料(Meta Data)放在這位置上 (2) 建立App Service Plan(Optional) 根據自己的需求決定自己想要怎樣的VM環境, 然後選擇適合自己的Service Plan, az appservice plan create --name NodeAppPlan --resource-group NodeResourceGroup --sku S1 上面的例子裡, 我選擇S1的方案, 一個月大概1200左右台幣, 如果單純想要練習或測試的話,可以選擇Free 的方案 (3) 建立Web 應用 之後我們會將程式會部屬在這邊 az webapp create --resource-group NodeResourceGroup --plan NodeAppPlan --name MyNodeAppAndy --runtime --% "NODE|6.9" 注意, 在官方文件上你