블로그 이미지
smstock

카테고리

분류 전체보기 (54)
취미 (8)
공부 (32)
인프라 (1)
Unity (0)
프로그램 (31)
낙서장 (12)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글

1. svn기능중 아래의 기능이 설치 되어 있는지 확인한다.

2. 명령 프롬프트를 실행한다(윈도우키 + R -> cmd)

 

3. 문제 있는 폴더 위치로 이동한다

 

4. 아래의 명령어를 순서대로 실행한다(파일이 삭제되니까 필요한 파일일 경우 백업 해놓는다)

svn update --set-depth empty
svn update --set-depth infinity

Posted by smstock
, |

외부 라이브러리 같은 것을 가져다 쓸때 빌드 오류 나는 경우가 있다.

 

아래와 같은 오류가 나오는데

 

Severity Code Description Project File Line Suppression State Error C4668 '_WIN32_WINNT_WIN10_RS2' is not defined as a preprocessor macro, replacing with '0' for '#if/#elif"

 

프로젝트의 Build.cs 에 아래 코드를 추가하면 해결 된다.

 

bEnableUndefinedIdentifierWarnings = false;

 

Posted by smstock
, |

프로그램을 실행하다 보면 해당 에러가 나오는 경우가 존재한다.

 

window에서는 32bit, 64bit 문제 없이 잘 돌아가는게 arm processer에서만 죽는 현상이다.

 

해당 문제는 64bit로 빌드하면 멀쩡하게 돌아가던게 32bit로 빌드한걸 실행했을 때만 문제가 발생한다.

 

에러난 곳을 살펴보면 struct 안에 존재하는 변수의 레퍼런스에 접근할 때 죽는 것을 확인할 수 있다.

 

일반적으로 struct를 사용할 때 pragma pack을 활용을 많이 한다. 해당 기능의 활용이 문제를 야기하는 것 같다.

 

예를 들어 아래와 같은 상황을 보면

 

#pragma pack(push, 1)

struct STemp

{

int8 a;

int16 b;

int32 c;

};

#pragma pack(pop)

 

static void get_value( int16 *p_value)

{

char str[] = "9999.999";

*p_value = atoi( str); // <-- 에러가 발생하는 위치

}

 

static void get_value( int32 *p_value)

{

char str[] = "9999.999";

*p_value = atoi( str); // <-- 에러가 발생하는 위치

}

 

int main( int argc, char *argv[])

{

STemp sData;

get_value( &sData.b); // <--- 정상 실행

return 0;

}

 

int main( int argc, char *argv[])

{

STemp sData;

get_value( &sData.b);

get_value( &sData.c); // <--- error

return 0;

}

 

위와 같은 결과가 나오는데 아래처럼 직접 값을 입력하면 크래시는 안난다;;

*p_value = 99.99;

 

결론

- 해당 오류 발생하면 pragma pack 사용하지말고 패킷을 serialize해서 전송하는 방식으로 수정하자

 

참고

https://decdream.tistory.com/491

 

signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr

참고 URL : http://stackoverflow.com/questions/3246441/what-does-bus-adraln-invalid-address-alignment-error-means http://www.badayak.com/3302 일반적으로 point 변수에 잘못된 값이 들어가 있을 경우는 nu..

decdream.tistory.com

https://badayak.com/3302

 

Bus error? 버스 에러? 뭐지?

프로그램을 실행해 보니 전혀 본 적이 없는 에러가 출력되네요. Bus error? 프로그램 코드를 보면 전혀 문제가 없는데, 실행만 하면 Bus error가 발생합니다. 재미있는 것을 I386 컴퓨터에서는 발생하지 않는데, A..

badayak.com

 

Posted by smstock
, |

64비트에 대한 ANSI 표준은 살펴보면 long long형으로 정의되어 있다

 

64비트 UNIX 운영체제의 경우에만 long형이 64비트로 정의되어 있다

 

유닉스/리눅스 시스템에서 사용하는 gcc 컴파일러들은 거의 모두 long long형을 지원한다

 

int64_t 모든 플랫폼을 지원하기 위해서는 아래와 같이 타입 정의를 하여 사용한다

 

윈도우의 경우

#ifdef WIN32

typedef __int64 int64_t;

