엔지니어링/개발배움터
[운영체제 공룡책] Docker 이용하여 Mac OS 에 실습 환경설정
[운영체제 공룡책] Docker 이용하여 Mac OS 에 실습 환경설정
2022.06.06인프런 '운영체제 공룡책 강의'의 실습 환경을 구축하기 위해 Docker를 사용합니다. Container 내부에 실습 코드와 자료 등을 관리하여 로컬을 깨끗하게 유지합니다 :-) 1. 도커를 이용하여 Ubuntu 이미지 설치 // 도커는 설치되었다고 가정함 // ubuntu 이미지 다운로드 및 컨테이너 실행 $ docker pull ubuntu:20.04 $ docker run -it --name myUbuntu ubuntu:20.04 // 도커 컨테이너 내로 들어옴 $ apt-get update $ apt-get upgrade -y // 교수님 업글 안하긴 하심 $ apt-get install build-essential gdb 2. 개발 편의를 위해 로컬 VS Code에 Container 연결 VS ..
Java로 알아보는 IoC, DIP, DI, IoC Container (하)
Java로 알아보는 IoC, DIP, DI, IoC Container (하)
2021.05.14저번 포스팅에 이어 DI 패턴과 IoC Container에 대해 알아보겠다. Step 3. DI (Dependency Injection) DI(Dependency Injection, 의존관계 주입)는 종속된 객체의 생성을 반전시키는 IoC 원칙을 구현한 디자인 패턴이다. 이전에 DIP 원칙에 따라 추상화하여 클래스간의 결합도를 낮추었다. 하지만 이전 포스팅 예제에서 여전히 CustomerBusinessLogic 클래스가 ICustomerDataAccess 객체를 반환하기 위해 DataAccessFactory 클래스를 참조하고 있다. 이제 DI 패턴을 구현하여 종속된 클래스의 객체 생성을 완전히 클래스 밖으로 내보낼 수 있다. DI 패턴은 IoC를 구현하는 디자인 패턴 중 하나이다. DI를 통해 종속된 객..
Java로 알아보는 IoC, DIP, DI, IoC Container (상)
Java로 알아보는 IoC, DIP, DI, IoC Container (상)
2021.05.13객체지향설계에서 클래스는 반드시 느슨하게 결합되어야 한다. 느슨한 결합은 한 클래스의 변경이 다른 클래스들에게 영향을 미치지 않는 것을 의미한다. 그래서 어플리케이션을 지속가능하고 확장성있게 만든다. 클래스 간의 느슨한 결합을 위해 다양한 원칙, 디자인패턴, 프레임워크가 존재한다. 그 중에서 디자인 원칙인 IoC, DIP와 디자인 패턴인 DI, 프레임워크인 IoC Container를 통해서 어떻게 클래스 간의 결합을 느슨하게 하는 지 알아보겠다. IoC 원칙만 도입한다고 해서 클래스간의 결합을 느슨하게 할 수 있는 것은 아니기 때문에 DIP 원칙, DI 패턴(IoC 원칙을 구현하는 디자인 패턴 중 하나)을 함께 사용해야한다. 그리고 이 모든 과정을 마법처럼 처리해주는 IoC Container에 대해서도 ..
RESTful API를 위한 6가지 원칙과 네이밍
RESTful API를 위한 6가지 원칙과 네이밍
2021.05.10REST와 RESTful REST는 REpresentational State Transfer 의 약어로, 클라이언트과 서버가 데이터를 주고 받는 방식에 대한 아키텍처 스타일이다. REST에는 여섯 가지의 기본 원칙이 있고, 이 가이드를 준수한 인터페이스는 RESTful하다고 표현한다. Client–server 구조 – 클라이언트와 서버는 서로 독립적이어야 하며, 클라이언트는 오직 URIs 리소스만 알아야한다. 클라이언트와 서버의 인터페이스가 변경되지 않는 한, 이 둘은 독립적으로 개발되거나 대체될 수 있게 유지해야한다. (관심사의 명확한 분리) Stateless(무상태성) – 클라이언트의 모든 요청에는 해당 요청을 이해할 수 있는 모든 정보가 포함되어야한다. 서버는 HTTP 요청에 대한 어떤 것도 저장하..
[HTTP] HTTP 메서드와 활용
[HTTP] HTTP 메서드와 활용
2021.05.05HTTP Method에 대해 알아보고, 이를 API 설계에 활용해보는 과정을 정리하였다. HTTP API 설계 강의 모든 개발자를 위한 HTTP 웹 기본 지식 와 개인적으로 공부한 내용을 정리하였습니다. Resource(리소스)라고 표현하고 있지만 최근에는 Representation이라는 표현으로 변경됨. 가장 중요한 것은 리소스 식별 (API URI 고민) URI(Uniform Resource Identifier) 리소스의 의미는 뭘까? 회원을 등록하고 수정하고 조회하는게 리소스가 아니다! 예) 미네랄을 캐라 -> 미네랄이 리소스 회원이라는 개념 자체가 바로 리소스다. 리소스를 어떻게 식별하는게 좋을까? 회원을 등록하고 수정하고 조회하는 것을 모두 배제 회원이라는 리소스만 식별하면 된다. -> 회원 리..
[HTTP] HTTP 기본
[HTTP] HTTP 기본
2021.05.02HTTP 메시지, 클라이언트 서버 구조, Stateful/Stateless, 비연결성에 대해 알아보자. 강의 모든 개발자를 위한 HTTP 웹 기본 지식 와 개인적으로 공부한 내용을 정리하였습니다. HTTP(HyperText Transfer Protocol) HTTP 메시지에 모든 것을 전송 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 지금은 HTTP 시대! HTTP 역사 HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X HTTP/1.0 1996년: 메서드, 헤더 추가 HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 RFC2068 (199..
[HTTP] URI와 웹 브라우저 요청 흐름
[HTTP] URI와 웹 브라우저 요청 흐름
2021.05.01URI와 웹 브라우저 요청 흐름을 알아보자. 강의 모든 개발자를 위한 HTTP 웹 기본 지식 를 듣고 공부한 내용을 정리하였습니다. URI URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다 1.1.3. URI, URL, and URN URI(Uniform Resource Identifier) Uniform: 리소스 식별하는 통일된 방식 Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음) Identifier: 다른 항목과 구분하는데 필요한 정보 URL과 URN URL - Locator : 리소스가 있는 위치를 지정 URN - Name : 리소스에 이름을 부여 위치는 변할 수 있지만, 이름은 변하지 않음 URN 이름만으로 실제 리소스를 찾을 수 있는 ..
[HTTP] 인터넷 네트워크
[HTTP] 인터넷 네트워크
2021.04.29인터넷 네트워크 강의 모든 개발자를 위한 HTTP 웹 기본 지식 와 개인적으로 공부한 내용을 정리하였습니다. 웹이나 HTTP도 인터넷 네트워크 안에서 일어난다. 인터넷 망을 통해 두 컴퓨터가 통신하기 위해서 여러 노드를 거치는 데, 이 요청을 잘 전달하기 위한 방법에 IP(인터넷 프로토콜)이다. IP 인터넷 프로토콜 역할 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보 패킷 : 수화물을 뜻하는 패키지와 덩어리라는 의미의 버킷의 합성어 출발지IP, 목적지IP, 기타 정보 전송할 데이터 전송 데이터가 너무 많으면 1500 바이트 정도의 단위로 끊어서 보냄 IP 프로토콜의 한계 비연결성 클라이언트는 서버가 존재하는지, 서비스 가능 상태인지..
Github Branch Protection Rules
Github Branch Protection Rules
2021.03.27Github Branch Protection Rules Github에서 제공하는 Branch protection rules을 통해 어떤 브랜치에 대한 행위를 보호할 수 있다. About protected branches 에 따르면 public repositories에 대해서는 사용 제한이 없으며, private repositories의 경우 유료 사용자(Pro, Team, Enterprise Cloud, Enterprise Server)에게만 제공된다. private repo의 경우 git에서 직접 특정 브랜치(master, main)에 바로 push하는 것을 막을 수 있다. Branch Protection rule repositroy의 Settings - Branches에서 protection rule..
Github Page를 이용한 React 호스팅
Github Page를 이용한 React 호스팅
2021.03.20React 배포하기 React 샘플코드 호스팅된 깃헙 페이지 github page 배포용 라이브러리 설치 npm i gh-pages package.json 설정 "scripts": { "start": "react-scripts start", "build": "react-scripts build", "eject": "react-scripts eject", "predeploy": "npm run build",
SSH 파일 업로드 시 pem 키 혹은 패스워드 입력하기
SSH 파일 업로드 시 pem 키 혹은 패스워드 입력하기
2021.02.20SSH를 통해 서버로 파일 업로드 시, 패스워드를 입력해야하는 경우가 있다. 해당 예제는 macOS 기반으로 작성되었다. 설치 macOS용 패키지 관리자 homebrew 설치 (이미 설치되어 있다면 스킵) $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" sshpass 다운로드 $ brew install hudochenkov/sshpass/sshpass 혹은 $ brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb Homebrew는 기본적으로 sshpass..
Git stash 일부 파일만 적용하기
Git stash 일부 파일만 적용하기
2020.12.16작업을 하다보니 모든 작업 현황이 아니라, 일부 파일만 잠시 보관해두었다가 개발해야하는 경우가 생겼다. 이런것도 되려나? 하고 찾아보다가 알게 되었다. git stash push -m "메시지" 파일절대경로 파일절대경로 파일절대경로 혹은 git stash push -m "메시지" 파일절대경로/* '*' 같은 키워드도 적용되더라 :)