Screen이란?

리눅스에서 물리 터널을 가상 터미널로 다중화하여 특정 서비스 또는 프로그램을 백그라운드에서 돌리다가, 필요하면 포어그라운드로 가져오는 명령이라고 이해하면 편하다.


명령어

  • screen -ls
    • 백그라운드에 있는 세션 리스트를 가져온다.
  • screen -S 세션명
    • 유저가 지정한 '세션명'으로 screen을 시작한다.
  • screen -R 세션명
    • 이미 존재하는 '세션명'을 포어그라운드로 들고와 작업을 진행한다.
  • screen -D -R 세션명
    • 이전 세션이 attach 된 상태라면 detach 하고 세션을 복원한다.
  • screen -r -d
    • 세션 강제로 detach
  • screen -X 세션명
    • 동시에 여러 사용자가 한 화면을 공유하면서 작업을 진행한다.
  • screen -X -S 세션명 kill
    • 해당 '세션'을 삭제한다.
  • Ctrl + a + d
    • 스크린 attach이후 스크린을 detach하는 단축키
  • Ctrl + a + k
    • 스크린 attach이후 스크린을 종료하면서 빠져나옴
  • Ctrl + a + esc
    • 위 명령을 사용하면서 방향키를 사용하면 스크롤 가능
  • Ctrl + a + |
    • 세로로 화면 분할
  • Ctrl + a + ?
    • 키보드 단축키 보기

 

운영체제란 시스템 하드웨어를 관리하면서 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어를 말한다.

최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저(가상 머신) 위에서 실행되기도 한다.

 

정리하자면 컴퓨터 시스템 자원(HW)를 효율적으로 관리하여 사용자에게 서비스를 제공하는 소프트웨어라고 말할 수 있겠다.


시스템 하드웨어

