언어 44

move semantics

카테고리는 c++11에 해당되는 내용임. 여러 의미가 있지만 처음 이해한 것은실제 함수를 호출하는 과정에서 우리는 파라미터에 변수를 생성하고 사용하게 된다.이 때, 일반적인 파라미터는 지역변수를 생성하고 값-복사를 하게되고이것을 막기위해서는 const를 사용하여 불필요한 작업을 줄일 수 있다.(복사 생성자가 호출되지 않음) 하지만 생성자를 통한 값 이동은 어쩔수 없이 내부적으로 복사 생성자가 불려져야 한다.이 경우는 사실상 불필요하기 때문에 이것을 최적화하는 방법이 있다.컴파일러에서 최적화를 지원하거나 c++11부터 지원하는 move semantics를 사용하는 것이다. move semantics는 rvalue reference를 인자로 받는 새로운 생성자로파라미터에 &&를 작성하면 된다.이동 생성자(m..

언어/C 2015.11.25

c에서 pointer와 swap의 관계

c에서는 주로 call-by-reference로 data swap을 한다.하지만, 2가지 방법을 생각할 수 있다.첫 번째는 value의 직접교환을 통한 data swap이고두 번째는 value's address의 교환을 통한 data swap이다. 이것을 왜 알아보는가? doublepointer를 사용하면 call-by-function을 이해하기 쉽기 때문이다. #include void DoublePointer(int **a, int **b){int *c; c = *a;*a = *b;*b = c;}void AddressSwap(int *a, int *b){int c; c = *a;*a = *b;*b = c;}void main(){int a = 3, b = 5;int *pa = &a, *pb = &b; p..

언어/C 2015.06.28

MFC Image Viewer

MFC 프로젝트 생성 리소스 뷰에서 MAINFRAME에 열기항목에 event를 추가한다. OnFileOpen()에 아래와 같이 작성 // Get image file nameCFileDialog dlg(TRUE, _T("BMP|CPP"), NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, _T("Image Files (BMP,JPEG,JPG,JPE,JPG...)|*.BMP;*.JPEG;*.JPG;*.JPE;*.PGM|"));if( IDOK != dlg.DoModal() )return;//저는 std::string을 많이 사용해서 이방법을 씁니다. CString은 권장하지 않습니다.CString sFilename = dlg.GetPathName..

언어/C 2015.02.09

file 복사 프로그램

> inPath와 outPath를 입력하면 inPath의 디렉토리 file들을 outPath로 복사한다.> 수정해서 사용하셔도 됩니다. /* 2015. 01. 30 by Garuya * Copy File To other Directory */ #include #include #include #include int copy(char *src, char *dst); int select_copy(char *src, char *dst); typedef struct _finddata_t FILE_SEARCH; #define BUFFER_SIZE 4096 //optinal x86 buffer size int main() { char c_case; int error_code = 0; //default char inP..

언어/C 2015.01.30

nodejs 서버와 mongojs

저번에 말한 nodeJS로 간단한 Chat Server를 만들었다. 추가적으로 mongojs를 사용하여 Chat Log를 저장하고 최초 접속시 최근 대화기록을 보여주는 기능을 넣었다. 아래는 server.js 이다. > nodejs와 mongodb 설치는 생략한다. var io = require('socket.io').listen(443); var db = require('mongojs').connect('member', ['info']); insert = function(data){ db.info.save( data,function(error,result){ if(!error) ;//console.log("insert succeed!"); }); } find = function(callback){ //..

언어/js 2015.01.29

html Canvas 게임 강좌 - 4

이번에는 GameFramework.js를 살펴본다. GameFramework는 게임 Loop를 관리한다. 우선 mouse eventhandler를 등록한다.> touch 기반 모바일은 무관하다. 그 다음 game scene을 등록할 변수와 다음 scene을 등록할 변수를 생성한다. ChangeGameState> 게임의 scene이 변경되거나 Update>게임의 논리적인 부분Render>이미지를 그리는 부분 gameLoop> 위 Update와 Render를 반복해서 호출하는 역할이다.추가적으로 frame을 측정한다. 마지막은 setTimeout으로 자기자신을 호출하는 것으로 끝이다.> 이 방식은 동적 fps방식으로 일정 주기로 Loop를 호출하는 것이 아닌 현재 디바이스의 최대 fps를 허용한다.다만, 이..

언어/js 2015.01.16