반응형

SW 2008

Adaptive Autosar Time Synchronization (시간 동기화)

개요서로 다른 응용 프로그램, ECU 간의 Time Synchronization는 분산 시스템에서 서로 다른 이벤트의 상관 관계가 필요할 때 중요한 이벤트입니다. 이러한 이벤트를 제 시간에 추적하거나 정확한 시점에 트리거 해야 합니다. Time Synchronization 이러한 이유로 Time Synchronization API가 애플리케이션에 제공되어집니다. 다른 Entities / ECU와 동기화 된 시간 정보를 검색 할 수 있습니다. Time Synchronization 기능은 시스템에있는 다양한 "시간 기반 자원"의 수단으로 제공됩니다. 디자인Adaptive Platform의 경우 필요한 모든 Time Synchronization 요구 사항을 충족하기 위해 다음 세 가지 기술이 고려되었습니다....

SW/Autosar 2018.11.20

[ python ] 텐서플로우 로또 예측 프로그램 (3) - 결과값 메일로 보내기

생성한 프로그램이 알려주는 숫자를 제가 직접 메신저로 저에게 보내곤 했습니다.그러는 과정에서 조금 불편하였고 직접 제 메일로 보내준다면 편리할 것이라 생각하였습니다.python에는 smtp 라이브러리가 있어 쉽게 접근할 수 있었습니다.사용자분들도 로또 숫자 뿐만 아니라 다양한 내용들을 본인이나 다른 사람들에게 보내고 싶을 떄 응용하면 좋을 것 같습니다. import smtplibfrom email.mime.text import MIMEText smtp = smtplib.SMTP('smtp.gmail.com', 587)smtp.ehlo() # say Hellosmtp.starttls() # TLS 사용시 필요smtp.login('나의아이디@gmail.com', '비밀번호') msg = MIMEText('본..

SW/Python 2018.11.19

[ python ] 텐서플로우 로또 예측 프로그램 (2) - 로또 API

이번 회차에서는 로또 번호를 학습하기 전에 데이터를 파싱하는 방법에 대해 포스팅하겠습니다. 물론 데이터를 저장하고 읽어오는 방법이 많지만 웹을 활용해 기존 로또 당첨 번호를 json 형식으로 받아와 매주 최신화된 로또 번호를 받아 올 수 있도록 구현하였습니다. http://www.nlotto.co.kr/common.do?method=getLottoNumber&drwNo=825 해당 url를 익스플로러나 크롬 주소창에 입력하시면 아래와 같은 리턴 값을 확인할 수 있습니다. {"bnusNo":42,"firstAccumamnt":19904526756,"firstWinamnt":1658710563,"returnValue":"success","totSellamnt":82890578000, "drwtNo3":21,..

SW/Python 2018.11.19

C++와 객체 지향에 대해 알아볼까요?

C++는 고성능의 세련된 문법을 보유하고 있습니다. 또 라이브러리를 제공하는 훌륭한 객체지향 언어입니다. 90년대 초반 부터 마이크로소프트와 인텔 등의 기업들과 gcc를 앞세웠습니다. 그 결과 오픈 소스 진영에서 하드웨어와 운영체제에 최적화된 컴파일러를 앞다투어 지원해왔습니다. 특히 C++11 버전에는 다양한 기능을 추가했습니다. 뿐만 아니라 개발자 편의를 제공하는 스펙들을 포함하였습니다. Boost와 같은 라이브러리를 함께 사용하면 코드를 더욱 명료하게 작성할 수 있습니다. C++ 등장배경과 표준C는 1972년 벨 연구소의 유닉스 운영체제 개발자인 데니스 리치가 고안하였습니다. 운영체제를 개발할 때 하드웨어 제어를 위해 어셈블리어를 사용하였습니다. 유지보수가 어렵고 하드웨어 의존성이 컸습니다. 대안을 ..

SW/C++ 2018.11.19

[ python ] 텐서플로우 로또 예측 프로그램 (1) - 설치 및 개발환경

파이썬과 텐서플로우를 활용한 머신 러닝 프로그램 개발을 위한 개발환경을 세팅해야합니다. https://www.anaconda.com/download/ 위에 사이트에 들어가서 아나콘다를 먼저 설치합니다.저는 파이썬 3.x 버전으로 설치하였습니다.왜 2.x 말고 3.x를 쓰냐고 물으시면 이유는 잘 모릅니다. 엣헴.. 설치가 완료되면 Anaconda Prompt를 실행합니다. conda update -n base condacs Anaconda Prompt에 들어오면 conda 패키지 관리자를 사용할 수 있습니다. 먼저 conda 자체를 업데이트합니다. conda update --allcs 다음엔 설치된 파이썬 패키지를 모두 최신 버전으로 업데이트합니다. pip install --upgrade tensorflo..

