전체 글 56

[스터디 with 실전 리액트 프로그래밍] 12편 - Context API

Context API 리액트로 개발하다 보면 여러 개의 컴포넌트를 중첩시키는 일은 정말 흔하다. 그리고 데이터를 멀리 있는 하위 컴포넌트에게 props로 전달해야 하는 경우도 있다. 이 경우에는 중간 컴포넌트에서 해당 props를 사용하지 않더라도 반복해서 전달해줘야만 한다. 이 때 Context API를 사용하면 이런 번거러운 작업이 필요없다. Context API는 상위 컴포넌트에서 하위에 있는 모든 컴포넌트로 직접 데이터를 전달할 수 있기 때문이다. Context API를 사용하지 않은 것과 사용한 것을 비교해보자. 먼저 사용하지 않은 것이다. import { useState } from "react"; export default function FirstComponent() { const [msg..

[스터디 with 실전 리액트 프로그래밍] 11편 - 훅(Hook)

훅(Hook) 훅은 컴포넌트에 기능을 추가할 때 쓰는 함수이다. 상탯값(state), 생명 주기(life cycle)등에 관련한 직관적인 API를 제공한다. Introducing Hooks – React A JavaScript library for building user interfaces reactjs.org 훅에 대한 공식문서다. useState 가장 많이 사용되는 훅은 useState다. useState를 사용하면 컴포넌트에서 상탯값을 추가하고 관리할 수 있다. 상탯값에 대한 설명은 아래 글에 나와 있다. [스터디 with 실전 리액트 프로그래밍] 9편 - UI 데이터 3장은 리액트의 핵심 기능과 개념을 설명한다. 이 장의 도입부에서 프레임워크나 라이브러리를 온전히 이해하지 못한 채로 프로젝트를 ..

[스터디 with 실전 리액트 프로그래밍] 10편 - 가상돔

리액트 요소 리액트 요소는 리액트가 UI를 표현하는 수단이다. JSX 문법에는 리액트 요소가 겉으로 나타나지 않지만, 이 요소를 이해하면 리액트가 내부적으로 어떻게 동작하는지 알 수 있다. JSX 문법으로 작성된 코드는 리액트의 createElement 함수로 변경된다. createElement 함수는 리액트 요소를 반환한다. 따라서 컴포넌트 함수는 리액트 요소를 반환한다. // JSX const element = Google // createElement const element = React.createElement( 'a', { href: "https://www.google.com" }, 'Google', } // 리액트 요소 const element = { type: 'a', key: null, ..

[스터디 with 실전 리액트 프로그래밍] 9편 - UI 데이터

3장은 리액트의 핵심 기능과 개념을 설명한다. 이 장의 도입부에서 프레임워크나 라이브러리를 온전히 이해하지 못한 채로 프로젝트를 진행하면 기술 부채가 늘어난다고 했다. 기술 부채, 내가 이 책을 산 이유다. 나는 리액트를 접하고 개발을 해오면서 기능은 구현할 수 있었지만, 확신이 없었다. 그러다 보니 어느 순간 성장이 더뎌진 것을 느꼈고, 리액트를 제대로 공부해야겠다는 생각이 들었다. 기술 부채를 갚아야 할 때가 온 것이다. UI 데이터 리액트는 UI용 라이브러리다. UI 라이브러리는 UI 데이터를 관리하는 방법을 제공한다. UI 데이터는 UI에 보이는 데이터다. 로그인할 때 우리가 입력하는 아이디, 비밀번호 등도 UI 데이터다. 이 UI 데이터가 변경되면 우리가 보는 화면도 그에 맞게 변해야 한다. 원..

[주간일기] 22.08.08 ~ 22.08.14

이번주 회고 리액트 공부를 못했다. 저번주 목표가 5장까지 끝내는 거였는데 한페이지도 안봤다 ㅋㅋㅋㅋㅋ 책도 읽어야 하고 할게 산더미인데 게임을 너무 많이 했다. 그래도 재밌긴했다. 계정 관리 프로그램을 완성했다. c++로 계정 관리 프로그램 개발하기 사이트마다 아이디, 비밀번호 생성 규칙도 다르고 다 똑같으면 보안이 취약하니, 가입할 때 계정을 다 다르게 했다. 모든 계정을 외울 수 없어서 메모장에 계정 정보를 적어놨었다. 그런데 보기 junhee-hee.tistory.com 웹개발이 아닌 첫 프로그램 개발이어서 완전 뿌듯했다. 오늘 백준 로그인할 때 비밀번호가 생각이 안나서, 처음 사용해봤는데 만족스러웠다. 그래도 프로그램처럼 보일려고 ---------------- 이런거 출력하긴 했는데, 약간 아쉽..

일상/주간일기 2022.08.14

C++로 계정 관리 프로그램 개발하기

사이트마다 아이디, 비밀번호 생성 규칙도 다르고 다 똑같으면 보안이 취약하니, 가입할 때 계정을 다 다르게 했다. 모든 계정을 외울 수 없어서 메모장에 계정 정보를 적어놨었다. 그런데 보기에 지저분하고 사용하기도 불편해서, c++로 아주 간단하게 계정 관리 프로그램을 개발해보자. 기획 인터페이스는 GUI가 아니라, 터미널에서 명령어로 동작하는 CLI로 만들 것이다. 만들 명령어는 1. account / account --all 모든 계정을 출력한다. 2. account 사이트도메인 해당 사이트의 계정을 출력한다. 3. account --help 계정 관리 프로그램의 모든 명령어에 대한 설명을 출력한다. 4. account --add 계정을 추가한다. 5. account --update 계정을 수정한다. ..

[스터디 with 실전 리액트 프로그래밍] 8편 - 제너레이터

제너레이터(generator) 제너레이터는 특이한 함수다. 함수 실행 중간에 멈출 수 있고, 재개할 수 있다. 그리고 멈출 때 값을 전달할 수도 있다. 제너레이터 함수를 정의하려면 function 키워드 뒤에 *를 입력하면 된다. 정의된 제너레이터 함수를 호출하면 제너레이터 객체를 반환한다. 이 때, 함수 내부 코드는 실행되지 않는다. 함수 내부 코드가 실행되지 않으니, 위 코드에서 '제너레이터 함수 내부'가 출력되지 않았다. 제너레이터 객체는 next, return, thorw 등의 메서드를 갖고 있다. 먼저 next를 사용해보자. 제너레이터 객체 메서드 - next 제너레이터 객체는 반복자(iterator)이기 때문에 next 메서드를 사용할 수 있다. 우선 제너레이터 객체를 정의하자.' 그리곤 ne..

[주간일기] 22.08.01 ~ 22.08.07

개인 블로그에 주간일기를 올리는 전직장 동료분이 있었다. 좋은 아이디어인 것 같아서 이번주부터 일요일마다 한 주를 되돌아보는 시간을 가져보자. 이번주 한 것 실전 리액트 프로그래밍 책을 보며 공부했다. 이번주 공부한 내용은 ES6에 새로 추가된 자바크립트 기능들이었다. 그 중 프로미스에 대한 내용이 있었는데, 비동기 함수를 처음 쓰느라 막막했던 때가 생각나면서 뿌듯했다. 블로그도 다시 열심히 쓰기 시작했다. 개강하기 전까지 최소 이틀에 한번은 쓰자. 다음주 목표 - 복학 준비 - 실전 리액트 프로그래밍 5장까지 공부 - 리액트 네이티브 공부 - 계정 관리 프로그램 만들기 - 티스토리 SEO - 책읽기 쓰다보니 좀 많은 같다ㅎㅎ... 화이팅해서 다 해보자 기타 돈좀 아껴 쓰자.

일상/주간일기 2022.08.07

C++ 개발 환경 세팅

재미없는 개발 환경 세팅을 해보자. 내 컴퓨터는 M1 맥북이고 에디터는 vscode를 사용할 것이다. g++ 일본어를 할줄 몰라서 일본 여행을 갔을 때 답답했던 경험이 있다. 하지만 재밌게 여행할 수 있었는데, 말을 직접 하지는 못해도 파파고로 번역하면 의사소통이 가능했기 때문이다. 프로그래밍도 마찬가지다. 컴퓨터는 우리가 c++로 작성한 코드를 이해하지 못한다. 따라서 우리가 이해하는 프로그래밍 언어를 컴퓨터가 이해하는 기계어로 번역해주는 작업이 필요하다. 이 작업을 컴파일(compile)이라고 하고, 컴파일을 수행하는 소프트웨어를 컴파일러(compiler)라고 한다. 즉 파파고로 한국어를 일본어로 번역했다면, 컴파일러로 프로그래밍 언어를 기계어로 컴파일하는 것이다. 여러 c++ 컴파일러 중에 g++을..

기타 개발 2022.08.07

[스터디 with 실전 리액트 프로그래밍] 7편 - 프로미스

프로미스(promise)는 비동기 '상태'를 값으로 다룰 수 있는 객체이다. 프로미스를 사용하면 비동기 프로그래밍을 할 때 동기 프로그래밍 방식으로 코드를 작성할 수 있다. 동기? 비동기? 어려운 단어가 많이 나온다... 프로미스를 공부하기 전에 먼저 동기, 비동기에 대해 알아보자. 자바스크립트에서 동기, 비동기 동기, 비동기 개념에 대해 내가 쓴 블로그 글이다!! Sync vs Async / Blocking vs Non-blocking sync(동기)와 async(비동기)에 대하여 공부를 하다 보니 항상 따라오는게 있었다. 바로 blocking과 non-blocking이었다. 이 sync와 blocking, async와 non-blocking은 의미와 상황이 자주 혼동되지만 서로 다른 개.. junhe..