JAVA 개발킷인 JDK는 기본적으로 두가지입니다.

1.OpenJDK

2.OracleJDK


이것 말고도 요즘뜨고잇는 zulu 등이있지만 사실상 java의 표준은 저 둘입니다. 그리고 저 둘은 Sun시절부터 써오던 HotspotVM을 포함하고 있습니다.



둘의 차이점은 오픈소스만으로 구성됐느냐, 독점코드가 포함됐느냐의 차이인데 OpenJDK를 가지고 OracleJDK가 나온다고 보심 되겠습니다. Chromium과 Chrome과의 관계와 비슷합니다.


그리고 미묘하게 OpenJDK쪽보다 OracleJDK쪽이 빠릅니다. 사실 큰 차이는 없어야 정상이지만 독점코드 일부가 최적화 된 탓인지 Oracle의 것을 설치해야 속도가 빠르더군요.


그래서 일부러 Oracle JDK를 구해다 설치하는 경우가 잦았는데 Oracle이 4월부터 자신의 제품에대해 새로운 라이센스를 들고 와 버렸습니다. 개인에게는 2020년까진 무료 기업에서는 구독라이센스를 요구한겁니다. 그래서 기존에 그냥 다운로드가 가능했던것이 이제는 회원가입을 요구합니다. (역시 오라클)


