inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

Next의 route handler에 대한 질문이 있습니다.

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요 Next app router 관련해서 질문드립니다. 현재 사이드프로젝트에서 route handler를 적극활용하고 있는데요. 제가 인프라나 백엔드 관련 지식이 없다보니 좀 헷갈리는게 있습니다. 현재 저희 서비스에서 특정 API는 클라이언트 컴포넌트에서 route handler로 API 호출 -> route handler에서 외부 백엔드 API 호출 이런 형태로 사용되고 있는데요, 이때 실제로 route handler 서버가 아래의 사진 중 어느 형태로 운용되는 것인가요? 즉, Next 프로젝트를 배포했을 때 각 유저마다 route handler 서버가 할당되는 것인가요? 아니면 모든 유저의 요청을 오직 하나의 route handler서버에서 대응하는 것인가요? 아니면 이게 배포 환경에 따라 달라지는것인가요?

  • react
  • next.js
  • react-query
  • next-auth
  • msw
kraf 댓글 2 좋아요 0 조회수 122

@Async 여부의 차이가 궁금합니다.

해결됨

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법

@Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void handleEventJoinCompleted(EventJoinCompletedEvent event) { try { kakaoTalkMessageApi.sendEventJoinMessage( event.getPhoneNumber(), event.getEventName() ); } catch (Exception e) { log.error("알림 발송 실패. eventId={}, eventName={}", event.getEventId(), event.getEventName(), e); } } 이 로직은 비동기적으로 이벤트를 처리하는 알림서비스 로직입니다. @TransactionalEventListner(Aftercommit)를 사용하면 메인 로직이 commit 된 이후에 해당 이벤트가 실행하는 걸로 알고있는데 @Asnyc를 붙히지 않았더라도 메인 로직에서 끝마치고 해당 이벤트를 실행하니깐 똑같은 결과가 나오지 않나요? 차이가 궁금합니다!

  • java
  • spring
  • mysql
  • redis
  • 이력서
kongminoo 댓글 2 좋아요 0 조회수 193

45강 빌드 오류입니다.

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요? 강사님 덕분에 열공하고 있습니다. 2가지 문의드립니다. 1) 프론트엔드의 리액트 소스 부탁드립니다. ==> cyj10241@gmail.com 2) 45강 빌드를 하려는데 오류가 납니다. 저는 java를 17를 인스톨했습니다. [ec2-user@ip-172-31-43-148 Spring_Web]$ java -version openjdk version "17.0.15" 2025-04-15 LTS OpenJDK Runtime Environment Corretto-17.0.15.6.1 (build 17.0.15+6-LTS) OpenJDK 64-Bit Server VM Corretto-17.0.15.6.1 (build 17.0.15+6-LTS, mixed mode, sharing) [ec2-user@ip-172-31-43-148 Spring_Web]$ chmod +x ./gradlew [ec2-user@ip-172-31-43-148 Spring_Web]$ ./gradlew build -x test FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':bootJar'. > Could not resolve all dependencies for configuration ':runtimeClasspath'. > Failed to calculate the value of task ':compileJava' property 'javaCompiler'. > Cannot find a Java installation on your machine (Linux 6.1.134-152.225.amzn2023.x86_64 amd64) matching: {languageVersion=17, vendor=any vendor, implementation=vendor-specific, nativeImageCapable=false}. Toolchain download repositories have not been configured. * Try: > Learn more about toolchain auto-detection and auto-provisioning at https://docs.gradle.org/8.14/userguide/toolchains.html#sec:auto_detection . > Learn more about toolchain repositories at https://docs.gradle.org/8.14/userguide/toolchains.html#sub:download_repositories . > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org . 위와 같은 오류가 나는데 해결 방법을 알고 싶습니다. 감사합니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
박정아 댓글 2 좋아요 0 조회수 361

rig main properties가 안 떠요

해결됨

친절한 블렌더 - [LV.3] 캐릭터 애니메이션

8:48 ) hand_IK.L을 누르고 n을 킨다음에 item 까지 들어갔는데 밑에 rig main properties부분이 안보여서 IK를 FK로 변경할 수 가 없어요..

  • blender
  • 3d
  • 3d-modelling
  • 3d-rendering
