전체 글 1332

Ruby 개발환경 설정하기 (윈도우7에서)

Windows 7에서 Ruby 개발환경 설정하기 MongoDB in Action 몽고디비 인 액션저자카일 뱅커 지음출판사제이펍 | 2012-04-20 출간카테고리컴퓨터/IT책소개MongoDB나 NoSQL에 경험 없는 개발자를 위한 쉽고 실전... 이책을 공부하다보니, 예제가 ruby라서, 예상치 않게 Ruby를 살펴보고 있는데, 윈도우즈7에서 Ruby 개발 환경 설정하는 것이 쉽지 않아서 설정 방법을 요약하고자한다. 1. Ruby Install 하기http://rubyinstaller.org/downloads/ 에서 Ruby Install 바이너리를 받아서 설치한다. 2.2.0-p481(x64)여기까지는 보통 문제 없이 잘된다. 향후에 모듈을 설치하려면 보통 컴파일 에러가 나오면서 잘 안되는 경우가 많다..

루비 기본 문법 정리

Ruby 언어 기본 문법 루비언어의 특성을 자바나 다른 언어에 비해서 다른 부분만 요약 정리 Class,Object - 클래스 변수는 @@를 사용해서 정의 @@name = 'hello'클래스 메서드는 클래스로만 호출 가능. object에서는 호출 불가클래스 변수나 메서드에 대해서는 http://dimdim.tistory.com/entry/Ruby-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EB%B3%80%EC%88%98 보고 다시 정리 필요 Object- 생성 : New를 이용해서 class로 부터 생성 Class명.new 로 생성. 예 object=MyClass.new - 객체 변수는 @를 사용해서 정의 예 @hello = hello- Putter와 Sette..

프로젝트 인셉션에 대해서

프로젝트 인셉션에 대해서 원글 : http://www.infoq.com/articles/project-inception-meeting 프로젝트 시작전에, 프로젝트 팀에 대한 alignment를 하기가 어렵다.alignment란 팀이 같은 프로젝트에 대한 배경과 목표를 이해하고, 주요 기능과 일정, 그리고 인원별 역할등 전체적인 프로젝트의 컨텍스를 이해하는 것인데,일반 개발자들은 비지니스쪽 인원을 만나기 힘들 뿐만아니라, 상위 임원들의 방향과 생각을 중간 메니져를 통해서 듣기 때문에, 내용 전달이 부족하거나 오역 되었을때, 팀의 alignment가 제대로 되지 않는 경우가 많다.이런 문제를 해결하기 위해서, 하루 full day로 프로젝트 시작하기 전에 공유하는 회의를 갖는데 이를 프로젝트 inceptio..

ALM/애자일 2014.08.13

OAuth 2.0 노트

