1. 다운로드





2. C: 밑에 "dev"라는 폴더를 생성 후 압축풀기


3. java 설치 후, jdk폴더를 dev에 복붙




4. eclipse.ini


-startup

plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar

--launcher.library

plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417

-product

org.eclipse.epp.package.jee.product

--launcher.defaultAction

openFile

--launcher.XXMaxPermSize

256M

-showsplash

org.eclipse.platform

--launcher.XXMaxPermSize

256m

--launcher.defaultAction

openFile

--launcher.appendVmargs

-vm

C:\dev\jdk1.8.0_60\bin\javaw.exe    // JDK 설정 , vmargs 보다 위에

-vmargs

-Dosgi.requiredJavaVersion=1.7        // 해당 버전이 1.7이면 1.7로 설정하면 속도가 더 빨라짐... 찾는 범위를 한정지어서 그런건가

-Xms1024m                                    // 메모리 힙 최소

-Xmx2048m                                    // 메모리 힙 최대 (컴터 메모리가 8GB이상일때만 2048정도로 해줭




# 이클립스 플러그인으로 설치

- Spring

- SVN

- Maven

- MyBatis


- MSSQL은 바로 메이블 플러그인이 바로 없어서 따로 메이븐 레파지토리쪽으로 설치해준 후에 매핑시켜주면 됨




'Development > Web' 카테고리의 다른 글

MVC 1  (0) 2015.08.30
서블릿  (0) 2015.08.30
[JQuery] plug-in top 100  (0) 2015.05.27
[웹서비스] 기초 4 - QnA, Web Client  (0) 2015.05.01
[웹서비스] 기초 3- 웹 서비스 구현  (0) 2015.04.29

http://www.jqueryscript.net/blog/Top-100-Best-Free-jQuery-Plugins-From-2014.html





다들 아시다시피 지능형 웹, 인공지능 웹, 시맨틱 웹 같이 현재 웹 3.0 환경에서 생활 하고 있습니다.
실제로 구글에서, 위와 같은 내용의 메일을 받아보면 메일의 내용이 수집되어 해당 내용과 관련된 추천을 제공하는 등의 서비스를……..

사용자 모르게 개인정보관련하여 동의를 받아서 제공하고 있다고 하네요

사용자가 검색단어를 입력하고 검색결과를 얻는 중간에, 지속적인 피드백을 통해서 인공신경망에는 학습이 이루어 집니다.

이 책에서는 사용자의 클릭 정보를 수집하여 기록하고, 그 기록을 이용해 검색 결과를 향상 시키는 방법을 살펴봅니다.

첫번째로는 학습된 인공신경망이 필요하답니다.

그럼 인공신경망이란 무엇을까요?

인간의 뇌를 기반으로 한 추론모델 뉴런….

잠깐 생각을 하게됩니다 ㅋㅋㅋㅋㅋㅋ

뉴런은 신경계에서 기본적인 정보처리를 하는 단위입니다.

학교다닐때 많이들 보셨던 그림입니다.

인간의 뇌는 간단히 말하면 매우복잡하고 비선형적이며 병렬처리를 수행합니다.

이 관점에서 다시 말하면,

100개의 뉴런과 각 뉴런을 연결하는 6조개의 스냅스들의 결합체이고,

정보는 신경망 전체에서 동시에 저장되고 처리됩니다.

또 적응성이란 것을 가져서 잘못된정보에 대해서는 뉴런들 사이의 연결이 약해지고, 올바른 정보에 대해서는 뉴런들 사이의 연결이 강해지게 됩니다.

! 그럼 다시 인공신경망으로 돌아가겠습니다.

인공신경망은 인간의 뇌를 기반으로 모델링하였습니다.

학습을 수행하고 가중치도 조정합니다.

인공신경망의 학습은

검색단어, 검색결과, 사용자가 클릭한 것으로 수행됩니다.

인공신경망의 구조에 대해 살~짝 더 들어가보겠습니다.

일반적으로 인풋값이 들어오면 적절한 weight가 곱해지고 더해집니다.