시스템 하드웨어는 다음과 같이 존재한다.

  • 프로세서
    • 종류 
      • CPU
      • 그래픽카드 (GPU)
      • 응용 전용 처리장치 등
    • 컴퓨터의 두뇌에 해당
      • 연산을 수행하며 컴퓨터의 모든 장치의 동작을 제어한다.
      • 프로세서 내부에는 제어장치가 레지스터와 연상장치를 제어하며 레지스터와 연산장치는 서로 상호작용하며 데이터를 처리한다.
        • 레지스터란?
          • 프로세서 내부에 있는 메모리
            • 프로세서가 사용할 데이터를 저장
            • 컴퓨터에서 가장 빠른 메모리
          • 종류
            • 용도에 따라
              • 전용 레지스터, 범용 레지스터
            • 사용자가 정보 변경 가능 여부에 따라
              • 사용자 가시 레지스터(데이터, 주소 레지스터)
              • 사용자 불가시 레지스터
                • 종류
                  • 프로그램 카운터
                    • 다음 실행할 명령어의 주소를 보관하는 레지스터. 계수기로 되어있어 실행할 명령어를 메모리에서 읽으면 명령어의 길이만큼 증가하여 다음 명령어를 가리키며, 분기 명령어는 목적 주소로 갱신할 수 있다.
                  • 명령어 레지스터
                    • 현재 실행하는 명령어를 보관하는 레지스터이다.
                  • 누산기
                    • 데이터를 일시적으로 저장하는 레지스터이다.
                  • 메모리 주소 레지스터
                    • 프로세서가 참조하려는 데이터의 주소를 명시하여 메모리에 접근하는 버퍼 레지스터이다.
                  • 메모리 버퍼 레지스터
                    • 프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관하는 버퍼 레지스터이다. 메모리 데이터 레지스터라고도 한다.
            • 저장하는 정보의 종류에 따라
              • 데이터 레지스터
                • 함수 연산에 필요한 데이터를 저장함. 값, 문자 등을 저장하므로 산술 연산이나 논리 연산에 사용하며, 연산 결과로 플래그 값을 저장한다.
              • 주소 레지스터
                • 주소나 유효 주소를 계산하는데 필요한 주소의 일부분을 저장함. 주소 레지스터에 저장한 값(값 데이터)을 사용하여 산술 연산을 할 수 있다.
                • 종류
                  • 기준 주소 레지스터
                  • 인덱스 레지스터
                  • 스택 포인터 레지스터
              • 상태 레지스터
    • 운영체제와 프로세서
      • 프로세서에게 처리할 작업 할당 및 관리
        • 프로세스(Process) 생성 및 관리
      • 프로그램의 프로세서 사용 제어
        • 프로그램의 프로세서 사용 시간 관리
        • 복수 프로그램간 사용 시간 조율 등
  • 메모리
    • 종류(위로 갈수록 상위계층. 상위계층은 속도&가격이 높고 용량이 낮으며 하위계층은 속도&가격이 낮고 용량이 높다.)
      • 레지스터
      • 캐시
        • 프로세서 내부에 있는 메모리(L1, L2 캐시등)
          • 속도가 빠르고, 가격이 비쌈
        • 메인 메모리 입출력 병목현상을 해소.
        • 캐시의 동작
          • 일반적으로 HW적으로 관리됨
          • 캐시 히트(Cache hit)
            • 필요한 데이터 블록이 캐시 존재
            • 데이터를 미리 가져와 프로세서와의 데이터 교환이 매우 빠르게 이루어질 수 있음
          • 캐시 미스(Cache miss)
            • 필요한 데이터 블록이 없는 경우
            • 데이터가 없으면 메인 메모리에서 들고와야하고, 결국 처리가 느려짐
        • 지역성(Locality)
          • 공간적 지역성(Spatial locality)
            • 참조한 주소와 인접한 주소를 참조하는 특성
              • 예) 순차적 프로그램 수행
          • 시간적 지역성(Temporal locality)
            • 한번 참조한 주소를 곧 다시 참조하는 특성
              • 예) For문 등의 순환문
          • 지역성은 캐시 적중률(cache hit ratio)과 밀접
            • 알고리즘 성능 향상을 위한 중요한 요소 중 하나
      • 메인 메모리
        • 주 기억장치로써, 프로세서가 수행할 프로그램과 데이터를 저장함.
          • DRAM을 주로 사용
            • 용량이 크고, 가격이 저렴
          • 디스크 입출력 병목현상(I/O bottleneck)을 해소
      • 보조기억장치 (프로그램과 데이터를 메모리에 옮겨야만 실행 가능)
        • Auxiliary memory / Secondary memory / Storage
        • 프로그램과 데이터를 저장
        • 프로세서가 직접 접근할 수 없음(주변장치)
          • 주기억장치를 거쳐서 접근
          • (프로그램 / 데이터 > 주기억장치)인 경우는?
            • 가상 메모리 사용
        • 용량이 크고, 가격이 저렴함.
    • 데이터를 저장하는 장치
      • 프로그램(OS, 사용자sw등), 사용자 데이터 등
    • 메모리와 운영체제
      • 메모리 할당 및 관리
        • 프로그램의 요청에 따른 메모리 할당 및 회수
        • 할당된 메모리 관리
      • 가상 메모리 관리
        • 가상 메모리 생성 및 관리
        • 논리주소 -> 물리주소 변환
  • 시스템 버스(System bus)
    • 하드웨어들이 데이터 및 신호를 주고받는 물리적인 통로
    • 종류
      • 데이터 버스
        • 프로세서와 메인 메모리, 주변장치 사이에 데이터를 전송함. 데이터 버스를 구성하는 배선 수는 프로세서가 한번에 전송할 수 있는 비트 수를 결정하는데, 이를 워드라 한다.
      • 주소 버스
        • 프로세서가 시스템의 구성요소를 식별하는 주소 정보를 전송한다. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정한다.
      • 제어 버스
        • 프로세서가 시스템의 구성 요소를 제어하는데 사용한다. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 동작을 결정한다.
시간 레지스터 동작 설명
1 PC -> MAR PC에 저장된 주소를 프로세서 내부 버스를 이용하여 MAR에 전달한다.
2 Memory_mar -> MAR MAR에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출한 후 이 명령어를 MBR에 저장한다. 이때 제어장치는 메모리에 저장된 내용을 읽도록 제어신호를 발생시킨다.
PC + 1 -> PC 다음 명령어를 인출하려고 PC를 증가한다.
3 MBR -> IR MBR에 저장된 내용을 IR에 전달한다.
    %PC: 프로그램 카운터, MAR: 메모리 주소 레지스터, MBR: 메모리 버퍼 레지스터, IR: 명령어 레지스터
  • 주변 장치
    • 종류
      • 입력장치
        • 마우스
        • 키보드
        • 터치스크린
        • 카메라 등
      • 출력장치
        • 모니터
        • 프린터
        • 스피커 등
      • 저장장치
        • USB, CD, HDD, SDD 등
    • 주변장치와 운영체제
      • 장치 드라이버 관리
        • 주변장치 사용을 위한 인터페이스 제공
      • 인터럽트(Interrupt) 처리
        • 주변장치의 요청 처리
      • 파일 및 디스크 관리
        • 파일 생성 및 삭제
        • 디스크 공간 관리 등

