최근 글

8개의 글
thumbnail

.NET WeakReference는 pinned 되지 않는다

C# 게임 서버를 프로파일링하고 성능을 개선하는 데 아래 블로그가 많이 도움이 되었다. C# 고성능 서버 - 메모리 단편화 | leafbird/devnote 위 글의 내용에는 WeakReference가 메모리 pinning을 만든다는 부분이 있었는데,...

thumbnail

.NET 배열 공변성으로 인한 성능 고려사항

공변성(Covariance)은 처음 들었을 때 어려운 용어 같지만, '~를 따라 같이 변할 수 있는 성질'이라는 간단한 의미이다. 예를 들어 A라는 타입이 B라는 타입으로 바뀔 수 있을 때, 여기에서 파생되는 C<A> 타입이 C<B&g...

thumbnail

.NET Sealed 클래스 성능 고려사항

C#에는 더 이상 상속할 수 없음을 나타내는 sealed 키워드가 있다. 프레임워크를 개발하거나 할 때 sealed를 붙여서 상속을 금지해, 이를 사용하는 개발자가 잘못 확장하는 것을 막을 수 있다. 다만 .NET 디자인 지침에서는 확장성을 위해 se...

thumbnail

Perforce와 Jenkins 파이프라인에서 워크스페이스 충돌 막기

Git이나 SVN을 사용하는 경우도 많지만, 일정 규모 이상의 게임 회사, 특히 아트 에셋이 큰 언리얼 프로젝트라면 퍼포스(Perforce)도 버전 관리에 자주 사용되곤 한다. 젠킨스(Jenkins)는 많은 기업에서 사용하는 오픈소스 CI/CD 도구다...

thumbnail

.NET에서 DateTime 후킹으로 시간 속이기

개발하다 보면 테스트 목적으로 시간을 변경해야 할 때가 있다. Windows의 경우 보통 제어판에서 시간을 바꿀 수 있고, 실행되어 있는 프로그램에도 바로 바뀐 시간이 적용된다. 하지만 회사 정책으로 시간 변경이 막혀 있거나, 실행 중인 서버에 원격 ...

thumbnail

비 유니코드 퍼포스의 p4python 한글 인코딩 문제

퍼포스 서버는 유니코드/비 유니코드 모드로 설정해서 서비스할 수 있다. 처음 설치하면 기본적으로 비 유니코드 모드인데 한참 운영한 뒤에 유니코드 모드로 변경하는 것은 쉽지 않다. Set up a server for Unicode | P4 Server ...

thumbnail

.NET ReadyToRun 바이너리의 symstore 심볼 서버 업로드 문제

.NET의 배포 방식과 실행 환경은 다양해서 나중에 따로 글을 써서 한번 정리하려고 한다. 원래대로라면 .NET의 코드는 JIT(Just-in-Time) 컴파일러에 의해 런타임에 네이티브로 컴파일된다. 하지만 ReadyToRun 방식으로 배포를 하면 ...

thumbnail

블로그 개설 이야기

프로그래머는 평생을 공부하는 직업이라고들 한다. 아무래도 평생을 공부하다 보면, 학부 때 배우는 컴퓨터 공학의 기본 지식에 더해 실무를 하며 배우는 도메인 지식, 새로 나온 기술, 나만의 노하우 등 다양한 지식이 차곡차곡 쌓여간다. 자연스레 기억력만으...