그 전에는 Oracle Java를 설치할때 webupd8팀의 PPA를 애용했는데(https://launchpad.net/~webupd8team/+archive/ubuntu/java)

이제는 스크립트가 안먹히는 관계로 수동설치를 필요로합니다.


https://askubuntu.com/questions/56104/how-can-i-install-sun-oracles-proprietary-java-jdk-6-7-8-or-jre


이제는 tar.gz를 다운받고 압축을 푼뒤

권한을 일일이 조정힌고 permission을 넣어야합니다. 그리고

 update-alternatives


위명령으써서 java를 먹히게 해야합니다. 귀찮습니다. 



하지만 설치만 하면 그 뒤는...

암튼 oracle이 만악의 근원인듯...

,

MTU는 일종의 서로 통신을 하기 위한 패킷단위입니다.

여러분들이 큰 파일을 다운로드 받아도 사실 이 패킷단위로 잘게 쪼개서 전송받고 다시 이를 재조합하는 방식인 것입니다. 다시 말하면 잘게 쪼개면 쪼갤수록 재조합하는 시간이 길어지겠죠?

 

그래서 최대한 큰 패킷단위를 쓰는것이 PC부하가 적어지게 됩니다. 대신 회선과 네트워크 장비에 부하는 커지겠지요.

 

대다수 네트워크 장비의 기본 값은 1500바이트입니다. 그리고 이는 산업표준이고 호환성 최고의 단위입니다. 무조건 1500바이트 단위로 쪼개놓으면 이 세상에 깔린 거의 모든 네트워크 장비는 받아들일 수 있다는 의미입니다. 하지만 시대가 변하고 회선의상태가 좋아지면서 1500바이트로 잘게 쪼갤 이유가 거의 없어지게 되었고 새로운 표준인 점보 프레임이라는 것이 나오게 되었습니다. 이 표준은 9000바이트로 기존 표준에서 6배 이상 커진 것입니다.

 

그만큼 CPU부하가 줄어들게 되는 것입니다. 물론 비표준으로 15000도 있고 23000도 있지만 그건 그정도의 프레임을 지원하는 장비를 썼을 때 이야기이므로 9000이 현재 제일 큰 패킷 단위라고 봐야 합니다.

 

현존하는 기가비트 랜 장비는 9000은 무조건 지원한다고 봐야하고 100Mbps급 장비라고 해도 9000은 지원 할 가능성이 매우 높습니다. 하지만 여전히 기본값은 1500입니다.

 

따라서 9000으로 올려주면 그만큼 여러분의 PC부하는 눈꼽만큼이나마 줄어들게 됩니다. 이를 우분투 기반 민트리눅스에서 해보겠습니다. (윈도우는 조금 더 복잡한 방법을 씁니다.)

 

우선 제어판의 네트워크 연결로 들어갑니다. 저는 민트를 쓰지만 우분투도 제어판 형태는 비슷합니다.

아니면 그냥 네트워크 애플릿에 오른쪽 버튼을 누르고 연결편집을 눌러도 됩니다.

 

사용하는 네트워크 연결이 많으면 여기서 지금 사용하는 연결을 찾아야 한다. 아니면 지금 떠있는 것을 모두 싹다 적용하자.

여기서 여러분이 사용하는 연결을 선택하고 아래의 톱니바퀴를 누릅니다.

 

 

여기서 보면 MTU라는 것이 바로 보입니다. 물론 기본값이라고 되어 있을텐데 이걸 9000이라고 바꾸고 저장합니다. 그러면 MTU값 적용이 끝납니다. 참 쉽죠?

 

만약 오류가 난다면 그건 장비가 9000바이트를 못 받는 것입니다. 조용히 값을 내리면서 지원이 되도록 해봅시다.

 

값이 크면 클 수록 부하는 줄어들지만 그만큼 회선에 부하가 커진다는 것을 알아두시길 바랍니다.

,

https://betanews.com/2019/04/01/linux-mint-depressed/


리눅스 민트는 제가 사용하는 배포판이고 우분투 기반으로서 상당히 좋은 대중적인 배포판입니다. 그리고 매우 편리하고 원본인 우분투보다 더 뛰어난 모습을 보이고 있기에 누군가에게 리눅스 배포판을 추천한다면 바로 추천할 수 있는 물건입니다.


실제로 한국에서 제작되는 하모니카 프로젝트도 리눅스민트를 기반으로 하고 있습니다.


그러나 지금 메인개발자인 Clem은 이것저것 문제가 많은 것으로 보입니다. 후원금 문제도 있고 개발자를 모으는 것도 쉽지 않은 것으로 보입니다. 심지어 유능한 개발자가 2명이나 나갔다고 하네요.


https://blog.linuxmint.com/?p=3736


여기만 보면 상당히 실망을 한듯한 모습이 보입니다. 특히 웹사이트 재편과 로고 제작에 대해서도 여려워 하는 듯 합니다. 그리고 리눅스 민트가 사용하는 윈도우 매니저 개발자와도 사이가 썩 좋지 않을 수도 있는 듯 합니다. 물론 이 경우에는 다른 윈도우 매니저로 갈아타면 그만이긴 합니다. 혹은 민트팀에서 자체 제작하는 것도 방법입니다. (가뜩이나 개발자가 부족하다고 하는것이 문제긴 합니다.)


아무튼 19.2 Tina 가 곧 나온다고 했지만 생각보다 오래 걸릴 수도 있고 어쩌면 더 힘들어 질 수도 있을 듯 합니다.


그렇지요. 후원만으로 먹고 사는게 쉬울리가 없습니다. 그리고 후원도 그렇게 잘 되는 편이 아니고요. 그래도... 응원합니다. 저는 리눅스 민트를 사랑하니까요.

,

제가 사용하는 노트북은 오래된 관계로 기가비트랜이 달려있지 않습니다. 오로지 100M급만 사용이 가능합니다. 덕분에 광랜을 달아도 제대로 된 속도 경험이 힘들었는데 이참에 기가비트 랜으로 갈았습니다.


저 포장지는 떼어도 되는데 그냥 새물건 간지(?)를 위해 안 떼고 있다


가격도 뭐... 이 정도면 싸고 제가 이전에 쓰던 녀석도 같은 리얼텍 칩셋이 달려 있었기에 그냥 무난무난하게 쓰고 있었습니다.


속도는 나름 기가비트를 뽑고 있습니다. 그런데 어제 이상할 정도로 핑튐 현상이 심하더군요. 업로드 속도가 비대칭인 이상 좀 구리긴 했지만 이 정도는 아니었습니다.


아주 뭔가 지속적 통신을 하기라도 하면 미친듯이 출렁거리더군요. 그당시에 제가 CPU많이 처먹는 작업을 해서 그렇긴 합니다만 좀 심하게 출렁거렸습니다. 스마트폰보다 더 네트워크성능이 더 구렸을 정도...


아무래도 리얼텍이 드라이버 만듦새로 꼭 문제를 일으키곤 했으니 혹시나 하고 찾던 도중 중요한 사실을 알았습니다.


우분투 18.04에 포함된 기본 커널 드라이버의 버전이 낮다는 것.

원래 리눅스란 놈 자체가 서버에서 구르기 때문에 무조건 신버전이 좋은 것이 아니긴 합니다. 그런데 제가 쓰는 커널이 4.18임에도 불구하고  2016년에 배포한 소스쓴다는 것!



modinfo로 확인해보니 1.09버전을 쓰고 있었습니다. 인터넷 조금만 뒤져봐도 해당 버전 잘 안 된다는 말이 많습니다. 엄연히 말하면 1.09 주변 버전이 잘 안 된다는것이지만 (리얼텍은 이상할 정도로 버전에 민감합니다.) 아무튼 해당 시기에 좀 문제가 많았습니다.


그래서 드라이버를 갈아버리기로 결심했습니다. 여차하면 커널 모듈을 되돌리면 그만이니까요.


https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software


이곳으로 들어가서 소스코드를 다운로드 받도록 합시다



아래로 쭉 내리면 Linux용 드라이버 다운로드 아이콘이 있고 이메일을 적으라고 합니다. 아무래도 과도한 서버요청을 막기위한 조치인 듯 합니다. (리얼텍 제품이 한둘이 아니니 과도한 서버요청은 회사 입장에서도 어렵겠지요)


그리고 조금 기다리면 이메일이 날아오고 중간에 Capcha를 하면 다운로드를 받을 수 있게 됩니다.


그리고 컴파일러와 일부 라이브러리가 필요한데 저 같은 경우에는 이것저것 이미 다 설치가 되어있던 상황이라 얼마나 필요한지는 잘 모르겠습니다.


일단 build-essential, libelf-dev, linux-header 는 필수라고 봐야합니다.


sudo apt install build-essential libelf-dev linux-headers-generic


linux-headers-generic 패키지는 상황에 따라 필요 없을 수도 있습니다. 보통 커널을 자신이 직접 컴파일 하는경우에는 자신의 이름으로 설치가 되어 있습니다.


이제 드라이버가 있는 곳에서 


make -j2


뒤에 j 옵션은 필요할 수도 있고 필요 없을 수도 있습니다.

상황에 따라 j뒤를 바꿔 주세요.


그 다음 ko 파일이 있는 것이 확인 되면 


sudo make install


이제 버전이 바뀌었는지 확인해봅시다.



2.11 버전으로 바뀌었군요! 얼마나 좋아진것인지는 알길이 없지만 아무튼 버전이 바뀌지 기분이 색다르긴 합니다

,

Unity3D는 매우 훌륭한 게임엔진이고 성공한 게임엔진입니다. 그리고 정말 많은 분야에서 사용중입니다.


그러나 Unity3D로 게임을 개발을 하기 위해선 윈도우나 맥OS환경이 필수 였습니다. 하지만 Unity3D측에서도 실험적으로 리눅스용을 만들고 지원하고 있습니다. 명색이 다용도 엔진이기 때문에 리눅스용 게임도 만들 수 있는데 개발도 리눅스에서 할 수 있게 하기위한 방법인 것입니다.


물론 경쟁자인 Unreal엔진이 비슷한 노선을 취하기 때문인 것도 맞는 것 같습니다.


Unity3D는 버전별로 상이한 방식을 취하기 때문에 여러 버전을 설치하는 것이 당연시 되고 있습니다 .이를 관리하기 위해서 UnityHUB란 것을 만들었고 최근에는 개발 환경을 이것으로 갖추고 있습니다.


https://forum.unity.com/forums/unity-hub.142/


이곳으로 들어가시면 알 게 됩니다.



해당 포럼에 들어가면 UnityHub XXX is available!! 이런 식으로 써 있습니다. 그 글을 클릭 하면..



이렇게 3대 OS용 UnityHub를 다운로드 받을 수 있게 되어있습니다. 여기서 리눅스도 다운로드 받을 수 있게 되어있습니다. 그리고 이를 다운로드 받으면..


Appimage 형태로 다운로드 됩니다. 즉, 리눅스 배포판을 가리지 않고 실행 되는 방식입니다. 속성에서 


그리고 일반적인 프로그램 실행하듯 실행해 주시면 됩니다. 메뉴에 등록할거냐고 물어보는데 저는 그냥 귀찮아서 등록을 안 하는 것을 선호합니다. 그건 알아서 선택하시기 바랍니다.


그리고 계정 로그인을 하고 잠시 기다리시면...



이렇게 엔진 개발환경을 다운로드 받을 수 있습니다. 

심지어 필요한 컴포넌트도 다운로드가 가능합니다. 굉장히 편리하지요. 그러면 Unity3D 개발환경을 구축 할 수 있게 됩니다. 설치 위치는 톱니바퀴 모양을 누른다음 설정에서 건들 수 있습니다. 물론 권한이 있어야 가능하겠지요?


개인적으로 /opt 안에 폴더를 하나 만든 다음 권한을 따로 주는 것을 선호하지만 ~/안에 설치하는 것을 선호하는 사람도 있을 것입니다. 그것은 취향차이라고 합시다.


이제 프로젝트 탭에서 프로젝트를 하나 만들고 실행해 봅시다.


그러면 짜잔!! 이제 리눅스용 unity3D를 설치할 수 있게 되었습니다. 짝짝짝


추가로 만약 에디터 환경이 너무 느리다 싶으면 OpenGL대신 Vulkan을 사용해 볼 수 있습니다. 확실히 Vulkan이 속도가 빠릅니다.


방법은 Edit-Project Settings

한글판의 경우에는 다르게 나올 수 있다. 하지만 보통 이런 툴은 영문판을 쓸 테니 영문으로 설명한다 알아서 따라오자


그 다음에 Player 탭에서 아래로 쭉 찾아서 Rendering을 찾은 다음 Auto Graphic API for Linux에 체크를 해제합니다. 어차피 윈도는 DirectX11로 고정이고 macOS도 Metal로 고정입니다. 리눅스만이 OpenGL과 Vulkan 두가지를 지원합니다.


그리고 나온 창에서 OpenGL Core가 위에 있을 텐데 Vulkan을 OpenGL Core위로 땡겨서 OpenGL보다 Vulkan이 우선되도록 합니다. OpenGL이 위에 있는 이유는 호환성 때문인데 (구형 VGA는 지원이 안 됨) Vulkan이 이러나 저러나 빠르기 때문에 Vulkan을 추천합니다.


이제 리눅스에서도 Unity3D 엔진으로 이용한 게임 개발이 쉬워졌습니다.


참고로 C# 에디터가 필요하다면 개인적으로 VSCode를 설치하시는 것을 추천합니다. MonoDevelop보다 깔끔하더군요. 그리고 VSCode를 cs파일을 열때 기본으로 설정해두면 Unity3D에서 스크립트를 수정할 때 유용합니다.


VSCode를 설치하는 방법은 따로 검색하시는 것을 추천합니다.

,


OpenCV란 참 고마운 영상처리 라이브러리가 있습니다. 이걸 쓰면 각종 영상처리를 쉽게 처리가 가능합니다. 그리고 얼굴 인식이라던가 글자 인식도 쉽게 할 수있습니다. 그리고 그것을 더 쉽게 하기 위해서 Dlib란 라이브러리가 나왔습니다. 저 같은 경우에는 얼굴 인식용으로 주로 사용하는데 OpenCV만 사용하는 것보다 훨씬 더 편리합니다.


그리고 기본 언어가 Python이라서 개발환경 갖추는것이 너무 좋습니다. 리눅스에서 Python개발환경은 그냥 대충 해도 되는 것이니까요.


그래서 보통 영상처리쪽은 리눅스에서 환경을 갖추는 것이 일반적입니다. VFX쪽과 비슷하지요. 윈도우에서 하면 고통이 좀 심하거든요. 아니면 리눅스 가상머신을 올리던지요.


그런데 OpenCV라이브러리는 크게 문제가 없는데 Dlib란 이 물건... 병목이 심합니다. 기본적으로 CUDA코어를 써서 어떻게든 해결해보려고 하는데 만약 Nvidia그래픽카드를 안 쓰면 당장 답이 없습니다.


그래서 흔한 방법을 쓰면 속도면에서 너무 고통스럽습니다. 그래서 CUDA없는 시스템의 경우에는 수동으로 라이브러리를 컴파일해서 설치해주는 것이 좋습니다. CPU상황에 맞게 AVX나 SSE 같은 것을 켜는 것입니다.


일단 우분투에서 OpenCV설치는 쉽습니다.


python3-opencv 란 패키지를 제공하기 때문에 이것을 설치하면 끝입니다.

sudo apt install python3-opencv



(Python2.7은 이제 그만 쓰는게 좋겠습니다. 이제 Python3를 추천합니다.)


 하지만 Dlib는 pip로 설치하거나 그냥 따로 setup.py를 써서 인스톨 해야 합니다.


솔직히 이러나 저러나 pip가 참 편합니다. 그런데 pip로 설치하면 라이브러리를 그냥 기본값으로 설치해버립니다.


그래서 dlib의 경우에는 따로 컴파일을 해서 설치합니다.

https://github.com/davisking/dlib/releases



여기서 dlib의 최신판을 다운로드 받습니다.


그리고 cmake를 사용합니다. 만약 없다면 필요한 라이브러리를 미리 설치하도록 합시다


sudo apt-get install build-essential cmake

sudo apt-get install libgtk-3-dev

sudo apt-get install libboost-all-dev


이제 시스템마다 다른 방식을 써야 하는데


만약 스카이레이크 이후의 CPU라면 AVX를 지원합니다. 그보다 이전의 시스템이라면 SSE4를 쓰면 되지만 그쯤되면 그냥 이참에 시스템을 바꾸는 것을 추천합니다.


python3 setup.py install --yes USE_AVX_INSTRUCTIONS


만약 Nvidia카드가 없고 AVX지원 CPU라면 위와 같이 입력함으로서 AVX를 지원하게끔 설치가 가능해집니다.


만약 Nvidia카드도 있고 AVX도 붙어있는 환상의 조합이라면


python3 setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA


필요에따라선 sudo가 붙어야 할 수도 있습니다.


이제 알아서 파이썬 설치 스크립트가 해당 옵션을 붙여서 컴파일을 함께 하는 것을 볼 수 있습니다.



만약 내 CPU가 AVX가 되는지 모르겠으면

grep avx /proc/cpuinfo


이 명령어를 써서 만약 뭔가 뜨면 AVX가 되는 것이고 안 되면 안 되는 것으로 생각하면 됩니다.

AVX가 되면 성능 그냥 굴리는 것보다 향상 폭이 크다고 하네요!

,

구글의 Compute Engine은 AWS나 Azure와 같은 VPC 서비스입니다. 클라우드의 일부를 빌려주고 이를 이용한만큼 비용을 청구하는 방식입니다.


다만, 구글을 AWS와 달리 평가기간을 길게 주고 어떤 인스턴스를 쓰더라도 쓸 수 있는(대신 강력할 수록 그만큼 크레딧을 많이 쓰지만) 300$의 크레딧을 줍니다. 이것을 이용하면 CPU를 더럽게 많이 쓰는 Blender 렌더링을 무료로 원격렌더링 할 수 있습니다. (대신 SSH나 명령줄이 익숙하지 않으면 렌더링하기 힘들겁니다.)


사실 미리 비슷한 서비스 같은 것을 만들어두면 참 편리한데 사람이란게 참 귀찮아서 말이지요.


원격 렌더링에는 https://blendergrid.com/ 이러한 서비스가 이미 있지만 우린 직접 구축해서 해보는 것을 목표로 해보겠습니다. 이번에 하는 것을 잘 이용하면 Blendergrid 같은 서비스도 만들 수 있을 겁니다. 어차피 Blender도 요즘 웬만한 CGI같이 Python으로 굴러가니까요.


우선 구글 Compute Engine이 뭔지 알아야겠지요.https://cloud.google.com/compute/?hl=ko


이곳으로 접속해봅시다.

구글에 로그인이 되어있는 상태라면 무료로 사용해보기를 누를 수 있습니다. 여기서 사용을 활성화 하세요. 


그리고 결제니 뭐니 그런건 일단 신경 끄고(일단 지금 결제를 할 것은 아니니까 어디까지나 우린 평가중입니다.)

compute Engine의 설정으로 들어갑니다.


그리고 어느 서버에서 사용할 것인지 설정을 해두는 것입니다.




여기서 Region과 영역을 설정합니다. 저 같은 경우에는 asia-northeast1과 asia-northeast1-a 를 선택했습니다. 여기가 도쿄 서버라서 속도가 홍콩이나 다른 곳보다  낫습니다. 아쉽게도 서울은 없습니다.


그리고 VM인스턴스로 들어가서 인스턴스를 하나 생성합니다.


Blender는 닥치고 CPU코어가 많은 것이 짱이기 때문에 vCPU8개를 쑤셔 넣었습니다. 맞춤 설정에서 물론 GPU도 넣으면 상당히 좋지만 GPU까지 끌고 오면 평가판 크레딧이 남아나지를 않습니다. 하나만 넣었는데 배로 나가더군요. 만약 시간이 부족하신 분이라면 맞춤 설정에서 GPU를 넣거나 그냥 계정 활성화를 한번 더 넣어서 코어96개를 박아버리는 것도 방법입니다. 사실 코어96개가 성능이 더 나을거에요. CUDA설정은 조금 귀찮거든요.


그리고 저는 OS를 속편한 Ubuntu 18.04로 했습니다. 참고로 작업한 Blender버전과 렌더링할 Blender버전을 맞추는 것이 좋은데 일단 Blender버전만 같으면 어떤 OS에서 작업해도 상관은 없지만 아무래도 저는 Blender를 따로 wget으로 설치한다던지 하는게 너무 귀찮아서(저는 우분투18.04제공 Blender를 씁니다. 그냥 똑같이 맞춘겁니다.) 2019년 현재 안정버전은 2.79버전이고 제일 많이 쓰이는 것도 이 버전일테니 2.79버전을 저장소에서 제공하는 Ubuntu18.04를 선택한 겁니다. 다른 이유는 없습니다.


이제 서버 접속을 위한 Google Cloud SDK를 설치합니다. 자세한 것은 아래의 주소를 참고하세요. Windows 유저분은 그냥 설치 프로그램을 써서 설치하시면 됩니다.


https://cloud.google.com/sdk/docs/?hl=ko


여기서 Cloud SDK설치가 가능한데 우리의 데비안/우분투는 apt로 설치가 가능합니다.


우선 버전을 맞추기 위해 터미널에서 다음과 같이 명령을 내립니다.


export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"


리눅스 민트의 경우에는

$(lsb_release -c -s) 을 우분투에 맞춰서 바꿔주셔야 합니다.

19.x의 경우에는 bionic이라고 적어주세요. (우분투 18.04기반이므로 우분투 18.04의 것으로 적어두는 겁니다.)


export CLOUD_SDK_REPO="cloud-sdk-bionic"


그리고 저장소를 추가합니다.


echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list


그다음에 다음 명령으로 저장소 키를 추가합니다.

만약 curl이 없다면 curl을 미리 설치합니다. (그런데 보통은 미리 설치되어 있습니다.)

sudo apt install curl


curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -


이제 익숙한 명령어를 쓰면 됩니다.


sudo apt update

sudo apt install google-cloud-sdk


이제 gcloud 명령을 이용할 수 있습니다.

다음 명령으로 gcloud를 초기화 해봅시다.


gcloud init


이것저것 물어보고 구글 로그인도 하고 그럴텐데 그냥 열심히 진행합시다.

이것으로 인스턴스에 접속하면서 파일 전송을 SCP로 가능하게 됩니다.


다시 VM인스턴스로 돌아와서


인스턴스가 만들어졌다면 SSH라는 것이 있을텐데 이걸 쓰면 바로 브라우저에서 리눅스 서버에 접속이 가능합니다. gcloud의 기능을 쓸 수 없습니다. 간단한 것은 상관 없지만 파일전송이라던가 다른 귀찮은 것은 불가능합니다. 아니면 Private키를 받아와서 SSH클라이언트로 접속하는 것도 있는데 AWS 써보신 분은 아시겠지만 귀찮습니다.


그냥 gcloud로 하면 귀찮은거 없고 짱이에요.


gcloud명령보기를 누르면 gcloud로 터미널이나 CMD에서 긁어다가 쓸 수 있는 명령이 짠하고 나옵니다. 이것을 복사해다가 넣으면 인스턴스에 접속이 됩니다!!!


이제 서버에서 필요한 것을 설치하면 됩니다. 우린 Blender를 설치하려고 했으니 Blender를 설치하기로 합시다.


(서버에 접속한 상태에서)

sudo apt update

sudo apt install blender


먄약 Blender의 다른 버전을 원하시는 분들은 PPA를 등록하던지 직접 Blender홈페이지에서 wget으로 설치하던지 하는 방법으로 Blender를 설치하세요!


2019년 현재 우분투 18.04는 Blender 2.79버전을 제공하고 있습니다.


이제 렌더링을 할 Blend 파일을 서버로 전송하고 서버에서 렌더링을 돌려봅시다.

우선 작업한 Blender에서 설정을 조금 해야 합니다.


우선 Blend파일을 서버로 넣기 전에 필요한 설정을 미리 해둡시다. 렌더링결과를 어떻게 얻을 것 인지를 미리 설정하는 것입니다.


Blender 2.7x 기준 기본UI 상태에서 카메라탭을 누르면 렌더링 설정을 미리 할 수 있습니다.


일단 Output은 ./ 로 해두는 것이 정신 건강에 좋습니다. 자신 있으면 절대경로로 해두는 것도 좋습니다. 그런데 권한 문제로 복잡할 겁니다. 그냥 조용히 ./로 합시다.


그리고 결과물은 어떤 형태인지 몇 프레임에서 몇 프레임으로 할 것인지 후처리는 얼마나 할 것인지 등등을 미리 다 설정합니다. Blender의 좋은 점은 모든 것을 Blend파일안에 다 넣어 준다는 것입니다. 이러한 설정까지 말이지요.


그리고 텍스처와 기타 데이터를 모두 포함하기 위해서 한 가지 더 넣습니다.


File-External Data-Pack All Into .blend 를 눌러서 모든 데이터를 전부 Blend파일 안에 넣습니다.

이제 file-Save를 눌러서 해당 Blend파일을 저장합니다. 데이터에 따라 용량이 어마어마할 겁니다.


그리고 이것을 서버로 전송합니다.


아마도 여러분들이 만든 인스턴스는 instance-1 instance-2 이런 식으로 만들어져 있을 것입니다.

VM인스턴스 페이지에서 확인해보세요.


instance 이름을 확인하자

이 이름을 알아야 하는 이유가 이제 blend파일을 서버로 올려야 하기 때문입니다.


파일을 서버로 올리는 방법은 여러가지가 있지만 저는 gcloud명령을 통해서 scp로 보내는 방법을 쓸 겁니다.


다른 방법은 https://cloud.google.com/compute/docs/instances/transfer-files?hl=ko

이 페이지를 참조하세요.


여기서 이런식으로 파일을 인스턴스 서버의 홈폴더로 전송이 가능합니다. 홈폴더에 넣으면 SSH접속후에 바로 써먹을 수 있어서 편리하지요.

[INSTANCE_NAME]은 위에서 확인한 instance-1 같은 이름을 의미합니다.


gcloud compute scp [LOCAL_FILE_PATH] [INSTANCE_NAME]:~/


예를들어 ~/Dance.blend 파일을 instance-1 인스턴스 서버의 ~/에 올리고 싶다면


gcloud compute scp ~/Dance.blend instance-1:~/


이렇게 하면 전송이 됩니다. 이제 SSH 접속후에 ls명령으로 파일이 들어왔나 확인해봅시다.


gcloud명령으로 접속하면 쉽지요.


그리고 이제 SSH에서 Blender를 명령어로 렌더링 해봅시다.

https://docs.blender.org/manual/en/latest/render/workflows/command_line.html


여길 참고하면 됩니다.

명령어는 현재 blend파일이 있다는 가정하에


애니메이션의 경우

blender -b *.blend -a


특정 프레임의 경우

blender -b *.blend -f XX


이런식으로 하면 해당 폴더에 렌더링 결과물이 나오게 됩니다. 우린 CPU8개 짜리 인스턴스에서 돌리고 있지만 만약 CPU 96개의 인스턴스라면 엄청난 속도로 렌더링을 하고 있겠지요? 거기에 GPU까지 붙이면? 절대로 싼 비용으로는 못할 엄청난 렌더링 속도를 볼 수 있을 것입니다.


그리고 결과물은 다시 gcloud명령으로 받아올 수 있습니다.


gcloud compute scp instance-1:~/결과물 내컴퓨터경로


혹은 폴더로 받아오고 싶으시면


gcloud compute scp --recurse instance-1:~/결과물폴더 내컴퓨터경로


이렇게 하면 원격으로 구글 컴퓨트 엔진을 통해서 렌더링을 할 수 있게 됩니다.


뭔가 복잡한거 같은데 이것을 쉽게 만든다면 SaaS로서 충분히 훌륭한 서비스가 될 것이라고 생각합니다. 특히 Cycle렌더링할 때 CPU를 어마어마하게 사용하는데 원격에 렌더링 시켜놓고 우린 다른 작업을 할 수 있게 되는 것이지요.

,

3D 모델러하면 보통 3가지 프로그램을 이야기 합니다.

1. Autodesk의 3D Studio Max

2. Autodesk의 Maya

그리고

Blender 입니다.


특히 Blender는 오픈소스임을 적극적으로 활용해서 성능을 이미 Autodesk제품군 수준 혹은 그 이상으로 끌어올렸다는 평가를 받고 있습니다.


심지어 영화사나 영상 쪽에서 쓰이고 있을 정도로 수준이 상당합니다. 그랬던 Blender가 이번에 2.8버전이 나오면서 대격변을 거쳤습니다.


그것도 엄청 좋은 의미의 대격변입니다.


1) User Interface


