[C/C++] Declaration VS Definition
·
Language/C C++
Declaration은 변수의 이름, 타입, 초기값(있다면)에 대한 정보를 컴파일러에게 알려주는 것이다. 즉 선언이란 한 변수의 속성에 대해 자세한 내용을 제공하는 것이다.Definetion이란 변수가 어디에 저장되어있는지, 즉 변수가 메모리 어디에 할당되는지를 말한다.C에서 변수에 대한 선언과 정의는 동시에 일어난다.int a;a라는 변수에 이름(a)과 타입(int)같은 정보가 컴파일러로 보내져 심볼테이블이라는 자료구조에 저장될 것이다. 이를 통해 메모리에는 4byte가 할당될 것이다.변수의 선언은 일어나지만 정의는 일어나지 않는 경우를 보자. 바로 extern 키워드를 사용할 때 이다.xxxxxxxxxxextern int a;extern 키워드는 다른 파일에서 미리 정의된 변수 이름을 가져올 때 사용..
[Vue] Vue 인스턴스
·
Language/JavaScript
Vue 인스턴스는 Vue.js를 시작할 때 사용하는 객체를 의미하며 어플리케이션의 시작점이라고 할 수 있다. Vue 어플리케이션은 Vue함수로 인스턴스를 생성하는 것부터 시작한다.var vm = new Vue({ // options});​//또는new Vue({ // options});옵션에는 아래와 같은 속성들이 전달된다.el, template, data, props, computed, methods, watch위 속성들은 컴포넌트와 다르지 않다.여기서는 el 프로퍼티를 볼 수 있는데 이는 HTML 문서에 마운트될 HTML 엘리먼트를 지정하는 역할을 한다.//html // scriptnew Vue({ el: "app"});vue/cli로 Vue 프로젝트를 생성 후 index.html을 보면 body태그..
[C++] std::map
·
Language/C C++
흔히 사용하는 key-value 자료형이다. C++에서는 #include으로 사용할 수 있다.std::map m;주요 함수삽입xxxxxxxxxxm.insert(make_pair("a", 100));m.insert(make_pair("c", 400));m.insert(make_pair("d", 200));m.insert(make_pair("b", 300));삭제xxxxxxxxxxm.erase("a"); // key 또는 iterator검색​xm["b"] //value​// find는 iterator를 반환한다.m.find("b")->first; //keym.find("b")->second; //value이 때 key에 해당하는 값이 없다면[]연산자는 0을 반환한다.find는 end() iterator를 반..
[C++] std::endl
·
Language/C C++
알고리즘 문제를 푸는데 시간초과가 계속 발생했다. 정답 코드를 검색해서 비교해봤을때 내 코드와 다른 부분은 출력부분 뿐이었다. 나는 개행을 std::end를 사용했다.​xfor (int i = 0; i
[C++] 클래스 표준 입출력
·
Language/C C++
C++의 연산자 오버로딩을 활용해 클래스를 직접 cin, cout에 사용할 수 있다.xostream& operator
[JS] Phaser
·
Language/JavaScript
간단한 웹게임을 만드려고 한다. 다양한 JavaScript 게임 엔진들이 있었지만 Phaser.js를 선택했다. 예제 코드나 API문서들이 잘 정리되어 있어서 금방 따라할 수 있어 보였다. 튜토리얼을 따라가보며 구현법을 간단히 익혔다. 튜토리얼은 여기를 참고했다. Intro일단 Phaser3로 아래 게임을 만들어 볼 것이다. 코드를 작성하며 기능에 대해 알아볼 수 있었다.먼저 Phaser는 HTML5에서 게임을 만들 수 있는 프레임워크다. 데스크탑이나 모바일 브라우저에서 모두 활용할 수 있으며 태그가 지원되는 곳이면 사용 가능하다.아래는 베이스라인 코드이다.​xvar config = { type: Phaser.AUTO, width: 800, height: 600, scene: { preload: prel..
[Python] Queue
·
Language/Python
멀티 쓰레드 프로그래밍을 할 때 큐와 쓰레드를 혼합해 사용하면 비교적 간단하게 문제를 해결할 수 있다. 작업 큐를 만들어 처리할 작업들을 큐에 저장하고 각 쓰레드는 큐에서 작업들을 하나씩 가져와 처리하는 방식이 일반적이다. 파이썬에서는 이를 위해 멀티 쓰레드 환경에서 사용할 수 있는 Queue를 제공한다.Queue의 핵심 함수는 아래 3개가 있다. 이외에도 qsize(), empty(), full()이 있는데 적절히 사용하면 된다.put/get : 큐에 데이터를 삽입/삭제한다.task_done : 큐에서 작업이 완료되었다.join : 큐의 모든 작업이 끝날때까지 대기한다.put/get은 일반적인 큐와 동일하게 데이터를 삽입하고 가져오는 함수이다. 그 이외 task_done과 join은 기존 큐에서는 볼 ..
[Python] GIL
·
Language/Python
CPython은 파이썬의 표준 구현이며 두 단계를 거쳐 파이썬 프로그램을 실행한다. 먼저 소스 코드를 구문 분석해서 바이트 코드로 변환 후, 인터프리터를 통해 실행한다. 이 떄 CPython은 GIL(Global Interpreter Lock)을 사용해 일관성을 강제로 유지한다. 따라서 파이썬에서 멀티 쓰레드 프로그램을 개발하는데는 한계가 있다.GIL이 멀티 쓰레딩에 어떤 영향을 주는지 코드를 통해 살펴본다. 처리하는데 오래 걸리는 함수를 작성하고 쓰레드를 사용했을 때와 사용하지 않았을 때의 시간을 측정해본다.xxxxxxxxxxdef factorize(n): for i in range(1, n + 1): if n % i == 0: yield i​import timenumbers = [135254,1341..