명령창에서 'slmgr /dlv' 입력 후 제품 키 채널 내용을 확인하면 된다.

출처 : http://damoa-nawa.tistory.com/100

// Should we use unity build mode for this module?
bool bModuleUsesUnityBuild = false;
if (Target.bUseUnityBuild || Target.bForceUnityBuild)
{
if (Target.bForceUnityBuild)
{
Log.TraceVerbose("Module '{0}' using unity build mode (bForceUnityBuild enabled for this module)", this.Name);
bModuleUsesUnityBuild = true;
}
else if (Rules.bFasterWithoutUnity)
{
Log.TraceVerbose("Module '{0}' not using unity build mode (bFasterWithoutUnity enabled for this module)", this.Name);
bModuleUsesUnityBuild = false;
}
else if (SourceFilesToBuild.CPPFiles.Count < MinSourceFilesForUnityBuild)
{
Log.TraceVerbose("Module '{0}' not using unity build mode (module with fewer than {1} source files)", this.Name, MinSourceFilesForUnityBuild);
bModuleUsesUnityBuild = false;
}
else
{
Log.TraceVerbose("Module '{0}' using unity build mode", this.Name);
bModuleUsesUnityBuild = true;
}
}
else
{
Log.TraceVerbose("Module '{0}' not using unity build mode", this.Name);
}


특정 모듈이 UnityBuild 가 안걸려서 확인해봤다.

일단 bUseUnityBuild는 기본적으로 켜져(true) 있다.
소스 파일 개수가 32개 넘을 때 UnityBuild가 동작하는데 파일 개수가 50개 인 줄 알았는데 cpp 기준으로는 25개 밖에 안되었다.

그냥 bForceUnityBuild 를 켜서 돌아가도록 했다.

위 로그는 Verbose 이상일 때 보이니 BuildConfiguration.xml 수정이 필요하다.

<?xml version="1.0" encoding="utf-8" ?><Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">

<BuildConfiguration>

<!--<bAllowXGE>false</bAllowXGE>-->

<LogLevel>VeryVerbose</LogLevel>

</BuildConfiguration>

</Configuration>



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 설치 및 유지 보수 비용을 고려해야 한다.