즉 노드간의 연결들을 가중치 있는 값으로 연결된다고 말할 수 있습니다.

1985년 프랭크 로젠블랫이 간단한 인공신경망을 훈련시키기위해 Perceptron algorithm을 발표하였습니다.

이렇게 일반적인 input/output layer로 이루어진 Neural Network의 구조를 Perceptron이라고 합니다.

일반적으로 각각의 노드들은 연결을 통해 여러 입력값을 받을 수는 있지만, 출력값은 오직 하나입니다.

하지만 그림에서 보시다시 단일 perceptron구조에서는 하나의 직선으로 된 판별식만 표현할 수 있어 새로운 모델이 제안됩니다.

단점을 보안하기위해서 중간에 hidden layer 로 여러 판별식을 추가로 둘 수 있어, 보다 복잡한 문제를 해결 할 수 있습니다.

(애니메이션), Hidden layerinput layer에만 반응하기 때문에 hidden layer라고 부릅니다.

이제, 여기서는 수많은 neural networkweight(가중치)값을 어떻게 학습시킬 것 인지 고민해야합니다.

책에나온 그림으로 보겠습니다.

Hidden layer는 원래 여러개의 층으로 구성이 될 수 있지만, 책에서는 단일 층의 경우만 설명하고 있습니다.

외부와 직접상호작용하지 않고 input layer에 따라러만 반응하므로 이 경우 input은 단어들의 집합이 돕니다. 그래서 이 layer를 쿼리층이라고도 합니다.

layer의 노드들은 인접한 layer의 모든 노드들과 연결됩니다.

여기서 최적의 결과는 검색어 안에 있는 단어들에 대한 입력값이 1이 되어야 합니다.

이게 무슨말이냐면,
아까 인공신경망은 실제 생물학적 신경망의 지능적 처리를 단순 모방하여 지능적 형태를 재현하는 것으로,

뉴런간에 교신정보의 세기가 강할 수록 신호 전달이 잘 되는 것이라고 생각하면 될 것 같은데요,

무한대의 값을 0~1사이의 적당한 값으로 표현할 때 1이 가장 최적화 된 값이 되는 겁니다. (맞는건지 모르겠음..ㅋㅋ)

따라서 1이 입력으로 들어오면 입력노드들에서 출력이 On이 되어 은닉층을 활성화 시키고,

충분히 강한 입력을 받은 은닉층 내 노드들이 차례로 On이 되어 출력층의 노드들까지 On을 시키게 됩니다.

이런식으로 계산을 한다는데..다음기회로 넘기도록 하겠습니다.

ㅠㅠ~

다시 그림으로 돌아와서 보겠습니다.

이런 상황에서 입력층 또는 은닉층의 노드들의 연결형태로 앞장에서 보신 계산식등으로 가중치가 정해지게 되고, 이에따라 출력층내의 노드들도 여러등급으로 활성화됩니다.

즉 이 활성화 레벨은 원래의 검색어안에 있는 단어들과 출력 URL간에 얼마나 관련이 있는지 결정하는데 사용됩니다.

우선 책의 그림에서는 bold체는 활성화된 노드를 의미하고, 실선은 강한연결을 의미합니다.

“world”bank”를 검색했을때 두 입력노드가 활성화되고, 은닉1 노드가 활성화 되었을때,

출력쪽에서 “World Bank”가 활성화되었다는 그림입니다.

연결 강도의 정확도에 따라 결과는 달라지며, 정확도는 검색을 하고 검색결고에서 링크를 클릭할 때마다 네트워크를 학습하여 얻어집니다.

데이터 베이스를 설정해야합니다.

데이터 베이스에 저장할 정보로는

단어, URL, 은닉층에 대한 테이블, 단어층에서 은닉층으로의 연결정보와 은닉층에서 출력층으로의 연결정보를 가지고 있어야합니다.


리딩을 해주신 김승일님 자료

http://whydsp.org/263



# Unsupervised Learing / Clusgtering



# 계층적 군집화

1. 유사도가 가장 가까운 한 쌍을 찾는다.

2. 찾은 한 쌍을 하나의 그룹으로 만들고, 그룹의 위치는 두 쌍의 중심(무게중심)

