회사에서 1차 과제를 하던 중 쿼리를 이용하여 페이징을 하고 있는데 중복된 데이터가 등장하며 페이징이 제대로 동작하지 않는 문제가 발생하였다.정렬 기준에 unique한 컬럼을 추가하지 않아서 발생하는 문제였다. DB는 더 이상 사용할 정렬 조건이 없는 경우 알아서 판단
SQL Mapper와 ORM은 개발자가 JDBC Programming(인간 매퍼)을 하지 않도록 기능을 제공한다.Object와 SQL의 필드를 매핑하여 데이터를 객체화 하는 기술객체와 테이블 간의 관계 매핑 아님SQL 문을 직접 작성하고 쿼리 수행 결과를 어떠한 객체에
mybatis like 검색 - postgresql, mysql 위에서 볼 수 있듯이 을 이용해 검색 키워드와 필요한 문자들을 합하여 사용할 수 있다. 위의 예시는 postgresql과 mysql에 한정된 방식인거 같으니 다른 vendor를 사용한다면 아래 블로그 글을 참고하도록 하자. 참고 [MyBatis] LIKE 검색 구문 (Oracle, Post...
sql에서 키워드가 포함되어 있는지 여부를 판단할 때 사용하는 문법like : 대소문자 구분ilike : 대소문자 구분하지 않음postgresql, mysql의 default escape 문자는 (backslash)이다.
Date : 년월일Timestamp : 년월일 + 시간Time : 시간Interval : 기간, 음수와 양수 모두 나올 수 있다.to_date(문자열, 문자열의 포맷팅)to_timestamp(문자열, 문자열의 포맷팅)to_char(Date, 문자열 출력 포맷팅)::da
모든 내용은 postgresql 기준입니다join on 문법을 사용하는 방법이 ansi join이라고 한다.현재 join 시 표준처럼 사용된다.view와 비슷하다.임시 테이블을 만든다.VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은 경우
객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsbility), 협력(collaboration)
객체지향 패러다임으로의 전환은 객체에 초점을 맞출 때에만 얻을 수 있다.어떤 객체가 필요한지 고민할 것객체는 협력하는 공동체의 일원으로 볼 것 → 설계를 유연하고 확장 가능하게 만든다.도메인문제를 해결하기 위해 사용자가 프로그램을 사용하는 분야클래스의 내부와 외부를 구
소프트웨어의 모듈의 3가지 목적제대로 실행되어야 한다.변경이 용이해야 한다.이해하기 쉬어야 한다.이해 가능한 코드란 동작이 예상에서 크게 벗어나지 않는 코드관램객과 판매원이 극장의 통제를 받는다 → 예상에서 벗어남관람객(Audience)과 판매원(TicketSeller
1장 1장 정리 내용 2장 2장 정리 3장 3장 정리 4장 4장 정리 5장 5장 정리 6장 [6장 정리](https://github.
데이터베이스에 상태를 변화시키는 작업의 논리적인 단위하나로 처리해야하는 명령문들의 그룹분할 할 수 없는 업무처리의 단위트랜잭션은 ACID 특징을 보장해야 한다.단 상황에 성능(동시성)을 위해 희생시킬 수 있다(by isolation level)트랜잭션에서 일관성과 동시
보안 정보를 관리하기 위해서 사용하지만 etcd에 그대로 저장되기 때문에 중요한 정보인 경우 외부 솔루션을 사용해야한다.쿠버네티스 안내서
쿠버네티스는 ConfigMap을 이용하여 설정을 관리한다.파일 내용(config-file.yml)이 my-config로 저장된다.volume을 이용하여 ConfigMap을 적용한다./etc/config라는 컨테이너 내부 디렉토리에 ConfigMap을 마운트한다.kube
도메인을 이용하여 서비스에 접근할 수 있는 방법port는 1개이며 path, domain을 이용하여 서비스를 분기시킨다.(Ingress만 관리하면 된다)도메인 테스트는 귀찮은게 많으니 IP주소를 도메인에 넣어 바로 사용할 수 있는 slipp.io를 이용한다.ingres
Pod의 경우 쉽게 사라지고 생성됨 → 직접 통신을 권장하지 않는다.별도의 고정된 IP를 가진 서비스를 만들어 Pod에 접근해야 한다.클러스터 내부의 Pod이 다른 Pod에 접근하기 위해 사용(내부에서 사용하는 것이 목적)Service(ClusterIP)는selecto
Deployment는 쿠버네티스에서 가장 널리 사용되는 오브젝트ReplicaSet을 이용하여 Pod을 업데이트하고 이력을 관리하여 롤백하거나 특정 버전(revision)으로 돌아갈 수 있다.새로운 버전의 Pod을 생성하고 기존 Pod을 제거한다.Deployment Co
사이트 간 스크립팅정적 웹페이지에서는 문제가 발생하지 않지만, 사용자의 입력을 받아 동적으로 HTML을 조작하는 웹 어플리케이션이 주요 공격 대상권한이 없는 사용자(관리자가 아닌 악의적인 사용자)가 웹 페이지에 악성 스크립트를 삽입하여 공격하는 방법의도하지 않은 행동을
Pod은 자동으로 복구되지 않습니다. 하지만 Replicaset은 Pod을 정해진 수만큼 복제하고 관리할 수 있습니다.(Pod이 죽어도 자동으로 복제를 해준다.)spec.replicas: 원하는 Pod의 개수 설정spec.selector: label 체크 조건(어떤 l
Rest Docs와 Swagger를 간단히 비교하고 간단히 저의 생각을 정리해봅니다.프로덕션 코드에 영향이 없다.통합 테스트 코드를 작성해서 문서가 생성되기 때문에 프로덕션 코드에 어떠한 영향을 주지 않는다.테스트 코드가 성공해야 문서 작성이 가능하다.문서를 위해서 테
k8s에서 관리하는 가장 작은 배포 단위Pod은 한 개 또는 여러개의 컨테이너를 포함한다.version: 오브젝트 버전kind: 종류(Pod, Replicaset)metadata: 메타데이터(name, label, annotation)spec: 상세 명세, 리소스 종류