본문 바로가기

TIL

Tistory 너무 불편해 다른 글의 종류는 모르겠는데 IT 관련 글을 쓸 때 코드블럭도 플러그인 안쓰면 안이쁘게 나오고, 코드블록 쓰고 아래에 한글 바로 쓰면 안쳐지고, 그렇다고 코드블록 플러그인이 이쁘게 나오지도 않고 조만간 velog나 medium으로 갈아타야겠다 처음엔 초대장 이라는 나름 선택된 사람들만 할 수 있다는 가치?가 있었는데 이젠 그마저도 없다 으 악 ! 더보기
Golang Gin-gonic에서의 request 파싱 Validation에 대해서 회사에서 Gin을 쓰다가 struct 단에서의 Validation을 하려는데 gin context에서 binding을 할 때 쓰는 거에 따라서 결과가 달라서 정리를 해본다. 보통 body로 들어오는 요청을 처리하는 struct는 아래와 같이 구성한다. type Bind struct { Name string `json:"name"` } 여기서 만약 해당 struct로 body 값을 파싱하려면 아래와 같이 할 수 있다. r.POST("/", func(c *gin.Context) { req := &Bind{} err := c.Bind(req) if err != nil { c.JSON(http.StatusBadRequest, err.Error()) return } c.Status(http.StatusOK) }).. 더보기
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으로 할 시 .. 더보기
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 각.. 더보기

반응형