[JS] 14일 만에 GitHub 스타 천 개 받은 차트 오픈소스 개발기


:bar_chart: Re-usable, easy interface JavaScript chart library based on D3 v4+:chart_with_upwards_trend: 


billboard.js is a re-usable, easy interface JavaScript chart library, based on D3 v4+.

Documents

Playground

Play with the diverse option generating on the fly!

Supported chart types

Chart Types








1. 14일만에 GITHUB 스타 1K 받은    차트 오픈소스 개발기    박재성

2. 차트란 무엇인가?


3. 훗 차트, 너란녀석1) 데이터의 시각화 2) 차트 라이브러리? 1)의 구현을 위한 도구 그러나 차트의 적용은 무엇일까?  결국, 시각화가 기본이다. UI(디자인) + 인터렉션  구현(적용)이 관건


4. CHARTS ARE EVERYWHERE iOS 10  89% iOS 9  9% Earlier  2%


5. 차트 같은걸 끼얹나? 차트는 자주 접하지만, 개발은 그렇지 않다. 한번 개발(또는 경험)되더라도 지속적인  개선 요인이 별로 없어 경험 향상이 어렵다.

6. YOU, 차트 개발 해야함 몇 가지의 선택지들 직접 개발한다. 외부 라이브러리를 사용한다.  → 상용 or 오픈소스 어떤 기술을 사용할 것인가?  → Vector(SVG) or Bitmap(Canvas)


7. 그래, 직접 개발!Good Luck! 진심으로 행운을 빕니다.   

https://giphy.com/gifs/starwars-star-wars-force-3ohuPdEqZR8tDeuN3O


8. 역시, 외부 라이브러리!상용 or 오픈소스? 상용 → 결국 비용의 문제  라이센스 비용 부담 (ex. Highcharts 10 developer $3,320) 오픈소스 → 어떤 라이브러를 사용할 것인가?  결정의 어려움 (많은 고려요소 필요)

9. 다양한 차트 라이브러리어떤 것을 선택할 것인가?  [참고] https://bestof.js.org/tags/chart

10. 기술 선택 가이드 성능 중요(빠른 대용량 데이터 처리),  상대적으로 디자인은 덜 중요한 경우 → Canvas (비트맵) 디자인 및 요소별 커스터마이징,  다양한 해상도(Zoom) 중요 → SVG (벡터) [참고] SVG 대 캔버스: 선택 방법

11. 영역별 다른 관점, 디자인 보단 실시간 변화 표현 중요 대용량 트래픽의 실시간(realtime) 변화 확인 수치의 변화가 중요. 기본 디자인 사용에 문제 없음 관리도구 등에 적합. 소수의 참여자(admin)

12. 영역별 다른 관점, 엔드 유저대상, 다양한 디자인/UX 중요 주로 정적인 데이터의 시각화 디자인과 UX 적용의 유연성 필요 대규모의 불특정 사용자(엔드유저)를 대상

13. 그간 네이버에서의 차트서비스들마다 다른 라이브러리를 사용 그리고 그로 인한 다양한 문제

14. 문제들 기술적 know-how 축적 안됨 상용 라이브러리 사용시 비용 문제 경험이 누적되지 않아 차트 적용(디자인/개발)시,  매번 반복되는 리소스의 낭비

15. 물론, 처음엔 자체 개발 그러나, 성공적이진 못했다. 서비스 적용 이후, 메인터넌스 잘 안됨 개발 주체의 부재상황(이직 등)  또는 다른 서비스 개발 등으로 인한 지원 어려움 타 라이브러리 대비 범용성 부족

16. 그렇다면 오픈소스 사용은 어떨까? 지속적 업데이트, 기술적 트렌드 반영, 안정성 등을  기대할 수 있으니 합리적이지 않을까? 향후 오픈소스 업데이트 지속되지 않을 경우,  fork를 통한 유지 고려도 가능 공통된 라이브러리를 사용하면, 각각 다른 라이브러리 사용으로 인한 관리 및 기술경험 누적되지 않는 이슈 해결 기대 [참고] 그간 사용되었던 다양한 차트 라이브러리들:  ,  ,  ,  ,  , etc.NVD3 C3.js Chart.js Highcharts echarts

17. 직접 개발도 해봤고, 외부(상용/오픈)의 것도 사용해 봤으니 간접적인 형태로 접근해 보자 라이브러리의 발전은 생태계에 맡기자. 필요한 기능은 PR을 통해 해결 오픈소스는 일정 수준 검증 되었다. 다양한 문서, practice가 존재한다.

