프로그래밍(Basic)/이론

    [바미] 프로세스와 스레드 (Process vs Tread)

    안녕하세요. 오늘은 프로세스와 스레드에 대해 이야기를 포스팅 해보려 합니다. 프로세스와 스레드에 대해 많이 들었지만 뒤돌아서면 까먹기 쉬운 CS 지식이 아닐까? 생각이 들어 저도 리마인드 할겸 포스팅해보게 되었습니다. 제목은 프로세스와 스레드를 썼지만 프로그램, 프로세스, 스레드와 관련된 기초적인 것들을 써보겠습니다. 프로세스(Process)와 스레드(Thread) 먼저 프로세스와 스레드가 무엇인지부터 살펴보죠. 프로세스(Process)란 운영체제로부터 자원을 할당받은 작업의 단위를 의미합니다. 프로세스의 특징 1. 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. 2. 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다. 3. 각 프..

    [바미] DB에 float 데이터를 저장하기.

    개발 언어에서는 실수형 데이터를 float 타입으로 선언하곤 합니다. 이 때문에 DB를 구성할 때도 실수형 데이터가 저장될 열을 FLOAT 타입으로 선언하게 되는데요. ALTER TABLE 테이블이름 ADD COLUMN 컬럼이름 FLOAT; 이런식으로 선언 시 데이터를 저장한 다음 평균을 내거나 합계를 낼 때 조금씩 차이가 나는 현상이 발생하고, 소수점이 조금 긴 데이터를 저장 시 소수점 몇자리부터 짤리는 현상을 경험하여 알게 되었습니다. 이유는 바로 FLOAT 타입이 근사 값을 저장하기 때문이였습니다. 이 부분은 FLOAT, REAL, DOUBLE PRECISION 모두 동일하였습니다. msdn에서도 다음과 같이 설명하고 있는데요. 부동 소수점 데이터는 근사 값이므로 해당 데이터 형식 범위에 있는 모든..

    [바미] MVC, MVP, MVVM 패턴에 대해 알아봅시다.

    MVC 패턴 MVC 패턴은 크게 Model-View-Controller 3가지로 나눈 소프트웨어 개발 방법론입니다. Model : 일반적으로 DB테이블에 해당한다. 순수한 데이터로서 DB의 역할을 하거나 DB에 데이터를 요청해서 원하는 데이터를 받는 역할을 합니다. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 하고 View나 Controller에 대한 정보는 알수없습니다. View : Controller로 데이터를 받아서 클라이언트 측 기술인 html/css/javascript를 이용해 표현하는 역할을 합니다. 데이터를 따로 보관하지 않고 처리합니다. Controller : 사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, Mode..

    [바미] 오토마타 프로그래밍의 중요성

    안녕하세요. 오늘은 오토마타 프로그래밍의 중요성에 대해 알아보려 합니다. 오토마타는 나무위키에 있는 정의에 따르면 아래와 같습니다. 오토마타 이론(영어: Automata Theory)은 계산 능력이 있는 추상 기계와 그 기계를 이용해서 풀 수 있는 문제들을 연구하는 컴퓨터 과학의 분야이다. 여기서 추상 기계를 오토마타(automata, 복수형) 또는 오토마톤(automaton, 단수형), 즉 자동 기계라고 부른다. 이 이름은 '자동'을 의미하는 그리스어 'αὐτόματα'에서 유래하였다.오토마타 이론(영어: Automata Theory)은 계산 능력이 있는 추상 기계와 그 기계를 이용해서 풀 수 있는 문제들을 연구하는 컴퓨터 과학의 분야이다. 여기서 추상 기계를 오토마타(automata, 복수형) 또는 ..

    [바미] 좋은 코드를 만들기 위한 노력.

    세상에 수 많은 개발자들이 있는데 그 중에서 "저 사람 잘하네"라고 할 때 그 기준 중에 하나가 프로그램을 튼튼하게 만든다는 점에 있습니다. 튼튼하게 만든다는 것은 프로그램이 터지지 않는 것, 멈추지 않는 것을 의미합니다. 프로그램을 튼튼하게 만들기 위해 중요한 것 중에 하나가 '방어 코드'인데 실제로 정말 잘 짜여진 프로그램의 코드가 100%라 했을 때 실제 동작하기 위한 코드가 20%, 나머지 80%는 방어코드로 이루어져 있다고 합니다. 그래서 20%의 동작을 위한 코드는 내가 그렇게 되길 바라는 코드이고 나머지 80%는 그렇게 안되는 부분들을 막기위한 코드라 보면 되죠. '20-80법칙'이라고도 하는데 방어코드를 잘 짜는 것 하나만으로 상위 20% 개발자에 들어설 거라 확신합니다. 간단하게 설명하자..

    [바미] (번역) DOM은 정확히 무엇일까?

    본 번역문은 원작자의 동의하에 번역 및 게시되었습니다. 최근 잘못 이해하고 있었던 DOM에 대해 정확한 개념을 정리해 보고자 Ire Aderinokun이 작성한 What, exactly, is the DOM? 문서를 번역해 보았습니다. DOM은 정확히 무엇일까? DOM(Document Object Model)은 웹 페이지에 대한 인터페이스입니다. 기본적으로 여러 프로그램들이 페이지의 콘텐츠 및 구조, 그리고 스타일을 읽고 조작할 수 있도록 API를 제공합니다. 먼저 DOM을 이해하기 전에 웹 페이지가 어떻게 빌드 되는지 살펴보겠습니다. 웹 페이지는 어떻게 만들어질까? 웹 브라우저가 원본 HTML 문서를 읽어들인 후, 스타일을 입히고 대화형 페이지로 만들어 뷰 포트에 표시하기까지의 과정을 “Critical..

    [바미] 브라우저는 어떻게 동작하는가?

    이 글은 이스라엘 개발자 탈리 가르시엘(Tali Garsiel)이 html5rocks.com에 게시한 "How Browsers Work: Behind the scenes of modern web browsers"를 번역한 글입니다. 탈리 가르시엘은 몇 년간 브라우저 내부와 관련된 공개 자료를 확인하고, C++ 코드 수백만 줄 분량의 WebKit이나 Gecko 같은 오픈소스 렌더링 엔진의 소스 코드를 직접 분석하면서 어떻게 브라우저가 동작하는지 파악했습니다. 소개 브라우저는 아마도 가장 많이 사용하는 소프트웨어일 것이다. 이 글을 통해 브라우저가 어떻게 동작하는지 설명하려고 한다. 이 글을 읽고 나면, 브라우저 주소 창에 naver.com을 입력했을 때 어떤 과정을 거쳐 네이버 페이지가 화면에 보이게 되는..

    [바미] 어제 KT 통신 장애 원인이였던 '라우팅 오류'에 대해 알아봅시다.

    25일 오전 11시30분경 KT 유·무선 인터넷망에 데이터 전송이 뤄지지 않아 전국적인 통신 장애가 발생했던 일이 발생했습니다. 어제에 장애가 발생하였던 넥슨, 다나와, 네이버 등(참조)이 그 예인데요. 장애 발생 초기 원인으로는 대규모 디도스 공격을 거론했지만, 확인 결과 KT의 네트워크 경로설정(라우팅) 오류가 원인인 것으로 확인되었다고 합니다. 이것에 대해 알기 위해서는 먼저 라우팅에 대해 알아야 합니다. 라우팅은 네트워크 안에서 통신 데이터를 전송할 시 경로를 선택하는 과정을 말합니다. 여기서 경로란 전송 데이터를 가장 짧은 거리 또는 가장 적은 시간 안에 전송할 수 있는 경로를 말하는 것이죠. 이동통신사를 포함해 모든 네트워크 장비에는 라우팅을 위한 라우팅 케이블이 있습니다. 자! 그러면 이를 ..

    [바미] js엔진은 어떻게 동시처리를 하는지 알아보자.

    [목표] nodejs가 싱글쓰레드임에도 불구하고 비동기처리를 한다는데 어떻게해? 의문에 답해보자 nodejs가 이벤트루프기반 비동기처리를 한다는데, 이벤트루프가 대체 뭔지 알아보자 랜더링엔진 구조, 처리방식은 알아봤는데 자바스크립트 엔진은 그냥 지나간 것 같으니 이번 기회에 알아보자 [우선! 자바스크립트 엔진과 브라우저 랜더링엔진은 다르다] 랜더링엔진은 HTML과 CSS파일을 파싱하여 새로운 트리구조를 만들고 브라우저 화면에 문서를 나타내는(painting) 작업을 함 자바스크립트 엔진은 js 코드 파일을 해석하고 실행하는 인터프리터(구글의 V8과 같은 엔진) [자바스크립트 엔진 구조] 대부분의 자바스크립트 엔진은 다음과 같이 세가지 영역으로 나뉨 1) Call Stack 자바스크립트는 단 하나의 호출 ..