[DATAZEN] ms 통계툴 설치 가이드



[설치]
http://www.datazen.com/start/

설치는 아래 두가지를 해야함.
1. Datazen Enterprise Server
2. Datazen Publisher Apps -> Dashboard를 생성하거나, 엑셀/DB등 데이터 바인딩하는 앱


[서버 구성요소]
Core Service

  • 저장소를 포함한 윈도우서비스  
  • users, KPIs, dashboards, data view등의 저장소
  • 방대한 데이터에 빠르게 액세스 할수 있도록 디자인 

Data Acquisition Service

  • 주기적으로 질의된 외부 데이터소스 와 캐시데이터를 가지고 있는 Core Service내 윈도우 서비스 

Web Applications

  • Web API 
  • Control Panel - 관리자
  • Viewer 

[authentication mode]

  • default - core service 저장소내 저장
  • AD - core service내 username 저장 pw는 ad환경
  • ADFS - core service 내 username 저장, 자격증명은 설치된 ADFS에 의해 증명함.
  • external - HTTP header나 쿠키등을 활용해 외부와 인증

Datazen 서버 설치시 두가지 키를 제공
Repository Encryption key -> Core Repository를 복구할때 사용
Instance Id -> 분산컴포넌트를 사용할때 사용


설치가 끝나면,
(최초 설정하는 비밀번호가 datazen 관리자 페이지 비밀번호이므로 잘 기억해야함)
Core Service 계정 초기화
netsh http delete urlacl url=http://+:28952/
netsh http delete urlacl url=http://+:28953/
netsh http delete urlacl url=https://+:28953/
netsh http add urlacl url=http://+:28952/ user=[new service account username]
netsh http add urlacl url=https://+:28953/ user=[new service account username]


81번 port로 자동 IIS 세팅.아래 경로로 접근 가능

[경로]
관리 로그인 페이지: http://localhost:81/cp/Account/Login?ReturnUrl=%2fcp
통계 뷰페이지: http://localhost:81/viewer/home#/dashboards/0


[built-in data providers]
-sql server  -  data view query 에서 바로 가능
-sql server  - analysis services    mdx 쿼리
-sharepoint   -  list name
-odata webservice
-xml webservice
-mysql  - odbc driver 설치해야함
-oracle 도 마찬가지
-postgresql db 가능
-엑셀 가능





[메뉴명]

BI hubs ->
users, dashboards, KPIs, data등의 관리하는 최상위 계층.
하나의 Datazen Server에서 여러개의 BI hubs를 동시에 각기 다른 roles과 view로 제공 가능하다.

KPI -> 목표 단위 설정합니다.  각 value는 쿼리, 직접입력이 가능.


Datasources -> Data Connection Pool (Store)
1) DataSource를 생성  (instance)


2) Dataview를 생성  
  (refresh frequency를 설정할수 있음, 파라미터 받아서 처리도 가능 )



Dashboards
1) Datazen Publisher를 통해 페이지 레이아웃을 잡는다.
  (PC/모바일/태블릿에 따라 레이아웃을 다르게 설정한다)


2) Dashboards -> DataView
선택한 콘트롤을 선택하고 바인딩하려는 데이터를 Add Data 버튼을 눌러 바인딩한다.

3) Datasources 에서 만들어놓은 pool과 매핑 또는 엑셀로 매핑






Publish



결과화면

[sandcastle] C# 자동 라이브러리 문서화 툴

sandcastle 이라는 프로그램은?

내 코드를 아래와 같이 라이브러리 형태로 자동 문서화 해주는 툴.
자체 옵션에 멤버, private , protected, 별로 노출 여부 설정 가능.
옵션이 굉장히 다양.
하나의 도움말 사이트로써 ,
링크나 별도 설명등도 잘사용하면 모두 이용가능. (XML 문법을 잘 사용할 경우 더 좋음)
(.net web api로 만들면 .net framework에서 자동으로 만들어 줍니다..)
아래는 샘플의 결과물








설치 시작
소스 src
http://sandcastle.codeplex.com/
https://github.com/EWSoftware/SHFB
하나는 라이브러리, 하나는 sandcastle helper file GUI

