분류 전체보기
ContextAPI 렌더링 이슈
ContextAPI 렌더링 이슈
2020.10.17[React] ContextAPI 렌더링 이슈 ContextAPI는 규모가 작은 앱을 개발할 때 매우 편리합니다. 하지만, Context 값이 변경될 때, useContext가 렌더링을 유도하기 때문에 앱의 규모가 커진다면 일부 성능 문제가 발생할 수 있습니다. '아니 어떻게 React에서 제공하는 기본 기능에서 문제가 발생할 수 있냐??'라고 생각할 수도 있습니다. 지금부터 어떤 문제가 발생하는지와 함께 해당 문제를 해결하는 방법에 대해 알아봅시다. ContextAPI 앱 구성 및 문제 확인 문제를 확인할 수 있는 CodeSnadbox 간단한 객체 값을 갖고 있는 Context 구성입니다. useReducer를 이용해 Provider에 값을 전달하고 있으며, useContextr를 이용해..
[Tips] 프로그래밍과 관련된 글들 모음
[Tips] 프로그래밍과 관련된 글들 모음
2017.10.06프로그래밍과 관련된 글들 모음프로그래밍을 시작하기 전 읽어보면 좋은 글들이 카테고리에서는 사람들이 프로그래밍하는 것을 중요하다고 하는 이유에 대해서 생각하고 살펴볼 것이며, 몇 가지 기본적인 아이디어와 이상을 설명할 것입니다. 또한, 사람들이 프로그래밍과 프로그래머에 대해 흔히 잘못 생각하는 몇 가지를 정정하려고 합니다. 지금 당장 이 글을 읽어봐도 좋습니다. 나중에 프로그래밍 문제를 풀다가 코딩이 계속할 만한 가치가 있는 것인지에 대한 의문이 들 때, 이 글을 다시 읽어보시길 바랍니다.2017/04/01 - [Guid/Tips] - [Tips] 소프트웨어와 프로그래머 2017/04/02 - [Guid/Tips] - [Tips] 컴퓨터 과학과 프로그래밍 2017/04/02 - [Guid/Tips] - [..
[Tips] 하드웨어 관련 용어
[Tips] 하드웨어 관련 용어
2017.10.06하드웨어 관련 용어이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 중앙 처리 장치(CPU)CPU(Central Processing Unit)는 고유한 기계어를 갖고 있으며, 그것을 해석할 수 있는 장치입니다. 일반적으로 개인 PC에는 인텔과 AMD에서 만든 CPU가 주로 장착되고 있으며, 모바일 기기에서는 ARM이라는 회사에서 만든 CPU와 호환되는 제품들이 주로 장착됩니다. 레지스터CPU 내에 존재하는 기억 장소입니다. 우리가 흔히 부르는 16비트, 32비트, 64비트 CPU라는 이름으로 한 개의 레지스터에 담을 수 있는 데이터의 크기를 쉽게 알 수 있습니다. 즉, 64비트 CPU는 레지스터 하나에 담을 수 있는 비트의 수가 64개..
[C++ 강좌] C++ 강좌 모아보기
[C++ 강좌] C++ 강좌 모아보기
2017.10.05C++ 강좌 모아보기 [Prolog] 프로그래밍을 시작하기 전 읽어보면 좋은 글 2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 [Chapter 1] C++ 기초 2017/03/30 - [Guid/C++ Programming] - [C++ 강좌] 이 강좌의 접근 방법과 목표 2017/04/09 - [Guid/C++ Programming] - [C++ 강좌] Visual Studio 설치 2017/04/09 - [Guid/C++ Programming] - [C++ 강좌] Hello, World 프로그램 2017/04/11 - [Guid/C++ Programming] - [C++ 강좌] 컴파일의 과정
[C Function] 정수를 입력받는 함수
[C Function] 정수를 입력받는 함수
2017.09.28정수를 입력받는 함수 문제점scanf 함수를 사용해서 정수형 수를 입력받을 경우, 문자를 입력하거나 범위보다 큰 값을 입력했을 때 정수 오버플로우가 일어납니다.scanf의 리턴형을 확인하는 방법으로 문자를 입력할 때 프로그램에 문제가 생기는 것을 막을 수는 있지만, 정수 오버플로우의 문제는 여전히 남아있습니다. 해결방법위와 같은 문제를 해결하기 위해 먼저 문자열로 수를 입력받은 다음, 그 값을 숫자로 변환시키면 어떨까 생각하게 되었고, 그것을 코드로 작성해보았습니다. 정수를 입력받는 함수 #include void intInput(char str[], int *num) { do { fgets(str, sizeof(str), stdin); } while(sscanf(str, "%d", num) != 1); ..
[C++ 강좌] 컴파일의 과정
[C++ 강좌] 컴파일의 과정
2017.04.11컴파일의 과정컴파일러의 목적우리가 읽고 작성할 수 있는 형태의 코드를 소스코드나 프로그램 텍스트라고 하며, 컴퓨터가 실행할 수 있는 형태의 텍스트를 실행 파일이나 목적 코드, 기계 코드라고 합니다. 보통 C++ 소스코드 파일의 확장자는 .cpp 또는 .h이며, 목적 코드 파일의 확장자는 .obj 또는 .o입니다.컴파일러의 역학은 소스코드를 목적 코드로 컴파일하는 것입니다. 컴파일러는 문법에 굉장히 예민하므로 오타나, 세미콜론, 중괄호 등 사소한 사항의 누락도 허용되지 않습니다. 특히, 컴파일러는 세미콜론(;)으로 한 구문이 끝나고 다른 구문이 시작하는 것을 구별합니다. 자주 하는 실수들우리가 자주 하는 실수로 인한 조그만 오류를 하나씩 포함한 몇 가지 예제로 이 사실을 살펴봅시다. // #include가..
[C++ 강좌] Hello, World 프로그램
[C++ 강좌] Hello, World 프로그램
2017.04.09Hello, World 프로그램본 강좌는 std_lib_facilities.h를 사용합니다. 다운로드 : http://www.stroustrup.com/Programming/std_lib_facilities.h 헤더파일 넣는 법 : [C++ 강좌] Visual Studio 설치 'Hello, World!'를 화면에 출력하는 프로그램// 이 프로그램은 모니터에 'Hello, World!'라는 글을 출력합니다. #include "std_lib_facilities.h" int main() { cout
[C++ 강좌] Visual Studio 설치
[C++ 강좌] Visual Studio 설치
2017.04.09Visual Stduio 설치비주얼 스튜디오는 윈도우에서 작동하는 통합 개발 환경(IDE)입니다. 만약 Visual Studio가 설치되지 않았다면 소프트웨어를 구매하고 설명서를 따르거나, https://www.visualstudio.com/ko/thank-you-downloading-visual-studio/?sku=Community&rel=15에서 무료 버전인 Visual Studio Community를 다운로드해 설치합시다. 이 글의 설명 기준은 Visual Studio Community 2017을 기준으로 하며, 다른 버전과는 차이가 있을 수 있습니다. Visual Stduio 2017에 C++ 추가하는 방법Visual Stduio Installer을 실행시킨 후 수정 버튼을 누릅니다.워크로드 탭..
[Tips] 프로그래밍을 시작하기 전에
[Tips] 프로그래밍을 시작하기 전에
2017.04.03프로그래밍을 시작하기 전에이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 프로그램컴퓨터에 어떤 일을 시키기 위해서는 컴퓨터에 어떤 일을 어떻게 해야 하는지 자세히 알려줘야 합니다. 여기서 '어떤 일'에 대한 설명이 바로 프로그램이고, 프로그래밍은 그런 프로그램을 작성하고 테스트하는 작업입니다.이러한 관점에서 보면 우리는 이미 프로그래밍과 비슷한 작업을 해본 경험이 있을 것입니다. '목적지까지 가는 가장 가까운 방법'과 '요리를 하는 방법' 등 작업을 완료하는 방법을 항상 생각하며 살아가고 있습니다. 사람과 컴퓨터의 차이그렇다면 위의 설명과 프로그램의 차이는 무엇일까요? 그것은 정확도에 있습니다. 사람에게 이야기할 때는 설명이 불충분하..
[Tips] 프로그램 제작 과정
[Tips] 프로그램 제작 과정
2017.04.02프로그램 제작 과정이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 변화해야 하는 프로그램여러분들은 프로그램을 만들 때 프로그램의 신뢰성을 가장 중요하게 생각해야 합니다. 프로그램이 의도한 대로 동작하지 않아서 그것을 신뢰할 수 없다면 심각한 상황이 일어날 수도 있습니다. 그래서 우리는 프로그램을 만들 때 잘 설계해야 합니다. 프로그램이 의도한 바와는 전혀 상관없는 일을 하거나, 우리를 짜증 나게 하는 일을 한다면, 그 프로그램은 누구도 이용하지 않을 것입니다.지금까지 프로그래머가 아닌 사람들의 입장에서 소프트웨어를 살펴봤는데, 이러한 가치를 프로그래머의 이상으로 삼고 항상 명심해야 합니다. 성공적인 소프트웨어를 만들고 싶다면 특히 개..
[Tips] 컴퓨터 과학과 프로그래밍
[Tips] 컴퓨터 과학과 프로그래밍
2017.04.02컴퓨터 과학의 관점에서 프로그래밍이란이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 컴퓨터 과학과 프로그래밍프로그래밍은 컴퓨터 과학이나 컴퓨터 공학, 소프트웨어 공학, 정보 기술 등 소프트웨어 관련 학과의 하위 분야로 볼 수 있습니다. 그리고 프로그래밍은 과학과 공학은 물론 물리학, 생물학, 약학, 역사학 등 여러 학문에서 컴퓨터와 정보에 관련된 부분을 가능하게 하는 기술이기도 합니다.위키피디아에서는 컴퓨터 과학을 다음과 같이 설명하고 있습니다.컴퓨터 과학(Computer science)은 전산 및 그 응용기술에 대한 과학적이고 실용적인 접근을 의미한다. 전산 이론 및 전산 시스템 설계를 다루는 전문가를 컴퓨터 과학자라 부른다.컴퓨터..
[Tips] 소프트웨어와 프로그래머
[Tips] 소프트웨어와 프로그래머
2017.04.01소프트웨어와 프로그래머 이 글과 이어진 글 보러 가기2017/10/05 - [Guid/Tips] - [Tips] 프로그래밍과 관련된 글들 모음 소개다른 대부분의 학습과 마찬가지로 프로그래밍의 학습은 다음과 같은 많은 의문을 남기곤 합니다. 배우면 좋다고들 하지만, 왜 배워야 하는지 궁금합니다. 실용적인 기술을 배우고 싶지만, 유행에 따라서 잠시 뜨고 있는 기술을 배우기는 싫습니다. 이런 생각이 들었다면 이 글을 가볍게 훑어봅시다. 그리고 나중에 기술적 세부 사항이 실전에서 중요한 이유를 되새기고 싶다면 이 글을 다시 읽어보시기 바랍니다.이 글에서는 프로그래밍이 흥미롭고 중요한 기술인 이유, 즉 프로그래밍이라는 분야가 수십 년 동안 계속해서 발전하는 이유가 무엇인지 설명합니다. 이 글의 내용을 바탕으로 프..