3. 위 과정을 1개의 그룹만 남을 때까지 반복

: 팩토리얼계산으로 2^3알고리즘


# 계통도

: tree의 깊이가 깊은 것 보다, 깊지않은 쪽의 거리가 가까움


# 세로줄 군집화

: 데이터를 단순히 rotation 시켜줌

ex. 마트에서는 어떤 물건을 함께 진열하면 좋을까? 기저귀와 맥주


# 계층적 군집화 기법의 단점

: 뚜렷한 그룹으로 쪼개지 못하고, 계산량이 많음(알고리즘 대박...)

=> K-means Clustering


# K-means Clustering

1. 임의의 k점을 initial centroid로 잡기

2. 각 centroid에서 가까운 node들을 하나의 그룹으로 만듬

3. Centroid Update. 각 그룹의 무게중심으로 중심을 잡기

4. 더 이상 그룹에 변화가 없을때까지 위 과정을 반복


# 선호도 군집

: Zebo.com, 사람들이 가지고 싶은 물건 목록을 만드는 사이트


# Tanamoto Coefficient

: 책이 잘못나온거 같음

타니모토 알고리즘이 맞음


군집화 할 때, 합집합분의 교집합으로 계산




4. 검색과 랭킹


...


06. 유입 링크 사용하기


기존 - 페이지 내용에 기반한 점수 지표

검색품질향상 - 다른 사람들이 그 페이지에 등록한 정보를 적용,
                        의심스러운 값을 가진 페이지나 스패머들이 생성했을 법한 페이지 색인에 효과적

(이런 페이지들은 실제 내용을 가진 페이지에 비해 연결될 가능성이 적기때문)



# 단순계산


유입링크를 사용하는 가장 간단한 방법

> 각 페이지의 유입링크 개수를 세고,

> 링크 전체 개수를 페이지에 대한 지표로 사용


예, 학술눈문

: 인용논문수로 논문의 중요도가 평가


####코드


- 페이지들이 단순 리턴, 해당 페이지의 유입 링크 개수만을 의존하여 랭킹

예, "Programming language"페이지가 "Python"페이지보다 많은 유입링크를 갖지만

정말 찾는 것이 "Python"이라면 결과에서 제일 먼저 나타나야 함

유입 링크 기반지표와 다른 지표들 중 하나와 결합하여 검색능력과 랭킹에 적합도를 결합할 수 있다. (검색능력향상)



# 페이지랭크 알고리즘


"Google"을 만든 세르게이 브린과 래리 페이지가 대학원생 때 쓴 논문 "The Anatomy of a Large-Scale Hypertextual Web Search Engine"에서 발표


개요

- 검색엔진의 품질 향상을 목적

- 웹기반에서의 검색엔진은 인덱스만으론 부족

: 검색된 페이지수는 엄청난 성장으로 방대하나, 사람들의 수용능력은 느리게 성장

         -> 결국 필요한 페이지만 골라서 읽어야 할 필요가 있음

- 관련이 있는 페이지만을 도출하자

- 하이퍼텍스트 정보를 사용하여 웹 페이지간의 연결 관계를 판단, "링크구조 및 링크달린 텍스트"


알고리즘 소개

- 기존 : 특정 페이지를 인용하는 다른 페이지가 얼마나 많이 있느냐를 세는 방식

- PageRank : 다른 페이지에서 오는 링크를 같은 비중으로 세지 않고, 페이지에 걸린 링크 숫자를 "정규화(normalize)"하여 사용

-> 하이퍼링크를 가지는 문서에서 상대적 중요도에 따라 가중치를 부여하는 방법을 가진 알고리즘


PR(A) = (1-d) + d(PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))


PR : PageRack

PR(A) : A페이지의 페이지랭크 값

T1, T2,... : 그 페이지를 가리키는 다른 페이지들

PR(T1) : T1 페이지의 페이지랭크 값

C(T1) ; T1 페이지가 가지고 있는 총 링크의 갯수


> d(Dampen Factor)는 아직 생각하지 않기(d=1로 가정)

