분류 전체보기 169

C++14 STL 철저 입문

아이버 호튼 지음 / 조현태 옮김길벗2016​Using the C++ Standard Template LibrariesIvor HortonApress2015​​​​  1장.  표준 템플릿 라이브러리 1장에서는 표준 템플릿 라이브러리에 내재된 기본 개념부터 설명하겠다.- STL에는 무엇이 있는가?- 템플릿을 정의하고 사용하는 법- 컨테이너는 무엇인가?- 반복자는 무엇이고 어떻게 사용하는가?- 스마트 포인터의 중요성과 컨테이너를 사용하는 법- 알고리즘은 무엇이고 응용하는 방법- 수치 라이브러리가 제공하는 기능- 함수 객체는 무엇인가?- 람다 표현식을 정의하고 사용하는 방법​이 장에서는 STL을 지탱하는 기본 아이디어도 소개하지만, 이어지는 장에서 자주 사용하기 때문에 익숙해져야 할 C++ 언어의 기능도 소개..

[가상화] 1. 가상화 개념 정리(KVM/QEMU)

1. 가상화   가상화란 한 대의 시스템 하드웨어를 논리적으로 분할하여 가상의 시스템에 활용하는 개념이다. 가상 시스템들은 서로 독립적인 하나의 시스템으로 인지되기 때문에 주어진 하드웨어 리소스를 효율적으로 사용할 수 있다. 새로운 하드웨어 자원을 구비하고 시스템을 구축하는 것 보다 있는 자원을 활용하기 때문에 비교적 간결하고 쉽게 시스템을 올릴 수 있다. 호스트 OS를 기저에 두고 호스트를 중앙 시스템으로 하는 중앙 집중형의 서비스를 구축하기에 적절하다.   가상화를 이야기하려면 하이퍼바이저(Hypervisor)를 빼 놓을 수 없는데, 가상 OS와 실제 하드웨어 자원 사이에 위치하며 둘 사이의 괴리를 조정해주는 역할을 하는 것으로 볼 수 있다. 이 과정을 '추상화'라고 하는데, 물리적인 하드웨어 자원을..

clean(), cleansstate(), cleanall()

yocto에서 작업한 레시피에 대해, clean, cleansstate, cleanall 태스크로 작업된 레시피 결과물을 제거할 수 있다.   -c clean$ bitbake -c cleanrecipe의 작업 디렉토리(${WORKDIR})에, unpack 이후에 수행했던 모든 태스크 결과물을 제거한다.   -c cleansstate$ bitbake -c cleansstatedo_clean() + sstate 까지 제거한다.sstate가 잘못된 경우가 있는데, 컴파일 중 전원이 나가는 등의 예상치 않은 빌드 실패 시, sstate 까지 싹 지우자.   -c cleanalldo_clean() + do_cleansstate() + DL_DIR 에 저장된 다운로드 데이터도 제거한다.$ bitbake -c ..

x86-64 CPU 레지스터(Register) 종류, 32bit / 64bit 비교

1. 레지스터란?   CPU의 빠른 데이터 처리를 돕기 위해 사용되는 임시저장공간으로, 처리중인 데이터나 처리 결과를 담는다.  레지스터의 종류에는 범용 레지스터, 세그먼트 레지스터, 포인터 레지스터, 인덱스 레지스터, 플래그 레지스터가 있다.    32bit, 64bit 운영체제에서 32bit, 64bit 는 레지스터 및 데이터 경로의 크기 를 의미한다.  위 예시에서 AH 는 8bit 운영체제와 호환되는 레지스터라고 이해하면 된다.    운영체제의 발전에 따라, 수행해야할 기능이 많아지면서  많은 정보를 다룰 수 있도록 새로운 레지스터가 추가되고, 크기도 점점 커졌다. ※ E 는 Extended 의 약자. CPU의 아키텍쳐에 따라 레지스터의 종류가 다를 수 있다.     2. 범용 레지스터   범용 ..

[CSAPP] Ch 9. 가상메모리 : (1) 물리 및 가상주소 방식

0. Intro 제한된 자원인 물리메모리를 보다 효율적이게 관리하기 위해서 현대의 시스템은 가상메모리라는 메모리의 추상화를 제공한다.가상메모리는 각 프로세스에 하나의 크고 통합된, 사적 주소공간(가상메모리)를 제공한다.​   가상메모리의 중요한 기능 세가지     1. 메인메모리를 디스크에 저장된 주소공간에 대한 "캐시"로 취급하여, 메인메모리를 효과적으로 사용한다.    2. 각 프로세스마다 통일된 주소공간을 제공하여 메모리 관리를 단순화한다.    3. 각 프로세스의 주소공간을 다른 프로세스에 의한 손상으로부터 보호한다.    1. 물리 및 가상주소 방식   9.1 물리 및 가상주소 방식   컴퓨터의 메인메모리(RAM)은 M개의 연속적인 바이트 배열로 구성된다.  각 바이트는 "물리주소(PA)" 라고..

