da9dac

세상을 바꾸는 기계 지능

개요 최근에는 일상 생활의 많은 부분에서 기계 지능의 도움을 받고 있다. 기계 지능은 머신러닝, 인공지능, 빅데이터 등의 분야가 포함된 주제다. 기술 발전과 인터넷의 영향으로 더 좋은 성능의 기계를 더 저렴하게 사용할 수 있고, 방대한 양의 정보를 수집할 수 있게 되면서 기계 지능은 급속도로 발전하고 있다. 빅데이터는 의사결정 과정에서 사용되는 정...

추상

왜 클린 코드를 추구해야 할까? 출근해서 가장 많이 하는 일이 무엇일지 생각해 보면 답은 이전에 나 아니면 다른 누군가가 작성한 코드를 읽는 것이다. 현재는 어느 정도 익숙해져서 코드를 읽는 속도가 많이 빨라졌지만, 여전히 레거시 코드를 읽는 것은 귀찮고 힘든 작업이다. 별의별 다양한 레거시 코드들을 볼 때마다 커밋 내역을 뒤져보면서 누가 짠 코드인...

컴퓨터 보안

보안과 프라이버시 위협 모델 보안이 필요한 대상 목록과 각 보안 대상에 가해질 수 있는 공격을 열거해 이런 공격을 방어할 방법을 설계할 수 있게 한다. 보안 수준과 위험도, 비용 등 여러 요소를 고려해 위협 모델에 적합한 방어를 설계해야 한다. 신뢰 현대에 많은 기술의 발전을 거치면서 다양한 대상과 공격 방법들이 생기면서 신뢰할 대상...

병렬성과 비동기성

개요 컴퓨터는 한 번에 둘 이상의 작업을 수행하는 멀티태스킹을 지원한다. 하지만 동시에 여러 프로그램이 동작해도 처리 순서가 중요한데, 이를 어떻게 처리하는지 알아보자 경합 조건 여러 프로그램이 동시에 같은 자원에 접근할 때, 자원 사용 순서에 따라 결과가 달라지는 것을 뜻한다. 즉, 공유 자원에 각 프로그램이 접근하는 타이밍에 따라 결과가...

성능 향상을 위한 알고리즘 기법

개요 당연한 말이지만 계산을 효율적으로 하는 것도 중요하지만, 가능하다면 계산을 피하는 것이 더 좋다. 대표적으로 지름길과 근삿값 계산이 있는데, 두 방식에 대해 살펴보자. 표 찾기 특정 계산을 중복적으로 하는 경우 결과를 미리 계산해두고 반복 사용하는 방식이다. 변환 자연로그 등이 포함된 부동소수점 계산 같은 경우는 계산 비용이 비싸다. ...

애플리케이션 프로그래밍과 시스템 프로그래밍

개요 웹 브라우저를 활용하지 않고 프로그래밍을 하면 어떤 과정을 거쳐야 하는지에 대해 살펴보자 HTML과 자바스크립트 프로그램 브라우저는 고수준 가상 머신으로 하부 구조를 감추면서 빠르고 쉽게 프로그램을 작성할 수 있다. 애플리케이션 수준의 뼈대 HTML은 웹 페이지의 기본 구조와 뼈대를 형성한다. 즉, 웹 문서의 구성 요소 정의 및 배치...

웹 브라우저

개요 웹 브라우저는 가상 머신이자 인터프리터로, 애플리케이션으로 볼 수도 있고, 프로그래밍을 할 수 있는 하나의 컴퓨터로 볼 수도 있다. 이러한 웹 브라우저에 어떤 기능이 있고 어떻게 동작하는지에 대해 살펴보자 마크업 언어 대표적으로 HTML이 있다. 본문과 구분할 수 있는 마크를 추가할 수 있는 시스템이다. 일부 문자에 특별한 기능을 ...

프로그래밍 언어 처리

개요 작성한 코드가 어떤 과정을 거쳐서 실행되는지에 대해 살펴보자 어셈블리 언어 모든 비트 조합을 외우지 않아도 니모닉을 통해 명령어를 쓸 수 있다. 주소에 레이블(이름)을 붙일 수 있다. 코드에 주석을 달 수 있다. 어셈블리 언어를 기계어 코드로 생성해주는 프로그램을 어셈블러라고 한다. 어셈블러는 변환 과정에서 레이블이나 심볼의...

데이터 구조와 처리

개요 머리에 남아있진 않지만 메모리 시스템의 특성을 배웠으니, 이를 생각하면서 데이터를 효율적으로 다루기 위한 데이터 구조에 대해 알아보자 기본 데이터 타입 프로그래밍 언어는 int, double, char 같은 다양한 기본 데이터 타입을 제공한다. 포인터는 크기가 컴퓨터 아키텍처에 따라 결정되는 부호가 없는 정수로, 메모리 주소다. 일...