> A페이지를 가리키는 다른 페이지들의 페이지랭크 값을 평균화하여 다 더한 값

> 즉 A페이지랭크 값은 그 페이지를 인용하고 있는 다른 페이지들의 페이지랭크 값을 "정규화" 시킨 값

> "정규화"라는 말의 의미... 페이지랭크 값은 단순 합산이 아님. 

예. T1의 페이지랭크가 높아도, T1페이지를 가리키는 링크가 많다면(C(T1)) 그 페이지가 기여하는 비중은 낮아짐





A : 페이지

T1, T2, T3, T4, T5 : A를 가리키는 페이지


- 재귀적 호출 알고리즘

T1, T2, T3, T4, T5 의 페이지랭크값을 정규화하여 합한 값으로 A의 페이지랭크 값을 계산

A의 페이지랭크값도 다른 페이지의 페이지랭크값을 구하는데 사용

제한조건이 필요


- Dampen Factor

: 어떤 마구잡이로 웹서핑을 하는 사람이 그 페이지에 만족을 못하고 다른 페이지로 가는 링크를 클릭할 확률 - 논문


PR(A) = (1-d) + d(PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))


d=1, 수식 그대로가 A의 PageRank 값

d=0, 모든 페이지가 1이 되므로 의미가 없어짐

d는 0~1 사이값


보통.. d는 85%, 0.85 

논문에 따르면, "모든 웹페이지의 페이지랭크 값을 합산하면 1이된다."고 하는데..

수식에 모순이 있음


d=1일때, 하나의 페이지에 대한 페이지랭크가 최대 1이 될 수 있으므로, 전체 페이지에 대한 페이지랭크값은 N.

위키피디아에서 수식을 정정


PR(A) = (1-d)/N + d(PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))    // 전체 페이지수로 한번 나눔







출처 https://sungmoon.files.wordpress.com/2012/08/screen-shot-2012-08-25-at-4-46-19-am.png





책에서는,

dampen Factor를 85%로 계산(0.85)


PR(A) = 0.15 + 0.85 * ( PR(B) / link(B) + PR(C) / link(C) + PR(D) / link(D) )

PR(A) = 0.15 + 0.85 * ( 0.5 / 4 + 0.7 / 5 + 0.2 / 1 )        // 페이지랭크는 C가 젤 높은데, 링크는 A 한군데만 하기때문에 기여도가 젤 높음

PR(A) = 0.15 + 0.85 * ( 0.125 + 0.14 + 0.2 )

PR(A) = 0.15 + 0.85 * 0.465

PR(A) = 0.54425



함정,

페이지링크 값을 가지지않은 모든 페이지들의 페이지랭크 값들은??

> 모든 페이지랭크 값을 초기에 임의의 값으로 지정한 후 여러 번 반복 계산

> 반복을 할 때마다 각 페이지랭크값은 실제 페이지랭크값에 점점 가까워 지게됨

> 약 20회 정도


페이지랭크는 시간이 많이 걸림, 검색어와 상관없이 진행이 됨.

> 모든 URL에 대한 페이지 랭크를 사전에 계산

> 이 값을 테이블에 저장하는 함수 생성


calculatepagerank(x, y)

: 매번 수행될 때 모든 페이지랭크를 재계산

> 모든 페이지에 대한 페이지랭크값을 1로 초기화

> 모든 페이지URL에 대해 루프를 돌며 모든 유입링크에 대한 페이지랭크 값과 전체 링크 수를 얻는다.


>  예제 Database에서 어떤 페이지가 가장 높은 페이지랭크 값을 가지는지 확인하려면 데이터베이스에 직접 쿼리


>  "Main Page"가 젤 높은 페이지랭크를 가짐

> 정규화 함수 부분 추가

> weights 리스트를 수정하여 페이지랭크를 포함시키면 좀 더 향상된 결과를 얻을 수 있음



# 링크텍스트 활용

: 페이지의 링크들의 텍스트를 사용하여 페이지의 적합도를 판단

-> 링크를 가진 페이지 자체보다 페이지에 대한 링크에 대한 설명등을 참조(개발자들이 링크하려는 것들에 대한 간략한 설명을 링크에 넣기 떄문)



