
혼자 프로젝트 하면서 이미지 저장할 때는 dockerHub를 사용하면 되지만, 실제 회사에서는 감사 정책도 있고 보안상의 문제로 public registry에 저장하지 못한다. 그래서 docker에서 제공하는 docker registry라는 툴을 이용해서 이미지를 관리한다. 이러한 docker registry는 컨테이너 이미지 저장소를 사용할 때 https 를 기본으로 사용하지만, 현재 우리 회사에서 사용하고 있는 컨테이너 이미지 저장소인 Harbor는 http로 설정되어있다. Harbor 를 https로 설정하여 보안적인 부분을 보완할 수도 있지만, 회사 내부망에서 사용하기도 하고 접근하는 인력들이 모두 내부 개발 인력들이기 때문에 http로 설정했다. 하지만 이렇게 접속하면 인증서 관련 오류가 발생한..

스케줄러 한정된 자원을 효율적으로 사용하기 위해 입력된 프로세스를 어떤 순서로 실행시킬지 정하는 역할을 합니다. 동기와 비동기 동기는 데이터를 주고 받을 때 서로 주고 받는 순서가 같다는 것을 의미하고 비동기는 그렇지 않다는 것을 의미합니다. 동기식 작업은 작업을 요청하고 그것이 응답될 때 까지 기다리다가 다음 작업을 합니다. 가상 메모리 가상 메모리란 프로세스 전체가 메모리에 올라오지 않더라도 실행이 가능하도록 하는 기법입니다. 캐시의 지역성 캐시는 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 하는 메모리를 의미하며 이에 따라 가까운 미래에 같은 주소에 있는 특정 데이터를 자주 참조할 것 같은 경우를 시간적 지역성이라 하고 데이터 조회 시 데이터가 순서대로 접근 되는 경우를..

프로세스와 스레드의 차이(Process vs Thread) 프로세스는 컴퓨터로부터 자원을 할당 받아서 실행되는 프로그램을 의미합니다. 스레드는 프로세스가 할당받은 자원을 이용하여 실행하는 단위로 한 프로세스에는 여러 개의 스레드가 존재할 수도 있습니다. 이 때 스레드끼리는 서로 주소 공간이나 힙 공간을 공유할 수 있습니다. 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 멀티 스레드를 하게 된다면 따로 프로세스를 생성하여 자원을 받는 시스템 콜을 하지 않아도 되고 프로세스 간의 통신보다 스레드 간의 통신이 더욱 빠르기 때문에 멀티 스레드를 이용합니다. 주의할 점은 전역 변수인 데이터 세그먼트를 이용할 때 충돌이 일어날 수 있습니다. Thread-safe 멀티 스레드 환경에서 여러 스레드가 하나의 객체나 ..

DNS 웹 사이트 접속 시 입력한 도메인을 IP 주소로 바꿔줘서 도메인만 입력해도 정해진 웹 사이트로 접속할 수 있게 해주는 시스템을 말합니다. DNS는 크게 3가지로 나뉘는데 도메인 네임 스페이스, 네임 서버, 리졸버로 나뉩니다. 리졸버는 클라이언트 요청을 네임 서버에 전달하고 네임 서버는 해당 도메인을 도메인 네임 스페이스에서 찾습니다. 이처럼 DNS는 계층 구조를 가지는 분산 데이터베이스 구조로 이뤄져 있습니다. REST, RESTful REST는 자원을 이름으로 구분해 해당 자원의 정보를 주고 받는 것을 의미하는 것으로 어떤 자원에 대해 CRUD 연상을 수행하기 위해 URI로 Method를 사용하여 요청을 보내고 요청된 자원은 특정한 형태(Json, XML)로 표현되는 것을 말합니다. 특징으로는 ..

Socket 소켓이란 네트워크 상에서 동작하는 프로그램 간 종착점을 의미합니다. 이는 데이터를 통신할 수 있도록 해주는 연결부이기 때문에 서버와 클라이언트는 소켓을 생성해야합니다. 소켓 통신의 특징은 양방향이며 실시간으로 정보 송수신이 가능합니다. Socket.io와 WebSocket의 차이 Socket.io는 자바스크립트를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있습니다. 그렇기 때문에 사용 시에는 웹 브라우저와 웹 서버에 따라 가장 적합한 기술을 사용할 수 있습니다. WebSocket은 웹 페이지의 한계에서 벗어나 실시간 상호작용하는 웹 서비스를 만드는 표준 기술로, 일반 HTTP 요청을 통해 핸드쉐이킹으로 최초 접속이 이뤄집니다. 기존 요청-응답 관계보다 더 쉽게 데이터를 교환할 ..

