본문 바로가기

kotlin24

[Kotlin] Use-Site Target이 존재하지 않을 경우 검증 우회 가능 Data Class의 경우 NotBlank와 같은 검증 Annotation을 Use-Site Target과 같이 사용하지 않을 경우, 생성자 구문에 검증 코드가 작성되는 문제가 있음 // 생성자에 NotEmpty와 NotBlank가 적용되는 잘못된 코드 data class UserInfoDto ( @NotEmpty(message="값이 비어있으면 안됩니다.") @NotBlank @Email(message="이메일 주소를 입력해주세요.") var email : String?, var password : String?, ) 반드시 Use-Site Target을 명시하여 필드 변수에 대한 검증을 수행하도록 해야 함 // 변수에 NotEmpty와 NotBlank가 적용되는 올바른 코드 data class Use.. 2023. 2. 21.
Spring Boot + Kotlin의 모니터링 도구, Spring Actuator, Prometheus, Grafana (2/2) 이전 포스팅에서 Spring Actuator, Prometheus, Grafana에 대해서 설명드렸습니다. Spring Boot + Kotlin의 모니터링 도구, Spring Actuator, Prometheus, Grafana (1/2) Spring Boot에서 Web Application이 정상적으로 동작하고 있는지 확인하기 위해 모니터링을 해야 하는 경우가 있습니다. 이번 포스팅에서는 Sprintg Boot에 설치할 모니터링 관련 라이브러리와 Open Source 기 hacksms.tistory.com 이번 포스팅에서는 실제로 모니터링 시스템을 구축해보겠습니다. Monitoring System 구축 1. 먼저 https://start.spring.io/ 에서 Spring Boot Project를 아.. 2022. 9. 18.
Spring Boot + Kotlin의 모니터링 도구, Spring Actuator, Prometheus, Grafana (1/2) Spring Boot에서 Web Application이 정상적으로 동작하고 있는지 확인하기 위해 모니터링을 해야 하는 경우가 있습니다. 이번 포스팅에서는 Sprintg Boot에 설치할 모니터링 관련 라이브러리와 Open Source 기반의 도구에 대해 설명드릴 계획이고 다음 포스팅에서는 실제 구축까지 할 생각입니다. Spring Actuator Spring Boot의 서브 프로젝트로 Spring Boot Application이 제공하는 여러가지 정보를 쉽게 모니터링할 수 있도록 도와주는 라이브러리로써 HTTP나 JMX를 이용하여 모니터링 및 관리할 수 있는 기능을 제공합니다. Prometheus 대상 시스템으로부터 각종 모니터링 지표를 수집하여 저장하고 검색할 수 있는 모니터링 및 알림 도구로 Open.. 2022. 9. 18.
[Android] Content Provider 취약점 먼저 Content Provider에 대한 개념이 부족하신 분들은 아래의 포스팅을 읽고 오시길 추천드립니다. [Android] 4대 Component Android에는 앱을 구성하는데 필요한 4개의 구성 요소(Component)가 존재하는데 이를 4대 Component라고 부릅니다. 4대 Component는 Activity(액티비티), Service(서비스), BroadCast Receiver(방송 수신자), Cont.. hacksms.tistory.com 간단히 정리하자면 Content Provider는 서로 다른 Application에서 저장된 Data를 공유할 수 있는 방법을 제공하는 Component 입니다. 만약 A 앱에 구현된 Content Provider를 모든 앱에서 접근할 수 있다면, C.. 2022. 8. 10.
[Kotlin] 딥링크 (DeepLink) 딥링크 (DeepLink) 딥링크란 단순하게 특정 페이지 또는 특정 콘텐츠에 직접적으로 도달할 수 모든 링크를 의미합니다. 그리고 Android에서 딥링크란 Custom Scheme와 같은 특정 주소를 통하여 앱을 실행하거나 앱의 특정 화면을 호출할 수 있는 기능을 의미합니다. Android에서 DeepLink를 구현하기 위해서는 먼저 Custom Scheme과 host를 설정해야 합니다. Scheme:host:port/path = https://hacksms.tistory.com:443/14 Manifest.xml activity_second.xml SecondActivity.kt class SecondActivity : AppCompatActivity() { override fun onCreate(s.. 2022. 8. 7.
[Kotlin] WebView 사용 방법 WebView WebView란 프레임워크에 내장된 웹 브라우저 Component로써 View 형태로 App에 임베딩 하는 것이 가능합니다. 이러한 WebView는 App 안에서 HTML을 호출하여 App을 구현하는 Hybrid 형태의 App을 개발하는데 주로 사용됩니다. 다만, PC환경과 OS가 다르기 때문에 HTML5 호환성 등 일부 기능의 제약을 가지고 있습니다. WebView 사용 방법 먼저 WebView를 사용하기 위해서는 인터넷에 대한 권한을 부여해야 합니다. Manifest.xml 이후, WebView를 사용할 Activity와 해당 Activity의 Layout에 WebView 관련 코드를 추가합니다. activity_main.xml MainActivity.kt val webView = fi.. 2022. 8. 7.
Kotlin에 대하여 알아보자 Kotlin이란 간결한 문법과 높은 안전성을 보장하는 Java와 100% 호환이 가능한 오픈 소스 기반의 프로그래밍 언어 입니다. 2017년 Google에서 Android의 공식 언어로 Kotlin을 추가하였으며, 현재는 구글 내부의 안드로이드 프로젝트에서도 Java 대신 Kotlin을 사용하고 있을만큼 영향력이 커져가고 있습니다. Kotlin의 특징 정적 타입 언어 (Static Typed Language) Kotlin의 경우 컴파일 시점에 변수의 타입이 결정되는 정적 타입 언어입니다. 정적 타입 언어는 타입 에러로 인한 문제를 컴파일 시 해결할 수 있기 때문에 안정성이 높다는 장점과 컴파일 시 미리 타입을 결정하기 때문에 실행 속도가 빠르다는 장점을 가지고 있습니다. // Kotlin 코드(정적 타입.. 2022. 8. 1.
[Spring Boot With Kotlin] Spring Interceptor 로그인을 수행한 이후에만 사용 가능한 기능들이 있을 경우 로그인이 정상적으로 이뤄졌는지 확인하는 것은 세션을 통해 간단히 확인할 수 있습니다. 그러나 해당 기능들과 매핑된 모든 메서드에서 로그인 여부를 확인하는 것은 코드도 길어질 뿐만 아니라 매우 귀찮은 작업이라고 할 수 있습니다. 만약 이와 같이 특정 경로에 접근하기 전에 확인해야 될 내용(ex: 권한 확인, 로그 수집)이 있다면 Spring Interceptor를 이용하여 쉽게 확인할 수 있습니다. Spring Interceptor는 "Request가 처리되기 이전"과 "Request가 처리된 이후" 그리고 "모든 요청이 마무리 된 이후"에 필요한 작업을 정의하여 처리할 수 있습니다. Method 설명 preHandle Request가 처리되기 이전.. 2022. 7. 25.
[Spring Boot With Kotlin] RESTFul API, JSON 데이터 처리하기 Data Entity package com.hacksms.AssetsManaged.Model import java.time.LocalDate import javax.persistence.Column import javax.persistence.Entity import javax.persistence.GeneratedValue import javax.persistence.Id import javax.persistence.ManyToOne @Entity class Users( @Column(nullable=false, unique=true) var loginId: String, var password: String, var permission: Int, // 1 is admin user, 2 is norma.. 2022. 7. 24.