반응형 전체 글96 [회고] 어쩌다 개발 6년차 (광운대 특강) 자료특강2023년 11월에 광운대에서 "어쩌다 개발 6년차" 라는 주제로 특강을 했다. 총 1시간 15분정도 진행했고 그 중에서 30분정도는 질의응답 시간이었다. 특강을 듣는 학생 수를 가늠하긴 어렵지만 대략 70명에서 80명쯤, 100명이 안되게 참석한 것 같이 느껴졌다. 강의실도 작지 않았고 학생들도 가득 차 있어서 긴장을 하며 발표 자리로 갔다.교수님께서 나에 대한 소개를 해주시며 마이크를 넘겨주셨다. 발표 연습한대로 진행하기 시작했는데 긴장이 너무 되었다. 키보드로 다음 슬라이드를 눌러 넘겨야 하는데 버튼을 클릭하기가 어려웠다. 학생들에게 특강 참여 유도를 하기 위해서 스타벅스 커피 상품권을 사서 갔다. 맨 앞에 앉은 학생들에게 앞에 앉아줘서 고맙다면서 상품권 3장을 나눠줬는데, 멘트가 좀 약했던.. 2024. 4. 6. Unable to obtain ZonedDateTime from TemporalAccessor 문제 상황 String 으로 된 날짜 값을 ZonedDateTime 으로 변환하고자 했다. "20240405183955" ==> 2024-04-05 18:39:55 코드 ZonedDateTime 에서 제공하는 parse 메소드로 바로 변환하고자 했다. fun from(datetime: String, formatter: DateTimeFormatter): ZonedDateTime { return ZonedDateTime.parse(datetime, formatter) } 테스트 코드 @Test @DisplayName("시간과 포매터를 제공하면 ZonedDateTime 으로 변환할 수 있다.") fun fromTest() { // given val datetime = "20240405183955" val f.. 2024. 4. 5. 2024년 1분기 회고. 나에 대해 알아가는 시간 나는 롯데 자이언츠의 오랜 팬이어서 (부산에서 태어나서) 야구를 정말 좋아한다. 보는 것 뿐만 아니라 플레이를 하는 것도 좋아한다. 야구 선수 중 좋아하는 선수는 많지만 그 중 한 명이 오타니 쇼헤이이다. 그 이유는 바로 그가 고등학생 때 작성했다고 하는 만다라트 계획표 때문이다. 만다라트 계획표는 하나의 큰 목표를 이루기 위해 필요한 세부 목표를 정하고, 그 세부 목표를 이루기 위해 더 작은 단위의 행동이 적혀있다.아래는 오타니가 작성해둔 계획표인데, 최종 목표로는 8구단 트래프트 1순위 이고, 이를 이루기 위해서는 몸 만들기, 제구, 구위 등의 세부 목표가 있다. 또, 몸 만들기를 이루기 위해서는 몸관리, 영양제 먹기, 유연성 등의 더 작은 목표와 행동이 적혀있다. 오타니의 만다라트 계획표처럼 상세히.. 2024. 4. 1. 15. 실시간 데이터 저장 파이프라인 구축하기 (feat. 카프카 활용기) 들어가며코인은 주식과는 다르게 24시간 거래가 가능합니다. 때문에 코인에 대한 기술적 분석을 하기 위해서는 24/7 발생되는 실시간 데이터를 수집하고 처리할 수 있어야 합니다. 카프카를 활용하여 실시간으로 코인 데이터를 수집하는 데이터 파이프라인 구축 사례를 공유합니다.무엇이 필요할까?어떤 코인 데이터를 어떤 방법으로 수집할 수 있을지 알아보자.Upbit OPEN API코인 데이터는 각 거래소에서 제공하는 OPEN API 를 통해 조회할 수 있다. 나는 코인 거래소 중 하나인 업비트에서 제공하는 API 를 사용하고자 한다. 업비트에서는 분(minute) 단위 캔들 데이터를 조회할 수 있는 API 를 제공하고 있다. (API 문서) 이 API 를 통해 각 코인의 분 단위 캔들 데이터를 최대 200개까지 조.. 2023. 8. 20. 14. GitHub Action 에서 스프링 배치 실행하기 지난 시간에 SpringBatch 5 를 기반으로 배치잡을 만들었습니다 (관련 포스팅). 보통 배치잡은 젠킨스 (Jenkins) 등의 별도 스케줄러를 통해 실행시키게 됩니다. 하지만 젠킨스를 활용하려면 젠킨스를 위한 별도의 서버를 두거나 로컬에 띄워두어야 하는 번거로움이 있습니다. 이번 시간에는 GitHub Action 을 활용하여 별도 서버를 두지 않고, 스프링배치를 활용하는 방법에 대해 알아보겠습니다. GitHub Action 이란? GitHub Action 은 배포를 위한 CI/CD, 빌드 테스트, 스크립트 실행 등 워크플로우 (workflow) 를 자동화시켜주는 툴입니다. Public 저장소의 경우는 무료이고, Private 저장소는 일정 시간까지만 무료로 제공됩니다. GitHub Free 요금제.. 2023. 8. 8. 13. SpringBatch 5 + Kotlin 적용하기 2022년 하반기에 SpringBoot 3.0 이 릴리즈 되었고 많은 변화가 있었습니다. (내용) 기본 Java 버전이 17 으로 올라갔고, SpringBatch 버전도 5 로 올라갔습니다. 이번 시간에는 SpringBatch 5 를 적용한 사례를 공유하고자 합니다. What's New in Spring Batch 5 SpringBatch 의존성 주입 SpringBatch 와 h2 데이터베이스 의존성을 주입한다. implementation("org.springframework.boot:spring-boot-starter-batch") implementation("com.h2database:h2") SpringBatchApplication 생성 배치잡은 실행이 되고 자동으로 종료되어야 하니 exitProc.. 2023. 7. 16. Docker Desktop 대체 OrbStack 도커 컨테이너를 로컬 환경에서 띄우기 위해 Docker Desktop 이라는 프로그램을 사용한다. Docker Desktop 공식 홈페이지 좀 더 가볍게 사용할 수 있는 프로그램으로 OrbStack 이라는 프로그램이 있다. 공식 사이트에 의하면 부팅 속도도 2초로 Docker Desktop (15초)에 비해 훨씬 빠르고 CPU 사용률이나 host-container 간 네트워크 속도도 빠르다고 한다. Docker Desktop vs. OrbStack 비교 문서 무료이기도 하고 가볍기도 하고 꽤 괜찮은 것 같다. 2023. 7. 15. Interface 를 활용한 Enum 리팩토링 Java Enum 을 Interface 를 활용하여 리팩토링 하게 된 사례를 공유합니다. 상황 리팩토링 대상이 되는 코드의 특징은 다음과 같다. 10개 이상의 Enum 클래스가 존재하며, Enum 클래스는 지속적으로 더 추가될 수 있음 모든 Enum 클래스는 code, name 이라는 필드를 공통으로 포함하고 있으며, 각 Enum 클래스에 따라 별도 필드가 포함될 수 있음 모든 Enum 클래스는 공통으로 NONE 이라는 Enum 타입을 가지고 있음 목표 위 조건에 해당하는 10개 이상의 Enum 클래스를 기반으로 특정 DTO 객체를 생성해야 한다. 각 Enum 클래스에 대해 List 리스트 객체를 생성해야 한다. public class MetaTypeDto { private String type; pri.. 2023. 6. 21. 이전 1 2 3 4 ··· 12 다음 반응형