댓글 2 좋아요 0 조회수 182

에러

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/tahee/OneDrive/%EB%B0%94%ED%83%95%20%ED%99%94%EB%A9%B4/hello-spring/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 1s 4 actionable tasks: 2 executed, 2 up-to-date 5분 27초까지 하고 실행했는데 오류나요 챗지피티가 하라는 거 다 해봤는데도 소용이 없네요 이거 가지고 3시간째 매달려 있는데 해결해주실 분 계실까요 하 모든 코드에 에러 없는데 실행만 하면 저래요

  • java
  • spring
  • mvc
  • spring-boot
박태희 댓글 1 좋아요 0 조회수 169

변수 선언

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 변수를 만들 때 어떤 때는 예를 들어 int total;로 하고 어떨 때는 int total=0;으로 하시던데 무슨 차이인가요? 그리고 어떨때는 int total;로 하면 오류뜨고 int total=0;으로 하면 오류가 없어지던데 메커니즘이 어떻게 되는지 모르겠습니다.

  • java
  • 객체지향
안병욱 댓글 1 좋아요 0 조회수 57

12강에서 shrinkColumns 의 설정이 되지 않아요

해결됨

윤재성의 자바 기반 안드로이드 앱개발 Part 1 - UI Programming

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" android:shrinkColumns="0" android:stretchColumns="*" tools:context=".MainActivity"> <TableRow android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/Button5" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button6" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button7" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button8" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button9" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button10" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button11" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button12" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button13" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button14" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button15" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button16" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button17" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> <Button android:id="@+id/button18" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:text="Button" /> </TableRow> </TableLayout> 버튼들의 너비도 바꿔봤는데 shrinkColumns 적용이 되지 않아요 왜 그런걸까요..?

  • java
  • android
승쨩 댓글 1 좋아요 0 조회수 82

active profiles는 인텔리제이 커뮤니티 버전에 없네요

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

무료버전은 해당 기능설정을 지원하지 않네요. 뭐지? 했던분들 참고하시면 좋겠네요

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
장은성 댓글 2 좋아요 0 조회수 77

update 쿼리 발생

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요. JpaMain.java 코드에서 em.persist 순서에 따라 UPDATE 문이 발생하는데요. em.persist(parent); em.persist(child1); em.persist(child2); 이렇게 적었을 땐 강사님과 똑같은 코드로 update 문이 발생하지 않고, 아래와 같이 작성했을 때 update 쿼리가 마지막에 한번 더 나갑니다. em.persist(child1); em.persist(child2); em.persist(parent); 이유가 무엇인지 궁금합니다. 편의 메서드에서 child을 더티 체크하기 때문에 update 쿼리가 나간 것 같은데, 왜 순서를 바꿨을 땐 update 쿼리가 발생하지 않는지 잘 모르겠습니다!

  • java
  • jpa
nick 댓글 1 좋아요 0 조회수 50

useActionState에서 반환값 필드 생략 시 조건에 따라 에러 발생 여부가 다른 이유

해결됨

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

안녕하세요! 강의 잘 듣고 있습니다. 제가 혼자 실습하다가 createPostAction 의 반환값에 success 필드를 넣은 후에 useActionState 의 initialState 에도 이 필드를 아래와 같이 추가했었는데요, const [state, formAction, isPending] = useActionState(createPostAction, { message: '', errors: {}, formData: { title: '', tag: '', content: '', }, success: false, }); useActionState 훅을 사용할 때 initialState 에 포함된 필드 중 일부를 이후 action 함수의 반환값에서 생략하면 어떤 경우에는 에러가 발생하고, 어떤 경우에는 아무 문제 없이 동작하는 게 잘 이해가 되지 않아서요. 예를 들어 initialState 에는 success 필드가 있지만, 유효성 검사 실패 시 반환 객체에서 success 를 생략하면 에러가 발생합니다. if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors, message: 'Validation failed', formData: rawFormData, success: false, // 없으면 useActionState 에서 에러 발생 }; } 그런데 try...catch 문에서는 success 없이 반환하면 에러가 발생하지 않는 걸 확인할 수 있었습니다. try { const { title, tag, content } = validatedFields.data; await createPost({ title, tag, content }); revalidateTag('posts'); return { success: true, // 없어도 에러 안남 message: 'Post created successfully', }; } catch (e) { return { message: 'Failed to create post : ' + e, formData: rawFormData, }; } formData 필드도 비슷하게 행동하는데 이 차이가 왜 발생하는지, 어떤 기준으로 반환 객체의 필드 구조를 검사하고 에러를 발생시키는지 궁금합니다. useActionState 에서 반환 객체의 필드가 initialState 와 구조적으로 정확히 일치해야 하는 조건이 언제 적용되는 건가요?

  • react
  • next.js
