[DEV] 기록 165

[Docker] 윈도우 10 도커 설치 WSL 2 installation is incomplete 발생하는 경우

개요 새로운 컴퓨터 환경 설정을 위해 Docker Desktop 윈도우 버전을 다운로드하였는데 아래와 같은 오류 메시지가 발생했습니다. 다행히 위와 같은 케이스가 발생했을 때 어떻게 대처할지 잘 정리해준 블로그가 있어 해당 블로그를 참고하여 docker를 정상적으로 설치할 수 있었습니다. https://blog.nachal.com/1691 WSL 2 installation is incomplete, 윈도우10 도커 설치시 리눅스 커널 업데이트, Docker Linux Kernel Update on Wind 윈도우에서 도커를 설치하다가 WSL2가 설치되지 않았다는 오류 메세지가 뜨면, 리눅스 커널 업데이트를 해야 합니다. 뭔 윈도우에 리눅스 커널이야?!?!? 1. 파워쉘을 관리자 권한으로 실행 (파워쉘 b..

[DEV] 기록 2022.08.28

[DBeaver] DB 백업 후 복구하는 방법

개요 개발계 DB와 로컬 DB를 동기화해야 하는 케이스가 발생하여 찾아본 결과 DBeaver에서 dump와 restore 기능을 제공하는 것을 알게 되었습니다. DBeaver에서 UI로 간단하게 제공하기 때문에 쉽게 진행할 수 있었습니다. 1. DB Dump 뜨는 방법 dump 뜨고 싶은 database에 우클릭 후 도구 > dump database 클릭 postgresql의 경우 schema, mariadb의 경우 database database 내 dump 뜨고 싶은 테이블들 모두 선택 저장 위치 선택 후 start 선택한 저장 장소에 dump 파일이 잘 저장되었는지 확인 * 주의: 저 같은 경우 DBeaver Community Version을 사용하는데 dump 파일 크기가 너무 커질 경우 exit..

[DEV] 기록 2022.08.28

[Git] Invocation failed Unexpected end of file from server

개요 안드로이드 스튜디오에서 개발한 commit 내역을 깃헙에 push 하려는데 아래와 같은 에러 메시지와 함께 정상적으로 작동이 되지 않았습니다. (개발 환경은 mac이었습니다.) 원인 깃헙에서 2021년 8월부터 인증에 password 방식이 아닌 token 방식으로 전환하면서 발생하는 오류라고 합니다. (저 같은 경우 2022년 8월인데 왜 이제야 위 에러가 발생했는지는 잘 모르겠습니다.) 해결 방법 이미 개발냥발님이 잘 정리해주신 내용이 있어 개발냥발님 포스팅 링크를 첨부합니다. 개발냥발님 감사합니다! [Mac] GitHub push token 오류 해결 Github 오류 7.29일 새벽 갑자기 git push가 안 되는 현상을 겪었다. 오류의 첫 줄이 무슨 말이냐면 Password 인증방식이 일..

[DEV] 기록 2022.08.03

[C++ STL] map vs unordered_map

개요 프로그래머스 호텔 방 배정 문제를 푸는데 자료구조로 map을 사용할 경우 TLE가 발생하지만 unordered_map을 사용할 경우 실행 시간이 훨씬 빨라져 AC를 받을 수 있었습니다. 이에 따라 이 두 자료구조의 차이점을 알고 싶었습니다. 다행히도 Peter Ahn님이 잘 정리하신 게시글이 있었고 저는 해당 게시글을 짧게 요약해보겠습니다. https://gracefulprograming.tistory.com/3 [C++] map vs hash_map(unordered_map) 개요 hash_map은 비표준 Container인데 반해(stdext namespace에 포함) unordered_map은 C++11에서 STL 표준 Container로 추가되었으며, (사실 TR1부터 추가되었지만 C++11..

[DEV] 기록 2022.07.29

[Java Secure Coding] TOCTOU

개요 작성한 코드에 대해 보안성 검토를 받았는데 파일에 대해 TOCTOU 문제가 발생할 수 있다는 코멘트를 받았습니다. 제가 작성한 코드는 아래와 같았습니다. if (file.exists()) { file.delete(); } 원인 싱글 쓰레드일 경우에는 위 코드가 문제없겠지만 멀티 쓰레드 환경에서는 위 코드에 대해 race condition이 발생할 수 있습니다. TOCTOU는 Time Of Check to Time Of Use의 줄임말인데 이 말은 즉슨 file이 존재하는지 확인한 시점에는 파일이 존재할 수 있으나 파일을 삭제하려고 하는 시점에 이미 해당 파일이 삭제되었을 수 있다는 뜻입니다. 정리를 하자면 멀티 쓰레드 환경에서 동시에 해당 파일에 접근하여 나중에 들어온 요청이 먼저 들어온 요청보다 ..

