본문 바로가기

분류 전체보기

(129)
[SpringBoot] 스프링부트에서 스케쥴러 사용하기 Schedule의 사전적 정의는 "일정[시간 계획]을 잡다"라는 뜻입니다. Spring Boot를 통해 Spring에서 지원하는 스케줄러를 간편하게 작성할 수 있습니다. Schedule 기능 켜기 자바 설정(Java configuration) 관련 클래스에 @EnableScheduling를 추가하면 스케쥴링 기능을 사용할 수 있습니다. @EnableScheduling @SpringBootApplication public class SchedulerApplication { public static void main(String[] args) { SpringApplication.run(SchedulerApplication.class, args); } } 구현하기 @Scheduled 어노테이션을 메소드에 선언..
Rabbitmq + SpringBoot 샘플 프로젝트 만들기 Rabbitmq 설치하는 방법은 이전 포스팅에서 확인할 수 있습니다. 이번에는 SpringBoot와 연동해 queue에 메세지를 보내고 queue에서 메세지를 가져오도록 해보겠습니다. 1. Rebbitmq를 실행합니다. $ rabbitmq-server 2. 소스코드를 다운받고 실행하면 됩니다. https://github.com/keepseung/rabbitmq-starter GitHub - keepseung/rabbitmq-starter: springboot에 rabbitmq를 연동한 스타터 프로젝트입니다. springboot에 rabbitmq를 연동한 스타터 프로젝트입니다. Contribute to keepseung/rabbitmq-starter development by creating an acco..
RabbitMQ 설치하기 프로젝트를 하면서 RabbitMQ를 공부했던 내용을 정리하기 위해 정리했습니다. RabbitMQ는 무엇인가? rabbitmq는 Advance Message Queuing Protocol(AMQP)을 구현하는 메세지 중개인입니다. AMQP는 생산자(Producers), 중개자(Broker) 그리고 소비자(Consumer)를 사용해서 메세지를 전달하는 것을 표준화한 프로토컬입니다. AMQP 표준은 다음 세 개의 주요 특징을 준수하도록 설계되었습니다. 보안, 신뢰도, 상호 운용 핵심 특징 보안 : 인증, 인가, LDAP 그리고 Rabbit 플러그인을 사용한 TLS를 지원함 신뢰도 : 1. 메세지가 성공적으로 메세지 브로커에게 전달되었는지, 2. 메세지가 소비자에게 성공적으로 처리되었는지 확인함 상호 운용 : ..
[Android] 갤러리에서 사진 가져오기 - 기본 갤러리 앱 사용하기 안드로이드 앱에서 기존 사진을 가져오는 방법으로 다음 두 가지가 있습니다. 1. 기본 갤러리 앱 사용 2. 커스텀 갤러리 화면 만들기 이번에는 기본 갤러리 앱을 사용해 사진을 가져오도록 해보겠습니다. 암시적 Intent를 사용하면 쉽게 갤러리 앱을 사용할 수 있습니다. 1. 기본 갤러리 앱 실행 Intent 객체를 생성하고 갤러리 액티비티 실행하기 위한 정보를 Setting 합니다. startActivityForResult의 두 번째 인자로 나중에 확인을 위한 request Code 값을 넣습니다. private fun startDefaultGalleryApp() { val intent = Intent() intent.type = "image/*" intent.action = Intent.ACTION_G..
안드로이드 권한 (런타임 퍼미션) 요청하기 [Kotlin] 권한 요청이란?? 안드로이드 앱에서 다른 앱이나 시스템에 영향을 줄 수 있는 권한의 경우 위험한 권한으로 분류되어 사용자에게 사용 요청을 하고, 사용자에게 허가를 받아야 합니다. 사용자에게 권한 사용을 요청해야 하는 권한을 위험 권한, 런타임 권한이라고 합니다. 권한을 요청할 때 지켜야 할 주요 원칙 중 하나는 다음과 같습니다. 사용자가 권한이 필요한 기능과 상호작용하기 시작할 때 컨텍스트에 따라 권한을 요청합니다. 즉 앱 시작할 때 앱에 필요한 모든 권한을 요청하는 것이 아니라 사용자가 앱 내에서 특정 기능을 수행할 때 이에 대한 권한을 요청해야 한다는 것입니다. 예를 들어 프로필 사진 업로드를 하려고 할 때 카메라 권한을 요청하는 것과 같습니다. 구글에서 권장하는 권한 요청 프로세스는?? 구글에서 권..
Android 소리나는 카운트 다운 타이머 만들기 (CountdownTimer + SoundPool) 안녕하세요 이번엔 소리 나는 카운트 다운 타이머를 만들어보겠습니다. 구현할 기능 1~60분까지 타이머를 설정할 수 있다. 1초마다 화면을 갱신한다. 상황에 따른 타이머 효과음을 적용한다. (진행 중, 타이머 종료) 사용하는 기술 CountDownTimer SoundPool SeekBar CountDownTimer 일정한 간격에 대한 정기적인 알림과 함께 미래의 시간까지 카운트 다운을 예약하기 위한 타이머입니다. 다음은 텍스트 필드에 30초 카운트다운을 표시하는 예시입니다. object : CountDownTimer(30000, 1000) { override fun onTick(millisUntilFinished: Long) { mTextField.setText("seconds remaining: " + ..
코틀린[Kotlin]에서 Delegated properties 사용하기 위임된 프로퍼티 (Delegated properties) Kotlin은 특정 객체에 대한 프로퍼티의 set과 get 메서드의 호출을 위임할 수 있는 Delegated properties 메커니즘을 제공합니다. 이 경우 delegate 객체에는 getValue 메서드가 있어야 합니다. 변경 가능한 프로퍼티의 경우 setValue도 필요합니다. import kotlin.reflect.KProperty class Example { var p: String by Delegate() // 1 override fun toString() = "Example Class" } class Delegate() { operator fun getValue(thisRef: Any?, prop: KProperty): String ..
코틀린[Kotlin]에서 Delegation 패턴 사용하기 Delegation 디자인 패턴에서 Delegate Pattern은 어떤 기능을 자신이 처리하지 않고 다른 객체에 위임을 시켜 그 객체가 일을 처리하도록 하는 것입니다. Delegate은 사전적 정의로 위임하다. 대표자 라는 뜻입니다. Derived 클래스는 모든 public 멤버를 지정된 객체에 위임하여 Base 인터페이스를 구현할 수 있습니다. interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b fun main() { val b = BaseImpl(10) Derived(b).print() } Derived의 ..