#else 

typedef long long int64_t; // 또는 Unix의 헤더파일들 include 

#endif

 

 

참조

http://egloos.zum.com/aslike/v/2718804

https://codeday.me/ko/qa/20190310/36478.html

 

 

Posted by smstock
, |


안드로이드 sdk 설치 후

도스창에서 아래 명령어 실행해서 확인


로그 파일로 복사

  • adb logcat -d > logcat.txt


연결된 장치 정보

  • adb devices


안쓰는 장치 정리
  • adb -s 장치이름 kill-server

  • ex) adb -s emulator-0000 kill-server


실시간 로그 보기

  • adb logcat -s 원하는 로그 이름

  • ex) adb logcat -s UE4

  • ex) adb logcat -s Unity


Posted by smstock
, |


 


데이터베이스 복원하기 위해서 SQL Server Management Studio를 실행후 SQL서버로 접속합니다.





DB 복원을 하기위해서 데이터 베이스에서 우클릭을 하여 데이터베이스 복원을 선택합니다.





이제 데이터베이스 복원 창이 나오게 되며 여기서 백업된 DB 파일 경로를 지정하기위해 일반 탭에서의 장치에 체크 후 '....' 을 선택하여 들어갑니다




백업장치 선택 창이 나오며 추가를 우측 부분의 추가를 선택한 후 핵당 DB 백업 파일을 선택 후 확인을 선택합니다.





이제 데이터 베이스 복원 마지막 과정인데요 상단에 데이터베이스는 복원된 데이터베이스의 사용할 이름을 입력하신 후에 복원 사용할 백업 세트 선택 란에서 위에서 지정한 해당 데이터베이스 백업파일을 체크하신후 확인을 선택하시면 복원이 진행하게 됩니다 복원이 완료되면 복원이 완료 되었습니다라는 메시지가 나오면서 복원이 완료되게 됩니다.




위 내용을 보시면 데이터베이스가 복원된것을 확인 하실 수 있습니다 복원하신 후 꼭 데이터베이스의 내용이 정확이 복원이 된것을 확인하시기 바랍니다.




 

 MSSQL DB 복원 후 사용자계정 매핑



이제 DB(데이터베이스)복원이 완료되었으니 사용자계정을 연결하는 과정이 필요합니다

예를 들어 DB를 복원하였는데 SQL서버를 통한 계정을 로그인을 하지못한다면 데이터베이스를 쓸수 없게 되겟죠??그러한 과정에서 SQL서버로 로그인할 수있는 계정을 연결하여야 됩니다.

좀더 자세한 설명을 위해서 그림으로 설명 드리겠습니다




위 그림을 보시면 좌측은 backup_DB 복원한 DB의 사용자계정 이며, 우측은 SQL서버의 접속을 위한 계정입니다 그런데 좌측에 있는 로그인 계정은 backup_user라는 계정이 있으나 우측의 있는 로그인 계정은 backup_user라는 계정이 없습니다 


하지만 SQL계정의 backup_user가 없으니 계정을 생성후 데이터베이스 계정 매핑과정 통해 복원한 DB를 외부접속을 하여 제어할 수가 있습니다.


MSSQL 사용자 계정 매핑 과정

1. 데이터베이스 계정과 동일한 SQL서버 접속계정 생성

2. 데이터베이스와 동일한 계정으로 생성한 계정을 SQL 서버와 매핑





SQL서버에서 보안 탭의 로그인 부분을 우클릭 후 새 로그인을 선택합니다






신규 계정생성 창이 나오며 일반탭으로 이동후 여기서 위에서 표시된 부분을 모두 작성하시면됩니다.



로그인 이름 : SQL로 접속할 계정(DB 계정과 동일한 계정을 하여 주시기 바랍니다.)


SQL Server 인증 : 이부분을 체크하여 주셔야 외부에서 접속이 가능합니다.


암호 만료 강제 적용 : 계정생성시에 이부분을 체크하게 되시면 일정기간이 지나면 암호가 변경되어 로그인이 안되게 됩니다.(꼭 해제 하시기 바랍니다.)





일반 탭에서의 설정이 완료된 후에 사용자 매핑 설정 탭으로 이동합니다