e_sun 댓글 2 좋아요 0 조회수 105

예제2

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Scanner 반복예제2에서 코드 똑같이 입력했는데 마지막 int sum 줄에서 오류가 발생합니다.. 왜 이러는걸까요?

  • java
  • 객체지향
미미 댓글 2 좋아요 0 조회수 87

mirror 모디파이어 질문

해결됨

친절한 블렌더 - [LV.2] 모델링 연습

막힌 부분의 시간(예를들면 3:24)과 안 되는 부분과 현상을 자세히 써주셔야 해결이 빠릅니다. - 3:24, 여기서 막혔어요 (X) - 3:24, 영상에서는 원형인데 저는 타원형으로 만들어져요. (O) - 3:24, 베벨과 익스투르드까지는 적용이 되는데 미러 모디파이어는 반응이 없어요. (O) 문제되는 물체를 선택한 상황에서 일부가 아닌 전체 스크린샷 사진을 첨부해주시면 훨씬 좋습니다. - 아웃라이너나 프로펄티스도 문제 상황 파악에 도움이 되므로 함께 찍어주세요. 천/마법책 강의 18분쯤 모서리 장식부분 하고있어서 미러 모디파이어를 적용 후 책 origin을 surface로 적용을 하였는데요 이렇게 살짝 파묻혀있습니다.. 책 origin을 volume으로 하면 더 파묻혀있는데 어떻게 해야 서로 모서리에 딱 맞게 되는지를 모르겠습니다.... scale은 둘 다 1로 되어있는 상태입니다

  • blender
  • 3d
  • 3d-rendering
  • 3d-modeling
망그리 댓글 2 좋아요 1 조회수 144

try-with-resources 강제 종료 시 자원 정리

미해결

김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 클라이언트의 자원 정리에 대해 궁금한 점이 생겨 질문드립니다. 코드에서 클라이언트의 자원은 try-with-resources 를 적용해 정리하는데, 만약 클라이언트 프로그램을 IntelliJ에서 종료 버튼으로 종료하면 클라이언트의 try-with-resources의 close() 메서드가 호출이 되어 자원이 정리되고 프로그램이 종료되는지, 아니면 바로 프로그램이 종료되고 OS의 책임으로 넘어가는지 궁금합니다. 항상 좋은 강의 감사드립니다!

  • java
  • 네트워크
  • 객체지향
hi 댓글 1 좋아요 0 조회수 120

private component 관련 질문

미해결

Next.js 완벽 마스터 (v15): 노션 기반 개발자 블로그 만들기 (with 커서AI)

루트 page.tsx에서 사용하는 컴포넌트는 pages/_components/ 여기에 바로 넣으셨는데 그럼 about 페이지에서만 사용하는 컴포넌트는 pages/_components/about/ 이 경로에 배치하면될까요?

  • react
  • 블로그
  • next.js
  • cursor
  • cursorai
김진규 댓글 2 좋아요 0 조회수 69

The edge runtime does not support Node.js 'crypto' module.

해결됨

인프런 클론코딩 Part 1: Next.js와 NestJS로 시작하는 실전 프로젝트