18. 그래서, 만들다. C3.JS 확장 라이브러리 개발

19. C3.JS 선정이유 가장 인기있는 D3.js 기반 한정 Popularity 비교:  → GitHub star, 써드파티 앱, StackOverflow 질문 수, etc. 간결한 인터페이스 풍부한 문서, 예제 등  → 구글검색 결과: C3.js(22만) Vs. NVD3(6만4천) 네이버 서비스들에서 이미 다수에서 사용 엔드 유저 대상이므로, 디자인/기능 커스터마이징 용이성 중요

20. 개발 시작 고난의 시작

21. 개발시 겪게 되는 문제들 커뮤니케이션 디자인 & 인터렉션 커스터마이징 그리고 또 그리고 수많은...

22. 커뮤니케이션나의 이름은 무엇 인가요?  차트 개발 경험이 많이 없는 경우, 부르는 명칭도 제각각

23. 디자인 가이드 각 요소들의 크기와 위치를 가이드에 맞춰주세요.

24. OMG! SVG TEXT I'm SVG text 텍스트 스타일링은 가능 <br> 같은거 안됨. 줄바꿈은 새로운 노드로 위치(via attributes) 여백 등의 조정이 어려움  → transform:translate 또는 <tspan> 사용

25. 모바일 환경 C3.js는 모바일 환경 미지원 Swipe 제스처를 통한 데이터 확인 UX 필요


26. 환경별 다른 이벤트 발생 터치하고 바로 떼었을 때


 iOS 11 (iPhone 7) touchstart → touchend → mouseover → mousemove → mouseout (포커스 이동되면 발생)

 Android 7 (Galaxy S8) touchstart → touchend → mouseover → mousemove → mousedown → mouseup → click → mouseout (포커스 이동되면 발생) http://jsbin.com/xiyara


27.   최소값y축 기반 값에 따른 up/down 표현 0 1 2 3 4 100,000 100,500 101,000 101,500 102,000 102,500 103,000 103,500 104,000 0 1 2 3 4 0 10,000 20,000 30,000 40,000 50,000 60,000 70,000 80,000 90,000 100,000 110,000 위의 차트는 모두 동일한 값을 표현하고 있습니다.

28. 데이터는 없지만, 데이터는 표현해야 한다? 데이터가 0인 경우,  표현이 되어야 할까? 안되어야 할까? 

29. C3+ C3.JS 확장 라이브러리를 만들다.

30. C3+? C3.js를 확장한 테마 형태의 디자인 차트 생성 C3.JS: 확장 + 기능 보완 + 테마 커스텀 축 지원 범례 템플릿 모바일 지원 테마를 통한 차트 생성 확장 옵션

31. 블로그/포스트 통계 적용[네이버 블로그] 블로그 통계가 새로워졌습니다! [네이버 포스트] 훨씬 좋아진 통계, 지금 제공합니다!

32. C3+ GOAL 매번 다른 기술/라이브러리를 다루는  반복적인 비용 제거 기본적 디자인(테마)을 활용해  커스터마이징(디자인)에 따른 비용 제거 기술적 경험 축적: SVG, D3, C3.js

33. BUT, 현실적 문제직면 장기적 관점에서, C3+ 발전을 위해 외부 공개 목표 하지만, 래퍼/애드온 형태의 지속적 발전과 효용성 의문 기반 라이브러리인 C3.js 지속성 의문 오픈소스의 발전에 기댈 수 있을 것이란 기대는  C3.js의 더딘 발전(또는 중단?)으로 위기 직면

34. Re-usable, easy interface JavaScript chart library based on D3 v4+

35. 차트를 만들어 봅시다.

36. STEP 1 파일을 로딩 합니다.<!-- D3.js를 로딩 --> <script src="https://d3js.org/d3.v4.min.js"></script> <!-- billboard.js와 기본 스타일을 로딩 --> <script src="billboard.js"></script> <link rel="stylesheet" href="billboard.css">

37. STEP 2 차트가 노출될  영역을 설정합니다. <div id="chart"></div>

38. STEP 3 옵션과 함께 차트를 생성합니다. Declarative API bb.generate({ bindto: "#chart", data: { columns: [ ["data1", 30, 200, 100, 400, 150, 250], ["data2", 100, 80, 130, 240, 350, 90], ["data3", 150, 120, 58, 135, 258, 159] ], type: "bar", colors: { data1: "#2acefd", data2: "#f87070", data3: "#1f77b4" }, labels: true } });

