일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CloudWatch
- APM
- 기록으로 실력을 쌓자
- MySQL
- Pinpoint
- 정보처리기사실기 기출문제
- Java
- kotlin querydsl
- CKA
- 정보처리기사 실기 기출문제
- Kubernetes 자격증
- kotlin spring
- IntelliJ
- Linux
- PETERICA
- CKA 기출문제
- AWS EKS
- 공부
- minikube
- 정보처리기사 실기
- Kubernetes
- Elasticsearch
- Spring
- 코틀린 코루틴의 정석
- aws
- mysql 튜닝
- kotlin coroutine
- tampermonkey
- kotlin
- AI
- Today
- Total
목록전체 글 (741)
피터의 개발이야기
ㅁ 들어가며ㅇ 코틀린 코루틴의 정석 책을 보고 정리한 글입니다.ㅇ 이번 글에서는 1장 스레드 기반 작업의 한계와 코루틴의 등장을 읽거, 코루틴이 단일 스레드, 멀티스레드의 한계인 스레드 블러킹을 해결하는 원리인 경량 스레드에 대해서 정리하였다. ㅁ 단일 스레드의 한계와 멀티스레드 ㅇ 메인 스레드는 일반적으로 프로세스의 시작과 끝을 함께 하는 역할을 한다.ㅇ JVM의 프로세스는 기본적으로 메인 스레드 단일 스레드로 실행된다. ㅇ 단일 스레드의 한계 ㄴ 단일 스레드는 동시작업을 수행할 수 없기 때문에 하나의 작업이 오래 걸리면 다른 작업의 처리도 지연된다.ㅇ 멀티 스레드 ㄴ 오래 걸리는 작업은 멀티 스레드를 이용하여 백그라운드로 처리한다. ㄴ 실시간성으로 처리해야 할 화면 그리기나 사용자 이벤..
ㅁ 들어가며ㅇ 코틀린 코루틴의 개념을 정리하였다.ㅇ 최근 트랜드인 비동기처리에 있어서 코틀린 코루틴의 차이점에 대해 알아보았다. ㅁ Coroutine이란?Coroutines은 Co + Routines 약자로, Co 는 Cooperation을 의미하고, Routines는 하나의 테스크를 의미한다. 풀어서 말하자면, 서로 협력하는 함수를 의미한다. ㅁ 간결하고 읽기 쉬운 코드ㅇ 코루틴을 사용하면 복잡한 비동기 작업을 마치 동기 코드처럼 작성할 수 있다. ㅇ 이는 콜백 지옥을 피하고 코드의 가독성을 크게 향상시킨다.ㅇ 아래는 코틀린의 가독성을 확인하기 위해 Callback 지옥, RxKotlin, coroutine을 비교해 보았다. Callback 지옥fun goWork(person: Person) { ..
ㅁ 들어가며ㅇ Terraform으로 minikube를 구축하는 테스트를 진행해 보았습니다. ㅁ minikube 환경ㅇ minikube의 기본으로 설치하였다. ㅇ minikube를 우선 시작한 후에 terraform으로 내부 리소스를 생성한다. ㅁ Provider 설정terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "2.11.0" } }}provider "kubernetes" { config_path = "~/.kube/config" config_context = "minikube"}ㅇ providers.tf 파일을 생성하였다. ㅁ k8s 설정resour..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ Configuration propertiesㅇ Kotlin에서 애플리케이션 속성을 관리하는 데 권장되는 방법은 읽기 전용 properties을 사용하는 것입니다. @ConfigurationProperties("blog")data class BlogProperties(var title: String, val banner: Banner) { data class Banner(val title: String? = null, val content: String)}ㅇ BlogProperties.kt을 생성합니다. ㅁ Application Enable Properties 설정@SpringBootApp..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ RestController 생성@RestController@RequestMapping("/api/article")class ArticleController(private val repository: ArticleRepository) { @GetMapping("/") fun findAll() = repository.findAllByOrderByAddedAtDesc() @GetMapping("/{slug}") fun findOne(@PathVariable slug: String) = repository.findBySlug(slug) ?: throw ResponseStatusEx..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ Gradle 수정plugins { ... kotlin("plugin.allopen") version "1.9.22"}allOpen { annotation("jakarta.persistence.Entity") annotation("jakarta.persistence.Embeddable") annotation("jakarta.persistence.MappedSuperclass")}ㅇ 코틀린에서 JPA를 사용하기 위해서는 allopen 플러그인을 사용해야한다.ㅇ allopen 플로그인과 JPA를 사용하기 위한 추가 annotation을 설정하였다.ㅇ 수정파일: build.gradle.k..
ㅁ 들어가며ㅇ 코틀린을 처음부터 코드로 잘 코딩할 수는 없다.ㅇ 기존 자바코드를 코틀린으로, 코틀린에서 자바로 변경하는 방법을 정리하였다.ㅁ Java -> Kotlin ㅇ 코드 > Java 파일을 Kotlin 파일로 변환을 클릭한다.ㅇ Kotlin 파일 변경 전에 Kotlin 구성을 수행해야 한다. ㅇ Kotlin 구성을 수행 완료 후에 개별 파일들을 Kotlin으로 변환처리하면 변환된 코틀린 소스를 확인 할 수 있다. ㅇ 왼쪽은 자바 소스이고 오른쪽은 변환된 코틀린 소스이다. ㅁ Kotlin -> Javaㅇ Kotlin에서 자바로 변경하기 위해서는 바이트코드로 중간 과정을 거쳐야 한다.ㅇ 원하는 Kotlin 소스를 선택 후 도구 > Kotlin > 바이트코드표시를 선택한다.ㅇ 오른쪽에 바이트코드 표시..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ 확장 함수란? 확장 함수는 이미 정의된 클래스나 인터페이스에 상속 없이 함수를 추가 정의할 수 있도록 Kotlin에서 제공되는 기능입니다.예를 들어, 수정할 수 없는 타사 라이브러리의 클래스 또는 인터페이스에 대한 새 함수를 작성할 수 있습니다. 이러한 함수는 마치 원래 클래스의 메서드인 것처럼 일반적인 방법으로 호출할 수 있습니다. 이 메커니즘을 확장 기능 이라고 합니다. 기존 클래스에 대한 새 속성을 정의할 수 있는 확장 속성도 있습니다. ㅁ Extensions.kt// 영어 날짜 형식으로 텍스트 생성, 기존 format() 유형에 함수를 추가fun LocalDateTime.forma..
ㅁ 들어가며ㅇ 패러렐즈 데스크톱 19 크랙 글에서 설치과정을 정리하였지만, 크랙의 다운로드가 막혀 사용할 수 없게 되었습니다.ㅇ 새로운 저장소를 이용한 설치방법을 따로 정리하였습니다.ㅇ 제가 직접 설치해 보지는 않았습니다. 24.05.30 Update...Git이 막혔습니다. 크랙 소스가 없어졌습니다. ㅁ 새로운 Crack ㅇ 기존 크랙을 대체할 다른 크랙버젼이 있어서 링크 남겨 놓습니다.ㅇ 저는 이미 설치가 되어 있어 적용은 해 보지 않았습니다.ㅇ 설치는 해당 링크의 소스를 다운 받아서 진행하셔야 합니다. !! 아래의 글은 git의 번역본 입니다 !! ㅁ Parallels Desktop 19.0.0-54570용 크랙버젼✅ ARM64✅ x86_64✅ 네트워크✅ USB✅ 시스템 무결성 보호(SIP)ㅁ 사용..
ㅁ 들어가며ㅇ Terraform를 로컬에서 사용해 보기 위해 docker로 설치하는 과정이다. ㅁ Terraform 설치# 패키지 저장소 HashiCorp 탭을 설치$ brew tap hashicorp/tap# terraform 설치$ brew install hashicorp/tap/terraform# 설치확인$ terraform --helpUsage: terraform [global options] [args]The available commands for execution are listed below.The primary workflow commands are given first, followed byless common or more advanced commands.~~~~~# 개별 명령어 상..
ㅁ 들어가며ㅇ 내가 사용하는 맥미니의 Docker가 가끔 꺼져있을 때가 있다.ㅇ 원격으로 사용 중 Docker를 켜려면 remote로 원격접속하여 켰는데... 너무나 쉬운 방법이 있었다. ㅁ Docker가 꺼져 있는 상황$ docker psCannot connect to the Docker daemon at unix:///Users/peterseo/.docker/run/docker.sock. Is the docker daemon running?ㅇ Docker가 꺼져 있으면 데몬을 실행시켜 달라고 한다. ㅁ 터미널에서 Docker 실행$ open -a Docker
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 [kotlin] Springboot 프로젝트 생성-1에서는 프로젝트를 구성하고 로컬에서 구동까지 확인하였다.ㅇ 이번 글에서는 tutorial의 나머지 부분을 정리하였다. ㅁ Kotlin으로 JUnit 5 테스트 작성ㅇ Spring Boot에서 기본적으로 JUnit 5을 사용한다.package com.peterica.blogimport org.assertj.core.api.Assertions.*import org.junit.jupiter.api.Testimport org.springframework.beans.factory.annotation.Autowiredimport org.springframework.boot.test.context.Sp..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 프로젝트 생성 과정을 정리하였다. ㅁ Spring Initializrㅇ 인텔리제이에서 신규 프로젝트를 생성하였다.ㅇ 종속성에 키워드 검색을 하고 Enter를 누르면 선택이 되었다. - Spring Web - Mustache - Spring Data JPA - H2 Database - Spring Boot DevTools ㅇ 생성된 프로젝트 모습 # 참고로 command line을 통해 spring 프로젝트도 생성이 가능하다.$ mkdir blog && cd blog$ curl https://start.spring.io/starter.zip \ -d language=kotlin \ -d type=gradle-proje..
ㅁ 들어가며ㅇ 이 글은 코틀린 공식문서를 공부하며 번역한 글이다.ㅇ 이 문서는 Kotlin의 Null 안정성(Null safety)에 대해 설명하고 있다. ㅁ Null Safety란?ㅇ Kotlin의 타입 시스템은 null 참조로 인한 위험을 제거하기 위해 설계되었다.ㅇ Kotlin의 타입(type) 시스템은 Billion Dollar Mistake라고도 알려진 null 참조 코드의 위험성을 없애기 위한 것이다.ㅇ Java를 포함한 많은 프로그래밍 언어에서 가장 일반적인 함정은 NullPointerException(줄임 NPE)이다. ㄴ null 참조의 멤버에 접근하면 null 참조 예외(null reference exception)가 발생한다.ㅇ Kotlin에서 NPE을 예방하기 위해 Null..
ㅁ 타입 추론(type inference) 자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요는 없다. 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추하여 생략 가능하다. 변수를 정의하고 값을 정의하면 var a= 10 데이터 타입이 자동으로 지정되어 생략이 가능하다. 이를 타입 추론(type inference)라고 한다. # 타입 선언var a: Intvar b: String # 타입 추론var a = 10var b = "String" 다만, var a: Int, var b: String 처럼 값이 없으면 타입을 명확히 적어줘야 한다. ㅁ val과 var# 기본적 선언val point: int = 1;# 가변 변수var a: Int = 1var b = 2var c: I..