2024/03 10

도커 기초

컨테이너는 샌드박스화 된 런타임 환경이다. 샌드박스화 : 프로세스가 보호된 영역에서 동작하여, 호스트 시스템 및 다른 프로세스에게 영향을 미치지 않는다는 것을 의미한다. 런타임 환경: 어플리케이션이 동작할 때 필요한 최소한의 실행환경 컨테이너는 호스트 OS를 공유한다. 따라서, 호스트 OS와 다른 OS 기반의 컨테이너 구동은 불가능하다. 즉, 컨테이너는 호스트 가상화처럼 게스트 OS를 호스트 OS와 분리하는 것이 아니라, 어플리케이션을 OS로부터 독립적으로 분리하는 역할을 한다. Docer는 컨테이너 가상화 기술 기반의 오픈소스 가상화 플랫폼이다. 프로세스를 격리하여 컨테이너와 같이 일정한 규격/인터페이스로 통일 CPU/메모리는 필요한 만큼만 사용 (미리 일정량을 할당해 놓는 방식이 아니다) 단 CPU/..

가상화기술(도커, 가상머신)

가상화 기술은 클라우드 컴퓨팅 서비스의 핵심 기술 중 하나이다. 가상화 실제(물리적 리소스)가 아닌, 가상의 IT 자원을 만들어내는 것 또는 그러한 기술 가상화 기술을 사용하면 가상화된 IT 자원을 이용하여 다수의 가상 머신을 생성할 수 있으며, 가상 자원은 서로 독립적임 가상화 기술의 장점 한대의 물리적 기기에서 다수의 가상 머신을 생성/관리할 수 있음 사전에 구성된 성능의 가상 컴퓨터를 반복적으로 만들어 낼 수 있음 사양, os/미들웨어,sw/라이브러리 구성이 완료된 가상 머신을 템플릿으로 만들고 새로 구성이 필요한 경우 기존에 생성한 템플릿을 사용하여 가상 머신을 쉽게 생성가능 자원 활용성 가상화 기술을 활용하면 제한 된 수의 물리적 자원을 효율적으로 운영가능 안전성 가상화 기술을 통해 만들어진 논..

시스템 디자인/확장

개요 기존 방식의 시스템 디자인 및 확장 과정을 공부하고, 이를 통해 클라우드 컴퓨팅 장점을 학습한다. 목표 간단한 SNS 시스템을 디자인 소규모 사업장을 위한 간단한 SNS 구현(직원 수 :100명) 서비스 품질(Qos)이 우수해야 한다. SNS 서비스를 제공하기 위해 필요한 서버 측 모듈/컴포넌트 웹 서버 또는 WWW + WAS 서비스 접속을 위한 웹 페이지 SNS 기능 사용 데이터베이스 디자인 디자인1: 웹 서버와 데이터베이스를 한대의 서버 컴퓨터에 설치 문제점 : 직원수가 늘어나면 정상적인 서비스가 가능? 사용자 수가 늘어나면 응답시간이 증가하고 오류가 발생한다. 디자인2: 한대의 서버를 두대로 분리 서버1에는 웹서버, 서버2에는 데이터베이스 설치 기능/역할에 따른 분할 디자인1에 비해 서비스 품..

[백준] 수들의 합 2 2003번 (python)

출처 : https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 풀이 방법 투 포인터 문제를 연습할 겸 문제를 풀어 보았다. 이중 for문으로 풀면 시간초과가 난다. 투 포인터란 배열을 순회하는 하나의 방법으로 포인터를 2개를 사용해서 순회하는 방법이다. 왼쪽 포인터와 오른쪽 포인터를 두고 풀어보자 왼쪽 포인터부터 오른쪽 포인터까지 합을 리턴하는 함수를 작성한다. 이때 배열의 합에 따라 케이스를 분리하자 배열의..

Algorithm 2024.03.24

코딩테스트 회고