39. 짠! bar   line   spline   pie   gauge   area‑spline   step   donut   scatter 30 200 100 400 150 250 100 80 130 240 350 90 150 120 58 135 258 159 0 1 2 3 4 5 0 50 100 150 200 250 300 350 400 450 data1 data2 data3

40. 커스터마이징150개 이상의   제공 SVG 노드: 필요한 경우, 직접 핸들링 가능  CSS로 스타일링 가능  다양한 옵션

41. THE UNKNOWN WAY TO FORK에서 공개까지

42. C3.JS 프로젝트 참여 시도원 개발자 및 커미터에게 메일을 통한 문의 

43. 일단 활동하자PR도 보내고 이슈들에 대한 답변도 하고 [참고] https://github.com/c3js/c3/issues/1924#issuecomment-271224192

44. 그렇게 몇 주가 흘렀지만 메일 회신도 없고, 프로젝트 ACTIVITY도 딱히 없는 상태...

45. 공개적 문의issue를 등록해 공개적으로 프로젝트 유지 문의 [참고] https://github.com/c3js/c3/issues/1965

46. 그리고, 그 다음날

47. 그래, FORK 하자'향후 오픈소스의 업데이트 지속 안될 경우,  fork를 통한 유지'의 명제 당면한 C3.js의 미해결 과제들: D3 최신버전 v4+ 미지원 모바일 환경에 대한 지원 부족 오래된 개발 스타일 코드 (ES3) SVG polyfill 제거 등등...

48. 합리성, 당위성 & 신뢰 Fork 한다고 해서 사용자가 오진 않는다. 기존 커뮤니티에 당위성이 제시 필요 과연 이 사람(개발자)이 믿을만 한가?

49. THE JOURNEY GOING FROM D3 V3 TO V4  WITHIN TWO MONTHS

50. OOPS~, D3 V4v3 → v4: Breaking Changes  공식 문서( ) 있으나,  마이그레이션 가이드 없고 만들지 않을거임.  Changes in D3 4.0 [참고]   https://github.com/d3/d3/issues/2893 D3 V4 - What's new?

51. D3 V4로 업그레이드변경된 모듈에 대한 목록을 모두 작성  v3 v4 d3.time.scale d3.scaleTime d3.svg.line() d3.line d3.behavior.drag d3.drag ... 모듈의 behavior 변경되어, 기존과 유사한 것도 있지만  다르게 처리되는 것들이 대다수 이전 버전과 변경된 문서를 읽고 비교하고, 테스트 하고...

52. 그외 작업들 차트 생성 흐름에 따른 오류들의 순차적 해결/변환 ES3 → ES6로 전환 병행 및 개발 환경 변경 API 문서화 ( ) 테스트 코드 업데이트(d3 v4 호환) 및 커버리지 개선 JSDoc

53. RELEASE 3주전 YAY~!, 이제 끝이 보인다.

54. 어느 날, 갑자기 두둥~ 갑작스러운 C3.js 차기 릴리즈 계획과 새로운 커미터 추가 [참고] https://github.com/c3js/c3/issues/2033

55. 고민이미 많은 진전을 통해 릴리즈를 앞둔상황 계획만을 통한 발전에 대한 의문 커미터 추가 후에도 활발한 활동 없어,  빠른 시일 내 D3 v4 지원 어렵다는 판단 계획대로  릴리즈 하자.

56. 오픈소스 네이밍원래는 C3+ 2.0으로 계획, 그러나 C3.js 연관성의 부정적 의견 'billboard'는 음악 차트 의미는 다르지만 '차트'를 연관 오랫동안 친숙한 이름 FE 프로젝트에서는 기 등록된 npm 모듈명 확인 필요 [참고] Open Source Project Name Checker

57. RELEASE!2017년 6월8일, v1.0.0 공개

58. 그러나, 공개한다고 갑자기 관심과 사용자가 몰려오진 않는다. 홍보전략 필요

59. 직접 발로뛰기 다수의 'ECHO' 사이트에 등록하기 JavaScript Live Echo JS Hacker News 많은 곳에서 해당 사이트에 등록된 정보를 활용, 재전파 한다.

60. 뉴스레터 소개 요청하기 JavaScript Weekly [참고] FE 관련 뉴스레터는 사실, 한 곳에서 발행  https://cooperpress.com/

61. 유력 매체 소개     JavaScript Weekly 소개 JavaScript Daily 소개

