'Functional World/.Net Framework' 카테고리의 글 목록 :: iopeni - Think of C#

'Functional World/.Net Framework'에 해당되는 글 3건

  1. 2017.01.13 호기심 해결
  2. 2013.11.01 Microsoft .Net Framework 4.5? 에 추가된 것들...
  3. 2013.08.26 Ms Chart Control Sample

병원에서 사용하는 시스템 중 EMR이라는 시스템의 중요기능 중 하나는 동적 서식 생성이라는 주제 이다.

 

몇년전 EMR이 뭔지도 모를 때 모 대학 병원에서 엉겁결에 동적 서식 생성기라는 프로그램을 만들었고.. 지금은 확실하게 서식생성기가 가져야 하는 기능들에 대해서 남들보다 잘 알고 있다고 자신 한다.

 

전에 근무하던 회사도 의료정보쪽 일을 하고 있는 회사 였고, 동적 서식 생성기라는 프로그램이 몇종류 있었다. 물론 지금도 팔고 있는 제품이고 나름 경쟁력 있는 제품들이라 생각 한다.

 

그러나 나의 입장에서 보면 뭔가 좀 어색하고 대단히 이상했다. 왜냐하면 서식 생성시 서식의 모양을 지정하고 모양의 위치를 지정하고 하는 것들을 전부 이미지로 처리하고 있었기 때문이다.

 

정확한건 아니지만 타회사(후지쯔코리아, 큐브플랙스)의 제품들을 봐도 서식을 생성하기 위해 처리 하고 있는 생성기는 이미지 처리 기반인 것으로 추측된다.

 

왜 일까? 왜 이미지로 했을까? 난 잘 모르겠다. 일부러 이미지로 처리한다는 것 자체만 보더라도 공수는 훨씬 많이 들어갈것 처럼 보인다.

 

생각을 살짝만 바꿔서 생각 하면 그냥 패널이나. 이미지박스에 동적으로 컨트롤을 들어 올리고 그걸 가지고 선택 하면 개발자가 Hit Testing 은 신경 쓰지 않아도 되며, 드래그는 Left와 Top 값만을 변경 하는 것으로 원하는 기능을 구현 할 수 있다.

 

물론 Copy & Paste 의 구현도 이미지 기반 처리에 비해 쉽게 할 수 있다.

 

국가연구사업으로 완성된 CCM(임상 컨텐츠 모델) 이라는 것을 보면 서식 생성시 중요하게 생각 하여야 하는 것은 어트리뷰트와 엔티티, 컴포넌트이다.

 

그래서 생각 하게 된거다... 만약 말이다. 우리가 동적 서식 생성이라는 문제를 가지고 Visual Studio의 폼 디자이너 처럼 할 수 있다면? 그럼 어떻게 될까?

 

폼 디자이너에는 어트리뷰트, 엔티티, 컴포넌트 따위 그냥 기본 개념일 뿐이다. 얼마든지 확장할 수 있고 사용자가 화면을 그리기도 이미지 에디터에 비해서 훨씬 쉽다.

 

더불어~~~~~~~~~ CodeDom으로 코드 까지 생성해 준다.......  뭐 자동생성하는 코드가 맘에 들지 않는 다면 나만의 규약으로 코드를 생성해도 된다.

 

예상컨데... 이거 서식 생성기 끝판왕을 만들 수 있겠구나??? 라는 생각을 함 해봤다.

 

그런데??????? 폼 디자이너는 어떻게 만들었을까?... 이라는 호기심이 문득 들었고 저를 아는 분들은?? 아시겠지만..... 한번 호기심이 생기면 끝까지 물고 늘어져서 ㅎㅎㅎ 알아내고야 마는 묘한 습성이 있다.

 

이번에도 그랬다.... 폼디자이너 어떻게 만들었는지 알고 싶었다. 몇일간의 구글링과 .... MSDN 검색질을 통해서 알아내고야 말았다......

 

일단 샘플로 만들어 놓은 화면이다. ㅎㅎㅎㅎ

 

 

드래그... 및 Anchor 기능이 기본으로 동작 된다. 이 코드..... 코드량 얼마나 많을까???? 많지 않다.

 

