전체 글

Backend Engineer.
INFRA/LINUX

깔끔하게 프로세스 죽이기

$ pgrep -f {프로세스명} | xargs kill pgrep -f node | xargs kill을 사용하면 구동 중인 node process를 모두 죽일 수 있다. 특정 포트를 확인해서 죽이는 경우는 lsof나 netstat으로 확인해서 pid 구하는 방법이 최선인 듯 하다. $ sudo netstat -tlnp | grep :3000 tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 20502/node $ sudo lsof -n -i :3000 | grep LISTEN node 20502 octavesop 31u IPv4 105296 0t0 TCP *:3000 (LISTEN) $ kill -9 20502

INFRA/LINUX

man 명령어

$ man ls 존재하지 않는 항목에 대해서는 다음과 같이 출력된다.

THOUGHT

좋은 개발자와 좋은 직장인은 크게 다르지 않다는 생각

최근에 같이 일하기 싫지 않은 개발자라는 글을 봤다. https://brunch.co.kr/@kaily/40 같이 일하고 싶지 않은 개발자 특앞으로도 쭉- 만나고 싶지 않은 개발자의 유형을 정의하고 경험을 공유한다 | 경력이 길어질수록 많은 협업자들을 만나는데, 그중 가장 많이 만나고 많은 커뮤니케이션을 하는 게 개발자다. 주brunch.co.kr 글이 올라오고 한바탕 떠들썩했는데, 개인적으로는 뭐 그러려니 했다...구현이 불가능한데 로직 정의도 정확히 못한다면서 디자이너나 기획자의 역량이 부족하다며 탓을 하거나은근슬쩍 개발이 가장 전문적인 직무인 것처럼 행동하는 안하무인 자아과다 개발자들이 한둘이 아니었다.그러니 기획자라고 못할 일이 뭐 있겠는가...(동의한다는 뜻은 아님)..

CONFERENCE

문서화에서 놓쳤던 몇 가지 부분들

개요 최근 도커 배포 가이드 문서를 작업할 일이 있었다(기회가 된다면 개인 환경에서 해보고 블로그에 올려도 좋을 듯 하다). 작업을 마친 후 같은 팀 동료 한 분께 리뷰를 부탁드렸는데 스스로 작성했으면서도 깜짝 놀란 요소가 몇 가지 있었다. 문제 1. 용어를 혼용한다 생각보다 표현 과정에서 여러 단어를 쓰고 있었다. 가령 도커 허브 같은 단어를 저장소 혹은 레포지토리라고 쓰는 등이다. 아마도 헬름이나 깃허브 때문에 저장소나 레포지토리라는 단어가 익숙해서 무의식적으로 함께 쓴 듯 했다. 읽는 입장에서는 확실히 혼란스러울 법한 표현이었다. 만일 해당 환경에 어느 정도 익숙하다면 큰 문제가 없겠으나, 문서화는 당장 인수인계서로 써도 손색이 없을 정도로 작성해야 한다고 생각하는 편이었는데도 스스로 단어들을 섞어..

SERVER

AWS S3 버킷 권한 목록

{ "Version": "2012-10-17", "Id": "Policy1680360081176", "Statement": [ { "Sid": "Stmt1680360078784", "Effect": "Allow", "Principal": "*", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:GetObjectAcl" ], "Resource": "arn:aws:s3:::{버킷명}/*" } ] }

DEVELOPMENT/JAVASCRIPT

purify-ts / Function

always 반환 타입: a -> b -> a 언제나 동일한 값을 반환한다. const라고 다른 언어에서 알려져 있다. [1,2,3,4].map(always(0)) => [0,0,0,0] curry 반환 타입: (fn: (...args: TArgs) => TReturn): CurriedFn 여러 인자를 받는 함수의 커리 버전이다. 타입스크립트에서 타입 유추가 가능하다. const sum3 = ( x: number, y: number, z: number ) => x + y + z const curriedSum3 = curry(sum3) === curriedSum3(1) // (y: number, z: number) => number curriedSum3(1, 2) // (z: number) => numbe..

DEVELOPMENT/JAVASCRIPT

purify-ts / Either

참고 문서 --- Either는 Left와 Right 두 방향으로 구성된 데이터 타입이다. Maybe와 유사하나 누락된 값에 대한 정보 저장이 가능하다는 특징이 있다(가령 에러 메시지 같은). "Right is right" 라는 컨벤션이 있어 대개 성공값은 Right에, 실패값은 Left에 저장한다. 오른쪽 편향적이므로 map, chain과 유사한 메소드들은 Right에서 동작한다. Left 일반적으로 동작에 대한 실패를 나타내는 정보를 담당한다.// Inferred type is randomEither: () => Either | Either const randomEither = () => Math.random() > 0.5 ? Right(1) : Left('Error')Left(&#39..

DEVELOPMENT/JAVASCRIPT

purify-ts / Maybe

기초 Maybe는 데이터 타입으로 함수의 근본적 오류와 결측값 표시(???)에 사용된다. 값일 수도(Just) 있고 아무것도 아닐 수도(Nothing) 있다. Just는 현재의 값을 래핑하는 객체이다. Nothing은 부재의 값을 의미한다. 단순히 null이라고 해석해도 좋다. 두 값은 모두 null 체크가 되지 않은 옵셔널한 값이나 익셉션 핸들링을 다루기 쉽게 돕는다. 사용하지 않은 경우 const port = parseInt(getConfig()?.port ?? '8080'사용한 경우 const port = getConfig() .chain(x => x.port) .map(parseInt) .orDefault(8080) 메소드의 종류 of 타입: Maybe Just 타입으로 래핑된 값을..

정민아
DEV MINA