전체 글 208

HackerRank 문제풀이 - 6 (Left Rotation)

1.문제 임의의 배열(a)과 배열의 요소들이 왼쪽으로 얼만큼 쉬프트할지 숫자(d)가 정해진다. 가장 낮은 인덱스의 아이템은 가장 높은 인덱스로 이동하게 된다. 쉬프트가 끝난 배열을 리턴으로 넘기면 된다. 2. 풀이 2.1 풀이 과정 function rotLeft(a, d) { // Write your code here let tempArr = []; for(let i = d; i < a.length; i++){ tempArr.push(a[i]); } for(let i = 0; i < d; i++){ tempArr.push(a[i]); } return tempArr; } 풀이 방법은 다음과 같다. 주어진 배열(a)에서 쉬프트값(d)부터 배열의 길이까지 빈 배열(tempArr)에 넣는다. 그 후, 주어빈 배..

쿠버네티스(Kubernetes) Deployment란?

지난 포스팅에서는 쿠버네티스의 파드(Pod), 레플리카셋(ReplicaSet)에 대해 알아보았다. 오늘은 이를 아우르는 디플로이먼트(Deployment)에 대해 정리해보고자 한다. 1. 디플로이먼트란? 쿠버네티스의 디플로이먼트(Deployment)는 애플리케이션에 선언적 업데이트를 제공하는 쿠버네티스 리소스 개체이다. 디플로이먼트를 통해 애플리케이션에 사용할 이미지, 유효 포드의 수, 업데이트 방식과 같은 애플리케이션 라이프사이클을 정의할 수 있다. 쿠버네티스 Object는 사용자가 원하는 클러스터 워크로드의 형태를 쿠버네티스 시스템에 알리는 방법이다. Object가 생성되면 클러스터가 작동하여 Object를 유지하므로 쿠버네티스 클러스터를 원하는 상태로 둘 수 있다. 쿠버네티스에서는 각 Object를 ..

Server/Kubernetes 2022.12.15

Git 이전 커밋으로 롤백하기(git revert)

1.개요 지난번 포스팅에서는 로컬 프로젝트에서 이전 커밋으로 되돌아가는 git reset에 대해 다루었었다.(해당포스팅) 이번에는, 예전의 커밋으로 되돌린 뒤, 이를 푸시하여 원격 레포지토리에도 예전 소스들로 되돌아가게 할수있는 명령어를 포스팅해보고자 한다. git reset명령어도 특정 커밋으로 되돌아 간 후 force push를 할 수 있으나, 소스의 수정 사항들이 모두 날아가기 때문에 일반적인 상황에서는 원격 저장소에 force push는 가급적 해서는 안되며, 협업 상황에서는 절대로 해서는 안된다. 이럴 때 사용할 수 있는 명령어가 바로 특정 커밋으로 돌아가는 revert이다. 이 포스팅에서는 git revert명령어에 대해서 포스팅하고자 한다. 2. git revert 기초 사용법 git rev..

Git 2022.12.14

쿠버네티스(Kubernetes) ReplicaSet이란?

1. 레플리카셋(ReplicaSet) 이란? 레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다. 예를 들어, 5개의 파드를 항상 실행하도록 설정하면 이후 1개가 삭제되면 다시 파드 1개가 실행되어 5개를 유지할 수 있도록 해준다. 마찬가지로 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성하여 5개를 유지하도록 한다. 2. 레플리카셋을 사용하는 이유 쿠버네티스의 기본 단위인 Pod는 여러 개의 컨테이너를 추상화해 하나의 애플리케이션으로 동작하도록 만드는 훌륭한 컨테이너 묶음이다. 그러나 YAML에 포드만 정의해 생성하게 되면 이 Pod의 생애 주기(Lifecy..

Server/Kubernetes 2022.12.13

쿠버네티스(Kubernetes) Pod란?

1. 포드(Pod)란? 쿠버네티스 포드는 Linux 컨테이너를 하나 이상 모아 놓은 것으로, 쿠버네티스 애플리케이션의 최소 단위이다. 강하게 결합된 여러 개의 컨테이너로 구성된 포드도 있고(고급 활용 사례), 단일 컨테이너로만 이루어진 포드도 있다.(더 일반적인 활용 사례). 컨테이너를 쿠버네티스 포드로 그룹화하는 이유는 아래의 설명과 같이 리소스를 더 지능적으로 공유하기 위해서이다. 쿠버네티스 시스템에서는 같은 포드에 속한 컨테이너끼리 동일한 컴퓨팅 리소스를 공유한다. 이러한 컴퓨팅 리소스를 쿠버네티스에 풀링하여 클러스터를 만들고, 이를 바탕으로 더 강력하고 지능적으로 분산된 애플리케이션 실행 시스템을 제공할 수 있다. 쿠버네티스 포드의 장점을 이해하는 데 가장 중요한 요소가 아래에 정리되어 있다. 하..

Server/Kubernetes 2022.12.11

클린 아키텍쳐(Clean Architecture) 에 대해

클린 아키텍쳐에대해 공부하기 위해 포스팅을 찾던 중, 잘 정리된 외국 포스팅이 있어서 이를 번역하여 포스팅하고자 한다. The Clean Architecture Diagram 지난 몇 년 동안 우리는 시스템 아키텍처에 관한 다양한 아이디어를 보았다. 여기에는 다음이 포함된다. Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn, Steve Freeman, Nat Pryce가 멋진 책 Growing Object Oriented Software에서 채택 Jeffrey Palermo의 Onion Architecture Screaming Architecture James Coplien 및 Trygve Reenskaug의 DCI. Iva..

[NPM] 사용했던 Package가 업데이트되면서 발생되던 버그 해결

1. 개요 몇 달 전 npm의 의존성 관리 파일 (package.json)에 대해 포스팅 한 적이 있었다. (=> 해당 포스팅) 근데 며칠 전 포스팅에서 우려사항으로 적었던 상황이 실제로 발생되어 포스팅하고자 한다. 2. 문제 상황 웹에서 영상을 녹화한 후, 녹화한 파일을 처리한 뒤에 blob으로 변환하여 firebase storage에 업로드하는 기능을 구현했었다. 그런데, 잘 되던 영상 처리가 어느 순간부터 무한루핑이 돈다는 제보가 있어서 살펴보게 되었는데, firebase 패키지 내에서 오류가 나고 있었다. 그러나, 로컬 개발환경에서는 해당 문제가 발생하지 않았다. 그렇다면.. 변경된 로직이 없다면, 촬영 환경이나 값이 바뀌었을 수도 있다 생각하여 여러가지 원인을 찾아보기 시작했었는데... 희한하게..

프론트 엔드의 상태(state)에 대해

1. 상태(state)란? 상태는 한국어로 번역하면 잘 와닿지 않을 것이다. 대신 '데이터' 라는 말로 이해하기 쉬울 것이다. 객체 지향 프로그래밍에서는 프로그램의 기본 단위가 객체이고, 객체 간의 메시지 상호작용을 통해 프로그램을 구현하게 된다. 이때 객체가 가지고 있는 데이터 또한 상태라고 할 수 있다. (예를 들어 Employee 클래스를 만든다고 가정하면 Employee의 상태는 name과 age가 될 수 있다.) 상태에서 중요한 부분은 바로 값이 변한다는 것이다. 이 값이 변하는데 예측된 값으로 변해야 의도한 대로 동작을 수행할 수 있으니, 예측 범위 내에서 변하게 하는 것이 중요하다. 그래서 그 예측된 범위를 만들기 위해서, 여러 가지 제약조건이나 구조적인 설계를 고민할 수 있을 것이다. 또한..

FrontEnd 2022.12.05

HackerRank 문제풀이 - 5 (2D Array - DS)

1. 문제 임의의 2차원 배열(6x6)이 주어진다. 위의 문제에서 주어진 패턴에 해당하는 인덱스의 값들을 모두 더한다. 각 패턴별 더한 값들중 가장 높은 값을 결과로 도출한다. 2. 1차 풀이 2.1 풀이 과정 function hourglassSum(arr) { // Write your code here let hourGlassSumArr = []; const maximumMoveXYPos = 4; for (let yPos = 0; yPos < maximumMoveXYPos; yPos++) { for (let xPos = 0; xPos < maximumMoveXYPos; xPos++) { let sum = arr[xPos][yPos] + arr[xPos + 1][yPos] + arr[xPos + 2][y..

HackerRank 문제풀이 - 4 (Jumping on the Clouds)

1. 문제 구름의 값(0, 1)이 들어있는 무작위 배열이 주어진다. 0은 밟을수 있는 구름이고, 1은 밟을 수 없는 구름이다. 첫번째 구름과 마지막 구름은 무조건 밟을수 있는 구름이다. 점프를 한 칸이나 두 칸을 할 수있다. 마지막 구름까지 최소 몇번의 점프를 해야 도달할 수 있는지 구하면 된다. 2. 풀이 2.1 풀이 과정 function jumpingOnClouds(c) { // Write your code here // const tokens = c.split("\n"); // const size = tokens[0]; // const list = tokens[1].split(","); // const list = c.split(","); const list = c; let currentIndex ..

반응형