본문 바로가기

전체 글

(214)
마켓 5.0 (필립 코틀러) - Part 1. 우리가 처음 마주한 세계 Chapter 1. 마켓 5.0 시대의 시작 : 휴머니티를 향한 기술 우리는 2009년에 마케팅 연재작 중 첫 번째인 '마켓 3.0'을 집필했다. 우리는 마켓 3.0을 전통적인 마케팅의 최종적 단계로 간주해왔다. 고객을 지적으로(마켓 1.0, 제품 중심의 4P전략), 정서적으로(마켓 2.0, 소비자 중심의 STP전략), 정신적으로(마켓 3.0, 인간 중심의 가치와 스토리 전략) 만족시키는 데 필요한 모든 구성 요건을 갖추고 있기 때문이다. 마켓 3.0 시대에 고객은 기능적이고 감성적인 만족뿐만 아니라 선택한 브랜드로부터 정신적인 만족을 추구한다. 이에 기업은 자신만의 가치를 내세우며 차별화를 이뤄낸다. 기업의 제품과 경영방식은 이윤 창출뿐만 아니라 세계에서 가장 까다로운 사회와 환경 문제에 대한 해결책을..
최신 브라우저의 내부 살펴보기3 - 렌더러 프로세스의 내부 동작 원문 작성일: 2019.04.22 원문: https://d2.naver.com/helloworld/5237120 이 글에서는 렌더러 프로세스가 HTML 문서를 받았을 때 어떤 절차를 거쳐 화면을 구성하는지 설명합니다. 이 과정을 효율적으로 처리하기 위해 렌더러 프로세스가 어떤 아키텍처를 가지고 있는지 살펴보고, 웹 개발자가 고려하면 좋을 내용을 소개합니다. 렌더러 프로세스는 웹 콘텐츠를 처리한다 렌더러 프로세스는 탭 내부에서 발생하는 모든 작업을 담당한다. 렌더러 프로세스의 메인 스레드가 브라우저로 전송된 대부분의 코드를 처리한다. 간혹 웹 워커나 서비스 워커를 사용하는 경우에는 워커 스레드가 JavaScript 코드의 일부를 처리한다. 웹 페이지를 효율적이고 부드럽게 렌더링하기 위해 별도의 컴포지터 스..
최신 브라우저의 내부 살펴보기2 - 내비게이션 과정에서 일어나는 일 원문 작성일: 2019.03.26 원문: https://d2.naver.com/helloworld/9274593 내비게이션 과정에서 일어나는 일 이 글에서는 웹 사이트를 표시하기 위해 각 프로세스와 스레드가 어떻게 통신하는지 좀 더 깊게 알아본다. 브라우저의 주소 표시줄에 URL을 입력하면 브라우저가 인터넷에서 데이터를 가져와서 페이지를 표시한다. 간단한 이 동작에서 사용자가 사이트를 요청하고 브라우저가 페이지 렌더링을 준비하는 과정(이 글에서는 이 과정을 '내비게이션'이라고 하겠다)에 초점을 맞춰 살펴보겠다. (역주: '내비게이션'을 (사이트 간의)이동'이라 생각하면 이 글을 이해하기 좀 더 쉬울 것이다) 브라우저 프로세스에서 시작한다 브라우저 프로세스에는 UI 스레드와 네트워크 스레드, 스토리지 스레..
최신 브라우저의 내부 살펴보기1 - CPU, GPU, 메모리 그리고 다중 프로세스 아키텍처 원문 작성일: 2019.03.26 원문: https://d2.naver.com/helloworld/2922312 브라우저 아키텍처 브라우저는 스레드를 많이 사용하는 프로세스 하나만 사용할 수도 있고, 스레드를 조금만 사용하는 프로세스를 여러 개 만들어 IPC(Inter Process Communication, 프로세스 간 통신)로 통신할 수도 있다. 여기에서 주목해야 할 중요한 점은 이러한 서로 다른 아키텍처가 구현 세부 사항이라는 점이다. 브라우저를 만드는 방법에 대한 표준은 없다. 브라우저마다 접근 방식이 완전히 다를 수 있다. 이 시리즈에서는 다음 그림에 표현된 Chrome의 최근 아키텍처를 살펴본다. 제일 위에 있는 브라우저 프로세스는 애플리케이션의 각 부분을 맡고 있는 다른 프로세스를 조정한다...
Spring-Test-MVC 프로젝트 소개 원문 작성일: 2011.12.22 원문 : https://d2.naver.com/helloworld/1341 이 글에서는 Builder 패턴을 사용해서 스프링 MVC 테스트 코드를 작성하는 방법을 알아본다. Spring-Test-MVC 프로젝트는 무엇일까 Spring-Test-MVC 프로젝트의 목표는 Servlet 컨테이너를 사용하지 않아도 MockHttpServletRequest와 MockHttpServletResponse를 사용해서 Spring Controller를 쉽고 편하게 테스트하는 방법을 제공하는 것이다. 하지만 안타깝게도 이 프로젝트의 홈페이지에서 살펴본 테스트 코드를 실무에 그대로 적용할 수는 없다. 분명히 NullPointerException이 발생할 것이기 때문이다. Controller..
자바 애플리케이션 성능 튜닝의 도(道) 원문 작성일: 2012.10.25 원문: https://d2.naver.com/helloworld/184615 이 글에서는 성능 튜닝 작업의 상세한 내용보다는, 튜닝에 필요한 배경 지식 튜닝 순서 JVM의 각종 옵션 튜닝 접근 방법 등에 대한 간략한 소개를 통해 튜닝의 전반적인 흐름과 방법론에 대해 살펴본다. 어느 튜닝 방법을 선택하든 우선 자바 애플리케이션 수행 과정을 모니터링해야 한다. 그래서 이 글에서는 다음을 중심으로 살펴본다. 어떻게 모니터링을 하는가 어떻게 JVM 옵션을 주어야 하는가 코드 수정 필요 판단은 어떻게 하는가 자바 애플리케이션 성능 튜닝에 필요한 지식 1. JVM 동작 과정에 대한 이해가 필요하다. (크게 Garbage Collection(이하 GC)에 대한 것과 HotSpot에 ..
Java Garbage Collection 원문 작성일: 2011.12.22 원문: https://d2.naver.com/helloworld/1329 가비지 컬렉션 과정 - Generational Garbage Collection stop-the-world : GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것. sotp-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춤. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작. 어떤 GC 알고리즘을 사용하더라도 stop-the-world는 발생. 대개의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것. Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해제하지 않는다. 해당 객체를 null로 지정하거나 System...
Java HashMap은 어떻게 동작하는가? 원문 작성일: 2014.07.04 원문: https://d2.naver.com/helloworld/831311 Java HashMap ? HashMap은 Java Collections Framework에 속한 구현체 클래스다. Java Collections Framework는 1998년 12월에 발표한 Java2에서 정식으로 선보였다. Map 인터페이스 자체는 Java5에서 Generic이 적용된 것 외에 처음 선보인 이후 변화가 없다. 하지만, HashMap 구현체는 성능을 향상시키기 위해 지속적으로 변화해왔다. 이 글의 내용은, 어떤 방식으로 HashMap 구현체의 성능을 향상시켰는가. Amortized Constant Time을 위하여 어떻게 해시 충돌(hash collision) 가능성을 줄이고 ..