개요 네이버, 카카오 코딩테스트를 치르고 난 후 KPT 회고를 진행하려고 한다. keep 연습 때 자주 뜨던 index out of range에 대한 연습이 많이 되어 있어 금방 해결했다. 2시간 동안 포기하지 않고 집중을 했다. problem 문제에서 요구하는 바를 정확하게 이해하지 못했다. 풀이 방법에 대해 증명을 하지 않고 바로 구현을 했다. BFS, DFS, DP 등 주요 알고리즘에 집착했다. 디스코드 알람이 떠 당황했다. 파이썬 리스트 복사에 대해 잘 처리하지 못했다. 그냥 listA =listB로 복사 Try 문제에서 요구하는 바가 정확하게 뭔지 생각해 보고 급하게 바로 구현에 들어가지 않는다. 풀이 방법을 생각한 후 예시를 통해 증명하고 엣지 케이스까지 생각해 본 후 구현에 들어간다. 여러 ..

회고 2024.03.24

[백준] A->B 16953번 (python)

출처: https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A B구하는 거 보단 B->A로 구해야겠다고 생각했다. 하지만 예제 정답 부분만 보고 짝수이면 나누기 2 홀수이면 -1 후 나누기 10을 했다. 예시 부분은 다 정답처리가 되었지만 1 25같은 수가 입력된다면 제대로 해결하지 못할 것이다. 그래서 10으로 나누었을 때 나머지가 1인 경우, 2로 나누었을 때 나머지가 1인 경우 다른 경우는 실패 이렇게 3가지 경우로 나누게 되었다. A, ..

Algorithm 2024.03.22

동아리 개발환경 구축 (spring boot, mysql 도커로 배포하기)

개요 개발 동아리에서 개발부장으로 스터디를 관리하게 되었다. 혼자 공부하는 것과 동아리에서 활동하는 것의 가장 큰 차이점은 협업이라고 생각했다. 그래서 프론트엔드와 백엔드의 협업 방법을 생각을 해봤다. 1. 클라우드 서버에 배포 후 백엔드 API이용 2. 프론트엔드 로컬 PC에 백엔드 서버 배포 후 API이용 1번은 돈이 든다는 문제점과 여러 가지 프로젝트진행 시 동아리 원들이 팀을 나눠 스터디를 동시에 진행하게 된다면 한 개의 EC2에 모든 프로젝트를 배포하게 된다면 포트 설정을 따로 해주어야 한다는 번거로움이 있어 2번을 선택하게 되었다. 2번을 선택한 후 프론트엔드 측에서 데이터베이스를 설치하고, 자바를 설치하고 spring boot 서버를 띄우는 것은 불필요한 작업이라고 생각이 되어 도커 컨테이너..

카테고리 없음 2024.03.20

[프로그래머스] 리코쳇 로봇 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 기존 bfs 문제와 다른 점은 board를 벗어나거나 벽에 부딪힐 때까지 한 방향으로 쭉 이동하는 것을 한 번 이동했다고 카운트하는 점이다. 하지만 기존의 bfs를 조금 변형해서 풀 수 있었다. 현재 위치에서 move 함수를 이용해서 다음 위치점을 찾아야 했다. move 함수의 인자로 현재 위치, 이동 방향을 나타내는 인덱스 i를 넘겨주었다. 그 후 while 루프를 통해 벽..

Algorithm 2024.03.20

[프로그래머스] 석유 시추 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 처음엔 문제를 x축으로 나누어서 진행했다. 같은 x축일 때 까진 visited 배열을 초기화하지 않고 진행했고 x축이 증가할 때마다 visited 방문 배열을 초기화해주었다. 이렇게 하니 효율성 문제가 발생했다. 그래서 다른 분들의 풀이 방법을 참고하니 정사영이라는 알고리즘을 사용하는 것을 볼 수 있었다. 먼저 x축에 따른 추출 가능한 석유량을 count하는 배열 result..

Algorithm 2024.03.19

[프로그래머스] 붕대 감기 (python)

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 단순 구현문제이다 현재 시간에서 다음 공격 시간으로 바로 이동했다. 그런 후 공격 데이미를 입기 전에 얻는 회복량을 계산하고 데이미를 주었다. 그런 다음 현재 시간을 최근에 받은 공격 시간으로 이동했다. def solution(bandage, health, attacks): max_health = health health_time = 0 now_t = 0 last_time =..

Algorithm 2024.03.13