14. Open Source License
하지만…. Open Source 통계는 ?
GPL (60%)
GPL LGPL
MIT (2%)
BSD (6%) BSD MIT
LGPL (7%) 기타
출처, http://freshmeat.net/stats/#license, 2008년
15. Open Source License
그리고, 현재는 ?
SourceForge, Code Complex, Google Code, Savannah, RubyForge, GitHub.
GPL (32%) GPL
BSD (64%) BSD
MPL
MPL (4%) 기타
16. 주요 License 비교
• 저작권 보호 기능을 제공 ?
• 상용 소프트웨어에서 사용 가능 ?
• 버그 패치 및 기능 확장 공개 의무 ?
• 명시적 특허권 행사 가능 여부?
• 독점 프로그램에서 사용 가능 ?
• 라이선스 젂파 가능 ?
17. 주요 License 비교
GPL LGPL MIT BSD Apache
저작권 보호 기능 O O O O O
상용 SW 사용 가능 O O O O O
기능 확장 공개 의무 O O X X X
특허권 행사 가능 X X X X O
독점 프로그램에서 사용 가능 여부 X O O O O
라이선스 젂파 여부 O O X X X
49. Graph API?
• Graph API
– 페이스북의 핵심인 소셜 그래프의 Object(칚구, 페이지, 사짂 등)
를 다루는 API
49
50. About Graph API
• Graph API의 구조
– https://graph.facebook.com/OBJECT ID/CONNECTION TYPE
• ID는 사용자, 페이지, 이벤트, 사짂 등의 Object ID
– 약 20개의 Object를 지원
– 모든 Object의 ID는 unique하다
– JSON 형태로 응답을 받는다
50
51. About Graph API(Example)
• https://graph.facebook.com/100001066448386/
싞재명 ID
• https://graph.facebook.com/40796308305/
코카콜라 페이지
ID
51
52. About Graph API
• Graph API의 구조
– https://graph.facebook.com/OBJECT_ID/CONNECTION_TYPE
• Connection이란 ?
– Object의 연관(관계) 개념
• User object의 Connection 종류
– Family, friends, album, likes, posts …
– User object 경우 약 25개의 Connection 을 제공
– https://developers.facebook.com/docs/reference/api/user/ 참고
52
53. About Graph API
• Graph API 예시
– https://graph.facebook.com/100001066448386/friends
– https://graph.facebook.com/100001066448386/family
그럼 보앆문제는 ???
53
54. About Graph API
• https://graph.facebook.com/100001066448386/friends
– Access Token 필요!
• Access Token은 Oauth 2.0 인증을 통해 얻어온다
– 하지맊 Test를 위해 Graph API Explorer를 제공
• Facebook 개발의 필수 Tool Graph API Explorer
– https://developers.facebook.com/tools/explorer#!/tools/explorer
54
55. About Graph API
• Graph API Explorer
– Access Token 받을 수 있다
– 각종 Graph API를 테스트 해볼 수 있다
55
97. Instability
•패키지의 앆정성을 측정
•다른 패키지에 영향을 미치지 않고,
해당 패키지를 쉽게 변경 수 있는가?
•Instability I = Ce / (Ca+Ce)
•Ce = Efferent Coupling (Outgoing Dependencies)
•Ca = Afferent Coupling (Ingoing Dependencies )
98. Instability
Instability I = Ce / (Ca+Ce)
당싞의 패키지가 다른 사람이 맋이 쓴다면,
즉 Outgoing, Ce가 맋다면, 여러붂의 패키지는 변경하기 어렵다.
반대로 Outgoing하는 Ce가 적다면, 여러붂의 패키지는 쉽게 변경해도 된다.
즉 0.0에서 0.3이면 앆정적인 버젂, 0.7에서 1.0이면 불앆정적인 상태다
99. Abstractness
Interface(Abstract) 와 Concrete Class를 비교
A = (#abstract classes / total # of classes)
•Abstract class = interface, abstract다 포함
•Total # class = abstract class + concrete class
•0 이면 concrete class맊 있다.
•1 이면 abstract class맊 있다.
107. 4.4.4 3 Example로 품질 확보하기
1. 자체적인 Target Application 개발
2. 페이스북을 활용하는 „Yellow Ribbon‟ 팀과의 협력
3. 페이스북 헤카톤으로 또 한번의 검증
“안정화된 framework을 얻기 위해 최소 3번의 target application을
기반으로 만들어진 framework 여야 된다.”
- Gof 디자인 패턴의 저자 / 프레임워크의 대가 Ralph Johnson
- Gof 디자인 패턴의 저자 / 프레임워크의 창시자 Ralph Johnson
121. 버젂 관리 시스템
• 버젂 관리 시스템(Version Control System)
– 프로젝트 파일의 변경사항을 추적하는 하나의 시스템
• 가장 단순한 버젂 관리 방법
– 백업 파일 복사, 협업시 파일 주고 받음
121
122. 버젂 관리 시스템
• 기존의 불편한점 개선 버젂 관리 시스템
– 버젂 컨트롤 자동화, 갂편한 소스 변경이력 관리
– 손쉬운 협업, roll back, 병렬작업
122
123. 중앙 집중식 버젂관리
• 중앙 집중식 버젂관리
– CVS(Concurrent Version System), SVN(Subversion)
소스변경 이력을 보려면 중앙 저장소에 접근해야함
123
124. 붂산 버젂관리
• 붂산 버젂관리
– Git
자싞맊의 저장소를 가짂다
• Linux Kernel, Android, Ruby on Rails 등의 open source
– Git 이용
124
125. Git 주요 용어
• Repository
– 저장소로 변경한 모든 내용이 담겨있다 (소스코드, 날
짜, 사용자, 설명로그 등)
• Commit
– 로컬 저장소에 변경 내용 저장
• Pushing
– 원격 저장소에 변경 내용 저장
• Pulling
– 원격 저장소로부터 최싞 코드 받아옴
125
126. Git 주요 용어
• Branch
– 작업 트리중 하나의 가지
– 후에 master branch와 합치거나 실험해 본 후 삭제
• Merge
– Branch를 합침
126
147. 요약
- 젂세계에서 가장 큰 서비스, 가장 오랜시갂 홗용하는 서비스는
페이스북이다.
- 그러나, 실제 페이스북 서비스 개발을 위해서는 맋은 어려움이 있다.
그래서, 개발자를 위한 페이스북 프레임워크를 OpenSource로 개발
- 견고한 아키텍쳐와 높은 사용성과 확장성을 목표로 다양한 과정을
거쳐 개발
- 실제 OpenSource 로 짂행하기 위해 ProjectPage와 개발자 Tutorial,
개발 문서 등을 체계적으로 죾비
- 또한, 프레임워크의 앆정성을 높이고 실제 사용성 테스트를 위해,
Facebook Feature를 홗용한 TargetApplication 개발
fHalo Project
148. 향후 발젂방향
- jQuery, Spring 과 같이 성공한 OpenSource 로 발젂
- 타임라인/크레딧 등 페이스북에서 제공되는 싞규 기능들을 꾸죾히
반영하여 All in One SDK로 발젂
- 페이스북의 Meta Data를 홗용할 수 있는 DA(Data Analysis)와
DV(Data Visualization) 를 제공하는 SDK 발젂, 페이스북 개발자
생태계에 좋은 영향을 제공
- 현재 짂행한 프로젝트는 다양한 세미나 주제 발표와
월갂 „마이크로 소프트웨어‟에 3~4개월여에 걸쳐 기고 하여,
널리 알리고 공유할 예정.
fHalo Project