62. GITHUB TRENDING!JavaScript 언어부문 3위 기록 [참고] https://github.com/trending/javascript

63. GITHUB STAR 공개 후, 첫 6일간 700개 14일 후, 1,000개 도달! Star의 가치는?  cdnjs 등록은 최소 200개 요구됨 Vuejs도 첫 6일간 615개 How I Got From 0 to 1 000 Stars on GitHub in Three Months

64. THIRD-PARTY APPS!Angular, React, R, Web Components 등의  자발적인 프로젝트들의 등장 [참고] https://github.com/naver/billboard.js/wiki/Third-party-applications

65. 지속적 성장월 npm 다운로드 수 June 370 July 479 Aug 862 Sep 1,124 [참고] npm-stat: billboard.js, 2017.6.8 ~ 9.30

66. 충실한 문서문서 작성은 아주, 아주 중요하다. 대표 사이트:  C3.js에서 마이그레이션 하기 가이드 잘 작성된 API 문서 왜 Fork 하게 되었나? Readme https://naver.github.io/billboard.js/

67. 80여개의 풍부한 예제많은 예제는 '무엇'이 가능 또는 할수 있는지 보여줄 수 있다.  https://naver.github.io/billboard.js/demo/

68. 이제 부터가 시작 Star의 수는 보다 발전할 수 있도록 도와주는 역할 이슈에 대한 빠른 대응 필요 신규 기능과 버그에 대한 처리 을 통해 향후 방향에 대한 정보제공Roadmap

69. 사용자를 위한 지속적 기능 추가

70. PLAYGROUND온라인에서 바로 옵션들을 수정하고 확인  [참고] https://naver.github.io/billboard.js/playground/

71. 신규 옵션들과 문서 C3+ 경험들을 통한 신규 옵션  꾸준한 문서 업데이트 API는 한번 작성되면 끝이 아니다. 정확한 의미와 동작을 기술 그리고 지속적 업데이트

72. 오픈소스의 중요한 요소들 안정성, 충분한 문서 그리고 책임감 [참고] http://opensourcesurvey.org/2017/

73. 오픈소스의 어려움누군가의 노력이 대가없이 제공되는 것.  그러나, 쉽게 비난 받기도 한다.   https://twitter.com/spf13/status/907403135592878080

74. 의연하게 대처하기 You shouldn’t let strangers on the internet negatively affect your mood or your drive  ...  The trolls feed on your  annoyance and discourse.  ― Sindre Sorhus [참고]   Between the Wires: An interview with open source developer Sindre Sorhus 1,139 npm Packages

75. WHY DO OPEN SOURCE? 세상에서 내가 도움 받은 것에 대해  다시 기여하는 의미있고 가치있는 행동 [참고]   네이버 오픈소스 가이드 GitHub Open Source Guides

76. SPECIAL THANKSMASAYUKI TANAKA AND ALL OF THE C3.JS CONTRIBUTORS,  FOR YOUR GREAT EFFORTS AND WORKS TO THE COMMUNITY!

77. 고맙습니다.  Thank You.  Gracias.  https://github.com/naver/billboard.js/



...

Posted by 홍반장水 홍반장水


Awesome Reinforcement Learning

A curated list of resources dedicated to reinforcement learning.

https://github.com/aikorea/awesome-rl

We have pages for other topics: awesome-rnnawesome-deep-visionawesome-random-forest

Maintainers: Hyunsoo KimJiwon Kim

We are looking for more contributors and maintainers!

Table of Contents

Codes


Posted by 홍반장水 홍반장水

깃허브에서 인기 높은 구글의 오픈소스 프로젝트 10종

1.Angularjs

2. 머티리얼 디자인 아이콘

3.머티리얼 디자인 라이트

4.‘고’ 언어

‘고’는 2009년 구글이 만든 프로그래밍 언어다. C언어의 대안 언어로도 평가되고 있으며, 현재 1.4버전까지 나왔다. 고 언어의 ‘고루틴(goroutine)’을 이용하면 보다 쉽게 동시성 프로그래밍을 할 수 있다. 복잡하게 작성하고 디버깅도 어려웠던 병렬처리도 고 언어에서는 편한 방법으로 처리할 수 있다. 빌드 속도가 빠른 것도 고의 장점이다. 또한 고는 헤더 파일 등을 통해 의존 관계를 분석하지 않는다. 그 덕분에 기존엔 몇 시간씩 걸리던 컴파일 시간을 줄일 수 있다.