일단 기존의 Blender 2.79입니다.

그동안 Blender나 3DSMAX나 UI면에선 좋은 소리 들은 적이 한번도 없는데 Blender2.7x는 2.6과 비교해서도 UI는 썩 좋은 편이 아니었습니다. 심지어 구리다는 평을 받고 있었습니다. 2000년대 초반의 UI라는 이야기를 들었습니다.


그랬던 Blender가..


UI가 싹 바뀌었습니다. 그리고 기존의 선택을 의미하는 것이 꾸준하게 마우스 오른쪽 버튼이었는데 그것이 바뀌어서 이제 상식적으로 마우스 왼쪽 버튼이 선택이 되었습니다. 그리고 Autodesk의 그것과 비슷한 UI를 갖추게 되었는데 훨씬더 좋은 의미로 UI가 편리해졌습니다.


약간 3D CAD툴을 보는 느낌입니다.


2) 렌더링


Blender의 렌더링은 그동안 업계 최고 수준이었습니다. 이미 VRay 같은 상용 렌더러와 비교해서 상당한 수준의 렌더링 성능을 갖추고 있었습니다. 다만 Cycle렌더링이 성능을 많이 요구를 한 탓에 렌더링 팜을 운영해야 할 정도였고 기존의 Blender 내장 렌더러는 결과물이 썩 좋지 않았습니다.


