SlideShare a Scribd company logo
1 of 53
Download to read offline
구글 오픈소스와 그 소개
31기 고지웅
목차
1. 들어가기 앞서 ( 구글의 오픈소스에 관한 preface)
2. 구글 오픈소스
3. 구글 오픈소스 장려 사업
구글이 오픈소스를 장려하는 이유
1. 더 많은 사람들이 함께 기술에 참여하면
더 좋은 기술이 만들어질 것이라고 보기 때문에
2. 마케팅 효과를 노리려는 이유도 있다. 새로운 기술을 오픈소스 기술로
공개함으로써 구글 내부의 기술력이 공개되고, 기술 생태계가 구성될 확
률이 높다.
이 세미나의 이유
1. 오픈소스도 굉장히 다양한 종류의 오픈소스들이 존재하고
숫자도 어마어마하게 많다. 그 중에서 오픈소스 기술을 적극적으로 지원
해주는 구글 오픈소스를 소개하고자 함.
2. 다른 학우들도 구글 오픈소스와 장려 사업에 관해서 한번 알아두면 좋
은 내용이 될것 같아서
2. 구글 오픈소스 소개
* 프로그래밍 언어 - Go, Dart
* 웹 기술 - Angular js, Polymer, Chromium
* 디자인 자료 - 노토 폰트
* 기타 오픈소스 - TouchTime
Go란?
간단하고 안정적이며 효율적인 소프트웨어를 쉽게 만
들 수있는 오픈 소스 프로그래밍 언어입니다.
Go 프로그래밍 언어는 프로그래머의 생산성 향상을
위한 오픈 소스 프로젝트입니다.
Go는 표현력 있고, 간결하며, 깨끗하고 효율적입니
다. 동시성 메커니즘을 통해 멀티 코어 및 네트워크
컴퓨터를 최대한 활용하는 프로그램을 쉽게 작성할
수 있으며 소설 유형 시스템은 유연하고 모듈 식 프로
그램 구성을 가능하게합니다. Go는 기계 코드로 빠
르게 컴파일되지만 가비지 수집의 편의성과 런타임
반영 기능을 제공합니다. 이것은 동적으로 타이핑되
고 해석되는 언어처럼 느껴지고 정적으로 타이핑되고
컴파일 된 언어입니다.
go의 특징
• 정적 타입, 강 타입
C/C++, Java 와 같이 Compile Time 에 Type 결정이 이루어 지며, 코드 내에서 암시적 형변환이 일어나지 않는다.
• 컴파일 언어
C/C++, Java, C# 등과 같이 컴파일이 필요한 언어임. Java 나 C# 과 달리 실행파일을 만들어냄. 별도의 Runtime 환경이 필요없어 실행 환경이
복잡하지 않음.
• 가비지 컬렉션
실행파일 내에 Garbage Collector 가 탑재 됨.
• 병행성(Concurrency)
Multi Thread, Multi Core 에 Go Routine 이라는 단위의 함수실행을 한 Thread 나 Core 별로 동시에 실행시킬 수 있다. Thread 와 Go
Routine 은 1:N 관계를 이룰 수 있다.
• 멀티코어 환경 지원
Go Routine 간에 “채널” 을 통해 통신하여 데이터를 공유하고 실행 순서를 제어할 수 있다. 제어는 Multi Thread 의 동기화와 비슷하다.
Go는 단순함과 실용성을 지향하는 언어입니다. keyword가 25개밖에
되지 않고 문법 또한 간결해 입문이 쉬운 편입니다.
Go의 키워드
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
•C의 키워드
Go 언어는 컴파일 언어이기에 문제 해결 능력 역시
컴파일 언어들과 대체로 비슷합니다.
Go의 추가적인 장점
1. 가벼운 고 루틴
2. 간결한 코드 사용으로 생산성 항샹
3. Interface의 편리성
4. 빠른 컴파일 속도와 실행 속도 덕분에 테스트가 빠르고 쉽다
5. 코딩 스타일을 알아서 맞춰준다.
Go의 단점
•유용한 Full-featured Debugger가 없다
•자주 발생하는 서브파티 라이브러리 버그
•Generic이 없다
•코드의 많은 부분이 에러 처리 코드이다.
•go의 현재 위치
Dart
다트는 생산적이고 안정적이며 놀라움
없는 언어로 설계되었습니다.
Dart는 Google에서 개발하고 Ecma가
표준으로 승인 한 프로그래밍 언어입니
다.
웹 개발에 이상적이며 JavaScript로 트
랜스 컴파일 될 수 있지만 서버, 데스크
탑 및 모바일 응용 프로그램을 작성하
는데도 사용할 수 있습니다.
다트는 '배터리 포함'철학으로 설계되
었으며 대형 응용 프로그램을 개발할
때 예기치 않은 상황을 피하기 위해 자
동 유형 강제 변환과 같은 마술을 최소
화합니다.
Dart는 Javascript를 대체하기 위해 나왔을까?
구글은 왜 Dart를 개발했을까요 ? Dart 개발진은 Javascript를 대체하기 위해서라는 말은 하지
않습니다. 단지 거대한 웹 애플리케이션을 개발하는 개발자들을 위해 개발했다고 얘기합니다 .
즉, 표준화 된 언어와 잘 정리된 도구들 그리고, 이 모든 것이 통일 된 환경에서 나오는 향상된
개발 경험을 개발자에게 주고자 개발되었다는 겁니다.
구글은 이러한 새로운 개발 환경을 통해 개발자들이 더 빠르고 쉽게 거대한 웹 어플리케이션 개
발을 할 수 있을 것이라고 믿고 있습니다. 실제로, Dart를 개발하고 있는 팀은 V8엔진을 개발하
던 개발진이며 , Google의 경우 여전히 Javascript를 발전시키기 위해 TC39와 협조하고 있으
며 여전히 V8엔진을 발전시키고 있습니다.
이 말은 현재 “Javascript를 대체하기 위해”라는 자극적인 주제보다는 “더 나은 웹 개발을 위한
새롭고 발전 된 개발환경을 제공한다 ”는 명분이 Dart와 어울린다고 볼 수 있습니다. 정리하자
면, Dart는 개발자에게 기존의 개발경험을 살리면서 더 명확하게 웹 애플리케이션을 개발할 수
있는 기회를 주기 위해 탄생 되었다고 할 수 있습니다.
Dart 특징
•Java처럼 main 함수에서 시
작하며 클래스와 인터페이스
사용이 가능합니다.
•JavaScript 의 동적 타입과
Java의 정적 타입 사용이 가능
합니다.
•Optional Types라는 좀 더 편안한
기능을 제공하고 있습니다. 변수
Type을 확정하지 않고, 기능이 제공
될 수 있도록 코드를 작성을 할 수 있
는 방법입니다.
•Dart는 Javascript와 마찬가지
로 Single Thread로 동작합니다.
Javascript에서는 Multi-Thread
효과를 위해 여러 방법들이 사용
되어 왔습니다.
바로 ‘Isolate’ 기능 입니다.
처음에는 굉장히 떴다가 현재는
점유율이 점점 낮아지고 있습니다.
2014년에는 17위에 있었으나
2017년 현재에는 25위까지 떨어
졌으며, 점유율 역시 감소했습니
다.
그 이유로는
굳이 Dart를 쓰지 않더라도
Javascript로도 원하는 기술을
적용할수 있고 퍼포먼스 차이
가 심하지 않다는 점입니다.
(예를 들어 psuedoclass로 객
체지향 구현 가능)
Angular JS
Angular는 모바일, 데스크톱 및 웹용 웹 응
용 프로그램 프레임 워크입니다.
Angular는 개발자 생산성, 속도 및 테스트
용이성에 중점을 둔 웹 개발을 손쉽게 할 수
있게하는 개발 플랫폼입니다. Angular로 구
축 된 응용 프로그램은 웹 사이트 및 기본 응
용 프로그램으로 모바일 장치 및 데스크톱에
배포 할 수 있습니다.
Angular JS의 기본 구조
Chromium
Chromium이란? 더 안전하고 빠르며 안정적인
웹 브라우저입니다.
Chromium은 Google 크롬이 구축 한 웹 브라
우저입니다. 이는 경량감과 빠른 느낌을 암시합
니다. 출시되었을 때, 다른 많은 브라우저에서
채택한 샌드 박스 보안 모델, 최소한의 사용자
인터페이스 및 탭 창 관리자를 가져 왔습니다.
Polymer
Polymer란?
웹 컴포넌츠 표준을 따르면서 구축된 간단한
라이브러리를 말합니다.
Polymer는 사용자가 재사용 할 수 있고 캡슐
화 된 HTML 요소를 만들 수 있도록 웹 구성
요소 표준을 기반으로 웹 응용 프로그램을 보
다 쉽게 ​​구조화 할 수있는 라이브러리입니다.
Polymer는 복잡한 새로운 추상화와 마술을
발명하지는 않지만 사용자 정의 요소의 생성
을 간단하게 설득하는 간단한 방법으로 웹 플
랫폼의 최상의 기능을 사용합니다. 현대식 브
라우저에서 작동하는 다른 프레임 워크 또는
라이브러리와 함께 사용할 수있는 모듈 식 라
이브러리입니다.
Kubernetes
Kubernetes는 자동화 된 컨테이너 배포, 확
장 및 관리를 위한 시스템입니다.
Kubernetes는 여러 호스트에서 컨테이너
화 된 응용 프로그램을 관리하고 응용 프로
그램의 배포, 유지 관리 및 확장을위한 메커
니즘을 제공하는 클러스터 관리 시스템입니
다. 이것은 응용프로그램을 구성하는 요소들
을 쉽게 관리하고 발견할 수 있도록 논리적
단위로 그룹화합니다.
Firebase SDK
Firebase SDK란? 고품질 앱을 개발하고 사용
자 기반을 확대하며 더 많은 수익을 올릴 수있는
도구를 갖춘 앱 개발 플랫폼입니다.
Firebase는 앱 개발, 성장 및 수익 창출에 도움
이되는 통합 도구를 제공하는 앱 개발 플랫폼입
니다. Firebase SDK를 사용하면 여러 플랫폼에
서 직관적이고 관용적 인 방식으로 Firebase 서
비스에 액세스 할 수 있습니다.(ios, java, go 등
다양한 언어 지원)
1. cloud-hosted database의 사용으로 개발 시간 단축
database가 실시간으로 연동된다는 것은 모바일 개발에 있어서 backend개발에 조금은 덜 집중해도 괜찮다는 이야기입니
다. 따로 서버를 구축하지 않고 데이터베이스를 사용할 수 있다는 이점은 상당한 메리트로 다가옵니다.
2. Offline을 대비한 내부 캐시
여기서는 Offline을 위한 설정을 다루지는 않았지만, 몇몇 설정을 통해 네트워크 연결이 불안정 했을때를 대비해서 내부 캐
시에 데이터를 저장할 수 있습니다. 연결이 끊겼을때 수정된 데이터들을 큐에 저장해 두고 다시 연결 되었을때 동기화합니
다.
3. 크로스 플랫폼 지원과 개발 환경의 통합
Android뿐만 아니라 iOS와 Web을 지원합니다. 또한 소개한 database의 기능 뿐만 아니라 Authentication이나 Crash
Reporting같은 서비스가 하나의 SDK에서 가능하고, 모두 Firebase 콘솔에서 관리할 수 있습니다. 기능을 이리저리 조합해
서 원하는 것을 쉽고 빠르게 만들 수 있다는 점이 강점입니다.
Noto Fonts
•Noto Fonts는 조화로운 모양과
느낌으로 모든 언어를 지원하는 것
을 목표로하는 글꼴입니다.
컴퓨터로 텍스트를 렌더링 할 때 문
자가 "두부"로 표시되는 경우가 있
습니다. 당신의 장치에 텍스트를 표
시 할 글꼴이 없다는 것을 나타내는
작은 상자입니다.
TouchTime
Android 스마트 시계의 진동 패턴을 통해 시간
을 알려줍니다.
TouchTime은 터치하여 시간을 알려주는
Android Wear 스마트 시계 응용 프로그램입니
다. 시각 장애인 및 시간을 은밀히 말하고자하는
사람들에게 유용하도록 고안되었습니다.
이 패키지에는 스마트 폰 버전의 소프트웨어가
포함되어있어 스마트 시계 없이도 응용 프로그
램을 테스트 할 수 있습니다.
손가락을 화면 주위로 밀면 가상 손 중 하나를 터치 할 때 시계가
진동합니다. 진동 패턴은 손으로 만져집니다
(시침에 대한 지속적인 진동, 분침에 대한 진동 펄싱 및 손이 서로
겹쳐있을 때 긴 짧은 펄스 패턴)
구글 라이센스
3. 구글 장려 사업
구글이 오픈소스 기술을 권하기 위해
오픈소스 교육을 확장하고 있습니다.
구글은 ‘구글 코드인’과 ‘구글 썸머 오브 코드(Google summer of Code)
를 지원합니다.
구글 코드인
‘구글 코드인’은 13세에서
17세의 청소년이 참여할 수
있는 일종의 온라인 콘테스
트 입니다.
이 프로그램에는 외부 오픈소스 기
술 개발업체들도 함께 참여합니다.
이 기업 내 개발자는 참가자가 수
정하고 개선할 수 있는 소스코드,
문서 등을 과제로 제공합니다.
구글 썸머 오브 코드
이 프로그램은 18세 이상의 학생이 참여할
수 있는 프로그램으로, 참가자들은 3개월이
라는 시간 동안 하나의 오픈소스 프로젝트를
집중적으로 담당합니다.
따라서 취업 이전에 오픈소스 프로젝트를 체
계적으로 배워보고 실무에서 필요한 지식을
얻을 수 있습니다.
구글은 이프로그램에서 오픈소스 전문업체
의 개발자를 멘토로 지정해서 참가자가 언제
든지 질문할 수 있도록 지원합니다.
•일정 개요 설명
얻을 수 있는 점
출처
* go, dart 순위 - https://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
* dart - http://www.cnet.co.kr/view/3253
* Angular JS - http://w3devlabs.net/wp/?p=15
* 구글 오픈소스 라이센스 - https://opensource.google.com/docs/thirdparty/licenses/#banned
* DOM - http://codingnuri.com/javascript-tutorial/html-dom-document-object-model-overview.html
* Go 자료 - http://www.bloter.net/archives/245951
*Go 단점 자료 - https://github.com/ksimka/go-is-not-good
*Notofonts license - https://github.com/googlei18n/noto-fonts/blob/master/LICENSE#L4
QnA