아직 국내에서 고를 활용하는 사례는 적은 편이지만, 커뮤니티 중심으로 한글 문서화 작업이 이뤄지고 세미나도 열리고 있다. 해외에는 고를 도입한 사례를 종종 볼 수 있다. 유튜브, 히로쿠, 도커, 드롭박스 등에서 고 언어를 활용하고 있다고 밝혔다.

5. 웹 스타터 키트

‘웹 스타터 키트’는 말 그대로 웹 개발을 처음 시작하는 사람에게 제공하는 예제 소스다. 이제 막 웹 개발에 입문하는 사람이라면 웹 스타트 키트를 자습서로 활용할 수 있다. 구글이 어떤식으로 웹 개발을 진행하는지에 대한 기준도 알 수 있다. 웹 스타터 키트는 반응형 웹사이트가 부드럽게 구현될 수 있도록 신경썼고, Sass를 활용할 수 있게 지원했다. 성능을 높이고 여러 기기를 쉽게 동기화할 수 있는 기능도 구현돼 있다.

6.쿠버네티스

컨테이너 기술은 최근 엔터프라이즈 분야에서 큰 화두가 되고 있다. MS, IBM, VM웨어 등 클라우드를 준비하는 기업일수록 컨테이너를 지원하느라 바쁘다. 그 중 구글은 컨테이너 기술의 선두주자로 꼽힌다. 특히 오픈소스 전문기업인 레드햇과 손잡아 컨테이너 기술을 부지런히 연구하고 있다. 쿠버네티스는 구글이 오픈소스 형태로 연구하는 컨테이너 기술이다. 구글은 쿠버네티스를 기반으로 상용 클라우드 서비스도 만들고 있다. 쿠버네티스 뿐만 아니라 ‘c어드바이저‘, ‘LMCTFY(Let Me Contain That For You)‘라는 또 다른 컨테이너 오픈소스 기술도 공개했으며, 이 역시 개발자들에게 큰 관심을 받고 있다.

7.구글 I/O 2015 안드로이드 앱

‘구글 I/O’는 구글의 연례 개발자 행사다. 말하자면 ‘구글 I/O 안드로이드 앱’은 컨퍼런스 참가자들에게 도움을 주는 앱이다. 이미 올해 I/O 행사가 다 끝난 마당에 원본소스에 대한 관심이 높은 이유는 무엇일까? 바로 구글이 만든 앱 가운데 가장 재활용하기 좋은 앱이기 때문이다. 구글은 검색, e메일 등의 서비스를 제공한다. 일반 기업이 똑같이 검색, e메일 등의 앱을 만드는 경우는 드물다. 하지만 컨퍼런스, 세미나를 주최하는 기업들은 아주 많고, 관련 앱을 만들려는 기업도 많다. 구글도 깃허브 페이지에 “만약 앱을 만드는 사람이 있다면 이 소스코드가 좋은 시작점을 알려줄 것”이라고 설명하고 있다.

8.텐서플로

‘텐서플로’는 공식 출시 며칠 만에 많은 사람들이 즐겨찾기한 오픈소스 소프트웨어다. 깃허브는 일, 주, 월 단위로 가장 관심을 많이 받는 오픈소스 프로젝트를 집계하고 있는데, 텐서플로는 11월 둘째 주 가장 인기있는 프로젝트로 조사됐다. 머신러닝은 많은 IT기업들이 투자하고 있는 기술이다. 기술 수준은 아직 초기단계라 다양한 방법론과 실험이 이뤄지고 있다. 텐서플로는 머신러닝을 연구하는 사람들에게 좋은 참고자료가 될 것으로 보인다.

텐서플로라는 이름에서 텐서는 ‘다차원의 데이터 배열’를 처리한다는 의미에서 나왔다. 플로라는 단어는 노드와 엣지를 이용하는 데이터 흐름도(flow graphs)를 사용해서 쓰여졌다. 노드에서는 수학적 계산을 이뤄지거나 데이터 결과값이 보여진다. 텐서플로는 여러 노드들이 무엇인가 계산하거나 실행할 때 다차원 데이터 배열들이 막히지 않고 동시다발적으로 잘 흘러갈 수 있도록 도와준다.

9.딥드림

‘딥드림’은 구글 리서치팀이 만든 예제코드이다. 아이파이썬 노트북(IPython Notebook) 기반에서 확인할 수 있다. 예제코드는 신경망(Neural Network)을 활용해 그림의 일부를 바꿔 새로운 예술작품으로 만든 내용을 포함하고 있다. 구글은 이 예제로 신경망이 어떻게 작동하는지, 복잡한 분류 문제를 어떻게 해결했는지, 네트워크 구조를 어떻게 해결하는지에 대한 정보를 줄 수 있을 것으로 기대했다. 신경망과 예술을 결합한 조합 때문에 더 많은 사람들이 딥드림에 주목했다.