만약 우리가 지각인식, 일반화, 연상, 그리고 생각을 위한 고차원 유기체의 능력을 이해하려고 한다면 우리는 반드시 세가지 근본 질문을 해야한다.

 

1. 생물학적 시스템에 의해 물리적 세계가 보내지거나 탐지된 것들은 어떻게 정보화 되는가?

2. 저장되거나 기억되는 정보들은 어떠한 형태인가?

3. 스토리지 또는 메모리에 포함된 정보는 인식과 행동에 어떠한 영향을 주는가?

 

이러한 질문들 중 첫번째는 감각 생리학의 일부분에 있고 상당한 이해가 성취된 유일한 것이였다.

이 논문은 주로 두번째와 세번째 질문에 관한 것으로 여전히 질문의 대상이 되는 방대한 양의 추측과 아직 완전하지 않은 이론들을 가진 신경생리학에 기반된 몇가지 사실들을 논할 것이다.

    두번째 질문과 관련하여, 두가지 제안들이 공방을 벌여왔다. 첫번째 제안은 감각정보의 저장이 감각자극과 저장된 패턴사이에 1대1 매핑의 몇가지 종류를 가진 코드 또는 이미지로 표현되는 형태라는 것이다. 이 가설에 따르면. 누군가 이 코드 또는 "배선 다이어그램"로 구성된 신경 시스템을 이해한다면 근본적으로 유기체가 가지고 있었던 "기억 흔적"을 원래의 감각 패턴을 재구성함으로써 유기체가 기억하는 것을 정확히 발견할 수 있어야한다.

 이 가설은 단순성과 준비된 명료성, 그리고 코드로 표현된 메모리라는 아이디어를 중심으로 한 이론적인 뇌 모델이라는데에 매력이 있다. 두번째 제안은 영국의 경험주의 전통으로부터 비롯되었으며 자극 이미지가 실제론 전혀 저장되지 않고 중추 신경계는 단순히 복잡한 스위칭 네트워크와 중심 활동 사이의 새로운 연결 또는 경로 의해 기억되는 반응이라고 추측한다. 이 가설의 가장 최근 발전된 의견으로(예를 들자면, Hebb's의 "셀 어셈블리" 및 Hull의 "대뇌 피질 예측 목표 응답") 자극과 관련된 "응답"은 CNS 자체에 완전히 포함될 수 있다고 추측한다. 여기서 응답은 행동보단 "아이디어"로 간주한다. 이 접근의 중요한 점은 다른 어떤 최신의 코드들도 이 접근법보다 쉽게 자극을 메모리에 간단히 매핑할 수 없다는 것이다.

 

-------------------------------------------------------(번역중)-------------------------------------------------------

 

Whatever in formation is retained must somehow be stored as a preference for a particular response; i.e., the information is contained in connections or associations rather than topographic representations. (The term response, for the remainder of this presentation, should be understood to mean any distinguishable state of the organism, which may or may not involve externally detectable muscular activity. The activation of some nucleus of cells in the central nervous system, for example, can constitute a response, according to this definition.) Corresponding to these two positions on the method of information retention, there exist two hypotheses with regard to the third question, the manner in which stored information exerts its influence on current activity. The "coded memory theorists" are forced to conclude that recognition of any stimulus involves the matching or systematic comparison of the contents of storage with incoming sensory patterns, in order to determine whether the current stimulus has been seen before, and to determine the appropriate response from the organism. The theorists in the empiricist tradition, on the other hand, have essentially combined the answer to the third question with their answer to the second: since the stored information takes the form of new connections, or transmission channels in the nervous system (or the creation of conditions which are functionally equivalent to new connections), it follows that the new stimuli will make use of these new pathways which have been created, automatically activating the appropriate response without requiring any separate process for their recognition or identification. The theory to be presented here takes the empiricist, or "connectionist"' position with regard to these questions. The theory has been developed for a hypothetical nervous system, or machine, called a perceptron. The perceptron is designed to illustrate some of the fundamental properties of intelligent systems in general, without becoming too deeply enmeshed in the special, and frequently unknown, conditions which hold for particular biological organisms. The analogy between the perceptron and biological systems should be readily apparent to the reader. During the last few decades, the development of symbolic logic, digital computers, and switching theory has impressed many theorists with the functional similarity between a neuron and the simple on-off units of which computers are constructed, and has provided the analytical methods necessary for representing highly complex logical functions in terms of such elements. The result has been a profusion of brain models which amount simply to logical contrivances for performing particular algorithms (representing "recall," stimulus comparison, transformation, and various kinds of analysis) in response to sequences of stimuli—e.g., Rashevsky (14), McCulloch (10), McCulloch & Pitts (11), Culbertson (2), Kleene (8), and Minsky (13). A relatively small number of theorists, like Ashby (1) and von Neumann (17, 18), have been concerned with the problems of how an imperfect neural network, containing many random connections, can be made to perform reliably those functions which might be represented by idealized wiring diagrams. Unfortunately, the language of symbolic logic and Boolean algebra is less well suited for such investigations.

Bitmap을 byte[]로 변환하는 방법.

 

 


/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

byte[] ConvertBitmapToByteArray(Bitmap bitmap)
{
    byte[] result = null;
    if(bitmap != null)
    {
    	MemoryStream stream = new MemoryStream();
        bitmap.Save(stream, bitmap.RawFormat);
        result = stream.ToArray();
    }
    else
    {
    	Console.WriteLine("Bitmap is null.");
    }
    return result;
}

 

 

 

 

연산자란 연산 대상이 되는 피연산자에 대한 연산을 수행하는 기호를 뜻한다.

C++에서 사용 가능한 연산자에는 산술 연산자, 관계 연산자, 논리 연산자, 증감 연산자, 대입 연산자, 그리고 비트 연산자가 있다.

 

산술 연산자

산술 연산자는 사칙연산의 연산자들과 나머지 연산자가 있다.

각 연산자의 정의는 다음과 같다.

유형 정의
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int a = 5;
    int b = 2;

    int sum = a + b; //더하기
    int sub = a - b; //빼기
    int mul = a * b; //곱하기
    int div = a / b; //나누기
    int rem = a % b; //나머지

    cout << "sum: " << sum << endl;
    cout << "sub: " << sub << endl;
    cout << "mul: " << mul << endl;
    cout << "div: " << div << endl;
    cout << "rem: " << rem << endl;
}

