프로그래밍 26

Nuxt 3 완벽 마스터 복습 항목 2

1. nuxtApp 프로그램이 실행되는 동안의 정보를 갖고 있는 객체 https://nuxt.com/docs/guide/going-further/nuxt-app NuxtApp · Nuxt Advanced In Nuxt 3, you can access runtime app context within composables, components and plugins. nuxt.com 2. plugins auto-import 적용 ,, 하지만 중첩 디렉토리가 있다면 nuxt.config.js에서 수동으로 등록해줘야 한다. 등록 순서는 알파벳 순 .. 하지만 병렬 등록도 할 수 있음. 3. GA 관련 활용 참고 'vue-gtag' https://gymcoding.notion.site/Nuxt-plugins-uti..

Nuxt 3 완벽 마스터 복습 항목

0. 아래 코드는 왜 내가 생각한 대로 작동하지 않을까 ? watchEffect(() => { const { data } = useAsyncData("fetch1", () => $fetch("https://jsonplaceholder.typicode.com/posts", { params: { page: id.value, }, }) ); console.log(data); console.log(id); }); 1. auto-imports 2. 페이지 이동 이벤트 => script에 라우터 이동 함수를 만들어서 click 이벤트로 거는 것 보다, 로 감싸서 이동 이벤트를 거는 것이 SEO 최적화에 유리하다. 3. Nuxt alias https://nuxt.com/docs/api/nuxt-config#alias..

[Next.js] Next14에서 Route Handlers 사용해보기

쇼핑몰 프로젝트에서 이니시스 PG를 이용한 결제 시스템을 구축하고 있었다. 모바일 기준이긴 하지만 대충 요런 구조로 구축을 하면 된다. 여기서 P_MID, P_OID같은 속성 값들만 PC에 맞게 바꿔주면 되는거고, 기본적인 처리 순서는 동일하다. 주문서에서 PG창을 띄우는 것 까지는 수월했다. PG창에서 사용자가 인증한 인증 결과 값을 수신할 수 있도록 PG창을 띄울 때 파라미터로 returnUrl을 보내는데, 이 부분을 어떻게 넘겨야 할지 미궁에 빠졌다. 만약, spring 서버의 컨트롤러로 view 페이지로 리다이렉트 하는 구조라면 controller의 mapping url을 적으면 그만이다. 그리고, Nuxt.js 2 같은 경우도, asyncData라는 SSR로 들어오는 데이터를 받을 수 있는 내장..

@Transactional 그리고 Transaction marked as rollback-only 에러

Transaction rolled back because it has been marked as rollback-only 최근에 실무에서 에러 로그에 지속적으로 이 에러가 발생하는 것을 발견했다. 처리 상 문제는 없었으나 어쨌든 에러가 발생하고 있는 상황이니까 더 이상 발생하지 않게 처치를 해야했다. 그 당시 프로젝트는 서비스 계층 클래스에 전부 @Transactional 설정을 해버리는 aop가 되어 있었다. 그렇다보니 서비스에 있는 메소드들이 다 트랜잭션에 걸려있는 상태였다. 이런 구조 위에서 개별적으로 붙이는 @Transactional이 아닌 전체에 적용되어 버린 어노테이션 상황과 그 안에서의 try catch, 그리고 또 다시 throw 같은 복잡한 로직들 사이에서 저 에러가 발생하였다. 그 이슈..

스프링부트 + Mybatis 프로젝트에서 @Mapper 클래스가 bean 등록이 되지 않는 문제