그런데 이번 2.8에는 EEVEE라는 새로운 렌더러가 내장되었습니다. Cycle 렌더러 수준의 조명, 그림자 등의 쉐이딩 능력과 Blender 내장 수준의 성능을 갖춘 엄청난 렌더러가 붙어서 나온 것입니다. 이건 MAYA의 기본 렌더러를 찜쪄먹는 수준입니다.


이름하여 EEVEE렌더러인데... 네... 포켓몬의 그 이브이와 철자가 똑같습니다. 사실 노린게 맞을겁니다.


어쨌건 실시간 렌더링이 가능하고 최종 목표가 언리얼 엔진의 수준을 보여주는 것이라고 하네요. 그렇다는 것은... EEVEE렌더링으로 렌더링을 하면 속도가 무지막지 하다는 의미가 됩니다!!!!


그러니까 업계 최고 수준이라는 Cycle렌더링을 하기 전에 EEVEE로 어느정도 확인을 하고 Cycle렌더링을 하면??? 적은 시간동안 엄청난 결과물을 뽑을 수 있다는 의미가 됩니다. 심지어 EEVEE 렌더러가 Blender 내장 보다 속도가 더 빠릅니다. 애니메이션을 만들면 인코딩속도에 렌더링속도가 발목 잡힙 정도입니다.



