SlideShare uma empresa Scribd logo
1 de 152
Open Source Engineering   fHalo
손영수
   arload@live.com

동완이 아빠, 인옥이 남편!!

     EVA팀 리더
   PLoP 패턴 저자
 AsianPLoP 공동의장
소프트웨어 마에스트로 멘토

         Blog
 http://www.arload.net
신재명, 오유환, 강미경, 김영호
    www.fHalo.org

소프트웨어 마에스트로 2기
      fHalo팀
오픈소스 란.
3명의 거장.




Richard Stallman     Linus Torvalds   Eric S. Raymond
처음 시작과 달리

현재의 오픈 소스는...
인류애의 사랑 그리고
기업들의 총성 없는 젂쟁이 공존하는 곳
애플이 바라보는 Open Source




소프트웨어 자산   나쁜 마켓 쉐어링   Half-Open/Half-Close
구글이 바라보는 Open Source




소프트웨어 자산   Free Outsourcing   표준화 및 비 표준화
           (EcoSystem 구축)
재미난 Web 브라우저 시장
Google이 잘될수 밖에 없는 이유..
• CanvasGL – a GPU-accelerated Webkit
1. 라이센스
Open Source License




License 붂류 참고 자
료, http://www.olis.or.kr/ossw/license/license/list.do
Open Source License
                 하지만…. Open Source 통계는 ?



                                               GPL (60%)

                                                           GPL   LGPL
  MIT (2%)
  BSD (6%)                                                 BSD   MIT


  LGPL (7%)                                                기타


출처, http://freshmeat.net/stats/#license,   2008년
Open Source License
그리고, 현재는 ?
SourceForge, Code Complex, Google Code, Savannah, RubyForge, GitHub.




  GPL (32%)                                                 GPL

  BSD (64%)                                                 BSD

                                                            MPL
  MPL (4%)                                                  기타
주요 License 비교
•   저작권 보호 기능을 제공 ?
•   상용 소프트웨어에서 사용 가능 ?
•   버그 패치 및 기능 확장 공개 의무 ?
•   명시적 특허권 행사 가능 여부?
•   독점 프로그램에서 사용 가능 ?
•   라이선스 젂파 가능 ?
주요 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
License 특허권
주요 오픈소스 SW 사례
오픈 소스 라이선스 위반
오픈 소스 라이선스 위반 사례
2. Committer & Reviewer
        Policy
OSP의 방향을 좌우 하는자
     Committer & Reviewer..
• 정부 주도형
 – Webinos (EU에서 주관)


• 기업 컨소시엄 주도형
 – Webkit ( Apple + Google)


• 폐쇄형
 – jQuery (개인마음대로 -> Boarding 맴버 선
   정)
3. 공개 이젂에 사용부터.

Android의 문제를 오픈소스로..
3.1 REST의 귀찮음.
Stub


Controller          DAO


  Proxy      REST

    DTO
             GET
같이 뭉쳐 다니는 파라메터는
ParameterObject로 묶어라!
XML 파싱 이렇게??
Simple Framework를
     이용하세요.

http://simple.sourceforge.net/
이렇게 됩니다.
3.2 아직도 Logcat?
여러붂이 맊든 시스템이
    죽었다.

   미국에서….
Logcat 보러 출장?
새로운 log..

    4
먼저
Log Management
   패턴부터…
log4xxx
Microlog4android 사용법
• http://code.google.com/p/microlog4android/downloads/에서
  microlog4android-1.0.0.jar 다운

• Android 프로젝트에 jar 추가

• AndroidManifest.xml에
  android.permission.WRITE_EXTERNAL_STORAG​​E 추가
로그를
Network 서버로 보내는
   Appender도 있으나
 약갂의 코딩이 필요.
4. Open Source Engineering
4.1 Facebook 의 가치
   그리고 문제점..
?
세계에서 가장 큰 서비스
                (약 8억5천만)
          854,750,780
?
가장 오랜시간 이용하는 서비스
을 개발하려면…
너무 많은 것을 알아야 한다.


           Social Plugin ?
           Open Graph ?
           Social Channels ?
           Authentication ?
           Graph API ?
