배치 파일에서 전달받은 문자열에 따옴표(")를 제거하고 싶을 때

1. %~1

파라미터로 전달된 변수는 %~n 형식으로 제거할 수 있다.

@ECHO OFF
Set _string=%~1
Echo the string passed to this script is %_string% 

2. set replace 이용

set 명령어를 쓸 때 Y 문자열을 Z 를 대체하는 %X:Y=Z% 형식으로 처리할 수 있다.

Set _somevariable=%_somevariable:"=%

처음과 끝 따옴표만 제거하고 싶으면 아래와 같이 처리하면 된다.

:: Remove quotes
SET _string=###%_string%###
SET _string=%_string:"###=%
SET _string=%_string:###"=%
SET _string=%_string:###=%


참고 : https://ss64.com/nt/syntax-dequote.html

728x90

FindDepChain given incorrect number of arguments.  Usage: Finds all dependency chains from assets in the given search path, to the target package.

 Usage: FindDepChain TargetPackagePath SearchRootPath (optional: -hardonly/-softonly)

 e.g. FindDepChain /game/characters/heroes/muriel/meshes/muriel /game/cards

특정 애셋과 특정 경로와 의존성을 찾고 싶을 때는 AssetManager.FindDepChain 을 사용하면 된다.

레퍼런스 뷰어를 통해서도 찾을 수 있겠지만 Parent, Child 1단계만 표시되어 여러 단계를 거칠 경우 찾기가 힘들다.

예를 위해 아래와 같이 프로젝트를 생성했다.

: 시작용 콘텐츠를 포함한 블루프린트 굴리기 프로젝트를 만든다.
: StaticMesh 인 SM_Rock 을 사용하는 액터를 /Actors/BP_A 로 생성한다.
: BP_A 를 RollingBPExampleMap 에 배치하고 저장한다.

BP_A 를 보면 RollingBPExampleMap 과 SM_Rock 의 연관성을 알 수 있다. 하지만 RollingBPExampleMap 과 SM_Rock 의 연관성을 직접 알 기는 힘들다. SM_Rock 이 사용하는 M_Rock 이라는 머티리얼과 같이 단계가 깊어지면 더 알기 힘들다. 이 때 FindDepChain 명령어를 사용하면 된다.

에디터 명령창에 아래와 같이 입력하면 M_Rock 과 RollingBP/Maps 폴더 사이의 Dep Chain 이 콘솔에 표시된다.

chunk 설정 후 패키징을 하는데 특정 애셋이 계속 빨려 들어가는 것을 조사할 때 이 명령어를 사용하면 좋다.

엔진 : 4.23.1

728x90

아이폰에서 PC 로 USB 를 통해 동영상을 전송할 때 "장치에 연결할 수 없습니다." 혹은 "시스템에 부착된 장치가 작동하지 않습니다." 오류가 발생한다.

이 오류가 발생하면 아이폰을 재부팅 해줘야 다시 전송할 수 있다.

구글 드라이브를 통해 전송했는데 아이폰에서 설정 > 사진 화면에서 'MAC 또는 PC로 전송'을 '원본 유지'로 바꾸면 위 오류가 발생하지 않았다.

출처 : https://dopudopu.tistory.com/1496

위 설정을 사용하면 사진은 HEIC 포맷으로 보여 PC 에서는 변환해서 사용해야할 수 있다. 스크린샷은 png 로 저장된다.

아이폰에서 설정 > 카메라 > 포맷을 높은 호환성으로 바꾸면 JPEG 으로 저장된다.


728x90

2가지 일을 번갈아 진행할 일이 있으면 가상 데스크탑을 사용하는게 좋다. 예를 들어 첫번째 데스크탑에 프로그래밍 작업을 두고 두번째 데스크탑에는 휴식 때 볼 웹페이지나 백그라운드 작업들을 그룹지어 놓으면 작업 표시줄도 어지럽지 않고 좋은 것 같다.

윈도우즈 10 기본 기능에 가상 데스크탑이 들어가 있는데 새 가상 데스크탑을 만들려면 작업 표시줄에서 작업 보기 단추를 눌르거나 윈도우즈 + 탭 키를 누르고 보이는 화면에서 '새 데스크톱'을 선택하면 된다.

출처 : https://www.windowscentral.com/how-use-multiple-desktops-windows-10

728x90

ssh 클라이언트로 PuTTY 를 사용중이다. 

기본 설정을 바꾸는 법을 몰라서 Connection > SSH > Auth 탭에서 Authentication parameters > Allow agent forwarding 설정을 매번 체크해줘야 해서 번거로웠다.

검색해보니 Session 탭에서 Default Settings 를 선택하고 Save 버튼을 눌러서 저장하면 끝이었다.


출처 : https://kldp.org/node/97835

728x90

언리얼은 설정들을 ini 파일에 기록된다. 이 파일이 엔진 폴더, 프로젝트 폴더 등 여러 곳에 생성되는 데 읽을 때 우선순위가 있다. 아래 파일 중 제일 윗 파일을 읽은 뒤 아래 파일들의 내용으로 덮어 쓰여지는 구조다.

1. Engine/Config/Base.ini

2. Engine/Config/BaseEngine.ini

3. Engine/Config/[Platform]/[Platform]Engine.ini

4. [ProjectDirectory]/Config/DefaultEngine.ini

5. [ProjectDirectory]/Config/[Platform]/[Platform]Engine.ini

6. [ProjectDirectory]/Saved/Config/[Platform]/Engine.ini

출처 : https://docs.unrealengine.com/en-US/Programming/Basics/ConfigurationFiles/index.html

728x90

xbox live 호출이 잘되는 지 확인하기 위해 XDK 에서 로그를 수집했다. XDK 로그는 etl 확장자를 가진 파일로 남았다. 

tracerpt 라는 윈도우 명령어로 다른 형식으로 변환이 가능하다고 하는데 변환된 파일을 이용하면 xbox live tool 을 이용해서 시각화 할 수 있는 것 같다.(못해봄)

변환하지 않고 보려면 윈도우 이벤트 뷰어에서 저장된 로그 열기 메뉴를 선택해서 파일을 선택하면 된다.

출처 : https://www.techwalla.com/articles/how-to-read-an-etl-file

728x90

윈도우에서 만든 쉘 스크립트를 linux 장비에서 실행하려고 하면 줄바꿈 문자 때문에 오류가 생긴다. 회사에서 텍스트 편집기를 EditPlus 를 사용중인데 문서 > 파일 형식 > 파일 형식 변경 을 선택하고 파일 형식을 Unix / Mac OS X 를 선택해서 바꾸면 된다.

vi 에서는 s/^M//g 로 지우면 된다.
(^ : ctrl + v, M : ctrl + M)

728x90

파라미터 중 앞 몇 개를 체크 후 나머지를 전달하고 싶을 때 shift 로 제거 후 $@ 으로 전달하면 된다.

function build() {
    echo "build with $@"
}

echo "Starting args are $@"
cmd=$1
shift

if [ "$cmd" = 'build' ]; then
    build "$@"
fi

출처 : https://stackoverflow.com/questions/12002954/bourne-shell-send-arguments-2-to-n-to-variadic-function

728x90

aws 콘솔에 모니터링 페이지가 있지만 cpu 최적화할 때 측정용으로는 애매한 것 같다.

top -b

다양한 cpu 모니터링 툴이 있지만 top 이 무난하고 좋은 것 같다. top 은 화면으로 출력되는 콘솔 모니터링 프로그램인데 파일로 저장하려면 배치 모드(-b)를 이용해야 한다. 간격은 -d 옵션을 이용하면 된다.

-b : Batch mode operation

Starts top in 'Batch mode', which could be useful for sending output from top to other programs or to a file. In this mode, top will not accept input and runs until the iterations limit you've set with the '-n' command-line option or until killed.

-d : Delay time interval as: -d ss.tt (seconds.tenths)

Specifies the delay between screen updates, and overrides the corresponding value in one's personal configuration file or the startup default. Later this can be changed with the 'd' or 's' interactive commands.

Fractional seconds are honored, but a negative number is not allowed. In all cases, however, such changes are prohibited if top is running in 'Secure mode', except for root (unless the 's' command-line option was used). For additional information on 'Secure mode' see topic 5a. SYSTEM Configuration File.

ex) top -b -d 30

