살짝 정리

    윈도우 git clone invalid path 에러

    윈도우 git clone invalid path 에러

    github에서 프로젝트를 clone 했더니 아래와 같은 에러를 만났다. 해결방법은 이렇다. 1. clone한 디렉터리로 이동한다. 2. 해당 디렉터리에서 터미널이나 git bash를 열고 아래 명령어를 차례대로 쳐준다. git config core.protectNTFS false git checkout -f HEAD 그러면 아래와 같은 메시지를 볼 수 있고, 디렉터리에는 제대로 clone이 된 것을 확인할 수 있다. 원인은 clone하는 파일 이름에 특수문자가 있어 윈도우 파일 시스템이 인식하지 못하는 파일이 있는 것이라고 한다.

    도커 이미지 만들기

    도커 이미지 만들기

    1. 도커 이미지 만들기 위한 준비 도커 이미지는 dockerfile로 만든다. 그 자체로 가동될 수 있도록 모든 조건들이 갖추어져 있어야하므로, dockerfile 내용은 모든 준비가 다 되어있어야한다. 1. 기본 토대가 될 이미지. FROM baseImage 2. 기본 토대 이미지 위에 추가할 사항들 RUN, COPY... 3. run시에 실행할 명령어 CMD ["..."] 2. 도커 데몬에게 dockerfile과 필요한 정보들 넘겨주기 도커 클라이언트를 통해 명령어를 입력하여 도커 데몬에게 정보를 넘겨주자. docker build ./ 를 치면, 해당 디렉토리에서 dockerfile을 찾아서 도커데몬에게 넘겨주게 된다. 3. 도커 데몬이 이미지 파일을 만드는 과정 1. FROM baseImage로부..

    도커 기본 구조? 내게 도커란

    도커 기본 구조? 내게 도커란

    1. 먼저 Docker란 무엇인가? 하는 질문이다. Docker는 컨테이너기반 오픈소스 가상화플랫폼이다. 이게 무슨 말일까? 도커를 이용하면, 애플리케이션, 데이터베이스 서버 등을 이미지로 만들고, 해당 이미지로 컨테이너화하여 쉽게 실행시킬 수 있다. 여기서 첫번째 어떤 프로그램이던 컨테이너로 추상화할 수 있다. 이것이 컨테이너기반이라는 의미이고, 두번째, 도커는 컨테이너로 만들어 실행시킨 프로세스들을 격리시킨다. 여기에 가상화라는 의미가 담겨있다. 2. 도커는 도커 클라이언트와 도커 서버(데몬)로 구성되어있다. docker version 또는 docker info를 쳐보면 client, server라는 명칭이 나온다. 도커 클라이언트는 단순히 명령어를 도커 서버에게 전달해주고, 해당 명령어를 읽고 이미..

    Git, reset과 revert

    Git, reset과 revert

    git을 이용하여 형상관리를 하다보면 예전 상태로 돌려야하는 순간이 있다. 그 때 사용할 수 있는 명령어가 2가지가 있는데, 바로 reset과 revert이다. 그 동안 잘 모르고 사용했고, 사용하면서도 맞겠지? 하고 썼었는데... 이번에 공부를 하면서 보니 정말 위험한 행동이였다. 한 번 정리해보도록 하겠다. git reset git reset은 과거 시점으로 돌아가는 것이다. 예시를 보자. commit은 1부터 7까지 순차적으로 진행되어 있다. 현재 원하는 상황은 스포하기 전 상황으로 돌아가는 것이다.(3번) 이럴 때 사용하는게 git reset이다. git reset 명령어를 이용하면, 2번 commit 시점 직후로 돌아갈 수 있다. git log를 쳐보면 2번 이후의 커밋들이 모두 사라져 있는 것..

    AWS Cloud Practitioner Essentials 모듈1

    AWS Cloud Practitioner Essentials 모듈1

    이 글은 AWS training에서 무료로 제공하는 AWS Cloud Practitioner Essentials을 듣고 내용을 정리한 글이다. 강의를 직접 듣고 싶은 사람들은 아래 링크를 통해 들어보기를 바란다. 같이 공부하면 좋겠다. https://www.aws.training/Details/eLearning?id=68459 AWS training and certification www.aws.training 이번 모듈1에서의 학습 목표이다. AWS의 이점을 요약할 수 있다. 온디맨드식 제공과 클라우드 배포의 차이점을 설명할 수 있다. 종량 과금제 모델을 요약 설명할 수 있다. 우선 AWS는 많은 서비스를 제공해주지만 먼저 기본 클라우드 컴퓨팅 모델을 살펴보자. 거의 모든 현대적 컴퓨팅은 기본적인 클라..

    컴포넌트의 내부 구현을 숨기자

    컴포넌트의 내부 구현을 숨기자

    어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐이다. 오직 API를 통해서만 다른 컴포넌트와 소통하고 서로의 내부 동작 방식에는 전혀 개의치 않게 설계를 해야한다. 이것이 정보 은닉, 혹은 캡슐화라고 불리는 소프트웨어 설계의 근간이 되는 원리이다. 그럼 어떤 장점을 얻게 될까? 시스템 개발 속도를 높여준다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 성능 최적화에 도움을 준다. 각 컴포넌트가 서로 영향을 주지 않기 때문에, 필요한 컴포넌트만 최적화할 수 있다. 소프트웨어 재사용성을 높인다. 외부에 거의 의존하지 않는 컴포넌트라면 다른 낯선 개발환경에서도 유용히 쓰일 수 있다. 큰 시스템을 제작하는 ..

    이진탐색

    읽기, 검색, 쓰기, 삭제 배열[]을 사용할 때 생각해야할 요소다. 배열은 RAM에 저장되므로 읽기가 매우 빠르다. 크기를 처음에 정하며, 첫 주소와 인덱스를 통해 바로 해당 값을 읽는다. 검색은 다소 느리다. 배열을 처음부터 순회하는 선형검색을 생각하면 평균적으로는 찾는 값이 중간에 있을 것이고, 최선의 경우는 맨 처음. 최악의 경우는 맨 마지막에 있거나, 아예 없는 경우이다. 쓰기를 생각하면 먼저 배열의 크기를 생각해야 한다. 여유 공간이 있다면 평균적으로는 중간에 데이터가 insert 될 것이고, 넣는 위치의 이후 모든 값들은 오른쪽으로 한 칸씩 밀려나게 될 것이다. 최선의 경우는 맨 마지막에 넣는 경우이며, 바로 insert 가능하다. 최악의 경우는 맨 처음에 넣는 경우이다. 모든 값들이 오른쪽으..

    producer-consumer 패턴

    producer - consumer패턴은 멀티스레드 디자인 패턴에서 많이 사용되는 패턴 중 하나이다. 한쪽은 producer의 역할. 즉, 어떤 작업을 생성해주는 역할을 하고 나머지 한 쪽은 consumer역할. 생성된 작업을 수행해주는 일을 한다. 그 중간 연결 매개체 역할을 queue가 수행한다. producer ---> queue ---> consumer 작업생성 작업수행 다시 말해 producer는 작업 생성 후 queue에 해당 작업을 넣어주는 일만 하고, consumer는 queue에 들어있는 작업을 꺼내서 작업을 수행하는 일만 한다. 여기서 멀티스레드가 사용되는 부분은 어디일까. producer와 consumer를 각각 멀티스레드로 돌릴 수 있다. producer consumer produc..