전체 글

Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 만능 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험했던 내용과 공부했던 내용을 기록합니다. 🐻‍❄️☁️
·Computer Science
선택 정렬 (Selection Sort) 현재 위치에 들어갈 값을 선택해서 정렬하는 배열이다. 일상에서 크기 순으로 나열할때 하나씩 끄집어내서 정렬하는 걸 생각하면 쉽다. 예를 들어서 오름차순으로 정렬하는 경우에, index 0번에 오는 원소는 모든 값중에서 가장 작은 값을 선택해서 정렬한다. 그후 index 1 번에 오게 될 원소를 찾아서 선택하여 정렬하게 되는데, 0 번에 정렬한 값을 제외하고 나머지 값들 중에서 가장 작은 값을 선택해서 정렬하게 되면 된다. 시간 복잡도 : O(N**2) 시간 복잡도는 루프문을 통해 모든 인덱스에 접근해야 하므로, 기본적으로 O(N)이 걸리고, 하나의 루프에서 현재 인덱스 값과 다른 인덱스의 값들과 비교를 각각 한번씩 수행하여 최소값을 찾은 후 현재 인덱스에 있는 값..
Spark 가 지원하는 데이터 소스를 읽고 쓰는 방법에 대한 단원이다. 데이터 소스 읽기 spark.read.format("csv")\ .option("mode", "FAILFAST")\ # 읽기 모드 .option("inferSchema", "true")\ .schema(someSchema)\ .load() 데이터를 읽을 때는 DataFrameReader를 사용하며, 이는 SparkSession의 read 속성으로 접근한다. 포맷, 스키마, 읽기 모드, 옵션 과 같은 값들을 지정해주어야 한다. 읽기 모드는 스파크가 형식에 맞지 않는 데이터를 만났을 때의 동작방식을 지정하는 옵션이다. 읽기 모드 permissive : 오류 레코드의 모든 필드를 null로 설정하고 모든 오류 레코드를 _corrupt_re..
Segmentation 프로그램을 의미 단위인 여러개의 segment로 구성 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨 Segment 는 다음과 같은 logical unit 들이다. main(), function, global variables, stack, symbol table, arrays Segmentation Architecture locigal address는 다음의 두가지로 구성 segment table : 각각의 테이블 엔트리는 base 와 limit 을 가지고 있음 base : starting physical address of the segm..
·Algorithm (PS)
https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 1. 알고리즘 유형 : DP 증가하는 수열, 감소하는 수열 요런 유형은 DP 로 많이 접했어서 DP 라고 떠올렸다. 정확하게는 DP 를 이용한 LIS (Longest Increasing Subsequence, 최장 증가 부분 수열)과 LDS (최장 감소 부분 수열) 을 활용하여 풀 수 있다. (상당히 문제가 naive하게 힌트를 주고 있다) 2. 풀이 예전에 문제를 접한 적이 있어서 금방 떠올랐다. i번째 원소를 기..
Lambda 함수를 trigger 거는 방법에는 여러가지가 있지만 그중에서도 AWS 외부에서 lambda 에 요청을 보내기 위해서 API Gateway 와 연동하게 되면, lambda 함수를 빠르게 서버리스로 배포할 수 있다. API Gateway 와 Lambda 서비스를 사용하여 Serverless HTTP API 를 배포하는 방법에 대해 알아보자 우선 AWS 에서 API Gateway > Create API 를 선택하고, HTTP API 타입을 선택한다. 생성하게 될 HTTP API 이름을 적는다. HTTP method 를 여기서도 정의할 수 있지만 우선 넘어가고, 나중에 한번에 정의하도록 한다. API 배포를 관리하기 위한 Stage 이름을 정한다. 구성 내용을 확인하고 Create 버튼을 눌러 A..
CORS 란 무엇인가 브라우저에서는 보안상의 안전을 위해서 cross-origin HTTP 요청을 제한한다. 따라서 cross-origin 요청을 하기 위해서는 서버 측에서 허용을 해주어야 한다. 이는 HTTP-header 로 구현할 수 있으며, 이를 CORS라고 한다. CORS 가 필요한 이유는 다른 사이트에서 원래의 사이트를 흉내내서 악의적으로 사용되는 것을 방지하기 위함이다. 기존 사이트와 동일하게 동작하게 구현하여 사용자의 정보를 악의적으로 가로채는 등의 공격을 하지 못하도록 CORS를 통해 서버와 클라이언트 간 협의가 필요한 것이다. CROSS-ORIGIN 이란 cross-origin 이란 이들 중 한가지라도 다른 경우를 의미한다. 1. protocol : 프로토콜이 다른 경우이다. ex. ht..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/118668 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr kakao 의 공식 해설을 참고했다. https://tech.kakao.com/2022/07/13/2022-coding-test-summer-internship/ 2022 테크 여름인턴십 코딩테스트 해설 2022년 카카오 여름 인턴십 코딩 테스트가 지난 5월 7일에 5시간에 걸쳐 진행되었습니다. 시간이 부족하여 문제를 풀지 못하는 아쉬움이 없도록 1시간을 늘려 테스트를 진행한 것이 작년과 조금 ..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/150365?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주의할 점은 이미 방문한 칸도 '재방문'이 가능하다는 것이다. 이러한 경우에, 어처피 2차원 배열 안에서는 상,하,좌,우로만 이동하므로 맨하튼 거리를 이용하는 것이 최단거리가 될 것이다. 따라서 맨하튼 최단 거리를 계산하여 k와 비교해주는 로직이 필요하다. 또한 반드시 문자열은 사전순으로 빠른 순서이어야 하므로 처음부터 상하좌우에 해당하는 알파벳을 사전순으로 정렬한..
minjiwoo
MJ workspace