을 개발하려면…
 쓸만한 녀석이 없다..

batchFB
facebook-AWD
zendFBlib
facebook SDK for Android
facebook SDK for .net
기존       Framework의 문제점..




          ?
     확장성 편의성 사용성 안정성
그래서 우리는..

            framework


            facebook framework Project


        를 시작했습니다.
4.2 Facebook 기본 개념
Graph API?
• Graph API
  – 페이스북의 핵심인 소셜 그래프의 Object(칚구, 페이지, 사짂 등)
    를 다루는 API




                                          49
About Graph API
• Graph API의 구조
  – https://graph.facebook.com/OBJECT ID/CONNECTION TYPE


• ID는 사용자, 페이지, 이벤트, 사짂 등의 Object ID
  – 약 20개의 Object를 지원       
  – 모든 Object의 ID는 unique하다
  – JSON 형태로 응답을 받는다




                                                           50
About Graph API(Example)
• https://graph.facebook.com/100001066448386/

                                            싞재명 ID




• https://graph.facebook.com/40796308305/


                                     코카콜라 페이지
                                     ID




                                                     51
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
About Graph API
• Graph API 예시
  – https://graph.facebook.com/100001066448386/friends
  – https://graph.facebook.com/100001066448386/family




  그럼 보앆문제는 ???
                                                         53
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
About Graph API
• Graph API Explorer
  – Access Token 받을 수 있다
  – 각종 Graph API를 테스트 해볼 수 있다




                                55
4.3 Facebook 개발 도구에
      대한 문제인식
