다른 포스팅에서 한번 다룬 내용이지만 그 포스팅은 종합적인 내용이라 검색하기 좋게 분리한 내용입니다. 연관글 영역 1. 증상 콘솔 애플리케이션(console application)에서 콘솔 창을 클릭하거나 드래그하면 응용프로그램이 멈추는 현상 있습니다. 이것은 '빠른 편집 모드(Quick Edit Mode)'가 활성화 되어 있기 때문입니다. 2. 해결 'WinAPI'를 이용하여 '빠른 편집 모드'를 꺼주면 됩니다. 'WinAPI'를 사용하려면 1) 애플리케이션의 핸들을 가지고 와서 2) 콘솔 모드를 읽은 후 3) 읽은 모드를 변경하고 4) 변경된 콘솔 모드를 적용 하면 됩니다. 2-1. 사용할 함수 마샬링 필요한 함수는 GetStdHandle : 애플리케이션의 핸들을 가지고 오는 함수 GetConsole..
엔티티 프레임워크 같은 프레임워크를 객체 관계형 매핑(Object–relational mapping), 줄여서 ORM이라고 부릅니다. 이런 프레임워크의 장점 중 하나가 약간의 작업만 하면 다양한 DB를 연결할 수 있다는 것입니다. 이 포스팅에서는 'SQLite'와 'MSSQL'를 따로따로 마이그레이션하고 사용하겠습니다. 다른 DB도 얼마든지 추가할 수 있습니다. 연관글 영역 0. 프로젝트 생성 DB 테이블 모델과 컨텍스트(DbContext)를 관리할 프로젝트를 생성합니다. 여기에서 마이그레이션 버전관리가 이루어집니다. '클래스 라이브러리'로 프로젝트를 생성합니다. (프로젝트 이름 : EfMultiMigrations) 누겟에서 아래 종속성을 찾아 설치합니다. Microsoft.EntityFrameworkC..
이전 포스팅에서는 하나의 DB에 여러 컨텍스트를 사용하기 위해 각각 마이그레이션을 생성해서 관리하는 방법을 사용했습니다. 이 방법은 여러 개의 마이그레이션을 관리해야 해서 불편함이 많습니다. 그래서 전체를 관리하는 컨텍스트를 만들고 마이그레이션과 조인이 필요할 때는 이 '전체 컨텍스트'를 따로 만들어 사용하는 것이 좋습니다. 연관글 영역 0. 방법 이 방법의 단점은 전체용 컨텍스트를 따로 관리해야 한다는 것인데..... 관리와 성능의 이점을 생각하면 이 정도는 단점이라고 할수 없죠 ㅎㅎㅎㅎ 결국 마이그레이션만 따로 관리할 뿐 컨택스트를 하나만 쓰는 것과 다름없는 구조가 됩니다. 기본 세팅 이전 포스팅에서 (참고 : [Entity Framework 6] 하나의 DB에 여러 컨텍스트(Multiple DbCo..
프로젝트를 진행하다 보면 여러 가지 이유로 컨텍스트(Context)를 분리해서 관리할 필요가 있죠. 권장은 하나의 DB에 하나의 컨텍스트를 사용하는 것이지만 하나의 DB에 여러 컨텍스트를 사용하는 것도 가능합니다. 여러 컨텍스트를 조인하게 되면 성능이 확 떨어지고 조건에 따라서 마이그레이션 명령이 안 먹힐 수 있습니다. 그래서 하나의 컨텍스트를 사용하는 것을 권장하는 것입니다. 이 포스팅에서는 하나의 DB에 여러 컨텍스트를 사용하는 방법에 대해 알아봅시다. 연관글 영역 0. 프로젝트 생성 및 기본 세팅 이 포스팅에서는 'SQLite'를 사용할 예정입니다. (다른 DBMS도 동일합니다.) 프로젝트를 생성하고 누겟(Nuget)에서 다음 종속성을 찾아 추가합니다. - Microsoft.EntityFramewo..
닷넷 5 이후 버전(기억이 맞나....) 부터는 버전 관리 인터페이스가 바뀌었습니다. 간단하게 '버전 자동 증가' 설정 방법을 다루고 이 정보를 시간으로 치환해보겠습니다. 연관글 영역 1. '버전 자동 증가' 설정하기 이전 버전에서는 프로젝트를 생성하면 'AssemblyInfo.cs'파일이 생성되고 빌드할 때 합쳐졌습니다. 이제는 프로젝트 파일(.csproj)에 정보가 기록되어 있다가 빌드할 때 'AssemblyInfo.cs'파일이 생성됩니다. 그래서 직접 'AssemblyInfo.cs'를 수정하면 안 됩니다. 1-1. 버전에 와일드카드(wildcard) 사용하기 예전 포스팅에서도 다뤘던 내용입니다. (참고 : [.NET] 버전 자동 증가(변경) 기능 켜기 ) 버전 정보에 와일드카드를 사용할 수 있습니다..
소켓 통신 라이브러리를 만들어 사용하는 중인데 '.NET' 응용프로그램에서는 문제가 없는데 유니티에서는 문자열이 깨지는 현상이 발생했습니다....???? 1. 문제의 발견 서버에서는 문자열을 아스키 배열로 보내고 있습니다. .NET 프로그램에서는 아스키를 문자열로 바꿀 때 다음과 같은 방법을 사용합니다. Encoding.Default.GetString(byteData); -- 혹은 -- Encoding.ASCII.GetString(byteData); 그런데 유니티에서는 이렇게 하면 한글 아스키가 디코딩되지 않는 현상이 있습니다. 재연하기 재연용 코드는 다음과 같습니다. //byte[] ascii = System.Text.ASCIIEncoding.Default.GetBytes("가나다라"); byte[] ..
당연히 참(true)입니다만..... 왜 이 당연한 질문을 하는 걸까요? 인터넷을 돌아다니다 보면 빈문자열("")대신 'string.Empty'라는 녀석을 쓰라는 말을 많이 볼 수 있습니다. 이 질문의 답을 이해하려면 .NET에서 문자열이 어떻게 살아가고 있는지 알아야 합니다. 1. 문자열의 구현 대부분의 언어가 'string'형을 구현할 때 내부에서는 'char'배열로 구현합니다. 그래서 아래와 같이 배열로 접근 가능하죠. (언어마다 접근방법이 다를 수 있습니다.) 문자열은 참조 형식 변수? 값 형식 변수? 변수의 형식에는 크게 2가지 가 있습니다. - 참조 형식 (참고 : MS Docs - 값 형식(C# 참조) ) 그때그때 메모리에 할당되고 값을 전달할 때는 복사되어 원본이 보존됩니다. - 값 형식 ..
이전 포스팅에서 미리 구성된 프론트엔드 템플릿(create react app)을 이용하여 비주얼 스튜디오의 디버거에 연결하는 작업을 했습니다. 이제 직접 웹팩을 구성하여 비주얼 스튜디오의 디버거에 연결하는 작업을 해보겠습니다. 연관글 영역 1. 'SpaProxy' 설치 및 설정 이 부분은 이전 포스팅의 '1. 'SpaProxy' 설치 및 설정'의 부분과 동일합니다. 참고 : [ASP.NET Core 6] 비주얼 스튜디오에서 'NPM' 프로젝트 디버깅 - 프론트 엔드(Front-end) 템플릿 사용 2. 웹팩 구성하기 모든 파일을 수작업으로 작성합니다. 인터넷에서 구할 수 있는 간단한 샘플을 만들어 넣을 예정입니다. (참고 : 웹팩 핸드북 - 웹팩 데브 서버) 2-1. 'node'용 폴더 생성 프로젝트 루..
비주얼 스튜디오에서는 자바스크립트(javascript)를 비롯한 타입스크립트(typescript) 같은 프론트엔드 소스 파일들도 중단점(breakpoint)과 같은 디버깅 기능을 이용하여 디버깅할 수 있습니다. 1. 문제의 시작 문제는 웹팩(webpack)과 같은 빌더(혹은 번들러)를 사용하면 디버깅이 안되는 경우가 있다는 겁니다. 비주얼 스튜디오의 고질적인 오류인 중단점이 적중하지 않는 문제와 뒤섞인 것지 아닌지도 알 수가 없죠. 보통은 소스 맵이 생성되지 않아서 그러는 경우가 많은데.... 확인해보면 소스 맵도 정상적으로 생성돼있는데 이런 현상이 발생합니다. (참고 : [Webpack] 소스 맵(Source Map)이 제대로 생성된 건지 확인하는 방법 ) 이 포스팅에서는 웹팩을 사용하면 디버깅이 안되..
프론트엔드 디버깅을 위해 소스 맵(Source Map)이 필요한 경우가 있습니다. 1. 소스 맵 확인하기 크롬 브라우저 기준으로 개발자 모드 > 소스 > webpack:// 소스 맵이 제대로 생성됐다면 여기에 원본 파일들을 볼 수 있습니다. (설정에 따라서 'webpack://'부분이 다를 수 있습니다.) 2. 웹팩에서 소스 맵 생성 설정 웹팩에서 소스 맵을 생성하려면 'webpack.config.js'에서 'devtool' 옵션을 소스 맵을 생성하는 옵션으로 지정합니다. (참고 : webpack.kr - Devtool ) 만약 'devtool' 옵션을 설정했는데도 소스 맵이 생성되지 않는다면 아래와 같이 플러그인을 추가해 줍니다. const webpack = require('webpack'); ... ..