AngularJS – Providers介紹 (一)

最近公司NAS APP專案採用Cordova專案來開發,配合使用Ionic v1和AngularJS來撰寫UI功能,在開發過程中很常使用到AngularJS的Factory定義,看了AngularJS官網所寫Factory只是歸屬於Providers的一種使用方式,其他還有Service、Value、Constant、Provider等,接下來我們就依序來介紹這些定義的差異和使用方式。

(一) Value:

當我們只是要一個很簡單的資料定義,我們可以使用Value,官方範例為定義一個Oauth的ClientId來做解釋,如下 :

程式碼

我們宣告一APP為 myAPP,並定義一個value名稱為clientId並且給予我們要指定的值,那我們定義完要如何使用,AngularJS採用Dependency Injection的方式Injection到Controller中如下圖:

程式碼

C# Lock 概論

先簡單介紹一下Lock,如同大家在聽到多執行緒時常聽到的哲學家故事,今天一個圓桌上有多位哲學家,每個哲學家中間都擺著一支筷子,當個哲學家要吃飯,必須拿起哲學家左右兩邊的筷子吃飯,而其他兩旁的哲學家這時候只能負責思考,那如果兩旁的哲學家這時也想要吃飯,就會變成第一位哲學家拿起了右邊的筷子,第二位哲學家也拿起了右邊的筷子……,最後所有哲學家都拿起了一支右手的筷子,也全都在等別的筷子,而這樣就會造成死結(Deadlock),每個哲學家就像一個執行緒一樣,在互相搶資源(筷子),這時就要使用Lock,使得CPU避免正在執行的程式與其他執行中的程式互相干擾,講了這麼多我們來看看實際的範例,以下使用微軟lock 陳述式中所提供的範例做說明。

 

下方程式為模擬一個帳戶(Account)一直被扣隨機數目後,扣至零塊錢的情形。

Azure Function初探

Azure Function,一開始聽到這名詞是很納悶的,因為相對於Azure VM(Virtual Machine)、Azure DB(Database)等名詞來說,後者是即便沒有接觸也很好想像就是VM、DB放在別人家,User只要連線過去使用,但function卻是包含在一隻程式、甚至只是class中的一個區塊的程式碼,因此對於一個長時間都只在寫後端Service的人而言,腦袋頓時轉不過來,只剩下滿腦子的問號。

其實答案很簡單:就像API通訊一樣。

[ 技術探討 ] Excel群組加加減減

透過Microsoft.Office.Interop.Excel對 Excel 報表資料進行群組設定

透過Microsoft.Office.Interop.Excel對 Excel 報表資料進行群組設定

某一天,小皮球收到一個消息:「某簡訊專案需要做一張包含群組功能的Excel報表,但因為Telerik報表匯出Excel檔案時,會先轉成PDF、再轉成Excel檔案,所以匯出來的Excel是不會存在群組功能的。」
小皮球頭上冒出問號、發出一個單音:「蛤?」
作者:「小皮球,你的問題是什麼啊?」
小皮球:「什麼是Excel群組啊?」
作者:「喔,聽說就是旁邊或上面那一堆加加減減……」
小皮球默默地轉頭看向前輩,前輩展示了Example後,終於明白Excel裡面的群組是什麼。

用說的還真的不好解釋,直接一張圖給大家看吧。

[ 技術探討 ] 設定轉換工具SlowCheetah

由於最近公司簡訊的專案增加,為了因應各個客戶的需求,程式碼通常都會有一堆的設定,不管是放在App.config 或 Web.config 甚至是自行設計的XML及Json,但是通常會因為專案時間久了會遺忘客戶環境的設定,就會需要找文件,然後一項一項的確認來避免設定錯誤。
今天要向大家介紹一個方便的工具,SlowCheetah,用來對XML及Json檔進行分支,可以讓程式發行同時就可以完成設定環境的工作。

 

下載及安裝

這裡要安裝的套件可以在微軟網站上下載(https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.SlowCheetah-XMLTransforms),或是在Visual Studio,點選工具→擴充功能和更新(U),然後搜尋SlowCheetah,安裝並重新啟動Visual Studio。

SlowCheetah-01