전체 글 144

오픈소스SW_Chapter05_서버

서버 저장소 서버 저장소는 다른 말로 원격(remote) 저장소라고 하며, 서버를 이용하면 코드를 안전하게 보관할 수 있다. 깃에서 서버 저장소는 로컬 저장소의 코드를 복제한 복사본이 저장되며, 서버에 있는 소스 코드는 다른 사람들과 공유하고 협업하여 개발을 진행할 수도 있다. 서버의 필요성 협업 저장소 깃은 여러 개발자와 협업하려고 탄생한 도구이다. 요즘 컴퓨터는 항상 인터넷에 접속되어 있으나 현재까지도 인터넷에 연결하여 원격으로 작업할 수 없는 개발 환경도 존재한다. 깃은 이 두 가지 환경을 고려하여 분산형 모델을 선택했다. 연속된 작업 원격 저장소가 있다면 시간과 장소에 상관없이 연속적으로 개발을 할 수 있다. 깃은 분산된 저장소 여러 개를 하나로 통합하고, 최신 코드를 배포한다. 서버 저장소는 여..

오픈소스SW 2022.10.10

오픈소스SW_Chapter04_커밋

개발자는 만일의 경우에 대비하여 중간에 코드 변경 과정을 기록하고 잘못된 동작을 발견했을 떄 특정 시점으로 되돌아 갈 수 있어야 개발에 불편함을 겪지 않는다. 깃은 커밋(commit)을 통해 개발 중인 코드의 이력을 만들 수 있다. 개발 과정 중에서 개발자가 커밋을 하면 사용자가 변경사항을 일일이 기억할 필요가 없고 원하는 프로젝트의 이전 시점으로 쉽게 되돌아 갈 수 있다. 파일 관리 방법 깃의 커밋은 새로 변경된 부분만 추출하여 저장한다. 파일 이름을 변경하지 않고도 하나의 파일 이름으로 관리가 가능하다. 즉, 커밋은 시간에 따라 변화되는 내용만 관리하고, 코드가 변화된 시간 순서에 따라서 영구적으로 저장한다. 파일 등록 취소 스테이지 등록하는 것과 반대 과정으로 unstage 상태로 변경하려면 삭제(..

오픈소스SW 2022.10.10

오픈소스SW_Chapter03_깃 시작

깃 저장소 깃 저장소를 레포지토리(repository)라고도 부르며 일반적으로 사용하는 폴더와 유사하다. 깃 저장소에는 이력 정보가 관리되며 깃은 작성된 소스 코드 파일의 모든 변경 사항을 관리한다. 깃 저장소와 폴더 일반 폴더와 깃 저장소는 유사하지만 내부적으로 구조가 다르다. 깃 저장소에는 별도의 숨겨진 영역(숨겨진 폴더)이 있는데, 여기에 VCS에 필요한 파일 변경 이력을 기록한다. 즉, 일반적인 폴더와 깃 저장소 차이점은 숨겨진 영역이 있는지의 여부이다. 초기화 깃 저장소를 생성하려면 먼저 초기화 작업이 필요한데, 여기서 초기화란 VCS 관리를 위한 숨겨진 영역을 생성하는 작업이다. 초기화를 하기위해서 터미널에 다음의 초기화 명령어를 입력해야한다. git init 경로명 숨겨진 폴더 깃 초기화를 ..

오픈소스SW 2022.10.10

오픈소스SW_Chapter02_깃설정

깃 프로그램 이름은 git이다. 터미널에서 git과 명령어를 입력하면 깃이 동작한다. 환경 설정 깃은 여러 사람과 함께 개발할 수 있는 협업 도구로 프로젝트 하나를 다수의 개발자와 함께 작업할 때를 대비하여 각 개발자를 구분해야 한다. 깃은 각 개발자의 작업을 구분하기 위해 사용자를 등록하는 과정이 존재하는데 사용자 등록은 크게 두 가지로 구분한다. 로컬 사용자 선택한 로컨 저장소에만 적용되는 로컬 사용자 설정값이다. git config user.name "사용자이름" git config user.email " 이메일주소" 글로벌 사용자 혼자서 사용하는 컴퓨터라면 글로벌(공통된) 사용자 등록을 하는 것이 편리하다. 글로벌 사용자 등록을 할 떄는 다음과 같이 --global 옵션을 함께 사용한다. conf..

오픈소스SW 2022.10.10

오픈소스SW_Chapter01_깃과 버전 관리

프로그래밍 개발 과정은 수 만은 코드를 변경하고 테스트하는 단계이다. 프로그램이 지속적으로 변경되는 과정 속에서 코드는 잠시 불안정한 수정 상태와 안정된 상태를 반복한다. 개발자는 안정된 상태의 코드와 불안정한 상태의 코드를 인지하고, 항상 안정된 상태를 유지하도록 노력해야 한다. 그 관리를 도와주는 것이 바로 깃(Git)과 같은 프로그램이다. 버전(Version) 개발 도중에는 다양한 기능이 추가되고, 많은 코드가 변경된다. 앞서 설명했다시피 개발자는 작업 과정에서 코드들을 안정되게 유지해야 한다는 것을 잘 알고 있다. 개발 또는 테스트하는 과정에서 불안정한 코드가 있다면 계속 이어서 작업하기 불안하며, 경우에 따라 더 이상 작업하기 어려울 수도 있다. 이때는 이전 상태로 돌아가 다시 시작할 수 있는 ..

오픈소스SW 2022.10.10

Java_Chapter08_객체 지향 4대 요소

객체지향개념의 중요한 특징 4가지가 존재하는데, 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism), 추상화(Abstraction)이다. 상속(inheritance) 상속은 객체지향 프로그래밍의 4개 개념(Abstraction, Polymorphism, Inheritance, Encapsulation) 중 Inheritance에 해당하는 중요한 개념이다. 프로그램에서의 상속은 기존 클래스의 재산을 다른 클래스에서 재사용하기 위한 것이다. 여기서 말하는 재산이란 기존 클래스에 있던 멤버(변수와 메서드)를 이야기한다. 따라서 생성자와 초기화 블록은 상속의 대상이 아니다. 상속의 관계에 있어서 물려주는 클래스를 부모클래스라 하며, 상속받는 클래스를 자식 클래스라 ..

