- 방문자수
- Best
전체 방문자
오늘 방문자
어제 방문자
-
[Unity] 빌드에서 로그 확인하기
게임을 개발하다 보면 각종 기상천외한 오류들을 마주할 때가 종종 있기 마련이다. 대부분은 에디터에서 수정을 마친 후 빌드를 하겠지만, 그렇게 했음에도 실제 빌드로 테스트를 할 때는 또 다른 버그를 마주하곤 한다. 나는 빌드 후 테스트를 하다 버그를 발견할 때면 예외 메시지를 확인해 보고 싶다는 생각이 들 때가 많았다. 예외 메시지를 살펴보는 것만으로도 쉽게 해결의 실마리를 잡을 수 있는 경우가 대부분이기 때문이다. 물론 로그에도 찍히지 않는 버그라면 그 여파는... 유니티 에디터에서는 콘솔(단축키 Ctrl + Shift + C)을 통해 개발자가 찍는 로그나 각종 예외 메시지를 확인할 수 있는데, 이를 빌드 테스트에서도 활용할 수 있다면 좋을 것이다. 내가 찾은 간단한 방법은, 유니티에서 제공하는 로그 이..
-
윈도우11에서 내부 오류로 로그인이 안 되는 경우
사용하던 서피스 북 3를 초기화하는 과정에서 '내부 오류입니다. 다시 시도해 보세요.'라는 메시지와 함께 Microsoft 계정 로그인이 안 되는 상황을 마주했다. Microsoft 계정으로 로그인 하지 않고 로컬 계정으로 설정해도 딱히 문제는 없지만, 동기화라든지 여러 면에서 내키지 않았다. 무엇보다 오류가 났는데 그냥 넘긴다는 것부터가 꺼림칙해서 해결하고 싶었다. 구글링을 해봤지만 성의없는 답변이 대부분이었고, 그나마 몇 안 되는 해결책은 내게는 도움이 되지 않았다. 상당한 시간을 들여 초기화도 해봤지만 소용없었다. 그러다 집에 와서 우연히 해결했다. 내가 마주한 케이스에서는 카페에서 모바일 핫스팟으로 연결한 게 문제였다. 집에 와서 와이파이에 연결한 후 재시도했더니 정상적으로 로그인이 된다. 좀 허..
-
[C#/기본기] 참조 타입을 매개변수에 전달할 때는 Pass by reference일까?
c#을 사용하다 보면, 메서드에 참조 형식(class, interface, delegate 등...)을 매개변수에 전달해야 할 일이 빈번하게 발생한다. 값 형식: Pass by value int, byte, 구조체 등의 값 형식 변수를 매개변수에 전달할 때는 Pass by value로 동작하는 것은 웬만하면 모두 인지하고 있을 것이다. 즉 메서드에 변수를 전달할 때 값 복사가 일어나게 되며, 메서드 내에서 변수의 값을 수정하더라도 원본에는 반영되지 않는다. internal class Program { static void Main(string[] args) { int x = 5; Add(x, 3); System.Console.WriteLine($"x={x}"); } static void Add(int x..
-
[C#] 프로그래머스 131705 - 삼총사
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131705 문제 설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 numb..
-
[C#] GuguClass 한 줄로 구현하기
우연히 GuguClass를 알게 됐다. 사실 드라마가 나왔을 당시에 친구가 페이스북에서 이 영상에 태그를 해줘서 본 기억은 나는데, 그때는 대충 보고 넘겼다가 이제야 GuguClass의 자세한 내막을 알게 된 것. https://www.youtube.com/watch?v=UUJKiTcnGK0 백문이 불여일견이라고 자세한 건 유튜브 영상을 보도록 하고, GuguClass의 실행 결과를 보자면 아래와 같다. 딱 봐도 간단해 보이는 프로그램이지만 몇 가지 유의사항이 있다. 곱셈 결과는 총 2자로 출력되어야 한다. 만약 1자라면 2자가 되도록 앞에 Padding을 추가한다. 각 단은 탭으로 분리하며, 총 4단씩 묶어 출력한다. 묶음과 묶음 사이에는 빈 줄이 추가되어야 한다. 각 행의 끝에는 공백 문자가 삽입되지..
-
[WinUI 3/C#] 앱 지역화
공식 문서: https://learn.microsoft.com/en-us/windows/apps/winui/winui3/localize-winui3-app Localize your WinUI 3 app - Windows apps This guide shows you how to localize your WinUI 3 application learn.microsoft.com UWP와 그 후신인 WinUI 3(이하 이 둘을 묶어 불러야 할 일이 있을 때는 WinUI로 칭하도록 하겠다.)에서는 간단한 방법으로 애플리케이션을 지역화할 수 있다. 다만 지역화를 적용하는 방법은 크게 애플리케이션과 지역화 대상이 동일한 어셈블리인지, 서로 다른 어셈블리인지에 따라 조금 다를 수 있다. 1. 동일한 어셈블리일 때 애플..
-
ReadOnlySpan
Split하기 닷넷 7 기준 Span과 ReadOnlySpan에는 아직 Split이 없다. 닷넷 6에서 Span과 Memory에 온갖 기능이 추가되었고 그 외 내부 API도 차근차근 Span과 ReadOnlySpan으로 바뀌어가는 와중에, 꽤 자주 쓸 법한 Split이 추가되지 않은 것은 꽤나 의외이다. 만약 Split을 하는 목적이 Parse나 문자열 확인 등이라면 string.Split을 쓰는 것보다는 ReadOnlySpan을 이용하는 것이 불필요한 힙 할당을 줄이는 것에 도움이 될 수 있다. 사실 Span와 ReadOnlySpan에는 이미 특정 값과 일치하는 첫 번째 인덱스를 반환하는 IndexOf라는 확장 메서드가 구현되어 있어서, 마음먹고 구현하고자 한다면 간단한 수준의 Split 구현은 그리 어려운 일이 아..
-
[C#] Csv 셀 내부의 JSON string을 고려하는 정규표현식
일반적으로 csv 파일은 쉼표를 기준으로 split하면 간단하게 파싱할 수 있지만, 셀 내부 데이터에 쉼표가 포함되어 있을 때(특히 JSON string인 경우 등) 별다른 예외 처리없이 split하면 셀 안에 있는 데이터까지 잘라버리는 등 원하지 않는 동작을 할 수 있다. 이럴 때는 csv 파싱 라이브러리를 쓴다든지 정규표현식을 통해 셀 내부에 있는 쉼표는 무시하고 파싱하는 과정이 필요하다. 다행히 csv로 저장되는 JSON string은 따옴표로 쉽게 구분되므로, 별다른 라이브러리를 사용할 필요 없이 구현이 간단한 편이다. string[] csv = File.ReadAllLines(@".\csv1.csv"); Regex regex = new(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$..