깜놀 했다.. ㅎㅎㅎ 이걸 알고 나서 어찌나 자랑질을 하고 싶었는지 아마 여러분은 모를 꺼다..

 

역시 고마운건 Microsoft 였다...

 

System.Design 어셈블리를 참조 하고 System.ComponentModel.Design 네임 스페이스에 존재 하는 DesignSurface가 답이었다.

 

대충 만든 C# 코드를 소개 한다.

 

내가 또 서식생성기를 만들게 될 일은 없겠지만.. 만약 또 만들게 된다면... 이번엔 이렇게 할 것이다. 만약 WPF디자이너에 CodeDom을 활용하게 될 지도 모르겠지만 말이다.

 

이렇게 만들어 놓은 서식으로 사용자가 리포트를 작성하게 하고 .. 이후 출력을 하게 될 경우에 대한 좋은 방법은 OpenXML SDK 인듯 하다.

 

아마 docx, xlsx, pptx 와 같은 문서들의 확장자를 Zip으로 바꾸고 압축을 풀어 보면 압축이 풀리는 신기한 경험을 하게 될지도 모른다.

 

미국 정부는 Microsoft에게 오피스 없이도 오피스 문서를 읽을 수 있도록 해달라는 요청을 하였고, 마이크로소프트는 그 의견에 수렴하여 OpenXML 이라는 문서 포맷을 표준으로 하였다.

 

ECMA와 ISO공히 표준 문서가 등재 되어 있고 이곳에 백업한다. EMR을 새로 만들거나 서식 생성기를 새로 만드는 분들에겐 아마도 도움이 될 것이다.

 

http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463

http://www.ecma-international.org/publications/standards/Ecma-376.htm

 

그런데 말이다... 지금 나에게 중요한건 이런 블로그질이 아니라... 취업이다... ㅎㅎ

에혀.. 지방에는 튼실한 IT 기업이 없다.. 있어도 나 같은 허접한 개발자는 취급하고 싶지 않은 걸까???? 백수 생활이 점점 길어진다... 아혀~~

 

 

 

 

 

'Functional World > .Net Framework' 카테고리의 다른 글

Microsoft .Net Framework 4.5? 에 추가된 것들...  (0) 2013.11.01
Ms Chart Control Sample  (0) 2013.08.26
Posted by 프로그래머란 카페인을 코드로 변환하는 기계다
,



블로그에 올리고 나니... 이미지 글자가 작아져서 알아 보기 힘드네요...


그래서.. ^^ 이미지 추가 해 놓습니다. 


WhatsNewNET45-en.zip

많은 것들이 추가 및 확장 되었네요. ^^




이 많은 것들 중.... 40% 만이라도 자유롭게 쓸수 있는 개발자가 되었으면 좋으련만.... 


없으면 만들어 쓰라는 주의라.... 있음에도 불구하고 몰라서.. 시간과 노력을 들여 만들어 쓰고 있는 무식함이.......부끄럽기만 합니다.

'Functional World > .Net Framework' 카테고리의 다른 글

호기심 해결  (0) 2017.01.13
Ms Chart Control Sample  (0) 2013.08.26
Posted by 프로그래머란 카페인을 코드로 변환하는 기계다
,

예전 Chart를 그리고 싶다면 누가 뭐래도 ChartFX 가 최고 였던것 같습니다.

Microsoft Chart Control은 어딘지 모를 어색함에 이쁜 차트를 그리기는 쉽지 않았던것 같습니다.

아마도 GUI를 지원 하는 개발툴들 중 가장 허접한 디자인의 차트 였던것 같습니다.


.Net에서는 이런 예전의 차트 컨트롤을 버리고 아주 획기적으로 이쁜 차트로 탈바꿈 되었습니다.

Microsoft가 제공하는 Sample로 차트가 얼마나 이뻐 졌는지 확인해 보도록 하죠.


http://archive.msdn.microsoft.com/mschart


위 사이트로 가시면 차트 컨트롤 샘플을 받으실 수 있습니다.


