반응형

분류 전체보기 79

3장. 시스템 설계 면접 공략법- 가상 면접 사례로 배우는 대규모 시스템 설계 기초

시스템 설계 면접을 하는 이유는 설계 과정에서 내린 결정의 이유와 면접관의 피드백을 어떠한 방식으로 처리할 것인지를 볼 수 있기 때문이다.  이번 장에서는 시스템 설계 면접을 보게 되었을 때의 꿀팁(4단계)을 정리했다. 1단계 문제 이해 및 설계 범위 확정설계 해야하는 범위를 명확하게 해야한다. 면접관에게 질문을 하면서 범위를 구체화 시킨다. 예를 들어, 어떤 기능을 만들어야 하는지, 사용자는 어느 정도인지 등등 시스템을 혼자 추상화하여 대답하지 말자.  2단계 개략적인 설계안 제시 및 동의 구하기설계안에 대한 청사진을 제시하고 면접관에게 의견을 구한다. 그리고 핵심 종이나 화이트보드에 그려가며 얘기하자. 이 설계안이 시스템 규모에 관계 된 제약사항을 커버할 수 있는지 개략적으로 계산해 보자.  3단계 ..

STUDY/책 2024.07.31

2장. 개략적인 규모 추정- 가상 면접 사례로 배우는 대규모 시스템 설계 기초

시스템 용량이나 성능 개선을 위해서 아래의 수치를 기본적으로 숙지하고 있어야 한다.  2의 제곱수최소 단위는 1바이트고, 8비트로 구성된다. 데이터 볼륨의 단위를 2의 제곱수로 표현하면 아래의 테이블과 같다. 2의 x 제곱근사치이름축약형101천1킬로바이트1KB201백만1메가바이트1MB3010억1기가바이트1GB401조1테라바이트1TB5010001페타바이트1PB 응답 지연 값아래의 표는 통상적인 컴퓨터에서 구현된 연산의 응답 지연 값이다. 이 수치를 기반으로 컴픀터 연산들의 처리 속도가 어드 정도인지 짐작 할 수 있다. 연산명시간L1 캐시 참조0.5ns분기 예측 오류 (branch mispredict)5nsL2 캐시 참조7ns뮤텍스(mutex) 락/언락100ns주 메모리 참조100nsZippy로 1KB 압축..

STUDY/책 2024.07.31

1장. 사용자 수에 따른 규모 확장성 - 가상 면접 사례로 배우는 대규모 시스템 설계 기초

사용자가 많지 않은 경우에는 단일 서버로 운영할 수 있지만, 사용자가 많아지면 서버에 부하가 쉽게 가므로 위와 같은 시스템으로 설계해야한다.  각각의 컴포넌트가 어떤 역할을 하는지 어떤 흐름도를 갖는지 정리하고자 한다.  클라이언트(웹이나 모바일)에서 API url을 통해 API를 호출한다. 이때, 가장 먼저 CDN을 통해 API url을 로드 벨랜서 ip로 바꿔 호출해 준다. 로드 밸랜서는 서버의 부하를 분산 시키는 역할을 한다. 위에서 말한 단일 서버의 경우, 로드 밸랜서를 쓸 필요가 없다. 왜냐면 서버가 한개인데, 분산 시켜봤자 갈 곳은 한 곳 뿐이니까.로드 밸랜서가 각 서버와 private IP로 통신한다. 이런 면에서는 로드밸런서가 proxy 역할을 하는 것 같다.  로드 밸런서가 task를 분..

STUDY/책 2024.07.30

Efficientnet 예제

