SlideShare ist ein Scribd-Unternehmen logo
1 von 85
안드로이드를 위한
오픈 소스, 그리고 패턴
요즘 업계 흐름은
알고 가시죠 ^^
Google이
    꿈꾸는
Android의 미래?
Google은

 왜 MODU의
   특허를
50억에 샀을까?
MODU의 Jacket 시스템
이게
왜 중요하지?..
사실 Google의
서비스는 Cloud에..
Android는
Google Platform
서비스를 가정으로
 전달하는 Hub
Android는
   더 이상
Gadget을 위한
 OS가 아니다.
Embedded
  System을
포괄할 OS로 봐야 함.
하지만..
제조사 입장에서
Android@Home
은 독이 든 성배.
Welcome to
My Journey!
Agenda
• 안드로이드와 패턴
 – Binder (Broker 패턴)
 – Simple Framework (Parameter Object)
 – 불편하지 않은 화면 갱신 (Publisher-
   Subscriber)


• 분석 방법
 – STAN을 이용한 Android App 분석 방법
# 1.
Binder , Intent
Contents
Activity
           Provider




           Broadcast
Service
           Reciever
하지만…

   우리가
주목해야 할 것은..
왜 Binder가
중요하지?
Android 내의
  모든 상황을
감독하는 감시관!
갑자기 뚝 하고
나온 녀석이 아니다.

    아주..
일반적인 아키텍쳐일뿐.
Binder Architecture

                        IDL
                        Compiler




                             in args
                             operation()
 Client                                      Object
                  OBJ
                  REF    out args,
                         return



                                            IDL
                                           SKEL
           IDL            Binder
          STUBS         INTERFACE             Object Adapter


Binder
Binder를
느낄 수 있는 예제

 AIDL 샘플 참고

http://bit.ly/85E5SV
1. AIDL 파일 생성

package aexp.aidl;

  // Adder service interface.
  interface IAdderService
 {
      int add( in int i1, in int i2 );
  }
2. AIDL 툴로 Java 파일 생성
수동 코드 생성
sdk/platforms/android- <n>/tools/aidl 에 간다

C:Android-projectApiDemossrccomexampleandroidapisapp>aidl -IC:Android-
    projectApiDemossrc IRemoteService.aidl



Eclipse에서는 aidl만 넣고 빌드하면 자동으로 소스 생성 됨
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" );         }

}
4. Manifest에 서비스 등록
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="aexp.aidl">
  <application>
    <activity class=".AIDLServiceActivity" android:label="AIDLServiceActivity">
       <intent-filter>
          <action android:value="android.intent.action.MAIN" />
          <category android:value="android.intent.category.LAUNCHER" />
       </intent-filter>
    </activity>

          <service class=".AdderServiceImpl"/>
  </application>
</manifest>
5. Client에 호출을 위해
               Binder로 이름 찾는 로직
class AdderServiceConnection implements ServiceConnection
  {
    public void onServiceConnected(ComponentName className,
                    IBinder boundService )
    {
      service = IAdderService.Stub.asInterface((IBinder)boundService);
           Log.d( "ADDERSERVICECLIENT","onServiceConnected" );
    }

      public void onServiceDisconnected(ComponentName className)
      {
        service = null;
             Log.d( "ADDERSERVICECLIENT","onServiceDisconnected" );
      }
 };
6. 시작, 해제 로직 넣을 것
private void initService()
{
     conn = new AdderServiceConnection();
     Intent i = new Intent();
     i.setClassName( "aexp.aidl", "aexp.aidl.AdderServiceImpl" );
     bindService( i, null, conn, Context.BIND_AUTO_CREATE);
}

private void releaseService()
{
     unbindService( conn );
     conn = null;
}
7. 클라이언트에서
                  서비스 호출하기

