일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Orace 18c
- 무료 오라클 설치
- Oracle 18c 설치
- 오라클 캐릭터셋 확인
- Oracle Express Edition
- ora-01722
- Oracle 윈도우 설치
- Oracle 18c HR
- 무료 오라클 데이터베이스
- ORA-00922
- 비전공자를 위한 데이터베이스 입문
- oracle
- Oracle 사용자명 입력
- Oracle 초기 사용자
- Oracle 테이블 띄어쓰기
- ORA-12899
- Oracle 18c HR schema
- 오라클 캐릭터셋 변경
- Oracle 테이블 대소문자
- 오라클 캐릭터셋 조회
- 윈도우 Oracle
- 서평단
- oracle 18c
- Oracle 사용자명
- Today
- Total
목록Development (122)
The Nirsa Way
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다. 람다(Lambda)와 고차 함수(Higher-Order Function) 예시이번 포스팅에서는 코틀린 기준의 람다와 고차함수에 대해 정리합니다. 기본적인 개념은 람다는 이름없는 함수, 고차 함수는 매개변수 또는 반환 값이 함수인 것을 뜻합니다. 아래의 예시를 보며 람다와 고차 함수를 하나씩 확인하도록 하겠습니다. 1. 람다 예시람다의 경우 이름 없는 함수로써 아래와 같이 표현될 수 있습니다. 아래의 코드를 확인해보면 square(5)를 호출하고 있는데, (Int) 부분이 매개변수의 타입을 뜻하며 -> Int는 반환 타입을 뜻합니다.fun main() { // val 변수명: 매개변수타입 -> 반환타..
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다. 데이터 클래스, 오브젝트 클래스(data class, object class) 1. data class코틀린의 데이터 클래스는 흔히 사용하는 DTO를 생각하시면 됩니다.자바의 경우 getter, setter, equals, hashcode 등을 직접 생성하거나 롬복이라는 외부 라이브러리에 의존해야 했던 반면, 코틀린은 data class를 따로 제공하여 보다 간편하고 짧은 코드로 사용할 수 있습니다.즉 아래와 같이 data class를 선언하고 주 생성자를 작성하여야 합니다. 데이터를 담는 클래스인만큼 주 생성자에 1개 이상의 필드가 존재해야 합니다.data class User( val id: In..
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다. 코틀린의 상속과 오버라이딩코틀린의 클래스와 메서드는 기본적으로 final 입니다. 그렇기에 상속과 오버라이딩이 불가하므로 상속과 오버라이딩을 허용하기 위해서는 open을 사용해야 합니다.open class Animal { // 상속 허용 open fun sound() { // 오버라이딩 허용 println("Some generic animal sound") }} 1. 상속자바에서는 extends 키워드를 사용하여 상속을 하지만, 코틀린에서는 : 기호를 사용하여 부모 클래스를 상속 받습니다. 아래와 같이 Dog 클래스와 Cat 클래스의 뒤에 : Animal()을 붙여 Animal 클..
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다. 코틀린의 클래스와 생성자(주 생성자, 보조 생성자, init 블록)코틀린에서는 클래스와 생성자를 어떠한 방식으로 사용하는지 예제를 보며 확인해보도록 하겠습니다. 1. 클래스기본적으로 클래스를 선언하는 방식은 자바와 동일하게 class를 사용하며, 그 안에 필드와 메서드들로 구성됩니다. 필드의 선언 및 초기화는 코틀린의 문법을 따라 타입을 명시해주면 됩니다. 문법을 제외하면 여기까지는 자바와 크게 차이가 없습니다.class Person { // var : 가변 (저장된 값 수정 가능) // String : 해당 변수의 타입은 String으로 지정 var name: String = "Nirsa" ..
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다. 코틀린 기본 문법 (if, when, for, white, 함수 선언과 호출)기본 문법은 다른 언어들과 큰 차이가 없으므로 해당 포스팅에서는 간단히 예제만 보고 넘어가도록 하겠습니다. 1. ifif문은 자바와 동일 합니다. fun main() { var score = 75 if (score >= 90) { println("A 학점") } else if (score >= 80) { println("B 학점") } else { println("C 학점") }}또는 아래와 같이 조건문을 표현식으로 사용하여 변수에 저장하는 방법도 가능합니다. 조건..
※ 해당 코틀린 포스트들은 기본적으로 자바를 알고 있다는 가정하에 간단히 예제만 제공하여 설명됩니다. 코틀린이란?코틀린은 JetBrains에서 만든 JVM 언어로써 JVM 위에서 동작하기 때문에 Java와 100% 상호작용이 가능합니다. 그렇기에 코틀린에서 자바 클래스를 호출하는 방식도 가능하며 일반적인 자바와 똑같이 소스 파일(.kt) → 컴파일(Bytecode) → 클래스 파일(.class)이 생성이 됩니다.자바에 비해 간결한 코드, 불변 보장, 타입 추론 생략, Null-Safe, 함수형 프로그래밍 지원 등의 이유로 최근 코틀린을 사용하는 기업들이 많이 늘어난 추세입니다.// Kotlinfun main() { println("Hello, Kotlin!")}// Javapublic class H..
[Spring Boot] 코틀린 Mockk 기반 단위 테스트스프링 부트 환경에서 보통 많이 쓰이는 목킹 라이브러리는 Mockito와 Mockk을 사용하게 됩니다. 대부분 자바 진형에서는 Mockito를 많이 사용하지만 Mockk는 final 클래스, 확장 함수, 코루틴 테스트 등 코틀린에 친화적인 목킹 라이브러리로써 코틀린 진형에서 테스트 코드를 작성할 때 많이 사용됩니다.Mockk에서 자주 사용되는 어노테이션은 다음과 같습니다.@Mockk : Mock 객체를 생성할 필드에 사용@InjectMockks : 테스트 대상 객체 생성 및 Mockk 객체 주입@ExtendWith(MockkExtension::class) : JUnit5 환경에서 Mockk 활성화// 예시 코드@ExtendWith(MockKExt..
이메일 인증 구현 - Redis 유효 시간 적용하기이미 로컬에 redis가 설치되어 있다는 전제하에 진행합니다. 윈도우 환경에 redis를 설치하는 것은 https://github.com/microsoftarchive/redis/releases 으로 접속하셔서 msi를 다운 받아 실행하시면 됩니다.build.gradle에 redis 의존성과 application.properties쪽에 설정을 추가해주세요.implementation("org.springframework.boot:spring-boot-starter-data-redis:3.5.4")spring.data.redis.host=localhostspring.data.redis.port=6379 RedisConfig를 생성하여 빈을 등록해줍니다.@Co..

이메일 인증 구현 - Naver SMTP인증 구현을 위해 네이버 로그인 및 메일로 이동하여 좌측 하단의 환경설정을 클릭합니다. POP3/IMAP 설정을 클릭 후 사용함으로 변경하고 확인을 눌러주세요. 저장을 클릭하면 하단에 아래와 같은 정보가 표시됩니다. (선택) 앱 비밀번호를 위해 2단계 인증 및 앱 비밀번호 설정을 진행합니다.2단계 인증이 안되어 있으신 분들은 "설정"으로 나올텐데, 2단계 인증을 먼저 등록 해주세요. 직접 입력은 편하신 대로 입력 후 "생성하기" 버튼을 클릭하면 앱 비밀번호가 생성됩니다. 이제 스프링 부트에서 이메일을 전송할 때 해당 앱 비밀번호를 사용할 예정입니다. 스프링 부트로 돌아가 build.gradle에 아래와 같이 의존성을 추가 해주세요.// https://mvnrepos..

실시간 메시지 병렬 처리 실험 - 2 (Partition과 Consumer 인스턴스의 상관 관계)Partition과 Consumer 인스턴스의 차이를 확인하기 위한 부하 테스트 입니다. 셋팅은 실시간 메시지 병렬 처리 실험 - 1 (셋팅, JMeter, plugins-manager) 을 참고해주세요.코드는 적절한 파티션 수를 구하는 방법에서 작성한 그대로 사용하며 OrderConsumer만 처리 지연을 발생시키기 위해 아래와 같이 변경합니다.@Componentpublic class OrderConsumer { @KafkaListener(topics = "order-topic", groupId = "order-group", concurrency="1") public void listen(Orde..