본문 바로가기

전체 글

Golang 빈 Array Json으로 output 시 null(nil)이 되는 현상 Golang으로 API를 개발하다가 GetList API에서 리스트가 존재하지 않을 경우 null로 return이 되는 현상이 있었다. 일단 걍 신경쓰지 않고 개발하다가 프론트와 연동 시 프론트에서 Array 형태로 올 때도 있고 null로 올 경우에는 또 따로 핸들링 해줘야 해서 번거로웠다. 아무래도 정상적인 API라면 빈 Array라면 null로 주는게 아니고 [] 로 주는 형태가 맞을거 같아서 찾아보다가 문제를 발견했다. 기존 flow는 var itemList []Item for _, item := range targetItemList { // blah blah } 이렇게 했었는데 itemList가 값을 넣기 전에는 실제 메모리 상에 할당되지 않고 points가 nil로 되어서 json으로 할 시 .. 더보기
Github PR 작업중이라고 표시하기 오늘 일하다가 오후에 PR을 날렸는데 아직 테스트가 덜 끝나서 PR만 올리고 리뷰해주지 말라고 했었다. 아직까진 매번 이렇게 하거나 아니면 태그를 달아서 작업중을 표시하는 방법이 있었는데 방금 보니 굉 장 한 기능이 생긴 것 같다. (언제 생긴지는 모르겠음) 바로 ! PR을 올리면 여기 이렇게 리뷰어를 지정할 수 있는 란이 있는데 여기에 Still in progress? Convert to draft 라고 생긴것이다! 누르게 되면 이렇게 해당 PR을 draft로 바꿀건지 나오고 버튼을 누르면 이렇게 Draft 라고 표시가 되면서 review를 받을 준비가 되었을 때에 다시 원래대로 전환하는 기능이 생겼다 ! ! ! ! 너 무 조 아 :) 알고보니 19년도 2월부터 생긴 기능이네 ㄷ... https://g.. 더보기
병특중인 개발자의 전직기 이번에 다니던 회사에서 이직(산업기능요원이니까 전직)을 하기로 하였고, 약 한 달 반 정도의 시간 동안 이직을 위해 포폴을 급하게나마 쓰고 이력서도 다듬고 지원을 하고 면접을 보러 다녔다. 이 글은 이번 이직을 하면서 느꼈던 점들과 앞으로 이직을 하게 될 사회초년생이자 주니어 개발자들을 위해, 그리고 몇 년 뒤 또 이직을 하게 될지 모르는 나를 위해 작성한다. - 포트폴리오 없이 지원 먼저 이직을 결심하고 이직하고 싶은 회사들을 찾아보았다. 현재 산업기능요원으로 복무 중이기 때문에 병역특례 업체만 대상으로 찾았다. 회사들은 전부 로켓펀치와 원티드를 통해 찾았으며, 지원도 마찬가지로 해당 사이트를 통해 하였다. 지원할 회사들 10~15군데 정도를 정한 다음 지원을 해보려고 했다. 하지만 막상 지원을 하려니.. 더보기
React v16 lifecycle - Updating 이전 글 React v16 lifecycle - Mounting과 이어집니다. (꼭 봐야 할 필요가 있을 정도로 이어지지는 없음) 이번에는 React v16 lifecycle 에서 Updating에 대해 알아봅시다. Updating 에는 5개의 lifecycle이 있습니다. - static getDerivedStateFromProps() - 마찬가지로 다루지 않습니다. - shouldComponentUpdate() - render() - 이전 글에 포함되어 있습니다. - getSnapshotBeforeUpdate() - componentDidUpdate() shouldComponentUpdate(nextProps, nextState) 매번 update 되기 전 실행됩니다. (단, forceUpdate, .. 더보기
React v16 lifecycle - Mounting 해당 글은 리액트 공식 문서를 기반으로 작성하였고 React 버전 16을 기준으로 합니다. 리액트 16 버전의 lifecycle은 크게 4가지로 나뉩니다. - Mounting - Updating - Unmounting - Error Handling 전부 다 쓰면 길고 지루해질까 봐 이 글에서는 Mounting에 관련된 method만 알아봅니다. Mounting은 DOM에 컴포넌트가 만들어질 때의 과정입니다. Mounting에는 4개의 method가 있습니다. - constructor() - static getDerivedStateFromProps() - 이 글에선 다루지 않습니다. - render() - componentDidMount() constructor() 마운팅 되기 전에 실행됩니다. 해당 me.. 더보기
React 부모 컴포넌트의 props가 같은 값으로 set 했을 시 자식 컴포넌트에서의 rendering에 대해서 제목이 길다. 간단하게 상황 가정을 해보면 부모 컴포넌트와 자식 컴포넌트가 있다. 부모 컴포넌트에서는 parentValue라는 state가 있고 자식 컴포넌트는 해당 값을 props로 받아서 사용한다. 이때 부모 컴포넌트에서 parentValue가 같은 값으로 setState 했을 시 자식 컴포넌트에서는 무슨 일이 일어날까? 먼저 결론부터 얘기하면 rendering이 일어난다. 아래의 동영상을 보자 해당 영상에서 parentValue에 a를 덧붙이는 버튼과 같은 값으로 setState를 하는 버튼이 있다. a를 덧붙이는 버튼은 당연히 값이 바뀌니 update가 일어난다. 그런데 같은 값으로 바꾸는 버튼을 눌렀을 때에도 update가 일어나는 것을 볼 수 있다. (update가 일어나는 여부는 React .. 더보기
JS Prototype? JS에서 Prototype이라는 것은 많이 봤고 실제로 사용해보았다. 근데 이게 무엇이냐 라고 질문을 받았을 때 딱 정의해서 말하지를 못했다. 한번 이론적으로 이해를 해보자. 먼저 JS는 class라는 개념이 없고 prototype 기반의 언어이다. prototype은 모든 객체에 존재하며 기본적으로 private 속성을 가지고 있다. 또한 prototype은 자신의 prototype이 되는 객체를 가리킨다 그러니까 결국 Object -> prototype -> prototype -> prototype... 의 반복이다. 하지만 이 prototype에도 종착지는 있다. 바로 prototype의 값이 null 되는 경우이다. (이것이 prototype 체인의 종점 역할을 한다.) 이해하기 쉽게 실제로 해보.. 더보기
Flux Pattern? Flux는 Facebook에서 클라이언트-사이드 웹 애플리케이션을 만들기 위해 사용하는 애플리케이션 아키텍처다. (flux 공식 문서 첫 번째 문장) Flux는 MVC Pattern의 문제를 보완하고 좀 더 간단한 흐름으로 짜기 위해 만들어진 것 같다. 여기서 MVC Pattern의 문제가 무엇이냐면 대규모 애플리케이션을 제작할 때 너무 복잡해져 디버깅이나 신입이 코드를 이해할 때 힘들다는 문제이다. (나는 아직 경험해 본적이 없기에 해당 문제점은 Flux 공식 문서에서 가져옴) 이러한 문제를 해결하기 위해 Flux는 모든 데이터 흐름이 단방향으로 흘러가는 비교적 간단한 구조를 이루고 있다. Flux에서 데이터는 흐름은 다음과 같다. Action -> Dispatcher -> Store -> View 각.. 더보기

반응형