private void invokeService( int i1, int i2 ) {
      TextView t = (TextView)findViewById(R.id.invokeserv_result);
      if( service == null )
            t.setText( "Service not available" );
      else {
            try {
              int result = service.add( i1,i2 );
              t.setText( Integer.toString( result ) );
            } catch( DeadObjectException ex ) {
              t.setText( "Service invocation error" );
            }
    } ….
Broker
                    transfer                     transfer
                    message                      message
Client-side                  Broker                         Server-side
Proxy                                                       Proxy
                            main_event_loop
pack_data                                                   pack_data
                            update_repository
uppack_data                                                 uppack_data
                            register_service
send_request                                                call_service
                            acknowledgment
return                                                      send_response
                            find_server
                            Find_client
calls                       Forward_request
                            Forward_response


                 uses API          calls        uses API              calls

Client                      Bridge                          Server

                            pack_data                       initialize
call_server
                            uppack_data                     enter_main_loop
start_task
                            forward_message                 run_service
use_Broker_API
                            transmit_message                use_Broker_API
Registration
        Service, BR, Activity…                     Broker

start
               Initialize()                             main_evnet_loop()




                                   register_service()



                                                            update_repository()

               acknowledgment




               enter_main_loop()
Sending Request
          Client              Client-Side      Broker                  Server-Side          Server
                              Proxy                                    Proxy


call_server
                   send_request
                                       pack_data
                                    forward_request
                                                          find_server
                                                        call_service
                                                                                unpack_data
                                                                              run_service



                                                        forward_response        pack_data


                                      return               find_client



                                     unpack_data
                     result
이렇게 쓰긴 힘든 Binder..

     사실 Intent가
 Binder의 추상화 도구!
Intent를 잘 알면.
   Android의
   많은 기능을
 활용할 수 있다.
Intent로 Activity 호출
Intent intent =
new Intent(getApplicationContext(), MyOtherActivity.class);
startActivityForResult(intent, SHOW_SUBACTIVITY);




     Activity 이름이 바뀌면…
그래서 묵시적 Intent
Manifest 파일에 Intent Filter 등록
<activity android:name="DirectoryDialog"
    android:theme="@android:style/Theme.Translucent">

   <intent-filter>
          <action android:name="filemanager.action.PICKFILES" />
          <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>




      Activity 만 되는
   </activity>


호출
Intent filemanager = new Intent("filemanager.action.PICKFILES");




          게 아님
startActivity(filemanager);
# 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도 있으나
 약간의 코딩이 필요.
# 3.
REST의 귀찮음.
Stub



Controller          DAO



  Proxy      REST

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

http://simple.sourceforge.net/
이렇게 됩니다.
# 4.
화면 갱신
My Market을 기억하시나요?
시작하자마자
Loading.. 화면이 뜨면
 누가 접속하나요??
시작하자 마자 화면이 나오
       게.
그럼. 추가된 데이터를
 보기 위해 사용자가
직접 당겨서 동기화를?
Synch        Notificat
                          Service        ion
                                    2. Insert



Activity
            1. Register

  XXX
 Adapter    3. Notification
                                       Contents
                                       Provider

           4. GetData..
# 5.
분석은 어떻게?
모바일 어플리케이션
  분석 플랫폼
적용방법은
 간단!
• http://www.localytics.com/에서

•             탭에서 어플리케이션 등록
• http://files.localytics.com/ClientLibraries/android/에서 소
  스코드 다운

• Android 프로젝트 src/폴더에 소스코드 추가

• AndroidManifest.xml에
  <uses-permission android:name="android.permission.INTERNET“>
       추가
• Main Activity에 Import


• 클래스 내부에 session object 추가


•   OnCreate 함수에 아래 소스 추가
• onResume 메소드 Override




• onResume 메소드 Override
• TagEvent남기기
# 6.
1000 피트의 뷰.
높이 (30000 feet)봐야 할까?
높이 봐야 할까?
자세히 (0 feet) 봐야 할까?
자세히 봐야 할까?
3만 피트 vs 0 피트의 뷰.
      3만 피트
      • 다이어그램의 Line의 의미는?
       • 의존성?
       • 데이터 흐름?
       • 버스와 같은 공유자원?



          0 피트
          • 너무 상세한 정보임.
          • 전체적인 구조를 보지 못함.
해결책은..
적절한 1000 피트의 뷰
STAN (Structure Analysis for Java)




STAN - http://stan4j.com/eclipse/eclipse-integration.html
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이 될 가망성이 높은 곳
경고!!!

환자의 외부 증상만
고치는 의사가 되지 말자!!

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

숫자에 의존하다가
오히려 아키텍쳐가 무너진다.
Q &A

Weitere ähnliche Inhalte

Was ist angesagt?

Dependency Injection 소개
Dependency Injection 소개Dependency Injection 소개
Dependency Injection 소개beom kyun choi
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10hungrok
 
안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법mosaicnet
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10hungrok
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13hungrok
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로NHN FORWARD
 
안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 threadDaeHee Jang
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발NAVER D2
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3uEngine Solutions
 
아해2019 SpringAOP 문겸
아해2019 SpringAOP 문겸아해2019 SpringAOP 문겸
아해2019 SpringAOP 문겸MoonGyeom1
 

Was ist angesagt? (13)

Dependency Injection 소개
Dependency Injection 소개Dependency Injection 소개
Dependency Injection 소개
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10
 
안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법안드로이드 설계코드 노하우 및 개발방법
안드로이드 설계코드 노하우 및 개발방법
 
Java advancd ed10
Java advancd ed10Java advancd ed10
Java advancd ed10
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로
 
안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread안드로이드App개발 10.activity데이터송수신 thread
안드로이드App개발 10.activity데이터송수신 thread
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
Xe hack
Xe hackXe hack
Xe hack
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
Software Architect day - 웹 프레임워크 종결 - metaworks3
Software Architect day - 웹 프레임워크 종결 -  metaworks3Software Architect day - 웹 프레임워크 종결 -  metaworks3
Software Architect day - 웹 프레임워크 종결 - metaworks3
 
아해2019 SpringAOP 문겸
아해2019 SpringAOP 문겸아해2019 SpringAOP 문겸
아해2019 SpringAOP 문겸
 

Andere mochten auch

스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!Seho Yoon
 
Reactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel ArchitectureReactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel ArchitectureGyuwon Yi
 
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...Parma Couture
 
Eurordis. enfermedades raras.
Eurordis. enfermedades raras.Eurordis. enfermedades raras.
Eurordis. enfermedades raras.José María
 
Grafico diario del dax perfomance index para el 13 03-2013
Grafico diario del dax perfomance index para el 13 03-2013Grafico diario del dax perfomance index para el 13 03-2013
Grafico diario del dax perfomance index para el 13 03-2013Experiencia Trading
 
Google Analytics Attribution
Google Analytics AttributionGoogle Analytics Attribution
Google Analytics AttributionMashMetrics
 
Auto insurance narrated show
Auto insurance narrated showAuto insurance narrated show
Auto insurance narrated showxpaperbackwriterx
 
Clientshare Academy Briefing by Practice Paradox
Clientshare Academy Briefing by Practice ParadoxClientshare Academy Briefing by Practice Paradox
Clientshare Academy Briefing by Practice ParadoxPractice Paradox
 
Breaktherules 150909013617-lva1-app6892
Breaktherules 150909013617-lva1-app6892Breaktherules 150909013617-lva1-app6892
Breaktherules 150909013617-lva1-app6892Vera Kovaleva
 
Kourtney Kelty's Resume 2015
Kourtney Kelty's Resume 2015Kourtney Kelty's Resume 2015
Kourtney Kelty's Resume 2015Kourtney Kelty
 
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)Duong Anh Thien
 