10.지브라크로싱

‘지브라크로싱’은 1차원 혹은 2차원 QR코드를 인식하는 기술이다. 최근 모바일에서 QR코드를 활용하는 경우가 많아져 지브라크로싱에도 관심이 높아지고 있다.



.

Posted by 홍반장水 홍반장水

텐서플로(Tensorflow) 시작하기


https://gist.github.com/haje01/202ac276bace4b25dd3f



소개

텐서플로우(TensorFlow)는 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리입니다. 데이터 플로우 그래프(Data Flow Graph) 방식을 사용하였습니다.

데이터 플로우 그래프

데이터 플로우 그래프는 수학 계산과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향 그래프(Directed Graph)로 표현합니다.

data flow graph

노드는 수학적 계산, 데이터 입/출력, 그리고 데이터의 읽기/저장 등의 작업을 수행합니다. 엣지는 노드들 간 데이터의 입출력 관계를 나타냅니다.

엣지는 동적 사이즈의 다차원 데이터 배열(=텐서)을 실어나르는데, 여기에서 텐서플로우라는 이름이 지어졌습니다.

텐서(Tensor)는 과학과 공학 등 다양한 분야에서 이전부터 쓰이던 개념입니다. 수학에서는 임의의 기하 구조를 좌표 독립적으로 표현하기 위한 표기법으로 알려져 있지만, 분야마다 조금씩 다른 의미로 사용됩니다. 여기에서는 학습 데이터가 저장되는 다차원 배열 정도로 이해하시면 되겠습니다.

특징

텐서플로우는 다음과 같은 특징을 가집니다:

  • 데이터 플로우 그래프를 통한 풍부한 표현력
  • 코드 수정 없이 CPU/GPU 모드로 동작
  • 아이디어 테스트에서 서비스 단계까지 이용 가능
  • 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리
  • Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능

이후의 설명은 Python을 중심으로 진행하겠습니다. (pip를 통한 Python3설치는 개발 중으로, Python2 기반으로 하겠습니다.)

"구글이 텐서플로우를 오픈소스로 한 것은, 기계 학습이 앞으로 제품과 기술을 혁신하는데 가장 필수적인 요소라고 믿기 때문입니다." - Google Brain Team

설치

텐서플로우는 설치가 비교적 쉬운 편입니다만, 다음과 같은 제약이 있습니다:

  • Unix계열 OS(Linux/Mac OSX)만 지원합니다.
  • GPU 버전은 Linux만 지원합니다.

Linux / Mac OSX

Unix 계열 OS를 사용하시는 분들은 공식 페이지의 설치 문서를 참고하시면 쉽게 설치할 수 있습니다.

윈도우

윈도우 사용자 분들은 가상 머신을 이용하거나, 도커 툴박스 설치 후 진행하시기 바랍니다.

이미지를 받고 컨테이너 실행

텐서플로우의 도커 이미지는 소스코드, 예제, 툴도 포함되어 있기에 풀 버전을 받는 것을 권합니다.

Linux / Mac OSX

Unix 계열 OS에서는 아래의 명령을 실행하면 이미지를 받고 컨테이너가 실행됩니다. 컨테이너 실행 후 자동으로 컨테이너 안의 쉘 환경으로 들어가게 됩니다.

docker run -it b.gcr.io/tensorflow/tensorflow-full

컨테이너 안의 /tensorflow 폴더에 소스가 설치되어 있습니다. (주의: 이 폴더에서 모듈을 import 하시면 에러가 발생합니다. )

윈도우

윈도우의 경우 Docker QuickStart Terminal 실행 후(이때 고래 그림 아래의 IP를 기억해 둡니다) 아래와 같이 실행하시기 바랍니다.

winpty docker run -it -p 8888:8888 b.gcr.io/tensorflow/tensorflow-full

이미지를 받은 후 컨테이너가 실행되면, Jupyter 노트북 서버가 자동으로 시작된 상태입니다. 웹브라우저에서 '위의IP:8888'을 입력하면 Jupyter Notebook 환경에 접속됩니다. 여기에서 tensorflow를 사용하실 수 있습니다.

동작 확인

설치가 잘 되었는지 다음의 코드로 확인해봅니다.