: 30초 간격으로 출력

참고 :

https://linux.die.net/man/1/top

https://www.tecmint.com/save-top-command-output-to-a-file/

grep -A

기본으로는 모든 프로세스가 cpu 사용량 별로 소팅되어 보이는데 사실 상위 n 개만 관심이 있다. 이럴 때는 grep -A 옵션을 이용해서 "load average"가 매치되는 줄에서 n 라인을 가져오도록 한다.

ex) top -d 5 -b | grep "load average" -A 15
: 5초 간격으로 출력된 결과물 중 "load average" 아래 15개 줄을 가져온다.

참고 : 

tee

결과를 리디렉터(>)를 이용해서 파일로 저장할 수 있지만 화면으로 확인하고 싶다면 tee 를 이용하자.

ex) top -d 5 -b | grep "load average" -A 15 | tee cpu_us.log
: 5초 마다 cpu 사용량 상위 10개 프로세스를 cpu_us.log 파일로 저장

grep --line-buffered

하지만 화면에 뭔가 이상하게 출력되고 파일로 저장된다. 파이프( | ) 나 리디렉터( > ) 문제인 줄 알았는데 각각의 프로그램이 원인이라고 한다. grep 옵션을 보니 --line-buffered 를 이용하면 라인단위 처리를 해서 성능이 떨어진다고 하는데 이 옵션을 사용하고 문제가 해결되었다.

       --line-buffered
              Use  line  buffering  on  output.   This can cause a performance
              penalty.

ex) top -d 5 -b | grep "load average" -A 15 --line-buffered | tee cpu_us.log

참고 : 


728x90

+ Recent posts