결과

 

sum: 7
sub: 3
mul: 10
div: 2
rem: 1

산술연산자가 연이어 사용되는 경우에는 아래와 같이 연산 우선순위를 적용한다.

1. 괄호 안의 연산자가 첫번째 우선순위를 가진다.

2. 곱셈, 나눗셈, 나머지 연산자가 그 다음 우선순위를 가진다.

3. 덧셈, 뺄셈 연산자가 그 다음 우선순위를 가진다.

4. 같은 우선순위의 연산자가 나열된 경우 좌측 연산자부터 먼저 처리한다.

 

관계 연산자

관계 연산자는 두 수를 비교하는 연산자이다.

주로 제어문에서 조건을 검사하기위해 많이 사용되며 true 혹은 false를 출력한다.

각 연산자의 정의는 다음과 같다.

 

유형 정의
== 같다
!= 다르다
> 크다
>= 크거나 같다
< 작다
<= 작거나 같다

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int a = 5;
    int b = 2;
    
    bool same = a == b; //같다
    bool diff = a != b; //다르다
    bool big = a > b; //크다
    bool big_or_same = a >= b; //크거나 같다
    bool small = a < b; //작다
    bool small_or_same = a <= b; //작거나 같다

    cout << "same: " << boolalpha << same << endl;
    cout << "diff: " << boolalpha << diff << endl;
    cout << "big: " << boolalpha << big << endl;
    cout << "big_or_same: " << boolalpha << big_or_same << endl;
    cout << "small: " << boolalpha << small << endl;
    cout << "small_or_same: " << boolalpha << small_or_same << endl;
}

결과


same: false
diff: true
big: true
big_or_same: true
small: false
small_or_same: false

논리 연산자

논리 연산자는 And, Or, Not의 세가지 종류가 있다.

각 연산자의 정의는 다음과 같다.

유형 정의
&& 그리고 (AND)
|| 혹은 (OR)
! 아닐때 (NOT)

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    bool AND = true && false;
    bool OR = true || false;
    bool excl = !true;

    cout << "AND: " << boolalpha << AND << endl;
    cout << "OR: " << boolalpha << OR << endl;
    cout << "excl: " << boolalpha << excl << endl;
}

