본문 바로가기

반응형

소프트웨어

(12)
오픈소스 컨트리뷰션 후기 이번 포스팅에서는 어쩌다가 오픈소스에 기여하게 된 경험을 공유하려고 합니다. PR : https://github.com/timlrx/tailwind-nextjs-starter-blog/pull/778 기여한 프로젝트 nextjs로 블로그 웹페이지를 개발하려고 찾아보니 이런 프로젝트를 찾게 되었는데요 https://github.com/timlrx/tailwind-nextjs-starter-blog GitHub - timlrx/tailwind-nextjs-starter-blog: This is a Next.js, Tailwind CSS blogging starter template. Comes out of the box co This is a Next.js, Tailwind CSS blogging star..
코딩 없이 Next.js 기반 블로그 만들기 Github 계정만 있다면, 쉽게 Next.js 기반 블로그를 만들 수 있습니다. tailwind-nextjs-starter-blog 를 이용해서 Next.js 기반의 블로그를 코딩 (거의)없이 만드는 방법을 알아보겠습니다. 해당 블로그 템플릿의 예시는 아래 링크에서 확인할 수 있습니다. https://tailwind-nextjs-starter-blog.vercel.app/ Next.js Starter Blog A blog created with Next.js and Tailwind.css tailwind-nextjs-starter-blog.vercel.app 로컬환경 블로그 먼저 로컬환경에서 블로그 웹페이지를 띄워보겠습니다 tailwind-nextjs-starter-blog git repository ..
java.lang.NoClassDefFoundError: com/querydsl/apt/AbstractQuerydslProcessor 에러 해결 개발을 하다가 만난 java.lang.NoClassDefFoundError: com/querydsl/apt/AbstractQuerydslProcessor 에러를 해결했던 경험을 공유하려고 합니다. 결론부터 말하자면 apt-maven-plugin 플러그인을 제외했습니다. 오류 상황 이번에도 역시나 로컬에서는 문제가 없지만 다른 환경에서 문제가 있는 상황이었습니다. 개발을 하다보면 이런 일이 많은데요. Jenkins 에서 CI 를 위한 자동화 빌드 도중 에러가 발생한 것입니다. 에러 로그는 아래와 같습니다. [ERROR] execute error java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.NoClassDefFo..
ChatGPT 장애 (Oops! Our systems are ...) 최근 며칠동안 ChatGPT 장애를 몇번 겪었는데요. 결론은 기다리면 장애는 해결됩니다. 답답했던 경험을 공유드립니다. ChatGPT 서비스 장애 어느 날인가.. AI에게 뭔가를 물어보려고 ChatGPT에 접속하고 로그인을 했는데... 아래와 같이 서비스 장애를 알리는 메시지가 뜨게 됩니다 Go back 버튼을 누르고 다시 로그인해도 해결이 안되었습니다 해결 방법 답답하지만, 기다리는 방법 뿐입니다. 메시지를 읽어봐도 그 방법 뿐입니다. 저의 경우에는 페이지를 띄워두고 다른 탭에서 다른 작업을 하다가 다시 해당 탭으로 돌아갔더니 ChatGPT 서비스 웹페이지가 잘 띄워져 있었습니다. 어떤 날에는 몇 시간동안 접속이 안된 경우도 있었구요. OpenAI가 AI 뿐만 아니라 웹서비스에도 노하우가 생겨서 지금보..
java.lang.UnsupportedOperationException 발생 케이스 jdk17 버전부터 Stream 연산 후 결과를 Stream.toList() 로 return 할 수 있는데요 public class UnsupportedOperationExceptionTest { @Test void unsupportedOperationExceptionTest() { Stream stream = Stream.builder() .add("ccc") .add("aaa") .add("bbb") .build(); List list = stream.toList(); Collections.sort(list); } } 이런 코드를 실행시키면 아래와 같이 UnsupportedOperationException 이 발생합니다 java.lang.UnsupportedOperationException at ja..
DriverManager는 어떻게 Driver를 찾을까..? 김영한님의 "스프링 DB 1편 - 데이터 접근 핵심 원리" 강의를 듣다가 궁금한 점이 생겼습니다 강의 도중 아래와 같은 동작을 하는 코드를 실행하는데요 import java.sql.Connection; import java.sql.DriverManager; public class Utils { public static Connection getConnection() { try { Connection connection = DriverManager.getConnection(URL, USARNAME, PASSWORD); return connection; } catch (SQLException e) { throw new IllegalStateException(e); } } } 아래와 같이 H2 database..
정적 팩터리 메서드는 생성자보다 좋을까? Java 에서 클래스의 객체 인스턴스를 생성하는 방법에는 여러가지가 있지만 가장 기본적으로 쓰이는 방법은 생성자와 new 키워드로 인스턴스를 할당하는 방법이 있습니다 그런데 상황에 따라 파라미터의 종류나 갯수가 다를 때에는 어떻게할까요? 생성자를 그냥 여러개 만들면 될까요? 이런 상황에서 좋은 방법이 정적 팩터리 메서드인데요 정적 팩터리 메서드는 생성자보다 어떤 점이 좋을까요? 생성자는 무조건 클래스와 이름이 같아야하지만 그 외 메서드는 그럴 필요가 없습니다. 정적 팩터리 메서드를 활용하면 메서드에 이름을 따로 부여할 수 있어서 반환될 객체의 특성을 코드를 살펴보지 않고도 이름으로 설명할 수 있습니다. 생성자는 호출될 때마다 무조건 새로운 객체 인스턴스를 할당하지만 static 메서드는 그럴 필요가 없습..
Spring - 중복 타입으로 자동주입 Spring 에서는 @Autowired를 통해서 혹은 유일한 생성자로 의존성 주입을 할 수 있습니다. @Autowired는 기본적으로 타입으로 빈을 조회하는데 같은 타입의 빈이 2개 이상 컨테이너에 등록되어있을 때는 어떻게 할까요? 코드로 보자면 아래와 같은 상황입니다. @Component public class FixDiscountPolicy implements DiscountPolicy { } @Component public class RateDiscountPolicy implements DiscountPolicy { } @Component public class OrderServiceImpl implements OrderService { private final DiscountPolicy disco..

반응형