전체 글
[정처기] 2024 필기 요약 1과목 - 소프트웨어 설계
1. 애자일 방법론 정의 : 고객 요구사항 변화에 중심을 둔 개발 방법론주요 가치 : 의사소통, 피드백, 단순성, 존중, 용기 XP(익스트림 프로그래밍)은 애자일 방법론을 통한 프로그래밍 기법 중 하나 ※ 고객 요구사항 최우선이기에 유연한 방법론이기에 문서 중심이 아니다. 2. UI 설계원칙 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 한다.유효성 : 사용자 목적을 정확히 달성할 수 있어야 한다.학습성 : 누구나 쉽게 배우고 익힐 수 있어야 한다.유연성 : 사용자의 요구에 최대한 수용하고 오류를 최소화 해야한다.※ 오류를 숨겨서는 안된다. 2-1 UI 종류CLI(Command Line Interface) : 텍스트로만 이루어진거(윈도우 기준 파일 검색에서 cmd 치면 나오는 화면)GUI(Graph..
두 점 사이의 거리 공식 구하기, 중점 구하기
수직선 상의 두 점 사이의 거리점 A와 점 B사이의 거리는 5 - 2 = 3 B의 좌표에서 A의 좌표를 뺀 값이다. 그렇다면 좌표가 음수인 경우는 어떨까?A와 B 사이의 거리는 1-(-1)=2이지. 그러므로 수직선에서의 두 점 사이의 거리는 큰 수의 좌표에서 작은 수의 좌표를 빼 주면 된다 두 점 모두 음수 좌표인 경우도 마찬가지로 구할 수 있다 A(-3)과 B(-1) 사이의 거리는 -1이 -3 보다 크므로 -1-(-3)=2가 된다.평면상의 두 점 사이의 거리 공식직각삼각형 ABC에 대해 각 꼭짓점의 대변을 a,b,c 라고 할 때 직각삼각형의 세 변의 길이에 대해 다음과 같은 관계가 성립한다. c^2 = a^2 + b^2 여기서 c는 빗변의 길이다, 즉 빗변의 길이의 제곱은 다른 두 변 길이의 제곱의 합..
[C#] 포인터 관련 unsafe fixed 키워드
포인터를 사용하면 CLR에서 안전성을 책임지지 못하고, 불완전한 코드가 된다고 하며 에러를 발생하는데, 이렇게 예전 코드를 사용해야 할 경우, 빌드 속성을 변경해줌으로써 unsafe 코드를 사용 할 수 있다.사용 방법형식 또는 멤버 선언에서 unsafe 한정자를 사용할 수 있으며, 이렇게 선언해줄 경우 안전하지 않은 컨텍스트로 간주된다. fixed 지시어는 unsafe 컨텍스트에서만 허용된다. 클래스가 인스턴스화 되면 CLR에 의해 언제든지 메모리가 이동 될 수 있는데, fixed 지시어를 이용하면 해당 코드에 들어간 변수 및 객체는 가비지 콜렉팅이 발생할 때 주소 재배치 대상이 아니게 된다.unsafe private uint reload(){ uint s0 = 0, s1 = 0; int..
[C#] Marshal
1. 데이터 타입IntPtr IntPtr 형식은 그 크기가 플랫폼마다 고유한 정수로 디자인 되었다. 즉, 이 형식의 인스턴스는 32비트 하드웨어 및 운영 체제에서는 32비트로, 64비트 하드웨어 및 운영 체제에서는 64비트여야 한다. IntPtr 형식은 포인터를 지원하는 언어에서 사용할 수 있으며, 포인터를 지원하는 언어와 포인터를 지원하지 않는 언어 사이에서 데이터를 참조하는 일반적인 방법이 된다. 핸들을 보관하는 데도 IntPtr 개체를 사용할 수 있다. 예를 들어, IntPtr의 인스턴스는 파일 핸들을 보관하기 위해 System.IO..::.FileStream 클래스에서 광범위하게 사용된다. IntPtr 형식은 CLS 규격이지만, UIntPtr 형식은 그렇지 않다. 공용 언어 런타임에서는 In..
[C#] 관리되는, 관리되지 않는 코드
관리되는 코드.NET CIL로 작성하고 컴파일 하는 .NET상의 코드 -GC 메모리 관리가 된다 관리되지 않는 코드기계 코드를 직접 컴파일 하도록 컴파일되는 .NET에 없는 코드 -GC 메모리 관리가 안된다.ex) 윈도우 시스템 자원IntPtr - 인터포인터관리되지 않는 메모리 블록에 대한 포인터 정수형 포인터를 의미하는 값 형식의 타입포인터는 메모리 주소값을 보관하는 곳IntPtr 타입은 메모리 주소를 가리키는 것 외에 윈도우 OS의 핸들값을 보관하는 용도로 쓰인다. 핸들은 윈도우 OS가 특정 자원에 대한 식별자로서 보관하는 값인데 일례로 파일이 좋은 예다.파일처리, OS에서 제공되는것 처리를 할 때 사용된다.ex) 이미지 처리에서도 쓰인다.Marshal Class - 마샬관리되지 않는 메모리 블록 ..
[Unity] 스크립팅 백엔드 (Scripting Backend)
스크립팅 백엔드란?C# 스크립트나 스크립트 언어로 작성된 코드를 실행 가능한 형태로 변환하는 컴파일러를 말한다.주로 Mono와 IL2CPP가 제공된다.MonoJIT 컴파일 방식을 채택한 유니티의 기본 스크립팅 백엔드이다. 일반적인 닷넷 호환 언어 컴파일 과정과 유사하다. 프로그램이 실행되는 시점에 필요한 코드를 동적으로 네이티브 코드로 번역하기 때문에 초기 실행 속도는 느리지만 반복적으로 실행되는 코드는 최적화되어 성능이 향상된다. 에디터에서 플레이 모드로 실행할 때 기본적으로 사용된다.IL2CPPAOT 컴파일 방식을 채택한 유니티의 스크립팅 백엔드이다. 실행 이전에 네이티브 코드로 컴파일하기 때문에 초기 실행 속도가 빠르고 메모리 사용량이 최적화되며, 또한 코드의 보안이 강화된다. (네이티브 언어이기 ..
[C#] DLL 파일 생성, 참조하는 법
DLL이란?DLL (Dynamic Link Library)은 동적 링크 라이브러리의 약자로 표준화된 함수나 데이터를 모아놓은 것을 의미한다. 장점) - 한 코드를 여러 프로그램이 동시에 사용하기 때문에 메모리가 절약된다.- 리소스의 교체가 가능하다.- 재사용성이 뛰어나다.- 정적 링크를 사용하는 경우 실행 파일에 라이브러리의 함수가 모두 포함되어 실행파일이 커지지만 DLL을 사용하는 프로그램은 크기가 작다. C#을 이용해 DLL 파일을 생성 및 참조하는 방법은 다음과 같다 1. Visual Studio 실행 후 새 프로젝트를 만든다. 2. 이때 프로젝트 템플릿은 클래스 라이브러리로 생성해줘야 한다. 3. 프로젝트 명은 Calculator로 이름 짓고 다음을 클릭한다. 4. 클래스 명을 'Cal'으로 변경..
[C++] 2차원 vector 크기 동적으로 재설정
아래와 같이 이미 초기화가 된 벡터에 resize 함수를 사용하면 열이 제대로 반영이 안되는걸 볼 수가 있는데 2번째 인자인 vector(5)는 임시 객체이기 때문에 본 객체에 변경이 반영되지 않는다.int main(){ vector> a(7, vector(6)); a.resize(5, vector(5)); a[0].resize(5);} 해결 할 수 있는 방법은 새로운 임시 객체를 만들어 재할당 하는것이다vector> a(7, vector(6));a = vector>(7, vector(5)); 코딩테스트 때 유용하게 써먹자
[C++] vector (벡터) 복사하기
반복자#include #include using namespace std;void printVector(const vector v) { cout vect1{1, 2, 3, 4}; vector vect2; for (int i = 0; i 출력Old vector elements are : 1 2 3 4 New vector elements are : 1 2 3 4 The first element of old vector is :2The first element of new vector is :1할당 연산자 =(Assignment Operator =)#include #include using namespace std;void printVector(const vector v) { ..
부동 소수점 오차 (개념)
실수 표현 방식컴퓨터는 모든 수를 0과 1로 이루어진 2진수로 표현한다. 이것은 정수뿐만 아니라 소수점이 존재하는 실수도 마찬가지이다. 정수의 경우 이러한 표현이 간단하지만, 실수를 2진수로 표현하는 것은 복잡하다. 실수를 표현하기 위한 다양한 방법들이 연구되었으며 현재는 크게 2가지 방식이 존재한다.고정 소수점 (fixed point) 방식부동 소수점 (floating point) 방식고정 소수점 (fixed point) 방식실수는 보통 정수부와 소수부로 나눌 수 있다. 따라서 실수를 표현하는 가장 간단한 방법은 소수부의 자릿수를 미리 정하고, 고정된 자릿수의 소수를 표현하는 것이다.32비트 CPU에서 고정 소수점 방식으로 실수를 표현하면 위와 같다.하지만, 이 방식은 정수부와 소수부의 자릿수가 크지..