0. 정의 - A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic. [위키피디아] - 프로세스란 간단히 말해, 현재 실행 중인 프로그램을 의미합니다.(통상 메모리에 적재되어, PCB(Process Control Block)라는 형태로 OS에 의해 관리되는 상태를 의미합니다. - 프로세스를 프로그램과 혼동하면 안 됩니다.) 프로그래밍적 관점에서 봤을때, 컴퓨터에는 여러 가지 프로세스가 실행되고 있으며, 실행, 수면, 실행 대기, 대기, 종료 등 여러 규칙에 의해 변하고 있습니다. - 위의 그림을 보게 되면, process 는 다음..
NM CLI nmcli 명령어는 Gnome 프로젝트에 나와있듯이 네트워크를 관리해주는 툴입니다. SYNOPSIS 명령어 자체는 단순하게 되어 있으며, 다음과 같이 사용된다. nmcli [Options 옵션] {help | general | networking | radio 등등 택1} [Command 명령어] [Args..] DESCRIPTION nm cli 는 네트워킹 관리를 위한 커맨드라인 도구이며, 네트워크의 상태를 보여줄 수 있습니다. 또 다른 GNOME 프로젝트인 nm-applet 을 대신할 수 있으며, 다른 GUI를 대신 할 수 있습니다. 몇가지 전형적인 예시가 있는데, - 스크립트 : script 프로세싱으로 손쉽게 네트워크 관리를 할 수 있도록 도와줍니다. - 서버, headless mac..
CodeCode
-
[C++] Reference 와 Pointer 의 차이점 설명해줄래
안녕하세요. 요번 시간에는 Reference와 Pointer의 차이점에 대해서 적어보려고 합니다. 우선, 포인터(Pointer)와 레퍼런스(Reference) 둘 다, 변수에 대하여 값을 가리키거나 변수 자체에 접근하여 값을 변경할 수 있도록 하는 역할을 실시하게 됩니다. 하지만 포인터와 레퍼런스의 가장 근본적인 차이는 포인터의 경우, 포인터는 메모리가 저장되어 있는 곳을 가리키는 값을 저장하게 되고, 레퍼런스의 경우 값(변수)에 대한 별칭을 의미 하는데 있어 차이가 존재합니다. 위의 그림0 을 보게 되면, 포인터 p 는 변수 a의 주소 값을 담아두게 되고, 레퍼런스인 ref는 단지 a의 별칭일 뿐, a의 주소 값을 저장하지 않습니다. 그럼 각 차이점을 알아보도록 하겠습니다. 비 교 포인터(Pointer..
-
[c++] delete[] 가 포인터를 받아도 잘 동작하는 이유(over-allocate)
c++에서는 동적으로 객체를 생성 및 삭제를 시켜줄 때, new 그리고 delete 키워드를 쓰게 됩니다. 이때, new는 우리가 메모리를 할당하고, 생성자를 호출하게 되어, 그 사이즈나 크기를 명시해주게 됩니다. 그렇지만 delete는 포인터만 넘겨줄 뿐인데, 어떻게 그 사이즈를 예측하고 삭제시켜 줄 수 있을까? 부연하자면, 밑과 같은 코드가 존재했을때, pFoo는 단순 포인터일 뿐인데, 어떻게 Foo array에 해당하는 메모리를 삭제시키고 알맞는 개수의 소멸자를 호출할 수 있을까요? class Foo { public: Foo() {} ~Foo() {} int mNunber; } int main() { Foo* pFoo = new Foo[10]; delete[] pFoo; } 메모리 할당에 해당 2가..
-
[c++] 너 .. 혹시 생성자에서 가상함수 호출할거야 ?
네.. 제목을 좀 재밌게 지어보려고 했는데, 의도된 대로 지어졌는지 모르겠습니다. ㅎㅎ 아무튼 오늘 글을 쓰려고 한 주제는 생성자에서 가상 함수 호출을 하면 어떻게 되는가? 가 주제였습니다. 결론부터 말하자면, "제발 하지 마"입니다..! 뭐가 문제일까? 가상 함수를 생성자에서 호출하기 전에, "뭐가 문제일까?" 하는 생각이 드실 수 도 있습니다. 다음 함수를 보고 결과를 맞추신다면 이 글을 읽으실 필요는 없으실 거 같습니다. 그럼 문제입니다. 다음 코드를 보시고 어떤 결과가 나올지 예측해 주세요! #include class A { public: A() { fn(); } virtual void fn() { _n = 1; } int getn() { return _n; } protected: int _n; ..
-
[c++] New 그리고 malloc( ) 구분할 수 있어?
c++에서 메모리를 할당하려면, new 키워드로 메모리를 할당하고, 메모리를 해제하려면 delete 키워드로 메모리를 해제해줍니다. 마치 c 언어에서 malloc( )과 free( )를 사용하는 것처럼 비슷하게 사용합니다. 하지만 C++에서는 new와 delete의 작동법은 조금 다르게 작동하는데 이에 대해 알아보겠습니다. 0. new 그리고 delete 사용법 우선 new와 delete는 연산자의 일종입니다. (malloc( )과 free( )는 함수의 일종입니다.) 따라서, new 연산자는 operator new( )라는 특별한 연산자 함수를 호출하며, delete 또한 마찬가지로 operator delete라는 특별한 연산자 함수를 호출하게 됩니다. 우선 다음과 같이 new 연산자를 사용할 수 있는..
-
[객체의 관계] Is-A 그리고 Has-A 관계 !
프로그래밍을 하다 보면, 서로 다른 클래스가 공통적인 속성을 가지거나, 최소 두 클래스가 관련이 되어있는 경우가 존재합니다. 이때, 객체의 관계를 표현할 수 있는데, 대표적으로 Is-a 관계 그리고 Has-a 관계가 있습니다. Is-a 그리고 Has-a 관계 그게 뭔데? Has-a 관계 Composition 또는 Aggregation 관계라고도 부르는 has-a 관계는 "A는 B를 가진다" 또는 "A가 B를 가지고 있다"라고 정의할 수 있습니다. 한 객체가 다른 객체의 일부가 되는 것입니다. Has-a 관계는 비행기의 엔진을 예로 들 수 있는데, 비행기에는 엔진이 존재하며, 엔진을 포함하고 있다 또는 비행기는 엔진이 있다라고 표현할 수 있습니다. 이를 코드로 표현하면, 비행기라는 객체는 엔진 컴포넌트를 ..
머신러닝 & 캐글
-
Pytorch Conv2d 와 Maxpool2d 설명카테고리 없음 2021.05.14 21:13
1. Convolution 이란? - convolution 이란 convolution layer 의 크기(=stride 값) 만큼을 이동시키면서 겹쳐지는 부분의 각 원소의 값을 곱하여서 모두 더한 값을 출력하는 층이다. 그러면 이걸 왜 적용시키냐?? 가 궁금하실 것이다. - convolution layer을 적용시키는 것은 이미지를 인식 시킬때, 주변의 값들을 관계를 알아내기 위해서이다. 한마디로 수직의 특성을 가진 convolution Layer 를 이미지에 적용시킨다면, 이미지값에서 수직인 값들이 나오게 되고, 수평인 값들을 뽑아내는 특징을 가진 Conv Layer 을 적용시키면 수평의 값들이 나오게 된다. - 좀 더 이해가 쉽게 되기 위해서 밑의 그림을 살펴보자. - 이 그림에서 보듯이 edge d..
-
선형변환(Linear_Transformation) 이란?선형대수(Linear Algebra) 2021.05.03 23:52
1. 정의 -In mathematics, a linear map (also called a linear mapping, linear transformation, vector space homomorphism, or in some contexts linear function) is a mapping between two vector spaces that preserves the operations of vector addition and scalar multiplication. - 위키디피아에 정의된 내용은 다음과 같은데, 수식과 같이 표현하자면, - 벡터 필드 K 내부에 U와 V 2개의 벡터공간이 있다고 해보자. 그렇다면, 식 F_matrix: V->W로 바꿔주는 F_matrix(행렬) 에 대해 F(C*..
-
가우스 소거법 (Gauss_Elimination)간단하게 이론(Theory...) 2021.04.28 18:16
1. 가우스 소거법이란..? - 가우스 소거법이란, 선형 방정식을 풀기위해 고안된 방법으로, 명명 그대로, 프리드리안 가우스에 의해 고안되어 졌다.일반적으로, 행렬 A,B 가 존재할 때, Ax = B 를 만족시키는 x 를 빨리 찾아낼때, 쓸 수 있다. -일반적으로, 중학교,고등학교에서 역행렬을 취해줌으로써, x를 구하곤 했지만, 더 고차원으로 가게 되면, 가우스 소거법을 사용하여, 연립일차 방정식을 풀어주게 된다. 2. 가우스 소거법 단계 그럼 가우스 소거법이 왜 쓰인지는 알았으니, 적용을 해보자. 가우스 소거법은 2가지 단계로 이루어져 있으며, 첫번째 단계는 1. 전방 소거법(Forward Elimination) 2. 후방 대입법(back substitution) 을 적용하여 풀게 된다. 1. 전방 소..
-
Normal Equation(정규방정식)간단하게 이론(Theory...) 2021.04.19 12:22
- Normal Equation 이란. 데이터 분석에서 회귀를 진행했을때, 오차를 줄여 줄 수있도록 하는 방법론 중 하나이다. 네이버 지식백과에서는 잔차의 제곱의 합을 최소로 한다는 조건, 즉 최소제곱법에 의하여 얻어지는, 미지수의 개수와 같은 수의 방정식이다. 라고 정의가 되어있는데, 이는 곧 전체 오차의 합을 줄여나가 회귀식을 구하는데 목적이 있다 할 수 있다. - Cost Function을 최소화 하는 법 여기서 argmin 은 최소가 될때까지 반복시키겠다는 의미이다. 따라서 cost function을 최소화 하기 위해, 각 항들의 오차를 제곱하여, 최소가 될때까지 반복시키는 것이 우리가 원하는 normal eq의 최종 형태이다. - 일차식에서의 회귀식 표현해보기 식을 보게 되면, 좌측에 일차식을 ..
-
교차 검증을 위한 Cross_val_score() 함수 사용법머신러닝(MACHINE LEARNING) 2021.04.13 22:23
사이킷 런(Scikit-Learn) 에서 보다 쉬운 교차검증 API - cross_val_score()¶ -사이킷 런에서는 교차검증(K-Fold or StratifiedKFold) 를 더 쉽게 할 수 있는 API를 제공하는 데 그것은 cross_val_score 이다. cross_val_score 에는 여러가지 변수 값들이 있지만 중요한 몇가지만 알아보자. estimator = > 분류 알고리즘(Classifier) 또는 회귀 (Regressor) 인지 구분 인자 X => feature 데이터 세트 Y => 레이블 데이터 세트 scoring => 예측 성능 평가 지표( 'accuracy', 'neg_brier_score' , 'top_k_accuracy'등등 겁나많다...) cv => 교차 검증 폴드 수..