전체 글 147

우울증은 사람을 어떻게 망가뜨리는가

우울증을 정확히 언제부터 앓고 있었는지는 잘 모르겠지만, 돌이켜 봤을 때 2019년 7월부터 좀 심하게 앓지 않았나 싶다. 왜냐하면 그때부터 내 생활이 바뀌었기 때문이다. 이전에는 무엇이든 열의에 가득 차고 눈빛이 반짝였다면 그 이후로는 모든 걸 하기 싫어했달까. 그때 '행복이란 게 무엇일까', '나는 왜 살아야할까', '죽으면 다 편해지지 않을까' 등 여러 가지 생각을 했었다. 어떻게 겨우겨우 마음을 다 잡았지만 3월에 좀 큰 사건이 터지면서 더욱 수렁에 빠졌었다. 그 이후, 그냥 될대로 되라는 식으로 살았던 것 같다. 억지로든 생활을 이어가기 위해 나름의 제약을 만들어 놓았었다. 만약 그마저도 없었다면 정말 그냥 집에서 하릴없이 누워만 있었을 것 같다. 계속 새로운 자극을 느끼기 위해서 여러 사람도 ..

Diary/Essay 2022.08.17

90%의 사람들이 인정할 수 없는 한 가지 요약

https://www.youtube.com/watch?v=WQmVncXEkAU&feature=youtu.be 1. 내 감정 상태에 따라 나의 태도가 결정되며, 결국 행동에 영향을 미치게 된다. 2. 감정을 다스리는 것은 집중과 관련이 되어 있는데, 머리가 좋고 잘 배우는 사람은 그만큼 정서가 안정되어 있다고 볼 수 있다. 3. 우리의 뇌는 감정과 인지로 구성되며, 이 두 영역이 균형을 이루도록 해야한다. 이에 무드 미터를 사용할 수 있다.

Diary/Note 2022.08.13

Unity에 싱글톤(Singleton) 패턴 적용하기

개요 싱글톤 패턴은 단일의 인스턴스를 보장하고 이에 대한 전역적인 접근점을 제공하는 패턴이다. 이 글에서는 싱글톤 패턴을 Unity에 어떻게 적용시키는지 살펴본다. 싱글톤 패턴에 대한 상세한 정보가 필요하다면 여기를 참고하라. Unity에서 싱글톤을 적용하는 방법은 MonoBehaviour를 상속 받아서 구현하는 방법과 상속 받지 않고 구현하는 방법으로 나뉜다. 후자는 일반 C#에서의 방법과 크게 다르지 않으므로 여기서는 전자 부분만 살펴보려 한다. 구현 우선 싱글톤 추상 클래스를 만들어 원하는 컴포넌트는 해당 클래스를 상속 받아 싱글톤으로 만드는 구조로 갈 것이다. 그럼 아래와 같이 작성할 수 있다. public class SingletonBehaviour : // Unity의 제어를 받기 위해 Mon..

Study/Unity 2022.07.17

Awake / OnEnable / Start의 차이

개요 초기화를 목적으로 제공되는 Unity 이벤트는 아래와 같이 3가지가 있다. Awake: 이 함수는 항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출됩니다. 게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않습니다. OnEnable: (오브젝트가 활성화된 경우에만): 오브젝트 활성화 직후 이 함수를 호출합니다. 레벨이 로드되거나 스크립트 컴포넌트를 포함한 게임 오브젝트가 인스턴스화될 때와 같이 MonoBehaviour를 생성할 때 이렇게 할 수 있습니다. Start: 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출됩니다. 하지만, 이 3가지에 대해서 차이점을 모른다면 적절하게 초기화를 못할 수도 있다. 이 글에..

Study/Unity 2022.07.17

싱글톤 패턴(Singleton Pattern)

