즐겁게 개발을...

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

전체 글 273

[2022.03] Devexpress XtraGrid에서 Record가 아닌 공백에서 클릭 처리하지 않게 하기

안녕하세요!! 간단하지만 사용자가 요청했을 때 맨붕에 빠지게 할만한 꺼리를 위해 글은 적어봅니다. 레코드들이 표시되고, 레코드를 선택도 하지 않았는데 공백에서 더블클릭했더니 어떤 행위가 일어나요. 왜 그렇죠? 우선 XtraGrid에서 데이터소스를 통해 바인딩된 데이터가 있는 경우 기본적으로 0번째 레코드(첫번째 줄)를 선택합니다. 흑~ T_T 그럴때는 MouseDown, DoubleClick, Click 이벤트에 다음 코드를 맨 위에 추가해주면 만사 OK ^^ GridView gv = sender as GridView; if (!gv.CalcHitInfo(Cursor.Position).InDataRow) return; 그리드 뷰에서 커서의 위치를 이용해 Row데이터에 위치해있는가를 Boolean으로 리턴..

[2022.02] MSMQ를 이용해 프로세스 간 메시지 송/수신 처리하기

안녕하세요! 오랜만에 글을 작성해봅니다. 올해 처음인가봐요 ㅡㅡ; (다행히 아닙니다. ㅎㅎ) MSMQ는 윈도우 OS에서 제공하는 Microsoft Message Queue 입니다. 이를 사용하기 위해서는 제어판 > 윈도우 기능 켜기/끄기에서 활성화 해주셔야 합니다. 본 글에서 테스트 한 메시지 형태는 클래스 형태로 만들어 상호 교환되는 것을 확인하는 소스입니다. XML방식을 직렬화 및 역직렬화를 하는데 속도가 느리다는 글이 있네요. 그래서 아래 참조 글 중 JSON방식의 포맷터를 사용한 테스트 코드를 올려봅니다. 다음 두 개의 클래스를 추가합니다. public class Order { public long orderId; public DateTime orderTime; }; public class EnD..

개발/C# 2022.02.22

[2022.01] Redmine 4.2를 Docker로 운용하기

안녕하세요! 오랜만에 글 올립니다. 아래 글은 최근(오늘^^) 엔조이데브에 등록된 글인데, 경어체를 사용하였으니 양해 부탁드려요. 필자는 Postgresql이 미리 Docker로 실행되어 있어서 redmine이라는 데이터베이스를 생성한 후, 진행하였다. 리눅스는 CentOS7을 사용하였으며, Home디렉토리에 redmine폴더를 생성한 후, 들어가자. 구글에서 "Redmine Docker"로 검색하여 나온 레드마인 공식 Docker 홈페이지에서 Bullseye기반으로 동작하는 것을 찾아 실행하였다. 공식 레드마인 Docker Hub페이지: https://hub.docker.com/_/redmine Redmine - Official Image | Docker Hub Quick reference Suppor..

[2021.10] XtraGrid 특정 Row의 컬럼 값 편집 여부를 설정하는 방법

안녕하세요. 오랜만에 올립니다. 엑셀처럼 편집이 가능한 그리드를 구현하고자 하는데 특정 Row의 특정 컬럼만 에디트를 가능하게 하거나 혹은 불가능하게 할 경우 아래 "ShowingEditor"이벤트에서 구현하시면 됩니다. private bool USCanada(GridView view, int row) { GridColumn col = view.Columns["Country"]; string val = Convert.ToString(view.GetRowCellValue(row, col)); return (val == "USA" || val == "Canada"); } // disable editing private void gridView1_ShowingEditor(object sender, System..

[2021.09] fo-DICOM Log4Net 사용방법