$ python

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>

.

Posted by 홍반장水 홍반장水

데뷔 후 뜨거운 관심을 받은 오픈소스 프로젝트 10개   http://www.bloter.net/archives/266272

 

깃허브는 오픈소스 프로젝트들의 성지라고 불릴 만큼 다양한 프로젝트를 공유한다. 개발자는 깃허브에서 소스코드를 저장하고 살펴보는 것 뿐만 아니라 특정 인물을 팔로우하거나 소셜 활동도 할 수 있다. 대표적으로 깃허브에서 ‘스타’는 ‘좋아요’를, ‘포크’는 공유 기능을 담당하는데, 이 수치를 보면 오픈소스 프로젝트의 인기를 가늠할 수 있다. 깃허브는 10월25일, 소스코드가 공개된 후 1주일 동안 가장 많은 스타수를 받은 프로젝트를 1위부터 10위까지 공개했다. 개발자들의 기대가 그만큼 높은 오픈소스 프로젝트라고 할 수 있겠다.

 

10위. 에니메이(Anime)

에니메이는 자바스크립트 애니매이션 라이브러리다. 2016년 6월27일 출시됐으며, 공개된 이후 첫 주 동안 6013번 스타가 찍혔다. 에니메이는 가볍고, 유연한게 특징이며, CSS, SVG, DOM 속성, JS 객체와 결합해 사용하기도 쉽다. 에니메이 홈페이지를 방문하고 클릭 몇 번을 해보면 에니메이로 어떤 효과를 넣을 수 있을지 감이 올 것이다. 에니메이는 프랑스에 거주하는 줄리안 가르니에라는 디자이너 겸 개발자가 만들었다. 그의 홈페이지를 방문하면 재밌는 소개글을 볼 수 있으니 참고하면 좋다.

 

9위. 리액트 앱 만들기(create-react-app)

 

리액트 앱 만들기는 페이스북이 배포한 오픈소스 프로젝트다. 리액트는 2013년 사용자 인터페이스를 만들기 위한 자바스크립트 라이브러리이며, 리액트 자체도 깃허브 내에서 큰 인기를 끌고 있다. ‘리액트 앱 만들기’는 따로 환경설정을 신경 쓰지 않고 리액트 앱 결과물을 만들어주는 소스코드다. 2016년 7월22일 출시된 이후 1주일 동안 스타수가 6438번 눌러졌다.

8위. 클립보드JS(Clipboard.js)

클립보드JS는 글씨를 복사하고 붙여넣을 수 있는 기능을 자바스크립트로 쉽게 구현하도록 돕는 기술이다. 크기가 3KB밖에 되지 않고, 플래시나 프레임워크 없이 쉽게 클립보드를 만들어주는 장점이 있다. 제노 로차라는 브라질 출신 개발자가 만든 이 기술은 2015년 11월에 공개됐으며, 출시 후 1주일 동안 6522번 스타가 눌러졌다.

7위 비주얼 스튜디오 코드(Visual Studio Code)


비주얼 스튜디오 코드는 마이크로소프트(MS)가 만든 코드 편집기이자 디버깅 도구다. 기존 IDE ‘비주얼 스튜디오’룰 웹 기반으로 만든 것이라 볼 수 있다. 기술 뒷단에는 일렉트론이 쓰였으며, MS 개발자 행사에서 오픈소스 기술로 변환됐다. 비주얼 스튜디오 코드는 2015년 11월에 출시됐으며, 1주일 동안 스타수는 7847번이었다.

6위. N1

N1은 데스크톱용 e메일 애플리케이션이다. 일렉트론, 플럭스, 리액트 등을 사용해 만들었으며 테마나 플러그인을 추가해 다양한 기능을 구현할 수 있다. 오픈소스 기술이며, 나만의 e메일 클라이언트를 만들 수 있다는 이유로 관심을 받았다. 2015년 10월 공개된 이후 스타수는 8588개가 찍혔다. 나이라스라는 기업이 개발했으며, 기본 기능은 무료로 제공하고, 기업용 기능은 유료로 판매 중이다.

5위. 머티리얼 디자인 라이트(Material Design Lite)


