[React] 리액트 면접 질문 (기초 개념)
2022. 3. 8. 21:29
dev-log/Front-End
질문 출처: https://intellipaat.com/blog/interview-question/react-interview-questions/ 1. DOM과 가상 DOM(Virtual DOM)의 차이 (답변 참고: https://velopert.com/3236) 가상 DOM을 이용하면 실제 DOM에 변화를 바로 적용하는 것보다 전체적인 프로세스를 효율적으로 수행할 수 있다. "효율적이다" = 전체적인 프로세스에 드는 비용이 비교적 적다. 속도 차원의 문제라기 보다는, 연산 횟수 차원의 문제라고 할 수 있다. 우선 각각의 DOM 조작은 레이아웃 변화, 트리 변화 및 렌더링을 일으킨다. 가상 DOM을 이용하지 않으면 변화가 있을 때마다 DOM 조작이 일어나고 이에 대한 연산이 수행되며 렌더링되기 때문에 ..
22.02.21
2022. 2. 21. 00:27
끄적끄적/일상
평균적으로 매주 토요일마다 일간 방문수가 한 주 중 가장 낮다. 일요일엔 방문수가 그보다는 좀 더 높다. 아마 다들 출근하기 전 미리 예열(?)을 하는 거 같다. 인기글을 보면 확실히 몇 달 전보다 Next.js에 대한 관심이 많아진 것 같다. Discord 봇 만들기 포스팅도 꾸준히 조회되고 있다. 사실 Teammy는 작년 봄에 세상에 나왔었으나 팀짜기 기능에 버그가 있어서 바로 은퇴시켰다. ㅎ (버그땜에 제대로 써먹지도 못하는데 헤로쿠에 매달 $7씩 납부해야 하는 게 절대 아까워서 그랬던 건 절대절대 아니었다!) 포스팅 보시는 분들을 위해서라도 팀짜기 로직도 다시 짜고 버그도 고쳐서 재배포해야 하는데 우선순위가 자꾸 다른 것들에 밀린다. ㅋㅋ 근데 배포 자체에 대한 포스팅은 다른 블로그들에도 많이 있..
[숫자 맞히기 게임 만들기] 난수와 사용자 입력 비교하기
2022. 2. 15. 23:13
dev-log/Rust
이전 시간에 rand 크레이트를 이용하여 생성한 난수와, 사용자가 입력한 값을 비교하고 비교 결과에 대해 출력하는 코드를 작성해보자. 먼저, 이전까지 작성해둔 코드에 표준 라이브러리로부터 std::cmp::Ordering 타입을 가져오고, match 표현식을 추가해준다. use rand::Rng; use std::cmp::Ordering; use std::io; fn main() { println!("숫자를 맞혀봅시다!"); let secret_number = rand::thread_rng().gen_range(1..101); println!("사용자가 맞혀야 할 숫자: {}", secret_number); // TODO: 테스트 후 제거할 코드 println!("정답이라고 생각하는 숫자를 입력하세요."..
[숫자 맞히기 게임 만들기] 난수 만들기
2022. 2. 5. 15:09
dev-log/Rust
숫자 맞히기 게임의 규칙은 다음과 같다. 프로그램이 1부터 100 사이의 임의의 숫자를 생성하면 플레이어는 본인이 생각하는 정답을 입력한다. 입력에 대한 처리를 위한 코드를 저번 시간에 작성했으니 이번 시간에는 임의의 숫자를 생성하는 코드를 작성해보자. 2022.02.01 - [dev-log/Rust] - [숫자 맞히기 게임 만들기] 사용자의 입력을 받고 처리하기 [숫자 맞히기 게임 만들기] 사용자의 입력을 받고 처리하기 코드 작성하기 일반적인 개념을 파악하기 위해 문서 2장의 안내에 따라 간단한 숫자 맞히기 게임을 만들어 볼 예정이다. 숫자 맞히기 게임의 동작 원리는 다음과 같다. 1~100 사이의 임의의 정수 ahnanne.tistory.com 크레이트(crate) 추가하기 러스트 표준 라이브러리에서..
[숫자 맞히기 게임 만들기] 사용자의 입력을 받고 처리하기
2022. 2. 1. 17:54
dev-log/Rust
코드 작성하기 일반적인 개념을 파악하기 위해 문서 2장의 안내에 따라 간단한 숫자 맞히기 게임을 만들어 볼 예정이다. 숫자 맞히기 게임의 동작 원리는 다음과 같다. 1~100 사이의 임의의 정수를 생성한다. 플레이어에게 이 값이 무엇일지 예측해보라고 하고 그 예측값을 입력 받는다. 플레이어에게 입력 받은 예측값과 기준값(생성된 난수)을 비교하여, 입력값이 기준값보다 큰지 작은지를 알려준다. 예측값과 기준값이 일치하면 프로그램은 축하 메시지를 출력하고 종료한다. 우선 cargo를 이용하여 새 프로젝트를 생성하고, 해당 디렉터리로 이동한다. $ cargo new guessing_game && cd guessing_game 난수를 생성하는 로직을 작성하기 전에, 플레이어에게 입력할 값을 묻고 이 입력값을 처..
Cargo로 프로젝트 생성하기
2022. 1. 30. 23:24
dev-log/Rust
Cargo(카고)란? 러스트의 빌드 시스템이자 패키지 관리자 코드의 빌드 또는 dependencies(코드가 의존하는 라이브러리)의 다운로드/빌드 등 다양한 작업을 대신 처리해준다. rustup을 통해 러스트를 설치하면 cargo도 함께 설치되는데, 아래 명령어를 통해 cargo가 정상적으로 설치되어있는지 확인해볼 수 있다. $ cargo --version 운영체제 상관없이 다음의 cargo 명령어를 통해 프로젝트를 생성할 수 있다. $ cargo new {생성할 프로젝트 이름} 새롭게 생성된 hello_cargo 디렉터리를 살펴보면 다음과 같이 소스 코드가 보관되는 src 디렉터리와 Cargo.toml 파일, 그리고 src 디렉터리 내의 main.rs 파일이 생성되어 있는 것을 확인할 수 있다. s..
rustfmt와 RLS, rust-analyzer
2022. 1. 28. 01:33
dev-log/Rust
rustfmt rustfmt는 러스트의 formatting 도구로, 이를 이용하여 일정한 스타일로 코드를 작성할 수 있음. 설치하기 $ rustup component add rustfmt 러스트 파일에 대해 rustfmt 실행하기 $ rustfmt main.rs 위 코드를 통해 파일에 대해 rustfmt를 실행하면 이렇게 공백 문자 2칸 → 4칸이 된다! (러스트에서의 들여쓰기는 공백 문자 4개를 이용한다고 한다.) rust-analyzer 그치만 매번 이렇게 명령어를 입력해서 포매팅을 하는 건 어쩌면 조금 귀찮을지도?.. prettier처럼 파일이 저장될 때마다 포매팅해주면 참 좋겠다. 그래서 찾아봤다. (참고) VS Code의 marketplace에서 rust-analyzer를 설치한다. VS C..
Hello, world..?
2022. 1. 28. 01:03
dev-log/Rust
연습용 디렉터리 생성 후, 그 밑에 실습을 위한 hello_world 디렉터리를 또 생성. 그리고 그 밑에 main.rs 파일 만들기. 러스트 파일은 .rs 확장자를 갖는다. 파일명은 스네이크 케이스로 작성한다고 함. (ex: hello_world.rs) 코드 작성해보기 fn main() { println!("Hello, world!"); } 이와 같이 fn main() {}으로 정의되는 main 함수는 러스트 프로그램에서 가장 첫 번째로 실행됨. println!은 ‘러스트 매크로’라고 부르는 것이라고 함. 매크로라는 것에 대해선 19장에서 알려준다고 한다. ! 기호를 보면 함수가 아니라 매크로를 호출한다는 것만 일단 알아두라 한다. 각 구문은 세미콜론 ; 으로 끝난다. 표현식이 완료되었음을 뜻함. 표..