SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
카피캣으로 시작하는 오픈소스
ash84
ash84
• Developer
• sh84.ahn@gmail.com
• ash84.net
• @sh84ahn
• github.com/AhnSeongHyun
2
이런 프로젝트를 하고 있습니다.
• Plate : API Documentation Tool based on markdown.
• https://github.com/Plate-Project/plate
• http://plate-project.github.io/
3
개발하게 된 계기
• 입사 3개월차(신입은 아님), 한창 의욕만 앞설 시기
• API 작업 전, 설계 초안 작업과 함께 API 문서화 툴 조사
• 결제 관련 API 사이트들을 주로 참고
4
more test
• Swagger
• http://petstore.swagger.io/
• I/O Docs
• https://github.com/mashery/iodocs
• http://blog.outsider.ne.kr/990
5
more doc
6
• Slate
• https://github.com/tripit/slate
• Atlassian/Confulence
Stripe API Docs
굳굳굳
• 기존방식 - *.docx, *.xlsx + sample code
• asp.net_example.zip, jsp_example.zip
• 업데이트가 쉽지 않다.
8
굳굳굳
• Stripe 같은 API 문서화 사이트를 이용하면..
• API 를 실제 코드와 함께 볼수 있다는 장점.
• API를 업데이트 하더라도, 좀 더 쉽게 문서와 코드를 같이 업데이트 가능.
9
답정너 - slate
• slate 로 정하고 살펴보기 시작.
• 어엇, 이건 루비. 루비는 사랑입니다.
10
분석
• 구성
• middleman : static site generator based Ruby
• layout.erb - 템플릿
• index.md - API문서
• 결국..
1. index.md 을 변환
2. middleman 을 이용해서 layout.erb 에 넣고
3. HTML 로 출력.
11
conv2python
12
• 좀더 익숙한 언어와 환경 사용. 사실은 slate 돌려보다 지쳐서…
• 팀내 주 언어로 파이썬을 밀고 있는 상태
• 루비와 가장 비슷한?
conv2python
13
• Middleman TO Flask
• jinja2 template
• layout.erb to /templates/index.html
conv2python
14
• markdown to html
• markdown : 변환 및 다양한 확장 모듈 제공
• fence_codes : markdown code block to <pre></pre>
• tables : markdown table syntax to <table></table>


import markdown

return markdown.markdown(md_text, extensions=["fenced_code", "tables"])

conv2python
15
```python

codes

```



```java 

codes

```
<pre class="highlight python">

codes

</pre>

<pre class="highlight java">

codes

</pre>
markdown html
conv2python
16
• Code Syntax Highlighting
• pygments : Python syntax highlighter
• 다양한 프로그래밍 & 마크업 언어 문법 지원


from pygments import highlight

from pygments.lexers import PythonLexer

from pygments.lexers import JavaLexer

from pygments.formatters import HtmlFormatter



highlighted = highlight(code, PythonLexer(), HtmlFormatter())

highlighted = highlight(code, JavaLexer(), HtmlFormatter())

17
변환하고, 넣으면, 끝.
slate-flask 로 github 공개
• 이유 :
• 아까움.
• 나처럼 Ruby 에 익숙하지 않은 사람도 있지 않을까.
공개 하나마나. 오픈만 된.
• 쓸곳을 찾아보자. 아니 내가 쓰자. 알바하는 서버API 문서화에 적용.
• 써보니, 안좋은 부분이 보이기 시작.
18
기능추가
• 멀티 마크다운 기능 추가
• watchdog 기능 추가
19
멀티 마크다운 기능
• 정형화된 디렉토리가 아닌 사용자가 경로를 지정.
• 목차 상에 표시되는 순서도 정하도록 지정.
• index.json
{

"ORDER":

[

"Introduction.md",

"Signup.md",

"Signin.md", 

"Notice.md", 

"Notice.jp.md", 

"Notice.fr.md"

]

}




