프로그래밍(Basic)

    [바미] Bridge 패턴에 대해 알아봅시다.

    안녕하세요. 오늘은 Bridge 패턴에 대해 알아 보려고 합니다. Bridge는 다리라는 의미를 가진 영어 단어 입니다. 실제로 다리가 하는 역할은 강 양쪽의 장소를 연결하는 역할을 한다고 합니다. 요번에 알아볼 Bridge 패턴 역시 '기능의 클래스 계층'과 '구현의 클래스 계층'이라는 두 장소를 연결하는 역할을 하는데요. 기능의 클래스 계층과 구현의 클래스 계층을 모른 상태에서 접하신다면 조금 어려우실 겁니다. 먼저 이 두 곳의 장소를 알아보고 갑시다. 계층은 크게 새로운 기능을 추가하고 싶은 경우, 새로운 구현을 추가하고 싶은 경우로 두가지 역할을 합니다. 새로운 기능을 추가하고 싶은 경우 어떤 클래스가 있다고 가정했을 때 그 클래스에 새로운 기능(새로운 메소드)을 추가하고 싶은 경우 그 클래스의 ..

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

    세상에 수 많은 개발자들이 있는데 그 중에서 "저 사람 잘하네"라고 할 때 그 기준 중에 하나가 프로그램을 튼튼하게 만든다는 점에 있습니다. 튼튼하게 만든다는 것은 프로그램이 터지지 않는 것, 멈추지 않는 것을 의미합니다. 프로그램을 튼튼하게 만들기 위해 중요한 것 중에 하나가 '방어 코드'인데 실제로 정말 잘 짜여진 프로그램의 코드가 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의 네트워크 경로설정(라우팅) 오류가 원인인 것으로 확인되었다고 합니다. 이것에 대해 알기 위해서는 먼저 라우팅에 대해 알아야 합니다. 라우팅은 네트워크 안에서 통신 데이터를 전송할 시 경로를 선택하는 과정을 말합니다. 여기서 경로란 전송 데이터를 가장 짧은 거리 또는 가장 적은 시간 안에 전송할 수 있는 경로를 말하는 것이죠. 이동통신사를 포함해 모든 네트워크 장비에는 라우팅을 위한 라우팅 케이블이 있습니다. 자! 그러면 이를 ..

    [바미] Builder 패턴에 대해 알아봅시다.

    안녕하세요. 오늘은 Builder 패턴에 대해 알아보려고 합니다. 흔히 Build라는 단어는 구조를 가지고 건물 등을 지을 때 사용할 때 쓰는 단어입니다. 보통 건물을 세울 때 밑에 지반을 다지고, 골격을 세우고, 아래에서 위로 조금씩 만드는 형식이죠. 그리고 그 건물이 어려울 수록 한 번에 세우는 것 또한 쉽지 않죠. 보통은 전체를 구성하고 있는 부분들을 단계를 나누어 짓게 되는데요. 이런 형식의 구조를 가진 인스턴스를 쌓아 올리는 디자인 패턴이 Builder 패턴이라고 합니다. 이제 예제 프로그램을 만들어 볼 건데요. Builder 패턴을 사용하여 문서를 작성하는 프로그램을 만들어 보도록 하겠습니다. 여기에서는 다음과 같은 구조를 가지고 있는데요. 타이틀을 한 개 포함한다. 문자열을 몇 개 포함한다...

    [바미] Prototype 패턴에 대해 알아봅시다.

    안녕하세요. 오늘은 Prototype 패턴에 대해 알아볼 것인데요. 보통 인스턴스를 작성할 때 new Instance(); 이런식으로 new라는 Java언어의 키워드를 사용해서 클래스 이름을 지정해서 인스턴스를 생성하실 겁니다. 이 처럼 new로 인스턴스를 만들 경우에 클래스 이름도 반드시 지정해야 하지만 클래스 이름을 지정하지 않고 인스턴스를 생성 할 때도 있어요. 종류가 너무 많아 클래스로 정리되지 않는 경우 클래스로부터 인스턴스 생성이 어려운 경우 framework와 생성할 인스턴스를 분리하고 싶은 경우 가 그 예인데요. 1번의 경우 취급하는 오브젝트의 종류가 너무 많아서 각각을 별도의 클래스로 만들어 다수의 소스 파일을 작성해야 하는 경우를 말하구요. 2번의 경우 생성하고 싶은 인스턴스가 복잡한 ..

    [바미] Singleton 패턴에 대해 알아봅시다.

    안녕하세요 오늘은 싱글톤 패턴에 대해 알아 볼 것입니다. 디자인 패턴을 공부하셨던 분이라면 아주 친숙한 디자인 패턴 중에 하나인데요. 흔히 "싱글톤 패턴이 뭐에요?" 라고 물으면 대게는 "1개의 인스턴스를 사용하는 디자인패턴이요." 라고 답합니다. 맞는 말이긴 하지만 뭔가 아쉬운 답변이죠? 이 부분에 대해 조금 자세히 알아봅시다. 보통 프로그램을 실행하게 되면 많은 인스턴스가 생성되는데요. Java로 예를 들어 문자열을 표시하는 java.lang.String 클래스의 인스턴스는 생성된 1개의 문자열 당 1개의 인스턴스가 생성되게 됩니다. 예를 들어 1000개의 문자열이 생성된다 했을 때 10000개의 인스턴스가 만들어지게 돼요. 그런데 클래스의 인스턴스가 딱 하나만 필요한 경우가 있어요. 보통 시스템 안..

    [바미] Factory Method에 대해 알아봅시다.

    이번에는 Factory Method에 대해 알아보려 합니다. Factory Method의 Factory는 공장이라는 의미인데요. 이 공장은 인스턴스를 생성하는 곳이라 생각하면 됩니다. 이 공장은 전에 배웠던 Template Method패턴으로 구성되어 있습니다. 이 패턴에서는 인스턴스를 만드는 방법을 상위 클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지 않습니다. 구체적인 내용은 모두 하위 클래스 측에서 수행하죠. 그래서 인스턴스 생성을 위한 Framework와 실제의 인스턴스 생성의 클래스를 분리해서 생각 할 수 있게 됩니다. 이제 예제 프로그램을 만들어봅시다! 이번에는 사원증을 만드는 프로그램을 만들어 볼 것인데요. 사원증을 만들기 위해 필요한 공장을 만들어 봅시다. 클래스 다이어그램은 ..