둘다 설치.
설치가 다되면 "sandcastle helper file GUI" 앱 실행

아래와 같이 간략한 테스트 콘솔 프로그램을 작성.
도움말의 설명은 아래와 같은 summary 주석 기반... (그래서 소스코드보다 주석이 더 많아질수 있다....)





빌드구성을 아래와 같이 XML문서 생성에 체크해주어야 함.


아래와 같이 exe와 xml 을 또는 참조하려는 dll을 추가.


 노출되는 구성은 아래와같이 chm, 웹형태, docx, mshc형태로 제공.
















빌드프로젝트 ,ctrl+shift+B!!  웹형태로 결과를 실행.
아래와같이 index.html이 생성.





































아래와 같이 메서드들이 보임. Hello 메서드를 들어가보면










설명 제공. 아래 빨간 글은 summary 주석에 return value가 빠졌기때문에 나오고,
이러한 warning 타입을 옵션에서 제거해도 되고, summry에서 추가하여 좀더 자세히 보게끔 할수도 있다.



















[asp.net] ip-dns간 호스트 매핑

웹개발을 하다보면 서버별로 페이지를 확인해야 할 경우가 많다.

 호스트 파일을 사용하거나,
 fiddler에서 Host remapping 기능을 사용하거나
 어떤 프로그램을 사용하건,

여러 서버를 둔 api 서비스라거나 여러 서비스들에서 캐시를 이용해 서비스되는데
캐시를 바로 삭제 해야할 필요가있다.

ip를 지정해 해당 도메인에 접근하려면,


webproxy에 ip를 할당하거나 또는 아래




1.
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create("namasg.blogspot.kr");
                    request.Referer = domainHost;
                    request.Proxy = new WebProxy(http://127.0.0.1);
                    using (WebResponse response = request.GetResponse())
                    {}



2.
   //private string WebRequest_()
        //{


        //    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ip);
        //    FieldInfo headersFieldInfo = request.GetType().GetField("_HttpRequestHeaders", System.Reflection.BindingFlags.NonPublic
        //                                          | System.Reflection.BindingFlags.Instance
        //                                          | System.Reflection.BindingFlags.GetField);
        //    CusteredHeaderCollection WssHeaders = new CusteredHeaderCollection(dns);
        //    headersFieldInfo.SetValue(request, WssHeaders);
        //    request.Proxy = null;
        //    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        //    StreamReader sr = new StreamReader(response.GetResponseStream());
        //    return sr.ReadToEnd();

        //}
        //public class CusteredHeaderCollection : WebHeaderCollection
        //{
        //    public bool HostHeaderValueReplaced { get; private set; }

        //    public string ClusterUrl { get; private set; }

        //    public CusteredHeaderCollection(string commonClusterUrl)
        //        : base()
        //    {
        //        if (string.IsNullOrEmpty("commonClusterUrl"))
        //            throw new ArgumentNullException("commonClusterUrl");

        //        this.ClusterUrl = commonClusterUrl;
        //    }

        //    public override string ToString()
        //    {
        //        this["Host"] = this.ClusterUrl;
        //        string tmp = base.ToString();
        //        this.HostHeaderValueReplaced = true;
        //        return tmp;
        //    }
        //}

[asp.net] 잠재적 위험이 있는 request.form 값을 발견했습니다

[asp.net] 잠재적 위험이 있는 request.form 값을 발견했습니다
.net framework는 xss, injection 공격을 방어하기 위해 자체적으로 form tag 검사를 한다.

개발 환경이 webform 일경우,
aspx -> validateRequest = "False"로 지시처리문에 추가한다.
or
web.config  <system.web><pages validateRequest = "false" /> 추가한다.


개발 환경이 mvc일 경우,
action method에 validateinput 속성을 추가한다.
--> [ValidateInput(false)]

위 처리 방법으로 본 에러를 처리하면 첫 문장과 같이 xss || injection 공격을 방어할 수 없기 때문에 무턱대고 사용하면 안된다.