리액트 16의 세 번째 멋진 기능은 Error Boundaries이다. 직역하면 에러 경계이다. 이건 컴포넌트 자식의 에러를 관리할 수 있게 해 준다. 만약 포털이 에러를 만들면, 앱으로 관리할 수 있다. return types을 에러로 만들면, 동일하게 관리할 수 있다. 정상 작동할 경우에는 자식의 에러에만 한정된다. ErrorMaker 컴포넌트를 만들고 freinds에 몇 가지 이름을 넣어보자. 아래와 같이 렌더가 정상적으로 되었다. 이제 에러를 발생시켜보자. componentDidMount에서 setTimeout을 사용하여 1초 후 friends에 undefined를 할당해보자. 개발을 하다 보면 일반적이고 흔히 볼 수 있는 화면이다. 하지만 이런 화면은 사용자 입장에서는 불편하다. 에러를 잡아보자..
Spring Boot에서 기본적으로 모든 @Scheduled 작업은 Spring에 의해 생성된 Thread pool 개수는 1개이다. 하나의 Scheduled이 돌고 있으면 다 끝나야 다음 Scheduled이 실행된다. 아래 로그를 추가하여 확인이 가능하다. logger.info("Current Thread : {}", Thread.currentThread().getName()); Spring Boot에서 설정을 통해 모든 작업을 실행하기 위해 스레드 풀을 사용하도록 아래와 같이 구성할 수 있다. import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Schedul..
DTO, VO 객체 클래스를 잘 들여다보면 Serializable 인터페이스를 구현한 코드를 많이 볼 수 있다. 또는 대부분 습관적으로 작성하기도 한다. 직렬화는 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte형태로 변환하는 기술이다. 역직렬화는 직렬화된 데이터를 원래대로 변화하는 것을 의미한다. 보통 직렬화는 자바 RMI(Remote Method Invocation), 캐시(Cache), 서블릿 세션(Servlet Session)에서 사용된다. 하지만 언급한 경우가 아닌데도 사용하는 Serializable 인터페이스를 구현하는 코드를 보았을 것이다. 객체를 담을 클래스는 기본적으로 Serializable를 구현하는 것을 권장한다. 직렬화 자..
DAO(Data Access Object) 데이터베이스에 Access하는 트랜잭션 객체이다. 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용된다. 데이터를 조회하거나 조작하는 기능을 전담하도록 한다. DTO(Data Transfer Object) 계층간 데이터 교환을 위한 자바빈을 의미한다. DTO는 로직을 가지지 않는 순수 데이터 객체이고 getter, setter 메소드만 가지고 있는 클래스이다. VO(Value Object) DTO와 혼용해서 쓰이지만 차이가 있다. DTO와 동일한 개념이지만 Read only 속성을 가지고 있다. VO에는 setter가 없는 불변의 성격을 가지고 있다.
K번째수 문제는 주어진 array 배열을 commands 이차원 배열의 값을 통해 각각 min, max, index 값을 추출하여 min부터 max까지 배열 복사를 정렬을 통해 index 값의 위치를 추출하면 된다. import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int cLength = commands.length; int[] answer = new int[cLength]; for (int i=0; i
리액트 16의 두 번째 멋진 기능은 portals이다. 생각보다 유용해 보이지 않을 수 있는 데 사용하다 보면 유용함을 느낄 수 있다. 기본적으로 리액트는 div를 찾아서 마운트를 한다. 가끔은 리액트 root 밖에서 마운트를 해야 될 때가 있다 예를 들어 헤더가 root 밖에 있고 헤더의 타이틀 및 CSS를 변경하고 싶을 때 또는 다른 사이트를 로딩할 때 등이다. 이럴 경우 portals를 사용하면 된다. portals은 리액트 root 밖에서 리액트를 넣을 수 있도록 해준다. span 태그에 id를 지정해서 만들고 컴포넌트에서 엘리먼트를 리턴하는 대신 portals을 리턴하면 된다. import { createPortal } from 'react-dom'; const Message = () => 'J..
리액트 16의 멋진 기능 중 하나는 return type이다. 이전의 리액트에서는 컴포넌트 아니면 null을 리턴해야 했다. 그게 규칙이었다. string 같은 걸 return 할 수가 없었다. 하나가 아닌 두 개 이상의 리턴 하고 싶어도 이전의 리액트에서는 이렇게 작업을 하지 못했다. array로 감싸거나 span태그를 이용하여 다시 하나의 엘리먼트에 감싸줘야 했다. 불필요한 코드가 늘어났고 상당히 불편하였다. 리액트 16에서는 fragments라는 걸 활용할 수 있다. 또한 를 사용하여 대신할 수도 있다. 또한 String을 반환할 수 있다. fragments, string return type 리액트 16의 첫 번째 기능이다.
이번에는 C, C++, C#의 차이점에 대해 이야기해보자. 눈에 띄는 공통점은 "C"를 이름에 포함하고 있다. 그래서인지 각기 다른 차이점이 헷갈릴 수 있다. 우선 C 언어의 경우 1972년에 만들어졌다. 아주 오래된 언어이다. 또한 C언어는 무수히 많은 다른 언어에게 영향을 미쳤다. 그래서 C는 중요한 프로그래밍 언어로 평가받고 있다. C가 만들어진 1970년대에는 컴퓨터가 지금처럼 빠르지 않았다. 그런 이유로 C는 리소스가 많이 없는 기계에서 작동할 때 유용하다. 그리고 하드웨어와 매우 밀접하게 작동한다. 예를 들면 화성탐사선에서 사진을 찍고 NASA로 전송하는 역할을 하는데 250만 줄의 C언어의 코딩으로 작성되었다고 한다. 왜냐하면 화성탐사선에는 프로세싱 파워도 약하고, 가능한 적게 공간을 쓰면서..
- spring
- effective java
- 이직
- Java
- Maven
- 제주도 여행
- 개발환경
- 프로그래머
- 리눅스 명령어
- sort algorithm
- 회고
- 자바
- 성능분석
- 제주도 3박4일 일정
- 경력관리
- 자바스크립트
- 소프트웨어공학
- 리액트 16
- 프로그래머스
- javascript
- Collection
- Eclipse
- 오라클 내장 함수
- Linux 명령어
- 정렬 알고리즘
- SQL
- Tomcat
- 리액트
- React
- 오라클
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |