본문 바로가기

Happyer16

(314)
#5. 서비스 추상화 요약 비즈니르 로직을 담은 UserService 클래스를 만들고, 트랜잭션을 적용하면서 스프링의 서비스 추상화에 대해 알아보았다. 비즈니스 로직을 담은 코드는 데이터 엑세스 코드와 깔끔하게 분리되는 것이 좋다. DAO 기술 변화에 서비스 코드가 영향을 받지 않도록 인터페이스와 DI를 잘 활용해서 결합도를 낮춰야 한다.먼저 프레임워크에 대해 생각해보면, MVC나 DB 등 특정 기술을 도와주는 역할로 알고 있다. 하지만 스프링은 JavaEE 전반을 도와주는 것이기 때문에 에플리케이션 프레임워크라고 불린다. 1. 비즈니로직과 데이터 엑세스 코드의 분리 비즈니르 로직을 담은 UserService 클래스를 만들고, 트랜잭션을 적용하면서 스프링의 서비스 추상화에 대해 알아보았다. 5.1.2 까지 작업을 통해 Use..
1.ㄴㄴㄴㄴ 지인의 추천과 막연하게 블록체인의 가능성을 보고 이더리움 투자를 시작했었다. 나에게 어떤 가능성을 보고 투자를 했냐는 질문에는 구체적으로 답할 수가 없었다. 단지 EEA(이더리움 연합)의 소식을 기사로 접한 후 투자하는 정도 였다. 그래서 나는 이 책을 구입하게 되었고, 블록체인의 본질과 제 4차 산업혁명의 근간이라 불리는 이유에 대해 공부해보려 한다. 코인원 대표(차명훈)가 말하는 가상화폐의 전망 2013년 일본 대
#8. 스프링이란 무엇인가? 스프링의 정의 자바 엔터프라이즈 개발을 도와주는 오픈소스 경량급 애플리케이션 프레임워크 ( 1 ) 애플리케이션 프래임워크먼저 프레임워크에 대해 생각해보면, MVC나 DB 등 특정 기술을 도와주는 역할로 알고 있다. 하지만 스프링은 JavaEE 전반을 도와주는 것이기 때문에 에플리케이션 프레임워크라고 불린다. Spring의 개발 배경을 살펴보면, JavaEE 개발을 하던 로드 존슨이 불편함을 느끼고 스스로 개선방법을 고안하다 나온 것이다. 로드 존슨은 항상 "프레임워크 기반으로 접근하라"의 전략을 가지고 코딩을 하였다 한다. ( 2 ) 경량급라이브러리처럼 특정 기술만 포함하고 있어 무게가 가볍다는 뜻이 아니다. Spring 전 EJB에서 개발환경을 구성하려면 EJB 컨테이너를 가진 WAS를 준비해야 했다...
Closure 12345678910111213function makeAdders(n) { var adders = []; for (var i = 0; i < n; i++) { adders.push(function (x) { return i + x; }); } return adders;} var adders = makeAdders(10);var add5 = adders[5];var r = add5(2);console.log(r);// We expect 7, but 12 is printed. 익명함수 ( i+x )를 만들 때 var i의 주인은 function makeAdders 이다. Javascript에서는 이 변수를 넘길 때 Closure라는 scope를 가지고 넘긴다. 외부함수 makeAdders의 변수 i에 접근할..
#4. React 성능과 렌더링 Avoid Reconciliation 앞서 설명한 대로 React는 Reconciliation에서 O(n)의 시간복잡도를 가지고 있으며, 필요 이상의 DOM 접근이나 업데이트를 피하기 때문에 성능에 대한 고민을 할 필요가 없다. 하지만 컴포넌트가 렌디링하는 엘리먼트가 수천 수만개라면? O(n)도 느리다. 개발자는 일부 경우에 실제 렌더링이 필요 없는 상황을 알고 있다. 그래서 컴포넌트가 렌더링 전에 호출하는 라이플사이클 메서드 shouldComponentUpdate() 를 오버라이드하여 성능을 향상시킬 수 있다. 기본 구현을 return true이기 때문에, 항상 Reconciliation을 포함한 렌더링 작업을 수행한다. 개발자는 컴포넌트 렌더링이 필요 없는 때에만 return false를 통해 Rea..
RESTful 웹서비스 만들기 # 시작하기 전에 REST라 하면 서버-클라이언트 통신 방식정도로만 이해하고, RESTful한 웹 API라고 하면 정확히 이해할 수가 없었다. 웹 2.0으로 들어오면서 REST의 역할과 RESTful한 웹 API가 무엇인지 Spring을 통해 알아보았다. # 만들어 볼 예제 HTTP GET request를 받아 JSON으로 response하는 서비스를 만들 것이다. http://localhost:8080/greeting {"id":1,"content":"Hello, World!"} 1) POJO 생성 2) Resource Controller 생성 Spring의 RESTful 웹서비스에서는, 컨트롤러가 HTTP 요청을 처리한다. 이 컴포넌트들은 @RestController annotation에 의해 쉽게 ..
Client-Server 웹 개발 기술의 역사 1. 초기 웹 페이지는 웹서버가 간단하고 서버가 정적인 페이지를 보내주면 브라우저가 정적인 페이지를 랜더링만 하였다. 2. 1990년 중반에 동적 콘텐츠가 등장했다. 하지만 이 당시 클라이언트 측 컴퓨터가 좋지 못했고 javascript는 느렸기 때문에 서버측 프로세싱을 활용하는데 집중했다. 이렇다 보니 서버측에 MVC 패턴이 적용되기 시작했다. 3. 클라이언트-서버 방식 개발이란? 화면에는 데이터만 전달하고, 서버에서는 화면을 생성하지 않는 디자인을 말한다.
#3. Reducer React-Router란? mapStateToProps : 컴포넌트의 props에 매핑시켜준다. ( isLoggedIn에 값을 넣어 줌 )Apache와 같은 웹서버에서는 url에 맞는 파일을 제공하여 여러 페이지를 구현하는 것과 달리, 어떤 경로로 들어오든 간에 똑같은 html파일과 자바스크립트 파일을 제공한다. 여기서 제공되는 js파일 안에는 모든 컴포넌트들이 담겨있고 url에 따라 지정된 컴포넌트들을 랜더링 해준다. 즉, 페이지를 한번 로드한 Smart Component(똑똑한)와 Dumb Component(멍청한) Smart Component Dumb Component 위치 최상위, 라우트 핸들러 중간과 말단 컴포넌트 Redux와 연관됨 Yes No 데이터를 읽기 위해 Redux 상태를 구독(?) ..
#2. React-Router React-Router란? Apache와 같은 웹서버에서는 url에 맞는 파일을 제공하여 여러 페이지를 구현하는 것과 달리, 어떤 경로로 들어오든 간에 똑같은 html파일과 자바스크립트 파일을 제공한다. 여기서 제공되는 js파일 안에는 모든 컴포넌트들이 담겨있고 url에 따라 지정된 컴포넌트들을 랜더링 해준다. 즉, 페이지를 한번 로드한 이후 다른 페이지로 이동 시, 페이지를 처음부터 로딩하지 않고 js 파일을 이용하여 기존 컴파운드를 언마운트시키고 다른 컴포넌트를 마운트한다. 예를 들어 웹의 헤더 컴포넌트와 같은 것을 처음부터 렌더링하지 않고 그대로 유지할 수 있다는 소리. React-Router v3 vs v4? 예제 프로젝트는 v3이여서 구현할 때 v4로 바꿔줘야 했다. IndexRoute : Ro..
#1. 서버 구성 - 라우팅 프로젝트 구조 server측 코드가 있는 폴더 ( /server )가 있다. 해당 프로젝트를 만들 때 React 공부가 목적이였기 때문에 javascript를 같이 사용할 수 있는 node.js를 이용하였다. server측 언어는 php, ruby, python, node.js 등 다양한 종류가 있지만 각자 편한 걸 고른다고 하면 된다. node.js는 브라우저 밖에서도 javascript를 실행 시켜주는 runtime일 뿐이다. ( atom이 node.js로 만들어졌다네.... ) Express Web framework일 뿐이다. 웹서버 구축할 때 필요한 것들을 도와주는 역할이다. 라우팅 [ server/main.js - 라우팅 설정하는 부분 ] [ src/actions/authentication.js..