전체 글
-
자동차 시장 오픈소스 - 1개발/오픈소스 2017. 1. 15. 19:18
IoT 기술의 발달로 전보다 자동차 내에 다양한 기능을 넣을 수 있게 되면서 이런 다양한 기술을 자동차 내에 개발 할 수 있는 표준을 제공하는 것이 업계 내에선 화두가 되었다. 이에 따라 큼직한 자동차 회사들은 다른 IT 회사들이 자동차 내 IVI(In Vehicle Infotainment) 소프트웨어 개발할 수 있는 표준을 제공하기 위해 끼리끼리 모여서 오픈소스 프로젝트를 진행하고 있다. 대표적인 오픈소스 프로젝트로 GENIVI와 AGL(Automotive Grade Linux)가 있다. 두 프로젝트는 여러 면에서 유사한데 굳이 차이점을 고르라면 참여하고 있는 멤버와 AGL이 오픈소스로 유명한 Linux재단에서 운영되고 있다는 점 정도 일 것이다. 두 프로젝트 모두 Yocto 기반의 개발 환경을 두고 ..
-
5. 이벤트 채널 소개개발/가상화 2017. 1. 7. 17:52
이벤트 채널에 대해 설명하기 전에 인터럽트에 대해서 간단히 소개를 하자. 인터럽트는 CPU에 즉각적인 처리가 필요한 작업을 알리는데 사용되는 프로세스이다. 사용 방법은 네트워크, 블럭 드라이버 같은 하드웨어에 처리가 필요한 작업이 들어온 경우 인터럽트 핸들러에 알리고, 요청을 받은 인터럽트 핸들러는 이들의 요구 사항을 디바이스 정보와 함께 CPU에 전달한다. CPU는 현재 실행중인 프로세스를 잠시 중단 시키고 요청을 처리한다. 인터럽트가 있기 때문에 나는 블로그 포스트를 쓰면서도 친구의 카톡메시지를 동시에 받을 수 있다. 이벤트 채널의 역할은 인터럽트와 거의 동일하다. 단지 쓰이는 곳이 다를 뿐이다. 앞서 포스트에서 DomainU들은 Domain0와 Frontend-Backend Driver 관계를 가진..
-
이런 오픈 소스도 있다!개발/오픈소스 2017. 1. 7. 00:39
어떤 오픈소스에 참여 해볼까 조사하던 중에 신박한 주제를 가지고 있는 프로젝트들을 발견 했다. 이번 포스팅에서는 조사 과정에서 발견한 신박한 오픈소스 프로젝트들에 대해서 정리를 해보려고 한다. 1. Open MRS Google Code in에선 이 프로젝트대한 부연 설명으로 "Write code, save lives!" 딱 한 줄을 내놨다. 코드를 작성하고 생명을 구하자는 말인데 코딩을 하는 거랑 환자를 치료하는 거랑 전혀 무관 할 것 같지만 실제로 이 프로젝트는 의료지식이 전혀 없는 프로그래머들이 자신이 만든 소프트웨어로 HIV/AIDS같은 불치병을 치료하는 프로젝트를 진행한다. 여기서 만든 소프트웨어는 개발도상국에서 환자들의 정보를 별도의 전문적인 지식 없이 저장 및 재사용이 가능한 데이터베이스 환경..
-
디바이스트리(Device Tree)개발/컴퓨터사이언스 2017. 1. 4. 19:07
운영체제(Operating System)가 하드웨어와 소프트웨어 사이의 중간자 역할을 하고 사용자의 애플리케이션이 하드웨어를 조작하기 쉬운 환경을 제공 한다는 것은 컴퓨터 전공자라면 운영체제 수업시간에 귀가 빠지도록 배웠을 것이다. 운영체제는 오드로이드, 아두이노, 주노보드처럼 다양한 보드 위에 있는 RAM, CPU, EMMC등 하드웨어들을 초기화 및 조작하는 역할을 한다. 지금 이 글을 쓰기 위해 타자를 치는 동안 운영체제는 타자 입력 인터럽트를 처리하고 소프트웨어에 전달하는 일을 계속 하고 있다. 어떤 메인 보드를 사용하더라도 운영체제의 기본 뼈대는 동일해야 한다. 하지만 메인 보드들마다 상세 하드웨어 스펙은 천지 차이다. 예를 들면 RAM의 크기나 USB의 물리 주소의 위치처럼 당연한 것 부터 이 ..
-
오픈소스 시작하기개발/오픈소스 2017. 1. 1. 11:48
사오정이란 말이 난무하지만 정작 사십오세까지 직장을 다니기도 버거운 고용불안 시대에 한 회사에만 나의 운명을 맡길 수 없어 입사 2년차인 2017년 올해 부터는 회사 안에서 뿐만 아니라 밖에서도 링크드인에 남길만한 이력을 채우는 것을 새해 목표로 삼았다. 하지만 머릿 속에선 '뭘 해야 하지?' 라는 질문이 먼저 들었다. 안드로이드이나 윈도우 응용 애플리케이션을 개발하는 개인 프로젝트를 해볼까 했지만 이런건 모든걸 혼자 해야한다. 아이디어도 혼자 생각해야하고 기획도 혼자 해야하고 디자인도 혼자 해야하고 개발도 혼자 (그것도 잘)해야한다. 개인 프로젝트이기에 개발과정에서 나오는 이슈들을 같이 고민하는 사람들이 없다(스택 오버플로우에 물어보면 좀 모를까). 산적한 문제들을 해결하다 보면 순수한 마음으로 시작했..
-
카쿠로알고리즘/algospot 2016. 12. 11. 16:49
스도쿠나 N-Queens 문제들을 마주할 때면 가슴이 답답하다. 냅색이나 LIS 처럼 차곡차곡 상황들을 쌓아 갈 수 없을 뿐더러 두더지 게임 처럼 하나의 조건을 해결하면 또 다른 문제가 튀어나오니 도대체 어떻게 풀어야 할 지 감을 잡을 수 없었다. 이러한 유형의 문제를 보면 정말 머리 좋은 친구들이 푸는건가보다 하고 그냥 넘어 갔던 것 같다. 알고리즘 해결 전략에서는 스도쿠, N-Queen 그리고 가쿠로 문제처럼 특정한 제약에 해당하는 답을 찾는 문제를 제약 충족 문제라고 한다. 조합 탐색 문제들 중에 하나인데 먼저 조합 탐색은 기존에 사용했던 알고리즘(DP, 탐욕법 등등)을 사용 할 수 없고 가지치기를 통해 검사 할 필요가 없는 경우들을 미리 쳐내는 방법이다. 제약 충족 문제는 조합 문제에서 한 발 더..
-
가상화기술의 대표적인 보안 문제개발/가상화 2016. 12. 10. 12:54
가상화 기술은 각 OS들 간의 isolation을 지원해 다른 VM들에 비해 보안이 우수하다고 하지만 가상화 기술 또한 보안 문제에서 자유롭지 못하다. 기존 OS가 갖고 있는 보안 문제를 회피 할 수 있으면서도 또 다른 양상의 보안 문제가 발생 할 수 있는데 이번 포스트에서는 가상화 기술의 대표적인 보안 문제점들을 정리 해보고자 한다. 1. Virtual Machine들 간의 공격. 가상화 기술의 가장 큰 장점은 VM들끼리 독립된 관계를 유지(isolation)되어 서로 영향을 주지 않는다는 것인데 만약 이 처리를 잘 해두지 않는다면 VM들간에 혹은 VM이랑 VMM 간에 공격이 발생 할 수 있다. 공격 양상은 VMM이 갖고 있는 데이터를 바꿔버리거나 혹은 읽어오는것 등등이 있다. 2. VM escape ..
-
모듈러 나눗셈 연산 처리하기알고리즘/자료구조 2016. 12. 10. 12:14
프로그래밍 문제에서 가끔 이런 연산을 요구하는 문제들이 있다. (N/K) % MOD N과 K의 값이 작으면 N과 K의 값을 먼저 계산 하고 나서 모듈러 연산을 취해주면 문제가 없다. 하지만 N과 K값이 64bit 이상으로 변수에 넣을 크기를 초과하는 경우 앞의 나눗셈 계산은 정상적인 값을 내놓지 않을 것이고 모듈러 연산은 정상이 아닌 값을 받아 처리해 결론적으로 잘못된 값을 낸다. 주로 N과 K를 팩토리얼로 받는 조합의 경우의 수를 구할 때 난감하다 -> nCr % MOD 인 경우 이런 경우를 해결 하기 위해 모듈러 연산의 나눗셈을 계산하는 특별한 방법이 존재한다. 모듈러 연산에서 나눗셈 N/K는 K로 나누는 대신에 K의 곱셈 역원(multiple inverse)를 곱하는 방식으로 이뤄진다. 곱셈 역원은..