아카이브 93

[리뷰] 리팩터링 2판

컴퓨터 과학 분야 명저 중에 하나로 오랫동안 많은 사람들에게 큰 가르침을 주었던, 이 책의 2판이 출간 되었다는 것은 큰 축복이며 행운이라고 생각합니다. 단순히 일부 내용의 추가/수정이 아니라 거의 모든 내용이 새로 쓰여졌다는 점은 망설임 없이 이 책을 구매해야 할 이유 중 하나이기도 합니다. 리팩토링은 일부 언어나 시스템에 종속되지 않기에, 자바스크립트의 기본 문법만을 사용하여 많은 프로그래머들이 쉽게 볼 수 있도록 변경된 점이 좋았습니다. 1장에서 리팩토링을 해야 하는 이유를 충분히 공감 가도록 설명하고, 예제를 통해 리팩토링 하는 과정을 차근 차근 보여주면서 독자들이 이 후 내용도 흥미롭게 읽을 수 있도록 한 구성도 훌륭하다고 생각했습니다. 사람이 읽기 좋은 코드, 수정이 용이한 코드를 만들기 위한..

[리뷰] 고객이 보이는 구글 애널리틱스

구글 애널리틱스를 시작하기에 정말 좋은 책입니다. 구글 애널리틱스는 단순 웹사이트 통계(사용자수, 페이지수, 체류시간등...)부터 사용자 방문 흐름, 동질 집단 분석 등 다양한 분석을 제공합니다. 운영자에게 도움이 되는 많은 분석들을 제공하지만, 이 것이 오히려 구글 애널리틱스를 시작하기 어렵게 만드는 부분이기도 합니다. 사용되는 단어들도 많은 의미를 내포하고 있어 더 어렵게 느껴지기도 합니다. 이 책은 이러한 어려운 부분들을 자세하고 상세히 설명하고 있어 구글 애널리틱스를 쉽게 시작할 수 있도록 도와줍니다. 지표들에 대해 쉽고 자세하게 설명하고 여러 분석 도구들을 어떻게 사용해야 하는지도 잘 알려주고 있습니다. 그리고 분석 결과를 해석하는 부분이 있어서 좋았습니다. 지표를 해석하는 것은 주관적인 부분이..

동작 파라미터화 (behavior parameterization)

동작 파라미터화 (behavior parameterization)란? 동적 파라미터화는 아직 어떻게 실행할지 정해지지 않은 코드 블록을 의미한다. 이를 이용하여 변경되는 요구사항에 효과적으로 대응할 수 있다. 동작 파라미터화를 이용해 변하는 요구사항에 대응할 수 있는 코드를 만드는 예제 첫 번째 시도: 녹색 사과 필터링 아래는 녹색 사과를 필터링하는 코드이다. 만약 빨간 사과도 필터링하고 싶을 때에는 filterGreenApples 메서드를 복사해 filterRedApples 메서드를 만들고 if 문의 조건을 빨간 사과로 변경해야 한다. 이런 식으로 요구 사항마다 비슷한 반복된 코드가 추가되게 된다. 코드를 추상화해 반복을 없앤다. enum Color { RED, GREEN } public static ..

아카이브/Java 2019.10.22

[Linked List] 1102 : 스택 (stack)

※ 해당 문제는 C언어 표준 라이브러리만 사용하여 작성한 코드와 풀이 방법입니다. Stack은 "더미"란 뜻을 가진다. 책 더미, 신문 더미 등에 사용하는 단어이다. 책 더미를 예로 들어 보자. 책 더미를 쌓았다고 했을 때, 이 책 더미에서 책을 가져오는 가장 정상적인 방법은 제일 위에 있는 책을 가져오는 방식이다. 다시 말하면 가장 먼저 들어간 책은 가장 나중에 꺼낼 수 있을 것이다. 이런 식으로 자료가 가장 밑에 쌓이고(입력). 자료를 가져올 때(출력)는 가장 위(최근)의 자료를 가져오는 자료구조를 Stack 하고 한다. 이러한 Stack의 특징 때문에 흔히 "FILO(First-In-Last-Out : 선입 후출)" 혹은 "LIFO(Last-In-First-Out : 후입 선출)"라고 한다. 그림과..

[Memory] RAM과 ROM

[Memory] RAM과 ROM 이 글은 Embedded SW 개발자로 공부하면서 가장 기본이 되는 내용인Memory의 종류에 대해서 설명한 글입니다. Memory는 간단하게 말하자면, 데이터를 기록하거나 읽기 위한 위한 저장공간 입니다. 가장 크게 메모리를 나누어 본다면, 메모리는 RAM 과 ROM으로 나뉘게 됩니다. RAM (Random Access Memory) RAM은 전원이 끊어지면 RAM의 Data는 날라가게 됩니다. 이러한 특징으로 휘발성 메모리(Volatile Memory)라 표현합니다. RAM의 종류에는 여러 가지 메모리가 존재한다. 이 글에서는 DRAM과 SRAM에 대해서 간략하게 설명하도록 하겠습니다. DRAM (Dynamic RAM) 동적 램이라 표현하며, DRAM의 경우 Memor..

