ML study Week 01

Before

이 포스트는 다음의 강의를 듣고 개인적으로 공부하면서 요약한 부분이다. https://hunkim.github.io/ml/

call-by-value, call-by-reference, call-by-name

함수 호출

코딩을 하다보면 이래저래 함수를 호출하기 마련이다.
이 함수는 보통 argument라 불리는(경우에 따라서는 parameter라 불리는)입력 값들을 갖는다.
이때 함수에 입력 값을 넘겨주는 방법으로 보통 call-by-value, call-by-reference를 배웠다.
그리고 우리는 이미 변수를 선언하고 값을 할당하면 heap 영역에 해당 변수를 위한 메모리 공간이 생기며 그곳에 값이 저장되는 것을 알고 있다.

counter 구현시 동시 update 이슈

multi-thread GORM의 동시 update

얼마전 회사에서 특정 테이블의 row들에 대한 update구문에 대한 문제가 발생하였다.
특정 로직A는 특정 테이블의 하나의 row에 대한 카운터를 수행한다.
기존에는 이 로직을 하나의 인스턴스에서 하나의 쓰레드로만 실행하여 문제가 되지 않았다.
퍼포먼스 향상을 위해 이것에 멀티 쓰레드를 적용하면서 문제가 발생하였다.

Parallel(병렬) vs Concurrency(동시)

Parallel vs Concurrency

Parallel(병렬)과 Concurrency(동시)의 개념에 대해 질문을 받았는데 이에 알지 못해 이번에 공부하여 정리한다.
여태까지는 위 두 단어를 동일한 의미로 사용을 해왔는데 이게 반은 맞고? 반은 틀렸었다.
동일 task를 Parallel로 구현하거나 Concurrency로 구현했을때 밖에서 바라보면 둘 다 여러개를 동시에 처리하는 것처럼 보이기에 반은 맞다고 말하였다.
하지만 내부는 다르다.

카프카 사용시 주의사항

카프카 사용시 주의 사항

현재 개발에서 여러가지 데이터 전송을 위해 카프카를 사용하고 있다.
카프카를 사용하면서 겪은(주의하지 못해) 문제를 이야기 하려 한다.

find anagram(애너그램 찾기)

애너그램 찾기

얼마전에 풀어본 알고리즘 문제이다.
문제는 다음과 같다.
영어 문자열이 있을때 이 단어의 알파벳들의 위치를 바꾼 새로운 문자열은 원래 문자열의 애너그램이다.
예를 들어 abef라는 문자열이 있을때 feab는 abef의 애너그램이다.
문자열 a와 문자열 b가 주어졌을때 b에 속한 일부 문자열은 a의 애너그램이다.
이때 a의 애너그램이 될 수 있는 b 문자열의 그 일부 문자열의 index를 구하는 것이다. index는 0부터 시작한다.
주어진 문자열은 ascii코드로 구성된다.

ip address

IP

각각의 host들을 구분하기 위한 주소로 logical address이다.
physical address로는 mac address가 있다.
일반적으로 IPv4(4byte)를 사용한다. ‘.’ 세개로 구분된 숫자 4 덩어리로 구성된다.
각각은 8bit(1byte)로 이루어지므로 최소 0부터 2^8 - 1 까지 표현된다.
즉 각 덩어리마다 0 ~ 255의 범위를 갖는다. ex) 255.255.255.255

kafka rolling upgrade 0.9 to 0.10.2

Kafka Upgrade

reactor-kafka를 사용하기 위해 문서를 보던 중 카프카 0.10 이상만 지원된다고 하여 기존의 0.9.0.1버젼의 카프카를 업그레이드 하기로 하였다.

rx.js with node.js - 2

rx.js request callback hell 탈출하기

이 문서는 @staltz의 rx.js소개 gist 를 참고하여 작성되었다.
이전 글에 이어서 진행한다.
이전 글에서는 request를 보내는 코드를 보았다. 다만 코드에 불필요한 callback depth가 생기어 가독성을 해치는 코드가 되었다.
이번에는 간단한 리퀘스트를 보내는 콜백 헬이 줄어든 코드를 만든다.

rx.js with node.js - 1

Rx.js With node.js

이 문서는 @staltz의 rx.js소개 gist 를 참고하여 작성되었다.
rx.js란 무엇인가와 이를 node.js 코드를 이용하여 rx.js에 대한 간단한 예제를 쓴 글이다.