전체 글 17

HTTP란? (HTTP 요청/HTTP 메시지)

HTTP는 HyperText Transfer Protocol의 줄임말로 우리말로는 하이퍼본문전송규약이라는 뜻이다. HTTP 요청은 서버에 특정 작업을 요청하는 것으로 HTTP 응답을 받기위한 클래스이다. HTTP 요청은 HTTP 메시지를 통해 서버와 통신하는 것을 의미한다. 서버와 HTTP로 요청하고 응답을 받는 과정은 아래와 같다. (HTTP 1.1 기준) HTTP/1.1 작성예정. HTTP/2 작성예정. 1. MDN Web Docs HTTP 메시지 - HTTP | MDN HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청(request)은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지 developer.mozilla.or..

Unit Test 란 무엇인가?

프로그래밍 관련 회사에서 일하게 되면 정적검증(정적분석), 단위검증 등 SW의 품질을 위한 부수적인 작업이 있다는 것을 자연스레 알게된다. 정적검증(정적분석)은 SW를 실행하지 않고 코드 레벨에서 분석을 진행하는 것으로 요구사양 대비 SW의 구현정도, 자료형 (오버플로우 등이 발생하지 않는지) 등을 분석한다. 정적검증이 완료되어 동작에 문제가 없다는 것이 판단이 선 이후에 진행하는 것이 단위검증이다. 단위검증에서 단위(Unit)란 주로 메소드 단위를 말한다. 메소드 단위로 요구했던 사양 그대로 정상적으로 동작하는 지에 대해서 여러 가지 측면에서 분석을 진행한다. MS에서도 단위검증을 위한 라이브러리를 제공하고 있다. 아래의 블로그 글을 참조하면 MS에서 제공하는 MSTest 프로젝트로 C#으로 작성된 코..

c# matlab 자동화

c#을 사용하여 프로그램을 작성하다가 보면 수학과 관련된 라이브러리가 부족하다는 생각이 들때가 있었다. 그럴 때마다 matlab을 c#으로 자동화할 수 있는 방법이 있었으면 좋겠다는 생각을 하곤 했는데, matlab은 이미 그 기능을 지원하고 있었다. https://kr.mathworks.com/help/matlab/matlab_external/call-matlab-function-from-c-client.html C# 클라이언트에서 MATLAB 함수 호출하기 - MATLAB & Simulink - MathWorks 한국 다음 MATLAB 명령에 해당하는 링크를 클릭했습니다. 명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다. kr.mathwork..

[ISO 26262] 도로차량 기능안전 표준 개요

ISO 26262는 차량에 대한 기능안전 표준이다. 과거에는 자동차 결함으로 의심되는 이유로 인해 사고가 발생했을 때 소비자가 직접 기술적 결함을 증명해내야 한다는 불합리한 내용이 있었는데, PL법(Product Liability, 제조물책임법)이 개정되어 자동차 제조사가 기술적 결함에 대해서 기능안전 표준에 따라 개발을 진행하였고 그 기술적 결함으로 인해 치명적인 사고가 발생하지 않도록 설계하였다는 증거를 제시하도록 변경되었다. 만약, 제조사가 이 증거를 제출하지 못한다면 사고에 대한 손해배상을 해주어야 한다. 따라서 제조사들은 ISO 26262 표준을 만족하며 개발할 수 있도록 제품을 개발하고 있다. 국가법령정보센터 : 제조물책임법 제조물책임법 www.law.go.kr ※ ISO 26262는 2011..

2진수 : 컴퓨터과학 특강 4 (유튜브 강의 해설, w/ Matlab)

컴퓨터는 모든 데이터를 2진수를 통해 나타내고 있다. 2진수가 보편적으로 사용되는 이유는 비용이다. 컴퓨터는 전기적 신호를 주고받음으로써 동작하는데, 신호는 도선의 저항, 잡음 등으로 인해 최초 송신값과 다른 값이 전달될 수 있어서 특정값만 0 또는 1로 받게끔 설정해 둔다면 값이 전달이 되지 않는다. 따라서, 특정 값대신 아래와 같이 범위로 0과 1을 지정해놓는 것이 아주 보편적인 방식이다. 그렇다면, 위와 같이 0과 1로 구분되는 것처럼 10개로 묶어서 한번에 10진수로 표현하면 훨씬 더 직관적이지 않을까라는 생각이 든다. 하지만, HW 구조상 같은 전압범위를 가지는 반도체 소자를 2개의 레벨로 쪼개서 사용할 것인가, 그 이상으로 나누어서 사용할 것인가라고 생각해본다면 당연히 2개의 레벨로만 나누어서..

matlab.System 오브젝트 설명 (Simulink, Matlab System 블록)

