[SVN] 커맨드라인으로 저장소 스위치 하기

부제: Repository svn switch in command-line 윈도우에서는 TortoiseSVN이라는 GUI툴이 있어서 쉽게 스위치가 가능하다.  Mac에서도 여러 GUI툴이 있지만, 아직 TortoiseSVN같이 안정적인 기능을 가진 툴을 찾지 못했다 (왜 Mac용 TortoiseSVN은 없을까?).  그래서 매번 브랜치를 바꿀일이 있으면 Mac에서는 커맨드라인을 즐겨 쓰곤 한다. 로컬 저장소에 C:\svnrepo 라는 이름을 가진 체크아웃된 폴더가 있다고 하자.  체크아웃된 폴더라면 C:\svnrepo\.svn 이 존재한다.  보이지 않는 … Read more[SVN] 커맨드라인으로 저장소 스위치 하기

[C++] 클로져(Closures)가 그래서 무엇인가요

Effective Modern C++ 책에서 Lambdas (람다) 섹션쪽을 읽다 보면 Closures (클로져) 얘기가 많이 나온다.  C++ 에서 클로져가 정확히 뭘까.  어떤 이는 람다가 클로져라고 하기도 하고, 어떤 이는 캡쳐와 클로져를 같이 설명하면서 더 이해하기가 어려워지기도 한다.  검색을 이리저리 해보다가 이펙티브 책 시리즈의 저자 Scott Meyers 의 블로그에서 람다와 클로져에 대해 설명한 글을 보았다.  아마도 나같이 혼란스러워 하는 … Read more[C++] 클로져(Closures)가 그래서 무엇인가요

[iOS] ipa 파일에서 XCode 버전 확인하기

XCode버젼을 ipa에서 찾을 일이 자주 있지 않지만 막상 필요해서 찾고자 하면 기억이 안나곤 한다.  한번 정리해보자. 우선 Mac. Example.ipa라고 있다고 가정하면, 우클릭 하여 아카이브 유틸리티를 실행한다. 아카이브 유틸리티는 Mac OS의 기본 압축 관리자이다.  OS 버전에 따라서 파일의 위치는 다를 수 있으나, 10.14이상에서는 /System/Library/CoreService/Application/Archive Utility.app에서 찾을 수 있다. 아카이브 유틸리티를 이용하여, 압축을 풀면 Payload라는 폴더가 생긴다.  … Read more[iOS] ipa 파일에서 XCode 버전 확인하기

Crashlytics는 너무하다

부제: Firebase는 너무하다 크래시 리포트 서비스 사용기에서 언급했듯이 Firebase기반의 Crashlytics를 기존 프로젝트에 연동하는 것은 어렵다.  특히 리졸버를 사용하여 버젼을 관리한다는 것은 사실 구글이 어떤 생각으로 그런 것을 만들었는지 아직까지 정확히 이해를 하지 못했다.  리졸버의 취지는 물론 알 것 같다.  Android와 iOS의 관련 라이브러리들과의 dependency를 해결하고자 자동으로 혹은 수동으로 버젼을 관리해준다는 것인데, 아주 이상적으로 들리는 얘기지만, … Read moreCrashlytics는 너무하다

크래쉬 리포트 서비스 사용기

부제: Unity에서 crash 리포트 서비스 연동하기 적당한 crash 리포트 서비스을 찾아보았다.  물론, 무료가 좋다.  하지만, 무료라면 유료보다는 약간의 불편함이나 기능의 부족함을 참아야 할 것이다.  우선, Unity 내부 툴, Apteligent, Visual Studio App Center, Firebase기반의 Crashlytics을 살펴 보았다.   Unity에서 제공하는 crash 리포팅 기능은 나쁘지는 않다.  무료라는 큰 장점이 있고, 설치나 연동이 간단해서 누구나 쉽게 사용할 수 … Read more크래쉬 리포트 서비스 사용기

[iOS] iOS12에 iOS11-style 메모리 적용

iOS12에서 메모리가 뻥튀기 된 이후 애플에 소명 절차를 걸쳐 새로이 provisioning 파일을 받아 적용해보았다 (소명에 필요한 JetsamEvent log 추출은 여기 링크 참조). 뻥튀기라고 했지만 이전에 카운트 되지 않았던 메모리들이 iOS12에서 카운트되면서 늘어난 것인데(애플 메뉴얼 링크), 일부 유저 입장에서는 기존에 잘 돌아가던 앱이 업데이트 이후에 크래시가 나는 상황을 피할 수 없게 된 것이다.  몇십MB 정도라면 어느정도 … Read more[iOS] iOS12에 iOS11-style 메모리 적용

[Unity] 스크립트로 애니매이션 커스터마이즈하기

부제: Customize Animation using Script 애니매이션을 스크립트로 커스터마이즈(이하 변경)하기 위해서는 스크립트의 Execution Order(이하 실행 순서)에 대한 이해가 필요하다.  스크립트의 실행 순서란 무엇을 말하는가.  Unity 메뉴얼에 도식화가 잘 되어 있는데, 약간 복잡해 보이지만 위에서 아래로 순서대로 정렬되어 있기 때문에 보기는 어렵지 않다. Script Execution Order (Unity 메뉴얼) 실행 순서에 대해 자세한 설명은 차후에 하기로 하고, 그림에 … Read more[Unity] 스크립트로 애니매이션 커스터마이즈하기

[Unity] 오브젝트 생성/삭제시 Editor에서 메모리 해제가 잘 안된다면

Unity editor에서 프로젝트를 실행하고, Profiler를 이용하여 메모리 상태를 확인하는 경우 게임오브젝트를 생성후 삭제했음에도 불구하고, 여전히 메모리에 레퍼런스가 잡혀 있는 경우가 있다.  디바이스에서는 발생하지 않는 경우라서 editor 내부에서 캐시를 하는 경우로 보이지만, 매번 디바이스에서 프로파일링하여 확인하는 것도 여간 번거로운 일이 아니다.  시간을 줄이고 생산성을 높이자면 editor에서도 어느 정도 정확한 메모리 정보가 필요하다.  예를 들어 하나의 게임오브젝트를 … Read more[Unity] 오브젝트 생성/삭제시 Editor에서 메모리 해제가 잘 안된다면

[iOS] Find JetsamEvent log

JetsamEvent log가 무엇이고, 어떻게 얻는가. 구글링을 열심히 해보니 대충 low 메모리시에 시스템이 남기는 메모리 관련 로그라는 것을 알 수 있었다. XCode와 Device에서 둘 다 추출할 수 있다고 했지만, 나의 경우는 오직 device에서만 로그를 찾을 수 있었다. ( iPhone에서 Settings > Privacy > Analytics > Analytics Data 메뉴로 들어가면 각종 로그 파일을 확인 할 수 있다. … Read more[iOS] Find JetsamEvent log

[Unity] 에셋번들 사이즈 줄이기

부제: Assetbundle dependecy를 개선하여 에셋번들 사이즈 줄이기 Unity로 게임 개발을 하다보면 리소스(프리팹, 텍스쳐, 애니매이션, 메터리얼 등)를 대부분 assetbundle로 분리하여 관리하게 된다.  특히, 개발 기간동안 리소스가 점점 많아지게 되면  assetbundle이 중복된 리소스를 포함하는 경우가 생기는데, 이를 정리하는 것은 쉽지 않은 일이다.  중복된 리소스는 어떻게 하면 생기게 되는지, 그리고 어떻게 개선할 수 있는지를 간단히 샘플로 테스트 해보았다.  … Read more[Unity] 에셋번들 사이즈 줄이기