bUseAdaptiveUnityBuild (Boolean)

Use a heuristic to determine which files are currently being iterated on and exclude them from unity blobs, result in faster incremental compile times. The current implementation uses the read-only flag to distinguish the working set, assuming that files will be made writable by the source control system if they are being modified. This is true for Perforce, but not for Git.

4.19 올리고 나서 작업하는 파일만 Unity Build 에서 빼서 컴파일이 되길래 엔진 기능인 줄 알았는데 마침 그 때 Perforce 로 저장소를 바꿔서 동작하는거였다. -ㅁ-

비싸고 빠른 쓰레기 Perforce 는 encoding 이 달라도 같은 파일으로 인식하는 경우가 있는 것 같다. reconcile 을 해도 modified 로 체크가 되질 않았다. svn 같으면 지우고 update 받으면 되는데 Perforce 는 이게 애매했다.

초기 버전으로 workspace 를 돌리고 그걸 최신화 하는 식으로 비슷하게 처리했다.

  • 일단 문제 폴더를 선택하고 오른쪽 마우스 메뉴에서 Get Revision 을 선택한다.
  • Specifying revision using 을 선택하고 Changelist 에 0 을 입력한다.
  • Get Revision 버튼을 누르면 populate 되었던 처음 버전으로 폴더 내용이 돌아간다.
  • 그 상태에서 Get Latest Revision 을 눌러 최신 버전을 받는다. 
