가비지 컬렉터란? 메모리 관리 기법 중의 하나로, 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 영역을 찾아내어 해제하는 기능. (이하 GC) C 혹은 C++ 에서 할당과 해제를 직접하는 언어들도 있지만 항상 사람은 실수를 하기 마련이기에, 해제를 하지않거나 혹은 해제된 메모리를 사용하면서 문제가 발생하기에 프로그래밍 언어가 직접 메모리 해제를 관리하는 기능이다. 유니티는 C#의 GC와 기본적으로 비슷하지만 몇가지 차이가 있다. 유니티 GC Doc 가비지 컬렉터 개요 - Unity 매뉴얼 Unity에서는 가비지 컬렉터를 사용하여 애플리케이션과 Unity에서 더 이상 사용하지 않는 오브젝트로부터 메모리를 회수합니다. 스크립트가 관리되는 힙에 할당하려고 하지만 할당을 수용할 수 docs.unity3d..
XBR는 텍스처 스케일링 및 업샘플링 기술에 대한 쉐이더지만 주로 픽셀아트형 게임의 그래픽을 개선하는데 주로 사용된다. XBR 쉐이더의 기본 이해는 각 픽셀의 주변 픽셀 값을 분석하여 보간을 하는 작업이 이루어지는 쉐이더입니다. 던파모바일에서 보여주듯 주변 픽셀의 계산을 얼마나 할지에 대한 차이에따라 선명도차이가 극명하게 나타난다 https://docs.libretro.com/shader/xbr/ xbr - Libretro Docs xbr Background Preview Image External Links Last update: 2023-09-03 docs.libretro.com Libretro 라는 개발자가 설명하는 XBR 쉐이더의 적용법에 따르면 같은 이미지지만 다른 느낌으로 표현할 수 있는 모습..
자바로 개발을 하다보면 'Lambda can be replaced with method reference' 라는 추천이 뜬다. 이유인즉슨 var list = map.values().stream() .map(ClassA::getID).toList(); 이런식으로 메소드 참조를 하게되면 더욱 코드를 간결하고 가독성을 향상시키는데 도움이 되기때문이다. 기능은 이게 끝이다. 근데 자바는 어떻게 가능한걸까? ChatGPT에게 물어보았고 내가 이해한 이유는 다음과 같다. 1. 메서드가 일급 객체로 취급 Java 8부터 메서드가 일급 객체(First-Class Citizen)로 취급되기 시작하고 이로인해 메소드를 변수에 할당하고 함수의 인자로 전달할 수 있게 되었다. 따라서 메소드도 데이터와 마찬가지로 처리할 수 있..
인텔리제이로 서버 개발을 진행하며 로그가 많다면, 내가 원하는 로그만 보기 어렵다. 이럴때 유용한 플러그인이 Grep Console이 있다. 설치방법 (Windows 기준) 1. Shift + Shift 후 plugins 검색 후 실행 2. Marketplace -> grep console 검색 후 설치 Grep Console 플러그인 설치 후 Settings 화면에서 Grep Console에서 Highlighting 옵션을 활성화 한 후 각 로그 타입에 대한 색상을 지정해주면 색으로 표시되어 더욱 구분이 되는 콘솔창을 만들 수 있다. 추가로 콘솔릭 우클릭 후 Grep을 누르면 로그에 대한 필터링 또한 사용 가능하다.
Struct와 Class의 차이를 깊게 생각하지 않고 사용한다면 단순한 객체로 활용할 것이다. 이번엔 두 기능의 차이점에 대해 알아보자. 1. 형식 Struct : ‘구조체 형식’은 데이터와 관련 기능을 캡슐화할 수 있는 값 형식입니다. 구조체 형식은 struct 키워드를 사용하여 정의 값 형식 - C# 참조 값 형식과 참조 형식, 값 형식의 종류, C#의 기본 제공 값 형식 learn.microsoft.com Class : 클래스는 참조 형식 으로 데이터에 대한 참조를 저장 참조 형식 - C# 참조 참조 형식(C# 참조) 아티클 04/07/2023 기여자 12명 피드백 이 문서의 내용 --> C# 형식은 참조 형식과 값 형식 두 가지가 있습니다. 참조 형식의 변수에는 데이터(개체)에 대한 참조가 저장되..
Partial : 부분적, 일부분의 ... C#에서 partial class란 두 개 이상의 파일에 걸쳐 정의된 하나의 클래스를 말한다. public partial class ClassA { public void Function1() { } } public partial class ClassA { public void Function2() { } } 위처럼 ClassA는 2개의 클래스로 분리되어 정의되어 있지만 각 클래스 내부에서는 Function1과 Function2를 정의하고 있으며 public void Main() { ClassA myClass = new ClassA(); myClass.Function1(); myClass.Function2(); } Partial된 클래스의 함수를 모두 호출할 수 ..
C#에서 다중상속이 안되는 이유를 말해보라고 하면 다들 알지만, 선뜻 이런 이유에서 안된다 라고 바로 생각이 안나는 경우가 있다. 왜 안되는지 하나씩 짚어보자 다중 상속이란, 둘 이상의 클래스를 동시에 상속하는 것을 말한다. 이를 지원하는 언어로는 C++이 있지만 이 다중상속에는 많은 문제가 있다. (C++에서도 다중상속을 지원하지만 상호참조라는 문제가 있다) 1. 메서드 충돌 : 서로 다른 부모 클래스로부터 상속받은 메서드 이름이 같다면, 어떤 메서드를 호출해야 하는지에 대한 모호한 부분이 발생한다 public class ClassA { public virtual void Function() { } } public class ClassB { public virtual void Function() { }..
C#에서 정적 클래스 (static class)는 특별한 종류의 클래스로 객체의 인스턴스를 생성하지 않고 사용할 수 있는 클래스를 말한다. 보통 유틸리티 함수들, 헬퍼 함수들을 제작하는데 사용된다. Static 클래스를 사용하는 여러가지 이유는 1. 객체를 인스턴스 생성 없이 사용한다는 점 2. 전역에서 접근이 용이하다는 점 3. 네임스페이스를 통해 그룹화하여 코드의 구성과 가독성을 개선할 수 있다는 점 등등 많은 이유가 있지만 가장 큰 이유는 인스턴스가 필요하지 않기 때문에 더 적은 공간을 차지한다는 점이라고 생각한다. 예시 public static class MathUtility { public static int Add(int a, int b) { return a + b; } public stati..