[auth][error] JWTSessionError: Read more at https://errors.authjs.dev#jwtsessionerror [auth][cause]: Error: The edge runtime does not support Node.js 'crypto' module. Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime at Object.get (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\_b7b28d92._.js:62:41) at C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:8637:62 at getSecret (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:8620:20) at push.[project]/node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/verify.js [middleware-edge] (ecmascript).module.exports (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:8623:12) at Object.decode (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\[root-of-the-server]__273b5c62._.js:135:233) at session (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\0253f_@auth_core_77718842._.js:4516:39) at AuthInternal (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\0253f_@auth_core_77718842._.js:5123:269) at async Auth (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\0253f_@auth_core_77718842._.js:5379:34) at async handleAuth (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:3885:29) at async C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\_b7b28d92._.js:12505:20 [auth][details]: {} GET / 200 in 137ms auth.ts에 jwt: { encode: async ({ token, secret }) => { return jwt.sign(token as jwt.JwtPayload, secret as string); }, decode: async ({ token, secret }) => { return jwt.verify(token as string, secret as string) as JWT; }, }, 이 부분을 추가한 이후부터 The edge runtime does not support Node.js 'crypto' module. 이 에러가 발생하는데 해결이 어렵네요.. 코드는 노션이랑 강의 보고 다 비교해 봤는데 드른 부분은 없었스빈다..

  • aws
  • docker
  • next.js
  • nestjs
  • prisma
cbmja 댓글 5 좋아요 0 조회수 297

공통 속성을 여러 개 사용하고 싶을 때 사용방법?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

데이터베이스 정규화 등으로 그럴 일은 거의 없겠지만, 만약 @MappedSuperclass 어노테이션을 사용하는 여러 클래스가 있을 때 여러 개를 적용하고 싶다면 어떻게 사용하면 될까요? 자바는 단일 상속만 지원해서 궁금해지네요. 1번 질문과 비슷한 질문일 수 있는데 상속 관계 매핑과 공통 속성(@MappedSuperclass)을 같이 사용하고 싶을 때도 어떤 식으로 해야하는지 궁금합니다.

  • java
  • jpa
nick 댓글 2 좋아요 0 조회수 104

스프링과정은 언제 오픈하나요?

미해결

[2025] 자바 입문 부트캠프 JAVA DEEP DIVE [PART2/2 심화편]

현재 스프링 과정을 공부해야하는데 강사님 커리큘럼을 따라갈려고 기다리고있는중입니다. 향후 남은컨텐츠는 언제 출시될지 일정이 궁금합니다.

  • java
  • jsp
  • 객체지향
c7681330 댓글 2 좋아요 0 조회수 114

블렌더 학습은 어떻게 하는건가요?

해결됨

친절한 블렌더 - [LV.3] 캐릭터 애니메이션

강의와는 관계없는 질문이라 죄송합니다. 강의를 들을 때마다 드는 생각이 "어떻게 이런 기능을 알고 계실까?" 하는 생각이 드네요 이 강의 끝나고 나면 나는 어떻게 학습을 해야 할까 라는 생각이 많이드네요. 강의 너무 잘 만드시는거 같아요 감사합니다!

  • blender
  • 3d
  • 3d-modelling
  • 3d-rendering
몰랑몰랑 댓글 1 좋아요 1 조회수 174

junit5 사용하시는 분들

미해결

스프링 기반 REST API 개발

@ParameterizedTest @CsvSource({ "0, 0, true", "100, 0, false", "0, 100, false" }) public void testFree(int basePrice,int maxPrice,boolean isFree){ // Given Event event = Event.builder() .basePrice(basePrice) .maxPrice(maxPrice) .build(); //When event.update(); //Then assertThat(event.isFree()).isEqualTo(isFree);; } @RunWith(JUnitParamsRunner.class) 는 junit4 여서 사용하지 못하고 junit5 에서는 @Test 로 파라메터 값을 지원하지 않기 때문에 파라메터 테스트를 위해 @ParameterizedTest ` CvSure` 으체해서스트했습니다

  • java
  • spring
  • rest-api
정동희 댓글 1 좋아요 0 조회수 114

ErrorBoundary component 를 server component 에서 사용하는것

해결됨

Next.js 15로 완성하는 실전 YouTube 클론 개발

ErrorBoundary component ( react-error-boundary ) 는 client component 인데 수업에서는 server component 에서 사용하고 있는걸로 확인됩니다. 괜찮을까요?

  • react
  • postgresql
  • 클론코딩
  • next.js
  • tailwindcss
  • drizzle
hanbrang 댓글 2 좋아요 1 조회수 223

인기 태그

인프런 TOP Writers

주간 인기글