keras layer를 통해 모델의 layer를 직접 정의해서 사용할 수 있다. 아래 코드 처럼from keras.layers import Dropout, Flatten, Densefrom keras.models import Model, Sequentialfrom keras.layers import Dense, GlobalAveragePooling2Dmodel = Sequential()model.add(Conv2D(64, kernel_size=(3, 3), input_shape=INPUT_SHAPE, padding='VALID'))model.add(Conv2D(64, kernel_size=(3, 3), padding='VALID'))model.add(MaxPooling2D(pool_size=(2, 2))..

정리하기/CNN 2024.07.17

[Kotlin] string에서 사용할 수 있는 기본 함수

✏️ String -> Char array 로 변환 알고리즘을 풀다보면 string을 글자 배열로 만들어야 할 때가 있다. 다른 언어에서는 toChar()로 변환할 수 있어서 적용해봤는데, toChar() 함수는 deprecate됐다. 공식문서에서 처럼 toChar() 대신 toInt().toChar()로 사용해도 되지만 아래 예제처럼 toCharArray()를 사용해도 된다. var name = "monkey" var name_char_arr = name.toCharArray() ✏️ index 찾기 글자 내에 특정 글자의 index를 찾아야할 경우 아래의 함수를 사용할 수 있다. var input_string = "my name is Tom. my dog name is Tom too." var ind..

STUDY 2024.04.22

구글 애드몹, 애드센스 드디어 지급 받았다~!

3월 21일에 드디어 구글 광고비 지급 받았다~! 블로그는 애드센스, 어플은 애드몹을 통해 광고를 붙였는데, 광고 수익이 100 달러 이상 되어야 지급 받을 수 있다. 100 달러 중에서 어플의 비중이 80%이다. A 어플 2020/04 출시 B 어플 2023/03 출시 C 어플 2023/07 출시 (어플이 조금 허접해서 어플 이름을 밝히기 조금 창피해서 가렸다.) 처음 광고 붙여 어플 출시 하고 4년이 지나서야 지급을 받았다 ... 내가 조금 더 신경을 쓰고 업데이트도 자주 했더라면 더 빨리 받지 않았을까? 실제로 들어 온 돈은 93달러. 수수로 떼고 들어온 돈이다. 한번 지급은 받아보고 나니 다시 블로그와 어플 생성에 의욕이 뿜뿜한다!!

❤️🧡💛 2024.03.31

Git 사용법 정리(윈도우)

코드를 관리 하기 위해 git을 많이 쓴다. 여러 사람과 작업할 때, 코드를 공유하기 가장 쉬운 방법이기도 하다. 물론 혼자 작업하는 것이라도 git에 코드를 올려 커밋 이력을 관리하는 것이 좋다. 최근에 git을 처음 쓰게 된 친구가 git 사용법에 대해 물어봤다. 잘 정리한 글이 있으면 그 친구한테도 많은 도움이 되지 않을까 싶다. 그래서 이 글은 초보자도 이해하기 쉬운 버전으로 쓰려 한다. Git이란, 프로젝트의 모든 변경 이력을 추적하는 도구로 각 변경 사항이 있을 때마다 이력을 저장한다. 그 이력(commit)을 통해 특정 시점의 코드로 변경할 수도 있다. 또, 여러 명이 동시에 작업해도 충돌을 최소화 할 수 있다. 프로젝트를 원격 저장소인 github에 저장하면 어느 컴퓨터에서든 그 프로젝트를..

❤️🧡💛 2024.02.06

머신러닝 분류

머신러닝은 크게 3가지로 분류할 수 있다. 지도 학습 비지도 학습 강화 학습 그리고 딥러닝은 신경망을 베이스로 한 구조로 더 많은 학습변수를 사용할 수 있고 그 덕분에 비선형의 복잡한 문제를 다룰 수 있다. 지도학습(Supervised Learning) 지도학습은 레이블 있는 데이터로 학습하는 경우를 말한다. 예를 들어, 강아지 사진들과 강아지라는 값을 페어링한 데이터를 학습하는 것이다. 지도학습은 예측하거나 분류를 하기 위해 사용된다. 대표적인 지도학습 모델은 k NN 모델, 서포트 벡터 머신, 디시즌 트리이다. k NN 모델 학습 데이터에서 d개의 특성을 추출 한 후, d차원 공간에 위치 시킨다. 그리고 분류되지 않은 데이터가 새로 입력되면 d차원의 공간에 위치시킨 후 가까이 있는 k개의 데이터를 추..

[프로그래머스] 테이블 해시 함수 (javascript)

https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 풀기 위해서 크게 3단계 과정이 필요하다. 주어진 data 정렬하기 row_begin ~ row_end 사이 행의 튜플을 각 행의 인덱스로 나눠 그 나머지 값을 더한다. 각 행 누적값을 xor 연산으로 더한다. 첫번째 과정을 구현한 함수가 sortData이다. 문제에서 주어진 방법대로 col번째 컬럼 기준으로 오름차순하고, 만약 값이 같을 경우에는 key값인 첫번째 컬럼 기준으로 내림..

STUDY/알고리즘 2023.09.10

[프로그래머스] 당구 연습 (javascript)

https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제에서의 당구 공은 입사각과 반사각이 같다. 따라서 원쿠션 포인트 기점으로 시작 공과의 기울기와 타겟 공과의 기울기 크키는 같고 방향만 다르다. 그래서 둘 중 하나의 공의 위치를 대칭 이동하면 두 공의 거리 같과 공이 이동한 거리와 같다. function solution(m, n, startX, startY, balls) { const start = [startX,startY]; const..

STUDY/알고리즘 2023.09.10
반응형