: : CSAPP 2024.05.30

'칸반(Kanban)', 효율적인 작업 흐름 관리의 시작

'칸반(Kanban)', 효율적인 작업 흐름 관리의 시작 칸반(Kanban)이란 생산 과정에서 효율성과 기민성을 높이기 위한 간소화된 작업 흐름 관리 시스템이다. 일반적으로 소프트웨어 개발에 사용되지만 IT뿐만 아니라 모든 업무 영역에서 점진적인 개선을 지향한다. 1940년대 초반 일본에서 토요타에 의해 개발됐으며, 본래 프로젝트 관리를 대체하거나 개발 방법론 역할을 하려고 만들어진 것이 아니다. 대신, 더 좋은 작업 흐름 구조를 만들어 이미 확립된 공정을 개선하는 데 중점을 둔다. 칸반은 조직 내에 진행 중인 업무(Works In-Progress , WIP)가 일정 수준 이상 밀려 있지 않게 하는 데도 도움을 준다. 이 밖에도 강력한 리더십, 조직적 투명성, 팀워크, 사내 열린 소통과 협업을 지원한다...

LLVM

he LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them. The name "LLVM" itself is not an acronym; it is the full name of the project.LLVM 프로젝트는 모듈식의 재사용 가능한 컴파일러와 툴체인의 집합입니다. 이 이름에도 불구하고 LLVM은 기존의 가상머신과는 그것을 만드는데 ..

[펌글] 임베디드 개발자 양극화는 얼마나 심각할까 + a

https://youtu.be/167CSJxaYOo 실력좋은 개발자가 되려면 훌륭한 개발자와 함께 일을 하면 된다.   0. 임베디드 양극화 에피소드를 말하는 이유   0.1  잘못된 정보를 주입하는 꼰대 선배 개발자와 관리자    0.2  개발자로써 개발 인생(커리어 패스)에 치명적인 데미지     0.3  무조건 신입 개발자들의 야근과 열정을 강요하는 후진적인 개발문화      1. 뛰어난 개발자가 되기 위한 환경 및 조건   1.1  훌륭한 개발자와 함깨 개발을 함 (출처: 프로그래머로 사는 법)   1.2  교육 체계가 잘 갖추어짐   1.3  전문성을 키울 수 있는 업무 분장   1.4  도전적이며 성취감을 느낄 수 있는 프로젝트   1.5  개방적이며 누구나 자신의 의견을 알림   별점 5점만..

UML: 클래스 다이어그램과 소스코드 매핑

1. UML   UML이란 Unified Modeling Language의 약자로 1997년 OMG(Object MAnagement Group)에서 표준으로 채택한 통합모델링언어 입니다. 즉, 모델을 만드는 표준언어인 것입니다. 모델이란 것은 어떤 것을 실제로 만들 때 이렇게 만들면 잘 작동할지 미리 검증해보는 것이며, 실제 물건을 만드는 비용보다 훨씬 적게 들 경우 모델을 만들어 설계를 검사합니다.   소프트웨어에서의 모델은 건축, 항공 등의 모델과는 좀 다른 면이 있습니다. 건물을 짓고, 항공기를 만드는 것과 설계를 그리고 만드는 일은 개발보다 비용이 적긴 하지만 훨씬 적게 드는게 아니며 때로는 오히려 개발비용보다 더 많이 들 수도 있습니다. 그래서 UML은 시험해 볼 구체적인 것이 있고, 그것을 코..

The Wayland Protocol 개요

0. Intro   오늘날, 리눅스 UX 관련해서 부각되는 것 중에 하나는 바로 WAYLAND 이다. (WAYLAND 는 기존의 윈도우 매니저를 개발하기 위해 사용해왔던 X11 프로토콜을 대체하는 프로토콜이다.) 대다수의 핵심 UX 관련 프로젝트들(GTK+, Qt, Clutter 등등)이 Wayland를 백엔드로 지원하기 위한 작업들을 진행 중이고, 짧은 시간 동안 상당 부분 진척이 이루어졌다..    사실 현재 X11은 Wayland에서 제공하는 기능들을 전혀 제공하지 못하는 것은 아니다. (심지어 X12 프로젝트 또한 진행 중이다.) 하지만 중요한 것은 이와 같은 여러 가지 이유로 모두가 X 를 버리고 새롭게 시작하기를 원한다는 것이다.다음은 기술적인 그리고 구조적인 몇 가지 이유를 설명하도록 하겠다..