SW/Python 2018.11.17

[ C++ ] atomic 개념 및 예제

뮤텍스를 통해서 전역 변수를 동기화하여 하나씩 증가시킬 수 있습니다. 그러나 일반적으로 뮤텍스와 같은 lock을 이용하여 개발하는 경우, 사용자가 잘못 사용할 때 교착 상태와 같은 문제를 야기시킬 수 있습니다. 그러므로 주의 깊게 사용해야 합니다. C++11에서는 atomic을 이용하여 뮤텍스와 같이 lock, unlock을 사용하지 않고 값을 증가시키거나 값을 감소시킬 수 있는 기능을 제공하고 있습니다. atomic : atomic 변수를 선언할 수 있는 데이터형이다.fetch_add : atomic의 멤버 함수로, 값을 증가시키는 함수입니다.fetch_sub : atomic의 멤버 함수로, 값을 감소시키는 함수입니다. aomic으로 설정된 변수에는 초기에만 값을 대입할 수 있습니다. 그 이외에는 대입..

SW/C++ 2018.11.16

[ C++ ] mutex 개념 및 예제

뮤텍스는 스레드로 동시에 여러 개를 처리할 떄 모든 스레드가 접근하는 데이터를 하나의 스레드가 먼저 사용할 수 있도록 독점적으로 자원을 가져다 사용할 수 있도록 해주는 방법입니다. 자세한 내용은 다음에 기회가 된다면 운영체제 관련 포스팅을 진행해보도록 하겠습니다. 관련 예제에 대해 알아보겠습니다. #include #include #include #include #include #include using namespace std; int value;mutex value_mutex; void increase_value(){ // 뮤텍스를 이용하여 동기화 value_mutex.lock(); value++; cout

SW/C++ 2018.11.16

[ C++ ] thread 개념 및 예제

프로그래밍에서 동시에 여러가지 동작을 하기 위해 스레드(thread)라는 개념을 도입하였습니다. 스레드는 하나의 프로그램이 마치 동시에 여러 개의 동작을 하는 것과 같은 효과를 표현하기 위해 운영체제에 도입된 개념입니다. 저는 웹 서핑을 할 때 주로 크롬을 이용합니다. 크롬은 움직이는 이미지를 보여주면서 그 동시에 음악도 들려줍니다. 휴대전화에서는 음악을 들으면서 메신저를 0할 수 있습니다. 이처럼 하나의 프로그램 안에서 동시에 여러개의 흐름이 있는 것처럼 효과를 내는 것이 바로 스레드라고 생각하시면 됩니다. 스레드는 굉장히 많이 사용되는 개념입니다. 반드시 다시 공부해나가야할 개념인 것 같습니다. 관련 개념으로 mutex와 atomic도 모두 스레드와 관련된 내용입니다. 스레드는 c++ 표준에는 자리 ..

SW/C++ 2018.11.16

Adaptive Autosar Persistency (지속성)

개요 Persistency은 Adapitve 시스템의 비 휘발성 메모리에 정보를 저장하기 위해 Adaptive Platform의 응용 프로그램 및 기타 Functional Cluster에 메커니즘을 제공합니다. 부팅 및 점화 사이클 동안 데이터를 사용할 수 있습니다. Persistency은 비 휘발성 메모리에 액세스하기위한 표준 인터페이스를 제공합니다. Persistency API는 저장소 위치 식별자를 응용 프로그램의 매개 변수로 사용하여 여러 저장소 위치를 처리합니다. 사용 가능한 저장 위치는 두 가지 범주로 나뉩니다. . Key-Value Storage . File-Proxy Storage 모든 응용 프로그램은 이러한 저장소 유형의 여러 조합을 사용할 수 있습니다. Persistency을 사용하여 ..

SW/Autosar 2018.11.16

[ C++ ] chrono 개념 및 예제

기존의 C++ 라이브러리는 시간을 계산하는 방법이 정밀하지 않았습니다. 최소한의 정밀하게 측정할 수 있는 시간이 10ms 정도였습니다. 다른 방법이 있었지만 C++ 표준에서 제공하는 것이 아니라 운영체제에서 제공하는 방법이었습니다. C++11에서는 나노초까지 계산할 수 있는 chrono를 추가하였습니다. #include #include using namespace std;using namespace chrono;int main(){ system_clock::time_point startTime = system_clock::now(); for (auto i = 0; i

SW/C++ 2018.11.16

[ C++ ] foward_list 개념 및 예제

