목록전체 글 (323)
삶 가운데 남긴 기록 AACII.TISTORY.COM
1.운영 Apache Hadoop 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크입니다. 구글 분산 파일 시스템 논문이 공개된 후 그 구조에 대응하는 시스템으로 개발되었습니다. 구성 모듈: Hadoop Common, 하둡 분산 파일 시스템, 하둡 YARN, 하둡 맵리듀스 Apache Ambari 웹 UI를 통해 Hadoop 클러스트 구성, 모니터링, 관리합니다. REST API를 통해 다른 애플리케이션과 통합합니다. Apache ZooKeeper 공개 분산형 구성 서비스, 동기 서비스, 분산 시스템을 위한 네이밍 레지스트리를 제공합니다. 빅테이터 플랫폼에 동물 로고가 많기 때문에 동물원 사육사의 이름이 붙었습니다. 분산처리 ..
JAVA application Export runnable jar 자바 어플리케이션을 실행가능한 jar 파일로 만들 때 manifest 파일(MANIFEST.MF)에 메인 클래스를 지정해줘야 합니다. https://iloveaired.tistory.com/entry/Jar-manifest-%ED%8C%8C%EC%9D%BC-%EB%93%B1%EB%A1%9D%ED%95%98%EA%B8%B0 Jar manifest 파일 등록하기 예) Manifest-Version: 1.0 Main-Class: XXXXX iloveaired.tistory.com https://m.blog.naver.com/eungsik80/220054805497 jar 파일 생성 시 MANIFEST.MF 작성 jar 파일 생성 시 MANIFE..
putty로 리눅스에 접속했을 때 한글이 깨져서 나올 때가 있습니다. 그럴 때 아래와 같이 설정을 바꿔보십시오. 창 > 변환 탭 수신한 데이터를 이 문자셋으로 가정 항목이 있습니다. 이 항목을 수정해보면 됩니다. 대개 CP949(윈도우)으로 되어있는 것이 기본 값일 텐데, 리눅스 서버의 한글 인코딩과 맞춰주면 됩니다.(예:UTF-8) 덤으로 폰트는 창> 모양에서 변경할 수 있습니다.
이미 푸시 해버린 폴더나 파일들을 git에서 추적 중지하려면 git ignore 으로는 되지 않습니다. 이미 푸시 된 폴더나 파일의 추적을 중지 하려면 아래와 같이 입력합니다. $ git update-index --skip-worktree 파일이나폴더이름 예를 들어 아래와 같이 추적 중지를 할 수 있습니다. $ git update-index --skip-worktree .settings/* $ git update-index --skip-worktree .metadata/* $ git update-index --skip-worktree .classpath $ git update-index --skip-worktree .project
1. 들여쓰기 1.1. space와 tab을 섞어 혼용해서 쓰지 않는다. 들여쓰기는 space 4개를 사용. function getText(obj){ return obj.value; } 2. 문장의 종료 2.1. 한 줄에 한 문장만 허용한다. 문장 종료 시 반드시 세미콜론을 사용한다. let systemCall; 3. 명명 규칙 3.1. 변수나 함수 이름은 낙타등 표기법을 사용한다. let privateVariableName; 3.2. 상수는 모두 대문자로 하고 단어를 합성할 때는 언더스코어( _ )를 이용한 스네이크 표기법을 사용한다. SYMBOLIC_CONSTANTS; 3.3 Boolean 변수는 is로 시작한다. let isAvailable = false; 3.4. 범용적인 약어는 대문자 그대로 사..
1. 인코딩(Encoding) 1.1. 파일 및 문자 인코딩은 UTF-8 (gerneral_ci)으로 통일한다. 2. 이름(Naming) 2.1. 변수명, 클래스명, 인터페이스명, 메서드명에는 영어와 숫자만 사용한다. public interface AutoClosable{ 2.2. 변수명, 클래스명, 인터페이스명, 메서드명 단어 합성시에는 낙타 등 표기법으로 한다. public interface RowMapper{ 2.3. 클래스명, 인터페이스명, 생성자명은 대문자로 시작한다. public class WatcherClass{ 2.4. 변수명과 메서드명은 소문자로 시작해야한다. public String setHtmlName(String mode){ 2.5. 상수명은 모두 대문자로 하고 단어를 합성할 때는 ..
대항해시대 오리진에는 여급(남급)과 친밀도를 최대치로 올리면 퀘스트를 줍니다. 여기서는 퀘스트를 세번 완료하면 B급 장비를 주는데 그중 유용한 전투 장비를 주는 퀘스트를 정리해보겠습니다. 흐로닝언 여관(포격) 30레벨 제한 1. 놓칠수 없어: 아티나 > 흐로닝언 2. 비밀스런 선물: 도버 해적 처치 > 플리머스 > 카사블랑카 장미 30개 3. 간절했던 마음: 세우타 > 흐로닝언 > 상트페테르부르크 > 흐로닝언 획득 B급 장비: 부카니에의 질레(남자) 결투 방어력 19 추가 백병 방어력 18 포격술 27 지중해 6 세비야 여관(포격) 25레벨 제한 1. 남동생의 행방: 해적처치 > 시라쿠자 > 세비야 2. 남동생을 찾아서 : 알이스칸다리야 > 해전 > 세비야 3. 남동생을 잡아라 : 나폴리 > 세비야 획득..
https://about.gitlab.com/install/#centos-7?version=ce Download and install GitLab Learn about the various GitLab installation packages and downloads for Ubuntu, Debian, Docker, Google Cloud, and many more. about.gitlab.com GitLab은 EE 버전과 CE 버전이 있는데 CE(Community Edition) 버전이 무료 버전입니다만, 공식 사이트에서는 기본적으로 EE 버전으로 설치 가이드가 작성되어 있어서 따로 CE버전 설치 방법을 포스팅하겠습니다. 1. Git 설치 우선 git이 설치되어있는지 확인합니다. git --version..
root 계정 접속 su - sudoers 파일 쓰기 권한 설정 chmod +w /etc/sudoers sudoers 파일에 사용자 추가 vi /etc/sudoers VIM 으로 파일 편집에 들어가서 아래 부분을 찾아 그 아래에다가 추가할 사용자를 추가합니다. rootALL=(ALL)ALL 예) 여기서 유저 계정은 testuser라고 가정합니다. rootALL=(ALL)ALL testuserALL=(ALL)ALL VIM 명령 모드에서 wq! 를 입력해 저장하고 빠져나갑니다. sudoers 파일 쓰기 권한 회수 chmod -w /etc/sudoers sudo 테스트 su - testuser sudo whoami 해당 testuser 계정에서 sudo whoami 를 입력 했을 때 root 가 나오면 정상적..
java.util.concurrent.TimeUnit 패키지 TimeUnit은 멀티 Thread가 아닌 메서드에서 시간을 지연 시킬 때 사용합니다. 예제 import java.util.concurrent.TimeUnit; public class SimpleTest { public static void main(String[] args) { try { for (int i = 0; i < 3; i++) { TimeUnit.SECONDS.sleep(2); System.out.println("Sleep "+i+" sec"); } }catch(Exception e) { System.out.println(e); } } } 자세한 api 문서는 아래 참고 https://docs.oracle.com/javase/7/d..
서비스(비즈니스 로직) 서비스 레이어는 controller와 persistence 사이에서 비즈니스 로직을 수행하는 역할입니다. service 패키지를 만들어 아래 예제를 작성합니다. package ds.co.kr.todo.service; import org.springframework.stereotype.Service; @Service public class TodoService { public String testService() { return "Test Service"; } } @Service 어노테이션은 비즈니스 로직을 수행하는 컴포넌트이며 서비스 레이어임을 알려주는 어노테이션입니다. 스테레오 타입 어노테이션으로 내부에 @Component를 포함하고 있습니다. @RestController 에도 ..
REST 제약 조건 Client - Server 구조를 따릅니다. stateless 클라이언트가 서버에 요청을 보낼 때 이전 요청의 영향을 받지 않습니다. 그래서 요청을 보낼 때 로그인(인증) 정보를 항상 함께 보내야 합니다. http는 기본적으로 staeless 구조입니다. Cacheable 캐시가 가능한지 명시할 수 있어야 합니다. http는 헤더에 cache-control 에서 캐시 여부를 명시할 수 있습니다. Uniform Interface 리소스를 URI를 통한 인터페이스로 관리합니다. Layered System 인증서버, 캐싱 서버, 로드 밸런서 등 여러 레이어로 된 서버들을 거치지만 클라이언트는 서버 사이의 레이어의 존재 유무를 알지 못합니다. Code on demand 클라이언트는 서버에 ..
아키텍처 Request → Controller(프레젠테이션 레이어, DTO) → Service(비즈니스 레이어, Model) → Persistence(퍼시스턴스 레이어, Entity) → DB(데이터베이스 레이어) → Persistence(entity) → Service(model) → Controller (DTO)→ Response Model, Entity 비지니스 데이터를 담는 역할을 Model이라 부르고 데이터베이스의 테이블의 스키마를 표현하는 역할을 Entity라고 합니다. 아키텍처의 각 레이어 별로 부르는 이름이 다를 뿐, 이름은 신경 쓰실 필요는 없습니다. Lombok 어노테이션 @Builder 디자인 패턴 중에서 빌더 패턴으로 구현하여 객체를 생성해줍니다. 생성자로 생성하는 것과 차이가 있다..
Gradle 빌드 도구 빌드 도구는 컴파일, 라이브러리 다운로드, 패키징, 테스팅 등을 자동화 해주는 도구를 말합니다. 프로젝트가 커지면 라이브러리가 많아지므로 전체를 빌드하기에는 비효율 적이므로 빌드를 나눠서 해야합니다. gradle은 이런 컴파일, 빌드, 유닛 테스트 등을 코드(그루비 언어)로 관리해줍니다. build.gradle plugins { id 'org.springframework.boot' version '2.6.12-SNAPSHOT' id 'io.spring.dependency-management' version '1.0.13.RELEASE' id 'java' } group = 'ds.co.kr' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1..
스프링 부트(Spring boot) 기존 스프링 프레임워크는 세팅이 매우 복잡하기 때문에 세팅을 자동으로 해주는 스프링 부트가 등장했습니다. 스프링 부트 덕분에 Stand-alone 어플리케이션을 쉽게 구동가능해졌습니다. 기존에는 자바 웹 어플리케이션을 WAR 파일로 압축해서 WAS에 배포했었고 다수의 WAR 파일을 동시 구동할 수 있어서 stand-alone이 아닙니다. 스프링 부트는 내장된 임베디드 WAS(tomcat, jetty 등)로 구동하게 됩니다. IDE 는 전자정부프레임워크 4.0 이상이나 STS 에서 스프링 부트를 지원합니다. DispatcherServlet 기존 웹 어플리케이션 개발은 HttpServlet을 상속하는 클래스를 만들고 doGet()이나 doPost()메서드를 구현하고 Htt..