try{
       URL url = new URL("https://graph.facebook.com/friends?access_token=ACCESS_TOKEN");
       connection = (HttpsURLConnection) url.openConnection();

       connection.setRequestMethod("GET");
       connection.setRequestProperty("Content-Type" , "application/x-www-form-urlencoded");
       connection.connect();

       InputStreamReader reader = new InputStreamReader(connection.getInputStream());
       bufferedReader = new BufferedReader(reader);

       String temp = null;
       StringBuffer buffer = new StringBuffer();

       while ((temp = bufferedReader.readLine()) != null) {
            buffer.append(temp);
       }
       JsonObject json = new JsonObject(buffer.toString());
       JsonArray jsonArray = json.getJsonArray(“data”);

       For(int i=0;i<jsonArray.length();i++){
            JsonObject jsonObject = jsonArray.getJsonObject(i);
            System.out.println(“My friends : " + json.get("name"));
       }
}
connection.disconnect();
           Graph API를 이용하여 친구리스트를 가져오는 소스
         자싞의 칚구리스트를 가져오는 메소드를 호출한 다음
         반홖 값인 JSON데이터를 일일이 파싱하는 과정을 거침
기존 framework의 문제점




facebook SDK for Android


  Circular dependency 발생, 안정적이지 못한 구조
기존 framework의 문제점



                                  Tangled




Pollution : 4.19                Pollution : 2.18



     facebook SDK for Android

                   다양한 문제요소, 높은 오염도 내포
4.4 Facebook 프레임워크
        개발하기
먼저 프로젝트 목표(품질) 설정

•   Framework의 80대20 법칙
•   높은 사용성 확보. (쉬운 개발)
•   튺튺한 아키텍처 확보
•   오픈 소스를 통한 공유와 확장
4.4.1 팀원의 크기에 맞게 운용




 Small Team   Large Team
Framework를 구축하는 팀원이 작으면..



               Simple Design

             Consistency Design


             Focus on 80/20 Rules

Small Team
Framework 를 구축하는
       팀원이 매우 맋다면..


               Powerful Design

               Lack Consistency


              Remove Requirements

Large Team
Framework 핵심 기능 찾기
내가 만들 FB App에 필요한 기능들 추출..
Framework 핵심 기능 찾기
분류화 시키기
Framework 핵심 기능 찾기
20/80 Rule에 의거한 기능 추출
4.4.2 높은 사용성 확보

우리가 맊든 오픈소스 (프레임워크)를
   과연 다른 개발자가 쓸까?




 사막을 달리고 있지 않나요?
You need Feedback.
 DO design APIs by
  first writing code samples for the main scenarios
    and then
  defining the object model to support the code samples.
Code Samples
Read File
static void Main(string[] args)
 {
          StreamReader sr =
   File.OpenText("MyFile.txt");
          string s = sr.ReadLine();

         while (s != null)
         {
           s = sr.ReadLine();
           Console.WriteLine(s);
         }
}
Feedback (Read File)

  static void Main(string[] args)
  {
       foreach (string s in File.ReadAllLines("MyFiles.text"))
     {
                Console.WriteLine(s);
       }
  }
Object Model Listing
framework 사용자 시나리오 산출
framework 사용자 시나리오 산출
framework 사용자 시나리오 산출
framework 사용자 시나리오 산출
칚구 리스트 가져오기 (페이스북 API)
칚구 리스트 가져오기
– Rest FB
  • Connection<User> myFriends =
    facebookClient.fetchConnection("me/friends", User.class);


– fHalo
  • Connection<Friends> friends = user.friends();
피드 올리기(페이스북 API)
피드 올리기
– Rest FB
  • FacebookType publishMessageResponse =
    facebookClient.publish("me/feed", FacebookType.class,
    Parameter.with("message", "RestFB test"),
    Parameter.with(“caption", “caption test"),
    Parameter.with(“description", “description test"),);

– fHalo
  • Feed feed = new feed();
    feed.setMessage("Message Test");
    feed.setCaption("Caption Test");
    feed.setDescription("Description Test");
    user.publishFeed(me, feed);
4.4.3 튺튺한 아키텍쳐
튺튺한 아키텍쳐의 중요성..
그리고 어떻게 파악하지?
왜 오픈소스에서
아키텍쳐가 중요한가?
높이 (30000 feet)봐야 할까?
높이 봐야 할까?
자세히 (0 feet) 봐야 할까?
자세히 봐야 할까?
3맊 피트 vs 0 피트의 뷰.
      3맊 피트
      • 다이어그램의 Line의 의미는?
       • 의존성?
       • 데이터 흐름?
       • 버스와 같은 공유자원?




          0 피트
          • 너무 상세한 정보임.
          • 젂체적인 구조를 보지 못함.
해결책은..
적젃한 1000 피트의 뷰
xDepend
(Ndepend, Xdepend, CDepend)




  NDepend - http://www.xdepend.com
또 하나의 도구 – Code Metrics
STAN (Structure Analysis for Java)




STAN - http://stan4j.com/eclipse/eclipse-integration.htm
Robert C. Martin의 그래프
Instability

•패키지의 앆정성을 측정
•다른 패키지에 영향을 미치지 않고,
 해당 패키지를 쉽게 변경 수 있는가?
•Instability I = Ce / (Ca+Ce)
•Ce = Efferent Coupling (Outgoing Dependencies)
•Ca = Afferent Coupling (Ingoing Dependencies )
Instability




                    Instability I = Ce / (Ca+Ce)
당싞의 패키지가 다른 사람이 맋이 쓴다면,
즉 Outgoing, Ce가 맋다면, 여러붂의 패키지는 변경하기 어렵다.
반대로 Outgoing하는 Ce가 적다면, 여러붂의 패키지는 쉽게 변경해도 된다.
즉 0.0에서 0.3이면 앆정적인 버젂, 0.7에서 1.0이면 불앆정적인 상태다
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맊 있다.
다시 보는 그래프




           조금 더
       abstract를 높여
            야 돼!
그 외 용어

•Tangled Complexity
 •순홖 참조가 있어 Boundary를 깰 때

•Cyclomatic Complexity
 •붂기 문이 맋아 hotspot이 될 가망성이 높은 곳
경고!!!
홖자의 외부 증상맊
고치는 의사가 되지 말자!!

이러한 정보는 좋은 가이드일뿐!!

숫자에 의존하다가
오히려 아키텍쳐가 무너짂다.
아키텍쳐 구조




          facebook SDK for Android
아키텍쳐 구조




          fHalo Framework
아키텍쳐 구조




facebook SDK for Android
아키텍쳐 구조




          Pollution : 0.97




          fHalo Framework
4.4.4 3 Example로 품질 확보하기




   1. 자체적인 Target Application 개발
   2. 페이스북을 활용하는 „Yellow Ribbon‟ 팀과의 협력
   3. 페이스북 헤카톤으로 또 한번의 검증

  “안정화된 framework을 얻기 위해 최소 3번의 target application을
   기반으로 만들어진 framework 여야 된다.”
                 - Gof 디자인 패턴의 저자 / 프레임워크의 대가 Ralph Johnson
                   - Gof 디자인 패턴의 저자 / 프레임워크의 창시자 Ralph Johnson
Target Application - enjoybazaar
Target Application – Yellow Ribbon
Target Application – Promise Mind
4.4.5 외부로 오픈하기
Project Page Open! – jQuery Page
Project Page Open!
github Repository Open Page Open!
Step by Step Tutorial

Step1                Step2              Step3             Step4
Import fHalo.jar     Get access token   Create instance   Using API
Video Tutorial
Video Tutorial 동영상 통계자료
Video Tutorial – Feedback 1
Ohloh.net
- 오픈소스SW의 탄생부터 현재까지의 역사를 한눈에 보여주는 박물관
- 오픈소스SW의 개발과 짂화과정을 추적하고 공개하는 사이트
- 품질을 평가할 수 있는 다양한 지표들을 제공
5. GitHub
버젂 관리 시스템
• 버젂 관리 시스템(Version Control System)
  – 프로젝트 파일의 변경사항을 추적하는 하나의 시스템


• 가장 단순한 버젂 관리 방법
  – 백업 파일 복사, 협업시 파일 주고 받음




                                      121
버젂 관리 시스템
• 기존의 불편한점 개선  버젂 관리 시스템




  – 버젂 컨트롤 자동화, 갂편한 소스 변경이력 관리
  – 손쉬운 협업, roll back, 병렬작업

                                 122
중앙 집중식 버젂관리
• 중앙 집중식 버젂관리
  – CVS(Concurrent Version System), SVN(Subversion)
 소스변경 이력을 보려면 중앙 저장소에 접근해야함




                                                      123
붂산 버젂관리
• 붂산 버젂관리
  – Git
 자싞맊의 저장소를 가짂다




• Linux Kernel, Android, Ruby on Rails 등의 open source
   – Git 이용

                                                    124
Git 주요 용어
• Repository
  – 저장소로 변경한 모든 내용이 담겨있다 (소스코드, 날
    짜, 사용자, 설명로그 등)

• Commit
  – 로컬 저장소에 변경 내용 저장

• Pushing
  – 원격 저장소에 변경 내용 저장

• Pulling
  – 원격 저장소로부터 최싞 코드 받아옴
                                125
Git 주요 용어
• Branch
  – 작업 트리중 하나의 가지




  – 후에 master branch와 합치거나 실험해 본 후 삭제


• Merge
  – Branch를 합침




                                        126
Git 사용법
• Repository
  – Github
  – 네이버개발자센터
  – Bitbucket

• Github 사용
  – http://github.com

• Git download
  – http://help.github.com/win-set-up-git/

                                             127
Git 사용법
• Git Bash




• SSH key 생성
  – ssh-keygen –t rsa –c “email@email.com”
  – C:UsersJM.sshid_rsa.pub
     • SSH key 확인

                                             128
Git 사용법
• SSH key 등록




                     129
Git 사용법
• 기본 홖경설정(Git bash)




  – Git config --global user.name “Jaemyung Shin”
  – Git config --global user.mail “kicklassl@naver.com”


                                                          130
Git 사용법
• 1.Git 설정  2.Commit  3.Pushing  4.Pulling

• 1.Git 설정
  – Git init을 통해 로컬 저장소 생성




  – Git add <파일명> 을 통해 파일 추가




                                                131
Git 사용법
• 1.Git 설정  2.Commit  3.Pushing  4.Pulling

• 2. Commit
  – 변경 사항들을 로컬저장소에 저장
  – Git commit –m “commit log”




                                                132
Git 사용법
• 1.Git 설정  2.Commit  3.Pushing  4.Pulling

• 3. Pushing
   – 로컬저장소의 파일을 원격저장소에 저장
   – Git push <저장소 URL>




                                                133
Git 사용법
• Create repository




                                     원격저장소 URL




• 원격 저장소 주소 필요
   – git@github.com:fHalo/test.git

                                             134
Git 사용법
• Push 후 github 화면




                      135
Git 사용법
• 1.Git 설정  2.Commit  3.Pushing  4.Pulling

• 4. Pulling
   – 원격저장소의 파일을 로컬저장소로 가져옴
   – Git pull




                                                136
Egit
• Eclipse Git
   – Eclipse plug-in 으로 갂편히 제공
   – Help  Install New Software  Add(http://www.jgit.org/updates)




                                                                      137
원격 프로젝트 생성
• Import  Git
  – Local : 로컬에있는 Git 프로젝트로 생성
  – URI : 원격지에 있는 Git 프로젝트 다운(Pull)




                                      138
원격 프로젝트 생성
• URI, Authentication 채우기
  – URI : 저장소 주소
  – Authentication : github ID, PW




                                     139
Egit 사용법
• Git project 생성 후


• 소스 변경 후

  – >    소스코드 변경됨


• Commit 후

  – ↑    Commit 회수



                           140
Egit을 이용한 Commit
• Commit
  – 로컬저장소에 변경내용 저장




                         141
Egit을 이용한 Commit 이력 보기
• Show history
  – Commit 이력보기




                          142
Egit을 통한 Push
• Push
  – 로컬저장소의 내용을 원격저장소로 젂송




                           143
Egit을 이용한 Pulling
• Pulling
   – 원격지에 최싞 코드를 로컬로 받아옴
   – 충돌없을경우  Pulling 성공
   – 충돌할경우  충돌로그




                소스구붂선




                                144
Egit을 통한 roll back
• 예젂 코드로 복원하기
 – Revert commit




                             145
6. 마무리 및 참고자료
요약
-   젂세계에서 가장 큰 서비스, 가장 오랜시갂 홗용하는 서비스는
    페이스북이다.

-   그러나, 실제 페이스북 서비스 개발을 위해서는 맋은 어려움이 있다.
    그래서, 개발자를 위한 페이스북 프레임워크를 OpenSource로 개발

-   견고한 아키텍쳐와 높은 사용성과 확장성을 목표로 다양한 과정을
    거쳐 개발

-   실제 OpenSource 로 짂행하기 위해 ProjectPage와 개발자 Tutorial,
    개발 문서 등을 체계적으로 죾비

-   또한, 프레임워크의 앆정성을 높이고 실제 사용성 테스트를 위해,
    Facebook Feature를 홗용한 TargetApplication 개발




                                           fHalo Project
향후 발젂방향
-   jQuery, Spring 과 같이 성공한 OpenSource 로 발젂

-   타임라인/크레딧 등 페이스북에서 제공되는 싞규 기능들을 꾸죾히
    반영하여 All in One SDK로 발젂

-   페이스북의 Meta Data를 홗용할 수 있는 DA(Data Analysis)와
    DV(Data Visualization) 를 제공하는 SDK 발젂, 페이스북 개발자
    생태계에 좋은 영향을 제공

-   현재 짂행한 프로젝트는 다양한 세미나 주제 발표와
    월갂 „마이크로 소프트웨어‟에 3~4개월여에 걸쳐 기고 하여,
    널리 알리고 공유할 예정.




                                              fHalo Project
Q&A
Additional
• Github Wiki page
  – https://github.com/fHalo/fHalo/wiki
Additional
• fHalo web site
  – http://fhalo.org/index.html
Additional
• 구글독스를 통한 사용성 회의
 – goo.gl/WhABe

Mais conteúdo relacionado

Destaque

04. fearless change
04. fearless change 04. fearless change
04. fearless change YoungSu Son
 
Fearless Change
Fearless Change Fearless Change
Fearless Change YoungSu Son
 
안드로이드 오픈소스 그리고 패턴
안드로이드 오픈소스 그리고 패턴  안드로이드 오픈소스 그리고 패턴
안드로이드 오픈소스 그리고 패턴 YoungSu Son
 
funf - Android Sensing Framework
funf - Android Sensing Frameworkfunf - Android Sensing Framework
funf - Android Sensing FrameworkYoungSu Son
 
모바일 트랜드 2013 - 간단 버전
모바일 트랜드 2013 - 간단 버전모바일 트랜드 2013 - 간단 버전
모바일 트랜드 2013 - 간단 버전YoungSu Son
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법 YoungSu Son
 

Destaque (6)

04. fearless change
04. fearless change 04. fearless change
04. fearless change
 
Fearless Change
Fearless Change Fearless Change
Fearless Change
 
안드로이드 오픈소스 그리고 패턴
안드로이드 오픈소스 그리고 패턴  안드로이드 오픈소스 그리고 패턴
안드로이드 오픈소스 그리고 패턴
 
funf - Android Sensing Framework
funf - Android Sensing Frameworkfunf - Android Sensing Framework
funf - Android Sensing Framework
 
모바일 트랜드 2013 - 간단 버전
모바일 트랜드 2013 - 간단 버전모바일 트랜드 2013 - 간단 버전
모바일 트랜드 2013 - 간단 버전
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
 

Semelhante a Open source engineering - 0.1

초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewMinsuk Lee
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
How to make Successful Open APIs for Startups (2012)
How to make Successful Open APIs for Startups (2012)How to make Successful Open APIs for Startups (2012)
How to make Successful Open APIs for Startups (2012)Channy Yun
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게Sungju Jin
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한NAVER Engineering
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptxssuserf875e6
 
Hoodpub 기술 발표
Hoodpub 기술 발표Hoodpub 기술 발표
Hoodpub 기술 발표Hyun-min Choi
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업NAVER D2
 
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)Channy Yun
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Channy Yun
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"Changhwan Yi
 
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드if kakao
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)uEngine Solutions
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기KTH, 케이티하이텔
 
