클라이언트 프로그래머의 일기 34

GPT한테 최적화를 시켜보았다.

개요는 이러하다. 우선 변수 string _desc와 int ReSizeValue가 존재하며 우리는 이 _desc의 길이가 ReSizeValue 값보다 크면 _desc의 중간 값을 기준으로 space인 char ' ' 값을 찾은 다음에 ' ' 값을 \n 값으로 변경시키는 작업을 진행한다. 내가 작성한 코드는 다음과 같다.  static string Function1(string _desc, int ReSizeValue) { if (_desc.Length > ReSizeValue) { int count = _desc.Length / 2; for (int i = count; i  이 함수를 main에서 10만번 돌렸을 때 32ms가 나왔으며, 이후 GPT에게 해당 코드를 상세하게 질문하면서 최적화..

유니티 프로퍼티에 로그 심어서 상태 변화 체크하기(Unity Property Log)

예시 사용 방법 public struct sTest { public int index; } 위와 같은 코드가 있고 해당 index 값을 변경하는 부분이 전체 참조 했을 때 100개가 넘게 나온다고 생각해보자. 우리는 이 index를 추적할 때 이 100개 중 어떤 곳에 로그를 심어야 할 지 고민이 생길 때가 있다. 그럴 때 사용하면 좋은 방법을 설명하려한다. 코드는 다음과 같다. public struct sTest { public int index { get { return gIndex; } { set{ Debug.Log("Change Index = " + value); gIndex = value; } } public int gIndex; } 위와 같이 적용 하면 sTest 구조체에 index 값이 se..

유니티 에러가 함수의 끝을 가리키는 경우 해결 방법.

Unity 2020.3.31f1 버전에서 작업 진행 중 발견한 사항입니다. 에러 로그가 함수의 끝을 가리켜서 정확한 에러 발생 지점을 찾지 못하는 상황이 발생했습니다. 해결 방법은 다음과 같습니다. Ctrl + 7 로 Profiler 를 활성화 후 Deep Profile 체크 후 해당 에러를 다시 발생 시킬 경우 해결 완료.

유니티 빌드 실패 시 FATAL EXCEPTION: UnityMain 해결 방법

유니티 빌드 실패 시 발생하는 에러 로그와 해결 방법입니다. 에러 로그. E/AndroidRuntime: FATAL EXCEPTION: UnityMain Process: packageName, PID: xxxxx java.lang.Error: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Version '2020.3.31f1 (6b54b7616050)', Build type 'Release', Scripting Backend 'il2cpp', CPU 'arm64-v8a' Build fingerprint: 'lge/caymanlm/caymanlm:10/QKQ1.200308.002/2024720026ad4:user/release-keys' ..

CMD로 Tortoise SVN 기능 사용하기(update, commit, log)

주의사항! CMD는 관리자 권한으로 열어주셔야 합니다. Update "(TorToise설치위치)\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:"(프로젝트 경로)" /closeonend:2 Commit "(TorToise설치위치)\TortoiseSVN\bin\TortoiseProc.exe" /command:commit /path:"(프로젝트 경로)" Show Log "(TorToise설치위치)\TortoiseSVN\bin\TortoiseProc.exe" /command:log /path:"(프로젝트 경로)" /closeonend:0 : 대화 상자를 자동으로 닫지 않기 /closeonend:1 : 오류가 없으면 자동으로 닫기 /closeonend:2 :..

Unity Debug Log의 단점 보완하기

유니티의 Debug는 UnityEngine에서 제공하는 매우 유용한 클래스로 하루에 몇 번씩 사용하는 함수입니다. Log와 DrawRay 등 다양한 방법으로 자신이 원하는 위치에 쉽게 Debug를 할 수 있는데요 저는 Debug.Log와 같은 함수들이 APK로 빌드 시 유니티 Build Settings에서 Development Build를 활성화해야만 해당 로그가 출력되는 줄 알았습니다. 하지만 Release로 빌드 시에도 해당 로그들은 출력됐으며, 이 로그들을 개발자가 아닌 앱 사용자라면 누구나 확인할 수 있으며 동시에 불필요한 성능을 잡아먹고 있었습니다. 이 문제를 보다 효율적으로 해결하기 위해 저는 2가지 방법을 채택했습니다. 1. 정규식을 사용해 지워도 되는 로그들과 그렇지 않은 로그들을 분류해서..

iOS) FaceBook ATE 대응하기

해당 작업 내용은 iOS 14 대응을 위한 SDK 업데이트 및 필수 작업사항으로 아래 두 사항을 적용해야 합니다. 1. ‘setAdvertiserTrackingEnabled’ (이하 ATE) flag를 구현하시고, 이를 통해 개인화된 광고(personalized ads)의 송출에 필요한 사용자의 데이터 사용 여부를 오디언스 네트워크에 알려야 합니다. 만일 해당 flag가 구현되지 않았거나, false/no 로 구현되어 있을 경우 오디언스 네트워크는 광고를 서빙하지 않게 됩니다. 이는 미디에이션 사용 여부와 무관하게 SDK 6.2.1을 사용하는 경우에 모두 적용됩니다. 2. SKAdNetwork IDs를 Xcode 프로젝트의 Info.plist에 추가해 주셔야 합니다. 이는 퍼블리셔의 지면을 통해 광고하는..

iOS Build Error) property clientid not found on object of type gidsignin 해결 방법

지난 업데이트까지 빌드가 잘 되던 프로젝트가 해당 에러를 뱉으며 빌드에 실패를 했습니다. 에러가 발생한 이유는 해당 플러그인이 최신 6.xx 포드를 지원하지 않기 때문입니다. 해결 방법은 아래 방법 2개 중 1개를 선택하시면 됩니다.(1번을 추천드립니다, 시간이 없을 경우 2번) 1. 빌드를 새로 뽑아야 하는 경우 Project 내에 GoogleSigninDependencies의 로 수정해줍니다. 2. 이미 빌드를 한 상태에서 다시 한번 빌드 하기 싫은 경우(1회성이며 다음 빌드 부터는 다시 1번 과정을 거쳐야합니다) Export 된 Project에 Podfile로 들어가서 pod 'GoogleSignIn', '>=5.0.0' 값을 pod 'GoogleSignIn', '5.0.2' 로 버전을 고정시켜줍니..

앱스플라이어 인앱이벤트 내 파라미터 값 확인하기(AppsFlyer Checking parameter values ​​in in-app events)

원래 우리 프로젝트는 Adjust로 인앱이벤트와 그 이벤트의 내부 파라미터값을 확인하는 방법을 사용하고있었습니다. 이번에 다른나라와 퍼블리싱 계약을 하면서 Adjust에서 AppsFlyer로 변경작업을 진행해야했는데 해당 SDK 연동 작업은 다 끝난 상태에서 우리가 보낸 Parameters 값이 In-apps events 안에 잘 적용됐는지 확인하려했는데 확인하는 방법을 아무리 찾아봐도 보이지 않아서 AppsFlyer Support에 직접 문의를 했습니다. 그 후 머지않아 확인해보겠다는 답장을 받은 상태입니다. - 2일 뒤 담당자분께서 앱 ID와, 사용중인 플러그인 및 참조하는 Appsflyer 가이드를 알려줄 수 있냐는 답변이 왔습니다. 그리고 한국인 엔지니어가 있으니 언제든 한국어로도 편하게 질문해도..