지금 현재 저는 기존 2.79로 작업 된것을 2.8로 넘기는 작업을 하고 있는데 호환성 문제가 약간 있어서 여기서 조금 문제가 생기는데 텍스처 정보가 날아가서 다시 텍스처를 잡아줘야하고 일부 플러그인이 여전히 문제를 일으키고 있습니다.


이건 베타버전이어서 그럴 수도 있고 아직 일부 플러그인의 호환성이 완벽하지않아서 그럴 수도 있습니다.


하지만 한가지 확실한 것은 Blender가 이미 상용프로그램 수준으로 올라왔다는 것과 UI면에서도, 성능면에서도 Autodesk제품군 이상의 모습을 보인 다는 것입니다. 이쯤되니 어디까지 성능이 올라가게 될지 무서운 수준입니다.


심지어 3DS MAX는 끝났다는 이야기도 들려오네요. 오픈소스 프로그램이 이렇게 된다니까 기분은 상당히 좋네요.


P.S 기존 2.79에서 제작된 것을 불러오니까 쉐이더가 안 돌아간다던지 하는 일이 있네요. 텍스처가 날아가는건 그래도 이해하겠는데 쉐이더까지 날아가는건 좀 너무한거 아닌가 싶기도 하고... 기존 호환을 조금 더 신경 써줬으면 좋겠습니다. 아니면 변환 도구를 같이 제공한다던지요...

