CS 56

Proxy Pattern | 프록시 패턴

프록시 패턴이란? 프록시를 직역하면 "대리인"을 의미한다. 사장님은 비서를 통해서 만나러 갈 수 있다. 여기서 말하는 비서가 Proxy객체와 유사하다고 생각해볼 수 있다. 비서는 만나러 온 사람의 신원을 확인하여 출입을 제한하거나 방명록을 적도록하는 등의 업무를 수행할 수 있다. 즉, 대상 객체에 접근하기 전에 흐름을 가로채 대상 객체 접근에 필요한 부가적인 역할을 구현할 때 사용하는 디자인패턴이다. 프록시 패턴의 장점 - 사이즈가 큰 객체가 다 로딩되기 전에도 프록시를 통해 참조할 수 있다. - 객체 접근에 대한 전/후처리를 메인로직과 분리해서 작성할 수 있다. 프록시 종류 가상 프록시(Virtual Proxy) 해당 객체가 생성된 것처럼 동작하도록 만듦으로써, 사용 시점까지 객체 생성을 미룰 수 있다..

CS/디자인패턴 2023.03.21

[기타] Gitlab에서 Github로 프로젝트 이동(mirroring)

1. 원본 저장소(Github repository)를 복사 git clone --mirror [원본_repository경로] 2. git폴더로 들어가기 cd [원본_저장폴더_이름].git 3. Github에 새로운 repository를 생성해서 넣기 git remote set-url --push origin [github_원격_repository_경로] git push --mirror +) 용량 큰 파일을 삭제했는데, 커밋 내역이 남은 경우 에러코드는 아래와 같이 뜬다. github's recommended maximum file size of 50.00 mb 필요없는 파일이라, 해당 파일 관련 커밋 이력을 모두 삭제한 후 push한다. git filter-branch -f --index-filter "..

CS/기타 2022.10.31

[Docker] Jenkins에 Docker CE 설치하기

1. Plugin 설치 Dashboard > Jenkins 관리 > Plugin 관리 > 설치 가능 > docker 검색 > 체크한 후, 설치하기 2. Jenkins내에 Docker CE(Community Edition) 설치 Jenkins안에서도 Docker명령어를 사용하므로 설치해야 한다. 여기서 Docker Edition은 2가지가 있다. 1) Community Edition(CE) : 무료, 개인 프로젝트용 2) Enterprise Edition(EE) : 유료, 사무용 따라서, 지금은 CE를 설치해서 사용했다. 1. Jenkins 컨테이너 내로 들어가기 docker exec -it jenkins bash 2. docker CE 다운로드 curl https://get.docker.com/ > do..

CS/기타 2022.06.23

[Docker] Jenkins 설치

1. Docker 설치 후, 회원가입&로그인 https://www.docker.com/get-started/ 2. Docker 실행 & Jenkins 설치 jenkins의 port는 9090을 사용할 것이다. docker run -d -p 9090:8080 -p 50000:50000 -v /var/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -u root jenkins/jenkins:lts-jdk11 3. localhost:9090로 jenkins에 접속한다. "잠시만 기다려주세요..." 로딩 페이지가 뜨고, 기다리면 아래와 같은 화면이 뜬다. 로그 확인으로 비밀번호를 얻어 [Continue]를 ..

CS/기타 2022.06.22

REST API란?

1. API (Application Programming Inteface) - 정보 제공자와 정보 사용자 간의 약속(=프로토콜) - 사용자에게 필요한 "호출"과 제공자에게 필요한 "응답"으로 구성된다. - 호출과 응답에 대한 약속 - 사용자는 API를 통해 원하는 정보를 얻을 수 있다. 2. REST (Representational State Transfer) - 아키텍쳐 원칙 SET (프로토콜 아님) - URI (하나의 고유한 리소스를 대표)+ 전송방식(GET/POST/PUT/DELETE) => 원하는 작업을 지정하는 구조 - 리소스는 JSON, XML등으로 표현할 수 있다. 3. REST API - REST 아키텍처를 기반으로 한 API - HTTP 프로토콜을 이용하여 통신 : stateless (요..

CS/기타 2022.06.07

[MySQL] Error Code: 1175. Safe Update Mode

발생하는 이유는 데이터 수정 또는 삭제 시 Key값을 이용해서만 가능하도록 설정되어 있기 때문이다. 해결 방안은 2가지가 있다. [방법1] workbench 설정 변경하기 1. [Edit] > [Preferences...] 에서 SQL Editor의 [Safe Updates (rejects UPDATEs and DELETEs with no restrictions)]를 해제 2. Workbench 재실행 후, 코드 실행 [방법2] 코드로 일시적으로만 변경하기 아래 코드를 작성 후, 수정/삭제 코드 실행 set sql_safe_updates = 0;

[SQL] 조인

1. 조인이란? - 여러 테이블에 분산되어 있는 데이터를 "테이블 간의 관계를 지어" 활용할 수 있도록 함 2. 조인 활용 1. 조인 검색 - 자연 조인 : FROM절에 관련 테이블들을 명세 - 조인 조건(= 조인 프레디킷) : WHERE절에 조인하는 조건을 반드시 작성 /*과목코드 CO423에 수강한 학생의 성명, 학과, 성적을 검색하라*/ SELECT 성명, 학과, 성적 FROM 학생, 수강 WHERE 학생.학번 = 수강.학번 AND 과목코드 = 'CO423'; /*열 이름을 단순화하기 위해 FROM절에 별칭 사용*/ SELECT 성명, 학과, 성적 FROM 학생 S, 수강 E WHERE S.학번 = E.학번 AND 과목코드 = 'CO423'; 2. 셀프 조인 : 자기 자신과 조인 /*같은 학과 학생..

[SQL] SubQuery 중첩질의문

1. SubQuery란? - Query문 안에 또 다른 Query문이 있는 것 - 중첩될 수 있는 Query문은 Select문만 가능하므로 SubSelect라 부르기도 함 - 소괄호 안에 표기 2. SubQuery 활용 1. 검색 1) 단일 값을 반환하는 경우 /* 학생 김철수와 같은 학과에 속하는 학생의 성명을 검색하라*/ SELECT 성명 FROM 학생 WHERE 학과 = (SELECT 학과 FROM 학생 WHERE 성명 = '김철수'); /*괄호에서 반환되는 결과는 '컴퓨터' 단일 값임*/ 2) 2개 이상의 값을 반환하는 경우(1) - 1개의 열로 이루어진 테이블을 반환 - 외부 질의문의 WHERE절에 (NOT) IN, ANY, ALL, EXISTS와 같은 연산자가 사용됨 연산자 설명 IN '=AN..

[SQL] 데이터 조작어(DML) 활용

1. SELECT - 데이터 검색하기 더보기 SQL과 이론적 관계형 데이터 모델 차이점 SQL은 똑같은 투플들을 자동으로 제거하지 않는다. 단, 사용자가 SELECT문에 "DISTINCT"를 명시할 때만 "투플의 중복을 제거"한다. 이론상의 관계형 모델은 "투플의 유일성"에 따라 똑같은 투플을 허용하지 않는다. 따라서, SELECT의 결과가 SQL과 이론상 결과가 다를 수 있다. 기본 구조 SELECT [ALL|DISTINCT] 열_리스트 FROM 테이블_리스트 [WHERE 조건] [GROUP BY 열_리스트 [HAVING 조건]] [ORDER BY 열_리스트 [ASC|DESC]]; # [ ]는 선택 가능 요소로 작성 안해도 되는 구간을 표시한 것, # 실제로 작성할 때는 괄호는 지우기 1. 테이블의 투..