코드


> 검색 수행 시, 제공된 단어 ID들의 목록을 새로운 인자로 가짐

linktextscore(x,y,z)를 searccher안에 추가

> wordids 안에 있는 모든 단어들에 대해 루프를 돌면서 이 단어들의 링크를 찾기

> 링크의 목적지가 검색결과 안에 있다면, 링크소스의 페이지랭크 값을 목적지 페이지의 최종 점수에 더하기

검색 단어를 포함하고 있는 중요한 페이지로부터 링크를 많은 받은 페이지가 더 높은 점수를 가짐

검색 결과 내의 대부분의 페이지들의 경우 정확한 텍스트를 가진 링크가 없어 점수0을 가짐

> 링크 텍스트 랭킹을 반영하기 위해 weights 리스트에 코드를 추가

(1.0, selt.linktextscore(row, wordids))



모든 지표들의 표준 가중치는 없음. 

주요 검색 사이트들도 검색 결과 랭킹방법은 수시로 바꿈

: 사용할 지표와 제공할 가중치는 구축하려는 응용에 따라 크게 달라짐


 


'Development > Data Science' 카테고리의 다른 글

[집단지성] 4.7 클릭학습 개념  (0) 2015.05.14
[집단지성] 군집화  (0) 2015.05.09
[집단지성] 유클리디안 거리점수, 피어슨 상관점수  (0) 2015.04.24
집단지성  (0) 2015.04.21


Spring 2.5

- OS에 디펜던시가 큼

- AIX(IBM), ADF와 함께 쓸 때, 오동작을 일으키기도 함


싱글톤, 멀티쓰레드 환경에서 시리얼라이제이션을쓰면 ... ?


시리얼라이제이션

: 분산처리할때

serialized UI 라는 객체가 있음

- 자바에서 시리얼라이즈라하면,

Stream(byte화하는 것) 중 I/O계열에 있는 애들중

ByteArrayInputStream 등등 많은데, ObjectStream이란놈이있는데, 


- 엔드포인트에서 데이터 In/out할때 serialization 


=> 자바에서 Stream으로 데이터를 보낸때, DTO로 매번 감싸는 것도 문제이므로 오브젝트 자체에 Serial ID를 부여한다. 이런 방식을 일반적으로 자바에선 Serialize이라고 한다.

(de-Serialize, static변수는 적용할 수 없음)


- 스프링의 싱글톤과 VM측면에서의 싱글톤은 다른 의미이다.




# Stress 

1. 이용자수 (회원수) 100%

2. 동접자수 10%

3. 동시사용자수 10%

: 회원수가 100명일때, 동접자수가 10%인 10명이고, 동시사용자수가 10%인 10명일때, 처리시간이 1초정도? 



# 좋은도구, 시스템, 

코드 스니핏 - 이클립스에서 개발환경을 자동화해준다(자바 리플렉션, 인트로스펙션)

인트로스펙션 : 자바소스를 완변하게 분석해주는 툴 -> AST (Abstract Syntax Tree, AST view)

소스코드를 추상화 트리로 만들어 줘서 자바소스를 완벽하게 분해를 한다. 

클래스 정보를 로드를하면 메소드, 변수, 모든 정보를 알아낸다.(인트로스펙션)

문자열로부터 자바객체로 만들어낸다 (리플렉션)



# LRCP , 2PC

자바의 XA드라이버를 사용하지 않아도 요즘에나오는 WAS들은 2PC를 제공해주면서(WAS의 고급기술)분산트랜젝션을 제공할 수 있음



# 인프라개발자

EA - 

BA : domain, 비지니스아키텍트

TA : 테크니컬 아키텍트, System 구성

DA : Data 아키텍트, 

AA > SA : 소프트웨어 아키텍트, 

(AA가 더 넓은 영역을 커버하고있음, 가령 서울시를 설계한다면, SA는 건물의 내부를 설계)


XaaS -     

IaaS 

PaaS

SaaS

DaaS



인프라개발자 ...... 하드웨어 개발, 시스템 관련한 개발, 