이 로그인으로 매핑된 사용자 지정의 복원한 DB를 체크후 하단의 계정권한을 db_owner와 public 권한을 주시기 바랍니다.



MSSQL 사용자 계정 권한


db_accessadmin : Windows 로그인, Windows 그룹 및 SQL Server 로그인에 대한 액세스를 추가, 제거할 수 있음

 

db_backupoperator : 데이터베이스를 백업할 수 있음

 

db_datareader : 사용자 테이블의 모든 데이터를 읽을 수 있음

 

db_datawriter : 사용자 테이블에서 데이터를 추가, 삭제, 변경할 수 있음

 

db_ddladmin : 데이터베이스에서 모든 DDL(데이터 정의어) 명령을 실행할 수 있음

 

db_denydatareader : 데이터베이스 내에 있는 사용자 테이블의 데이터를 읽을 수 없음

 

db_denydatawriter : 데이터베이스 내의 사용자 테이블의 데이터를 추가, 수정, 삭제할 수 없음

 

db_owner : 데이터베이스에서 모든 구성 및 유지 관리 작업을 수행할 수 있음

 

db_secutiryadmin : 멤버 자격을 수정하고 사용권한을 관리할 수 있음

 

public : 모든 데이터베이스 사용자에게 디폴트로 부여되는 최소 권한을 갖는 역할





마지막으로 상태 탭으로 이동후 데이터베이스 엔진 연결 권한과 로그인을 사용을 체크 후 확인을 선택하여 완료합니다.




 

 MSSQL 사용자 계정 쿼리로 매핑하기


MSSQL 재설치, MDF파일 연결, DB복원 후에는 사용자 연결이 끊어져 있습니다 각 사용자별 권한이 설정되어 있다면 사용자를 삭제하고 재 설정하는것은 번거로운 과정입니다. 

하지만 sp_change_users_login 프로시저를 사용하면 사용자를 삭제하지 않고 각 DB 사용자 이름과 SQL 로그인 이름을 쉽게 연결할 수 있습니다




한번씩 위와 같은 에러가 발생하며 계정이 생성되는 경우가 있습니다 이러한 경우 쿼리로 계정을 매핑하는 과정을 하여야 합니다.





우선 초기 SQL Server Management로 들어가 상단의 새쿼리를 클릭합니다.






처음 쿼리를 새쿼리를 선택하게 되면 기본적으로 설정된 DB로 쿼리연결이 되게 됩니다 변경할 DB의 내용은 backup_DB의 내용을 변경이 필요하니 backup_DB로 쿼리연결해야되는데, 변경방법은 두가지가 있습니다.




두가지 방식을 한번에 설명하겠습니다. 좌측 방식은 MSSQL에 있는 DB 목록을 확인한후 선택하는 방식이며 우측은 MSSQL의 use 명령을 사용하여 DB를 선하는 방식 있으며, 두가지중 편한 방식을 사용하시면 됩니다.






위 그림처럼 명령어로 사용하여 적용하시면 됩니다.


go

EXEC SP_CHANGE_USERS_LOGIN 'UPDATE_ONE','로그인할 사용자 계정','로그인할 사용자 계정'





 

 MSSQL 외부접속 테스트




이제 모든 설정이 완료 되었으니 마지막으로 접속테스트를 하여야 됩니다

안하시는 분들도 간혹있지만 접속테스트를 안하시고 지나치게 된다면 나중에 DB접속이 안될때에 장애원인을 빠르게 대처하기가 어려움이 발생하실수 있기때문에 꼭 접속테스트를 거치시기 바랍니다.



위 그림의 빨간 박스에 표시된 부분을 모두 입력후 로그인 하시기 바랍니다.


서버이름 : DB복원 SQL 서버의 IP

인증 : SQL Server 인증

로그인 : 위에서 매핑한 사용자 계정 

암호 : 위에서 매핑한 사용자 계정 패스워드





접속하게 되면 복원 backup_DB를 확인하실 수 있습니다.

 

출처 : http://server-talk.tistory.com/128

Posted by smstock
, |

사용법: netsh [-a 별칭 파일] [-c 컨텍스트] [-r 원격 컴퓨터]

              [-u [DomainName\]UserName] [-p 암호 | *] [명령 | -f 스크립트 파일]