20
• 만약, API 문서가 수정된다면?
• 서버를 끈다.
• API 문서를 고친다.
• 다시 서버를 올린다.
• 문서를 수정하면 바로 서버가 자동으로 인식해서 내용을 바꿔주자.
21
watchdog
• 서버로 띄우면, 바로 감시 시작.
• 문서가 변경되면, 다음 요청시 다시 html 만들기 수행
22
EMOCON 2015 F/W 준비하면서 추가한 내용들.
• slate-flask to Plate-Project/plate : organization
• postman2md
• multi-language searching
• static html
23
서버 API 개발시의 패턴
• 사용한 테스팅을 문서로 만들수 있지 않을까?
postman2md
• postman collection json 을 markdown 으로 변환
• 변환된 markdown 을 문서화에 이용(plate에 이용)
• postman collection json with plate
24
testing
API
Design
docdev
검색의 문제 : lunr.js 이용
• 영어만을 지원하는 문제, 다국어 지원의 이슈
• lunr-languages 를 plate 에 연동, 몇 개의 다국어 검색 가능.
• 현재 한국어가 없어서 lunr.kr.js 를 만들고 있는 중
25
static html
• 사실 크게 생각하지 않았던 기능.
• github.io 같은 곳에 올리거나 Apache에 올린다면
• 원래 Flask 는 jinja2 template 를 이용, 변환된 HTML 을 저장
• http://plate-project.github.io/
26
앞으로의 계획
• 에디터
• 테스팅부분의 추가 : slate에도 꾸준한 이슈
• 카피캣의 탈피 - Front-End
• 조금은 다른 방향으로의 API Documentation Tool을 만들고 싶다.
27
오픈소스 시작하기
• 코드줍기 vs. 카피캣
• 장단점이 있는 듯, 개인의 성향
28
어떻게 계속 유지할수 있는가?
• 한번 시작한것을 계속 유지하는것은 쉽지가 않음.
• 특히 카피캣은 더 그런듯.
• 써보고 계속 개선할 거리를 만드는 것이 자극이 됨.
• 지속적으로 할수 있는것을 선택하길.
29
지켜보고 있기.
30
• issue, pull request
• 필요한 기능들을 찾아내는 중.
어떻게 좋은 오픈소스가 될수 있을까?
• fork count? star?
• 여전히 모르겠음. 숙제
• 찾아가는 과정
31
For me
• 지속적으로 개발할 거리, daily commit
• 관련된 다양한 오픈소스에 대한 접근.
32
Thank you

Mais conteúdo relacionado

Semelhante a 카피캣으로 시작하는 오픈소스

Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Han Sung Kim
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서jungseob shin
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개태준 문
 
github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기newdeal2
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting승빈이네 공작소
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기Youngjae Kim
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개Hyoungjun Kim
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debuggingJongwon Han
 
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)삵 (sarc.io)
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Juwon Kim
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)Sang Don Kim
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들Sewon Ann
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍Chris Ohk
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
Aws serverless services
Aws serverless servicesAws serverless services
Aws serverless servicesDaniel Jung
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
패키지 매니저 골라골라! Cocoapod, Carthage, SPM
패키지 매니저 골라골라! Cocoapod, Carthage, SPM패키지 매니저 골라골라! Cocoapod, Carthage, SPM
패키지 매니저 골라골라! Cocoapod, Carthage, SPMhyunho Lee
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현병태 정
 

Semelhante a 카피캣으로 시작하는 오픈소스 (20)

Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료Django로 배우는 쉽고 빠른 웹개발 study 자료
Django로 배우는 쉽고 빠른 웹개발 study 자료
 
GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서GitHub Pull Request 간단 사용 설명서
GitHub Pull Request 간단 사용 설명서
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
 
github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기github actions kubernetes 설치&운영하기
github actions kubernetes 설치&운영하기
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개오픈소스 프로젝트 따라잡기_공개
오픈소스 프로젝트 따라잡기_공개
 
20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging20170813 django api server unit test and remote debugging
20170813 django api server unit test and remote debugging
 
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
 
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
 
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
[Td 2015]박애주의 office 365, 멀티플랫폼과 사랑에 빠지다(최한홍)
 
안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들안드로이드 개발에 유용한 도구들
안드로이드 개발에 유용한 도구들
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
Aws serverless services
Aws serverless servicesAws serverless services
Aws serverless services
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
패키지 매니저 골라골라! Cocoapod, Carthage, SPM
패키지 매니저 골라골라! Cocoapod, Carthage, SPM패키지 매니저 골라골라! Cocoapod, Carthage, SPM
패키지 매니저 골라골라! Cocoapod, Carthage, SPM
 
Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현Service Worker 를 이용한 
Offline Web Application 구현
Service Worker 를 이용한 
Offline Web Application 구현
 