,

Proton은 리눅스용 Steam에서 윈도우용 게임을 구동할 때 사용할 수 있는 기능입니다. SteamPlay라고도 하지요. 해당 내용은 https://moordev.tistory.com/284https://moordev.tistory.com/285 여기에서 다뤘습니다.


오늘은 일부 게임에서 소리 레이턴시 관련해서 문제가 발견되어서 이를 해결하는 방법에 대해 알려드리고자 합니다. 특히 리듬 게임류에서 이 방법이 중요합니다.


이를 위해선

Protontricks가 필요합니다. 


위에서 나온대로 Protontricks를 설치합니다.


sudo apt install winetricks

wget https://raw.githubusercontent.com/Sirmentio/protontricks/master/protontricks && chmod +x protontricks
sudo mv protontricks /usr/bin/protontricks

sudo apt install winetricks

wget https://raw.githubusercontent.com/Sirmentio/protontricks/master/protontricks && chmod +x protontricks
sudo mv protontricks /usr/bin/protontrick

출처: https://moordev.tistory.com/284 [MoorDev의 우분투사용 분투기]
sudo apt install winetricks

wget https://raw.githubusercontent.com/Sirmentio/protontricks/master/protontricks && chmod +x protontricks
sudo mv protontricks /usr/bin/protontricks