Protectfromrobots 151126145914-lva1-app6892
Protectfromrobots 151126145914-lva1-app6892Protectfromrobots 151126145914-lva1-app6892
Protectfromrobots 151126145914-lva1-app6892Vera Kovaleva
 
NPGBC - Monthly Theme Commentary - May 2016
NPGBC - Monthly Theme Commentary - May 2016NPGBC - Monthly Theme Commentary - May 2016
NPGBC - Monthly Theme Commentary - May 2016newpineygrove
 
150811pbdesignthinking 150811053102 lva1 app6892
150811pbdesignthinking 150811053102 lva1 app6892150811pbdesignthinking 150811053102 lva1 app6892
150811pbdesignthinking 150811053102 lva1 app6892Vera Kovaleva
 
難しそうで難しくない少し難しいClojure並行処理
難しそうで難しくない少し難しいClojure並行処理難しそうで難しくない少し難しいClojure並行処理
難しそうで難しくない少し難しいClojure並行処理Naoyuki Kakuda
 
Genymotion 2.0 설치 가이드
Genymotion 2.0 설치 가이드Genymotion 2.0 설치 가이드
Genymotion 2.0 설치 가이드YoungSu Son
 

Andere mochten auch (20)

스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
스마트폰 팁 #3: 스마트폰 해제패턴 풀기!
 
Reactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel ArchitectureReactive Model-View-ViewModel Architecture
Reactive Model-View-ViewModel Architecture
 
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...
Presentazione del Dipartimento Politiche Coesione su Accordo di Partenariato ...
 
Eurordis. enfermedades raras.
Eurordis. enfermedades raras.Eurordis. enfermedades raras.
Eurordis. enfermedades raras.
 
Grafico diario del dax perfomance index para el 13 03-2013
Grafico diario del dax perfomance index para el 13 03-2013Grafico diario del dax perfomance index para el 13 03-2013
Grafico diario del dax perfomance index para el 13 03-2013
 