위 샘플은 .Net Framework 4 기준의 샘플 입니다. 아래 링크를 보시면 3.5버젼의 샘플도 구하실수 있습니다.


일단.. 차트 컨트롤의 설명을 보면...


  • All supported chart types.
  • Data series, chart areas, axes, legends, labels, titles, and more.
  • Data Binding
  • Data manipulation, such as copying, splitting, merging, alignment, grouping, sorting, searching, filtering, and more.
  • Statistical formulas and financial formulas.
  • Advanced chart appearance, such as 3D, anti-aliasing, lighting, perspective, and more.
  • Chart rendering.
  • Events and Customizations.

이렇게 설명 하고 있습니다.

단지 이렇게만 보면 이 샘플의 위용을 느끼 실수 없을 텐데.

일단 다운 로드 받아서 설치 해 보도록 하죠.




다운로드 탭을 클릭 후 윈폼 버젼의 샘플을 다운 받습니다.




압축을 풀면 이런 파일들이 있습니다. 제일 하단 WinFormsChartSamples를 클릭하여 솔루션을 엽니다.


그리고 F5번 키를 눌러 실행을 해 보면... 아래 에러가..

이건 단순 코드 문제로.. 아무래도 한국 코드 페이지와 틀려서 생긴 문제로 별 문제는 아닙니다. 


코드를 확인해 보면...



위처럼 쟡 .... ?; 처럼 코드가 깨져 보입니다. 대충 살펴 보기에 쟡은 Demo 처럼 ?; 은 ."; 으로 바꿔 주면 동작 할 듯 합니다. 뭐 당연하죠?


이런 방법으로 모든 에러를 수정 하시면 됩니다. 그리고 실행을 해 보시면 다음과 같은 화면이 나옵니다.




아래 그림 처럼 몇개 선택을 해 보시면 챠트가 바뀌는 것을 보실 수 있습니다.




이 화면 상단에 C# Source 와 Visual Basic Source가 보이시나요? 저 탭을 클릭해 보시면 


저 챠트를 그리기 위해 필요한 샘플 코드가 보입니다.


아래 처럼 말이죠...


C# Code

using System.Windows.Forms.DataVisualization.Charting;
...

// Set series chart type
chart1.Series["Price"].ChartType = SeriesChartType.Stock;

// Set the style of the open-close marks
chart1.Series["Price"]["OpenCloseStyle"] = "Triangle";

// Show both open and close marks
chart1.Series["Price"]["ShowOpenClose"] = "Both";
        
// Set point width
chart1.Series["Price"]["PointWidth"] = "1.0";

// Set a dividend marker
chart1.Series["Price"].Points[5].MarkerImage = "DividentMarker.bmp";
chart1.Series["Price"].Points[5].MarkerImageTransparentColor = Color.White;
chart1.Series["Price"].Points[pointIndex].ToolTip = "#VALX{D}\n0.15 - dividend paid per share";
... 

Visual Basic Code

Imports System.Windows.Forms.DataVisualization.Charting
...

' Set series chart type
Chart1.Series("Price").ChartType = SeriesChartType.Stock

' Set the style of the open-close marks
Chart1.Series("Price")("OpenCloseStyle") = "Triangle"

' Show both open and close marks
Chart1.Series("Price")("ShowOpenClose") = "Both"

' Set point width
Chart1.Series("Price")("PointWidth") = "1.0"

' Set a dividend marker
Chart1.Series("Price").Points(5).MarkerImage = "DividentMarker.bmp"
Chart1.Series("Price").Points(5).MarkerImageTransparentColor = Color.White
Chart1.Series("Price").Points(pointIndex).ToolTip = "#VALX{D}\n0.15 - dividend paid per share"

이렇게 모든 타입의 챠트를 전부 어떤 코드로 생성 할 수 있는지 샘플로 만들어져 있습니다.


어떠신가요? 이 샘플 참고로 볼만하죠?


'Functional World > .Net Framework' 카테고리의 다른 글

호기심 해결  (0) 2017.01.13
Microsoft .Net Framework 4.5? 에 추가된 것들...  (0) 2013.11.01
Posted by 프로그래머란 카페인을 코드로 변환하는 기계다
,