본문 바로가기

전체 글

[Linux/타임존 변경하기] 특정 시간대에 특정 코드가 발생하도록 설정해놓았는데 작동이 안된다면? - 타임존 설정을 살펴보자 일단 두가지를 살펴봐야 한다. 필자는 AWS EC2 서버를 이용중 이고 구동 서버는 톰캣을 사용하고 있으므로 아래 두개를 살펴 볼 것이다. EC2 타임존 톰캣 타임존 1. EC2 타임존 변경 EC2 서버의 기존 타임존은 UTC이다. 이는 세계 표준 시간으로 한국의 시간대가 아니다. 즉, 한국의 시간과는 9시간 차이가 발생한다. 이렇게 되면 서버에서 수행되는 JAVA 애플리케이션에서 생성되는 시간도 모두 9시간씩 차이가 나기 때문에 꼭 수정해야 할 설정이다. 서버의 시간을 한국 시간(KST)로 변경해보자. 다음 명령어를 차례로 수행하면 된다. sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime 2. 톰캣 타임존 변경.. 더보기
[Java] Map 객체에 담긴 value들을 전부 가져오고 싶은 경우 (key를 모르는 상황에서) 키를 알고 있다면 get() 로 간단하게 객체를 찾아오면 되지만, 저장된 전체 객체를 대상으로 하나씩 얻고 싶을 경우에는 다음 방법을 이용한다. keySet() 메소드로 모든 키를 Set 컬렉션으로 얻은 다음, 반복자를 통해 키를 하나씩 얻고 get() 메소드를 통해 값을 얻으면 된다. 1 2 3 4 5 6 7 8 9 Map map = new HashMap(); // 객체를 하나씩 처리 Set keySet = map.keySet(); // keySet() 메소드를 이용하여 key값들 얻기 Iterator keyIterator = keySet.iterator(); while(keyIterator.hasNext()) { String key = keyIterator.next(); Integer value = .. 더보기
[linux 에러] JAVA_HOME should point to a JDK not a JRE 보통 Maven 컴파일 시 발생하는 에러입니다. 1. 에러 원인 리눅스에 Maven을 설치한 후에, JAVA_HOME 환경변수를 설정해줘야 Maven이 JDK 위치를 찾아서 실행할 수 있습니다. Maven의 목표는 우리가 실행하려는 프로젝트의 소스 코드에 맞는 적합한 Java 컴파일러를 실행시키는 것이기 때문입니다. 만약, JAVA_HOME 환경변수를 설정하지 않았거나 제대로 된 JDK 위치를 가리키지 않은 경우, 다음과 같은 에러를 냅니다. mvn -version # Output... The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAV.. 더보기
[Maven 빌드 에러] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project musicchart: Compilation failure 에러 문구 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project musicchart: Compilation failure bad path element "/root/.m2/repository/com/mchange/c3p0/0.9.5.2/mchange-commons-java-0.2.11.jar": no such file or directory 이 문구는 핵심이 아닙니다. 이건 각자 상황마다 다르게 나타날 수 있습니다. bad path element..~ 정도만 똑같을 듯 아무튼 위의 에러문구에 주목! 에러 원인 에러 문구를 해석해보자면 말그대로 본인의 프로젝트.. 더보기
[Git] 옛날 커밋으로 되돌아가기 - reset 작업 중 실수가 있어서 이전 이력의 특정 커밋으로 되돌리고 싶다면 해당 커밋을 우클릭 후, '이 커밋으로 초기화' 를 눌러줍니다. 우리가 보통 하고싶은 깔끔한 리셋은 [Hard] 모드입니다. 지금 작업 공간이 더럽든, 깨끗하든, 그냥 깔끔하게 저 커밋으로 히스토리를 돌리겠다는 말이죠. 반면, [Soft], [Mixed] 모드는 시간을 되돌리긴 하지만 그 이후의 변경사항은 작업공간에 남겨두겠다는 소리입니다. 저는 [Mixed] 로 해보겠습니다. [Soft] 와 [Mixed] 둘다 변경사항을 남겨두지만 둘의 차이점을 보자면 .. 되돌린 커밋시점 이후의 변경이력이 [Soft] 는 스테이지에 올려져 있고, [Mixed] 는 스테이지로부터 내려가 있습니다. 저의 경우 [Mixed] 를 했기 때문에 스테이지에서 전.. 더보기
javac: invalid target release - 메이븐 프로젝트 컴파일 시 뜨는 에러 다음과 같이 메이븐 프로젝트를 컴파일하려 할 때, 버전 문제로 Build Failed가 뜨는 경우 중 하나입니다. * full debug logging을 보려면 끝에 -e를 붙임 javac: invalid target release: 11 11 버전의 소스파일은 현재 서버에서 컴파일 할 수 없다는 것입니다. pom.xml에는 소스 컴파일 세팅이 jdk11버전으로 맞춰져 있고, 리눅스 서버의 자바 버전은 jdk1.8로 맞춰진 상태였습니다. 즉, 11버전의 소스파일을 더 낮은 버전인 1.8로 컴파일 하려니까 컴파일 에러가 뜨는겁니다. 리눅스 서버에 설정되어 있는 Java 버전 - jdk1.8로 설정되어 있는 걸 볼 수 있습니다. 해결방법은 소스파일의 세팅부분(pom.xml)에서 컴파일 버전을 낮추거나, 리눅.. 더보기
[운영체제 OS] 프로세스 스케줄링 - 스케줄링 큐란? 다중 프로그래밍(시분할)의 목적 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU를 빈번하게 교체하는 것 교체는 왜 하는가? 단일처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없기 때문. 스케줄링 큐(Scheduling Queues) 크게 두가지 큐가 있다. - 준비완료 큐, 장치 큐 이 중 준비완료 큐에 대해 알아보겠다. 준비완료 큐 준비완료 상태에서 실행을 대기하는 프로세스들은 준비완료 큐에 있다. 이 큐는 일반적으로 연결 리스트로 저장된다. 준비완료 큐의 헤더는 리스트의 첫 번째와 마지막 PCB를 가리키는 포인터를 포함한다. 새로운 프로세스는 처음에 준비완료 큐에 놓인다. 프로세스는 cpu를 할당받을(dispatch) 때까지 준비완료 큐에서 대기한.. 더보기
[aws] EC2 서버에 접속하기 (맥OS) Mac & Linux 는 터미널을 이용해 접속합니다. 먼저 ssh key를 생성하기 전에 이미 생성된 key가 있는지 확인해봅니다. ~/.ssh/id_rsa.pub 파일이 없다면, 아직 한 번도 ssh key를 생성하지 않은 상태입니다 ssh key pair를 만들어보겠습니다. Mac은 OpenSSH를 포함하고 있어 아래와 같이 ssh-keygen 명령으로 생성이 가능합니다. 1) 어느 경로에 키를 저장할지 선택 (기본경로는 /Users/본인컴퓨터이름/.ssh/id_rsa) -> 엔터로 기본경로에 저장해줍니다. 2) 비밀번호는 무엇으로 할지 -> 엔터 쳐서 그냥 넘어갑니다. 그럼 키가 만들어지고 기본 위치(/Users/본인컴퓨터이름/.ssh/id_rsa)에 파일이 생성됩니다. 이제 다시 id_rsa.pu.. 더보기