이 컨텍스트에 있는 명령:

?              - 명령 목록을 표시합니다.

add            - 항목 목록에 구성 항목을 추가합니다.

advfirewall    - `netsh advfirewall' 컨텍스트의 변경 내용입니다.

bridge         - `netsh bridge' 컨텍스트의 변경 내용입니다.

delete         - 항목 목록에서 구성 항목을 삭제합니다.

dhcpclient     - `netsh dhcpclient' 컨텍스트의 변경 내용입니다.

dnsclient      - `netsh dnsclient' 컨텍스트의 변경 내용입니다.

dump           - 구성 스크립트를 표시합니다.

exec           - 스크립트 파일을 실행합니다.

firewall       - `netsh firewall' 컨텍스트의 변경 내용입니다.

help           - 명령 목록을 표시합니다.

http           - `netsh http' 컨텍스트의 변경 내용입니다.

interface      - `netsh interface' 컨텍스트의 변경 내용입니다.

ipsec          - `netsh ipsec' 컨텍스트의 변경 내용입니다.

lan            - `netsh lan' 컨텍스트의 변경 내용입니다.

mbn            - `netsh mbn' 컨텍스트의 변경 내용입니다.

namespace      - `netsh namespace' 컨텍스트의 변경 내용입니다.

netio          - `netsh netio' 컨텍스트의 변경 내용입니다.

p2p            - `netsh p2p' 컨텍스트의 변경 내용입니다.

ras            - `netsh ras' 컨텍스트의 변경 내용입니다.

rpc            - `netsh rpc' 컨텍스트의 변경 내용입니다.

set            - 구성 설정을 업데이트합니다.

show           - 정보를 표시합니다.

trace          - `netsh trace' 컨텍스트의 변경 내용입니다.

wcn            - `netsh wcn' 컨텍스트의 변경 내용입니다.

wfp            - `netsh wfp' 컨텍스트의 변경 내용입니다.

winhttp        - `netsh winhttp' 컨텍스트의 변경 내용입니다.

winsock        - `netsh winsock' 컨텍스트의 변경 내용입니다.

wlan           - `netsh wlan' 컨텍스트의 변경 내용입니다.



출처: http://dutchcoffeecafe.tistory.com/36 [더치커피 블로그]

Posted by smstock
, |

Boost 빌드

공부/프로그램 / 2018. 3. 20. 18:25

부스트를 사용할 때 포함 디렉터리만 추가해서 사용해도 되는 기능이 있지만 빌드를 해야지만 사용 가능한 기능도 있다

 

libboost_thread-vc... 같은 파일이 없다고 오류가 뜨면 

 

아래와 같이 빌드해서 사용하자

 

1) bootstrap.bat실행(bjam.exe b2.exe 파일 생성용)

 

2)도스창에서 아래와 같이 입력

- bjam.exe toolset=msvc link=static threading=multi runtime-link=static release stage

- 64비트의 경우 address-model=64 architecture=ia64 추가

 

빌드가 완료되면 Stage 폴더에 libboost_... 이름의 파일이 생성된다

 

 

 

참고 : http://egloos.zum.com/anster/v/2157882

 

Posted by smstock
, |
  1. CString GetDefaultBrowser()
  2. {
  3.     TCHAR szPath[_MAX_PATH] = {0,};
  4.     HFILE h = _lcreat("dummy.htm",0) ;
  5.     _lclose(h) ;
  6.     FindExecutable(_T("dummy.htm"), NULL, szPath);
  7.     DeleteFile(_T("dummy.htm"));
  8.     return CString(szPath);
  9. }
  10. ...
  11. ::ShellExecute (NULL, _T("open"), GetDefaultBrowser(), _T("http://www.google.com"), NULL, SW_SHOWNORMAL);




출처 http://hyacinth.byus.net/moniwiki/wiki.php/C%2B%2B/(Windows)%EA%B8%B0%EB%B3%B8%20%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%20%EC%97%B4%EA%B8%B0

Posted by smstock
, |

찾을 파일이 없습니다.

찾기가 중지되었습니다.


위와 같이 나오면


Alt + Ctrl + Pause/Break 키 누르면 정상으로 돌아옴

Posted by smstock
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함