HTTP와 HTTPS HTTP는 서버와 클라이언트 간에 데이터를 주고 받는 프로토콜이며 거의 모든 형태의 데이터를 다룰 수 있습니다. 하지만 별다른 보안이 없기 때문에 네트워크 신호를 가로챈다면 내용이 외부에 노출될 가능성이 높습니다. HTTPS는 대표적으로 기존의 HTTP을 SSL이라는 보안 계층에서 작동합니다. 이러한 방식을 SSL 암호화 통신이라고도 하며 SSL 암호화는 공개키 암호화 방식을 통해 이뤄집니다. HTTP 요청/응답 헤더 요청 시에는 서버의 도메인인 Host, 사용하는 클라이언트의 종류인 User-Agent, 클라이언트가 허용할 수 있는 파일 형식인 Accept, Cookie 등 여러 헤더를 사용합니다. 응답 시에는 웹 서버의 정보를 나타내는 Server, CORS 에러를 방지하기 위해..

TCP/IP의 개념 TCP는 4계층에서 사용하며 패킷의 손실,중복 등 오류가 없도록 보장하며 이를 통해 신뢰적인 전송을 보장하는 프로토콜입니다. IP는 3계층에서 사용하며 신뢰성이 전혀 없지만 비연결성이므로 IP 주소를 통해 빠르게 목적지에 도달할 수 있습니다. 이 두가지인 TCP/IP를 사용하면 IP 라우팅을 통해 목적지에 도달하며 TCP를 통해 사용자간의 논리적 연결을 생성하고 신뢰성을 유지하기 위해 쓰입니다. TCP와 UDP TCP는 신뢰적인 전송을 보장하며 연결지향적으로 연결 관리를 위한 연결설정이 필요합니다. UDP는 신뢰성이 없으며 비연결지향적이지만 실시간 응용 및 멀티캐스팅에 적합합니다. TCP와 UDP의 헤더 분석 TCP 헤더의 최소 크기는 20바이트이며 연결지향적이므로 순서를 나타내는 시..

OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말합니다. 계층을 나눈 이유는 통신이 일어나는 과정을 쉽게 단계별로 파악할 수 있기 때문입니다. OSI 7계층 설명 1계층은 물리 계층으로, 물리적, 전기적 통신이 일어나며 데이터를 전기적인 신호로 변환해서 받는 역할을 합니다. 2계층은 데이터 링크 계층으로, 정보의 전달을 안전하게 수행합니다. 주로 브릿지나 스위치를 통해 MAC 주소를 참고하여 정보를 주고 받습니다. 3계층은 네트워크 계층으로, 데이터를 목적지까지 빠르고 안전하게 전달합니다. IP 주소에 따라 경로와 주소를 설정하는 라우팅 기능으로 주로 라우터를 이용합니다. 4계층은 전송 계층으로, TCP 프로토콜을 주로 이용하며 사용자들의 신뢰성 있는 데이터를 위해 오류 제어, 흐..

문제 요약 C개의 알파벳이 주어지고 L개의 문자로 암호가 구성됩니다. 암호는 다음과 같은 특징을 가집니다. 1. 알파벳이 증가하는 순서대로 배열된다. 2. 최소 1개의 모음을 가지고 있다. 3. 최소 2개의 자음을 가지고 있다. 이 때 가능한 모든 암호를 출력하는 것이 문제이다. 내가 문제 풀 때 생각했던 것 이런 구현 문제는 조건만 순서대로 지켜준다면 답이 나옵니다. 이 문제는 완전 탐색이라 복잡하게 느낄 수도 있지만 Python만의 방식이면 쉽게 풀 수 있다고 느꼈습니다.일단 알파벳을 조합해야하므로 combination을 써야겠다고 생각했고 증가하는 순으로 배열해야하기 때문에 sort도 생각했습니다. 또한 모음을 주의해서 신경써야하므로 따로 선언해놓고 문제를 푼다면 수월하게 풀 수 있다고 생각했습니다..

문제 요약 주어진 입력인 알파벳에 숫자를 대입하여 가장 큰 합을 찾아내는 것입니다. 분류는 브루트포스로 나와있지만 자릿수에 따라 바로바로 수를 대입한다고 생각하면 그리디 알고리즘이라 생각할 수 있습니다. 내가 문제 풀 때 생각했던 것 자릿수에 따른 숫자 대입이라 생각했습니다. 어짜피 6 + 7 이나 7 + 6 이나 같고 178 + 456 이나 158 + 476 이나 결과는 634로 같기 때문에 자릿수가 같을 때의 숫자는 상관 없다고 풀었습니다. 그래서 길이를 기준으로 정렬하고 길이가 가장 긴(= 자릿수가 가장 큰) 단어의 앞자리는 가장 큰 수인 9를 저장하고 앞자리만 없앴습니다. 그 다음으로 길이가 가장 긴 단어의 앞자리는 8을 저장하는 등 소거법으로 문제를 해결했습니다. 1차 풀이 from collec..
- Total
- Today
- Yesterday