Post

구글 스프레드 시트 테이블 계열을 추가하여 데이터 시각화 시작

마음에 드는 구글 스프레드를 찾았는데

내가 이리저리 고치다가 보니 어느새 차트 표가 제대로 표시가 되지 않았다.

테이블 계열을 추가하여 데이터 시각화 시작이라는 단어만 동동 떠 있을 뿐 ㅠㅠ

몇분 집중했냐 뭐 그런 차트였는데 답답할 나름...

그래서 하나하나 차근차근 해쳐나갔다.

일단 잘되는 구글 스프레드시트와 비교해보니 아래 순서대로 고쳤다.

1. 데이터 범위가 올바른지 확인

2. X축이 올바른지 확인. X축을 선택하고 싶다면 C11이런게 아니라 C11:C 라고 표시해야한다

(왜 이렇게 해야하는지는 나도 모름... 은근 엑셀이랑 조금 달라서 까다롭다 ㅠㅠ)

3. 라벨 선택

4. 어느 행을 헤더로 선택할건지 확인, C열 라벨로 사용하는지, 라벨을 텍스트로 처리하는지

그리고 위에걸 전부 똑같이 따라 했는데도 여전히 분 표시가 안되고

테이블 계열을 추가하여 데이터 시각화 시작

이라는 말만 떴다.

그래서 좀 더 찾아보니 글자가들어가 있으면 제대로 표시가 안될 수 있다고 떴다.

그래서 글자를 삭제하니 제대로 표시가 되었다!

분만 표시해야 됐던건!

아무튼 얼렁뚱땅해결~~~

Post

파일 형식 또는 파일 확장명이 잘못되어 파일을 열 수 없습니다. 파일이 손상되지 않았는지 파일 확장명이 파일 형식과 일치하는지 확인하십시오

엑셀 파일을 열때마다 이 엑셀파일 에러문구가 자꾸만 떠서 곤란했다.

일단 나 같은 경우엔 엑셀 파일을 한컴 2020으로 열수도 있고 엑셀로도 열수도 있다.

그래서 내 생각엔 한컴 2020으로 저장된게 아닌가 싶었다.

확인해보니 확실히 한컴 2020 엑셀로는 잘 열리는데 마이크로소프트 엑셀로 안열린다.

그래서 한컴 2020 엑셀을 연다음에 한컴 2020 엑셀에서 XLSX로 다른 이름으로 저장.

그 후에 마이크로소프트 엑셀로 여니 잘 되었다!!!

한컴 2020 엑셀으로 잘 열리면 이 방법 추천!

Post

Cocos2d NULL 아니라 nullptr

1. cocos2dx null 체크

define 되어있는걸로 봐서는 NULL 0 이라서

이건 쓰면 안될 거 같은데;;; 하고 있다가 찾아보니

C++11부터는 nullptr 쓰면 된다고 적혀 있었음 ㅇㅇ

그래서 nullprt을 사용했다.

2. cocos2dx 한글 폰트 적용

1) visual studio 출력단에서 글자가 깨지는 경우.

이 경우에는 헤더, cpp 파일 인코딩이 다른 경우라 다른이름으로 저장-인코딩해서 저장- 유니코드 utf8로 변경해주면된다.

2) cocos2d System font를 사용하고 싶은 경우

#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#pragma execution_character_set("utf-8")
#endif

선언해두고 

createWithSystemFont 함수로 읽을 한글 폰트를 갖다놓는다.

text = Label::createWithSystemFont("한글폰트야 나와라!!!!", "fontname.ttf", 50);

 근데 생각해보니까...따로 fonts 폴더에 폰트 넣은 뒤에

폴더 경로를 지정을 안해줬는데 잘 읽히네?

왜죠?

난관은 내가 원하는 위치에 텍스트를 출력하는 건데

이게 생각보다 잘 안된다. 어느 디바이스든 고르게 잘 출력하고 싶은데 안돼...

좌표계 헷갈려 ㅠㅠㅠ살려줘ㅠㅠㅠㅠㅠ

Post

Cocos2dx 소멸자 CCLog 에러

Cocos2dx 소멸자 CCLog 에러

이해할 수 없는 에러가 떴다...

왜 소멸자를 찾지 못하죠?

오류	LNK2019	"void __cdecl cocos2d::CCLog(char const *,...)"
(?CCLog@cocos2d@@YAXPBDZZ)"public: virtual __thiscall HelloWorld::~HelloWorld(void)"
(??1HelloWorld@@UAE@XZ) 함수에서 참조되는 확인할 수 없는 외부 기호
vg	H:\CocosProject\vg\HelloWorldScene.obj	1

근데 내가 자세히 안봐서...

소멸자를 못찾은게 아니라 CCLog 함수를 못찾은 것...

CCLOG 헤더 파일 CCPlatformMacros.h 를 include 하거나

cocos2d.h 헤더추가

Post