java 2022.10.09

클라우드컴퓨팅_Chapter04_EC2

인스턴스 유형 ex) m4.medium 표현법 : 패밀리(m), 4(세대) Medium : 전체적인 사양 규모 인스턴스 패밀리 범용 t2,m3,m4,m5으로 시작하는 인스턴스 유형 vCPU, 메모리, 네트워크, 저장 공간 등이 평균적인 사양으로 지원 컴퓨팅 최적화 c로 시작하는 인스턴스 유형 다른 인스턴스 패밀리에 비해 메모리 대비 vCPU 비율이 높음 GPU 인스턴스 g, p로 시작하는 인스턴스 유형 고성능의 NVIDIA GPU가 장착, CUDA 등을 실행할 때 사용 메모리 최적화 r3, x1 으로 시작되는 인스턴스 유형 다른 인스턴스 패밀리에 비해 메모리 용량이 훨씬 큼 스토리지 최적화 h, i, d로 시작하는 인스턴스 유형 다른 인스턴스 패밀리보다 스토리지 용량이 훤씬 크거나 초고속 I/O를 지원 ..

AWS 2022.10.07

Java_Chapter?_builder pattern

builder pattern 빌더 패턴은 생성패턴 중 하나로 객체 지향 프로그래밍에서의 다양한 생성 문제에 대한 유연한 해결책을 제공하기 위해 설계된 디자인 패턴이다. 복잡한 객체를 생성하는 방법을 정의하는 클래스와 해당 클래스를 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴이다. 장점 유연성을 확보할 수 있다. 생성 시 가독성을 높일 수 있다. 변경 가능성을 최소화할 수 있다. 점층적 생성자 패턴 public class User { //required parameters private String email; private String passwd; //optional parameters private String name; ..

java 2022.10.06

SpringBoot_Chapter01_개요

Spring과 Spring Boot Spring은 다양한 소규모 프로젝트에 적용되는 Java 기반의 오픈소스 앱 프레임워크이다. 그리고 Spring boot는 Spring을 더 쉽게 이용하기 위한 도구이다. 그럼 그 두 개의 차이점을 알아보자. Spring Spring Boot 정의 Java를 기반으로 하는 오픈 소스 웹 애플리케이션 프레임워크이다. Spring 프레임우커를 기반으로 하는 확장 또는 모듈이다. 주 역할 사용자 지정되어 느슨하게 연결된(=결합도가 낮은) 웹 앱을 만들기 위해 미리 빌드된 코드 라이브러리와 도구들을 이용해 유연하면서도 완전히 구성할 수 있는 환경을 제공한다. 주석이나 XML 구성 또는 여러 가지 추가 코드를 작성할 필요 없이 바로 실행할 수 있는 실행형 Spring 애플리케이..

Spring 2022.10.05

오픈소스SW_Chapter06_브랜치

브랜치 브랜치는 큰 나무 줄기에서 작은 줄기가 뻗어 나오는 것처럼 저장 공간 하나에서 가상의 또 다른 공간을 만드는 것이다. 커밋은 파일의 수정 이력을 관리하는 데 사용한다면, 브랜치는 프로젝트를 독립적으로 관리하는데 사용한다. 잦은 버그 수정과 새로운 기능을 구현할 떄마다 작업 폴더를 복사하는 것은 프로젝트를 유지 관리하는 측면에서 좋지 않기에 개발자는 항상 안정된 코드 상태를 유지하고, 개발 중인 작업과 안정된 코드 상태를 구분하여 관리해야 한다. 깃 브랜치 특징 깃 브랜치는 기존 폴더를 복제하는 것과 다르게 가상 폴더를 사용하여 개발 작업을 구분한다. 가상 폴더 깃의 브랜치는 작업 폴더를 실제로 복사하지 않고, 가상 폴더로 생성한다. --> 외부적으로는 물리적인 파일 하나만 있는 것으로 보임 생성된..

오픈소스SW 2022.10.04