[DEV] 기록 2022.07.29

[MySQL + MariaDB] 날짜를 기준으로 파티셔닝

개요 분 단위로 쌓이는 통계 정보를 저장하는 테이블을 생성했고 데이터가 엄청 많이 쌓일 것이기 때문에 월별로 테이블 파티셔닝을 진행했습니다. 기존에 작성한 PostgreSQL 테이블 파티셔닝과 살짝 다른 점이 있어 별도로 정리해봤습니다. https://jaimemin.tistory.com/1913 [PostgreSQL] 월별로 DB 파티셔닝 예제 개요 제가 담당하고 있는 파트에서 매일 몇 만 건씩 데이터가 쌓이는 DB가 있었습니다. DB에 너무 많은 데이터들이 쌓일 경우 조회 성능이 떨어질 수 있으므로 월별 DB 파티셔닝을 진행했고 진행 jaimemin.tistory.com 1. 파티셔닝 지원 확인 우선, 현재 MySQL 버전이 파티셔닝을 지원하는지 확인을 해야 합니다. 제가 알기로는 MySQL 5.7 ..

[DEV] 기록 2022.07.21

[MySQL] 서버 timezone 한국으로 변경하기

개요 로컬 데이터베이스 테이블 내 datetime 타입 칼럼에 NOW()를 넣으면 한국 시간 기준이 아닌 UTC+0 기준으로 들어갔습니다. (우리나라는 UTC+9) 다행히 jwkim96님 게시글에 서버 타임존을 변경하는 방법이 자세히 설명되어있었고 해당 내용을 간단하게 정리해보겠습니다. https://jwkim96.tistory.com/23 [MySQL] mysql server timezone 한국으로 설정하기. timezone이란? 한국은 표준시(대한민국 표준시 - KST)를 하나의 시간대(timezone)만 사용하지만 미국처럼 영토가 넓은 국가들은 timezone이 여러개 있습니다. 또한 각 타임존 역시 2종류로 나누어 집니다. jwkim96.tistory.com Timezone 변경 방법 1. 아래..

[DEV] 기록 2022.07.21

[Git] 브랜치명 변경하는 방법

개요 feature 브랜치명을 변경해야 해서 방법을 찾아봤더니 stackoverflow에 잘 정리된 게시글이 있었습니다. 브랜치명 변경하는 방법 1. 현재 로컬 브랜치명 변경 git branch -m 2. 변경된 로컬 브랜치를 push 하여 upstream 브랜치를 재설정 git push origin -u 3. 기존 원격 브랜치를 삭제 git push origin --delete 출처 https://stackoverflow.com/questions/6591213/how-do-i-rename-a-local-git-branch How do I rename a local Git branch? How do I rename a local branch which hasn't been pushed to a remot..

[DEV] 기록 2022.07.18

SQLite DB 사용기

개요 현업에서는 주로 MariaDB나 PostgreSQL을 사용했는데 이번에 개인적으로 간단한 프로젝트를 하고 싶어 로컬 파일로 데이터베이스를 관리하는 SQLite DB를 사용해봤습니다. Dokon Jang님 포스팅을 많이 참고했고 자세한 설명은 아래 블로그를 방문하시면 확인하실 수 있습니다. https://docko.tistory.com/entry/Java-SQLite-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 Java - SQLite 데이터베이스 사용하기 안드로이드 개발 시 SQLite 데이터베이스를 자주 활용하고 했습니다. Java Application에도 SQLite 데이터베이..

[DEV] 기록 2022.07.10

[Java] "No suitable driver found for jdbc:sqlite"

개요 Maven 저장소에서 org.xerial:sqlite-jdbc jar를 다운로드했음에도 불구하고 DB에 연결 시도할 때 아래와 같은 메시지가 발생했습니다. "java.sql.SQLException: No suitable driver found for jdbc:sqlite" 해결 방법 우선, Maven 저장소에서 jar 파일을 정상적으로 다운받았는지 확인해야 합니다. Intellij 기준 프로젝트 구조 내 External Libraries에 pom.xml에 등록한 jar 파일이 있는지 확인합니다. External Libraries에 있는데도 불구하고 계속 동일한 에러가 발생한다면 DB에 연결하기 전에 Class.forName("org.sqlite.JDBC"); 구문을 추가해줍니다. 참고 https:/..

[DEV] 기록 2022.07.10