발단 여러가지 테스트를 위해 새로운 스프링부트 gradle 프로젝트를 생성했다. 자바17에 스프링부트는 3.1.3 버전이었고 dependency들은 예전 프로젝트 환경설정들을 가져왔다. 그리고 정석대로 컨트롤러, 서비스, 매퍼, 매퍼xml을 생성하고 서버를 올렸는데 이런 에러가 발생했다. 분석 에러는 말 그대로 SampleService에서 SampleMapper를 DI 하려고 했는데 sampleMapper라는 bean이 없다는 뜻. 어노테이션 다 붙이고 패키지도 같은 패키지 안에 있는데 뭐가 문제일까. 어쨌든 컴포넌트 스캔 도중 스프링 빈 등록에서 누락되었을거니까 구체적으로 스캔 패키지를 명시해줘보았다. 이렇게 하면 정상 작동했다. 그러나 대체 왜? 기존에 알고있는 내용대로라면 같은 패키지 내에서는 빈 ..

스프링 DB 1편 정리

김영한님 강의 스프링 DB 1편 보고 정리해보기 1. 커넥션 풀 매번 DB에 접근하기 위해 커넥션을 연결하는데는 복잡한 과정과 반복되는 시간 및 리소스 소모가 발생한다. 이 문제를 해결하기 위해 커넥션 풀이라는 방법이 고안되었고 상용화되었다. 미리 커넥션을 생성해두고 클라이언트가 커넥션을 요구할 때 생성해 둔 커넥션을 사용한다. DB에 무한정 연결이 생성되는 것을 막아 DB를 보호하는 효과도 있다. 대표적인 커넥션 풀 오픈소스는 HikariCP등이 있다. springboot 프로젝트의 경우 기존 라이브러리에 포함되어 있다. dependencies에 라이브러리 추가 -> properties 파일 수정 -> DBConfig 파일 생성을 통해 HikariCP를 적용할 수 있다. 2. 트랜잭션 트랜잭션은 ACI..

자바8의 함수형 인터페이스(Functional Interfaces in Java 8)

이 포스팅은 https://www.baeldung.com/java-8-functional-interfaces의 번역 포스팅입니다. 1. 소개 이 튜토리얼은 자바8의 다양한 함수형 인터페이스를 가이드합니다. 2. 자바8의 람다 자바8은 람다표현식을 내놓으면서 코드의 엄청난 향상을 가져왔습니다. 람다는 우리가 1급 시민으로써 다룰수 있는 익명 함수입니다. 예를 들어, 우리는 람다를 전달하거나 어느 다른 메소드로부터 리턴 받을 수 있습니다. 자바8 이전에는, 캡슐화가 필요한 하나하나의 기능이 생길 때마다 클래스를 만들곤 했습니다. 이런 방식은 불필요한 문법식 코드를 내포하고 있었죠. “Lambda Expressions and Functional Interfaces: Tips and Best Practices”..

인터페이스에서의 static 메소드와 default 메소드(Static and Default Methods in Interfaces in Java)

이 포스팅은 https://www.baeldung.com/java-static-default-methods 포스팅의 번역 포스팅입니다. 1. 개요 자바8은 여러가지로 새로워졌습니다. 람다(lambda expressions), 함수형 인터페이스(functional interfaces), 메소드 참조(method references), 스트림(streams), 옵셔널(optional) 그리고 인터페이스의 static과 default 메소드가 그것들입니다. 이 포스팅에서는 인터페이스의 static과 default 메소드들을 어떻게 사용하고 활용할 수 있는지 다뤄볼 것 입니다. 2. 인터페이스에 default 메소드는 왜 필요한가 인터페이스의 일반 메소드들처럼 default 메소드는 암시적으로 public입니다..

[ 프로그래머스 : 정렬 ] 가장 큰 수

programmers.co.kr/learn/courses/30/lessons/42746 public static String solution(int[] numbers) { List list = new ArrayList(); for(Integer n : numbers) list.add(n); list.sort((o1, o2) -> { return (o2 + "" + o1).compareTo(o1 + "" + o2); }); return list.get(0) == 0 ? "0" : list.stream().map(n->String.valueOf(n)).collect(Collectors.joining()); } 이렇게 짧게 풀 수 있는 문젠데 ..ㅠ 첫 풀이는 너무 돌아돌아 갔다. 물론 속도는 겁나 느림. 그..