출처: https://moordev.tistory.com/284 [MoorDev의 우분투사용 분투기]
sudo apt install winetricks

wget https://raw.githubusercontent.com/Sirmentio/protontricks/master/protontricks && chmod +x protontricks
sudo mv protontricks /usr/bin/protontricks

출처: https://moordev.tistory.com/284 [MoorDev의 우분투사용 분투기]


그리고 Protontricks 사용 방법에 맞춰서 다음과 같이 이용하시면 됩니다.


protontricks -s 게임이름

이러면 저렇게 게임이름뒤에 번호가 나옵니다. 저 번호를 복사합니다.


그리고


protontricks 번호


이렇게 하면 winetricks가 실행되면서 트릭을 적용 할 수 있게 됩니다.


소리 레이턴시 문제가 생기는 이유는 pulseaudio 서버를 거치면서 딜레이가 생기는 것인데 이를 ALSA로 직접 통신하면서 pulse를 무시하는 방법을 사용하는 겁니다.


choose default wineprefix - change settings - sound=alsa


이 순서대로 눌러준 다음 취소를 눌러서 빠져나옵니다. 그리고 Run winecfg를 눌러서 확인을 하면


winealsa를 사용하게 끔 만들 수 있습니다. 단, 사운드 카드가 두개 이상을 경우 출력장치를 확실하게 선택해 주셔야 합니다. 잘못하면 HDMI로 나가야 할 소리가 일반 스피커로 나갈 수도 있습니다.


