Android DataBinding
: 기초에서 고급까지
송유섭
NAVER / 라이브서비스개발
네이버에서 7년째 개발하고 있는 안드로이드 개발자 입니다. 갤럭시S가 출시때부터 안드로이드 개발을 해왔으며, 네이버 입사전에는 음성인식 앱인 Seri, 스마트폰 사용제한 앱인 '하지마 Not todo List'등을 만들었습니다. 네이버에서는 현재 PRISM이라는 라이브/동영상 촬영 및 편집 앱을 담당해서 개발하고 있습니다.
리덕스를 도입할 때 주저하게 만드는 장벽들
○ 개요
몹엑스, 아폴로, 컨텍스트 API 등 리덕스를 도입하기도 전에 이미 선택적인 고민을 하게 만듭니다. 리덕스를 도입한 후에도 사가, 펜더, 옵져버블등의 미들웨어의 도입에서도 선택 장애가 발생하는 문제들이 리덕스 선택을 주저하게 만듭니다.
2020년 리덕스는 좋은 선택지 일까요? 리덕스는 언제 그리고 어떻게 사용해야 활용도를 높일 수 있을까요? 에어비앤비 결제 시스템과 3차원 시각화 시스템에 적용한 리덕스 활용 사례를 살펴보며 리덕스의 효용 가치를 같이 살펴보고자 합니다.
○ 목차
- 형상관리를 어렵게 하는 요소들
- MobX vs Redux
- 단방향 데이터 흐름(Flux)
- 미들웨어 살펴보기
- 리덕스와 미들웨어 활용 데모
- Typescript와 GraphQL 도입 사례
Android DataBinding
: 기초에서 고급까지
송유섭
NAVER / 라이브서비스개발
네이버에서 7년째 개발하고 있는 안드로이드 개발자 입니다. 갤럭시S가 출시때부터 안드로이드 개발을 해왔으며, 네이버 입사전에는 음성인식 앱인 Seri, 스마트폰 사용제한 앱인 '하지마 Not todo List'등을 만들었습니다. 네이버에서는 현재 PRISM이라는 라이브/동영상 촬영 및 편집 앱을 담당해서 개발하고 있습니다.
리덕스를 도입할 때 주저하게 만드는 장벽들
○ 개요
몹엑스, 아폴로, 컨텍스트 API 등 리덕스를 도입하기도 전에 이미 선택적인 고민을 하게 만듭니다. 리덕스를 도입한 후에도 사가, 펜더, 옵져버블등의 미들웨어의 도입에서도 선택 장애가 발생하는 문제들이 리덕스 선택을 주저하게 만듭니다.
2020년 리덕스는 좋은 선택지 일까요? 리덕스는 언제 그리고 어떻게 사용해야 활용도를 높일 수 있을까요? 에어비앤비 결제 시스템과 3차원 시각화 시스템에 적용한 리덕스 활용 사례를 살펴보며 리덕스의 효용 가치를 같이 살펴보고자 합니다.
○ 목차
- 형상관리를 어렵게 하는 요소들
- MobX vs Redux
- 단방향 데이터 흐름(Flux)
- 미들웨어 살펴보기
- 리덕스와 미들웨어 활용 데모
- Typescript와 GraphQL 도입 사례
JPA의 기본 개념에 대해 설명하고 MyBatis로 작성된 애플리케이션을 JPA로 리팩토링하는 과정을 단계별로 살펴봅니다.
목차
1. MyBatis
2. Why JPA?
3. MyBatis to JPA
- JPA 설정
- Entity
- 연관관계 설정
- Repository
- 애플리케이션에서의 사용
대상
- MyBatis를 실무에 사용하고 있으면서 JPA 도입을 고려하고 있는 백엔드 개발자
- JPA를 적용하면서 어려움을 겪었거나 JPA를 실제 적용하는 과정이 궁금한 개발자
Reactive Model-View-ViewModel ArchitectureGyuwon Yi
컨텐츠 중심의 모바일 서비스 응용프로그램을 개발하기 위해 MVVM(Model-View-ViewModel) 패턴과 Rx(Reactive Extensions)를 활용해 설계한 Reactive MVVM 아키텍쳐를 설명합니다. 조금 더 자세한 설명은 블로그 포스트를 참고하세요. https://justhackem.wordpress.com/2015/03/19/rmvvm-architecture/
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...Parma Couture
Presentazione a cura della Dr.ssa Federica Busillo del DPS, illustrata in occasione del seminario tenutosi a Bologna il 22 ottobre 2014 sulla strategia della Regione Emilia-Romagna per la nuova programmazione dei fondi europei (SIE) 2014-2020.
Las enfermedades raras son poco frecuentes pero afectan a muchas personas en el mundo. Es necesario investigar y atender a todas estas personas para que tengan derecho a un futuro digno.
JPA의 기본 개념에 대해 설명하고 MyBatis로 작성된 애플리케이션을 JPA로 리팩토링하는 과정을 단계별로 살펴봅니다.
목차
1. MyBatis
2. Why JPA?
3. MyBatis to JPA
- JPA 설정
- Entity
- 연관관계 설정
- Repository
- 애플리케이션에서의 사용
대상
- MyBatis를 실무에 사용하고 있으면서 JPA 도입을 고려하고 있는 백엔드 개발자
- JPA를 적용하면서 어려움을 겪었거나 JPA를 실제 적용하는 과정이 궁금한 개발자
Reactive Model-View-ViewModel ArchitectureGyuwon Yi
컨텐츠 중심의 모바일 서비스 응용프로그램을 개발하기 위해 MVVM(Model-View-ViewModel) 패턴과 Rx(Reactive Extensions)를 활용해 설계한 Reactive MVVM 아키텍쳐를 설명합니다. 조금 더 자세한 설명은 블로그 포스트를 참고하세요. https://justhackem.wordpress.com/2015/03/19/rmvvm-architecture/
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...Parma Couture
Presentazione a cura della Dr.ssa Federica Busillo del DPS, illustrata in occasione del seminario tenutosi a Bologna il 22 ottobre 2014 sulla strategia della Regione Emilia-Romagna per la nuova programmazione dei fondi europei (SIE) 2014-2020.
Las enfermedades raras son poco frecuentes pero afectan a muchas personas en el mundo. Es necesario investigar y atender a todas estas personas para que tengan derecho a un futuro digno.
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)Duong Anh Thien
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)
#Xem thêm blog tại : http://anhthienad.com/blog
#Download file tại đây : http://anhthienad.com/blog/toan-cau-hoa
We have 15 years of experience in real estate and more than 2 years of experience as builder. He has received life time achievers award of doctorate from Governer Rosaiah
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경YoungSu Son
항상 네트워크에 연결되어있지 않다는 가정으로, 앱의 아키텍처를 변경합니다.
앱을 실행시 로컬 DB의 데이터를 읽으며, 백그라운드 서비스에서 주기적으로 데이터를 긁어옵니다. (추후 gcm push로 변경합니다.)
데이터 삽입시 화면을 자동 갱신할려면? 어떠한 구조를 가져야 할까요?
그리고 view holder 패턴도 다룹니다.
갑을병정 산업구조에서 갑돌이의 잦은 요구사항 변경 통보를 받아보셨을 겁니다. 사람들에게 받은 스트레스를 풀려고 '그래! 난 개발자닌깐' 하고 자리에 앉아서 코드를 짜는데 반복적인 작업을 하다보면 ‘내가 이걸 왜 하고 있나’ 라는 생각까지 들기도 합니다.
안드로이드 작업을 하다보면 다음과 같은 반복적인 작업을 하는 것을 느꼈을 겁니다.
반복적인 보일러(Boiler)코드를 줄일 수 있는 오픈소스를 소개하고자 합니다.
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)LanarkSeung
프로덕션 환경에서 클라이언트 사이드 렌더링을 고집하기란 힘든 일입니다. 서버를 통해 웹사이트를 제공하면서도 React의 편리함을 누리려면 서버 사이드 렌더링(SSR)을 구현해야 하는데요. Create-React-App을 그대로 유지하면서 SSR을 구현하는 과정을 보여드리고자 합니다. TypeScript로도 가능합니다!
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...Amazon Web Services Korea
AWS Greengrass, Lambda and ML Inference at the Edge site
AWS Greengrass 기반의 Edge Computing 활용을 위한 기본적인 컨셉 및 아키텍처를 비롯하여 디바이스와의 통신 방법, Edge에서의 람다 활용 방안 및 ML Inference 관련된 다양한 내용들을 데모와 더불어 살펴 봅니다.
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
네이버 오픈소스 세미나 - Performance does matter
2019.07.11
<세션 요약>
네이버 서비스에서 사내 서버리스 플랫폼까지 흘러가는 트랜잭션을 추적하고 분석하기 위해 개발한 Pinpoint의 Apache Openwhisk 플러그인과 그 개발 과정을 소개합니다.
Apache Openwhisk는 서버리스 플랫폼을 구축할 수 있는 오픈소스 프로젝트로 스칼라 언어와 Akka 라이브러리를 사용한 Actor 모델에 기반하고 있습니다. 스칼라 언어로 작성된 애플리케이션을 위한 Pinpoint 플러그인을 만들면서 겪었던 문제들과 해결했던 과정들을 위주로 설명드릴 예정입니다.
<연사 소개>
네이버에서 Serverless 플랫폼을 개발하고 있으며, 다양한 오픈소스 프로젝트에 관심이 많습니다.
Apache Openwhisk contributor로 활동하면서, Openwhisk 기반 서버리스 플랫폼의 트레이싱을 위한 Pinpoint 플러그인을 개발하고 컨트리뷰션을 진행하고 있습니다.
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
마이크로서비스로 시스템을 구성하면 서비스간에 연관관계가 줄어들면서 서비스 릴리즈 속도가 높아지고 유연하게 대처할 수 있지만, 관리포인트가 늘어나게 되어 운영상에 많은 어려움을 마주치게 됩니다. 배포 될 때마다 생성되고 소멸되는 마이크로서비스를 다른 마이크로서비스가 쉽게 참조하게 하고 마이크로서비스들의 설정 정보를 일관되게 관리하는 일은 쉬운일이 아닙니다. 이러한 문제를 해결하기 위해 Spring Cloud 프로젝트와 같은 도구를 비롯하여 Pivotal Cloud Foundry와 같은 클라우드 플랫폼등이 있습니다. 이번 밋업에서는 마이크로서비스를 운영할 때의 어려운점과 도움을 주는 다양한 도구들에 대해 알아보도록 하겠습니다.
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
모바일 앱 성능 분석 방법에 대해서 설명을 드립니다
- 기존 서버 APM과 모바일에서의 성능 기준의 차이
- 모바일 제약사항및 아키텍처
- 안드로이드는 어떻게 발전해 왔나
- Vectorization
- Loop
- Redex / Optimized Layout
- Garbage Collector
- 제조사가 보장해야 되는 성능
- 개발사가 고민해야 되는 영역
- 실사례 설명
- 갤럭시노트 2의 점유율
- Xiaomi 폰의 국내 4위 시장 점유율
- 여러가지 모바일 성능 리포트
15. Agenda
• 안드로이드와 패턴
– Binder (Broker 패턴)
– Simple Framework (Parameter Object)
– 불편하지 않은 화면 갱신 (Publisher-
Subscriber)
• 분석 방법
– STAN을 이용한 Android App 분석 방법
25. 1. AIDL 파일 생성
package aexp.aidl;
// Adder service interface.
interface IAdderService
{
int add( in int i1, in int i2 );
}
26. 2. AIDL 툴로 Java 파일 생성
수동 코드 생성
sdk/platforms/android- <n>/tools/aidl 에 간다
C:Android-projectApiDemossrccomexampleandroidapisapp>aidl -IC:Android-
projectApiDemossrc IRemoteService.aidl
Eclipse에서는 aidl만 넣고 빌드하면 자동으로 소스 생성 됨
27. 3. Service class를 구현
……
public class AdderServiceImpl extends Service {
@Override
public IBinder getBinder() { return mBinder; }
@Override
public void onCreate() { super.onCreate(); Log.d( "ADDERSERVICEIMPL","onCreate" ); }
/** The IAdderService is defined through IDL */
private final IAdderService.Stub mBinder = new IAdderService.Stub() {
public int add( int i1, int i2 ) {
return i1+i2; }
};
@Override
protected void onDestroy() {
super.onDestroy( Log.d( "ADDERSERVICEIMPL","onDestroy" ); }
}
79. Instability
•패키지의 안정성을 측정
•다른 패키지에 영향을 미치지 않고,
해당 패키지를 쉽게 변경 수 있는가?
•Instability I = Ce / (Ca+Ce)
•Ce = Efferent Coupling (Outgoing
Dependencies)
•Ca = Afferent Coupling (Ingoing Dependencies )
80. Instability
Instability I = Ce / (Ca+Ce)
당신의 패키지가 다른 사람이 많이 쓴다면,
즉 Outgoing, Ce가 많다면, 여러분의 패키지는 변경하기 어렵다.
반대로 Outgoing하는 Ce가 적다면, 여러분의 패키지는 쉽게 변경해도 된다.
즉 0.0에서 0.3이면 안정적인 버전, 0.7에서 1.0이면 불안정적인 상태다
81. 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만 있다.