전체 글

이것 저것 공부해보기 좋아하는 초보 개발자로, 제가 공부하는 내용들을 제가 이해하기 쉽게 작성합니다. 질문이나 지적은 언제나 환영합니다.
· Kubernetes
Manual Scheduling 파드가 Pending 상태인데, 별다른 이유 없이 Node: 이라면 kube-system namespace의 파드 목록을 조회해서 스케쥴러가 존재하는지 확인해보기(No scheduler presents.) 파드 생성시 spec.nodeName 필드를 정의해 직접 스케쥴링해줄 수 있다. 이미 실행중인 파드는 다른 노드로 이동시킬 수 없다. (.yaml 파일을 replace —force할 것) Taints & Tolerations 노드에 특정 파드가 수용되지 않게 함(특정 taint 대한 toleration을 가진 파드는 해당 노드가 아닌 다른 taint가 없는 모든 노드에 수용될 수 있음) master node에는 자동으로 taint가 존재해서 별도의 파드가 스케쥴링되는 것..
· Kubernetes
명령형 관리와 선언형 관리 명령형 create, replace, … 오브젝트 생성 혹은 수정시 이미 존재하는지 확인하는 과정이 동반되어야 하며, 이미 있는데 생성하려했거나 없는데 수정하려했을 경우 에러 메세지가 발생한다. 선언형 apply 오브젝트가 이미 존재하면 수정하고 없으면 새로 생성한다. Cf. 특정 경로에 있는 복수의 파일을 오브젝트로 생성하는 경우 -f 옵션 인자로 경로를 줄 수 있다. kubectl apply apply -f를 통해 오브젝트 생성시 세 개의 파일이 존재하게 된다. 세 파일을 통해 라이브 객체에 적용되어야하는 변경사항을 확인하고 결정할 수 있다. Local file(apply한 파일) Live Object config(status 필드에 실시간 상태가 저장됨) Last appl..
· Kubernetes
Object 선언적으로 추구하는 상태를 기술해둔 것 추구하는 상태와 현재 상태가 맞지 않으면 이를 맞추려고 함 edit 명령어를 통해 추구하는 상태를 변경할 수 있음(수정 시 즉시 이를 반영하려 하기 시작) 쿠버네티스 기본 오브젝트 파드, 서비스(노드포트, 로드밸런서 형태) 네임스페이스 볼륨(영속성 - 데이터 저장에 사용됨) NFS(Network File System) Volume을 생성하여 파드에 이를 마운트하는 경우 YAML(생성 및 수정) Top level property: apiVersion, kind, metadata, spec 오브젝트 생성 테스트 등에 사용할 수 있는 옵션 오브젝트를 실제로 생성하지는 않지만, 오브젝트 설정(manifest) 파일을 생성하는 경우 등 --dry-run=clie..
· Backend/JPA
JPA는 Java 진영의 ORM 기술 표준으로, 애플리케이션과 JDBC API 사이에서 동작합니다. 💡 ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스를 매핑시켜줍니다. 객체와 관계형 데이터베이스의 테이블을 매핑해서 두 패러다임간의 불일치 문제를 개발자 대신 해결해줍니다. JPA와 Hibernate의 차이 JPA는 Java ORM 기술에 대한 API 표준 명세입니다. 즉, 인터페이스들을 모아둔 것이므로 JPA를 사용하기 위해서는 JPA를 구현한 ORM 프레임워크를 사용해야 합니다. 이에는 Hibernate, EclipseLink, DataNucleus 가 있는데, Hibernate가 가장 대중적으로 사용됩니다. Hibernate는 자바 진영에서 가장 많이 사용되는 OR..
이번 프로젝트에서 사용되는 DB가 이전에 사용되던 것들과 달리 Oracle 19c로 변경되면서 드라이버를 버전업그레이드하였습니다. 그 직후 톰캣에 war 파일을 배포하려했더니 아래와 같은 메세지와 함께 애플리케이션 배포가 중단되었습니다.... Caused by: java.lang.NoClassDefFoundError: oracle/i18n/util/LocaleMapper ...Stackoverflow 등에서 몇 개의 글을 참고한 결과 oracle ojdbc8.jar에서 발생하는 문제인 것으로 보이고, 함께 다운로드되는 xmlparserv2가 충돌이 나는 것이라는 의견들이 많아 이를 제외하고 받도록 변경하였습니다. gradle에서 오라클 DB와 관련된 의존성은 아래가 다입니다.implementation(e..
· Kubernetes
쿠버네티스 환경에 애플리케이션 배포하기(nginx) 여기서는 nginx 이미지를 이용하여 nginx라는 이름의 애플리케이션을 실행 kubectl run nginx —image=nginx 배포한 파드 조회(`-o wide` 옵션을 통해 IP까지 조회) kubectl get pod kubectl get pod -o wide 애플리케이션이 동작하는 IP로 접근해 데이터 조회 curl 172.16.103.129 외부에서 쿠버네티스 환경에 접근하기 기본적으로는 접근 불가. 이를 가능하게 하기 위해서는 Service를 이용해야 한다. Service 안전지대(like DMZ)같은 구역을 두고, 여기에 배포한 파드들이 존재하는 노드를 (node port를 통해) 연결해두면 서비스를 통해 들어와 노드(파드)로 연결 가능..
-- 현재 사용자가 접근 가능한 모든 메타데이터 조회(OWNER 상관없이 모든 데이터 조회) SELECT * FROM ALL_TAB_TABLES WHERE TABLE_NAME = '[table name]'; // 해당 테이블 존재 여부 조회 SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = '[table name][table name]'; // 해당 테이블의 모든 컬럼 조회 SELECT * FROM ALL_CONS_COLUMNS WHERE TABLE_NAME = '[table name]'; // 해당 테이블의 제약조건과 컬럼 조회 SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = '[table name]'; // 해당 테이블의 제..
주요 SQL 문법 1. 다중 조건문 (CASE문) CASE WHEN [조건1] THEN [조건1가 참일 경우 반환 값] WHEN [조건2] THEN [조건2가 참일 경우 반환 값] ELSE [조건들이 모두 거짓일 경우 반환 값] END2. 특정 문자열 포함 여부 확인 예시에서 검사하는 컬럼은 VARCHAR2 타입으로 간주한다. LIKE를 사용하는 경우 : 특정 컬럼의 값에 주어진 문자열이 속한다면 참을, 그렇지 않다면 거짓을 반환한다. -- WHERE절의 조건문으로 사용 SELECT * FROM ITEMS WHERE ITEM_NAME LIKE '%문자열%'; -- CASE문의 조건문으로 사용 SELECT CASE WHEN ITEM_NAME LIKE '%문자열%' THEN &#..
TIMESTAMP 타입의 컬럼을 생성할 때 Nullable과 Default Value 관련 유의할 사항입니다. TIMESTAMP 타입의 컬럼이 Nullable일 경우 TIMESTAMP 타입의 컬럼이 Nullable일 경우 NOT NULL과 대조되게 NULL을 명시해주어야 합니다. 그렇지 않으면 자동으로 NOT NULL로 생성됩니다. TIMESTAMP 타입의 컬럼의 Defult값이 없는 경우 첫 번째 TIMESTAMP 타입의 컬럼은 자동으로 DEFAULT current_timestamp() on update current_timestamp()의 형태로 생성되게 되고, 그 이후의 TIMESTAMP 타입의 컬럼은 자동으로 DEFAULT '0000-00-00 00:00:00'의 형태로 생성되게 됩니다.
fetch 함수의 결과를 반환하는 함수 생성 (reponse.json())에는 Promise가 반환되기 때문에 여기에도 await를 써줌으로써 리턴값이 발생할 때까지 기다렸다가 반환합니다. 이 때 해당 함수는 async function이어야 합니다. async function getTestData() { const url = 'testurl'; const response = await fetch(url, { method: 'GET', }); const data = await response.json(); return data; }
devYH
모르는 것이 많습니다