본문 바로가기

프로그래밍

(36)
CLR via C# 2장 빌드, 패키징, 배포, 응용프로그램과 타입의 관리 .NET Framework 배포 목표 지난 수년간, Windows는 불안정하고 복잡한 운영체제라는 인상이 있었다. 1. DLL지옥 실행되는 응용프로그램들이 여러 제조사가 만든 코드를 실행하기 때문에, 만들어 놓은 코드 조각이 누구에 의하여 어떻게 사용될 것인지 확실히 알수 없음. 사용자들은 프로그램을 업데이트하고 새로운 파일을 배포받을 때마다 문제를 겪을 수 있다. 시스템 DLL의 응용프로그램을 설치할 경우 다른 버전의 DLL로 덮어 씌워진다던지, 하는 문제. (Windows 2000 이후 Windows File Protection 기능을 통해 대부분 해결되었다고 함.) 2. Windows 설치가 복잡하다고 여겨진다. (Windows에서의 응용프로그램 설치) 대다수의 응용프로그램들은 설치 후에 시스템의 ..
CLR via C# 17장 델리게이트 17장 델리게이트. 델리게이트 살펴보기. 이번 장에서는 콜백 함수라는 프로그래밍 메커니즘에 대해서 이야기하려고 한다. .NET Framework는 이 매커니즘을 델리게이트라는 형태로 노출하고 있다. 네이티브 C/C++에서 비멤버 함수의 주소는 단지 메모리 주소일 뿐이다. 이 주소는 다른 정보를 일절 포함하지 않는다. (함수 시그니쳐, 함수 호출 규칙 등의 정보) .NET Framework는 이와 같은 델리게이트라는 타입 안정성을 준수하는 메커니즘을 제공한다. using System; using System.IO; internal delegate void Feedback(int value); public sealed class Program { static void Main(string[] args) { ..
Unity Reflection을 이용한 Factory pattern 구현. Unity에서 사용할 factory pattern을 구현하던 도중 Unity3d College라는 채널에 올라온 영상을 보고 구현. 채널 자체는 기본적인 내용들이 들어가있어서 둘러보기 괜찮을 것 같다. 코드는 영상과 같진 않고, 조금씩만 바꿨다. public interface IHaveStringIdentifier { string Identifier { get; } } public interface IBuffBehavior : IHaveStringIdentifier { void DoBuffBehavior(); } public sealed class BonusHPBuff : IBuffBehavior { public string Identifier => BuffBehaviorType.BonusHp.ToStr..
내가 기대하는 C++17 - std::optional 위와 같이 아이템의 슬롯 인덱스로 해당 아이템을 찾는 기능을 수행하는 일은 빈번하다. 동작이 실패할 수 있는 함수를 호출할 때, 반환 타입이 Nullable하다면 (InventoryItem*) nullptr를 반환하면 된다. 그러나 반환값이 Value 타입이라면? 위와 같이 함수 수행의 결과물인 bool 값을 반환하고, 실제 반환값인 item은 참조 파라미터로 받아야만 한다. Pair 객체로 해당 함수 실행 결과물의 유효성을 반환한다. 반환값의 대상이 되는 객체가 스스로 Valid 하지 않음을 알려주는 함수를 지원하여 Nullptr 검사와 같이 isValid 함수를 콜하도록 한다. std::optional은 이런 경우를 더 우아하게 처리할 수 있도록 도와준다. 위의 코드는 아래와 같이 쓸 수 있다. st..