개요 싱글톤 패턴(Singleton Pattern)은 오직 한 개의 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공하는 패턴이다. 구조는 아래와 같다. 싱글톤이 되려고 하는 클래스는 Singleton 클래스를 상속 받으면 된다. 구현 구현 방법은 상황에 따라 달라질 수 있으므로 아래의 코드는 정답이 아니라 참고 정도로 여겨야 한다. 모던 C++ template class Singleton abstract { public: Singleton(const Singleton&) = delete; Singleton(Singleton&&) = delete; Singleton& operator=(const Singleton&) = delete; Singleton& operator=(Singleton&..

재귀(Recursion)

재귀 재귀(Recursion)는 함수가 자기 자신을 호출하는 것을 말한다. 재귀의 구조는 재귀를 중단시키는 기저 조건(Base Case)과 기저 조건으로 수렴하게 되는 재귀 조건(Recursive Case)으로 구성된다. 재귀를 사용하는 이유는 문제에 따라 전체를 한 번에 해결하기보다 같은 유형의 하위 작업으로 분할하여 작은 문제부터 해결하는 방법이 효율적*일 수 있기 때문이다. 다시 말해 복잡한 알고리즘을 단순하고 알기 쉽게 표현할 수 있다. 그뿐만 아니라 알고리즘 자체만으로는 얼마나 많은 단계를 깊이 들어가야 하는지 알 수 없을 때에도 사용할 수 있다. *이를 분할 정복법(Divide & Conquer)이라고 한다. 예시를 살펴보자. 어떤 디렉토리가 갖고 있는 모든 파일 및 디렉토리를 지우는 함수를 ..

Study/Algorithm 2022.07.05

직장인의 질문법

회사에서의 질문은 내가 얻어야 할 것을 얻어내는 과정이다. 회사에서의 질문법은 아래 3단계로 발전한다. 1단계 : 질문을 무조건 많이 하겠다는 마인드셋 갖추기 질문을 전혀 하지 않다가 갑자기 제대로 된 질문을 던질 수는 없다. 자주 대화를 나눠보면서 질문하는 역량을 길러야 한다. 그리고 일을 시작하기 전에 매니저의 지시를 제대로 이해한 것이 맞는지 꼭 확인하자. 또, 질문의 타이밍은 빠를 수록 좋다. 2단계 : 내가 먼저 소화한 다음에 그 내용을 토대로 질문하기 질문은 모르는 것을 묻는 것이 아니라 내가 이해한 것이 맞는지 확인하는 것이다. 항상 미리 공부해서 나의 언어로 정리하도록 하자. 그리고 스스로 결정을 내려도 충분한 질문은 하지 말자. '목적'을 달성하는 데 드는 비용이나 다른 부분에서 매니저의..

Diary/Note 2022.03.21

김정주 회장님의 별세 소식을 접하며

https://www.techm.kr/news/articleView.html?idxno=94685 세상 등진 넥슨 김정주...시대를 앞서간 '韓 벤처 영웅' - 테크M 국내 최대 게임사 \'넥슨\'의 창업주인 김정주 회장이 향년 54세의 나이로 미국에서 사망했다. 그는 한국 벤처업계의 신화이자, 줄곧 미래 개척자로 통했다. 1일 넥슨 지주사 엑엔스씨(NXC)에 따르 www.techm.kr 어제 김정주 회장님의 별세 소식을 접했다. 너무 갑작스러워서 매우 놀랐는데, 정확한 사인은 나와 있지 않았지만, 최근 우울 증세가 심하셨다고 한다. 창업 이래 약 30년 가까이 경영하시며 숱한 어려움이 있으셨을텐데, 무엇이 그를 그렇게 힘들게 했을까, 참 안타깝다는 생각이 들었다. 삼가 고인의 명복을 빕니다.

Diary/Note 2022.03.02

가비지 컬렉션

개요 C++에서는 메모리를 프로그래머가 관리한다.* 즉, 동적 할당된 메모리를 전부 사용했다면 시스템에 돌려줘야 한다. 이 과정에서 여러가지 실수가 많이 발생하는 데 아래와 같다. * C++11부터 스마트 포인터 라이브러리가 추가되어 모던 C++에서는 명시적 해제보다는 스마트 포인터 사용을 권장하고 있다. 메모리 누수(Memory Leak) 메모리 사용이 끝났음에도 불구하고 해제하지 않은 것이다. 이중 해제(Double Free) 이미 해제가 된 메모리임에도 불구하고 또 해제하는 것이다. 이미 해제가 된 메모리를 가리키는 포인터를 댕글링 포인터(Dangling Pointer)라 한다. 섣부른 해제(Premature Free) 아직 사용이 끝나지 않았음에도 불구하고 해제하는 것이다. 이런 불편함을 해결하기..

Study/C# 2022.02.06

공용 타입 시스템

개요 .NET에서는 여러 .NET 언어를 지원하기 위해 공용 타입 시스템(CTS; Common Type System)을 지원한다. .NET의 모든 형식은 값 타입(Value Type) 혹은 참조 타입(Reference Type)으로 구분되며 모든 타입은 기본 타입인 System.Object에서 파생된다. C#에서는 아래와 같은 계층을 가지고 있다. 값 타입 C#에서 값 타입은 구조체 / 열거형 / 그 외에 기본 제공 타입으로 구성된다. 값 타입은 아래와 같은 특징을 갖는다. 구조체를 제외한 모든 타입은 System.ValueType에서 파생된다. 스택 메모리에 직접 값이 포함된다. 다시 말해 복사가 일어난다. 상속이 불가능하다. 구조체 멤버 중에 참조 타입이 있다면 메모리 주소가 복사된다.* * 얕은 복..

Study/C# 2022.02.06