본문 바로가기

전체 글

(22)
요청 헤더를 이용한 다국어(지역화) 처리 ASP.NET Core에서 요청 헤더에 따른 다국어 처리방법을 설명드립니다. Microsoft Docs에서 이미 자세하게 설명이 되어있고 저 또한 해당 링크를 참고하여 작성하였습니다. ASP.NET Core에서 세계화 및 지역화 | Microsoft Docs ASP.NET Core에서 세계화 및 지역화 ASP.NET Core에서 다른 언어와 문화권으로의 콘텐츠 지역화를 위한 서비스 및 미들웨어를 제공하는 방법을 알아봅니다. docs.microsoft.com 다국어 처리방법에는 기본적으로 3가지 옵션을 제공하고 있으며 각각 우선순위를 두고 적용됩니다. (첫번째가 제일 높아요~) 물론 기본적인 옵션 말고도 커스텀이 가능합니다. 1. 쿼리 스트링(QueryStringRequestCultureProvider) ..
VisualStudio와 NSIS를 이용한 설치파일 만들기 WPF 프로젝트를 진행 중 해당 앱의 설치 파일 요청이 들어왔습니다. 먼저, 오프라인에서의 설치가 필요하므로 간편하게 배포할 수 있는 ClickOnce는 배제하였습니다. 간략하게 계획은 다음과 같았습니다. 1. Microsoft Visual Studio Installer Project는 제약이 많으므로 스크립트로 구성할 수 있는(친숙하고 잘아는) NSIS로 선택하자. 2. VisualStudio에서 Release로 빌드 시 설치 파일까지 자동으로 만들어지도록 하자. 3. 닷넷 프레임워크 버전 확인하여 버전이 낮은 경우 자동으로 설치하자. 4. 앱에서 사용되는 자체 파일(확장자)의 아이콘을 표시하자. 위의 계획을 토대로 아래와 같은 프로세스로 진행되어 집니다. ※ 64비트 윈도우 10 환경에서 개발되었습니..
Dijkstra's algorithm(데이크스트라 알고리즘)​ 1.정의 음의 가중치가 없는 그래프의 한 정점에서 모든 정점까지의 최단거리를 구하는 알고리즘 최단 경로(Shortest Path)를 찾는 대표적인 기법 가중치가 음수인 경우 작동하지 않는다. 그래프 전체에서 가장 작은 가중치의 절대값만큼 모든 간선의 가중치를 더해줘서 알고리즘을 적용할 수 있다. 2.이용 사례 내비게이션: 지도상의 각 도시들을 정점으로, 도로들을 간선으로 갖는 그래프 지하철도 가능하다. 3.알고리즘 1) 출발지 정점을 제외한 모든 정점의 거리정보를 무한대로 초기화 한다. - 노드 및 거리는 우선순위 큐에 Enqueue 2) 거리가 제일 작은 정점을 Dequeue(최초는 출발지 정점이 된다.) 3) 해당 정점과 연결된 정점들의 거리를 업데이트한다. - 최초 거리는 무한대 이므로 무조건 업데..
Priority Queue(우선순위 큐) 정의 1.저장한 순서에 구애받지 않고 우선순위에 따라 정렬되며 꺼낼 수 있다. 2.null과 비교 불가능한(우선순위) 값을 허용하지 않는다. 3.힙으로 구현한다.(가장 효율적이다.) 이용 사례 1.작업 스케줄링 2.네트워크 트래픽 제어 주요 메소드 1.Enqueue: 값과 함께 우선순위를 인자로 받아 최소 힙에 추가한다. 추가 시 우선순위를 비교하도록 한다. 2.Dequeue: 최소 힙의 가장 첫번 째 값을(우선순위가 가장 높은) 반환한다. 참고 GitHub소스
Binary Heap(이진 힙) 정의 완전 이진 트리(complete binary tree) 여러 개의 값들중에서 최대(최소)값을 빠르게 찾아내도록 만들어진 자료구조 부모 노드의 키값이 자식노드의 키값보다 항상 큰(같거나) 힙을 '최대 힙'이라고 한다. 부모 노드의 키값이 자식노드의 키값보다 항상 작은(같거나) 힙을 '최소 힙'이라고 한다. 키값의 대소관계는 부모 노드와 자식 노드간에만 성립하며, 형제 사이에는 대소관계가 정해지지 않는다. 이진트리와 달리 부모 노드보다 작은 값을 왼쪽 자식 노드에 큰 값을 오른쪽 자식 노드에 놓지 않는다. 즉, 삽입되는 데이터 순서대로 왼쪽, 오른쪽 자식 노드에 위치시킨다. 중복된 값이 존재할 수 있다. 우선순위 큐(Priority Queue)를 위하여(?) 만들어진 자료구..
TextBlock의 폰트 사이즈 유동적 조절방법 다이어그램 관련 프로젝트를 진행 중 노드(원, Circle) 개체의 텍스트 사이즈가 11로 고정되어 있는데 텍스트 길이가 3글자로 넘어가면 두줄로 변하므로 유동적으로 폰트 사이즈를 조절가능하지 문의를 받았다. 먼저 생각했던 아이디어는 IValueConverter를 이용하여 parameter값에 특정길이 값을 넣고 벗어나면 Trigger를 통해서 폰트사이즈를 줄이는 방식을 생각을 했었는데 두가지 문제가 있었다. 첫 번째로, 텍스트 길이가 3글자 뿐만 아니라 10글자일 경우 일일히 Trigger를 이용해서 조건을 걸어야 하는 문제. 두 번째로, 사실 이게 가장 큰 문제였는데 위의 아이디어를 적용했더니 변하지가 않았다....;;;(이유 아시는 분??) 그래서 다른 방안을 확인하였고 TextBlock위에 Vie..
파일 작성 시 원자성 유지방법 원자성이란? 파일 작성 과정에서 정전등으로 인한 사고로 파일 작성 실패 및 손실까지 나는 경우가 발생합니다. 윈도우 NT계열 운영체제의 파일 시스템은 NTFS를 사용하는데 트랜잭션 처리 모델이 적용되었지만 파일 작성 시에는 트랜잭션 처리를 하지 못한다고 합니다. 위의 예제처럼 콘솔로 실행 중일 때 노트북(데스크탑)을 임의로 강제 종료하게 되면 첫 스크린샷처럼 NUL(\0)이 발생됩니다. MS에서는 이 문제를 지원하기 위해 TxF기술이 나왔지만 현재는 권장하지도 않고 지원도 하지 않는걸로 보입니다. 그래서 원자성을 지키기 위한 파일작성의 일반적인 접근 방법은 문서를 새 파일에 쓰고 원본 파일을 새 파일로 바꾸는 방법이라고 합니다. 중용한 파일을 작성할 때는 위 처럼 백업을 할 수 있는 방안을 마련하도록 해..
리소스 파일을 이용한 다국어(지역화) 처리 지역화에서 다국어 처리 방법은 데이터베이스, 파일 등 다양한 방법으로 표현할 수 있습니다. WPF에서는 위의 방법말고도 리소스 사전(ResourceDictionary) 및 리소스 파일(.resx)을 이용하여 XAML과 .cs에서 표현할 수 있는데요. 이번장에서는 리소스 파일(.resx)에서 처리하는 방법을 소개하겠습니다. 저의 Windows 표시 언어는 한국어로 선택되어 있고 기본 리소스 파일도 한국어로 시작을 할것입니다. 그러므로 추가적으로 영어 리소스 파일을 생성해보도록 하겠습니다. 1. 리소스 파일 생성 WPF 프로젝트 생성 시 Properties\Resources.resx이 생성되었을 것입니다. 추가적으로 영어를 사용하기 위해 Properties\Resources.en-US.resx을 생성해줍니다..