2014年1月14日 星期二

Configuring Multiple TFS Build Controller on the Same Machine

因為TFS要整併的關係,
所以必須考量不同的Collection皆須建置的問題。
其實我原本也不知道,一個Controller只能對應一個Collection。
廢話不多說,我只想先記下來。
參考:Configuring Multiple TFS Build Controller on the Same Machine

環境:
Windows Server 2012
Microsoft SQL Server 2012
Microsoft Team Foundation Server 2012
擁有兩個Collection



2013年12月6日 星期五

Angular Js Part III : Filter

原本第三篇是要寫Directive自訂控制項或者是Scope的,
但是那些都必須要再整理過,
因此先寫一篇無關痛癢的Filter吧~

Angular Js提供多種Filter可使用。

  • Currency:用來將數字轉換成貨幣
  • Date:轉換成特定日期格式
  • Filter:篩選機制,有點像是AutoComplete
  • Json:將物件轉換成Json字串。
  • limitTo:限制輸出的長度
  • lowercase、uppercase:轉換為大小寫
  • number:轉換為數字格式,並決定小數點後位數。
  • orderBy:排序,超強。

2013年12月3日 星期二

Angular Js Part II : Controller

繼上一篇Start Angularjs之後,
接著要介紹Angular js的另一個特性Controller。
Controller本身能做的事情大概有二:
1.對scope設置初始值(scope泛指應用程式所使用到的物件模型)
2.在scope上增加額外的處置,簡單來說就是寫程式的區塊。
範例一:
給定初始值,input中會有來自controller的文字。
原始碼:
<!DOCTYPE html>
<html ng-app>
  <head>
    <script src="http://code.angularjs.org/1.2.0/angular.min.js"></script>
    <meta charset="utf-8" />
    <script type="text/javascript">
    //Controller
    function urCtrl($scope){
      $scope.urName="it was inited from controller";
    }
    </script>
  </head>
  <body>
    <!-- Smapel ng-controller -->
    <div class="box" ng-controller="urCtrl">
      Sample ng-controller----------------<br>
      Type in ur Name<input name="input" ng-model="urName"><br>
      Hi~ {{urName}}!!!!
    </div>
  </body>
</html>

2013年11月29日 星期五

C# Timer

C# Timer可以提供定期執行特定行為的實作。
而Timer本身的事件即是觸發新的Thread去執行該行為。
MSDN上的範例相當完整,
大家可去實作看看。
這邊提供幾個特定的範例供參考。

2013年11月15日 星期五

Angular Js Part I : Start


Angular js 是一個相當好用的前端開發工具,
之前我在寫html時,
若要即時更新data通常都必須利用JQuery進行DOM元素的抽換,相當不便;
尤其是在一大堆由程式自動產生的表格,更動某筆資料就更費工了。
Angular js所提供的Binding功能,就立刻解決了這一類的需求。
產生的效果如下:
為了達成即時反應的效果,做法有五種。

  • {{modelName}}(表達式)
  • ng-cloak
  • ng-bind
  • ng-bind-template
  • ng-bind-html

2013年10月28日 星期一

Using Java Custom Type In Oracle

因為PL/SQL本身沒有Mutil Thread 機制,
若需要使用到Mutil Thread 就必須利用JVM,
將任務丟給Java並繼續執行下段Statment。

本次的範例為:輸入指定的隊伍人數,JVM會自動產出隊伍成員,且回傳整支隊伍。

Oracle Function :
CREATE OR REPLACE FUNCTION CreatTeam(Num IN NUMBER)
RETURN TEAMWITHPLAYER
AS
tempNum Number;
BEGIN
    FOR i IN 1..Num
    loop
        SELECT  ROUND(DBMS_RANDOM.VALUE(20,30))into tempNum FROM DUAL;
        --addPlayer(姓名、地址、年齡)都採Random輸出
        AddPlayerToTeam.addPlayer('Name A'||i ,'Taipei No.'||i*10,tempNum);
    end loop;
  
    RETURN AddPlayerToTeam.getAll();
END;

上段程式碼為主程式,藉由輸入的Num數產生所成員數目。
最後再傳回整個Team的資料。

Oracle Package
CREATE OR REPLACE PACKAGE AddPlayerToTeam
            IS
              Procedure addPlayer( NameStr IN VARCHAR2 , AddrStr IN VARCHAR2 , AgeStr IN VARCHAR2 );      
              Function getAll Return TEAMWITHPLAYER;
            End AddPlayerToTeam;

CREATE OR REPLACE PACKAGE BODY AddPlayerToTeam
            IS
              Procedure addPlayer( NameStr IN VARCHAR2 , AddrStr IN VARCHAR2 , AgeStr IN VARCHAR2 )  as language java name 'Kunde.Test.Java.AddPlayerToTeam.addString(java.lang.String,java.lang.String,java.lang.String)';
              Function getAll Return TEAMWITHPLAYER as language java name 'Kunde.Test.Java.AddPlayerToTeam.getLog() return oracle.sql.ARRAY';
            End AddPlayerToTeam;

2013年10月14日 星期一

Oracle DB Call Java Class & ORA-29532

參考官方文件:Calling Java Methods in Oracle Database

1.寫了一個test.java,存在D:\Test底下

import java.io.*;
public class test {
   public static void main(String[] args) throws IOException {
   // TODO Auto-generated method stub
   //Hello World!!!!
      System.out.println("Hello World!!!!!!!!!!!");
      BufferedWriter out = new BufferedWriter(new FileWriter("D://output.txt"));
      try {
         String inputLine = "Hello World!!!!!!!!!!!";
         out.write(inputLine);
         out.newLine();
      } catch(IOException e1) {
         System.out.println("Error during reading/writing");
      } finally {
         out.close();
      }
   }
}