성능 최적화를 위해 사용하는 useMemo() 함수를 사용해보자.useMemo의 첫번째 파라미터에는 어떻게 연산할지 정의하는 함수를 넣어주면 되고, 두번째 파라미터에는 deps배열을 넣어주면 되는데, 이 배열 안에 넣은 내용이 바뀌면, 우리가 등록한 함수를 호출해서 값
함수형 컴포넌트는 렌더링 된 값을 고정시킨다.이게 무슨 소리인가? 아래의 예제를 보면서 확인해보자.위는 함수형 컴포넌트이며 아래는 클래스형 컴포넌트이다.이 두개는 겉으로 보기에는 완전히 똑같아 보인다. 하지만 실행을 시켜보면 완전히 다른 것 알고 있는가?위 그림을 보면
이 두가지 함수에 대해서 고찰을 가져보자. 일반적으로 두 훅(Hook)을 많이 볼 수 있는데, 컴포넌트에 무언가 함수를 전달할 때마다 useCallback()함수를 호출 하는 것 같지만, 렌더링 시간에 문제를 일으킬 수 있다.useCallback()함수를 이용하면 일반
React에서는 일반적으로 DOM 요소에 id를 달지 않는다.id를 달아버리면 컴포넌트를 여러번 사용할때 id가 겹치는 문제가 발생할 수 있다.하지만, React에서는 항상 답을 찾습니다. DOM 내부에 이름을 별개로 달아주는 방법이 있고 그게 ref개념입니다.ref를
React 에서 사용하는 JSX는 DOM요소를 단순히 렌더링 하는 긴으 외에도 자바스크립트 표현식을 쓸 수 있다. 아래의 예시를 보자let 은 동적인 값을 담을 수 있는 변수를 선언할 때 사용하는 키워드입니다. const는 한번 지정하고 나면 변경이 불가능한 상수를 선
리액트 앱을 구성하는 가장 작은 블록들을 말합니다. Virtual DOM에 존재하는 Element를 말하며, 화면에 표시되는 자바스크립트 내용들을 담고 있다. (DOM Element는 우리가 화면에서 볼때의 Element를 말한다.)코드 내에서는 일반적으로 자바스크립트
react공부를 하기 전에 기초적인 개념만 몇가지 정리하고 가자.SPASingle Page Application의 약자로 동적인 콘텐츠를 넣는 개념이다.위 그림을 보면 쉽게 이해할 수 있는데, 한개 페이지에서 일부분만 필요에 의해서 content를 로딩하는 방식으로
자바스크립트로 WebRTC를 구성하기 위해서는 우선, 우리는 이 컴퓨터들이 빠르게 통신을 할 수 있도록, socket 통신을 하도록 만들어줘야 한다.물론, javascript에서도 기본적으로 websocket 기능을 제공하고 socket 통신을 하도록 만들어줄 수 있다
WebRTC(Web Real-Time Communications)란, 웹 어플리케이션 및 사이트들이 별도의 소프트웨어 없이 음성, 영상 미디어 혹은 텍스트, 파일 같은 데이터를 브라우져끼리 주고 받을 수 있게 만든 기술이다. WebRTC로 구성된 프로그램들은 별도의 플
지난 포스팅때 예고했던 것처럼 오늘은 Handler를 구현해볼 예정이다.우선 main.go 부터 만들고 시작한다. 앞선 포스팅에서 했던 것과 같이, NewHandler()를 만들어주고, 서버 세팅부터 한다.그리고, Logger라는 이름의 log를 찍어주는 역할의 Dec
Decorator란? 프로그래밍의 한 패턴인데, Original한 기능이 있는것에 부가적으로 붙이는 것을 말한다. 좀더 자세히 설명해보자면, 어떤 데이터를 보낸다고 가정해보자. Data를 보낼때, 압축하고/다른사람이 못보게 암호화를 하고/추척가능하도록 log를 달고/
GO 언어는 객체지향 프로그래밍(OOP)을 고유의 방식으로 지원하는데, 타 언어와는 달리, GO 언어에서는 struct만 필드를 가지고, 메서드는 별도로 분리되어 정의된다.Go의 메서드는 특별한 형태의 func 함수이다.go는 func 키워드와 함수명 사이에 '그 함수
오늘은 지난 포스팅에 이어서 RESTful 로 구성하는 것을 마무리 해볼 예정이다.이제 남은 기능은 Delete랑, 전체 list를 가져오는 거, 데이터 수정(update)하는 기능만 구현하면 끝난다.지난번에 작성하던 myapp.go에서 추가된 func이다. delet
RESTful API가 무엇인지부터 명확하게 알고 넘어가야 한다. 포스팅의 가장 아래에 참조한 링크를 남겨두었다.REST란 "Representational State Transfer"의 약자이다. 어떤 자원에 대한 CRUD(create, read, update, del
지난 번 포스팅에서는 기초 web server를 구성했고, Json 방식으로 데이터를 주고받는 것까지 구현했다. 이번에는 file을 웹을 통해서 실제로 서버에 업로드 할 수 있는 웹 페이지와 서버를 구성해보고자 한다.기초적인 기능이 들어간 코드는 아래와 같다.이 코드를
web 서버를 만들기에 앞서서 간단하게 어떻게 통신이 일어나는지 정리하면,client가 웹을 방문하고자 하면 통신을 하게 된다.HTTP(Hyper Text Transfer Protocol)의 약자이다.우리가 만일 never 페이지를 방문하려고 하면, DNS를 통해서 I
map의 경우 그냥 단순히 아래의 코드처럼 사용하면 에러가 발생한다.map은 초기화가 필요하기 때문에 에러가 발생한다.위와 같이 {}를 붙여서 초기화된 map을 변수로 할당하는 방법과, make()함수(map을 만들어주는 함수)를 사용해주는 방법이 있다.매우 중요한 개
go의 syntax 정리go는 모든 loop를 for 하나로 한다.for에서는 C에서의 문법과 동일하게 사용하는 방법이 있고, range를 사용하는 방법이 있다. 아래의 코드에 간단한 예시로 덧셈을 나타냈다.주석처리되어 있는 부분이 for문에서 range를 활용하는 방
Project3를 정리하면서, 여태 정리했던 TIL들을 정리했다.우선 PintOS 프로젝트 3를 진행하면서 명확하게 해야 하는 부분들을 먼저 정리하겠다.PintOS에서 어떻게 가상메모리를 관리하는지에 대해서 정리해본다.핀토스는 가상메모리 page들을 pml4로 관리한다
프로젝트 마감일이 다 되었는데, Memory_Mapped_File을 진행하면서, Thread 관련 테스트가 fail로 바뀐 것을 알았다.fail이 뜨는 테스트를 통과에만 집중하다가 보니 아래쪽에 Thread\_관련 테스트 fail이 뜨는 것을 늦게 발견했다.그래서 다시