결과

 


AND: false
OR: true
excl: false

증감 연산자

증감 연산자는 변수의 값을 증가시키거나 감소시킬때 사용한다.

각 연산자의 정의는 다음과 같다.

유형 정의
++i 연산 전에 i값 1 증가
i++ 연산 후에 i값 1 증가
--i 연산 전에 i값 1 감소
i-- 연산 후에 i값 1 감소

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

#include 
using namespace std;

int main()
{
    int i = 9;
    cout << "i++: " << i++ << endl; //해당 연산 후에 값 증가
    cout << "i: " << i << endl; //연산 이후에 값이 증가함.

    i = 9;
    cout << "++i: " << ++i << endl; //해당 연산 전에 값 증가됨.

    i = 9;
    cout << "i--: " << i-- << endl; //해당 연산 후에 값 감소
    cout << "i: " << i << endl; //연산 이후에 값이 감소함.

    i = 9;
    cout << "--i: " << --i << endl; //해당 연산 전에 값 감소됨.
}

결과

 


i++: 9
i: 10
++i: 10
i--: 9
i: 8
--i: 8

대입 연산자

대입 연산자는 동일한 변수가 연산자의 좌우에 모두 쓰이는 경우 간단하게 쓰기위해 사용하는 연산자를 말한다.

각 연산자의 정의는 다음과 같다.

유형 정의
+= i += j;  (이 식과 동일: i = i + j)
-= i -= j;  (이 식과 동일: i = i - j)
*= i *= j;  (이 식과 동일: i = i * j)
/= i /= j;  (이 식과 동일: i = i / j)
%= i %= j;  (이 식과 동일: i = i % j)

비트 단위 연산자

비트 연산자는 정수형 데이터의 비트를 직접 제어하는데 사용하는 연산자를 말한다..

각 연산자의 정의는 다음과 같다.

유형 정의 설명
| OR 대응 비트가 하나만 1이어도 1을 출력
^ XOR 대응 비트가 서로 다를 때 1을 출력
<< left shift 지정된 수만큼 비트들을 왼쪽으로 이동시킴
>> right shift 지정된 수만큼 비트들을 오른쪽으로 이동시킴
~ 1의 보수 0비트는 1로, 1비트는 0으로 변환

 

 

 

 

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향 언어  (0) 2021.12.01
[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 데이터 타입  (0) 2020.04.25

    사람은 자신의 삶을 살아가면서 보고 듣고 읽은 것을 통해 배워가고 지식 혹은 지혜를 정립해나아간다.

자신에 대한 정립 또한 마찬가진데, 생각보다 많은 사람들이 주변사람들이 자신에 대한 평가들을 바탕으로 자신이 어떤 사람인지에 대해 정립을 해나가고 있다.

 

나 또한 그랬었다. 비교로 인해 열등감도 가져봤고, 비교로 인해 우월감도 가져봤다. 주변사람들의 언행 하나하나에 신경써가면서 내가 뭔가 더 해야하지 않을까? 내가 아직 많이 부족한가? 라는 생각도 많이 했었다.

 

하지만 나 자신에 대한 믿음이 매우 중요하다는 사실을 알게되었다.

뭐든 배우면 되고 되고 도전하면 된다.

내가 뭐가 부족하건 누가 뭐라건 상관이 없는 것이다.

남이 결정하는 '나'는 중요하지 않고 내가 결정하는 '나'가 중요한 것이다.

 

그리고 그 결정이 나 자신을 만든다.

 

'나'는 생각보다 괜찮은 사람이다. 그리고 내가 원하는 모든 것을 이루어 갈 것이다.

또한 내가 '나'를 생각하듯 '남'을 생각하자. 세상엔 가치 없는 사람이란 없으니까.

 

내가 해준 칭찬 한마디가 '남'이 다시 한번 자신의 가치를 정립하는 계기가 될 수 있으니까.

'인생' 카테고리의 다른 글

고민  (0) 2025.01.07
인재의 기준  (0) 2021.10.26

C++에서 사용 가능한 데이터 타입은 정수형, 실수형, 문자형, 그리고 논리형이 있다.

각 데이터 타입은 상수 혹은 변수형태로 표현이 가능하다.

상수는 값이 변경되지 않는 데이터를 말하며 변수는 상황에 따라 변하는 데이터를 말한다.

그럼 기본적인 자료형의 종류를 알아보자

 

정수형

정수형 데이터타입은 크게 세가지로 이루어져있다.

short, int, long타입이다. 각 타입은 하나의 정수를 저장하기 위한 기억공간의 크기로 구분되는데, 통상 int 타입을 기준으로 short 타입은 int 타입의 반이, 그리고 int 타입은 long 타입의 반이 할당된 공간이 주어진다.

 

ex)

