프로그래밍
ContextAPI 렌더링 이슈
ContextAPI 렌더링 이슈
2020.10.17[React] ContextAPI 렌더링 이슈 ContextAPI는 규모가 작은 앱을 개발할 때 매우 편리합니다. 하지만, Context 값이 변경될 때, useContext가 렌더링을 유도하기 때문에 앱의 규모가 커진다면 일부 성능 문제가 발생할 수 있습니다. '아니 어떻게 React에서 제공하는 기본 기능에서 문제가 발생할 수 있냐??'라고 생각할 수도 있습니다. 지금부터 어떤 문제가 발생하는지와 함께 해당 문제를 해결하는 방법에 대해 알아봅시다. ContextAPI 앱 구성 및 문제 확인 문제를 확인할 수 있는 CodeSnadbox 간단한 객체 값을 갖고 있는 Context 구성입니다. useReducer를 이용해 Provider에 값을 전달하고 있으며, useContextr를 이용해..
[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을 실행시킨 후 수정 버튼을 누릅니다.워크로드 탭..
[C++ 강좌] 이 강좌의 접근 방법과 목표
[C++ 강좌] 이 강좌의 접근 방법과 목표
2017.03.30이 강좌의 접근 방법과 목표 강좌의 목적 이 강좌의 목표는 프로그래밍을 열심히 배우려는 의지가 있는 사람들을 위한 강좌로, C++ 프로그래밍 언어를 이용해서 프로그래밍의 이론과 실전 기술을 이해할 수 있도록 도와주는 것입니다. 강좌에 접근하는 방법 이 강좌는 앞에서부터 차례로 읽도록 작성될 것입니다. 물론 요점을 완전히 파악하지 못한 상태라면 다시 앞으로 돌아갈 수도 있습니다. 하지만 이 강좌는 주제별로 정리가 되어 있음에도 불구하고 원하는 부분만 읽어서 목적을 이룰 수 있는 강좌가 아닙니다. 각 부분의 내용은 앞에서 설명한 내용의 이해를 바탕으로 작성됩니다. 일반적으로 강좌의 목적은 '학생의 질문에 답해주는 것'입니다. 간단한 문제에 대한 질문에는 이런 방식이 적당하지만, 이것이 전부는 아닙니다. 이 ..
[C 언어 강좌] C 언어 강좌 모아보기
[C 언어 강좌] C 언어 강좌 모아보기
2017.02.09C 언어 강좌 모아보기인터넷을 보면 수많은 C 언어 강좌가 있습니다. 하지만 대다수의 C 언어 강좌들이 대부분 표준과 어긋나는 내용을 설명하거나 잘못된 내용을 설명하는 경우가 많았습니다. 표준을 지키지 않을 경우 컴파일러를 변경했을 때 비표준으로 작성해왔던 습관들이 큰 사고를 일으킬 수도 있습니다. 하지만 이 블로그의 강좌는 C 언어의 레퍼런스 문서를 기초로 작성되어서 잘못된 내용이 극히 드뭅니다.C 언어 자체는 지원하는 기능이 적어서 배우기가 크게 어렵지 않습니다. 실제로 다른 프로그래밍 언어를 경험해본 적이 있는 사람이라면 기본적인 문법 정도는 늦어도 며칠, 빠르면 몇 시간 내에 습득이 가능할 정도입니다. 하지만 기능이 적다고 결코 쉽게 생각하면 안 됩니다. 가장 많은 사람이 포기한다는 포인터 부분만..
[C 언어 기초] 23. int형이 아닌 정수형
[C 언어 기초] 23. int형이 아닌 정수형
2017.02.09int형이 아닌 정수형정수를 처리해야 하는 일이 생겼을 때 int형만으로도 충분합니다. 하지만, C 언어에서는 int형이 아닌 다른 정수형들도 제공하고 있습니다.C 언어는 기본 정수형을 변경할 수 있는 세 개의 형용사 키워드 short, long, unsigned를 제공합니다.short int형(또는 short형)은 int형보다 더 적은 기억 공간을 사용할 수도 있습니다. 그래서 작은 수를 저장할 때 메모리를 절약할 수 있습니다. int형과 마찬가지로 short형도 부호가 있는(signed) 데이터형입니다.long int형(또는 long형)은 int형보다 더 큰 기억 공간을 사용할 수도 있습니다. 그래서 더 큰 정수값들을 표현할 때 사용합니다. int형과 마찬가지로 long형도 부호가 있는 데이터형입니다..
[C 언어 기초] 22. 8진수와 16진수
[C 언어 기초] 22. 8진수와 16진수
2017.01.198진수와 16진수일반적으로, C 언어는 정수형을 10진수 형태로 작성할 것으로 생각합니다. 하지만 많은 프로그래머는 8진수(기수 8)와 16진수(기수 16)로 작성하기를 원합니다. 8진수와 16진수는 2의 거듭제곱이라서 컴퓨터와 관련된 값들을 표현하는 것이 10진수보다 편리합니다. 예를 들면, 16비트 컴퓨터에서 자주 등장하는 수인 65536을 16진수로 나타내면 10000이 됩니다.16진수는 숫자를 4비트 단위로 끊어서 인식합니다. 예를 들면, 16진수 숫자 3은 0011이고, 16진수 숫자 5는 0101입니다. 그래서 16진수 값 35는 비트 패턴이 0011 0101이고, 16진수 값 53은 0101 0011이 됩니다. 이처럼 인식하는 것이 16진수와 2진수(기수 2)를 전환하는 것을 더욱 쉽게 만듭..
[C 언어 기초] 21. 기본 데이터형 int
[C 언어 기초] 21. 기본 데이터형 int
2017.01.17기본 데이터형 int이제부터 C에서 사용하는 기본 데이터형의 특징을 살펴볼 것입니다. 여러가지 데이터형의 변수를 선언하는 방법, 5 또는 2.78과 같은 리터럴 값으로 상수를 나타내는 방법, 변수를 사용하는 방법을 설명할 것입니다. 일부 오래된 C 컴파일러들은 일부 데이터형들을 지원하지 못할 수도 있으니 어떤 데이터형을 사용할 수 있는지 미리 확인해주세요. int형 C는 다양한 정수형을 제공합니다. 굳이 여러 개를 제공하는 이유는 프로그래머가 용도에 따라 선택해서 사용할 수 있게 하기 위해서입니다. 특히, C의 정수형들은 제공되는 값의 범위와 음수의 사용 여부에 따라서 자료형이 달라질 수 있습니다. 정수의 기본 형태는 int형이지만, 특정 작업을 할 때나 컴퓨터의 요구에 따라 다른 선택을 해야 할 수 있..
[C 언어 기초] 20. 데이터형을 나타내는 키워드
[C 언어 기초] 20. 데이터형을 나타내는 키워드
2017.01.13데이터형을 나타내는 키워드변수와 상수 컴퓨터는 프로그램이라는 것을 이용해서 많은 일을 합니다. 수를 더하고, 스피커 또는 화면을 출력하거나, 전화를 거는 등 이외에도 독자가 생각할 수 있는 모든 일을 할 수 있습니다. 이러한 일들을 하기 위해서는 프로그램이 정보를 담고 있는 수와 문자들 즉, 데이터를 가지고 작업해야 합니다. 어떤 종류의 데이터는 프로그램이 사용되기 전에 값이 미리 정해지며, 프로그램이 실행되는 동안 그 값이 변하지 않고 유지됩니다. 이러한 데이터를 상수(constant)라 합니다. 상수와는 달리 프로그램이 실행되는 동안 대입되거나 연산 등을 통해서 값이 변하는 데이터를 변수(variable)라 합니다.예제 3-1 프로그램에서 cm은 변수이고, 1과 2.54는 상수입니다. 프로그램에서 변..