안녕하세요. 제가 의료기기 쪽 IT 솔루션을 개발하다보니 fo-DICOM이라는 라이브러리를 사용하는데 Logger연동이 쉽지 않아서 작성해봅니다. 2016년 이슈가 떴으면 제대로 문서화를 해놓을 것이지 공식 홈페이지에는 존재하지 않는 방법입니다. 보통 Log4Net Config 파일은 Properties/AssemblyInfo.cs 맨 끝에 넣는 것이 일반적인데, fo-DICOM의 Log4Net 인터페이스가 그것을 인지하지 못하는 버그(이슈)가 있습니다. 그래서 다음 코드를 프로젝트 Root에 있는 App.Config파일에 추가합니다. 그리고 Program.cs 도입부분에 다음 코드를 추가합니다. Dicom.Log.LogManager.SetImplementation(Dicom.Log.Log4NetMana..

개발/C# 2021.09.06

[2021.09] 입력문자가 어떤 언어인지 분별해주는 함수

안녕하세요! 입력된 문자가 어느나라 문자인지 판별하는 함수를 소개합니다. // OneByteChar = 영어 public enum LanguageType { Korean, KoreanJaum, KoreanMoum, Japanese, Chinese, OneByteChar, UnKnown, OverBound } 이렇게 상수 선언합니다. public LanguageType GetLanguageType(string sourceString) { if (sourceString.Length > 2) return LanguageType.OverBound; byte[] _tmp = System.Text.Encoding.Default.GetBytes(sourceString); if (_tmp.Length != 2) ret..

개발/C# 2021.09.04

[2021.08] 시놀로지(Synology) 7.0 업그레이드 경험

(본 글에서는 SSH, Docker 사용법등은 기본적으로 이해한다고 생각하고 글을 적습니다.) 안녕하세요. 오늘은 6.x에서 7.0으로 업그레이드한 경험담을 적어볼까 합니다. 모델은 416Play로 메모리를 업그레이드 하여 8기가로 사용중입니다. 기본적으로 설치되지 않은 Docker를 수동으로 설치하여 사용했었습니다. Gitlab과 Dokuwiki는 패키지에서 설치해서 사용중에 있었습니다. Gitlab은 Docker가 있어야 설치가 됐던 것으로 기억합니다. 그런데.. 7.0에서 Gitlab과 Dokuwiki를 지원하지 않는다는 청천벽력같은 소리로 주저했었는데 오늘 Dokuwiki와 Gitlab 둘다 수동으로 Docker-Compose를 이용해 새로 설치하고 마이그레이션을 했죠. 먼저 제어판에서 터미널을 ..

[2021.08] 리눅스 환경에 개발 도구 설치 (지속 업데이트)

안녕하세요. 개인차가 있겠지만 CentOS7 기반 개발도구 설치방법을 나열합니다. 1. 커널 업데이트 및 기본 패키지 설치 yum update -y yum install -y git net-utils wget 2. Docker 설치 # 루트로 실행 su - yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce systemctl enable docker 2-1. Remote API 설정 sudo vi /usr/lib/systemd/system/docker.s..

[2021.08] Docker 로그 지우기

안녕하세요. 테스트로 운영하거나 개발할 때 사용할 때는 상관이 없는데 운영서버에서 동작하는데 미처 디버그 로그를 풀지 않았거나 로그옵션을 기본으로 설정했거나 해서 Docker의 로그가 많이(기가 단위) 쌓이면 느려지는 현상이 있습니다. 이때 사용하는 방법입니다. echo "" > $(docker inspect --format='{{.LogPath}}' ) 이걸로 하시면 되고 루트경로여서 위에 명령 실행시 허가거부로 뜨면 아래 명령을 실행한다. echo '' | sudo tee $(docker inspect --format='{{.LogPath}}' )

[2021.08] Docker 컨테이너 Save/Load

도커 이미지를 Tar로 압축했다가 푸는 방법 docker build나 commit으로 만들어진 이미지는 일반적으로 docker hub와 같은 registry에 push되고, 이를 다시 pull 받는 방식으로 사용된다. 하지만, 간혹 docker 이미지를 registry를 거치지 않고 이동해야 할 때가 있다. 이럴 때 사용자는 docker 이미지 혹은 컨테이너를 tar파일로 만들 수 있다. 1. docker save (docker image -> tar) docker 이미지를 tar파일로 저장하기 위해서는 docker save 커맨드를 사용한다. docker save [옵션] [이미지명] 저장할 파일명을 지정하는 옵션은 -o 를 사용한다. docker save -o nginx.tar nginx:latest..