본문 바로가기

프로그래밍

(36)
Unity SceneManager.sceneLoaded Unity 코드 작성 중, 해당 Scene이 모두 로드되었을 경우 어떤 작업을 해줘야하는 일이 있어 관련 API를 찾아보았다. UnityEngine.SceneManagement 네임 스페이스안의 SceneManager.sceneLoaded 이벤트에 자신의 이벤트를 추가해주면 된다. 다만 새로 알게 된 것은, MonoBehaviour의 OnEnable에서 해당 이벤트에 추가하는 경우에도 정상적으로 씬의 로드 이벤트 통지를 받을 수 있다는 것이다. 생각하기로는, SceneManager.sceneLoaded가 먼저 호출이 된 뒤, MonoBehaviour.OnEnable의 순서일 줄 알았는데, 오히려 그 반대로 해당 씬의 모든 오브젝트의 OnEnable을 호출 한 뒤 씬 로드 이벤트가 발생한다. https:/..
유니티 테스트 러너(Unity Test Runner) 최근 클린 코드, 클린 코더라는 책을 읽으면서 TDD에 대한 의지가 생겼다. 두 책 모두 유닛 테스트의 중요성에 대해 많은 지면을 할애하여 설명하고 있었다. 그렇지 않아도 진행하던 개인 프로젝트의 규모가 점점 커져가고 있어 복잡도가 높아지고 있어 좋은 기회라는 생각이 들었다. 유니티는 Unity Test Runner라는 이름으로 자체 유닛 테스트를 지원하고 있었다. 공식 문서를 살펴보니 유닛 테스트는 EditMode와 PlayMode의 두 가지 종류가 있다. EditMode는 본래 내가 생각하던 유닛 테스트의 개념으로 생각하면 될 것 같았다. 그에 반해 PlayMode는 테스트를 실행하는 경우 우선 Play상태가 되고, 코루틴을 지원하는 등의 유니티 특화 사양의 유닛 테스트로 이해했다. TDD를 진행해본..
Github for Android의 베타 버전이 나왔습니다. 모바일에서 Github을 봐야할 때는 Fasthub이라는 앱을 많이 사용했었는데, 아직 그보다는 지원하는 기능이 적은 것 같습니다. 특히 아직까지 소스 보는 기능을 못찾겠어요. 아니면 아예 지원을 안하는 건지. 그래도 UI는 깔끔하고, 앞으로 기능이 더 추가될 것을 기대하고 있습니다.
프로그래머스 연습문제 - 위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothe..
프로그래머스 연습문제 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. bool solution(vector phone_book) { sort(..
[NDC] 이놈의 enum의 박싱을 어찌할꼬 (동영상링크) https://www.youtube.com/watch?v=pP9R58fQo_k 한번 쭉 봤는데 가볍게 보기 좋고 정리하기도 좋은 내용이라 나중에 정리해야지.
CLR via C# 23장 어셈블리 로딩과 리플렉션 Notion에서 보기 이번 장에서는 컴파일 타임에 전혀 알지 못했던 타입에 대해 타입의 세부 정보를 알아내고 인스턴스를 생성하는 등의 방법(리플렉션)에 대한 것을 배운다. 이는 주로 동적으로 확장 가능한 프로그램을 만들 때 활용되는 기법이다. 동적으로 확장 가능한 프로그램은 22장에서 살펴본 CLR 호스팅과 앱도메인의 장점을 활용할 수 있다. 호스트는 고유의 앱도메인 내에서 다른 앱도메인의 코드(애드인 등)를 수행할 수 있고 또 언로드할 수 있다. 어셈블리 로딩 컴파일 타임에 JIT 컴파일러가 IL을 컴파일하다 보면 어떤 타입들이 참조되고 있는지를 알게 된다. 그리고 런타임에는 참조되고 있는 타입들이 어느 어셈블리에 정의되어 있는지를 확인하기 위해서 TypeRef, AssemblyRef 메타데이터 테이블..
CLR via C# 9장 매개변수 선택적 매개변수와 명명된 매개변수 메서드를 선언할 때, 매개변수에 기본값(default)을 설정할 수 있다. 이렇게 매개 변수에 기본값을 설정한 매서드를 호출할 때에도 매개변수를 선택적으로 사용할 수 있다. 이 떄 이 선택에 누락된 매개변수는 기본값이 대입된다. 메서드를 호출할 때 특정 매개변수의 이름을 지정하여 호출하는 것도 가능하다. 매개 변수에 기본값을 지정할 때의 규칙과 가이드라인. 메서드, 생성자 메서드, 인덱서 (this[int idx] 로 접근하는 메서드)와 같이 매개변수가 존재하는 프로퍼티, 델리게이트를 사용할 경우 기본값을 지정할 수 있다. 기본값이 있는 매개변수는 C++과 동일하게, 기본값이 없는 매개변수보다 앞에 와야 한다. 기본값은 컴파일 타임에 알 수 있는 값이어야 한다. 레퍼런스..