int a;

short b;

long c;

 

해당 타입들에는 타입 앞에 unsigned란 예약어를 붙일 수 있다.

unsigned는 말 그대로 부호가 붙지 않은 정수. 즉, 양수만을 저장하는 변수를 선언할 때 사용된다. 이는 각 변수별로 할당된 공간을 양수로써 최대로 활용하고자 함에 있다.

 

각 변수의 데이터 범위 정의는 다음과 같다.

 

유형 크기 데이터 범위
short 2
unsigned short 2
int 4
unsigned int 4
long 8
unsigned long 8

주의해야할 점은 변수를 정의하고 사용할 때는 그 변수에 저장될 값의 범위에 맞게 데이터 타입을 정해주어야한다.

 

실수형

실수형 데이터는 소수점을 가지고 있는 수치 데이터이다. 이 실수형은 두가지로 이루어진다.

float, double 타입이다. float형 데이터는 4바이트, double형 데이터는 8바이트의 공간이 할당된다.

 

각 변수의 데이터 범위 정의는 다음과 같다.

 

유형 크기 데이터 범위
float 4
double 8

 

문자, 문자열형

문자형 데이터는 영문자, 숫자, 특수 문자 등을 표현하는 데이터이다.

문자형 데이터 타입은 한쌍의 단일 따옴표를 이용하여 표기하고 문자열 데이터 타입은 이중 따옴표를 이용하여 표기한다.

유형 크기 데이터 범위
char 1
unsigned char 1
wchar_t 2

 

C++에서는 특수문자를 사용하여 출력 상태를 제어할 수 있다.

특수문자는 다음과 같다.

확장 문자
\n 줄을 바꾼다.
\t 수평 탭으로 일정 간격을 벌린다.
\b 백스페이스.
\r 같은 줄의 맨 앞으로 커서를 옮긴다.
\f 출력 용지를 한 장 넘긴다.
\a 경고음을 낸다.
\/ / 문자를 출력한다.
\' ' 문자를 출력한다.
\" " 문자를 출력한다.
\0 널(Null) 문자.

 

논리형

논리형 데이터 타입은 참, 거짓을 표현하는 데이터이다.

유형 크기 데이터 범위
bool 1

 

 

'소프트웨어 > C++' 카테고리의 다른 글

[C++] 객체지향 언어  (0) 2021.12.01
[C++] 객체지향의 개념  (0) 2021.12.01
[C++] 연산자  (0) 2020.04.29

체형분석 및 헬스케어 업계의 요구사항에 맞게 (주)엠지솔루션스에서는 동적분석 기술을 하나하나 개발해나가고 있습니다.

기존 업계에서 동영상만으로 동적분석을 진행하던 방법에서 벗어나 Motion Capture 기술을 응용 및 발전시켜 3D 골격점을 파악하고 기록하여 더욱 정밀하고 깊은 분석 수행이 가능합니다.

ORRBEC SDK +Segmentation 을 활용한 동적분석시 골격점 정확도 향상으로 타 기기대비 더욱 정확한 측정 또한 가능합니다.

앞으로 저는 이 분야에서 체형분석에 대한 새로운 기준을 제시하며 앞선 기술력을 바탕으로 발전적이고 과학적인 시스템을 만들어가도록 하겠습니다.

먼저 사용하는 리눅스에 dotnet이 깔려있다고 가정한다.

[바로가기] Linux에 dotnet 설치하기 (준비중)

 

  • 자신의 .NET Core를 기반으로 한 프로젝트 폴더로 이동한다.
    • ex) cd c#/UDPExample
  • 여기서 아래 명령중 자신이 배포하고자 하는 환경에 맞춰 배포한다.
    • (아래 명령어 중 <RID>는 자신이 배포하고자 하는 OS 환경 이름을 뜻한다.)

게시 모드에 따른 배포 방법

