본문 바로가기

분류 전체보기

(45)
Docker 기초 Docker란? 기존의 가상화 기술은 여러 운영체제를 하나의 호스트에서 VPC 구성한뒤 각각의 Guest OS에서 독립적인 Application을 실행하던 방식에서 Host OS의 Docker Engine이 여러 Application을 위한 가상 공간을 제공하는 것으로 VPC보다 효율적이고 성능 손실 없이 돌아가게 하는 구조이다. Docker를 사용하는 이유 Monolith와 Microservice Monolith는 하나의 프로그램에서 application 모든 로직이 실행되는 방식을 칭하며, Microservice는 여러 모듈들이 각각의 서비스를 제공하며, application은 이 서비스들을 모아서 실행하는 구조를 칭한다. Microservices는 모듈형태로 독립되어 있기 때문에 각각 언어에 종속 ..
Creational Pattern - Abstract Factory , Builder Creational Pattern이란? 인스턴스를 만드는 절차를 추상화하여 객체의 표현 방법을 시스템과 분리해준다. 특징 시스템이 사용하는 클레스에 대한 구체적인 정보를 캡슐화한다. 어떤 객체가 생성되고 어떤 클래스가 객체를 생성하며 생성 시기를 유연하게 결정되게 해준다. Abstract Factory 목적 상세화된 sub-class를 정의하지 않고 여려 객체를 생성하기 위한 인터페이스 제공 구조 AbstractFactory : Product를 생성하는 연산(실행)과 인터페이스 제공 ConcreteFactory: 구체적인 Product를 생성하는 연산(정의) 구현 AbstractProduct: AbstractFactory가 생성하는 Product가 가져야 하는 인터페이스 제공 ConcreteProduct..
디자인 패턴 기초 디자인 패턴이란 객체 지향 코딩을 할 때 문제에 대한 해결책을 어떤 방향으로 제시 할것인가를 뜻한다. 포스팅에서는 GoF의 디자인 패턴책을 참고하여 Creational Pattern , Structural Pattern , Behavioral Pattern으로 나누어서 포스팅 할 예정이다. patteren name : 한두 단어로 설께 문제와 해법 서술 problem : 해결 하고자 하는 문제와 배경 solution : 문제를 해결하는 추상적인 해결 책을 서술 consequence : 디자인 패턴을 사용하고 얻어지는 결과와 장단점 Design Pattern 기술 요소 pattern name and classification 패턴의 핵심을 간결하게 전달 intent 디자인 패턴이 의도하는거 Also Kno..
[Filter] Mean, Low Pass , High Pass filter Filter란? filter는 일상에서 사용하는 용어로 생각해 보면 미세먼지를 걸러 준다거나 기준에 맞지 않는 단어들을 없앤다는 의미를 가진다. 여기서 불필요한 잡음을 걸러내 준다 라고 생각 되지만 반대로 우리가 원하는 것을 얻게 해준다는 개념을 이해 할 수 있다. data가 들어 왔을 때, noise를 제거하고 원하는 값을 도출해 내는게 Filter이다. Mean Filter 일반적으로 noise가 있는 data에서 생각 할 수 있는 filter는 평균을 이용하는 것이다. 예를 들어 n개의 data가 있을 때, 식은 다음과 같이 쓸 수 있다. 하지만 로봇에서는 센서 값이 실시간으로 들어오기 때문에 이산 신호 식으로 바꾸면 다음과 같다. 평균 필터의 성능 확인은 다음과 같다. 여기서 기억하고 가야할 식이..
[Deep Learning] Shallow Neural Network Neural Network란? logistic regression에서 봤듯이 단순한 수식으로 표현하기 힘든 걸 여러개의 node를 통해 예측하는 것이다. 간단한 구조는 다음 그림과 같이 설명된다. 여기서 2-layer Nueral Network를 수식적으로 좀 더 표현하면 다음과 같다. 여기서 각 기호의 의미는 다음과 같다. Node Neural Network를 표현한 그림에서 각 layer에서 동그라미가 의미하는 것은 node이며, 각각의 node는 이전 layer node값에 각각의 weight를 곱한 후 active function을 이용해 값을 얻어낸다. 따라서 각 노드를 다음과 같이 나타낼 수 있다. 여기서 n = 1일 일 때 node는 input layer의 값들을 받게 되며, g(x)는 ac..
[Deep Learning] Logistic Regression Logistic Regression logistic regression은 linear regression에서 input 과 predict가 논리 값인 0 ,1 로만 이루어진 것이다. 이렇게 input이 들어 올때, linear algebra를 사용하여 예측 값인 Y의 0 과 1 영역을 다음 그림과 같이 나눌 수 있다. 여기서 w1 , w2값을 그때 그때 사람이 구하지 않고, 알고리즘을 통해 값을 구해내는게 Logistic regression이다. Sigmoid 위에서 선정한 linear algebra를 통해 논리 값인 0 , 1 에 어느 쪽에 더 가까운지 판단하는 수식이며, 식은 다음과 같다. 여기서 w·x에 따라 sigmoid의 그래프 개형을 살펴보면 다음과 같다. Loss Function 이제 Sig..
메모리 관리 1 (전공 내용 정리) Base / Limit Registers Base Register는 메모리(RAM)에 프로그램이 할당 될 때 프로그램의 시작 register 주소이며, Limit register는 현 프로그램이 사용할 수 있는 register의 마지막 주소이다. 만약 프로그램이 이 register 범위를 넘어 가는 주소를 사용하게 될 경우, OS에 의해서 trap이 발생하고, 프로그램이 강제 종료 된다. 각 프로그램의 Base / Limit Register는 각 프로그램의 고유값이며, 이는 PCB(Process Control Block)에 저장 된다. 따라서 각 CPU당 Base / Limit register는 한 개씩 존재(각 CPU가 제공하는 서비스는 한번에 하나 씩만 가능하기 때문 & 레지스터 용량을 늘리면 비싸기..
[Device] Device이름 설정 로봇을 코딩할 때, /dev/ttyUSB0와 같은 포트를 열어 통신하는 프로그램을 종종 사용 할 때가 있다. 여기서 /dev란 device의 약자이며, 일반적으로 Serial 통신을 사용하는 기기를 연결하였을 경우 /dev/ttyACM 또는 /dev/ttyUSB로 이름이 붙여지며, 이 뒤에 차례대로 0번 부터 번호가 부여 된다. 하지만 실제 로봇을 사용할 때 이 device가 여러개가 연결되어 부팅이 될 때 마다 이 번호가 랜덤하게 부여되어 곤란할때, 디바이스의 레지스터 값을 이용하여 이름을 부여해 줄 수 있다. Device info 이 작업을 위해서는 먼저 이름을 부여할 device의 정보를 가져와야 한다. 이를 위해 터미널창에 다음과 같이 입력한다. udevadm info -a -n 여러가지 많은 정..