분류 전체보기 261

[Linux] 리눅스 시스템 시간 변경

한 고객사가 AWS EC2 인스턴스를 사용하여 서버를 운영하고 있었는데 현 회사 솔루션 내 작업 로그시간을 UTC가 아니라 KST로 보이게 해달라는 요구를 하였다. AWS EC2 인스턴스의 시스템 시간은 기본적으로 UTC를 따른다. 솔루션은 시스템 시간에 따라 로그를 출력하기 때문에 UTC의 경우 우리나라 시간보다 9시간 전으로 로그가 찍혀 일반 사용자들은 보기 어려울 수 있다. 나는 이를 ..

OS/Linux 2023.08.14

[Network] User Mode와 Kernel Mode

Windows를 실행하는 컴퓨터의 프로세서에는 User Mode와 Kernel Mode가 있다. Processor(프로세서)는 프로세서에서 실행 중인 코드 유형에 따라 두 모드를 전환한다. 응용 프로그램은 User Mode에서 실행되고 핵심 운영 체제 구성 요소는 Kernel Mode에서 실행된다. 대부분의 Driver는 Kernel Mode에서 실행되지만, 일부 Driver는 User Mode에서 실행될 수 있다. User Mode(사용자 모드) User Mode 응용 프로그램을 시작했을 때 Windows에서 응용 프로그램에 대한 process를 생성한다. 해당 process는 애플리케이션에 개인 가상 주소 공간과 개인 handle table을 제공하는데, 응용 프로그램의 가상 주소 공간은 privat..

Network 2023.08.09

[Network] Layer와 Layered Architecture

네트워크에서 많은 사용자가 데이터를 동시에 전송하기 때문에 원활한 데이터 전송을 위해 체계적인 전략이 필요하다. 효율적으로 데이터를 송수신할 수 있도록 다양한 전략을 세우는데, 그 중 하나가 Layered Architecture(계층형 아키텍처)이다. Layer 관련 통신 기능을 서로 다른 계층 집합으로 그룹화한 것을 Layer(계층)라고 한다. - 기능 통신에 필요한 다양한 기능의 하위 집합을 수행한다. 계층의 다음 상위 계층에 해당 기능의 서비스를 제공한다. 다른 시스템의 피어 계층과의 통신 프로토콜을 구현한다. 작업을 구현한 후에는 다음 계층에 의존하여 추가 기능을 수행한다. Layered Architecture - 기본 구성 요소 Service : 계층에서 상위 계층으로 제공하는 함수 모음. 인터..

Network 2023.08.07

[JPA] Repository 인터페이스

Spring Data Repository Abstraction에서의 핵심 인터페이스는 Repository이다. 이는 도메인 클래스와 도메인의 id 타입을 인자로 받는다. 주로 마커 인터페이스(Marker Interface)로 동작한다. CRUDRepository CRUDRepository는 엔티티 클래스에서 복잡한 CRUD 기능을 제공한다. public interface CrudRepository extends Repository { S save(S entity); T findOne(ID primaryKey); Iterable findAll(); Long count(); void delete(T entity); boolean exists(ID primaryKey); // … more functionali..

[Linux] /etc/hosts 파일

hosts 파일 컴퓨터가 도메인의 IP를 찾을 때 컴퓨터가 가장 먼저 조사하는 파일로, Linux에서 DNS보다 먼저 hostname을 IP로 찾아준다. DNS 매핑 과정 IP 주소로 접속하기란 번잡하므로 사람이 외우기 쉬운 주소로 도메인을 사용한다. tistory.com을 예로 들겠다. tistory.com을 입력했을 때 브라우저는 DNS 서버에 접속하여 tistory.com의 IP 주소를 찾는데, DNS 서버가 해당 IP를 알려주면 이에 접속해서 사이트를 띄운다. 이때, tistory.com을 입력했을 때 컴퓨터가 DNS 서버에 hosts 파일을 먼저 조사한 후 IP 주소를 찾는다. hosts 파일에서 해당 IP 주소를 찾는다면 DNS 서버는 더이상 그 도메인에 대해 묻지 않는다. hosts 파일 구..

OS/Linux 2023.07.29

[jBoss] 웹에 파일이 제대로 반영되지 않음

문제 상황 개발 1번 서버와 2번 서버가 있는데, 2번 서버는 1번 서버를 가져다 파일을 부운 상태였다. 두 서버 모두 같은 UI 파일을 패치하고 jBoss를 재기동했다. 1번 서버는 제대로 반영이 되었으나, 2번 서버에서 스크립트 에러가 뜨며 일부가 반영되지 않았다. 혹시나 하여 캐시를 삭제하고 강력 새로고침을 하였음에도 아무런 변화가 없었다. 원인 1. 패치된 UI 디렉토리를 jBoss가 새로 컴파일하지 못해 에러가 발생하였다. 2. 1번 서버의 기존 UI 파일을 2번 서버로 붓는 과정에서 파일 크기가 깨졌다. 해결 원인 1) 패치된 UI 디렉토리를 jBoss가 새로 컴파일하지 못해 에러가 발생하였다. -> jBoss의 domain 디렉토리 내 data, tmp 디렉토리를 삭제한 후 kill.sh을 ..