: 레드햇 등에서 하드웨어 플러그인등 미들단에서 OS를 풍부하게해주는 개발을 하는데, 완전 인프라단은 아니지만, 인프라 개발자 범주에 들 수 있음.


----------------------------------------------

java 엔지니어 공부순서

1. 자바패턴,

2, 스프링소스까기(2달정도만 해도.. 스프링 고수가됨)

3. JDK소스까고, JavaDOC 보기


# 애플리케이션

: EPOT(e-portal:온라인포털)


$ 아키텍처 설계

> 레이어 - 각 레이어 별 적용 기술 요소 매핑



> 프로그래밍 규약

- 컴포넌트 : 스스로 동작할 수 있는 최소한의 단위

- 유틸리티 : 유틸리티 성 비지니스, 공통적으로 사용, 달력같은...

- 기능분류 : 퍼사드... 

- domain = DO = TO ...



> 코드 컨변션

- 이클립스 > preference > java > code style

  a. organize imports 

  b. code templates

  c. 카피라이트 자동화

...



> 개발표준, 메소드 접두어 명명규칙


# 컴포넌트 설계/분류

# 컴포넌트 분류



# 웹서비스 설계



http://www.nextree.co.kr/p2010/




# 웹 서비스 시나리오


- UDDI : 웹 서비스 관련 정보의 공개와 탐색을 위한 표준

- 공공데이터 포털





- 서비스제공자 

- 서비스요청자 


# 웹서비스 3가지 기술요소

- WSDL : Web Service Description Language, 웹서비스를 표현 및 기술, XML

- SOAP : Simple Object Access Protocol, 메시지프로토콜

- UDDI : 기술의 탐색, 등록 ----> 국내에선 없음

*Jax-WS - java 메시지와 Soap메시지를 매칭,바인딩 해주는 객체


# 웹 서비스 아키텍처 모델

- framework ? 반 자동화 되어있는, 스스로 동장할 수 없음, 프로그램으로 동작 시켜줘야함

- Server ? 서비스를 제공할 수 있음, 자동화 되어있는,


> 웹서비스 핵심 기술 표준

- XML

- XML 스키마

- SOAP

- WSDL

- UDDI


> 웹 서비스 확장기술 표준 (wS-*) 

- 보안처리 WS-Security, WS-Trust, WS-SecureConversation

- 트랜잭션처리 WS-Coordination, WS=Transaction

- 신뢰성있는 메시지 WS-ReliableMessaging, WS-Addressing

- 기타(BPM-업무프로세스, RM-자원관리)

=> 실무에서 이런 확장기술을 적용하는 분위기는 아니지 ㅎㅎ




# XML[Extensible Markup Language]

- W3C에서 다른 특수 목적의 마크업 언어를 정의하기 위한 마크업 언어

- XML 활용도 높다면 데이터처리에 사용, 보통 요즘엔 환경설정에 사용


- XML은 문서로 구조화 할때, 많이 사용


- HTML의 단점이, 표현과 구현을 섞어놓아 디자이너와 개발자의 협업이 어려웠음

- XML은 HTML에서 데이터만 끄집어내자하여 떨어져 나옴

- Transformation, XSLT

- CSV

- X-Path, XML의 path를 처리하는 기술

- XHTML, HTML5

- RDF, ROA, 시맨틱 웹의 토대

- 라이센스 제약이 없고, 플랫폼이 독립적, 많은 지원이 있음


> XML의 구조

- 버전표기

- root 엘리먼트 1개만 반드시 포함



> XML의 특징

- 문서의 내용과 스타일을 분리하여 사용

- 표준 규약,ft 

