즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

전체 글 273

[2021.04] DICOM UID 생성규칙

UID는 Unique ID의 약자다. DICOM은 NEMA에서 제정된 의료 결과에 대해 네트워크, 결과파일 등을 집대성한 표준 프레임워크이다. DICOM 네트워크에서 결과들은 유일무이해야 하기 때문에 일종의 UID 생성규칙이 있다. 아래에서 설명하는 표준규칙은 전세계의 DICOM이미지들이 하나의 네트워크에서 통용될 때에도 유일하도록 제정된 방식이다. 즉 내 병원에서 생성한 이미지는 절대로 밖으로 유출하지 않고 우리병원에서만 사용한다고 하면 궂이 표준 방식으로 생성할 이유는 없다. 비표준 규칙방식은 단순히 GUID만 들어가기 때문에 한림성심병원 처럼 8개 병원을 서버 연계를 통해 결과를 공유하는 병원같은 경우 자칫 유일하지 않게 될 여지가 있기 때문에 표준을 따르는 것이 중요하다. 표준규칙 예제) 1.2...

[2021.04] C# + DevExpress Grid에서 문자로 된 숫자 정렬하기

3, 2, 1, 11, 5, 6, 7, 8, 9, 10, 4, 12 이렇게 숫자가 있다고 치자. 이것을 DevExpress에서 정렬하라고 하면 다음처럼 정렬된다. 1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9 이는 숫자가 아닌 문자로 정렬되기 때문이다. 열의 속성을 숫자형태로 하면 자동으로 숫자로 정렬되는 뭔가가 있으면 좋겠으나 DevExpress에서는 CustomColumnSort()라는 메서드를 제공해준다. 정렬하고자 하는 컬럼의 속성 중 SortMode를 Custom으로 수정한다. 컬럼을 그리드에 추가해주는 로직 다음에 추가해주면 된다. treeDICOM.Columns["col1"].SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom; tre..

[2021.04] C#에서 WIN32 API를 이용한 객체로 폼 이동방법

제목 만들기 참 까다롭고 설명하기 난해할 것 같은데, 예를 들어 설명해보겠습니다. 폼의 Borderstyle을 None으로 해서 툴박스나 X박스 없이 이미지를 백그라운드로 입혀서 이쁘게 만들려고 하면, 어? 툴박스가 사라져서 폼을 이동할 수 있는 방법이 사라집니다. 이런 어플리케이션 보면 거의 움직이는 것을 본적이 없는 것 같네요. 그런데 난 움직이게 하고 싶다. 하면 이 글을 잘 찾아오신 겁니다. 단, 윈도우32 API를 이용할 것이기 때문에 윈도우에서만 됩니다. 아래 예제는 폼 자체에 이벤트를 후킹할 것이기 때문에 폼의 영역 아무곳을 클릭해서 잡아 끌면 폼 자체가 이동됩니다. 옛날 윈도우 개발하시던 분들 SendMessage, ReleaseCapture 많이 보셨을 겁니다. 이것을 이용합니다. con..

개발/C# 2021.04.06

[2021.04] C#에서 이중 인증 중 OTP 활용 방법

개발환경: VisualStudio 2017, Devexpress 20.x 왜이리 한글 문서들로 정리된 문서가 없는지 또 작성해본다. 보통 이중인증 보다는 투-팩터 인증이라는 단어를 많이 사용한다. (나만 그런가?) 요즘 사이버 보안이 잘 뚫리다 보니 아이디/패스워드 로그인 체계에 덧 붙여서 이중 또는 다중 인증을 사용토록 하는게 요즘 인/허가 가이드의 보안 방침이다. 이중 인증의 방식은 공인인증, 사설인증, 생체인증, 간편인증, ... 진짜 많다. 그 중 본문에서는 시간정보와 비밀키를 이용한 OTP를 다뤄볼까 한다. OTP를 계산하는 방식은 동일하기 때문에 어떤 OTP앱을 사용해도 동일하게 인증 체크가 가능하다. 개념만 알면 엄청 단순해서 글 작성이 안된 것일까? 아니면 많이 사용하지 않아서일까? 참고U..

개발/C# 2021.04.06

[2021.03] VB 6.0 이중 실행 방지 구문