WAS/jBoss 2023.07.29

[Linux] CentOS7 ssh 설치 및 접속

ssh 설치 유무 확인 # rpm -qa | grep ssh* 나는 ssh가 설치되어 있었다. ssh 설치 # yum install [설치할 openssh 패키지] 혹시 몰라 다시 openssh-server를 다시 설치하였다. 만일, 서버가 설치되어 있지 않다면 openssh-server*를 설치하고, 클라이언트가 설치되어 있지 않다면 openssh-clients*를 설치하면 된다. ssh 설정파일 편집 # vi /etc/ssh/sshd_config PermitRootLogin : root 계정으로의 로그인 허용 여부를 설정한다. yes는 허용, no는 차단하는 것이다. 나는 테스트를 위한 것이므로 root 계정으로의 로그인을 허용하였다. ssh 자동실행 등록 및 시작, 상태 확인 -- ssh 자동실행 ..

OS/Linux 2023.07.23

[Linux] yum으로 java 설치

처음에 CentOS를 깔고 터미널에서 명령어 java -version 또는 which java를 입력했을 때 아무 것도 안뜰 수 있다. 그럴 때 java를 설치해주어야 하는데, 먼저 jdk-devel 패키지가 깔려있는지 확인해야 한다. jdk가 깔려있어도 jdk-devel이 없으면 안된다. jdk 설치 유무 확인 # yum list installed *jdk-devel 위 명령어를 입력했을 때 'Error: No matching Packages to list' 라는 문구가 출력된다면 jdk-devel 패키지를 설치해야 한다. 설치 가능한 jdk 확인 # yum list java*jdk-devel jdk 설치 # yum install [설치할 jdk-devel 패키지] 나는 java-1.8.0-openjd..

OS/Linux 2023.07.23

[Java] 빌드(Build)와 컴파일(Compile), 런타임(Runtime)

빌드(Build) 빌드는 소스코드 파일(.java)을 class 파일로 변환한 후 실행파일로 만드는 과정을 말한다. 빌드 안에 컴파일이 포함되어 있다. 이때 빌드를 도와주는 도구를 빌드 툴(Build Tool)이라고 한다. *빌드 툴이 제공하는 기능 - 전처리(Preprocessing), 컴파일(Compile), 패키징(Packaging), 테스팅(Testing), 배포(Distribution) *빌드 툴의 예 - Ant, Maven, Gradle 컴파일(Compile) 컴파일이란 개발자가 작성한 소스코드를 기계어(Byte Code)로 변환하는 과정을 말한다. 런타임(Runtime) 런타임이란 컴파일 과정을 끝낸 프로그램이 실행 및 동작하는 과정을 말한다.