Google Analytics Attribution
Google Analytics AttributionGoogle Analytics Attribution
Google Analytics Attribution
 
Auto insurance narrated show
Auto insurance narrated showAuto insurance narrated show
Auto insurance narrated show
 
Clientshare Academy Briefing by Practice Paradox
Clientshare Academy Briefing by Practice ParadoxClientshare Academy Briefing by Practice Paradox
Clientshare Academy Briefing by Practice Paradox
 
diane_Nouns
diane_Nounsdiane_Nouns
diane_Nouns
 
Breaktherules 150909013617-lva1-app6892
Breaktherules 150909013617-lva1-app6892Breaktherules 150909013617-lva1-app6892
Breaktherules 150909013617-lva1-app6892
 
about PEACE
about PEACEabout PEACE
about PEACE
 
Priortoyourpitch
PriortoyourpitchPriortoyourpitch
Priortoyourpitch
 
Kourtney Kelty's Resume 2015
Kourtney Kelty's Resume 2015Kourtney Kelty's Resume 2015
Kourtney Kelty's Resume 2015
 
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)
Cẩm nang doanh nghiệp toàn cầu hóa với facebook (share bởi anhthien8)
 
Protectfromrobots 151126145914-lva1-app6892
Protectfromrobots 151126145914-lva1-app6892Protectfromrobots 151126145914-lva1-app6892
Protectfromrobots 151126145914-lva1-app6892
 
NPGBC - Monthly Theme Commentary - May 2016
NPGBC - Monthly Theme Commentary - May 2016NPGBC - Monthly Theme Commentary - May 2016
NPGBC - Monthly Theme Commentary - May 2016
 
150811pbdesignthinking 150811053102 lva1 app6892
150811pbdesignthinking 150811053102 lva1 app6892150811pbdesignthinking 150811053102 lva1 app6892
150811pbdesignthinking 150811053102 lva1 app6892
 
Vivega builders
Vivega buildersVivega builders
Vivega builders
 
難しそうで難しくない少し難しいClojure並行処理
難しそうで難しくない少し難しいClojure並行処理難しそうで難しくない少し難しいClojure並行処理
難しそうで難しくない少し難しいClojure並行処理
 
Genymotion 2.0 설치 가이드
Genymotion 2.0 설치 가이드Genymotion 2.0 설치 가이드
Genymotion 2.0 설치 가이드
 

Ähnlich wie 안드로이드 오픈소스 패턴 - 0.1

[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경YoungSu Son
 
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발LGU+
 
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게Sungju Jin
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with SpringKeesun Baik
 
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기OnGameServer
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)LanarkSeung
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.Hojin Jun
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
 
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Tae Ho Kang
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 SeongHyun Ahn
 
Html5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_apiHtml5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_apiSeiyon Lee
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena DollyJi-Woong Choi
 
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...Amazon Web Services Korea
 
20201121 코드 삼분지계
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계Chiwon Song
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 

Ähnlich wie 안드로이드 오픈소스 패턴 - 0.1 (20)

[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
[NEXT] 화면 재갱신이 되는 안드로이드 앱 만들기 - 네트워크에 독립하는 구조로 변경
 
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발 구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
 
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
 
REST API Development with Spring
REST API Development with SpringREST API Development with Spring
REST API Development with Spring
 
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
안준석님 - 안드로이드 프로세스들의 통신 메커니즘 : 바인더 이야기
 
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
Create-React-App으로 SSR을 구현하며 배운 점 (feat. TypeScript)
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.HOONS닷넷 오픈소스 프로젝트 Part1.
HOONS닷넷 오픈소스 프로젝트 Part1.
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스Angular js 의존관계 주입과 서비스
Angular js 의존관계 주입과 서비스
 
파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄 파이썬 웹 프로그래밍 2탄
파이썬 웹 프로그래밍 2탄
 
Html5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_apiHtml5 kig 120315_res_tful_api
Html5 kig 120315_res_tful_api
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
AWS Greengrass, Lambda and ML Inference at the Edge site (김민성, AWS 솔루션즈 아키텍트)...
 
20201121 코드 삼분지계
20201121 코드 삼분지계20201121 코드 삼분지계
20201121 코드 삼분지계
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 

Mehr von 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
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 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
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법 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
 

Mehr von 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의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
 
[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 다루기)
 

Kürzlich hochgeladen

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 

Kürzlich hochgeladen (6)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

안드로이드 오픈소스 패턴 - 0.1

Hinweis der Redaktion

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