p4 command line 에서는 sync 명령어를 이용하면 된다. :(


aws 아이콘

해본 것/팁과 정보 2018.07.31 00:00 posted by 이밋

aws 로 작업하다보면 아키텍처 다이어그램을 그릴 일이 많은데 gliffy 에서 아이콘을 제공하고 있으나 최신 서비스에 대한 아이콘은 없을 수도 있다.

aws 에 아이콘 리소스를 제공하고 있으니 아래 URL 을 참고하자.

https://aws.amazon.com/ko/architecture/icons/

PowerPoint, Visio, EPS or SVG, 스케치 형식 4가지 종류가 제공된다.


Edit > Perference 창의 'Merge' 탭에서 바꿀 수 있다.
Ohter application을 선택하고 Location 을 TortoiseMerge 실행파일 경로로 바꾸고 Argument 를 '/base:%b /theirs:%1 /mine:%2 /merged:%r' 로 하면 될 것 같으나 안된다.
비싸고 빠른 쓰레기 Perforce 가 파라미터 변환을 안하는 것 같다.

TortoiseMerge 경로에 헬퍼용 배치 파일을 먼저 생성한다.

TortoiseMerge.exe /base:%1 /theirs:%2 /mine:%3 /merged:%4

Location 에서 배치 파일을 선택하고 Arguments는 그대로 둔다.

출처 : https://stackoverflow.com/questions/12637072/how-to-use-tortoisemerge-from-perforce-p4v

.a 나 .so 파일 덤프하기

해본 것/팁과 정보 2018.07.10 00:00 posted by 이밋

.a 파일

7zip 과 같은 압축 프로그램을 사용하면 내부에 txt 파일과 o 파일을 볼 수 있습니다.


txt 파일을 열어보면 어떤 심볼들이 포함되어 있는지 확인할 수 있습니다.

.so 파일

linux 에 nm 이라는 프로그램이 있습니다. 윈도우용 clang 에도 포함되어 있으니 이 프로그램을 사용하면 아래와 같은 형식으로 덤프해서 볼 수 있습니다.


'\n' 으로 될 줄 알았는데 그냥 문자로 취급된다. Enter 키를 누르면 입력이 완성되어 버린다. 결국 마법의 Shift + Enter 로 하니 잘 동작했다.

EC2 인스턴스가 cpu 나 memory 가 부족해 type을 바꾸고 싶을 때는 기존 instance 를 중지 후 콘솔에서 Change Instance Type 메뉴를 선택 후 변경하면 됩니다.

참고 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ec2-instance-resize.html

IncrediBuild 는 기본적으로 다른 subnet 에서 사용하는 것을 권장하지 않는 것 같다.

The communication between a coordinator and its agents, and between the agents themselves, should be direct and on the same subnet. Therefore, in a case where an organization needs to serve agents on different subnets, it would be better to install one coordinator per subnet.

출처 : https://www.incredibuild.com/frequently-asked-questions-pricing-licensing.html#q201

일단 subnet 간에 통신을 위해 아래 포트가 열려 있어야 한다.

Coordinator : TCP 31104
service : TCP 31105
helper : TCP 31106 ~ (각 cpu 마다 포트를 추가로 사용한다.) 

윈도 방화벽 허용이 필요하다.

윈도우즈 방화벽 > 고급 설정을 누른다.

인바운드 규칙 에서 아래 항목을 체크한다.
: IncrediBuild Agent Service
: IncrediBuild Build Helper
: IncrediBuild Helper #1 ~ #8 (CPU 개수만큼 있다.)

속성 창 > 고급 > 프로필에서 subnet 간에 적절히 열려있는지 확인한다.
도메인, 개인, 공용 3가지 체크 표시가 있는데 subnet 간의 연결이 어떤 type인지는 확인이 필요하다.

이제 문제가 되는 부분인 netbios 다. incredibulid 는 agent 이름을 가지고 ip 를 찾아내 접속하는 구조인 것 같다. 해결 방법은 여러가지 있겠지만 dns 를 이용한 방법과 hosts 를 이용하는 방법이 있다.

hosts 를 이용하는 방법은 모든 agent PC 에 상대 subnet 의 정보를 추가하는 방식이다. 윈도우즈 hosts 파일(기본 : c:\windows\system23\drivers\etc\hosts ) 에 ip 이름 형식으로 추가해주면 된다. 모든 PC가 상대방에 새로운 agent 가 추가되거나 이름이 바뀔 때 마다 설정해줘야 하는 귀찮음이 있는 것 같다.

dns 를 이용하는 방법은 한쪽 subnet 에 dns 서버를 설치 후 다른 subnet 에서 설치된 dns 서버를 연결하도록 설정하는 방식이다. 반대편 subnet 에 대한 처리 문제와 dns 설치 및 유지 보수 비용을 고려해야 한다.


Perforce : reconcile

해본 것/팁과 정보 2018.06.14 00:00 posted by 이밋

Perforce 는 P4V 라는 클라이언트로 workspace 에서 상태를 관리하는데 P4V 를 통하지 않고 탐색기 등에서 변경을 가하는 경우 오류가 발생한다.

이 문제를 해결하는 명령이 reconcile 이다. P4V 에서 문제가 있는 경로에서 오른쪽 마우스 메뉴 'Reconcile Offline Work...'를 선택하면 선택한 경로 아래 폴더 파일들의 상태를 체크해서 처리한다.

p4 command 로 add / edit / delete 처리를 하고 싶으면 아래와 같이 하면 된다. status -A 는 reconcile -aed 와 동일한 명령이다. -a : add, -e : edit, -d : removed 를 나타낸다.

p4 status -A <파일 경로>

참고 : P4 Command Reference (p4 reconcile)

윈도우에서 Jenkins 를 설치하면 기본으로는 'C:\Program Files(x86)' 같은 공백이 포함된 경로에 설치되어 plugin 도 문제가 생기고 배치 파일 실행시에도 문제가 생길 경우가 많다.

재설치하기 힘든 경우에 기본 workspace 라도 변경해보자.

  • 'Jenkins 관리' > '시스템 설정' 버튼을 누르면 최상위에 '홈 디렉터리' 아래에 '고급...' 버튼을 누른다.
  • 작업공간 최상위 디렉토리를 원하는 경로로 변경하자.

Job 아이템 단위로 workspace 가 생성되는데 다른 Job 의 workspace 에서 작업되어야하는 경우도 있다.

  • Job 아이템을 선택하고 왼쪽 메뉴에서 '구성' 버튼을 클릭한다.
  • General 영역에서 '고급...' 버튼을 클릭합니다.
  • '사용자 빌드 경로 사용'을 체크하시면 아래에 디렉터리를 설정할 수 있는 영역이 보입니다.
  • '디렉터리' 영역에 다른 Job 의 workspace 를 입력하면 됩니다.