- 문서(microso, 전송자료(ACORD, OFX, IFX...)


> Well-Formed 

> Valied


> Namespace

: 논리적 이름 구분을 위함


> XML스키마의 목적

- DTD와 같이 XML문서를 구조화하기 위해 W3C에서 표준화하여 제공

> XML스키마의 특성

- XML문법, XML 네임스페이스 지원, 루트요소를 반드시 가져야함, 

- <schema>, 다양한 데이터타입, 문서화 메커니즘 제공

> DTD와 XML스키마의 특징 비교




> XML 스키마 네임스페이스


- 스키마 네임스페이스를 지정하지 ㅇ낳으면 파서는 XML 스키마로 인식할 수 없음

- xs, xsd와 같은 접두사를 많이 사용




> 대상 네임스페이스(targetNamespace)

- 새로운걸 만들어서 참조를 하려면 그대로~ 붙여야함

- targetNamespace를 안붙이면 안되. namespace중복이 되버려. 선언은 할 수 있음

> elementFormDefault, attributeFormDefault

- "qualified", "unqualified"

- XML파서가 알아서 처리를 해줌

- full package를 주는게 좋음.. 결국 언젠간 확장하다보면 충돌 날 수 있으므로



# SOAP

: 개방형 프로토콜을 사용하여, XML기반의 SOAP 메시지를 네트워크 상에서 교환하는 프로토콜(HTTP, HTTPS, SMTP를 기저로 깔고)

: 구조, 전송, 상호 중립성의 개념을 도입

: 태생 자체가 상호독립/호환을 위해서 만들어짐


- SOAP 1.2 version


> 특징 (장점)

- SOAP을 기본적으로 HTTP기반 위에서 동작,

- HTTP와 같이 프록시와 박화벽에 구애받지 않고 쉽게 통신이 가능,

- 플랫폼 및 프로그래밍 언어에 독립적

- 간단하고 확장가능, 멀티파트 MIME구조를 사용, 첨부를 통합하는 SOAP XMl 메시지를 지원

- 페이로드

> 특징 (단점)

- 성능이슈, (실제 stress test시, 응답속도가 예전에 비하여, 몇배이상 빨랐음) 

   ==> 상대적으로 늦는다는 이야기지, 이제는 더이상 단순히 느리다라고 할 수 없음



# SOAP 메시지 구조

1.1 버전


1.2 버전



# WSDL

: 웹서비스가 어디에 존재하는지, 웹서비스로 무엇을 할 수 있는지, 또 어떻게 하는지, XML형식으로 기술하여 제공

: SOAP메시지에서 주곱다아야하는 데이터가 WSDL에 있음


> WSDL 네임스페이스 목록

> 문서구조


> 웹서비스 스택



# 웹스비스 프레임워크

- Aegis Databinding

- Spring

- JAX-WS지원

- 비동기방식의 호출 지원

- 바이너리와 기존 프로토콜 지원

- 기타.. (책참고)


> Apache CXF 도구

> Apache CXF 아키텍처

- CXF-API : Bus,



> SOAP 메시지 구조



> Aegis, JAXB : 데이터바인딩 하는 친구들

: SOAP메시지가 들어오면 JAVA의 객체로 만들어지고 SOAP의 DATA부분의 내용을 또다른 자바객체로 바인딩하는 기술을 일컬음


> SDO, Service Data Objects





누가 추천해주신 wsgi(Web Server Gateway Interface)를 만들어보려구,

함께 추천해주신 파이썬책도 겸사겸사 주문했는데 아직두 발송전인듯..

인터파크는 평균 5일은 걸리는 것 같다는 ㅜㅜ


그래서 암튼 그전까지 퇴근 후 5일짜리 교육 신청함... 


주제 : 웹서비스 - WSDL & SOAP

목차 : 

1. 웹 서비스 개요

2. 웹 서비스 기반기술

3. 웹 서비스 프레임워크

4. 웹 서비스 구현

5. 웹 서비스 클라이언트 구현

6. 오픈 API와 매시업


포카칩뜯으면서 주저리 주저리 정리하고 자야지... 


------------------------------------------------------------------------------


1일차 - 웹 서비스 개요


# 웹서비스의 정의


> 웹서비스의 의미는 굉장히 다양함

> 전체 구성도


> Back-end, Front-end, Middle-ware(모바일환경에서의 push server, MQ ...)


> 정의

- 이종 시스템을 통합하고 HTTP를 통해 재사용 가능한 비즈니스 기능 공개 방법을 제공 - 서비스디자인패턴, 로버트다이뇨(2013)

- 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용을 하기 위한 소프트웨어 시스템 - 위키

- 기계 대 기계 상호작용을 지원하기 위해 설계된 소프트웨어 시스템 - W3C

=> 다 통합... 왠지 클라우드서비스가 생각난다..


> SOA vs ROA

- Service oriendted vs Resource Oriented

- OSGi, Open Service Gateway initiative


> SOAP/WSDL 기반에서 웹 서비스

- 클라이언트, 서비스 / 요청자, 제공자 / 서비스 컨슈머, 서비스 제공자


> 웹서비스 연관 용어

- 웹 2.0 

- Semantic Web, 웹 3.0

- Open API

- Mash-up


> 웹서비스의 등장배경

- 비지니스 관점 : 기업 내, 기업 간, 기업과 고객 간 통합된 서비스 증대 및 Time to Market

- 기술적 관점 : POP -> OOP -> COP: CBD -> SOP: SOA

                 절차지향 객체지향 컴포넌트지향 서비스지향

- 분산프로토콜 등장 : RMI(rmic.exe), RPC


> 웹서비스 사용 목적

- 웹서비스 레이어드 아키텍처


> 웹서비스 고려사항과 대안

- 마샬링, 언마샬링시 바이트스트림으로 직렬화하여 전송

- 네트워크 통신의 부분적 실패에 대비(여기서는 네트워크 통신의 장애를 말함)

- 웹서비스의 본질적인 위험요소 고려





> 웹서비스 API 스타일

- 엔터프라이즈 애플리케이션 아키텍처 패턴

- MVC Architexture

- 퍼사드(Facades[GoF]) 패턴

- RPC API(JAX-RPC) / 메세지 API(JAX-WS) / 리소스 API(JAX-RS)


> 웹서비스 API 설계 시 고려사항

- 캡슐화

- 서비스 계약 : 클라이언트와 서비스가 어떻게 상호작용 할 수 있는지 명시한 협약서

- 자율성 : 상호 결합성이 낮아야 함

- 지연시간

- 부분실패, RPC-API(proxy)

- 텍스트 기반 데이터의 바이너리 메시지 인코딩


> 테스트 개발환경 설정

- IDE 설치 및 Subversive, AnyEdit 플러그인 설치

- 빋드환경 배포, Maven

- WAS, Tomcat

- 개발 표준 설정 : 명명규칙, 소스코드 포맷, 파일 포맷 등








# 유클리디안 거리점수


: 그럼  제곱 제곱 제곱이 되는뎅.....

 말이 안되는 알고리즘인뎅...? 2^ ==> 제곱으로 속도가 떨어지는거지???? 


... 유사도 계산 시 나타낼  수 있는 범위를 0~1로 잡고(정규화), 실수로 표현한다.

하.. 이게 왜. 효육적이지? 실수로 가면 속도가..........................................


제곱은 알고리즘에서..for로 처리하니깐.. ~~~



# 피어슨 상관점수

: 1, 0, -1

- 0이라는 기준을 잡는 조건은?

- 평균? 상관계수? 


- 전체적인 상관관계를 나타낼 수 있찌만 두 객체간의 유사도는 측정할 수가 없다는 단점이 있다.

- 궂이 이 이론을 사용하는 이유는 ? 두 객체간 상관관계의 판별로만 사용한다. 


# 유사도 계산을 할때는 

 1. 피어슨이 1위

 2. 유클리디안이 2위

 3. 3위는 기타 많은 것들이 있당...?


# 예를들어

 1 : 객체간의 양의 상관관계가 나오면 함께 파는게 낫다.

 0 : 객체간에 0의 상관관계가 나오면 

 -1: 객체간의 -1의 상관관계가 나오면 함께팔지않는게 낫다.

'Development > Data Science' 카테고리의 다른 글

[집단지성] 4.7 클릭학습 개념  (0) 2015.05.14
[집단지성] 군집화  (0) 2015.05.09
[집단지성] 4. 검색과 랭킹 - 6. 유입 링크 사용하기  (0) 2015.05.04
집단지성  (0) 2015.04.21

+ Recent posts