More Related Content

Similar to 31기 고지웅 "구글오픈소스"

『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
복연 이
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
devCAT Studio, NEXON
 
Html5 guide
Html5 guideHtml5 guide
Html5 guide
camusice
 

Similar to 31기 고지웅 "구글오픈소스" (20)

격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
델파이 @22
델파이 @22델파이 @22
델파이 @22
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
 
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
DevOps와 함께 살펴보는 (해커톤의 성패를 좌우하는) 협업/개발 툴
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
Slipp 발표 자료 20151212
Slipp 발표 자료 20151212Slipp 발표 자료 20151212
Slipp 발표 자료 20151212
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #1, NDC2017
 
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
 
[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동[111]open, share, enjoy 네이버의 오픈소스 활동
[111]open, share, enjoy 네이버의 오픈소스 활동
 
개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호개발자로써 갖춰야할 스킬들 - 최용호
개발자로써 갖춰야할 스킬들 - 최용호
 
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
7월 우아한테크세미나 "주니어개발자로 성장하는 우아한 방법들" 첫번째 세션
 
Html5 guide
Html5 guideHtml5 guide
Html5 guide
 
Html5 Guide
Html5 GuideHtml5 Guide
Html5 Guide
 
Html5 guide
Html5 guideHtml5 guide
Html5 guide
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
 
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
코프링 프로젝트 투입 일주일 전: 주니어 개발자의 코틀린 도입 이야기
 

More from hyu_jaram

More from hyu_jaram (17)

33기 안호준 "20살의 게임기획"
33기 안호준 "20살의 게임기획"33기 안호준 "20살의 게임기획"
33기 안호준 "20살의 게임기획"
 
33기 최미진 "실버 산업에서의 소프트웨어 활용"
33기 최미진 "실버 산업에서의 소프트웨어 활용"33기 최미진 "실버 산업에서의 소프트웨어 활용"
33기 최미진 "실버 산업에서의 소프트웨어 활용"
 
33기 정회성 "좋은게임만들기"
33기 정회성 "좋은게임만들기"33기 정회성 "좋은게임만들기"
33기 정회성 "좋은게임만들기"
 
33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"33기 여채린 "리눅스에 대한 소개"
33기 여채린 "리눅스에 대한 소개"
 
33기 정병길 "자연어 처리 (Nlp)"
33기 정병길 "자연어 처리 (Nlp)"33기 정병길 "자연어 처리 (Nlp)"
33기 정병길 "자연어 처리 (Nlp)"
 
30기 박소영 "한양대학교Erica다전공제도(2017)"
30기 박소영 "한양대학교Erica다전공제도(2017)"30기 박소영 "한양대학교Erica다전공제도(2017)"
30기 박소영 "한양대학교Erica다전공제도(2017)"
 
30기 최준호 "음악프로그래밍"
30기 최준호 "음악프로그래밍"30기 최준호 "음악프로그래밍"
30기 최준호 "음악프로그래밍"
 
30기 정성학 "Git, sourcetree 사용법"
30기 정성학 "Git, sourcetree 사용법"30기 정성학 "Git, sourcetree 사용법"
30기 정성학 "Git, sourcetree 사용법"
 
Rating System을 알아보기
Rating System을 알아보기Rating System을 알아보기
Rating System을 알아보기
 
170510 자람세미나 pt
170510 자람세미나 pt170510 자람세미나 pt
170510 자람세미나 pt
 
Physical rendering
Physical renderingPhysical rendering
Physical rendering
 
창업
창업창업
창업
 
Paradigm of computer architecture
Paradigm of computer architectureParadigm of computer architecture
Paradigm of computer architecture
 
170321 32기 권채은 세미나 : 장바구니분석
170321 32기 권채은 세미나 : 장바구니분석170321 32기 권채은 세미나 : 장바구니분석
170321 32기 권채은 세미나 : 장바구니분석
 
세미나
세미나세미나
세미나
 
데이터마이닝
데이터마이닝데이터마이닝
데이터마이닝
 
RNN & LSTM
RNN & LSTMRNN & LSTM
RNN & LSTM
 

31기 고지웅 "구글오픈소스"

  • 1. 구글 오픈소스와 그 소개 31기 고지웅
  • 2. 목차 1. 들어가기 앞서 ( 구글의 오픈소스에 관한 preface) 2. 구글 오픈소스 3. 구글 오픈소스 장려 사업
  • 3. 구글이 오픈소스를 장려하는 이유 1. 더 많은 사람들이 함께 기술에 참여하면 더 좋은 기술이 만들어질 것이라고 보기 때문에 2. 마케팅 효과를 노리려는 이유도 있다. 새로운 기술을 오픈소스 기술로 공개함으로써 구글 내부의 기술력이 공개되고, 기술 생태계가 구성될 확 률이 높다.
  • 4. 이 세미나의 이유 1. 오픈소스도 굉장히 다양한 종류의 오픈소스들이 존재하고 숫자도 어마어마하게 많다. 그 중에서 오픈소스 기술을 적극적으로 지원 해주는 구글 오픈소스를 소개하고자 함. 2. 다른 학우들도 구글 오픈소스와 장려 사업에 관해서 한번 알아두면 좋 은 내용이 될것 같아서
  • 5. 2. 구글 오픈소스 소개 * 프로그래밍 언어 - Go, Dart * 웹 기술 - Angular js, Polymer, Chromium * 디자인 자료 - 노토 폰트 * 기타 오픈소스 - TouchTime
  • 6. Go란? 간단하고 안정적이며 효율적인 소프트웨어를 쉽게 만 들 수있는 오픈 소스 프로그래밍 언어입니다. Go 프로그래밍 언어는 프로그래머의 생산성 향상을 위한 오픈 소스 프로젝트입니다. Go는 표현력 있고, 간결하며, 깨끗하고 효율적입니 다. 동시성 메커니즘을 통해 멀티 코어 및 네트워크 컴퓨터를 최대한 활용하는 프로그램을 쉽게 작성할 수 있으며 소설 유형 시스템은 유연하고 모듈 식 프로 그램 구성을 가능하게합니다. Go는 기계 코드로 빠 르게 컴파일되지만 가비지 수집의 편의성과 런타임 반영 기능을 제공합니다. 이것은 동적으로 타이핑되 고 해석되는 언어처럼 느껴지고 정적으로 타이핑되고 컴파일 된 언어입니다.
  • 7. go의 특징 • 정적 타입, 강 타입 C/C++, Java 와 같이 Compile Time 에 Type 결정이 이루어 지며, 코드 내에서 암시적 형변환이 일어나지 않는다. • 컴파일 언어 C/C++, Java, C# 등과 같이 컴파일이 필요한 언어임. Java 나 C# 과 달리 실행파일을 만들어냄. 별도의 Runtime 환경이 필요없어 실행 환경이 복잡하지 않음. • 가비지 컬렉션 실행파일 내에 Garbage Collector 가 탑재 됨. • 병행성(Concurrency) Multi Thread, Multi Core 에 Go Routine 이라는 단위의 함수실행을 한 Thread 나 Core 별로 동시에 실행시킬 수 있다. Thread 와 Go Routine 은 1:N 관계를 이룰 수 있다. • 멀티코어 환경 지원 Go Routine 간에 “채널” 을 통해 통신하여 데이터를 공유하고 실행 순서를 제어할 수 있다. 제어는 Multi Thread 의 동기화와 비슷하다.
  • 8. Go는 단순함과 실용성을 지향하는 언어입니다. keyword가 25개밖에 되지 않고 문법 또한 간결해 입문이 쉬운 편입니다. Go의 키워드 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var •C의 키워드
  • 9. Go 언어는 컴파일 언어이기에 문제 해결 능력 역시 컴파일 언어들과 대체로 비슷합니다.
  • 10. Go의 추가적인 장점 1. 가벼운 고 루틴 2. 간결한 코드 사용으로 생산성 항샹 3. Interface의 편리성 4. 빠른 컴파일 속도와 실행 속도 덕분에 테스트가 빠르고 쉽다 5. 코딩 스타일을 알아서 맞춰준다.
  • 11.
  • 12.
  • 13.
  • 15. •유용한 Full-featured Debugger가 없다 •자주 발생하는 서브파티 라이브러리 버그 •Generic이 없다 •코드의 많은 부분이 에러 처리 코드이다.
  • 17. Dart 다트는 생산적이고 안정적이며 놀라움 없는 언어로 설계되었습니다. Dart는 Google에서 개발하고 Ecma가 표준으로 승인 한 프로그래밍 언어입니 다. 웹 개발에 이상적이며 JavaScript로 트 랜스 컴파일 될 수 있지만 서버, 데스크 탑 및 모바일 응용 프로그램을 작성하 는데도 사용할 수 있습니다. 다트는 '배터리 포함'철학으로 설계되 었으며 대형 응용 프로그램을 개발할 때 예기치 않은 상황을 피하기 위해 자 동 유형 강제 변환과 같은 마술을 최소 화합니다.
  • 18. Dart는 Javascript를 대체하기 위해 나왔을까? 구글은 왜 Dart를 개발했을까요 ? Dart 개발진은 Javascript를 대체하기 위해서라는 말은 하지 않습니다. 단지 거대한 웹 애플리케이션을 개발하는 개발자들을 위해 개발했다고 얘기합니다 . 즉, 표준화 된 언어와 잘 정리된 도구들 그리고, 이 모든 것이 통일 된 환경에서 나오는 향상된 개발 경험을 개발자에게 주고자 개발되었다는 겁니다. 구글은 이러한 새로운 개발 환경을 통해 개발자들이 더 빠르고 쉽게 거대한 웹 어플리케이션 개 발을 할 수 있을 것이라고 믿고 있습니다. 실제로, Dart를 개발하고 있는 팀은 V8엔진을 개발하 던 개발진이며 , Google의 경우 여전히 Javascript를 발전시키기 위해 TC39와 협조하고 있으 며 여전히 V8엔진을 발전시키고 있습니다. 이 말은 현재 “Javascript를 대체하기 위해”라는 자극적인 주제보다는 “더 나은 웹 개발을 위한 새롭고 발전 된 개발환경을 제공한다 ”는 명분이 Dart와 어울린다고 볼 수 있습니다. 정리하자 면, Dart는 개발자에게 기존의 개발경험을 살리면서 더 명확하게 웹 애플리케이션을 개발할 수 있는 기회를 주기 위해 탄생 되었다고 할 수 있습니다.
  • 19. Dart 특징 •Java처럼 main 함수에서 시 작하며 클래스와 인터페이스 사용이 가능합니다. •JavaScript 의 동적 타입과 Java의 정적 타입 사용이 가능 합니다.
  • 20. •Optional Types라는 좀 더 편안한 기능을 제공하고 있습니다. 변수 Type을 확정하지 않고, 기능이 제공 될 수 있도록 코드를 작성을 할 수 있 는 방법입니다.
  • 21. •Dart는 Javascript와 마찬가지 로 Single Thread로 동작합니다. Javascript에서는 Multi-Thread 효과를 위해 여러 방법들이 사용 되어 왔습니다. 바로 ‘Isolate’ 기능 입니다.
  • 22. 처음에는 굉장히 떴다가 현재는 점유율이 점점 낮아지고 있습니다. 2014년에는 17위에 있었으나 2017년 현재에는 25위까지 떨어 졌으며, 점유율 역시 감소했습니 다.
  • 23. 그 이유로는 굳이 Dart를 쓰지 않더라도 Javascript로도 원하는 기술을 적용할수 있고 퍼포먼스 차이 가 심하지 않다는 점입니다. (예를 들어 psuedoclass로 객 체지향 구현 가능)
  • 24. Angular JS Angular는 모바일, 데스크톱 및 웹용 웹 응 용 프로그램 프레임 워크입니다. Angular는 개발자 생산성, 속도 및 테스트 용이성에 중점을 둔 웹 개발을 손쉽게 할 수 있게하는 개발 플랫폼입니다. Angular로 구 축 된 응용 프로그램은 웹 사이트 및 기본 응 용 프로그램으로 모바일 장치 및 데스크톱에 배포 할 수 있습니다.
  • 26.
  • 27.
  • 28. Chromium Chromium이란? 더 안전하고 빠르며 안정적인 웹 브라우저입니다. Chromium은 Google 크롬이 구축 한 웹 브라 우저입니다. 이는 경량감과 빠른 느낌을 암시합 니다. 출시되었을 때, 다른 많은 브라우저에서 채택한 샌드 박스 보안 모델, 최소한의 사용자 인터페이스 및 탭 창 관리자를 가져 왔습니다.
  • 29. Polymer Polymer란? 웹 컴포넌츠 표준을 따르면서 구축된 간단한 라이브러리를 말합니다. Polymer는 사용자가 재사용 할 수 있고 캡슐 화 된 HTML 요소를 만들 수 있도록 웹 구성 요소 표준을 기반으로 웹 응용 프로그램을 보 다 쉽게 ​​구조화 할 수있는 라이브러리입니다. Polymer는 복잡한 새로운 추상화와 마술을 발명하지는 않지만 사용자 정의 요소의 생성 을 간단하게 설득하는 간단한 방법으로 웹 플 랫폼의 최상의 기능을 사용합니다. 현대식 브 라우저에서 작동하는 다른 프레임 워크 또는 라이브러리와 함께 사용할 수있는 모듈 식 라 이브러리입니다.
  • 30. Kubernetes Kubernetes는 자동화 된 컨테이너 배포, 확 장 및 관리를 위한 시스템입니다. Kubernetes는 여러 호스트에서 컨테이너 화 된 응용 프로그램을 관리하고 응용 프로 그램의 배포, 유지 관리 및 확장을위한 메커 니즘을 제공하는 클러스터 관리 시스템입니 다. 이것은 응용프로그램을 구성하는 요소들 을 쉽게 관리하고 발견할 수 있도록 논리적 단위로 그룹화합니다.
  • 31. Firebase SDK Firebase SDK란? 고품질 앱을 개발하고 사용 자 기반을 확대하며 더 많은 수익을 올릴 수있는 도구를 갖춘 앱 개발 플랫폼입니다. Firebase는 앱 개발, 성장 및 수익 창출에 도움 이되는 통합 도구를 제공하는 앱 개발 플랫폼입 니다. Firebase SDK를 사용하면 여러 플랫폼에 서 직관적이고 관용적 인 방식으로 Firebase 서 비스에 액세스 할 수 있습니다.(ios, java, go 등 다양한 언어 지원)
  • 32. 1. cloud-hosted database의 사용으로 개발 시간 단축 database가 실시간으로 연동된다는 것은 모바일 개발에 있어서 backend개발에 조금은 덜 집중해도 괜찮다는 이야기입니 다. 따로 서버를 구축하지 않고 데이터베이스를 사용할 수 있다는 이점은 상당한 메리트로 다가옵니다. 2. Offline을 대비한 내부 캐시 여기서는 Offline을 위한 설정을 다루지는 않았지만, 몇몇 설정을 통해 네트워크 연결이 불안정 했을때를 대비해서 내부 캐 시에 데이터를 저장할 수 있습니다. 연결이 끊겼을때 수정된 데이터들을 큐에 저장해 두고 다시 연결 되었을때 동기화합니 다. 3. 크로스 플랫폼 지원과 개발 환경의 통합 Android뿐만 아니라 iOS와 Web을 지원합니다. 또한 소개한 database의 기능 뿐만 아니라 Authentication이나 Crash Reporting같은 서비스가 하나의 SDK에서 가능하고, 모두 Firebase 콘솔에서 관리할 수 있습니다. 기능을 이리저리 조합해 서 원하는 것을 쉽고 빠르게 만들 수 있다는 점이 강점입니다.
  • 33. Noto Fonts •Noto Fonts는 조화로운 모양과 느낌으로 모든 언어를 지원하는 것 을 목표로하는 글꼴입니다. 컴퓨터로 텍스트를 렌더링 할 때 문 자가 "두부"로 표시되는 경우가 있 습니다. 당신의 장치에 텍스트를 표 시 할 글꼴이 없다는 것을 나타내는 작은 상자입니다.
  • 34.
  • 35.
  • 36. TouchTime Android 스마트 시계의 진동 패턴을 통해 시간 을 알려줍니다. TouchTime은 터치하여 시간을 알려주는 Android Wear 스마트 시계 응용 프로그램입니 다. 시각 장애인 및 시간을 은밀히 말하고자하는 사람들에게 유용하도록 고안되었습니다. 이 패키지에는 스마트 폰 버전의 소프트웨어가 포함되어있어 스마트 시계 없이도 응용 프로그 램을 테스트 할 수 있습니다.
  • 37. 손가락을 화면 주위로 밀면 가상 손 중 하나를 터치 할 때 시계가 진동합니다. 진동 패턴은 손으로 만져집니다 (시침에 대한 지속적인 진동, 분침에 대한 진동 펄싱 및 손이 서로 겹쳐있을 때 긴 짧은 펄스 패턴)
  • 39.
  • 40.
  • 41. 3. 구글 장려 사업 구글이 오픈소스 기술을 권하기 위해 오픈소스 교육을 확장하고 있습니다. 구글은 ‘구글 코드인’과 ‘구글 썸머 오브 코드(Google summer of Code) 를 지원합니다.
  • 43. ‘구글 코드인’은 13세에서 17세의 청소년이 참여할 수 있는 일종의 온라인 콘테스 트 입니다.
  • 44. 이 프로그램에는 외부 오픈소스 기 술 개발업체들도 함께 참여합니다. 이 기업 내 개발자는 참가자가 수 정하고 개선할 수 있는 소스코드, 문서 등을 과제로 제공합니다.
  • 46. 이 프로그램은 18세 이상의 학생이 참여할 수 있는 프로그램으로, 참가자들은 3개월이 라는 시간 동안 하나의 오픈소스 프로젝트를 집중적으로 담당합니다. 따라서 취업 이전에 오픈소스 프로젝트를 체 계적으로 배워보고 실무에서 필요한 지식을 얻을 수 있습니다. 구글은 이프로그램에서 오픈소스 전문업체 의 개발자를 멘토로 지정해서 참가자가 언제 든지 질문할 수 있도록 지원합니다.
  • 48.
  • 50.
  • 51.
  • 52. 출처 * go, dart 순위 - https://www.tiobe.com/index.php/content/paperinfo/tpci/index.html * dart - http://www.cnet.co.kr/view/3253 * Angular JS - http://w3devlabs.net/wp/?p=15 * 구글 오픈소스 라이센스 - https://opensource.google.com/docs/thirdparty/licenses/#banned * DOM - http://codingnuri.com/javascript-tutorial/html-dom-document-object-model-overview.html * Go 자료 - http://www.bloter.net/archives/245951 *Go 단점 자료 - https://github.com/ksimka/go-is-not-good *Notofonts license - https://github.com/googlei18n/noto-fonts/blob/master/LICENSE#L4
  • 53. QnA