[HADOOP] 하둡 (Hadoop 1.2.1) CentOS 6에 설치하기

[HADOOP] 하둡 (Hadoop 1.2.1) CentOS 6에 설치하기 이 글은 하둡 1.2.1 버전을 CentOS 6에 설치하고 실행하는 방법을 적은 글입니다. 하둡은 완전 분산 모드(Fully distributed)로 설치합니다. 완전 분산 모드는 여러대의 서버로 하둡 클러스터를 구성하는 방식입니다. 하나의 서버에 하둡을 설치하는 독립 실행 모드나 가상 분산 모드와는 달리 실제 서비스에서 사용하는 방식입니다. 설치 환경아래 사양의 서버 4대에 하둡을 설치해 보겠습니다. 네임노드(HDFS의 Master 역할을 한다. 메타데이터 정보를 가지고 있으며 데이터노드에 I/O 작업을 지시한다.), 보조네임노드(네임노드의 이미지 복제본을 유지한다.), 데이터노드(블록단위로 나뉜 데이터가 저장되는 노드이다. 블..

아카이브/Hadoop 2017.04.18

[HTTP] 쿠키와 세션

[HTTP] 쿠키와 세션 쿠키와 세션이 필요한 이유 쿠키와 세션을 이해하기 위해서는 HTTP 프로토콜에 대한 이해가 필요하다. HTTP 프로토콜은 Connectionless 하고 Stateless 한 프로토콜이다. - Connectionless : 클라이언트가 서버에 요청을 하고 서버가 클라이언트에게 응답을 보내면 접속을 끊는다. - Stateless : 통신이 끝나면 상태 정보를 유지하지 않는다. Connectionless 하고 Stateless 한 HTTP 프로토콜을 사용하면서 Server가 Client를 식별할 수 있는 방법이 필요했고 쿠키와 세션을 사용하게 되었다. HTTP는 Stateless하기 때문에 로그인 상태 정보를 유지하지 않아서 쿠키와 세션을 사용하지 않으면 게시판이나 메일을 확인할 때..

[Spark 설치] Ubuntu 14.04 Spark 설치 방법

[Spark 설치] Ubuntu 14.04 Spark 설치 방법 Java 설치 $ sudo apt-add-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-java7-installer$ java -version Scala 설치 $ cd /usr/local/src/$ sudo wget http://www.scala-lang.org/files/archive/scala-2.11.8.tgz$ sudo mkdir /usr/local/src/scala$ sudo tar xvf scala-2.11.8.tgz -C /usr/local/src/scala/ # 자신의 사용하는 shell의 설정 파일을 수정할 것. (ex. zs..

아카이브/Spark 2016.05.12

[Visual Studio] 개발자를 위한 글꼴, 줄 번호 설정법

[Visual Studio] 개발자를 위한 글꼴, 줄 번호 설정법 개발자를 위한 글꼴 Consolas Visual Studio 한국어 버전의 기본 글꼴은 돋움체이지만, 돋움체보다 마이크로소프트에서 개발자 전용으로 만든 Consolas를 사용하는 것이 좋다. 아래의 표를 보면 차이를 확실하게 느낄 수 있다. 돋움체 맑은 고딕 Consolas 숫자 1, 대문자 I, 소문자 l과 대문자 O, 숫자 0이 잘 구분되지 않는 다른 글꼴에 비해 Consolas는 한 눈에 차이를 알 수 있다. 이는 오타에 의한 실수를 줄이는데 크게 도움이 된다. Consolas 글꼴 설정Visual Studio 메뉴에서 [도구]->[옵션]을 선택하고 [환경]->[글꼴 및 색]에서 글꼴을 Consolas로 선택한다. 줄 번호 설정컴파일..

[통계학] 변수와 줄기잎그림, Variable and StemPlot (R, C++)

[통계학] 변수와 줄기잎그림, Variable and StemPlot 변수 (Variable) 조사 대상의 관심이 되는 특성 혹은 결과 요소의 개별 값. 키, 몸무게, 매출액 등은 모두 변수이다. 변수는 질적 변수(qualitative variable)와 양적 변수(quantitative variable)로 분류된다. 양적 변수(quantitative variable)는 결과가 숫자로 표현되는 값이다. 몸무게, 키, 전기 요금 등이 있다. 양적 변수는 연속 변수(continuous variable)와 이산 변수(discrete variable)로 나뉘는데, 연속 변수는 무게, 높이, 시간 등 변수가 취할 수 있는 값이 셀 수 없이 많다. 반면 이산 변수는 인원 수, 월급 등 변수가 취할 수 있는 값을 셀..