프로그래밍 156

안드로이드 액티버티 생명 주기와 BackStack

안드로이드 Activity Lifecycle (액티버티 생명주기)와, Back Stack & Task 조대협 (http://bcho.tistory.com) Back Stack Activity의 라이프 사이클 개념을 이해하기 전에, 먼저 BackStack이라는 개념을 이해해야 한다. 안드로이드 애플리케이션은 모바일 애플리케이션의 특성상 하나의 화면, 즉 Activity만 화면에 활성화가 되게 된다. 활성화 된 화면에서 작업하다가, Back 버튼등을 눌러서 이전화면으로 돌아갈 수 있는데, 이런 돌아가는 구조를 지원하기 위해서, 내부적으로 화면이 전환이 되더라도 기존의 화면을 없애는것이 아니라 메모리에 저장해놨다가, 돌아갈때 저장된 화면을 띄워 주는 구조가 된다 이런 구조를 구현하기 위해서 내부적으로 Back..

안드로이드 프로그래밍 구조의 기본

안드로이드 프로그래밍 구조의 기본 조대협 (http://bcho.tistory.com) 해당 포스팅은 https://class.coursera.org/androidpart1-005/lecture/13 의 내용을 바탕으로 정리하였습니다 안드로이드 애플리케이션의 주요 구성 요소안드로이드 애플리케이션을 이루는 주요 구성 요소는 크게 다음 4가지이다. Activity : 가장 메인이 되는 컴포넌트로, 모바일 앱의 특성상, 모바일앱은 하나의 UI가 떠서 사용자로 부터 입력을 받고, 출력을 담당한다. 즉 하나의 화면 인터페이스에 해당한다고 보면된다.Service : 백그라운드에서 도는 컴포넌트로 UI가 없이 동작한다. 가장 쉬운 예로 음악 플레이 처럼 화면이 없는 상태에서 백그라운드로 도는 케이스가 가장 대표적인 ..

안드로이드 플랫폼 기본 아키텍쳐

안드로이드 플랫폼 기본 아키텍쳐 조대협 (http://bcho.tistory.com) 안드로이드 플랫폼의 기반 아키텍쳐를 살펴보면 다음 그림과 같다. 원본 : https://en.wikipedia.org/wiki/Android_(operating_system)#/media/File:Android-System-Architecture.svg 리눅스 커널 일단 가장 아랫단에, Linux 커널 이 올라가 있다. 일반적인 Linux 커널과 크게 다르지는 않지만, 모바일 디바이스에 최적화된 전력 관리 기능이나 안드로이드에 최적화된 Binder IPC (프로세스간 커뮤니케이션) 부분등이 포함되어 있다. 시스템 라이브러리 리눅스 커널위에는 C로 구현된 몇가지 네이티브 라이이브러리들이 올라가 있다. 3차원 그래픽을 위한..

안드로이드 프로그래밍 시작하기

안드로이드 프로그래밍 시작하기 (둘러보기) 조대협 (http://bcho.tistory.com) 요즘 서버쪽 기술은 다소 시들해진것도 같고, 하는 일이 모바일 서비스인지라 (얼마전에도 그랬지만..) 알아야할것 같아서, 안드로이드 프로그래밍을 보기 시작했다. 아무래도 서버 개발자 출신이다 보니 안드로이드 개발이라는 생소한 분야를 이 나이에 공부하면서 정리하는 내용이니 혹여나 내용이 허접하더라도.. 이해해주시기를.. (초보자 시각에서 정리한 내용입니다. ) 구글에서 안드로이드 IDE인 안드로이드 스튜디오를 다운받아서 설치하면, 통합 개발 환경을 사용할 수 있다. 이 IDE는 보니, JetBrain의 IntelliJ를 기반으로 만들어진 환경이다. (구글이 이런 투자는 잘한듯..) 그러다 보니 이클립스를 쓰면서..

grpc 설치하기

Google RPC 설치하기(조대협 http://bcho.tistory.com) 지난 GRPC 소개에 이어서 오늘은 JAVA에서 GRPC를 사용하기 위한 설치 방법을 설명한다. https://github.com/grpc/grpc-common/tree/master/javahttps://github.com/grpc/grpc-commonhttps://github.com/grpc/grpc-common/blob/master/java/javatutorial.mdhttps://github.com/grpc/grpc-java 글들을 참고하였으며, 컴파일 환경 설정등을 위해서 생각보다 시간이 많이 소요된다. (삽질,Visual Studio 설치 포함 한 2~3시간 걸린듯) grpc hello world / java grp..

프로그래밍 2015.04.02

grpc (google rpc)에 대한 분석 #1

GRPC 분석 #1 앞글에서도 간단하게 GRPC에 대해서 소개했는데, 제법 괜찮은것 같아서 조금 더 분석해보기로 결정하였다.주목할만한 특징 중의 크게 두가지가 있다. 모바일 지원 여부먼저, 모바일이 지원된다. 안드로이드나, iOS (Object-C)를 지원하기 때문에, 모바일 클라이언트에서 호출이 가능하고, 바이너리 프로토콜을 사용하며, 하나의 Connection으로 RPC 호출을 처리하기 때문에, JSON/HTTP REST에 비해서 네트워크 대역폭 소모가 적고, 매번 커넥션을 열어야 하는 부담이 없기 때문에, 효율적이다. (속도는 당연히 빠를듯) 확인을 해봐야 겠지만, 양방향 스트리밍을 지원한다는 것을 봐서는 푸쉬같이 클라이언트쪽으로 메세지를 쏘는 기능도 가능할듯 하다. Google Protocol B..

프로그래밍 2015.04.01

구글의 HTTP 기반의 RPC 프로토콜 GRPC

간단한 GRPC 소개 어제 오늘 약간 커뮤니티를 달군 내용 중의 하나가 구글에서 새롭게 발표한 GRPC라는 개념이다. GRPC는 한마디로 이야기하자면, 예전 자바 RMI나, CORBA의 웹 버전 정도? RPC란, Remote Procedure Call의 약자로, 원격에 있는 함수를 호출해주는 기능을 이야기 한다.RPC는 일반적으로, request parameter와 response parameter를 알아야 하기 때문에, 양쪽의 인터페이스 규약을 IDL 등의 언어로 정의한후, 해당 프로그래밍 언어가 부를 수 있는 형태의 코드로 생성을 해줘야 하는데, 이를 Skeleton과 Stub코드라고 한다. HTTP 기반의 REST가 유행하면서 RPC는 많이 사라 졌는데, 반대로 REST의 경우, 호출 하는 para..

프로그래밍 2015.03.31

Spring boot 살펴본 느낌

Spring boot 살펴본 느낌 요즘 Spring Boot가 하도 유행이길래,잠깐 REST API Expose하는 시나리오와 DB 연동 시나리오등 몇가지 일반적으로 웹 개발하는데 사용되는 시나리오들을 살펴 보았다.전체적인 느낌은 node.js나 ruby on rails와 같은 모던 웹 기술의 생산성을 따라잡기 위해서 무단히 노력했다는 점. 그래서 코드 생산성은 유사하거나 약간 열세? 정도 일거 같은 느낌인데, 왠지 개운하지 않은 뒷맛이 남는다고나 할까? 컨셉적으로 복잡하고 정교한 프로그래밍을 위한 프레임웍을 이용해서 단순성을 부여하다 보니, 빠지거나 아니면 디폴트 설정으로 인해서 위험한 부분이 있을 것 같은 느낌인 든다. 일단 코드 생성 부분을 보면Maven 프로젝트를 이용해서 생성한 후에, JSON ..

Ruby 개발환경 설정하기 (윈도우7에서)

Windows 7에서 Ruby 개발환경 설정하기 MongoDB in Action 몽고디비 인 액션저자카일 뱅커 지음출판사제이펍 | 2012-04-20 출간카테고리컴퓨터/IT책소개MongoDB나 NoSQL에 경험 없는 개발자를 위한 쉽고 실전... 이책을 공부하다보니, 예제가 ruby라서, 예상치 않게 Ruby를 살펴보고 있는데, 윈도우즈7에서 Ruby 개발 환경 설정하는 것이 쉽지 않아서 설정 방법을 요약하고자한다. 1. Ruby Install 하기http://rubyinstaller.org/downloads/ 에서 Ruby Install 바이너리를 받아서 설치한다. 2.2.0-p481(x64)여기까지는 보통 문제 없이 잘된다. 향후에 모듈을 설치하려면 보통 컴파일 에러가 나오면서 잘 안되는 경우가 많다..

루비 기본 문법 정리

Ruby 언어 기본 문법 루비언어의 특성을 자바나 다른 언어에 비해서 다른 부분만 요약 정리 Class,Object - 클래스 변수는 @@를 사용해서 정의 @@name = 'hello'클래스 메서드는 클래스로만 호출 가능. object에서는 호출 불가클래스 변수나 메서드에 대해서는 http://dimdim.tistory.com/entry/Ruby-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4-%EB%B3%80%EC%88%98 보고 다시 정리 필요 Object- 생성 : New를 이용해서 class로 부터 생성 Class명.new 로 생성. 예 object=MyClass.new - 객체 변수는 @를 사용해서 정의 예 @hello = hello- Putter와 Sette..