연구한 이야기
mysql connect 시에 timezone 관련해서 에러가 나요!
The server time zone value 'KST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver mysql에서 SELECT @@global.time_zone; 해보면 SYSTEM 값이 나오면, 서버에는 기본 timezone이 없는 상태. 이 상황에서 클라이언트가 timezone 명시 없이 접속하게 되면 에러가 나게 된다. 서버에서 timezone을 설정하던지 (SET 쿼리), 클라이언트가 연결 시에 serverTime명시하자.
Android Studio NDK breakpoint가 잡히지 않아요!
debugger가 dual 로 켜진 상황 (app→edit configurations→debugger) C++ 코드의 breakpoint들이, debugging을 시작하면 빨간 점에서 비활성화 표식으로 바뀜. Native code debug is not working in Android Studio 3 - Stack Overflow proj.androidstudio 폴더의 app/.cxx 폴더를 지워주고 다시 디버깅하니 잘 잡힌다!
dockerfile은 죄가 없다.
업무를 진행하며, 다양한 서버와 인프라를 도커 환경으로 묶어 봤다. 이 때, 어떨 때는 도커 빌드 속도가 빨랐다가 어느 때는 느리고, 이런저런 문제를 겪기도 했다. dockerfile을 작성할 때 유의해야 할 세 가지를 뽑아 정리해 보았다. 1. 레이어 개수에 유의하기 Dockerfile의 각 명령어는, 대부분 새로운 레이어를 생성한다. 불필요하게 많은 레이어는 빌드 시간과 이미지 크기를 증가시켜, 효율성을 저하시킬 수 있다. 기존에는 가독성을 위해 다음과 같이 작성했었다. FROM alpine:latest RUN apk update RUN apk add rust RUN apk add cargo ... 하지만 위 dockerfile의 경우 벌써 네개의 레이어가 만들어진다. 따라서, 아래처럼 개선할 수 있..
conan 패키지 관리자 도입하기 : 개론
회사에서 기존 CMake기반의 개발 환경에, conan을 도입해보는 업무를 맡았다 부끄럽지만 기존에 CMake를 써본 경험도, XCode IDE를 써본 경험도 없어서, 꽤나 많은 시행착오들이 있었는데, 이러한 과정을 간단하게 글로 포스팅해보고자 한다. Conan이 뭔가요? conan은 C/C++을 위한 패키지 관리자입니다. 외부 라이브러리나 의존성을 효과적으로 관리하고 프로젝트에 포함하는 것이 가능해집니다. 코난을 사용하면 어떤 점이 있는지, 정리해 보겠습니다. 기존 C/C++ 라이브러리 추가 플로우 필요한 라이브러리를 수동으로 다운로드받고, 빌드 환경에 맞게 수동으로 설정해주어야 했습니다. 헤더 위치를 지정해주고, 빌드에 포함할 디렉터리나, 라이브러리 파일을 직접 입력해주어야 합니다. 또한, 플랫폼이나..
ASTC 포맷, 어떤 점이 왜 좋을까?
Arm에서 ASTC를 상세하게 설명해주는 문서가 있다. https://github.com/ARM-software/astc-encoder/blob/main/Docs/FormatOverview.md 위 글을 천천히 읽어 보며, 정리해 보는 포스팅을 해보려고 한다. ASTC는 분명 ETC2보다 개선된 압축방식이고, 같은 용량의 결과물이더라도 품질은 극명하게 차이가 난다. 왜 그런걸까? 그 몇년 사이에 압축 알고리즘이 비약적으로 상승한 것 때문일까? 이에 대한 답변이 확실히 될 수 있도록, 문서를 같이 읽어보자. ASTC format overview 특징 포맷 유연성 ASTC는 1~4채널의 데이터 압축을 지원합니다. RGB+A에서의 A채널과 같이, 상관관계가 없는 독립된 채널도 포함입니다. 비트레이트 유연성 A..
Prometheus + Grafana 패키징
개발 환경 모니터링용으로 구축해놓은 prometheus + grafana 시스템을, 퍼블리싱 회사로 패키징하여 전달해주는 업무를 맡았다. 문제는..! grafana에 설정한 datasource와 dashboard 가 그대로 문제없이 패키징되어야 했다. 상호간에 참조가 깨지지 않게 패키징하려면 어떤 방법을 써야 할지 좀 알아 보았다. 그 전에, 간단히 설명부터. Prometheus 다양한 메트릭 지표를 수집하는 중앙 시스템이다. 임계점을 설정하면 알림을 전송해주는 시스템 또한 가지고 있다. Pushgateway prometheus는 다양한 메트릭 지표를 직접 pull하는데, 다양한 시스템들이 능동적으로 pushgateway 로 메트릭을 push 하게끔 할 수도 있다. 그렇다면 prometheus는 push..
텍스처 압축과 ASTC
이번에 회사에서 사용중인 게임엔진에 ASTC 텍스처가 지원되게끔 개선하는 작업을 맡았다! 그래서 이 업무 완료 이후 내용을 공유하고자 작성한 자료를, 공개용으로 간단히 요약해 보았다. 텍스처 압축 텍스처가 무엇인가요? 물체의 시각적인 모든 특성을, 텍스처라고 부른다. 물체의 질감, 모양, 색상, 패턴 등등이 모두 텍스처를 설명하는 단어들이다. 조금 더 게임엔진 쪽으로 설명하자면, UV매핑할 때 사용되는, 메모리에 로드된 이미지 라고도 표현할 수 있겠다. 위 이미지에서 보이다시피, 마인크래프트의 '텍스처 팩'은 물체가 보이는 모든 특성에 관여하게 된다. 또한, 게임에서 사용중인 2D 이미지들 또한, 모두 다 텍스처라고 말할 수 있을 것이다. 텍스처 압축을 왜 하나요? 이는 텍스처를 떠나, 압축이 가져다 주..
jenkins(image) 에서 docker buildx를 사용하고 싶어요!
jenkins와 docker jenkins 에서 도커 이미지를 빌드하는 것은 흔한 일이다. 하지만, jenkins 서버를 만약 docker container로 띄웠다면 조금 복잡해진다. 이 때, jenkins에서 도커를 사용하는 방식에 따라 dood, did 로 나뉘게 된다. docker out of docker 젠킨스의 docker가 아닌, 호스트의 docker를 젠킨스에서 사용할 수 있도록 한다. docker in docker 젠킨스의 docker image 내부에 docker를 추가로 설치한다. 둘 중 어떤 것을 쓸 지 고민해보고 찾아보다가, dood로 결정했다. 아무래도 호스트의 docker를 바로 쓰는 것이 did보다 더 쾌적할 것으로 보인다. 또한, 대부분이 dood를 권장한다. 정확히는, d..