알고리즘을 캡슐화해서, 서브클래스에서 언제든 필요 할때마다 사용할 수 있는 방법을 고민하신다면 디자인 패턴 중 하나인 템플릿 메소드 패턴을 제안드립니다. 이번 포스트는 템플릿 메소드 패턴에 대해서 간단히 알아보겠습니다. * Head First - Design Patterns 의 템플릿 메소드 패턴 기반으로 작성하였습니다. 자세한 설명은 도서를 참고해주세요. 템플릿 메소드 패턴 메소드에서 알고리즘의 골격을 정의합니다. 알고리즈의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있습니다. 후크 추상 클래스에서 선언되는 메소드긴 하지만 기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메소드입니..
구글에서 코틀린을 공식 언어로 추가하면서 Java로 열심히 개발했던 안드로이드 개발자에게는 새로운 언어를 배워야하는 환경이 조정되고 있습니다. 이미 많은 개발자분들은 자바 소스로 구성된 프로젝트를 코틀린 소스로 변경하고 운영중일 것입니다. '굳이 코틀린으로 변경할 필요 있겠어?' 라는 생각으로 자바 소스를 계속 유지하고 계신 분들도 있을 것입니다. 코틀린 vs Java 코틀린과 Java을 비교하는 방법 중 Java의 단점을 코틀린이 보완 할 수 있는지 확인하는 것도 방법이라 생각합니다. 이번 포스트는 Java와 다른 코틀린의 장점인 크게 2가지로 Null 안정성과 코드 간소화의 주제로 진행합니다. Null 안정성 Java 개발 하다보면 가장 많인 접하는 Exception은 Null Point Except..
transient 은 Serialize하는 과정 중 제외하고 싶은 항목에 선언하는 키워드입니다. Transient 을 사용하는 이유는? 보안정책 상 패스워드, 주민등록 번호와 같은 개인정보를 직렬화(Serialize) 과정에서 제외하고 싶은 경우에 적용합니다. 그 외에 직렬화 과정 후 데이터를 전송을 하고 싶지 않을 때 선언하여 예외처리 합니다. Transient 코드로 알아보기. 간단히 회원정보를 저장하는 Data을 갖고 Transient 되는 것을 확인하겠습니다. Model (Member) Main 아래의 이미지 처럼 직렬화가 잘 된 것을 확인할 수 있습니다. Name 변수에 transient keyword를 추가하여 결과를 보겠습니다. name field는 유지되지만 값은 null로 대입됩니다. 마..
STOMP을 Android 환경에서 사용하는 방법에 대해서 알아보겠습니다. 소개할 라이브러리는 Android STOMP 라이브러리 중 kotlin으로 작성된 라이브러리로 fork 하여 사용하였습니다. STOMP-KOTLIN 라이브러리 API DESC stomp-client-for-kotlin(fork) https://github.com/FaithDeveloper/stomp-kotlin 위에 명시된 라이브러리를 Android .gradle 에 dependencies 합니다. STOMP Client STOMP Client 사용법은 다음과 같이 나눌 수 있습니다. // 1. INIT val url = "ws://[domain]/connect/websocket" val intervalMillis = 1000L ..
채팅을 구현하는 방식은 XMPP, Websocket 등 다양한 방식으로 구현하고 있습니다. 이번 포스트는 필자가 직접 사용하였던 STOMP에 대해서 간략하게 공유하려고 합니다. 필자의 주관적인 이해한 내용을 적다보니 잘못 기입된 부분이 있을 수 있습니다. 잘못 된 부분에 대해 댓글로 남겨주시면 수정 하겠습니다. STOMP 무엇인가? Simple (or Streaming) Text Oriented Message Protocol 의 약자인 STOMP는 텍스트 기반의 메세징 프로토콜 입니다. STOMP 사용 환경은 TCP 나 WebSocket 과 같은 신뢰성있는 양방향 streaming network protocol 상에 사용될 수 있습니다. 문자로 설명으로 보는 것보다 STOMP 구조를 보면 이해하시는데 도..
직렬화(Serializable)에 대해서 가볍게 살펴보겠습니다. Effective Java 2/E에서 객체 직렬화 API에 대해서 이렇게 정의하고 있습니다. 바이트 스트림(byre stream)으로 인코딩(encoding)하거나, 바이트 스트림 인코딩에서 객체를 복원하는 프레임워크 입니다. 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serialization) 라고 하고, 그 반대는 역직렬화(deserialization) 입니다. 기본적인 직렬화 만드는 조건 기본적인 직렬화 조건은 java.io.Serializable 인터페이스를 상속받아야 합니다. 우아한형제들의 기술 블로그에서 가져온 소스를 기반으로 예를들면 다음과 같습니다. package woowahan.blog.exam1; /** 직렬화 할 회..
개발도 사회 분위기를 따라가며 업무가 주어지게 됩니다. 요즘 시대는 영상과 미디어에 민감하게 반응 하고 있습니다. 그렇다보니 App 또한 영상을 활용한 컨텐츠가 많이 나오고 있습니다. 저도 최근에 영상을 관련한 업무를 맡게 되면서 어떻게 처리해야할지 고민을 했었습니다. NDK로 활용한 프로젝트는 선택이었었는데 이제는 필수가 되어 제가 공부한 것을 조금씩 나누려고 합니다. 잘못된 정보와 질문 환영 합니다. OpenCV 그게 뭔데? OpenCV 을 활용하기 전에 OpenCV가 무엇인지 논하고 가겠습니다. OpenCV에 대한 정의를 위키백과에서는 다음과 같이 설명하고 있습니다. OpenCV OpenCV(Open Source Computer Vision)은 주로 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이..
Android RXJava 을 활용한 Variable Overable 만들기 위해서는 RxJava 의 PublishSubject 개념을 알고 있어야 합니다. RxJava을 통하여 ViewModel을 구현 시 Variable 변경에 따른 비동기 이벤트 처리 방법에 대해서 고민이 있을거 같습니다. RxJava 에서는 PublishSubject 을 Create() 하여 Data 를 보내고 비동기로 받을 수 있습니다. PublishSubject을 create() 메소드를 사용하여 생성합니다. 생성한 PublishSubject을 subscribe 로 구독상태로 설정합니다. 구독상태로 설정되면 PublishSubject 에 Data를 보내게 되면 비동기로 Data가 넘겨지게 됩니다. PublishSubject 생성..
- 코틀린
- Android Studio
- 미션차이나센터
- missionchina
- view
- 패턴
- 알고리즘
- swift
- java
- 선교
- IOS
- 고시문헬퍼
- issue
- IT
- Kotlin
- 점수판
- 임용고시
- flutter
- 탁구
- Android
- 고시문
- 디자인패턴
- 스코어헬퍼
- 안드로이드
- DI
- MCC
- RXjava
- missioon
- push
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |