본문 바로가기

전체 글451

리액트 useMemo 사용하기 리액트 useMemo 에 대해서 살펴본다 ko.reactjs.org/docs/hooks-reference.html#usememo Hooks API Reference – React A JavaScript library for building user interfaces ko.reactjs.org 만들어진 이유 컴포넌트 렌더링시 성능 개선을 하려고 만들어졌다. 문서에서 주의할 부분이 하나 있다. useMemo는 성능 최적화를 위해서 사용 할 수는 있지만 의미상으로 보장이 있다고 생각하지는 말라고 한다. 이 말은 내부적으로 뭔가 성능 향상을 100% 보장할 수 있는 구조는 아니라는 것인데. 그것은 다음에 더 살펴봐야 할 것 같다. 굉장히 단순한 예제를 통해서 왜 성능 개선이 되는지 살펴볼 수 있다. useMe.. 2021. 5. 6.
개발자의 이력서 작성하기 이렇게 쓰지 마세요 판교, 강남 인근의 IT 서비스 회사에 지원할때 어떻게 이력서를 쓰면 좋은지 다룹니다. 그동안 많은 서비스 기업의 서류를 통과해본 경험을 바탕으로 이력서 작성법을 알려 드리려고 합니다. 아래와 같이 하시는게 좋습니다. 1. 간단한 인적사항 (지원자에게 연락 하려면 써야하죠) 2. 왜 지원자격, 우대사항에 적합한 인물인지 기술적인 설명 (중요한 부분) 3. 다룰 수 있는 기술스택 언급 (어떤걸 주로 쓰는 사람인지 알려면) 4. 중요한 개발 경험을 간략하게 서술하기 (제일 중요한 부분) 5. 기술 블로그, 오픈소스, 커뮤니티 등 별도의 활동한 것을 기록하기 (양념) 6. 학력, 기타 등등 이력 1줄 (의미없는 부분) 조금 부족하거나 커트라인에 걸린 경우 2번을 잘 쓰셔야 합격률이 올라갑니.. 2021. 4. 26.
기술 면접에 자주 나오는 질문들 - 인덱스 이번 글부터 개발자 기술면접에 자주 나오는 질문들을 하나씩 다뤄보려고 합니다. 1. 데이터베이스 인덱스를 고르는 기준이 뭔가요? 카디널리티가 높은 순서로 고른다. 인덱스를 1개의 컬럼에만 걸어야 한다면 카디널리티가 가장 높은 것을 잡아야 한다. 카디널리티란 해당 컬럼의 중복된 수치를 나타낸다. 예를 들어서 성별, 학년은 카디널리티가 낮다. 주민등록번호, 계좌번호 이런것 들은 카디널리티가 높다. 카디널리티란 컬럼의 중복도에 관한 내용이다. 중복도가 낮으면 카디널리티가 높다. 중복도가 높으면 카디널리티가 낮다. 되도록 업데이트가 빈번하지 않은 컬럼으로 인덱스를 구성한다. where 절에서 자주 사용하는 컬럼에는 인덱스 추가를 고려한다. join시 자주 사용하는 컬럼은 인덱스로 등록한다. 단일 인덱스 여러개보.. 2021. 4. 23.
최근에 알게 된 것들 lerna / storybook / yarn, npm 차이 lerna - 만들어진 이유 - 한 프로젝트 안에서 여러개의 프로젝트를 편하게 관리하려고 만들었다. - 여러개의 프로젝트는 각각 패키지라고 부른다. lerna 써보기 mkdir lerna-test cd lerna-test npx lerna init 아래와 같이 폴더가 생긴다. packages 라고 폴더가 만들어지는데 저 안에 각각의 프로젝트들을 넣으면 된다. 예를 들어서 person 서비스, car 서비스, contents 서비스 이런식으로 만들고 개발할 수 있다. lerna.json 의 내용 - lerna의 세팅 정보가 들어있다. { "packages": [ "packages/*" ], "version": "0.0.0" } packages [ "packages/*" ] 이 부분은 패키지 안에 항목들의 .. 2021. 4. 12.
typescript 로 express, koajs 프로젝트 세팅하다 찾은 좋은 도구 ts-node 2줄 요약. ts-node aaaa.ts 를 하면 typescript 파일인데 js 로 변환 안하고 그냥 실행 할 수 있다. typescript-koa-starter 를 쓰면 koajs 프로젝트를 typescript 로 초기세팅을 편하게 할 수 있다. 예전부터 expressjs , koajs 같은 틀이 없는 프레임워크를 사용할때 일정한 틀로 개발할 수 있도록 하는 방법에 관심이 많았다. 그러다 ts-node 라는 좋은 도구를 알게 되었다. const func = () => { console.log('jeanjkdnfkoasdf') } 이렇게 작성된 ts 코드를 js 변환 없이 바로 실행 할 수 있다. 이건 마치 deno 런타임으로 nodejs 프로젝트를 실행하는 느낌이다. typescript-koa-st.. 2021. 1. 30.
프로그래머스 고득점 Kit - 이중 우선순위 큐 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합.. 2020. 11. 18.
프로그래머스 고득점 kit - 정수 삼각형 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 triangle result [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 풀이 functi.. 2020. 11. 18.
프로그래머스 고득점 Kit - 타겟넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. .. 2020. 11. 18.
Golang을 쓰면서 알게된 것들 golang golang은 stack 자료형이 없다. arraylist가 제공되지 않는다. 배열로 append 한다. append는 있지만 delete는 제공되지 않는다. rune 타입이라는게 있다. int 와 같은 형태지만 int와는 다르다. map 이 서로 같은지 비교하려면 reflect.DeepEqual(a,b)를 해야한다. golang은 관례상 error 값이 함수 리턴의 마지막 값이다. func main() (data, error) { } golang은 가변길이 파라미터를 지원한다. package main import "fmt" func varchar(txt... string) { fmt.Println(txt) } func main() { varchar("123", "234", "234") } .. 2020. 9. 30.