머티리얼 디자인은 구글의 디자인 철학이다. 질감이 느껴지는 표면과 선명한 그래픽 디자인, 직관적인 사용자 경험을 위한 자연스러운 애니메이션을 추구하는 게 특징이다. 머티리얼 디자인 라이트는 단순한 형태의 웹사이트에 머티리얼 디자인 원칙을 쉽게 적용하게 도와주는 코드다. 자바스크립트 프레임워크에 영향을 받지 않으며 다양한 기기, 플랫폼, 웹브라우저 버전을 지원한다. 머티리얼 디자인 라이트 공식 홈페이지에선 구체적인 가이드라인과 템플릿 등도 볼 수 있다. 머티리얼 디자인 라이트는 2015년 7월 공개됐으며, 스타수는 일주일 만에 9609번이 됐다.

4위. 리액트 네이티브 (React Native)

 

리액트 네이티브는 모바일 앱을 만들기 위한 프레임워크다. 페이스북이 만들고 바로 오픈소스 기술로 출시됐다. 리액트가 웹 개발자 혹은 하이브리드 앱 개발자에게 주목받았다면 리액트 네이티브는 모바일 개발자에게 관심을 받고 있다. 리액트 네이티브를 이용하면 안드로이드와 iOS 앱 개발시 동일한 소스코드르 이용할 수 있다. 기존 하이브리드 앱보다 성능이 높고, 각 플랫폼이 지원하는 고유 기능을 이용할 수 있다는 점이 인기 요인이다. 리액트 네이티브는 2015년 3월 출시됐으며, 출시 첫 주에 스타수는 1만976개였다.

3위. 텐서플로우(Tensorflow)

텐서플로우는 구글이 만든 오픈소스 머신러닝 라이브러리다. 구글이 만든 머신러닝 기술은 어떨지 궁금한 개발자들이 텐서플로우를 찾고 있다. 구글은 ‘텐서플로우 서빙’이란 기술도 오픈소스로 공개해 더 많은 개발자들이 쉽게 텐서플로우를 이용할 수 있게 지원하고 있다. 텐서플로우 프로젝트를 이끄는 마이크 슈스터 박사는 지난 4월 한국을 방문해 “머신러닝 생태계의 발전을 위해 텐서플로우를 공개했다”라며 “팀 내부적으로는 소프트웨어 관리와 문서화를 더 잘하기 위해서 오픈소스화 했다”라고 밝혔다. 텐서플로우는 2015년 11월 공개됐으며, 첫 주에 1만1822명 사용자가 스타 버튼을 눌렀다.

2위. 얀(Yarn)

가장 최근에 배포된 오픈소스 프로젝트다. 2016년 10월11일에 공개된 얀은 페이스북, 구글, 틸데가 공동으로 만들었으며, 출시 1주일 만에 1만6천개 스타가 찍힐 만큼 높은 관심을 받았다. 얀은 자바스크립의 의존성을 관리해주는 기술이다. 속도와 안정성, 보안성을 장점을 내세우고 있다.

1위. 스위프트(Swift)

스위프트는 애플이 만든 프로그래밍 언어다. 2014년에 처음 공개됐고, 2015년에 12월3일에 오픈소스 언어로 전환됐다. 깃허브에 스위프트가 올라오자 1주일 만에 2만3097개의 사용자가 스타를 눌렀다. iOS 앱 개발시 사용할 수 있고, 기존 오브젝티브C 언어의 단점을 보완할 수 있다는 이유로 많은 개발자들이 관심을 받았다. 스위프트는 이미 깃허브에서 가장 인기있는 언어 15위 안에 들었으며, 풀 리퀘스트(Pull Request)수정한 브랜치 내용을 기존 버전에서 반영할 수 있도록 깃허브로 보내는 행위를 일컫는다.close 수는 지난해에 비해 262% 올랐다.

 

 

 

 

.

Posted by 홍반장水 홍반장水

[cookbook] Github + Trello 연동하기

 

http://nodeqa.com/nodejs_ref/89

 

 

[cookbook] Github + Trello 연동하기

  • Introduction
  • 준비과정
  • Trello API
  • Setting Service Hooks of Github
  • Git commit & push
  • Conclusion
  • Personal Project
  • Posted by 홍반장水 홍반장水
    TAG github, Trello

    David: Keep track of your Node dependecies

    David helps keep your Nodejs project dependencies up to date. https://david-dm.org

    david

    Homepage: https://david-dm.org/
    GitHub: https://github.com/alanshaw/david-www

     

    Nodejs based web service that tells you when your project npm dependencies are out of date.

    To use David, your project must include a package.json file in the root of your repository.

    Currently David works with package.json files found in public github repositories only. 

    Posted by 홍반장水 홍반장水

    HTML.js: Enjoy working with the DOM

    HTML.js

     

    Posted by 홍반장水 홍반장水