ex) SCD(프로그램을 실행하는데 필요한 모든 .NET Core 파일을 포함하여 배포)를 하고 싶고 linux-x64기반으로 배포하고 싶을 때

-> dotnet publish -f netcoreapp2.2 -r linux-x64 --self-contained true

 

  • 배포 후에는 /bin/Debug/netcoreapp2.2/<RID>/ 안에 배포 파일이 들어가 있을 것이다.

 



추가

  • 각 OS 환경에 맞는 <RID> 목록

Windows RID

자주 사용되는 값만 나열되어 있습니다. 최신의 완전한 버전을 보려면 CoreFX 리포지토리에서 runtime.json 파일을 참조하세요.

  • 이식 가능(.NET Core 2.0 이상 버전)
    • win-x64
    • win-x86
    • win-arm
    • win-arm64
  • Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
    • win81-arm
  • Windows 10 / Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm
    • win10-arm64

Linux RID

자주 사용되는 값만 나열되어 있습니다. 최신의 완전한 버전을 보려면 CoreFX 리포지토리에서 runtime.json 파일을 참조하세요. 아래에 나열되지 않은 배포를 실행하는 디바이스의 경우, 이식 가능 RID 중 하나와 작동할 수 있습니다. 예를 들어, 여기에 나열되지 않은 Linux 배포를 실행하는 Raspberry Pi 디바이스는 linux-arm을 사용하여 대상으로 지정할 수 있습니다.

  • 이식 가능(.NET Core 2.0 이상 버전)
    • linux-x64 (CentOS, Debian, Fedora, Ubuntu 및 파생 버전을 비롯한 대부분의 데스크톱 배포)
    • linux-musl-x64 (Alpine Linux와 같이 musl을 사용하는 간단한 배포)
    • linux-arm (Raspberry Pi와 같이 ARM에서 실행되는 Linux 배포)
  • Red Hat Enterprise Linux
    • rhel-x64 (버전 6보다 상위 RHEL의 경우 linux-x64로 대체됨)
    • rhel.6-x64(.NET Core 2.0 이상 버전)
  • Tizen(.NET Core 2.0 이상 버전)
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0

자세한 내용은 Linux에서 .NET Core의 필수 구성 요소를 참조하세요.

 

macOS RID

macOS RID는 이전 "OSX" 브랜딩을 사용합니다. 자주 사용되는 값만 나열되어 있습니다. 최신의 완전한 버전을 보려면 CoreFX 리포지토리에서 runtime.json 파일을 참조하세요.

  • 이식 가능(.NET Core 2.0 이상 버전)
    • osx-x64 (최소 OS 버전: macOS 10.12 Sierra)
  • macOS 10.10 Yosemite
    • osx.10.10-x64
  • macOS 10.11 El Capitan
    • osx.10.11-x64
  • macOS 10.12 Sierra(.NET Core 1.1 이상 버전)
    • osx.10.12-x64
  • macOS 10.13 High Sierra(.NET Core 1.1 이상 버전)
    • osx.10.13-x64
  • macOS 10.14 Mojave(.NET Core 1.1 이상 버전)
    • osx.10.14-x64

자세한 내용은 macOS에서 .NET Core의 필수 구성 요소를 참조하세요.

 

자료참조

 

간단히 CUI 환경에서 텍스트를 편집하고자 할 때 많이 사용하는 Nano 편집기에 대해 정리해보고자 한다.

1. 기본 명령어

  • 명령어
    • nano 혹은 nano [file-name]
      • 새로운 file 생성
    • 저장
      • Ctrl+o
    • 잘라내기
      • Ctrl+k
    • 복사하기
      • Ctrl+6
    •  붙여넣기
      • Ctrl+u



2. 기본 단축키

  • 단축키
    • F1
      • 도움말 표시
    • F2
      • Nano 종료
    • F3
      • 현재 편집중인 파일 저장
    • F4
      • 문단의 행의 끝을 나란이 맞춘다.
    • F5
      • 현재 file에 다른 file 내용을 추가한다.
    • F6
      • text 검색
    • F9
      • 현재의 line 혹은 선택된 text 삭제 (그 후 저장)
    • F10
      • 붙여넣기
    • F11
      • 현재의 cursor 위치 표시하기
    • F12
      • 단어 체크 시작

 

 

자료참조

  • HowtoForge
    • https://www.howtoforge.com/linux-nano-command/
  • 스터디 메이크
    • https://studymake.tistory.com/247

+ Recent posts