foward_list 기존의 C++에서 list라는 동적인 자료를 저장하는 자료구조를 제공했습니다. list는 원소별로 이전 원소와 다음 원소를 가리키는 정보를 특별히 가지는 자료구조인 것입니다. 원소가 많아지면 원소의 개수만큼 이전 원소와 다음 원소를 가리키는 자료까지 생겨나게 됩니다. 따라서 원소의 개수가 많아지면 그만큼 추가적인 정보까지 생겨 오버헤드를 유발할 수 있습니다. 이에 착안한 foward_list는 이전 원소를 가리키지는 않고 다음 원소만 가리킴으로써 원소가 많아져도 list보다는 더 적게 추가 정보가 생기도록 하였습니다. list보다 속도가 더 빠르게 설계되어 다음 원소만시켜도 괜찮은 데이터에 맞게 설계된 자료구조입니다. #include #include using namespace st..

SW/C++ 2018.11.16

[ C++ ] array 개념 및 예제

array는 C에서 [] 기호를 사용해 배열을 선업합니다. C에서 사용한 배열과 동일한 배열을 선언하지만 컨테이너와 같이 반복자와 같은 컨테이너에서 사용할 수 있는 메소드를 제공합니다. empty 컨테이너가 비어있는지 확인합니다. size 원소의 개수를 확인합니다. fill 모든 원소를 동일한 값으로 채워 넣습니다. std::array arrayValue {1,2,3,4,5,6,7,8,9,10} Colored by Color Scriptercs array를 이용하여 int형이고 원소가 10개 있는 배열을 선언합니다. array 키워드 바로 뒤에 데이터형이고, 그 뒤 개수를 나타내는 것입니다. arrayValue.empty() cs arrayValue가 비었는지 묻는 것입니다. 비어있따는 것은 원소가 없다..

SW/C++ 2018.11.16

[ C++ ] tuple 개념 및 예제

tuple 튜플의 뜻을 아시나요? 튜플은 사물의 유한한 순서를 뜻합니다. 튜플은 lisp, python, linda 등의 언어에서 두 개 이상의 순선대로 정렬된 서로 다른 값들의 모임을 정리할 때 이용합니다. 다른 객체 지향 언에서 사용되는 튜플을 C++11에서 채택하여 제공하는 것입니다. std::typle tupleValue(10,x,"string");cs 튜플의 선언 방식은 위와 같습니다. tuple 키워드를 이용하여 꺽쇠 안에 묶기 원하는 데이터 형을 나열합니다. 튜플은 함수에서 반환값이 두 개 이상일 경우에 사용하면 효과적입니다. 두 개 이상의 반환값을 전달하기 위해 포인터나 참조를 이용하거나 구조체를 만들어 전달하는 불편함이 있었습니다. 튜플을 이용한다면 반환값을 몇개이던지 전달할 수 ..

SW/C++ 2018.11.16

[ C++ ] 스마트 포인터 개념 및 예제

스마트포인터 개발자 분들에게 가장 큰 근심은 포인터의 메모리 할당과 해제라고 할 수 있습니다. 아무리 메모리에 신경을 쓴다고 해도 하나라도 놓치게 된다면 메모리 누수가 발생하기 때문입니다. 다른 객체지향 언어인 자바는 다행히도 포인터를 사용하지만 자동으로 해제할 수 있도록 설계가 되어 있습니다. 아무래도 C++보다는 그래서 쉬운 편인 것 같습니다. 따라서 C++에서도 자동으로 메모리를 해제해주도록 하는 기능이 c++11에 추가되었습니다. 스마트 포인터의 이름이 왜 스마트인지 이제 느낌이 오시나요? shared_ptr shared_ptr mySmartPtr (new Type);cs 선언 방식은 위와 같습니다. shared_ptr을 사용하기 위해서는 참조 카운트의 개념을 알아야 합니다. 참조 카운트는 해당 ..

SW/C++ 2018.11.16

[ C++ ] range base for 개념 및 예제

Range base for반복문을 작성하기 위해 배열, vector, map 등 같은 범위가 지정된 변수들을 이용합니다. 배열을 반복하기 위해 보통 for 문을 많이 작성합니다. 만약 배열이 10개라서 10번의 반복문을 작성하였다고 가정하겠습니다. 그런데 배열의 선언 변경되면서 원소의 개수가 변경되면 어떻게 될까요? 원소의 개수가 변경된 만큼 배열의 반복문의 숫자도 모두 변경해야하는 불편함이 있습니다. 컴파일 할때마다 수정해야하고 아주 귀찮은 일입니다. C++11에서는 배열, vector, map 등 범위가 있는 변수들을 하나씩 알아서 방문하는 range base for 문을 사용할 수 있습니다. #include #include using namespace std; int main(){ int numAr..

SW/C++ 2018.11.16

Adaptive Autosar Diagnostics ( 진단 )

