html은 list와 같은 요소들에게 id를 부여하거나 class(그룹화)로 묶을 수 있다.

css를 사용하여 디자인할 때 요소를 로드하는 방식의 차이가 있다.


id 로드 : #id_name

class 로드 : .class_name

JavaScript와 PHP의 변수 선언 방법은 다르다.


JavaScript 변수 선언은 그냥 선언하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>생활코딩</title>
  </head>
  <body>
    <h1>JavaScript</h1>
    <script>
      name = "hey java script";
      document.write(name+" Hello~");
    </script>
  </body>
</html>
cs

PHP 변수 선언은  앞에 $기호를 추가하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>생활코딩</title>
  </head>
  <body>
    <h1>PHP</h1>
    <?php
    $name = "hey php";
    echo $name." Hello~";
    ?>
  </body>
</html>
cs


JavaScript와 PHP의 + 연산자는 약간의 차이가 있다.


JavaScript의 경우 +는 숫자뿐만 아니라 문자열을 합치는 데에도 사용할 수 있지만



PHP의 경우 문자열에 +를 사용하게 되면 자동으로 숫자로 변환하여 계산한다.



JavaScript 처럼 문자열을 합치고 싶으면

"." 연산자를 사용하면 된다.



++ 추가

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>생활코딩</title>
  </head>
  <body>
    <?php
      echo "temp"+"ic";
    ?>
  </body>
</html>

cs

와 같이 사용하면 0이 출력된다.


vector의 resize 함수를 사용할 때 어떤 방식으로 작동하는지 궁금해서 찾아봤다.


resize 함수는 vector를 초기화한 뒤 사이즈를 변경해주는 것이 아니라

1) 매개변수의 값이 vector의 사이즈보다 작으면 사이즈가 매개변수 값이 될 때 까지 끝에서부터 삭제

2) 매개변수의 값이 vector의 사이즈보다 크면 vector의 기존 요소는 변경되지 않고 뒤에 요소를 추가


--------------------------------------------------------------------------------------------------------------

2) 결과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
temp.push_back(1);
temp.push_back(2);
temp.push_back(3);
temp.push_back(4);
 
cout << "~~resize before~~" << endl;
for (int i = 0; i < temp.size(); i++) {
    cout << temp[i] << endl;
}
 
temp.resize(5);
cout << "~~resize after~~" << endl;
for (int i = 0; i < temp.size(); i++) {
    cout << temp[i] << endl;
}
cs



--------------------------------------------------------------------------------------------------------------

1) 결과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
temp.push_back(1);
temp.push_back(2);
temp.push_back(3);
temp.push_back(4);
 
cout << "~~resize before~~" << endl;
for (int i = 0; i < temp.size(); i++) {
    cout << temp[i] << endl;
}
 
temp.resize(2);
cout << "~~resize after~~" << endl;
for (int i = 0; i < temp.size(); i++) {
    cout << temp[i] << endl;
}
cs


https://msdn.microsoft.com/ko-kr/library/wezs0zy6.aspx

'C++' 카테고리의 다른 글

[C++] switch문 내부에서 변수 선언시 오류  (0) 2016.12.12
[라이브러리] string class 함수  (0) 2016.03.01

WritePrivateProfileString와 GetPrivateProfileString 함수는 API이며 .ini파일을 생성 및 저장/로드 할 수 있다.


BOOL WINAPI WritePrivateProfileString(
  _In_ LPCTSTR lpAppName,
  _In_ LPCTSTR lpKeyName,
  _In_ LPCTSTR lpString,
  _In_ LPCTSTR lpFileName
);

lpAppName : 섹션 이름(그룹)

lpKeyName : 키(hash-key와 비슷)

lpString : 키에 대응되는 값

lpFileName : ini파일의 경로


DWORD WINAPI GetPrivateProfileString(
  _In_  LPCTSTR lpAppName,
  _In_  LPCTSTR lpKeyName,
  _In_  LPCTSTR lpDefault,
  _Out_ LPTSTR  lpReturnedString,
  _In_  DWORD   nSize,
  _In_  LPCTSTR lpFileName
);

lpAppName : 섹션 이름(그룹)

lpKeyName : 키(hash-key와 비슷)

lpDefault : 키를 찾지 못했을 경우 얻는 값

lpReturnedString : ini파일에서 해당 키를 통해 받아올 텍스트의 버퍼

nSize : 버퍼의 크기

lpString : 키에 대응되는 값

lpFileName : ini파일의 경로



키는 ini파일 상에 존재하지만 값은 존재하지 않을 경우 해당 값은 어떻게 될까?


1. SIZE= 상태로 존재할 경우

 - buffer에 NULL값이 들어간다.


[BASE]

SIZE=

DELAY=0


SIZE 출력시 아무것도 보이지 않는다 = NULL


2. SIZE 상태로 존재할 경우

 - 키가 없다고 간주하여 buffer에 디폴트 문자열이 들어간다.


[BASE]

SIZE

DELAY=0


SIZE 출력시 디폴트 문자열이 출력된다.


https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms725501(v=vs.85).aspx

https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms724353(v=vs.85).aspx

'WIN32-MFC' 카테고리의 다른 글

[MFC] 현재 시간 가져오기  (0) 2016.12.02
[MFC] main함수의 위치는?  (0) 2016.11.23
[WIN32] 외부 링크 오류 해결  (0) 2016.11.22
[WIN32] LPSTR->LPCWSTR 임시로 고쳐놓은 것  (0) 2016.11.22
[WINAPI] 오류 해결  (0) 2016.11.21

.vcxproj : 프로젝트, 실행파일이나 dll등과 같은 파일을 만듦

.sln : 솔루션, 프로젝트를 관리


1개의 솔루션에 여러 개의 프로젝트가 들어갈 수 있다.


참고

http://egloos.zum.com/chez/v/1215189

http://luyin.tistory.com/193

이미 빌드되어있는 dll과 헤더들은 사용X - opengl 관련 함수들이 같이 컴파일되지 않은 상태라 사용불가, getBuildInformation() 으로 확인 가능


cmake를 통해 새로 빌드해주어야 한다.



cmake에서 configure하고 난 뒤 WITH_OPENGL 체크하고 다시 configure한 후에 generate한다.

생성된 ALL_BUILD를 통해 빌드하면 release/debug모드의 bin(.dll)/lib(.lib)을 얻을 수 있다.


바뀐 .dll을 등록하기 위해 이전에 등록해두었던 환경변수를 수정하고

사용하고 있던 프로젝트의 경로들도 수정해준다.



과정을 완료하면 위의 사진처럼 getBuildInformation() 함수를 통해 확인할 수 있다.


그 후 테스트해보면 opengl관련 함수들도 잘 작동된다!




참고 : http://cinaburo.tistory.com/1

VideoCapture를 이용해서 카메라 출력한 뒤 opengl 도형 띄우는 예제를 실행시켜봤는데 색이 이상하게 나온다

피부나 붉은 계통은 푸르게 나오고 푸른 계통은 붉게 나오는 것


Mat은 capture.read(frame); 할 시 BGR로 이미지를 read하나보다.

cvtColor(frame, frame, CV_BGR2RGB); 사용하니 색이 바르게 나온다.

root folder : 각 사물의 명칭

deco : 머리 위의 악세사리

head : 동물 귀/천사링 같은 종류

nose : 코

mouse : 입 주변의 악세사리 종류(이빨, 입에서 뱉는 종류)

jaw : 턱 아래의 물체


- 수정 가능성 있음

http://jepsonsblog.blogspot.kr/2012/11/rotation-in-3d-using-opencvs.html


회전행렬 사용한 듯

+ Recent posts