분류 전체보기
-
MySQL AUTO_INCREMENT 컬럼 초기화Knowledge 2019. 11. 5. 16:48
MySQL을 이용해서 개발 중에 Primary Key, AUTO_INCREMENT로 설정한 한 컬럼이 있었다. 그리고 이 테이블은 레코드가 추가되고 삭제되기를 반복하는 테이블이었다. 그런데 시나리오가 추가되며 이 컬럼의 값이 처음 예상보다 빠른 속도로 증가하는 문제가 발생했다. 실제 레코드는 4000개쯤 되는데, 신규로 추가된 레코드의 컬럼값은 10만단위였다. 처음 생각한 해결책은 INT로 되어있는 컬럼 타입을 unsigned로 변환하는 것이었다. 이 경우 보수적으로 계산해도 충분한 값이 나와서 사실상 사용에 문제가 없었다. 그런데, 사실 이 id값이 내부적으로만 사용되고 외부에는 참조가 되지 않는 값이기에... 기존 값들을 1부터 오름차순으로 반영하고 추가되는 값은 다시 그 이후로 증가하도록 리셋하는 ..
-
리눅스 디스크 용량 확장하기Knowledge 2019. 10. 23. 16:14
클라우드 인프라를 사용하다보면 초기 설정한 하드디스크의 용량이 너무 작아 늘려야 하는 경우가 있다. 개인적으로 ec2에서 베이직 인스턴스에 기본 설정된 하드디스크 용량이 8GB여서 너무 당황했다. 오픈소스 프로젝트 하나를 테스트 중에 갑자기 빌드가 안되어 보니.. 용량 문제였던 것으로 판명되었다. 다행히 클라우드 인프라는 대부분 동적으로 하드디스크 용량을 늘리는 기능을 제공한다. 실제로 클라우드 서버는 하이퍼바이저 위에서 구동 중이기에 간단히 용량을 늘릴 수 있다. 그런데 클라우드 서버의 하드디스크 용량을 늘린다해도, 늘어난 용량이 이미 구동중인 리눅스 시스템에서 자동으로 인식되지는 않는다. 루트(/) 파티션을 늘어난 용량으로 셋업하기 위해서는 다음 과정을 거치면 된다. 1.디스크 정보 확인 다음 명령을..
-
[AWS] EC2 root 계정으로 우분투 로그인 하기Knowledge 2019. 10. 22. 12:47
아마도 우분투가 가장 많이 쓰이는 리눅스 배포판일 것이다. 그런데 언제부터인가 이후 우분투 버전은 인스톨 후에 ssh를 통해 root 계정으로 로그인하는 부분을 디펄트로 막아놓았다. 실제로 운영하는 서버라면 root 로그인을 하지 않는 편이 안전하겠지만, 단순 테스트 용도의 서버라면 참 갑갑한 일이 아닐 수 없다. 최근 EC2로 새로운 인스턴스를 만들었다가 root로그인이 되지 않는 상황을 다시 마주쳤다. 언제나 그렇듯이 예전에 어떻게 했는지 까맣게 잊어버렸기에, ssh를 통한 우분투 접속 방법을 다시 한 번 정리해 본다. Step1: root 계정 활성화 먼저 초기 설정대로 ubuntu 계정을 통해 인스턴스에 로그인을 한다. ssh -i pem_key_path ubuntu@xxx.xxx.xxx.xxx ..
-
리눅스 scp (secure copy) 사용법 (PEM 적용)Knowledge 2019. 10. 1. 12:16
EC2사용을 위해 Linux Console에 오랫만에 접속했다. 로컬에서 작업한 파일을 EC2로 이동하려는데, 가장 쉽고 빠른 방법으로 scp가 떠올랐다. 언제나 그렇듯이 문제는 사용법에 대한 기억이 흐릿하다는 점이었다. 원본이 먼저인지 복사본이 먼저인지... 기억을 더듬으며 사용법을 남겨본다. scp의 기본적인 구문은 다음과 같다. $ scp 보통 scp를 서버와 클라이언트 사이에서 사용하므로 다음과 같은 구문이 더 자주 쓰일 것이다. $ scp @: 예를 들어, 로컬의 /home/data/my.data라는 파일을 255.255.255.255 서버의 /usr/local/mydata로 복사하는 경우를 생각해보자. 서버의 계정은 user1이라고 가정하겠다. $ scp /home/data/my.data us..
-
MySQL 데이터베이스의 characterset 언어를 UTF8로 변경하기Knowledge 2019. 9. 30. 14:19
여전히 간단하게 사용하기에는 가장 좋은 관계형 데이터베이스는 MySQL인 것 같다. 그런데 MySQL에서 가장 흔히 하는 실수가 기본 언어셋을 변경하지 않는 것이다. 과거의 유물이어서 그런 탓이겠지만 MySQL의 기본 언어는 latin1으로 설정이 된다. MySQL을 설치한 상태에서 DB를 만들고 사용하면 한글이나 다른 유니코드 데이터가 깨지는 것을 경험할 수 있다. 이런 상황이 벌어지면 DB 설정문제라는 생각을 떠올리기 전에 만든 코드가 잘못되었는지 먼저 체크하게 되는 것이 개발자의 본능이기에 설치 후에는 잊지 말고 MySQL의 언어셋을 변경해 주어야 한다. MySQL 설정 파일인 my.cnf 파일을 연다. 의도적으로 위치를 변경하지 않았다면 우분투에서의 설정 파일의 위치는 다음과 같다. $ vi /e..
-
[우분투] nvm을 이용하여 node js + npm 설치하기Knowledge 2019. 9. 30. 13:59
자주 쓰지 않다보니 우분투에 Node.js를 설치하는 과정을 자주 잊어버려 이번에 남겨보려 한다. Node.js를 설치하는 방법은 여러 가지가 있다. 대표적으로 패키지 매니저를 이용한 방법, 소스코드에서 빌드하는 방법, Node.js에서 제공하는 curl 스크립트를 이용하는 방법, 또 NVM을 활용한 방법 등이 있을 것이다. 각 방법은 나름대로 장단점이 있는데 내 경우에는 NVM을 이용하는 방법이 가장 나아 보였다. Node.js는 버전에 따라 한참 발전하고 있는 스크립트이기에 서로 다른 버전의 Node.js를 선택적으로 사용할 수 있는 환경을 제공하는 NVM이 가장 적합했다. 1. 준비 대부분 우분투 환경에 미리 세팅이 되어 있겠지만, 소스코드 빌드가 필요하므로 빌드 환경부터 설치를 해야 한다. sud..
-
안드로이드 앱 완전히 종료하기Android 2019. 9. 19. 19:22
안드로이드 앱은 액티비티의 집합으로 이루어져 있다. 생명주기도 액티비티마다 제각각이고 시작시점과 종료시점도 때로는 불분명한 것이 안드로이드의 현 주소이다. 가장 단순한 시나리오인 앱의 종료에 있어서도 생각할 것이 많다. 액티비티만 종료를 한다면 앱의 프로세스가 살아 있어서 예기치 못한 부작용이 나타나기도 하고, 앱의 프로세스만 종료하면 Task List에 앱이 여전히 남아있는 등, 다양한 문제가 나타난다. 여러 가지 실험 결과 앱을 완전히 종료하기 위해서는 다음의 스텝을 따라야 한다는 것을 깨달아서 남겨본다. 태스크를 백그라운드로 이동 -> 액티비티 종료 -> Task List에서 지우기 -> 앱 프로세스 종료. 이 중 하나만 빠져도 예기치 못한 상황이 발생한다. 아직까지는 이 방법으로 문제가 없는데, ..
-
PEM파일을 PPK로 변경하기 (PEM to PPK)Knowledge 2019. 9. 15. 17:05
윈도우즈에서 간단한 터미널 툴을 사용하고 싶을 때 가장 먼저 생각나는 툴이 Putty이다. 기본적인 기능만 갖추고 있고, 간단하고, 설치할 필요도 없고, 용량마저 작은 것이 그 매력이 아닐까 싶다. 특히 출시된 이래 긴 세월을 지내오며 검증된 툴이라는 점도 상당한 매력으로 다가온다. Putty가 처음 등장한 시절... 먼 과거에는 보안에 대한 본격적인 고민이 없었다. 원격으로 리눅스 박스나 서버에 로그인할 때 아이디와 패스워드를 사용하는 경우가 대부분이었다. Putty 터미널도 그래서 아이디와 패스워드를 입력받는 창을 기본 인터페이스로 제공한다. 하지만 최근에는 RSA 키를 사용해 원격 서버 접근에 대한 인증을 처리하는 경우가 늘어나고 있다. 당장 많은 사람들이 이용하는 AWS만해도 그렇다. Putty도..