개요 Diagnostics 관리는 주로 ISO 14229-1 (UDS) 및 ISO 13400-2 (DoIP)를 기반으로하는 ISO 14229-5 (UDSonIP)를 구현합니다. Diagnostics 관리는 ara::com을 사용하여 서비스 계층에서 Adaptive Platform의 Functional Cluster를 나타냅니다. 언어 독립적이며 다른 언어 바인딩을 사용하여 Adaptive 응용 프로그램을 제공합니다. 이 구성은 Classic Platform의 Autosar Diagnostics 추출 템플릿 (DEXT)를 기반으로 합니다. DEXT는 정착하기 시작했습니다. 이미 여러 OEM 및 공급 업체에서 사용되고 있습니다. 지원되는 전송 계층은 DolP입니다. 미래의 Adaptive Platforms은..

SW/Autosar 2018.11.16

Adaptive Autosar RESTful Communication (Restful 통신)

개요통신 스택인 ara::com, ara::rest는 모두 Adaptive Application 프로그램 간에 통신 경로를 설정할 수 있습니다. Ara::rest는 RESTful API와 특정 API를 빌드하는 프레임워크입니다. 직접 RESTful 서비스를 구성하기 위해 특정 API를 정의하지 않습니다. 이 프레임워크는 모듈화되어 있습니다. 개발자는 RESTful 메시지 트랜잭션과 관련된 여러 계층에 직접 액세스 할 수 있습니다. ara:com의 초점은 기존의 함수 호출 인터페이스를 제공하고 이 시점을 넘어서 트랜잭션의 모든 세부 사항을 숨겨야 합니다. 다른 중요한 차이점은 ara:rest가 비 autosar와 상호 운용성을 보장해야 하는 것입니다. 예를들어, ara::rest 서비스는 모바일 HTTP ..

SW/Autosar 2018.11.16

[ C++ ] Lambda 개념 및 예제

C++을 사용하다 보면 함수 자체를 다른 함수의 파라미터로 넘기는 경우가 있습니다. 다음의 예를 살펴보도록 하겠습니다. template void sort(RandsomIt first, RandomIt last, Compare comp);cs template을 이용하여 정렬할 값의 시작과 끝을 알려줍니다. 비교할 함수를 받아 comp() 함수를 이용해 값을 비교합니다. 이 때 비교 함수는 우리가 정렬하는 값이 문자열인지, 숫자인지, 객체인지에 따라 임의로 전달해 주어야 합니다. 즉 함수를 파라미터로 넘겨주어야 하는 것입니다. 이런 상황이 다른 곳에서 많이 발생합니다. 따라서 비교하는 함수를 만들어 정렬할 때마다 전달해야 합니다. 하지만 이러한 함수는 굉장히 짧고 다른 곳에서 쓰이지 않을 일회용 함수일 가능..

SW/C++ 2018.11.15

[ c++ ] auto 개념 및 예제

auto변수를 선언하기 위해 변수 이름 앞에 어떤 데이터 형으로 선언할지 변수의 데이터 형을 입력해야 했습니다. 하지만 객체 지향을 이용하는 개발자들은 데이터형을 하나하나 입력하는 것도 귀찮은게 사실입니다. 결국 개발자들은 컴파일러가 데이터에 따라 알아서 데이터 형을 정해주기를 바랍니다. 최근 이슈가 되고 있는 파이썬에는 어떠한 변수에도 데이터형을 입력하지 않습니다. 프로그램을 실행하면 자동으로 데이터 형을 정하는 것입니다. C++11에서는 auto라는 기능이 추가되었습니다. auto를 활용하면 데이터 형을 컴파일러가 알아서 지정합니다. 대신 auto로 선언되는 변수는 선언과 동시에 초기화되어야하는 것이 조건입니다. 컴파일러가 초기화되는 시점에 데이터형을 결정합니다. 따라서 어떤 데이터형으로 선언할지 알..

SW/C++ 2018.11.15

C++11은 무엇일까요?

객체 지향 언에는 많은 언어가 있습니다. C++ 뿐만 아니라 스몰토크, Ada, 파이썬, 루비까지 다양한 언어가 있습니다. 이러한 다양한 언어가 존재하는 이유는 시대가 흐르면서 컴퓨터의 성능이 발전하고 고성능 장치가 생겨나면서 다양한 요구가 생기기 때문입니다. 그러므로 객체지향에서 원하는 요구사항이 변경되면서 C++도 다양한 요구 사항을 받아들이고 있습니다. 새로운 기능들을 추가하기 위해 지속적으로 발전하는 것입니다. 앞으로 알아두면 좋은 C++ 기능을 포스팅하겠습니다. 객체지향의 요구사항이 변경되고 새롭게 추가되면서 C++도 새로운 좋은 기능들이 채택되었습니다. 혹시 C++0x라고 들어보셨나요? C++ 기능들이 추가되어가면서 2000년대의 한 시점에 표준이 공개될 것이라고 예상해 C++0x라 칭하였습니..

SW/C++ 2018.11.15
반응형