matlab은 객체지향언어이기 때문에 클래스를 지원한다. matlab.System은 Simulink에 있는 Matlab System 블록을 정의하기 위한 클래스이다. 이 블록을 이용하면 복잡한 시스템을 스크립트를 통해 구현할 수 있으므로 꽤 유용할 듯 하다. 스크립트에 matlab.System을 상속(matlab docs에서는 subclass라고 표현)한 클래스를 정의한 뒤, I/O를 추가하면 되는 방식이다. Filter의 경우에는 Simulink 자체에서도 지원이 되기 때문에 크게 쓸 일이 없겠지만, 코드로 구현되어 있는 어느 클래스를 모델로 만들어서 테스트를 하고 싶은 경우에는 Matlab System을 고려해보는 것도 좋은 방향일 것이라 예상된다. matlab.System을 상속받아서 matlab...

ISO 란?

ISO는 International Organization for Standardization 의 약자로 우리말로는 국제 표준화 기구이다. ISO는 말 그대로 여러 분야에 걸쳐서 국제적인 표준을 제정하고 관리하는 기구이다. 각 산업별로 ISO 에서 제정된 표준을 기준으로 관리, 개발 등을 수행한다. 나는 자동차 산업에 근무하고 있어서 ISO 26262를 주로 참고하는 편이다. ISO 26262는 자동차에 들어가는 S/W의 기능안전에 대한 문서인데, 이 표준을 읽어보면 운전자에게 위험요인이 될 수 있는 부분들을 최소한으로 하기 위해서 아주 세세하게 작성되어 있는 것을 알 수 있다. 표준이다보니 상당히 세세해서 문서의 양이 꽤 많은 편인데 추후 ISO 26262에 대해 포스트를 작성할 예정이다. 관심이 있는 ..

C/C++ 을 위한 호출규약 (Microsoft Visual C/C++ Compiler)

마이크로소프트는 인자전달 및 네이밍 규약을 크게 6가지 정도로 정하고 있다. 오늘은 이 호출규약들을 자세하게 다뤄보려 한다. 호출규약에 대해 자세하게 이해하고 싶다면 내가 아래에 작성한 이전 글을 참조하면 될 것 같다. Calling Convention Calling Convention Calling Convention은 호출규약이라는 뜻으로 호출자와 피호출자 간 함수호출시 인자를 전달하는 방식에 대한 규약이다. 아래 글을 읽기전 컴파일에 대해 이해가 필요하므로 컴파일에 대한 지식이 diverjence.tistory.com 아래의 Calling Convention Keyword는 함수의 선언시 함수의 이름 앞에 사용하면 된다. ● 메모리의 구조 (Stack vs Heap) STACK > 지역변수, 매개변..

마이크로 컨트롤러 (Micro-controller, MCU, Micom, uC)

실제 현업에서는 간단히 마이컴이라고 불리는 마이크로 컨트롤러에 대해서 간단하게 소개해보려고 한다. 마이컴은 산업별로 적당한 마이컴을 선정하여 사용하게 된다. 먼저, 헷갈릴 수 있는 용어인 마이크로 프로세서와 마이크로 컨트롤러를 비교하고 이해하고 넘어가야 추후에 헷갈리는 일이 없을 것이다. 마이크로 프로세서 (MPU: Micro Processor Unit)는 개별적으로 내장된 연산기능만 수행하는 칩을 말한다. MPU는 연산기능에만 특화되어 있기 때문에 실제 사용시에는 주변 장치가 추가적으로 필요하다. 마이크로 컨트롤러 (MCU: Micro Controller Unit)는 MPU의 기능에 더해 별도의 작업을 추가하여 수행할 수 있도록 내부에 프로그래밍이 가능한 플래시 메모리가 있기 때문에 MPU와는 달리 독..

gcc (g++) 설치 과정

gcc는 GNU Compiler Collection 의 약자로 GNU 프로젝트 중 하나이다. gcc를 통해 c 언어로 작성된 코드를 빌드할 수 있다. 1. MinGW 설치 윈도우에 gcc를 사용하려면 MinGW(Minimalist GNU for Windows) 를 설치하여야 한다. MinGW는 이 링크(SourceForge)에서 다운로드할 수 있다. 셋업파일을 실행하면 위와 같은 세팅화면이 나오는데 이 때, mingw-developer-toolkit, mingw32-base 와 필요한 옵션을 선택한 후 설치를 진행하면 된다. 위의 Installation 메뉴에서 Apply Changes를 선택하면 설치가 진행된다. 2. 환경변수 등록 설치가 완료되고 나서 커맨드 프롬프트 (cmd) 를 실행하여 아래와 같..

🖥️ Coding/C 2021.07.27