Papago 번역 API를 애플리케이션에 적용해 보고자 한다. 👏🏼 . 참고로 Papago 번역 API는 일 허용량이 10,000 글자이다. 궁금하진 않겠지만.. 어떤 애플리케이션인지는.. 비밀🤫 . 네이버는 API를 쉽게 적용할 수 있도록 잘 설명이 되어 있는 레퍼런스를 제공해 주어서 사실 이 글은 무의미할 수도 있다.. 그래도 기록은 해야지..ㅋ_ㅋ.. Papago 번역 개요 . 우선 네이버 개발자 센터에서 애플리케이션을 등록이 필요한데, 애플리케이션을 등록은 매우 간단하다. 애플리케이션 등록 애플리케이션 등록 네이버 개발자 센터 상단 Application -> 애플리케이션 등록 -> 애플리케이션 등록 (API 이용신청) 페이지 애플리케이션 이름, 사용 API, 비로그인 오픈 API 서비스 환경 입력..
동시성 문제와 스레드 로컬 동시성 문제 다수의 스레드가 동시에 같은 인스턴스 필드 값을 변경하면서 발생하는 문제 스프링 빈처럼 싱글톤 객체의 필드를 변경하며 사용할 때 주의 Sample Service @Slf4j public class FieldService { private String nameStore; // 싱글톤 객체의 공용 필드 public String logic(String name) { log.info("저장 name={} -> nameStore={}", name, nameStore); nameStore = name; sleep(1000); log.info("조회 nameStore={}", nameStore); return nameStore; } } Test @Slf4j public clas..
Enum Class의 동시성 이슈 troubleshooting #1 Enum Class가 싱글톤 성질을 가지고 있기 때문에 발생했던 동시성 이슈를 기록하고자 한다. (동시성 이슈﹖ 다수의 스레드가 동시에 같은 인스턴스 필드 또는 공용 필드 값을 변경하면서 발생하는 이슈) . 그 이슈는 바로바로.. 🥁🥁🥁 . ... Issue 구매 완료 알림 푸시가 내가 주문한 상품명이 아닌 다른 사람이 주문한 상품명으로 전달된 이슈였다. 예를 들어 사용자는 불고기버거 기프트콘을 주문했지만, 무소음 키보드 주문이 완료되었다는 구매 완료 알리 푸시를 받게 된 것이다. 정상 푸시 메시지 불고기버거 세트 기프트콘 주문이.. 문제의 푸시 메시지 무소음 키보드 주문이.. Problem 푸시 톡 클래스는 Enum 클래스인데, 아래와..
Spring Batch Test Spring Batch를 테스트해 보는 시간을 가져보려고 한다. Spring Batch와 아직 어색어색하니까..😬 조금씩 친해지면서 테스트 관련 내용을 업데이트할 예정이다.🙄 준비 배치 테스트를 위해 spring-batch-test 의존성이 필요 testImplementation("org.springframework.batch:spring-batch-test") 통합 테스트 통합 테스트에 필요한 어노테이션들을 먼저 간략히 살펴보면, 일반 스프링 테스트 코드를 작성하면서 많이 보았던 익숙한 어노테이선들도 있을 것이다. @Slf4j 로깅을 위해 선언 @ExtendWith(SpringExtension.class) Junit5의 라이프사이클에 Test에서 사용할 기능 확장을 위해..
Spring Batch 향로님 Spring Batch 가이드 보고 따라하기 jojoldu/spring-batch-in-action 배치 기능 활성화 보통 실시간 처리가 어려운 대용량 데이터나 대규모 데이터일 경우 배치를 활용 배치기능 활성화를 위해 프로젝트 Application 클래스에 @EnableBatchProcessing 를 추가해주자. @EnableBatchProcessing @SpringBootApplication public class SpringBatchTestApplication { public static void main(String[] args) { SpringApplication.run(SpringBatchTestApplication.class, args); } } Job 생성하기 ..
Java PlayGround [Java] 자바 플레이그라운드 with TDD, CleanCode 후기 (2) NEXTSTEP 자바 플레이그라운드 with TDD, 클린 코드에서 새롭게 배우고 깨닫게 된 내용들을 기록한 글입니다. Part02. Inheritance, Abstract, Functional programming Inheritance 상속을 통한 중복 코드 제거 중복 코드를 별도의 클래스로 분리해보자. extends 부모 클래스의 모든 필드와 메소드를 자식 클래스가 상속하도록 지원하는 keyword 상속을 할 경우 멤버 필드와 메소드를 하위 클래스에서 그대로 상속 Abstract 추상화를 통한 중복 제거 역할이 비슷한 메서드를 추상화 시켜 중복을 제거해보자. abstract 클래스를 추상 클래..
Vue 회사에서 front 업무(?)도 살짝 담당하게 되어 Vue.js를 공부하게 되었다. 아주 옛날에 배웠던 것 같긴 한데.. 아무것도.. 생각이 나지 않는다... Haha.h...a... 그리하여 Inflearn Vue.js 시작하기 - Age of Vue.js 강의를 듣게 되었고, 업무를 하면서 틈틈이 참고하고자 간략하게 내용들을 정리해 보았다. 아주 쉽고 빠르게 Vue.js 세계를 이해시켜주신 장기효님께 감사를.. 👏🏻👏🏻👏🏻 What is the Vue View: 눈에 보이는 화면 (화면의 요소는 HTML) HTML은 DOM을 이용해서 javascript로 조작 -> Reactivity DOM Listeners: View에서 사용자 이벤트는 Vue의 DOM Listeners로 청취 Modal: ..
Refactoring With IntelliJ Change Signature 클래스의 생성자에 parameter 추가 Convert Anonymous to Inner Class 익명 클래스를 내부 클래스로 변환 New 또는 생성자에 커서를 위치시키고 리팩토링 Before public class Class { public Interface method() { final int i = 0; return new Interface() { public int publicMethod() { return i;} }; } } After public class Class { public Interface method() { final int i = 0; return new MyInterfaceClass(i); } } p..