반응형 전체 글436 2025-02-11 (화) 📌 TIL (Today I Learned) - Kotlin 문법 총정리 & 코루틴 실행 방법🚀 오늘 배운 점Kotlin 기본 문법을 총 정리하면서 주요 개념을 다시 한번 확실히 다졌다.코루틴을 main 함수에서 실행하는 방법을 배웠고, runBlocking과 CoroutineScope.launch의 차이점을 이해했다.안드로이드에서 UI 스레드에서 실행하려면 Dispatchers.Main을 사용해야 함을 알게 됐다.오늘은 Kotlin의 주요 문법을 정리하고, 추가로 코루틴을 main 함수에서 실행하는 방법을 배웠다.✅ 1. Kotlin 기본 문법 정리🔹 변수와 상수val: 변경 불가능한 값 (Immutable)var: 변경 가능한 값 (Mutable)const val: 컴파일 타임 상수 (탑 레벨에서.. 2025. 2. 11. 2025-02-10 (월) 1️⃣ MySQL 테이블의 DDL 구조 확인 방법MySQL에서 이미 생성된 테이블의 구조를 확인할 때, DESC table_name 대신 DDL (Data Definition Language) 구조를 확인하는 방법은 다음과 같다:SHOW CREATE TABLE table_name\G;✅ SHOW CREATE TABLE 명령어는 테이블 생성 시 사용된 CREATE TABLE 문을 그대로 출력해 주며, \G를 붙이면 가독성이 좋은 형태로 출력됨.✅ 기본 키, 외래 키, ENGINE, DEFAULT CHARSET 등의 정보를 포함한 전체 DDL이 표시됨.2️⃣ DB 테이블에 analytics_yn 필드 추가 시 기본값 고민프론트엔드에서 토글 버튼을 통해 정보 수집 여부(true / false)를 설정하는 기능.. 2025. 2. 10. 2025-02-06 (목) 🚀 오늘의 배운 점 정리✔ @Valid는 내부 객체에는 @field:Valid가 필요!✔ @field:Url을 사용해야 Validation이 정상적으로 동작.✔ shouldContainExactly로 검증 메시지를 정확하게 체크하는 것이 좋음.✔ 테스트 코드에서 요청 객체를 함수로 만들어 중복을 줄이면 가독성이 좋아짐.1️⃣ Kotlin Validation에서 @Valid 사용 시 내부 객체 적용 방법@Valid는 @RequestBody에 붙이면 자동 검증되지만, 내부 객체(data class 안의 data class)에도 검증을 적용하려면 필드 레벨에서 @field:Valid를 추가해야 한다.@ResponseBody @Valid request: RequestDTO (1차 객체)RequestDTO > .. 2025. 2. 6. 2025-02-05 (수) 🎯 오늘 배운 핵심 정리✅ ConstraintValidator의 initialize()는 한 번만 실행됨.✅ as, as?, is를 활용한 안전한 캐스팅 방법.✅ when을 사용한 타입 분기 처리.✅ Kotlin에서 정규식(Regex)을 활용한 URL 검증.✅ 백엔드에서 빈 문자열("")을 체크하도록 isValid() 개선.✅ Markdown에서 태그를 활용한 토글 기능.📌 1. ConstraintValidator에서 initialize()의 동작 원리initialize()는 검증기가 처음 생성될 때 한 번만 실행된다.@Url(type = ProjectOS.IOS) 같은 애너테이션을 적용하면 그 설정 값을 가져와 초기화할 수 있다.이후 isValid()가 호출될 때마다 검증이 수행됨.override.. 2025. 2. 5. 2025-02-04 (화) 📝 1. Private 필드 값을 설정하는 확장 함수기존의 setPrivateField 함수를 확장 함수로 리팩토링.apply → let으로 변경하여 코드 가독성을 개선.✅ 리팩토링된 코드fun O.setPrivateField(fieldName: String, value: T) { this::class.declaredMemberProperties .find { it.name == fieldName } ?.javaField ?.let { it.isAccessible = true it.set(this, value) }}📝 2. epochSecond 변환 시 LocalDateTime이 하루 차이 나는 문제원인:.. 2025. 2. 4. 2025-02-03 (월) Reflection동적으로 객체의 Property 와 Method 에 접근할 수 있는 방법Property: 멤버 변수 정보보통 객체의 Property, Method 에 접근할 때는 컴파일 과정에서 찾아내 해당 객체가 존재함을 보장하지만, 런타임 과정에서만 알 수 있거나 타입과 관계없이 객체를 다루어야 하는 경우가 있다.Json 직렬화 라이브러리: 어떤 객체든지 간에 Json 으로 변환할 수 있어야 함.Libraryjava.lang.reflect packageKotlin Class 는 컴파일 과정에서 자바 바이트 코드로 변환되기 때문에 Kotlin 에서도 java package 호환됨.kotlin.reflect packagejava 에 존재하지 않는 Property 나 Nullable 한 타입에 대한 Re.. 2025. 2. 3. 2025-01-22 (수) every { ... } 블록 내에서 사용된 객체가 mockk()로 생성된 객체가 아닐 때 발생every { KeyGenerator.next() } returns base.projectIdMissing mocked calls inside every { ... } block: make sure the object inside the block is a mockio.mockk.MockKException: Missing mocked calls inside every { ... } block: make sure the object inside the block is a mockKetGenerator.next() 가 정적 메서드라면 mockkStatic(KeyGenerator::class) 를 호출해야 함.중요 .. 2025. 1. 22. 2025-01-21 (화) Controller WebMvcTest IssueKotlin 진행@WebMvcTest(BusinessUserController::class) class AuthAnnotationTest @Autowired constructor( private val mockMvc: MockMvc ) : DescribeSpec({런타임 에러 발생 (일부 코드)Kotest 는 테스트 클래스를 인스턴스화 할 때 기본 생성자를 필요로 함.현재 AuthAnnotationTest 클래스의 생성자는 @Autowired constructor(mockMvc: MockMvc) 형태로 매개변수를 받고 있기 때문에 Kotest 에서 인스턴스를 생성할 수 없음.Warning: Kotest autoscan is enabled. This.. 2025. 1. 21. 2025-01-20 (월) 제네릭Generic 은 코드의 타입을 미리 지정하지 않고, 사용하는 시점에 타입을 결정하는 기능이다.타입 안정성 유지 및 유연한 재사용이 가능한 코드 작성 가능.제네릭을 사용할 경우O 가 정확한 객체 타입을 가지도록 강제할 수 있음.T 가 필드의 타입과 일치해야만 하도록 강제할 수 있음.컴파일 타입에서 타입 검증이 가능해 런타임 오류를 최소화함.예제obj 가 어떤 타입의 객체인지 알 수 없고, value 가 필드 타입과 일치하는지 보장할 수 없음.잘못된 타입이 들어와도 컴파일러가 체크하지 못하고, 런타임에서만 오류가 발생.제네릭을 사용하면, obj 와 value 가 올바른 타입인지 컴파일 시점에 확인할 수 있음.fun setPrivateField(obj: Any, fieldName: String, val.. 2025. 1. 20. 이전 1 ··· 10 11 12 13 14 15 16 ··· 49 다음 728x90 반응형