안녕하세요. 오늘은 거의 제가 사용하지 않지만 10년 넘게 개발했었던 VB 6.0 팁 코드를 적어볼까 합니다. 서버 프로그램 개발 시 사용자나 스케줄러에 의해서 이중 실행될 경우에 대한 문제가 있을텐데요. 이를 프로그램 진입 점에 이중실행 여부를 체크하여 종료시키는 중요한 코드입니다. 자체적으로 이중 실행 구문을 체크하는 코드는 다음과 같습니다. If App.PrevInstance = True Then Exit Sub end if 그러나 윈도우 하나의 세션에서만 감지할 뿐 다른 세션에서 실행 시 감지를 못하는 단점이 있습니다. 보통 원격데스크탑으로 접속하면 세션이 추가로 생성되서 열리는데 여기서 실행이 되지 않았다고 판단하고 사용자가 실수로 실행을 할 수 있다는 여지가 생깁니다. 저도 이런 실수를 무지 ..

[2021.03] C#에서 Unix Time을 구해보자.

보통 로그에 시간정보가 누적해서 들어가기 때문에 Date타입이나 String타입으로 설정하는 것보다는 UnixTime을 이용해 숫자값으로 저장하는 것이 훨씬 적게 데이터를 쌓을 수 있다. UnixTime은 ISO8601 표준에 의거해 1970년 01월 01일 09시 00분 00초를 기점으로 초 단위로 카운트 된다. 이 글을 작성하는 시간으로 Unix Time을 구하면 다음과 같다. # date -d '2021-03-26 15:29:00' '+%s.%N' | cut -b1-10 1616740140 이 정보를 이용해 C#으로 작성해보자. public static DateTime IntToDateTime(int intDate) { return new DateTime(1970, 1, 1, 9, 0, 0).Add..

개발/C# 2021.03.26

[2021.03] C# 프로그램을 관리자 권한으로 실행하기

출처: www.enjoydev.net/xe/en_devboard/26728 엔조이데브: 팁&트릭 - 관리자 권한으로 실행하기 다음 함수 추가 public static bool IsAdministrator() { WindowsIdentity identity = WindowsIdentity.GetCurrent(); if (null != identity) { WindowsPrincipal principal = new WindowsPrincipal(identity); return principal.IsInRole... www.enjoydev.net 다음 함수는 프로그램이 관리자 권한으로 실행했는지에 대한 여부를 알 수 있게 하는 함수이다. Static 함수로 추가하거나 클래스에 다음 함수를 추가한다. 아래 코드..

개발/C# 2021.03.26

[2021.03] Winston패키지를 이용한 Logger 클래스

Winston을 이용한 Logger 패키지이다. 사용법은 다음과 같다. const logger = require('./src/helper/logger').logger; logger.info('===================================') logger.info('Program Started!!'); logger.info('-----------------------------------') 사용 패키지 path fs winston-daily-rotate-file winston moment-timezone 환경설정 "Logger": { "TimeZone": "Asia/Seoul", "logPath": "logs", "logFile": "logfilename", "loglevel": "de..

개발/Node.js 2021.03.26

2008.04.12 MS 글로벌 서밋 & 캐나다 여행기 (1)

2008년 04월 12일 오후 5시 30분 비행기에 올랐다. 미국 MS글로벌 서밋에 참가하는 MVP가 대략 50명정도 였는데 대한항공 단체 티켓으로 굉장히 싸게 구입을 했다. 당시 왕복티켓 70만원에 구매했던 것으로 기억한다. 2008년 04월 12일 오전 11시 30분 시애틀 타코마 공항에 도착했다. (비행시간은 13시간인데, 버스 탄 시간인가보다.) 이 당시에는 아직 미국 무비자 입국이 안되는 시점이었기에 미국대사관 가서 비자발급을 받았었다. 간단한 영어 시험을 받아야 했는데 다행히 다 들리더라.. 입국심사 상대로 어여쁜 여자가 해줬는데 다행히 몇몇 문장만 Again해서 알아듣고 통과했다. 게다가 수화물까지 쉽게 찾아 12시 30분 발 벤쿠버행 퀵셔틀을 탈 수 있었다. (왕복 87$-크레디트) (여기..

2007.04.07 첫 해외여행, 일본 후쿠오카

30살이 넘어서야 첫 비행기를 타고 일본에 다녀왔다. 그것이 기점이 된 것인지 모르겠지만 그 해 구축사이트가 제주한라병원으로 결정이 되면서 9월부터 10월까지 총 8번을 제주도 왕복했던 것일까? 마지막 관광지였던 ... 하우스텐보스라고 하는 곳인데 유럽마을을 그대로 옮겨온 곳이라고 보면 된다. 점심을 한국음식 파는 곳에서 먹었는데 김치가 없었던 것 같고 맛도 없었다. ㅋ