본문 바로가기

메모장

(49)
[C++] 구조체의 크기 (size of struct) 구조체의 크기는 구조체를 구성하는 요소들에 의해 정해 집니다. 하지만 크기를 출력해보면 예상한 값과 다르게 나올때가 있는데, 그 이유와 구조체의 구조에 대해 알아보겠습니다. struct Packet00{ charflags;// 1byte shortcount;// 2byte intmsg;// 4byte } sizeof(Packet00);// 8byte 위 구조체의 크기는 어떻게 정해졌을 까요? 구조체는 구조체가 포함하고 있는 요소들중 가장 큰 값을 기준으로 그 값의 배수만큼의 크기를 가집니다. Packet 구조체의 요소들의 크기를 더한 값은 7byte입니다. 하지만 요소들 중 크기가 가장 큰 int가 4byte의 크기를 가지기 때문에 총 크기는 그 배수인 8byte로 정해집니다. 또 다른 예를 들어보겠습니..
[Sourcetree] 소스트리 로그인 오류시 해결 방법 (인증 오류 해결 방법) 소스트리를 사용하다 보면 계속해서 git 로그인창이 뜨거나, push, pull 등 원격 관련된 액션을 할 때 레퍼지토리를 못 찾는 경우가 있다. 가장 유력한 원인은 소스트리가 저장하고 있는 비밀번호와 계정 정보이다. C:\Users\[계정이름]\AppData\Local\Atlassian\SourceTree (단말마다 조금씩 다를 수 있음) 위의 경로로 가면 passwd, userhosts 파일이 있다. 이 두 파일을 지우면, 소스트리에서 계정 정보를 다시 요청한다. 위 방법으로 해결이 안되면, win+S (검색)나 제어판에서 자격 증명 관리자를 열어준다. windows 자격 증명칸으로 들어가서 git, sourcetree에 관련된 자격 증명들을 모두 지운후에 소스트리 인증을 다시 해본다. ++ 추가 +..
[Linux] Nodejs Error: listen EACCES 0.0.0.0:80 에러 리눅스 Node js 실행 시 위와 같은 오류 발생. 방화벽도 확인해보고 포트도 확인해봤지만 문제 없음. 알아보니 리눅스에서 1024 이하의 well known port를 사용하려면 root 권한이 필요하다고 한다. 1025 이상의 포트를 쓰거나. 루트 권한으로 실행시키면 오류 없이 실행 된다.
[Linux] Node.Js 프로그램 실행시 인자 받는법 Node.Js 프로그램을 실행시킬때 인자를 입력하고 사용하는 방법. processs.argv[] process 객체의 argv에는 현제 실행하고 있는 프로세스가 실행했을때 입력받은 값들이 저장되어있다. $node program.js testArgs1 testArgs2 12341234 위의 명령어로 program.js 를 실행시키면 process.argv[0] = 노드실행파일_위치\node.exe process.argv[1] = program.js_위치\program.js process.argv[2] = testArgs1 process.argv[3] = testArgs2 process.argv[4] = 12341234 위와 같이 process.argv에 순서대로 저장된다. 이때 process.argv[0]..
리눅스 c++ 메모 끄적끄쩍 주제 없이 모아놓고 ctrl + F 로 찾아보려고 만듬 소켓 종료함수 소켓 닫기 소켓 닫을때 close와 shutdown차이 close -> 소켓 종료 함수. 성공하면 0, 실패하면 -1 반환. shutdown -> 소켓 종료 함수. how_to 옵션에 따라 read buffer와 write buffer중 어떤 것을 차단할지 선택. 성공 0,실패 -1 int close(int socket_fd); int shutdown(int socket_fd, int how_to); how to 상수 SHUT_RD : recv buffer 만 차단 SHUT_WR : send buffer 만 차단 SHUT_RDWR : 둘다 차단. TCP 소켓 옵션 TCP socket 옵션 TCP 소켓 SO_LINGER 옵션 -> 소켓 ..
[Linux] rm, rmdir 명령어 1. rm 파일이나 디렉토리를 삭제한다. rm [옵션] 경로 ex) rm -rf * // 현재 디렉토리의 모든 것을 강제로 삭제 옵션 -r : 해당 폴더와 해당 폴더 안에있는 모든 파일, 디렉토리까지 제귀적으로 삭제. rm 명령어로 디렉토리를 제거하기 위해서는 '-r'이나 '-d' 옵션이 있어야한다. -d : 빈 디렉토리를 삭제하는 옵션 -i : 각 파일 및 디렉토리를 삭제할 때 삭제여부를 묻도록 하는 옵션 -f : 모든 오류를 무시하고 강제로 삭제하는 옵션 -v : 모든 처리과정 출력 2. rmdir 디렉토리를 삭제한다. 비어있는 디렉토리가 아니면 실패한다. rmdir [옵션] 경로 옵션 --ignore-fail-on-non-empty : 디렉토리가 비어있지 않을때 오류문을 던지지 않는다. (디렉토리는..
C#의 자동 구현 프로퍼티 (Auto-Implemented Properties, 자동 구현 속성) C#에는 프로퍼티라는 개념이 있습니다. 프로퍼티는 객체지향 패러다임의 정보은닉을 좀 더 간결하고 간단하게 구현 할 수 있도록 해줍니다. class MyClass { private string name; public string GetName(){ return name; } public void SetName(string name){ this.name = name; } } 위 와 같은 코드를 class MyClass { private string name; public string Name { get { return name; } set { name = value; } } } 이렇게 간단하게 구현할 수 있습니다. 자동 구현 프로퍼티를 사용하면 이를 더 간단하게 구현 할 수 있습니다. class MyClas..
[Unity] 유니티 Awake의 호출 시점에 관하여 유니티는 기본적으로 싱글 스레드로 돌아가도록 설계되어 있다. 그 중 Awake는 씬이 시작했을때 프리팹의 인스턴스화 직 후에 호출되는 유니티 콜백함수다. 이때 게임 오브젝트가 비활성화 상태라면 오브젝트가 활성화 되거나 연결된 다른 스크립트 함수에서 호출될 때 까지 Awake의 호출이 지연된다. 이런 조건부 호출 때문에 Awake 호출 시점을 혼동하는 경우가 있다. 예시를 들어보겠다. public class A : MonoBehaviour{ private void Awake(){ Debug.Log("Awake"); } public void FunctionA(){ Debug.Log("FunctionA"); } } public class B{ public void InitA(){ var a = GameObje..