이전 포스팅에서 ASP.NET Core 프로젝트에 NPM을 올리는 작업을 했습니다. 이 프로젝트에서 이것을 제대로 쓰려면 결국 js파일과 css(여기서는 sass)를 빌드(혹은 미니마이징)해서 웹페이지에서 사용해야 합니다. 이 포스팅은 webpack와 sass를 이용하여 js,css파일을 출력하고 MVC를 통해 이 파일을 사용하도록 하겠습니다. [ASP.NET Core 6] ASP.NET에 NPM 세팅하기 (feat. Task Runner) [ASP.NET Core 6] ASP.NET MVC + NPM (feat. webpack, sass) 1. 프로젝트 생성 ASP.NET Core MVC로 프로젝트를 생성한 후 이전 포스팅에서처럼 npm을 설정합니다. package.json 설정은 다음과 같습니다. 1..
기본템플릿에는 'startup.cs'가 없습니다. 모든 기능이 'Program.cs'하나로 작동할 수 있도록 구성되어 있습니다. 왜 없어졌는가? 덕지덕지 연결된 구성을 간단하게 코드 몇 줄로 구성할 수 있도록 한 것입니다. (참고 : Andrew Lock | .NET Escapades - Comparing WebApplicationBuilder to the Generic Host ) 'Program.cs'에서 'Startup.cs'로 진입하는 구조는 왜 저런 구조가 되었는지를 이해하지 않으면 쓸데없이 파일만 2개로 나눈 듯한 느낌을 받게 되죠. 이렇게 기존 구조가 제거된 구문을 '최 상위문(top-level statements)'이라고 합니다. (참고 : MS Learn - 자습서: 배우는 동안 최상위 ..
별생각 없이 콘솔로 프로그램을 만들었는데.... 기본적으로 있는 콘솔 모드들 때문에 이상한 동작을 하는 경우가 있습니다. 대표적인 것이 "빠른 편집 모드(Quick Edit Mode)"라는 것인데 콘솔 창을 클릭하거나 드레그하면 응용프로그램이 멈추는 현상입니다. 이 모드를 바꾸는 방법을 알아봅시다. 연관글 영역 1. WinApi를 사용해야 한다. 몇 가지 방법들이 있지만 결국은 WinApi를 이용하는 것이 가장 편합니다. WinApi로 콘솔 모드를 변경하려면 1) 디바이스(여기서는 콘솔)의 핸들을 받아서 2) 콘솔 모드 설정값을 받아온 뒤 3) 받은 설정값이 원하는 설정을 추가(혹은 제거)하고 4) 콘솔 모드 설정값을 다시 설정합니다. 설정값이 uint(UInt32)로 된 플래그(flag) 값이라 비트연..
다른 포스팅에서 타이머의 정밀도 문제로 FPS(Frames Per Second)를 구하면 정확하지 않다고 이야기를 했었습니다. (참고 : [.NET] 게임 루프(Game Loop)를 구현할 때는 'Environment.TickCount'를 사용하면 안 된다. ) 스톱워치(Stopwatch)를 이용한 정밀 타이머를 만들어 보고, 이것을 이용하여 둘의 차이가 얼마나 나는지 알아봅시다. 1. 타이머 구현 스톱워치 타이머를 구현하려면 1) 무한 루프를 돌리고 2) 우리가 원하는 간격에 이벤트를 보내는 3) 비동기 쓰래드를 만들어야 합니다. 구현은 아래와 같이 합니다. public async Task Start() { bool bLoop = true; long nLastTime = 0; Stopwatch sw =..
언제부터인가 비주얼 스튜디오에 핫 리로드(Hot-Reload) 라는 것이 생겼습니다. 소스 코드를 수정하면 바로 화면을 갱신하여 보여주는 기능입니다. 보통 ASP.NET와 WPF에서 사용하는 기능인데.... 이게 저장하면 바로 새로고침을 해버려서 참 불편한 기능입니다. 물론 순수하게 UI만 수정하는 경우에는 쓸만합니다. 옵션의 위치 도구 > 옵션 > 프로젝트 및 솔루션 > ASP.NET Core 에서 - CSS 핫 다시 로드 - 자동 빌드 및 새로 고침 옵션 을 원하는 대로 수정하시면 됩니다. '자동 빌드 및 새로 고침 옵션'을 보면 저장만 해도 지 혼자 빌드한다는걸 알 수 있습니다;;;; 전 마음 편하게 없음으로 바꿨습니다 ㅋ 마무리 WPF에서는 엄청 유용한데(거긴 자동 빌드를 안 하니까...) ASP..
.NET으로 사운드 파일을 재생하려면 보통 'SoundPlayer'를 사용합니다. 근데 이놈은 한 번에 하나의 파일만 재생이 가능합니다. 여러 파일을 재생하려면 'DirectX SDK', 'Windows Media Player SDK', 'NAudio' 같은 외부 라이브러리를 이용하거나 'WinAPI'를 이용해야 합니다. 이 포스팅에서는 'WinAPI'의 'mciSendString'를 이용하여 재생하겠습니다. 1. 'SoundPlayer'를 사용해 보자 'SoundPlayer'를 사용하여 파일을 재생해봅시다. 아래와 같이 개체를 초기화하고 private SoundPlayer _soundPlayer1; this._soundPlayer1 = new SoundPlayer(); this._soundPlayer1..
Environment.TickCount를 써서 게임 루프(Game Loop)를 만들었는데 계산한 FPS와 다르게 나옵니다??? 1. 'Environment.TickCount'의 문제원인을 찾던 중 발견한 내용MS Docs - <a href="https://docs.microsoft.com/ko-kr/dotnet/api/system.environment.tickcount?view=net-6..
'CentOS'는 최소 설치를 하면 네트워크가 비활성화 되어 있습니다. 이것을 활성화해야 원격 접속이 되니 어떻게 하는지 알아봅시다. 1. 이더넷 이름 찾기 최소 설치를 하고 아래 명령어를 날려봅시다. # ip addr show 두 번째가 인터넷과 연결된 이더넷의 이름입니다. 할당된 IP가 없는 걸 확인 할 수 있습니다. 이 이름을 기억해 둡시다. 2. 이더넷 활성화하기 아래 명령으로 사용할 이더넷 설정파일을 vi로 열어줍니다. # vi /etc/sysconfig/network-scripts/ifcfg-[장치 이름] 제 이더넷 이름은 'ens192'이니 아래와 같습니다. # vi /etc/sysconfig/network-scripts/ifcfg-ens192 vi가 열리면 아래와 같이 되어 있을 텐데 (아..
이전 포스팅에서 JWT(JSON Web Token)를 발급하고 인증하기 위한 처리를 했습니다. 이 포스팅에서는 이전 포스팅에서 만든 인증 처리를 연결하는 작업을 합니다. 연관글 영역 이 시리즈는 'ASP.NET Core 6'에서는 인증 처리를 이런 식으로 하는구나~~~ 라는 걸 알려주기 위한 목적이라 설계가 난잡합니다. 0. 구조 이 프로젝트에서는 'SQLite + Entity Framework'를 사용합니다. 이렇게 구성하면 DB를 사용하지 않을 때는 'InMemory'를 사용하여 메모리DB를 사용할 수 있어 이식성이 좋아서입니다. 연결정보를 받으면 코드 퍼스트(Code First) 방식으로 DB에 연결하여 테이블을 생성하고 데이터를 관리하게 됩니다. 누겟에서 Microsoft.EntityFramewo..
'OAuth2'는 인증방식을 표준화해둔 프로토콜입니다. 이것 밑에 토큰을 발급하고 인증하기 위한 시스템을 만들어 넣어야 하는데.... Json으로 토큰을 발급하고 인증하기 위한 방법의 하나가 'JWT(Json Web Tokens) 인증'입니다. 다른 프로젝트에서는 'IdentityServer4'를 이용하여 'JWT'을 발급하고 인증하는 것을 했었는데 이 포스팅에서는 직접 'JWT'를 발급하고 사용하는 방법을 다룹니다. 1부는 JWT를 발급하고 확인하는 것을 구현하고 2부에서는 이렇게 만든 JWT 사용하는 방법을 다룹니다. 연관글 영역 0. 프로젝트 생성 및 구성 프로젝트를 'ASP.NET Core'로 생성합니다. 'ASP.NET Core'에서 인증처리를 다음과 같은 구조를 가집니다. 미들웨어를 주입하면 ..