Gitlab 에서 Github 로 저장소 log 유지하며 옮기기
윈도우 기준입니다. gitcmd 터미널 실행을 해서 아래와 같이 실행 git clone --bare http://gitlab.kaffalab.com/project.git cd project git push --mirror https://github.nhnent.com/godo/project.git
윈도우 기준입니다. gitcmd 터미널 실행을 해서 아래와 같이 실행 git clone --bare http://gitlab.kaffalab.com/project.git cd project git push --mirror https://github.nhnent.com/godo/project.git
[Jenkins] 젠킨스 Dockerfile 설치 cd /home/ vi Dockerfile docker build -t demo_jenkins . docker image ls docker run -it -p 8080:8080 --name demo_jenkins docker.io/jenkins/jenkins docker run -d -p 8080:8080 --name demo_jenkins docker.io/jenkins/jenkins Dockerfile FROM centos:7 RUN echo -e '[AdoptOpenJDK]\n\ name=AdoptOpenJDK\n\ baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/$releasever/$b..
젠킨스란 무엇인가 젠킨스는 개발시에 지속적인 통합 서비스를 제공해주는 오픈소스 툴이며, 이를 CI(Continous Integration) 이라고 표현 한다. 젠킨스 사이트 접속을 하면, 젠킨스는 프로젝트를 빌드, 배포, 자동화를 해주며 다양한 플러그인들이 있다고 한다. 젠킨스는 Java로 개발되어 있고 WAR를 단독 혹은 톰캣 등의 서버로 실행을 할 수 있으며, Windows, Linux, macOS 등 크로스 플랫폼을 지원한다. 젠킨스를 실행하면 웹 화면을 생성하며 REST API 호출로 구동 된다. CI (Continous Integration) 란? Build, Test를 실시하는 프로세스로 이러한 통합 프로세스를 계속 실시해 주는 것을 CI 라고 한다. 즉, 통합을 지속적으로 수행하는 것. CD..
문제 설명 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.) 예를 들어 1234 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 가 있다면 가장 큰 정사각형은 1234 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 가 되며 넓이는 9가 되므로 9를 반환해 주면 됩니다. 제한사항 표(board)는 2차원 배열로 주어집니다. 표(board)의 행(row)의 크기 : 1,000 이하의 자연수 표(board)의 열(column)의 크기 : 1,000 이하의 자연수 표(boar..
문제 설명 직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다. 제한사항 v는 세 점의 좌표가 들어있는 2차원 배열입니다. v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다. 좌표값은 1 이상 10억 이하의 자연수입니다. 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요..
문제 설명 길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다. 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요. 제한사항 배열의 길이는 10만 이하입니다. 배열의 원소는 0 이상 10만 이하인 정수입니다. 입출력 예 arrresult [4, 1, 3, 2] true [4, 1, 3] false 입출력 예 설명 입출력 예 #1 입력이 [4, 1, 3, 2]가 주어진 경우, 배열의 길이가 4이므로 배열에는 1부터 4까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3, 2]에는 1부터 4까지의 숫자가 모두 들어 있으므로 true를 반환하면 됩니다. 입출력 예 #2 [4, 1..
소프트웨어 개발원칙 YAGNI "You ain't gonna need it" 에서 따온 약자로 정말 필요할때까지 만들지 말라는 의미를 가진다. 언제 사용될지도 모르는 것에대해서 작성하는 것은 현재 상황에 대해서 더욱 복잡하게 만들며 시간을 소요하게 하고 이후 변경 시 2차적으로 시간을 잡아먹게 된다. 따라서, 현재 사용되지 않을 것에 대해서 먼저 작성하는 것을 지양하라는 의미.
소프트웨어 개발원칙 KISS “Keep it small and simple.”, “Keep it short and simple.”, 또는 “Keep it simple, stupid.” 에서 따온 약어이다. 소스코드에 대해서 최대한 간단 명료하게 작성하라는 의미로 불필요하게 장황하고 복잡하게 작성하는 것을 지양하며 경계하라는 원칙. 단순할수록 이해하기 쉽고 버그가 발생하기 어렵다.
소프트웨어 개발 원칙 DRY - Don't Repeat Yourself 똑같은 일을 두번하지 말아라! 중복 되는 내용의 함수, 모듈 등에 대해서 리팩토링을 해라. 한 프로젝트내에서 개발 과정이든 개발 완료 후 유지보수 과정에서든 언제든지 같은 역할을 수행하는 중복된 내용의 소스코드가 작성 될 수 있다. 이렇게 중복된 코드들은 시간이 지남에 따라서 프로젝트가 덩치가 커지면서 오버헤드를 발생시키고 쓸데없는 시간과 노력이 소요되게 하며 버그가 발견되었을 경우 여러군데를 고쳐야 하는 등의 단점이 발생한다.
I - ISP - Interface Segregation Principle (인터페이스 분리 원칙) 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다. 클래스에서 사용하지 않는 메서드는 분리해야 한다. 차량 소유주 정보는 변경점이 없어 그대로 구현 class CarOwnerInfo: def __init__(self, car_number, owner_name): self.__car_number = car_number self.__owner_name = owner_name @property def car_number(self): return self.__car_number @car_number.setter def car_number(self, value): self.__car_numb..
O - OCP - Open/Closed Principle (개방/폐쇄 원칙) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. Truck 외에 차량 종류가 추가 될 경우 공통 속성을 가지는 Car Interface로 추상화를 합니다. class Car: id_number = None owner_info = None detail_info = None def __init__(self, id_number, owner_info: CarOwnerInfo, detail_info: CarDetailInfo): self.id_number = id_number self.owner_info = owner_info self.detail_info = detail_info class Suv(Car): pass..
S - SRP - Single Responsiblity Principle (단일 책임 원칙) 한 클래스는 하나의 책임만 가져야 한다. 다음과 이미지처럼 트럭 정보를 관리하는 클래스가 있다고 가정 class Truck: id_number = None car_number = None owner_name = None def __init__(self, id_number, car_number, owner_name): self.id_number = id_number self.car_number = car_number self.owner_name = owner_name 트럭의 차대번호는 생산에 따라 부여된 고유 번호로 변경되지 않지만, 소유주나 차량등록번호는 변경 될 가능성이 있는 정보이다. 따라서 TruckOwne..
객체지향 설계 5대 원리 SOLID 컴퓨터 프로그래밍에서 SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이다. 프로그래머가 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할 때 이 원칙들을 함께 적용할 수 있다. SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. 이 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발의 전반적 전략의 일부다. S - SRP - Single Responsiblity Principle (단일 책임 원칙) 한 클래스는 하..
캐시 (Cache) 캐시란 컴퓨팅에서 캐시는 일반적으로 일시적인 특징이 있는 데이터 하위 집합을 저장하는 고속 데이터 스토리지 계층입니다. 따라서 이후에 해당 데이터에 대한 요청이 있을 경우 데이터의 기본 스토리지 위치에 액세스할 때보다 더 빠르게 요청을 처리할 수 있습니다. 캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있습니다. 캐시의 작동방법 캐시의 데이터는 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용될 수도 있습니다. 캐시의 주요 목적은 더 느린 기본 스토리지 계층에 액세스해야 하는 필요를 줄임으로써 데이터 검색 성능을 향상하는 것입니다. 속도를 위해 용량을 절충하는 캐시..
DNS(Domain Name System) DNS(Domain Name System) 란? 도메인 네임 시스템 (Domain Name System, DNS) 은 호스트의 도메인네임 (www.example.com)을 네트워크주소(192.168.1.0)로 변환하거나, 그 반대의 역학을 수행하는 시스템이다. 인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능 DNS 작동원리 위의 그림과 같이 PC 브라우저에서 www.naver.com 을 입력한다. 그러면 PC는 미리 설정되어 있는 DNS (단말에 설정되어 있는 이 DNS를 Local DNS라 부름, 위에서는 203.248.252.2) 에게 "www.naver.com 이라는 hostname" 에 대한 IP 주소를 요청한다. ..
브라우저 동작 원리 브라우저의 주요 기능 브라우저의 주요 기능은 사용자가 선택한 자원을 서버에 요청하고 브라우저에 표시하는 것이다. 자원은 보통 HTML 문서지만 PDF나 이미지 또는 다른 형태일 수 있다. 자원의 주소는 URI(Uniform Resource Identifier)에 의해 정해진다. 브라우저의 기본 구조 브라우저의 주요 구성 요소는 다음과 같다. 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다. 브라우저 엔진 - 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어. 렌더링 엔진 - 요청한 콘텐츠를 표시. 예를 들어 HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시함. 통신 - HTTP 요청과 같은 ..
HTTP Response Status Code (HTTP 응답 상태 코드) Status Code 란? HTTP response is called the status line and includes a numeric status code (such as "404") and a textual reason phrase (such as "Not Found"). The way the user agent handles the response depends primarily on the code, and secondarily on the other response header fields. Custom status codes can be used, for if the user agent encounters a cod..
HTTP Request Method (HTTP 요청 방법) HTTP 는 GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH Reqeust Method 가 있으며, 상황별 알맞게 사용을 권장한다. GET The GET method requests a representation of the specified resource. Requests using GET should only retrieve data and should have no other effect. (This is also true of some other HTTP methods.)[1] The W3C has published guidance principles on this distin..
HTTP (HyperText Transfer Protocol) 란? HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다. W3 상에서 정보를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 쓰인다. 주로 TCP를 사용하고 HTTP/3 부터는 UDP를 사용하며, 80번 포트를 사용한다 예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다. 추가로, HTTP는 여러가지 버전이 있다. HTTP의 버전은 이후 알아보기로 한다. 클라이언트 요청 ..