희토류는 철, 구리, 아연과 같이 특정 금속이나 광물의 이름이 아니라 뜻 그대로 희귀한 광물의 무리를 의미한다.
란탄, 세륨, 프라세오디뮴, 네오디뮴, 프로메튬, 사마륨, 유로퓸, 가돌리늄, 테르븀, 디스프로슘, 홀뮴, 에르븀, 툴륨, 이테르븀, 루테튬, 스칸듐, 이트륨 이렇게 총 15가지가 희토류라고 불리는 광물이다.
그렇다면 희귀 금속은 무엇일까?
희귀 금속은 희토류를 비롯해 게르마늄, 텅스텐, 안티몬, 니오븀, 베릴륨, 갈륨, 코발트, 바나듐, 탄탈 등 미국 지질 조사국과 유럽연합 위원회에서 지정한 약 30종의 금속이다.
희귀 금속은 흔한 금속과 결합해 있거나 또는 지표면에 형성되어 있으면서 매우 미미한 비중을 차지한다.
예를 들면 1톤의 바위에서 겨우 1g을 추출할 수 있거나 또는 더 적은 비중으로 추출할 수 있을 정도로 양이 매우 미미하다.
그렇다면 왜 희귀 금속이 ‘지정학 전쟁의 씨앗’이라고 불릴 만큼 중요한 자원이 되었을까?
희토류는 종류에 따라 화학적, 광학적 특성을 가지고 있으며 촉매 역할도 하므로 많은 기술에서 필수 원료로 사용된다.
희귀 금속은 엔진, 휴대폰, 자동차 등에 들어가는 모터와 전자제품에 들어가는 반도체 뿐만 아니라 렌즈, 조명, 유리, 레이저, 디스플레이 등 많은 제품 원료로 사용되어 전기, 전자, 위성, 통신, 항공, 운송, 에너지 등 거의 모든 영역에서 매우 광범위하게 사용되고 있다.
아이폰 하나에 들어가는 희귀 금속의 종류도 열 몇가지나 된다. 물론 양은 아주 소량이겠지만.
– 희귀 금속은 어디서?
그렇다면 현재 이 희귀 금속을 생산하는 나라는 어디일까?
미국, 브라질, 러시아, 남아프리카, 콩고, 프랑스 등이 있지만 대부분의 희귀 금속은 중국에서 생산된다.
물론 미국이나 다른 나라에서도 과거에는 희토류나 다른 희귀 금속을 생산했고 현재도 채굴은 가능하지만 현재는 중국산과 비교하면 가격 경쟁력이 떨어지고 사업성이 없어 대부분 폐광을 한 상황이다.
게다가 점점 더 많은 희귀 금속이 필요해지는 기업들은 희귀 금속을 찾아 중국 국내로 공장을 이전하게 되다보니 여러 가지 문제도 발생하는 상황이다.
한 때는 석유가 국력이자 무기가 된 적이 있었던 것처럼 이제는 희귀 금속이 무기가 되고 원료 공급국이 한 나라의 제조와 경제를 좌지우지할 수 있는 시대가 되어가고 있다.
경제 논리는 구매자가 판매자보다 우위에 있지만 이제는 구매자가 오히려 약자가 되는 상황이 도래했다고 볼 수도 있을 것 같다.
따라서 안정적인 제조업을 위해 자국 생산이 가능한 원료는 국가적인 차원에서 지원을 통해 직접 생산하여 공급망의 안전을 도모하는 것이 좋다는 것이 작가의 생각이다.
자원이 아닌 부지런함으로 먹고 사는 한국도 제조업이 많다 보니 희귀 금속의 무기화는 다른 나라의 이야기가 아닐 것 같다.
수출 규제나 요소수 대란 등을 통해 경험한 것처럼 공급의 위기에 대처하기 위해 국가적인 차원에서 전략 자원에 큰 관심을 두고 준비를 해야 할 것이다.
이 책은 손에 잡히는 경제의 한 코너에서 추천한 책으로 솔직히 말하면 희귀 금속 관련 주식을 공부하기 위해 접하게 되었다. 원료 패권국을 꿈꾸는 나라의 ‘큰 그림’도 대담하지만 우리도 미래를 준비하기 위해 큰 그림의 스케치를 어서 시작해야 할 것 같다.
변경이 하나라면 리렌더링이 한번만 발생하지만 수십 개, 수백 개의 값이 계속 변경된다면 리액트는 매번 렌더링만 하다가 생을 마감하고 말 것입니다. 속도는 말할 것도 없구요.
따라서 변경된 값들을 모아 한번에 업데이트를 진행하여 렌더링을 줄이고자 배치(Batch) 기능을 사용해 비동기로 작동한다고 볼 수 있습니다.
참고로 배치 업데이트는 16ms 주기라고 합니다!
18 버전에서 추가될 자동배치(Automatic Batching)는 기존에 이벤트 핸들러에서만 실행되던 배치가 이제는 setTimeout, Promise 등의 이벤트에서도 동작될 예정이며, flushSync() 등을 사용해 예외를 둘 수도 있다고 하여 많은 기대를 받고 있는 것 같아 미리 알아두면 좋을 것 같습니다.
커링을 사용하지 않아도 원하는 기능을 대부분 구현할 수 있지만 재사용성이나 가독성에 따른 생산성 향상을 위해 커링을 사용하면 좋은 효과를 기대할 수 있습니다. 커링을 직접 구현하지 않더라도 커링의 개념과 사용법에 대해 알아두면 다른 사람의 코드를 읽거나 로직을 이해하는데 큰 도움이 될 것이라 생각합니다.
위와 같이 각각의 컴포넌트는 [ 마운팅 -> 업데이트(반복) -> 언마운팅 ]의 라이프사이클을 갖습니다.
이전에는 직관적인 이름을 갖는 다양한 메소드(componentWillMount, componentWillReceiveProps, shouldComponentUpdate, componentWillUpdate)를 통해 이벤트 발생 시점마다 세세한 조작이 가능했으나 현재는 버그나 안전성의 이유로 점점 더 단순해지고 있습니다.
위 기능을 모두 대체하는 훅(Hook)이 너무 편해서 클래스형 컴포넌트를 반드시 사용해야 하는 상황이 아니라면 함수형 컴포넌트와 함께 useEffect를 사용하는 방법이 권장되고 있습니다.
라이프사이클 별로 메소드를 사용하는 방법은 다음과 같습니다.
class TestList extends React.Component {
constructor(props) {
super(props);
this.state = {
counter:0
}
}
// 마운팅 직후 실행
// 마운팅 전 실행은 constructor() 사용
componentDidMount(){
console.log('component Mounted');
}
// 업데이트 후 이전 데이터를 파라미터로 가져옴
componentDidUpdate(prevProps) {
if(prevProps !== this.props) {
this.setState({counter:++this.state.counter})
}
}
// 언마운팅 직전 실행
componentWillUnmount(){
console.log('component Unmounted');
}
render() {
return (
<div>{this.state.counter}</div>
);
}
}
마운팅 이벤트는 실제 DOM에 컴포넌트를 추가하는 이벤트입니다.
마운팅 이벤트는 다른 프레임워크나 라이브러리 또는 데이터와 연결하는 작업에 적절합니다.
업데이트 이벤트는 컴포넌트의 업데이트와 관련이 있으며, props, state 등의 변경이 있을 때 렌더링 관련한 작업을 설정합니다.
언마운팅은 DOM에서 요소를 분리하거나 제거하는 이벤트입니다.
언마운팅 이벤트는 타이머 제거, 요소 제거, 이벤트 제거 등 설정한 요소의 정리, 제거에 사용합니다.
2. 함수형 컴포넌트와 useEffect(Hook)
리액트 16.8부터 추가된 훅(Hook)은 클래스를 사용하지 않아도 state 또는 리액트의 여러 기능을 편하게 사용하도록 해주는 기능입니다.