Mais de SeongHyun Ahn

MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 SeongHyun Ahn
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 SeongHyun Ahn
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법SeongHyun Ahn
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지SeongHyun Ahn
 
파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 SeongHyun Ahn
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄SeongHyun Ahn
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄SeongHyun Ahn
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리SeongHyun Ahn
 
실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARDSeongHyun Ahn
 
Pycon APAC 2016 후기
Pycon APAC 2016 후기Pycon APAC 2016 후기
Pycon APAC 2016 후기SeongHyun Ahn
 
Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606SeongHyun Ahn
 
디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴SeongHyun Ahn
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장SeongHyun Ahn
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 

Mais de SeongHyun Ahn (17)

MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선 MQTT 를 이용한 주문시스템 개선
MQTT 를 이용한 주문시스템 개선
 
파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄 파이썬 웹프로그래밍 1탄
파이썬 웹프로그래밍 1탄
 
파이썬 기본 문법
파이썬 기본 문법파이썬 기본 문법
파이썬 기본 문법
 
파이썬 모듈 패키지
파이썬 모듈 패키지파이썬 모듈 패키지
파이썬 모듈 패키지
 
파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄
 
파이썬 유용한 라이브러리
파이썬 유용한 라이브러리파이썬 유용한 라이브러리
파이썬 유용한 라이브러리
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD실용주의 머신러닝 CNN MNIST TENSORBOARD
실용주의 머신러닝 CNN MNIST TENSORBOARD
 
Pycon APAC 2016 후기
Pycon APAC 2016 후기Pycon APAC 2016 후기
Pycon APAC 2016 후기
 
Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606Introduction of scrum 안성현 20120606
Introduction of scrum 안성현 20120606
 
디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴디자인 패턴 데코레이터 패턴
디자인 패턴 데코레이터 패턴
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 

