.NET 배열 공변성으로 인한 성능 고려사항
공변성(Covariance)은 어려운 용어처럼 들리지만, '따라서 같이 변할 수 있는 성질'이라는 간단한 의미이다. 예를 들어 A라는 타입이 B라는 타입으로 바뀔 수 있을 때, 여기에서 파생되는 C<A> 타입이 C<B> 타입으로 ...
공변성(Covariance)은 어려운 용어처럼 들리지만, '따라서 같이 변할 수 있는 성질'이라는 간단한 의미이다. 예를 들어 A라는 타입이 B라는 타입으로 바뀔 수 있을 때, 여기에서 파생되는 C<A> 타입이 C<B> 타입으로 ...
C#에는 더 이상 상속할 수 없음을 나타내는 sealed 키워드가 있다. 프레임워크처럼 다른 개발자가 내 클래스를 사용할 때 잘못된 확장을 막기 위해 sealed를 붙여 상속을 차단할 수 있다. 다만 .NET 디자인 지침에서는 확장성을 위해 굳이 se...
예산이 넉넉하지 않다면 Git이나 SVN을 사용하는 경우가 많지만, 일정 규모 이상의 게임 회사에서는 퍼포스(Perforce)를 버전 관리 솔루션으로 선호하는 편이다. 한편, 젠킨스(Jenkins)는 많은 기업에서 사용하는 오픈소스 CI/CD 도구다....
개발하다 보면 테스트 목적으로 시간을 변경해야 하는 필요가 생길 때가 있다. Windows 경우 보통 제어판에서 시간을 바꿀 수 있고, 실행되어있는 프로그램에도 바로 바뀐 시간이 적용된다. 하지만 회사 정책으로 시간 변경이 막혀있거나, 실행 중인 서버...
퍼포스 서버는 유니코드/비 유니코드 모드로 설정해서 서비스 할 수 있다. 처음 설치하면 기본적으로 비 유니코드 모드인데 한참 운영한 뒤에 유니코드 모드로 변경하는 것은 쉽지 않다. Set up a server for Unicode | P4 Server...
.NET의 배포 방식과 실행 환경은 다양해서 나중에 따로 글을 써서 정리 한번 하려고 한다. 원래대로라면 .NET의 코드는 JIT(Just-in-Time) 컴파일러에 의해 런타임에 네이티브로 컴파일 된다. 하지만 ReadyToRun 방식으로 배포를 하...
프로그래머는 평생을 공부하는 직업이라고들 한다. 아무래도 평생을 공부하다 보면, 학부 때 배우는 컴퓨터 공학의 기본 지식에 더해 실무를 하며 배우는 다양한 도메인 지식, 새로 나온 기술, 나만의 노하우 등 다양한 지식들이 차곡차곡 쌓여간다. 자연스레 ...