OAuth 용어 정리 Resource Owner (사용자) Authorization Server (인증서버 Resource Server (REST API) OAuth 2.0 grant flow Authorization code grant flow 가장 많이 권장되고, 사용자와 앱을 둘다 인증함. 앱 인증을 위해서 call back URL(앱의)를 등록해서 call back을 통해서 앱을 인증함 Implicit grant flow 자바스크립트 애플리케이션에서 많이 사용됨. 스크립트 단에서는 credential 등이 노출 될 수 있으니, 주로 Read only 용도로 많이 사용함. accessToken이 노출될것을 전제로 함. 모바일 애플리케이션도 많이 사용하는걸로 나오네?? Ÿ Used in public ..

IBM Bluemix #1 - 첫번째 node.js 애플리케이션

IBM Blumix #1-첫번째 node.js 애플리케이션 개발bcho.tistory.com조대협 지난번에 bluemix에 대한 간략한 소개를 (http://bcho.tistory.com/940) 하였다. 오늘은 첫번째 node.js 애플리케이션을 만들어보도록 하자먼저 bluemix에 가입을 한후에, 대쉬보드에 들어가서 "Create App" 을 선택한후에, "SDK for Node.js"를 선택한다. 여기에, 애플레케이션 이름을 넣는다. 애플리케이션 이름을 넣으면, node.js 애플케이션의 디폴트 웹 URL명도 똑 같이 애플리케이션명.mybluemix.net으로 지정된다. 위의 그림과 같이 node.js 애플리케이션이 생성된 것을 볼 수 있다. 소스코드를 수정하기 위해서, 코드를 git reposit..

IBM 클라우드 bluemix(블루믹스) 소개

IBM 블루믹스 소개 PaaSIBM 블루믹스는 IBM에서 제공하는 PaaS(Platform As A Service) 클라우드 서비스이다. 아마존과 같은 서비스가 VM을 제공하는 IaaS(Infra as a service)라면, 블루믹스는 node.js, Java와 같은 런타임을 미리 깔아놓고, 거기에 소스코드를 넣어서 돌리는 구조이다. IaaS의 경우 Linux나 Windows Server와 같은 OS를 VM 기반으로 제공하기 때문에 직접 미들웨어를 설치해서 사용해야 하지만, PaaS의 경우 이미 설치된 미들웨어 위에 코드만 돌리면되기 때문에, 아무래도 관리가 편리하다. 그러면 왜 PaaS인가?얼마전까지만 해도, 개발 트렌드의 중심은 기업체에서 개발하는 B2C서비스였다. 페이스북이나 네이버와 같은 서비스..

소프트웨어를 잘하고 싶으시면 개발자를 그만 뽑으세요.

소프트웨어를 잘하고 싶으시면 개발자를 그만 뽑으세요. 간만의 포스팅입니다. 요즘 일도 너무 바쁘고 여유가 안생겨서, 그동안 포스팅을 거의 못했네요. 평소에 생각하던 내용인데, 요즘 들어 소프트웨어니, 서비스니 하면서 여기저기서 사람 뽑는 글들이 많아서 올려봅니다. "소프트웨어를 잘하고 싶은데, 개발자를 뽑지 말라니??" 의아하게 생각하실지도 모르지만, 낚시 타이틀이 아니라 진정으로 드리고 싶은 이야기 입니다.제가 해외 개발자들이나 엔지니어들과 일해봤을때, 한국 개발자가 실력적으로 그렇게 밀린다고 생각하지는 않습니다. 문제는 관리입니다.!!아무리 똑똑한 개발자를 뽑아 놓는다 하더라도, 개발자들이 만들어야 할 소프트웨어의 구조를 잡을 아키텍트가 없고, 프로젝트를 위한 계획과 엔지니어에 대한 배치를 제대로 하..

빠르게 훝어 보는 node.js - #16 - Passport를 이용한 OAuth 2.0 API 인증 (Facebook 2/2)

빠르게 훝어보는 node.js#16 - Passport를 이용한 OAuth 2.0 API 인증 (Facebook 2/2)조대협 (http://bcho.tistory.com) node.js에서 페이스북 로그인하기앞에서(http://bcho.tistory.com/913) 설명한 Facebook 로그인 시나리오를 기반으로 하여 node.js와 passport-facebook 모듈을 이용해서, 간단한 로그인 서비스를 만들어보자.시나리오만들고자 하는 시나리오는 다음과 같다. /login 페이지에서 페이스북 로그인 버튼이 출력된다. 페이스북 로그인 버튼을 누르면 /auth/facebook 페이지로 이동한다./auth/facebook 페이지에서는 페이스북에 로그인을 하기 위한 OAuth 요청을 passport-fac..

카우치베이스(Couchbase) 서버-#6 아키텍쳐 구조 살펴보기

Couchbase Server#6. Couchbase server 구조 조대협 http://bcho.tistory.com 이번에는 마지막으로 카우치베이스의 아키텍쳐에 대해서 알아보도록 하자노드와 클러스터 (Node & Cluster)노드는 물리적인 서버에서 기동하는 하나의 카우치베이스 인스턴스로, 카우치 베이스는 여러 개의 노드로 이루어진 클러스터로 구성된다 클라이언트 SDK (Client SDK)프로그래밍 언어별로 카우치베이스에 접근하기 위한 API(SDK)를 제공한다. vBucket 개념카우치베이스는 실제데이타와 물리서버간의 맵핑을 vBucket이라는 것을 이용해서 관리한다. 카우치베이스는 키-밸류 스토어이다. 그래서, 각 키가 어디에 저장되어 있는지를 vBucket이라는 단위로 관리 하는데. 키에 ..

카우치베이스(Couchbase) 서버-#5 node.js를 이용하여 뷰를 호출하기

Couchbase Server#5. node.js를 이용하여 뷰를 호출하기 조대협 http://bcho.tistory.com 앞서 설명한 뷰를 node.js 카우치베이스 SDK를 이용해서 호출해보자, 카우치베이스는 node.js와 몽고DB만큼이나 궁합이 잘 맞는 것 같다. 매우쉽게 뷰를 호출할 수 있다. 뷰 호출 메서드는var viewQuery = bucket.view(“디자인도규먼트 이름”,”뷰 이름”,{옵션1:값,옵션2:값,…})로 뷰쿼리를 생성한 후에, viewQuery.query(function(err,results){…} );로 호출하면, 호출 성공시, 결과가 result 변수로 리턴된다.그러면 간단한 예제를 보자. “mybucket”이라는 버킷이 있고, 안에 다음과 같은 데이타가 있다.[ { ..

카우치베이스(Couchbase) 서버-#4 뷰(View) 이해하기

Couchbase Server#4. 뷰(View) 이해하기 조대협 http://bcho.tistory.com 뷰는 카우치베이스의 아주 강력한 기능중의 하나이다. RDBMS의 뷰의 개념과 유사한 개념으로, 원본 데이터로부터, 필터링을 통하여 원하는 형태의 데이터로 변환하여 보여주는 일종의 읽기 전용 테이블과 유사한 개념으로 보면 된다. 이를 통해서 키-밸류 스토어 기능만 제공하는 일반 NoSQL에 비해서 filtering 뿐만 아니라, Indexing,grouping,ordering과 같은 다양한 기능을 이 뷰를 이용하여 사용할 수 있다.카우치베이스의 뷰는 원본 데이터에서 자바스크립트로된 맵&리듀스(Map&Reduce) 함수를 통해서 데이터를 정재한 후에, 뷰로 만들어낸다. 간단하게 개념을 잡아보면 다음과..

카우치베이스(Couchbase) 서버-#3 node.js를 이용한 카우치베이스 서버 CRUD 구현하기

Couchbase Server#3. node.js를 이용하여 카우치베이스에 CRUD 구현하기 조대협 http://bcho.tistory.com SDK를 이용한 프로그래밍 이제, 프로그래밍 언어를 이용해서 실제로 카우치베이스에 데이타를 저장해보자. 카우치베이스에서 지원하는 데이터 타입 앞서 예제에서 카우치베이스 웹콘솔을 통해서 JSON 도큐먼트를 저장해봤다. 카우치베이스는 JSON 도큐먼트뿐만 아니라, 키-밸류 스토어 형식으로 일반 string(문자열), integer(숫자)도 저장할 수 있다. JSON 도큐먼트 이외의 데이터 형은, 콘솔에서는 테스트가 불가능하고, SDK를 이용해서 프로그램을 작성해서 테스트를 해야 한다. SDK를 이용한 데이터 접근 카우치베이스의 데이타를 접근하기 위한 메서드들은 다음과..

카우치베이스(Couchbase) 서버-#2 기본 개념 잡기

Couchbase Server#2 기본 개념 잡기 조대협 http://bcho.tistory.com개념 잡기 카우치베이스 서버 설치가 끝났으면 기본적인 개념을 잡아보도록 하자. Document 기반의 Key-Value 스토어 카우치 베이스느 키, 밸류 스토어이다 하나의 유니크(Unique)한 키에, 값을 저장하는 방식이다. 저장 되는 값은 JSON 도큐먼트가 저장된다. 키는 최대 250 바이트, 값(밸류)의 경우에는 카우치베이스 버킷의 경우 20MB, Memcached 방식의 버킷의 경우 1MB 까지 저장이 가능하다. 저장할때, 키와 값뿐만 아니라 메타데이타가 같이 저장되는데, 메타 데이타에는 CAS,TTL,Flag 값 3가지가 저장된다.저장할때, 키와 값뿐만 아니라 메타데이타가 같이 저장되는데, 메타 ..

카우치베이스(Couchbase) 서버-#1 소개 및 설치하기

Couchbase Server#1 소개 및 설치 조대협 http://bcho.tistory.com 근래에 여러 NoSQL이 소개되었지만 그중에서 좋은 솔루션인데도 불구하고 그다지 국내에서는 널리 알려지지 않은 카우치베이스에 대해서 소개하고자한다. 모바일 게임중에 유명한 쿠키런의 경우 카우치베이스를 백엔드로 사용하고 있는데, 안정성이나 성능등이 매우 뛰어나고, 사용하기 또한 매우 쉽다. 오늘은 고성능 NoSQL 서버인 카우치베이스(CouchBase) 에 대해서 소개하고자 한다. 소개 예전에 메모리 캐쉬 솔루션인 memcached에 디스크 persistence 기능을 추가하여 membase라는 솔루션이 있었는데, 이 제품에 Apache의 카우치디비(CouchDB)를 기반으로 새롭게 만든 솔루션이 카우치베이스..

빠르게 훝어 보는 node.js - #15 - Passport를 이용한 OAuth 2.0 API 인증 (Facebook 1/2)

빠르게 훝어보는 node.js#15 - Passport를 이용한 OAuth 2.0 API 인증 (Facebook 1/2)조대협 (http://bcho.tistory.com) REST 기반의 OPEN API 인증을 고민하다가 보니, 가장 많이 쓰이는게, OAuth 2.0이라서, 이 OAuth 2.0을 보다보니, 도저히 이해가 안되겠다 싶어서, 간단하게 직접 구현해보기로 했다. OAuth 서버를 구현하기전에 먼저 테스트 클라이언트가 필요했기 때문에, node.js + passport 를 이용해서 facebook API를 호출하는 간단한 웹 사이트를 만들어보기로 했다.Facebook의 API는 기본적으로 OAuth 2.0을 사용하고, Passport 모듈에서 잘 추상화된 라이브러리를 제공하기 때문에 쉽게 구축..

빠르게 훝어 보는 node.js - #14 - Passport를 이용한 사용자 인증 구축

빠르게 훝어보는 node.js#14 - Passport를 이용한 사용자 인증 구축조대협 (http://bcho.tistory.com) Passport는 node.js용 범용 인증 모듈이다. 기본적인 HTTP Basic Auth에서 부터 HTTP digest authentication, OAuth,OpenID 등 다양한 인증 프로토콜을 지원하며, Facebook이나 Twitter,Google등과의 연계된 SSO 인증을 포함하여 약 140가지의 인증 모듈을 포함한다. 그러면Passport를 이용하여, 어떻게 사용자 인증을 구현할 수 있는지 살펴보도록 하자.이러한 다양한 인증에 대해서 미리 구현해 놓은 것을 passport에서는 Strategy라고 한다. Facebook 인증을 위해서는 facebook str..

자바스크립트 스터디 노트 #2

실습중 코멘트클래스 내에서 변수var MyClass = function(){ var local; // 생성자 내에서만 유효 this.objectvalue; // 객체 단위로 유효 } MyClass.prototype.classvalue; /// 클래스 단위로 유효 text와 html$(‘#xxx’).html : 등의 HTML 태그가 반영됨 $(‘#xxx’).text : 등의 HTML 태그가 문자열로 저장됨 (실제 태그 효과가 없어짐)JQueryjqeury 엘리먼트는 생성자에서 객체 변수로 캐슁해서 사용하도록 하는 것이 좋다.클래스클내부 변수나 내부 메서드는 _를 사용하거나, _$로 시작하는 것이 좋다. 구글의 자바스크립트 네이밍 컨벤션 참고할것.자바스크립트 엔진싱글 쓰레드임을 명시 할것. 콜백은 비동기로 ..

자바스크립트 스터디 노트 #1

자료형변수null과 undefined 이외에는 모든 변수는 객체로 됨 Set을 사용할때는 key는 String만 사용 가능하며, value는 리터럴 모두 가능하다.var a ={ test:function(){ }}; a.test(); 리터럴에 대한 탐색 (순서를 보정하지 않는다.) cf. 배열은 순서를 보장한다.var a={1:[],2:[]}; 1,2 순서대로 나오지 않는다.배열 선언var a = new Array(5); 길이가 5인것 var a = [5]; 멤버가 5인것을 사용. 리터럴 방식의 선언 방식 아래 리터럴 방식의 선언이 실행 속도가 더 빠름 배열의 형 체크아래와 같이하면, a는 Object로 판별됨typeof a그래서, 아래와 같은 방법을 체크하는 게 좋은데,a instanceof Array..

보안 및 아키텍쳐 설계 관련 추천 서적

괜찮은 책들 정리 Security Patterns in Practice저자Fernandez-Buglioni, Eduardo 지음출판사John Wiley & Sons (Asia) Pte. | 2013-06-25 출간카테고리과학/기술책소개Learn to combine security theory an... Security 전반에 걸쳐, 인증, 암호화, 인가등 다양한 시나리오에 대해서 패턴 중심으로 설명, 개념 잡기 아주 좋음 Oauth 2.0 Identity and Access Management Patterns저자Martin Spasovski 지음출판사Packt Publishing | 2013-11-28 출간카테고리Oauth 2.0 Identity and Access Management Patterns책소..

REST API 디자인 가이드

REST API 디자인 가이드조대협(http://bcho.tistory.com)REST API 디자인을 보면, REST 사상에 맞춰서 제대로 디자인 (CRUD를 HTTP method에 맞춘)하기도 어렵고, URI Convention등이나 보안, 버전 관리등 고려할 사항이 많다. 이번 글에서는 REST API를 디자인에 대한 가이드를 소개하고자 한다.동사보다는 명사를 사용하자URL을 심플하고 직관적으로 만들자REST API를 URL만 보고도, 직관적으로 이해할 수 있어야 한다 URL을 길게 만드는것 보다, 최대 2 depth 정도로 간단하게 만드는 것이 이해하기 편하다./dogs /dogs/1234URL에 동사보다는 명사를 사용한다.REST API는 리소스에 대해서 행동을 정의하는 형태를 사용한다. 예를 ..

OAuth 2.0 based API 인증 메모

* Authroization Code- Redirect base / 서버 백엔드가 있는 경우 사용 - 파트너사가 API를 사용하는 시나리오에 유리* Implicit - Rediect base / 특히 Java script 처럼 서버 백엔드가 없는 경우 유용. Read Only 등에 사용* Resource Owner Password Credential - Client Id, Secret을 앱에 넣은 후, Client Id/Password로 인증하여, access token을 발급 받는 방식으로, Authorization Server와 Resource Owner가 같은 서비스인 경우 유용함 (자사 API 제공에 유용)* Client Crendetial- 유용한 Link서버 구현체 : http://oauth...

대용량 분산 시스템 아키텍쳐 디자인

대용량 분산 시스템 아키텍쳐 디자인 대용량 분산 시스템에 대한 아키텍쳐 설계에 대한 내용을 공유합니다. 아직 많이 부족합니다. 많은 피드백 부탁드립니다. 1. 아키텍쳐 설계 프로세스 대용량 분산 아키텍쳐 설계 #1 아키텍쳐 설계 방법론 from Terry Cho 2. 대용량 분산 시스템 아키텍쳐 대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴 from Terry Cho 3. 대용량 분산 시스템 아키텍쳐 디자인 패턴 대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐 from Terry Cho 4. 레퍼런스 아키텍쳐 - SOA 대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐 from Terry Cho 5. 레퍼런스 아키텍쳐 - REST 대용량 분산 아키텍쳐 설계 #5. ..

하이버네이트 쉽게 입문하기 (기초)-환경설정,입력조회 개발

하이버네이트 입문하기 (기초 #1) MyBatis만 사용하다가 근래에 들어서 Hibernate를 봐야하는 일이 생겨서, 늙은 나이에, Hibernate를 처음부터 보고 있다. 한국에서는 거의 MyBatis가 대세를 이루지만 해외의 경우 높은 생산성등을 이유로 Hibernate가 거의 대세를 이룬다. 그러나, 한국에서 안사용하는 이유 처럼, Hibernate는 자체적으로 쿼리를 생성하고, OR Mapper로써, 객체들을 DB에서 로딩할때, 레퍼런스된 객체등을 로딩하는등, 제대로 특성을 이해하고 사용하지 않으면 장애를 일으키는 경우가 많지 않기 때문에, 해외에 비해서 한국에서는 많이 사용되지 않는다. (SI에서 기피) 이글에서는 하이버네이트에 대한 간단한 사용법에 대해서 소개하고자 한다. 하이버네이트는 자바..

Redis 간단 설치 노트 (Virtual Box 에 설치하기)

Ubuntu server 설치 X-windows 환경 설치 (최소 GUI 환경) - 설치해보니 느려서 못쓰겠음sudo apt-get updatesudo apt-get upgradesudo apt-get install --no-install-recommends ubuntu-desktop #최소설치startx Ubuntu telnet 환경 설정sudo apt-get install xinetdsudo apt-get install telnetd sudo vi /etc/hosts.allow 에서 ALL:ALL 추가 telnet service를 xinetd.conf에 추가sudo vi /etc/xinetd.conf에아래 내용을 추가service telnet{disable = noflags = REUSEsocket_..

힘들더라도 블로그를 계속해야..

오늘 세미나 발표 자료를 만드느냐고, 기존 블로그 글들을 쭈욱 찾아서 정리했는데...몇 달 지났다고, 내용이 새롭고 기억이 안나는 부분들이 많았다.그나마 블로그에 기록해놨으니 이정도이지.. 요즘 일이 너무 바뻐서, 기술 공부는 거의 못하고 있다.업무 자체도 관리 업무가 많아서.. 머리가 점점 나뻐지는 느낌이다. 교육도 못받고 있고.. 몬가 대책을 세우기는 해야 할텐데.여하튼간에. 아무리 바쁘더라도 블로그에 정리하고, 테스트 코드는 github에 계속해서 저장해나가야 겠다. 오늘 또 한번 느끼네...

사는 이야기 2014.05.09

빠르게 훝어 보는 node.js - #13 Socket.IO 클러스터링

빠르게 훝어보는 node.js#13 - Socket.IO 클러스터링조대협 (http://bcho.tistory.com) node.js 노드가 하나가 아니라 여러개의 프로세스를 이용해서 운영할 때,socket.io를 어떻게 사용해야 할까? 이런 멀티 프로세스를 지원하기 위해서, node.js는 내부적으로 redis store를 지원한다. redis에는 publish/subscribe라는 기능이 있는데, 마치 메세지 큐처럼 메세지를 subscriber로 보낼 수 있는 기능이다.아래 그림을 보자,하나의 node프로세스에서 메세지를 보내면, 다른 프로세스로 redis를 통해서 메세지를 전달한다. 이때 메세지를 보내는 프로세스는 redis에 메세지를 “publish”하고 나머지 프로세스들은 “subscribe”를..