카피캣으로 시작하는 오픈소스

  • 2. ash84 • Developer • sh84.ahn@gmail.com • ash84.net • @sh84ahn • github.com/AhnSeongHyun 2
  • 3. 이런 프로젝트를 하고 있습니다. • Plate : API Documentation Tool based on markdown. • https://github.com/Plate-Project/plate • http://plate-project.github.io/ 3
  • 4. 개발하게 된 계기 • 입사 3개월차(신입은 아님), 한창 의욕만 앞설 시기 • API 작업 전, 설계 초안 작업과 함께 API 문서화 툴 조사 • 결제 관련 API 사이트들을 주로 참고 4
  • 5. more test • Swagger • http://petstore.swagger.io/ • I/O Docs • https://github.com/mashery/iodocs • http://blog.outsider.ne.kr/990 5
  • 6. more doc 6 • Slate • https://github.com/tripit/slate • Atlassian/Confulence
  • 8. 굳굳굳 • 기존방식 - *.docx, *.xlsx + sample code • asp.net_example.zip, jsp_example.zip • 업데이트가 쉽지 않다. 8
  • 9. 굳굳굳 • Stripe 같은 API 문서화 사이트를 이용하면.. • API 를 실제 코드와 함께 볼수 있다는 장점. • API를 업데이트 하더라도, 좀 더 쉽게 문서와 코드를 같이 업데이트 가능. 9
  • 10. 답정너 - slate • slate 로 정하고 살펴보기 시작. • 어엇, 이건 루비. 루비는 사랑입니다. 10
  • 11. 분석 • 구성 • middleman : static site generator based Ruby • layout.erb - 템플릿 • index.md - API문서 • 결국.. 1. index.md 을 변환 2. middleman 을 이용해서 layout.erb 에 넣고 3. HTML 로 출력. 11
  • 12. conv2python 12 • 좀더 익숙한 언어와 환경 사용. 사실은 slate 돌려보다 지쳐서… • 팀내 주 언어로 파이썬을 밀고 있는 상태 • 루비와 가장 비슷한?
  • 13. conv2python 13 • Middleman TO Flask • jinja2 template • layout.erb to /templates/index.html
  • 14. conv2python 14 • markdown to html • markdown : 변환 및 다양한 확장 모듈 제공 • fence_codes : markdown code block to <pre></pre> • tables : markdown table syntax to <table></table> 
 import markdown
 return markdown.markdown(md_text, extensions=["fenced_code", "tables"])

  • 15. conv2python 15 ```python
 codes
 ```
 
 ```java 
 codes
 ``` <pre class="highlight python">
 codes
 </pre>
 <pre class="highlight java">
 codes
 </pre> markdown html
  • 16. conv2python 16 • Code Syntax Highlighting • pygments : Python syntax highlighter • 다양한 프로그래밍 & 마크업 언어 문법 지원 
 from pygments import highlight
 from pygments.lexers import PythonLexer
 from pygments.lexers import JavaLexer
 from pygments.formatters import HtmlFormatter
 
 highlighted = highlight(code, PythonLexer(), HtmlFormatter())
 highlighted = highlight(code, JavaLexer(), HtmlFormatter())

  • 18. slate-flask 로 github 공개 • 이유 : • 아까움. • 나처럼 Ruby 에 익숙하지 않은 사람도 있지 않을까. 공개 하나마나. 오픈만 된. • 쓸곳을 찾아보자. 아니 내가 쓰자. 알바하는 서버API 문서화에 적용. • 써보니, 안좋은 부분이 보이기 시작. 18
  • 19. 기능추가 • 멀티 마크다운 기능 추가 • watchdog 기능 추가 19
  • 20. 멀티 마크다운 기능 • 정형화된 디렉토리가 아닌 사용자가 경로를 지정. • 목차 상에 표시되는 순서도 정하도록 지정. • index.json {
 "ORDER":
 [
 "Introduction.md",
 "Signup.md",
 "Signin.md", 
 "Notice.md", 
 "Notice.jp.md", 
 "Notice.fr.md"
 ]
 } 
 
 20
  • 21. • 만약, API 문서가 수정된다면? • 서버를 끈다. • API 문서를 고친다. • 다시 서버를 올린다. • 문서를 수정하면 바로 서버가 자동으로 인식해서 내용을 바꿔주자. 21
  • 22. watchdog • 서버로 띄우면, 바로 감시 시작. • 문서가 변경되면, 다음 요청시 다시 html 만들기 수행 22
  • 23. EMOCON 2015 F/W 준비하면서 추가한 내용들. • slate-flask to Plate-Project/plate : organization • postman2md • multi-language searching • static html 23
  • 24. 서버 API 개발시의 패턴 • 사용한 테스팅을 문서로 만들수 있지 않을까? postman2md • postman collection json 을 markdown 으로 변환 • 변환된 markdown 을 문서화에 이용(plate에 이용) • postman collection json with plate 24 testing API Design docdev
  • 25. 검색의 문제 : lunr.js 이용 • 영어만을 지원하는 문제, 다국어 지원의 이슈 • lunr-languages 를 plate 에 연동, 몇 개의 다국어 검색 가능. • 현재 한국어가 없어서 lunr.kr.js 를 만들고 있는 중 25
  • 26. static html • 사실 크게 생각하지 않았던 기능. • github.io 같은 곳에 올리거나 Apache에 올린다면 • 원래 Flask 는 jinja2 template 를 이용, 변환된 HTML 을 저장 • http://plate-project.github.io/ 26
  • 27. 앞으로의 계획 • 에디터 • 테스팅부분의 추가 : slate에도 꾸준한 이슈 • 카피캣의 탈피 - Front-End • 조금은 다른 방향으로의 API Documentation Tool을 만들고 싶다. 27
  • 28. 오픈소스 시작하기 • 코드줍기 vs. 카피캣 • 장단점이 있는 듯, 개인의 성향 28
  • 29. 어떻게 계속 유지할수 있는가? • 한번 시작한것을 계속 유지하는것은 쉽지가 않음. • 특히 카피캣은 더 그런듯. • 써보고 계속 개선할 거리를 만드는 것이 자극이 됨. • 지속적으로 할수 있는것을 선택하길. 29
  • 30. 지켜보고 있기. 30 • issue, pull request • 필요한 기능들을 찾아내는 중.
  • 31. 어떻게 좋은 오픈소스가 될수 있을까? • fork count? star? • 여전히 모르겠음. 숙제 • 찾아가는 과정 31
  • 32. For me • 지속적으로 개발할 거리, daily commit • 관련된 다양한 오픈소스에 대한 접근. 32