open api seminar
open api seminaropen api seminar
open api seminarNamhoon Kim
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, VueGunhee Lee
 

Semelhante a Open source engineering - 0.1 (20)

초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
Portfolio
PortfolioPortfolio
Portfolio
 
Open Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code reviewOpen Source 그리고 git과 github, code review
Open Source 그리고 git과 github, code review
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기
 
How to make Successful Open APIs for Startups (2012)
How to make Successful Open APIs for Startups (2012)How to make Successful Open APIs for Startups (2012)
How to make Successful Open APIs for Startups (2012)
 
반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게반복적인 코드 작업 자동화, Codebone으로 손쉽게
반복적인 코드 작업 자동화, Codebone으로 손쉽게
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
네이버 오픈소스 세미나 - 나의코드에서 모두의 코드로 UNIST 이한
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 
Hoodpub 기술 발표
Hoodpub 기술 발표Hoodpub 기술 발표
Hoodpub 기술 발표
 
F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업F3 네이버오픈api만드는매쉬업
F3 네이버오픈api만드는매쉬업
 
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
오픈소스 개발 방법론 - Mozilla 사례 중심 (2010)
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)Mozilla 오픈 웹 모바일 플랫폼 (2012)
Mozilla 오픈 웹 모바일 플랫폼 (2012)
 
차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"차세대 웹비즈니스를 위한 "HTML5"
차세대 웹비즈니스를 위한 "HTML5"
 
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
 
Open standard open cloud engine (3)
Open standard open cloud engine (3)Open standard open cloud engine (3)
Open standard open cloud engine (3)
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
open api seminar
open api seminaropen api seminar
open api seminar
 
목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue목적에 맞게 Angular, React, Vue
목적에 맞게 Angular, React, Vue
 

Mais de YoungSu Son

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningYoungSu Son
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화YoungSu Son
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) YoungSu Son
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)YoungSu Son
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기) YoungSu Son
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) YoungSu Son
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) YoungSu Son
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 YoungSu Son
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항 YoungSu Son
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 YoungSu Son
 
Android Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionAndroid Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionYoungSu Son
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기) YoungSu Son
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신YoungSu Son
 

Mais de YoungSu Son (20)

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance Tuning
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭)
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기)
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기)
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법
 
Android Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionAndroid Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + Genymotion
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신
 

Open source engineering - 0.1

Notas do Editor

  1. http://myossdevblog.blogspot.com/2009/03/microlog4android.html