이렇게 하면 확실히 소리가 하드웨어와 연결되면서 레이턴시 문제가 해결되는 것을 볼 수 있습니다.

,

MD5: f9f8eaf86cf719d7468347b8b030958e


리눅스민트 19.1의 정식배포에 맞추어서 해당 버전의 한국어설정이 미리된 버전을 배포합니다.


기존 리눅스민트와 다른 점은 다음과 같습니다.


1. 한국어 설정이 미리 되어 있습니다. 설치 후 한국어 설정을 추가로 할 필요가 없습니다.


2. 서울폰트, Gabia폰트, Spoqa폰트가 추가로 설치되어 있습니다.


3. ALZ, EGG압축 해제를 위해 Arkzip을 설치하였습니다.


4. Bleachbit를 설치했습니다.


5. 배경화면을 추가했습니다. 사진작가 허태무님의 사진을 기본 배경화면으로 설정했습니다.


6. Windows10테마를 추가하였지만 기본설정은 하지 않았습니다.


7. 동영상 재생을 위한 기본 코덱을 추가하였습니다.


8. 소스엔진게임(Portal2, Left4Dead 등)의 게임에서 한글 지원을 위한 wqy-zenhei아시아 폰트가 추가되었습니다.


9. HWP파일을 읽기 위해 한컴뷰어가 설치되었습니다.


10. 기본 업데이트 서버가 하루카상(리눅스민트)과 다음카카오(우분투)서버로 기본설정 되어있습니다.



,