// 현재 위치 구하기
TCHAR filePath[_MAX_PATH]; // 현재 디렉토리
GetCurrentDirectory(_MAX_PATH, filePath);

string a = TCHARtoString(filePath);

printf("현재 디렉토리:%s", a.c_str());
			
const std::string TCHARtoString(const TCHAR* tcharStr) {
	int len = wcslen((wchar_t*)tcharStr);

	char resultStr[200]; //경로가 길므로 적당한 사이즈를 지정해준다
	size_t tcnt;

	wcstombs_s(&tcnt, resultStr, sizeof(resultStr), (wchar_t*)tcharStr, 2 * len + 1);

	return resultStr;
}

wcstombs_s 함수를 사용한다.

GetCurrentDirectory를 함수에서 TCHAR 형으로 현재 디렉토리 주소를 받아와서

어쩔 수 없이 TCHAR to String을 해야 했다.

근데 잘 안보이고ㅠㅠㅠ

고생고생하다가 겨우 찾았다ㅠㅠ

wcstombs_s 함수의 인자 출처:

https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/wcstombs-s-wcstombs-s-l?view=msvc-170

 

wcstombs_s, _wcstombs_s_l

자세한 정보: wcstombs_s, _wcstombs_s_l

learn.microsoft.com

 

 

Post

1. getVisibleOrigin 에서 가져오는 값이 뭘까?

auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();

출력해보니 Director::getInstance()->getVisibleSize();는 내가 지정한 해상도이다.

getVisibleOrigin()은 뭔지 잘 모르겠다. 코드보니 scale 사용하고 어쩌구 있는데 잘 모르겠으니

패스당...(할게 너무 많아ㅠㅠ)

visibleSize.width: 400.000000 height: 800.000000 origin x: 0.000000 y: 0.000000

Post

	map<int, GameObject*> gameObjects;
    
    // 동적 할당 해제
	for (map<int, GameObject*>::iterator it = gameObjects.begin(); it!= gameObjects.end(); it++) {
		delete it->second;
	}

	gameObjects.clear();

c++ stl Map 동적할당 해제 예제 
이터레이터에서 두번째 인자를 해제 해주고 map전체 clear

Post

필요한 거 그때그때 추가하자

헤더, cpp 이동: ctrl+k, o

이전 커서 위치로 이동 ctrl + -

Post

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
	string str_buf;
	fstream fs;

	fs.open("test.csv", ios::in);

	while (!fs.eof()) {
		std::getline(fs, str_buf, '\n');
		printf("%s", str_buf.c_str());
	}
	fs.close();

	return 0;
}

C++ csv 파일 읽기 예제

string.h는 문자열에 관련된 함수를 사용하는 거고 getline을 사용하려면 string 헤더를포함해야한다는 걸 명심할 것

string을 printf로 출력하려면 c_str()함수 호출.

std::getline(fs, str_buf, '\n'): getline은 한줄 씩 읽는 함수. 세번째 인자는 어느 문자열을 만나면 여기까지 읽겠다는 뜻. 즉 \n 이므로 한줄을 읽게 된다. 세번째 인자를 잘못넣어주면 그냥 텍스트 파일을 통째로 읽게 된다.

너무 오랜만에 해서 다 까먹었다...

Post

cmd켜고 project에서 proj.android로 이동한다.

거기서 안드로이드 빌드 명령어 수행

cocos compile test- p android

cocos compile baseproject -p android

baseproject 자리에 프로젝트 이름 넣을 것

bin 폴더에 간다. 그 안에 baseproject-debug.apk apk 존재

project\projectname\bin\debug\android

그런데 한번 빌드한 프로젝트를 다시 빌드하려고 하니 다음과 같은 에러가 나왔다.

The target platform is not specified.
You can specify a target platform with '-p' or '--platform'.
Available platforms : ['win32', 'android']

cocos compile test- p android

라고 했는데 왜 대상 플랫폼이 지정되지 않았다고 뜨지?

andorid target list 로 안드로이드 버전 확인하고(28~34)

되는 안드로이드 버전 cocos compile test- p android --ap 28

를 해봤지만 안됨.

https://stackoverflow.com/questions/23551144/cocos2d-x-doesnt-find-android-platform

 

cocos2d-X doesn't find android platform

I'm using cocos2d-X v3 and I created a new cocos2d-X project following this tutorial. But when I run cocos run -s ~/MyCompany/MyGame -p android I get this error: building apk Android platform ...

stackoverflow.com

ANT 경로를 다시 삭제하기 보다  %ANDROID_SDK%\tools 경로를 추가하는게 좋아보이는데

어떻게 해야하는지 모르겠다.

아니... 그냥 내가 명령어를 막 갖다붙여서 생긴 일이었다...프로젝트 이름도 생각안하고

cocos compile baseproject -p android

baseproject 는 프로젝트 이름...

그러면 apk 빌드가 잘된다!

▲ top