묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Vue 3 시작하기
Vue 개발자 도구가 변경사항이 있나요?
vue3 event emit 부분에서 동일한 코드로 작성했는데갱신버튼을 눌러도 Vue 개발자도구에서 event가 발생됐다는 refresh log가 뜨질 않습니다. 실행자체는 되는 걸 확인했는데 log가 보이지 않는 이유가 뭔가요?아래는 전체 코드입니다. <!--HTML--> <div id="app"> <app-contents></app-contents> </div> <!--JavaScript--> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script> var appContents= { template: ` <p> <button v-on:click="sendEvent">갱신</button> </p> `, methods :{ sendEvent(){ this.$emit('refresh') } } } Vue.createApp({ components: { //'컴포넌트 이름' : 컴포넌트 내용 'app-contents': appContents } }).mount('#app'); </script>
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 자료에 있는 스프링 부트 Welcome 페이지 지원 공식 문서 링크가 변경된 것 같습니다. + 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]6. 스프링 MVC - 기본 기능.pdf(v20231202)5페이지에 https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-spring-mvc-welcome-page 이 링크가 있는데 들어가 보면 Welcome 페이지에 대한 설명처럼 느껴지진 않는데 혹시 링크 주소가 변경된 걸까요? 찾아 보니 아래 두 링크가 Welcome Page 설명이랑 비슷하게 느껴졌습니다. 1.1.5. Static Contenthttps://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.static-content 1.1.6. Welcome Pagehttps://docs.spring.io/spring-boot/docs/current/reference/html/web.html#web.servlet.spring-mvc.welcome-page 그리고 index.html에 대해 궁금한 점이 있습니다.index.html의 위치를 변경시키면서 localhost:8080을 호출했을 때 제대로 Welcome Page가 나타나는지 확인해 봤는데 /static/public/resources(resources 하위에 또 resources를 생성)/META-INF/resources이 위치에 index.html을 두었을 땐 Welcome Page가 제대로 나타나는 걸 확인했습니다. 그런데 /templates 하위에 index.html을 두어도 localhost:8080으로 Welcome Page가 호출이 되는 것 같습니다.컨트롤러를 통해 접근할 파일들을 /templates 하위에 두는 걸로 이해하고 있었는데, 이렇게 /templates 하위에 index.html을 두고 localhost:8080으로 접근하는 경우가 필요할 때가 있나요?
-
해결됨실습으로 배우는 선착순 이벤트 시스템
kafka를 왜 사용하는지가 잘 이해가 안가서 질문 남깁니다!
안녕하세요! 강의 잘 듣고 있습니다. 감사합니다. https://www.inflearn.com/course/lecture?courseSlug=%EC%84%A0%EC%B0%A9%EC%88%9C-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%8B%A4%EC%8A%B5&unitId=156125&category=questionDetail&tab=community&q=1029856해당 질문과 답변을 보고 추가 질문 드리려고 합니다. 제가 kafka나 redis, 분산서버 등에 대해 이해도가 낮은 점 양해 부탁드립니다! 1.Kafka 미사용시 주문생성/회원가입요청의 타임아웃 및 10분뒤 실행에 대한 해결책으로 Kafka 를 선택한 이유는 배압조절(back pressure) 때문입니다.이렇게 말씀을 해주셨는데요,답변에서 말씀하신 예시에서 처럼 10000개 요청이 있고,카프카를 사용한다면,요청 100개가 쌓일때마다 db에 insert를 하고, 다시 요청 100개가 쌓일때까지 기다렸다가 insert 하기를 반복한다는 것으로 이해하면 될까요?2. 그게 맞다면, 강의에서 구현한 apply 메서드에서 100개의 요청이 왔는지 확인하지 않고, kafka를 사용해서 다른곳에 전달하여 처리하는 이유는 무엇인가요?예시로 apply 메서드 안에서 redis의 incr 값을 체크하면 요청이 몇개가 쌓였는지 알 수 있을테고, 데이터를 임시저장하다가 100개마다 처리할 수 있을거란 생각이 들었습니다. kafka로 다른 모듈로 전달하는 것과의 차이점이 무엇인가 궁금합니다.3.실제로 consumer에서 100개의 작업이 완료되었는지는 일반적으로 어떻게 확인하는 걸까요? db에 저장하기 전에 100개의 데이터는 어디에 임시저장을 하나요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
NamedLock을 사용하는 경우 DataSource 분리
NamedLock을 사용하는 경우에 DataSource를 분리하는 것이 좋다고 하여 시도해봤으나 DataSource 설정의 문제인지 정상적으로 동작하지 않아 질문드리게 되었습니다. Main이 JPA에서 사용하게 될 데이터소스이고, Lock이 JdbcTemplate를 사용하기 위해서 사용하는 데이터소스입니다.spring: datasource: main: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3308/stock_example?serverTimezone=Asia/Seoul username: root password: 1234 lock: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3308/stock_example?serverTimezone=Asia/Seoul username: root password: 1234 hikari: maximum-pool-size: 20 jpa: database: mysql database-platform: org.hibernate.dialect.MySQLDialect hibernate: ddl-auto: create logging: level: root: INFO org: hibernate: SQL: DEBUG type.descriptor.sql.BasicBinder: TRACE애플리케이션 자체에서 사용해야 할 커넥션 풀만 관리를 하면 될 것이라고 생각하여 동일한 데이터베이스를 사용하였습니다. 먼저, 메인으로 사용하는 NamedLock을 사용하지 않는 데이터소스설정클래스입니다.@Configuration @EnableJpaRepositories( basePackages = "com.example.stock.stock", entityManagerFactoryRef = "mainEntityManager", transactionManagerRef = "mainTransactionManager") public class MainDataSourceConfiguration { @Bean @Primary @ConfigurationProperties("spring.datasource.main") public DataSourceProperties mainDataSourceProperties() { return new DataSourceProperties(); } @Bean @Primary public DataSource mainDataSource() { return mainDataSourceProperties() .initializeDataSourceBuilder() .type(HikariDataSource.class) .build(); } @Bean(name = "mainEntityManager") @Primary public LocalContainerEntityManagerFactoryBean mainEntityManager( EntityManagerFactoryBuilder builder) { return builder.dataSource(mainDataSource()) .packages("com.example.stock.stock") .build(); } @Bean(name = "mainTransactionManager") @Primary public PlatformTransactionManager mainTransactionManager( @Qualifier("mainEntityManager") LocalContainerEntityManagerFactoryBean entityManagerFactoryBean) { return new JpaTransactionManager(Objects.requireNonNull(entityManagerFactoryBean.getObject())); } }다음으로 Lock을 사용하기 위한 데이터소스 설정 클래스입니다.@Configuration @EnableTransactionManagement public class LockDataSourceConfiguration { @Bean @ConfigurationProperties("spring.datasource.lock") public DataSourceProperties lockDataSourceProperties() { return new DataSourceProperties(); } @Bean public DataSource lockDataSource() { return lockDataSourceProperties() .initializeDataSourceBuilder() .type(HikariDataSource.class) .build(); } @Bean(name = "lockTransactionManager") public JdbcTransactionManager lockTransactionManager(@Qualifier("lockDataSource") DataSource dataSource) { return new JdbcTransactionManager(dataSource); } }@Configuration public class JdbcTemplateConfiguration { @Bean public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("lockDataSource") DataSource dataSource) { return new NamedParameterJdbcTemplate(dataSource); } }그리고 테스트를 돌려봤는데, 재고가 정상적으로 감소가 되지 않습니다. 이상한 점은 업데이트 쿼리가 발생을 하지 않는다는 점입니다.또 매번, 생성되는 스톡의 id가 1씩 증가한다는 점입니다. 혹시 제가 놓친 부분이 있을까요..?
-
미해결AWS(Amazon Web Service) 중/상급자를 위한 강의
Elastic BeanStalk 실습 - 간단한 웹 어플리케이션 배포하기
안녕하세요, 강사님강의를 수강중에강의 환경과 매우 달라서 실습을 진행하지 못 하는 경우가 계속 발생합니다.강의 리뉴얼이 매우 필요해 보입니다...Elastic BeanStalk 실습 - 간단한 웹 어플리케이션 배포하기이 강의 또한 실습을 진행이 불가능해보입니다..
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
JPA에 관련해서 현업 관련 질문이 있습니다.
간혹 유튜브 영상이나 ORM과 관련된 담론이 있는 글들을 보면 JPA의 속도 문제를 문제점으로 삼는 분들을 보았습니다. 그리고 JPA로는 한계가 오는 점들은 네이티브 쿼리를 사용해서 해결을 할 수 있다는 점, 그리고 태현님께서도 특정 상황에서는 JdbcTemplate을 사용해서 문제를 해결할 수 있다는 점을 강의에서 말씀 해주셨는데요. 하지만 그 '특정 상황'의 예시가 잘 떠오르지가 않는데 어떤 것이 있을까요? 배민의 영상에서도 동욱님은 JPA와 QueryDSL을 사용해서 몇 억건의 데이터도 잘 처리하셨고, 영한님께서도 책을 개정판을 내지 않는 이유로 이미 많이 성숙한 기술이라서 극적인 변화가 없는 기술이라고 하셨으며 어떤 유튜버분도 말씀하시길 'JPA라는 기술이 문제 자체를 일으킨다기 보단 개발자가 JPA에 대한 이해가 부족해서 문제가 발생한다.' 라고 하셔서 더 미궁속으로 빠집니다. 혹시 태현님께서도 이런 상황을 겪으신 적이 있으신지, 있다면 어떻게 해결하셨는지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 84P sort(), comp 관련 질문
교안 84p 코드입니다#include<bits/stdc++.h> using namespace std; vector<pair<int, int>> v; bool cmp(pair<int, int> a, pair<int, int> b){ return a.first > b.first; } int main(){ for(int i = 10; i >= 1; i--){ v.push_back({i, 10 - i}); } sort(v.begin(), v.end(), cmp); for(auto it : v) cout << it.first << " : " << it.second << "\n"; return 0; }sort()함수 동작과정이 머리로는 생각이 안나서 검색해보니 퀵정렬 방식으로 동작하는거 까지는 알았습니다근데 cmp가 들어가면서 어떻게 동작되는지는 구조가 안떠오르는거 같습니다정리하자면 bool cmp()함수가 벡터 v에서 어떻게 동작하는지,return a.first > b.first가 뭐를 의미하는지첫질문이라 질문이 명확하지 않을수도 있을거 같습니다 ㅠㅠ
-
미해결Spring Boot JWT Tutorial
body값이 비었습니다.
안녕하세요.저는 8080포트를 다른 프로젝트에 사용하고 있어서 8082포트를 사용합니다.아래와 같이 GET 요청을 보냈는데, 401 unauthorized는 확인되나 Body값에는 아무런 값이 나오지 않습니다.
-
해결됨글로벌 개발자로 성장하는 { 코딩 실무 영어 } 마스터 클래스
7분 50초 두번째 예제 질문입니다.
사소한 차이같은데 해석이 "서버에서"보다는 "서버에" 또는 "서버로부터"가 맞지 않나 생각이 듭니다. 여러가지 상황이 있겠지만 해석부분만 봤을때 떠오르는 첫번째 상황은 API 호출이 뭔가 모바일 기기나 브라우져가 아니라 서버에서 API 콜이 일어나는 상황처럼 생각되어지는...? 혹시 제가 착각한거일까요?
-
해결됨글로벌 개발자로 성장하는 { 코딩 실무 영어 } 마스터 클래스
6분 47초에 Build 첫번째 예제 해석이 제대로 된건가요?
We are building a program that utilizes the latest tech stacks.이 문장에 대한 해석으로 "우리는 최신 기술 스택을 활용해 프로그램을 빌드하고 있습니다."라고 되어있는데,"우리는 최신 기술 스택을 활용하는 프로그램을 빌드하고있습니다."가 올바른 해석 아닌가요? a program that utilizes 니까 프로그램이 최신 기술 스택을 활용하고 있는걸로 봐야하는게 아닌지요...?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
DriverManagerDataSource 질문
이 DriverManagerDataSource가 커넥션 풀은 아닌거죠? 매번 getConnection할때마다 새 커넥션을 생성하긴 하지만URL USERNAME PASSWORD 를 매번 전달하지는 않아도 되는그냥 좀 더 편리한 DriverManager 라고 생각하면 되는 걸까요
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
swagger 실행 오류
swagger 실행시 No operations defined in spec!라는 오류가 발생하는데 왜그럴가요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
figma css속성 안보임
figma devmode가 24년 2월부로 유료화 되었다고 하는데 이제는 더이상 css속성을 확인할수 없나요? 회원가입 폼 만들어보려고 하는데 css가 안보이네요ㅠ
-
해결됨Next + React Query로 SNS 서비스 만들기
export 로 GET,POST,middleware 사용 질문입니다
안녕하세요 강의 잘 보고 있습니다 문득 궁금한점이 생겨 여쭤보고 싶은게 있는데요 ! api/auth/[...nextauth]/route.ts 파일 안에 NextAuth가 제공해주는 GET과 POST를 export해놓으면 api/auth/...something 경로로 타고 들어오는 api 요청은 export한 GET과 POST로 사용이 된다라고 말씀해주셨는데 그 GET과 POST는 어디서 호출을 하는걸까요 ?마찬가지로 middleware.ts 파일에도NextAuth에서 제공하는 auth를 middleware로 네이밍을 변경하여 사용한다고 하셨는데 그 middleware도 어디서 호출을 해서 사용하고 있는걸까요 ? 내보냈다는건(export) 어디선가 받아와서(import) 해서 사용하는게 아닌가 싶어서 질문 드려봅니다 초보적인 질문이지만 해결하고 가고 싶어서 질문 드려봅니다
-
해결됨[코드캠프] 시작은 프리캠프
피그마 유료화
안녕하세요. 회원가입 과제를 하기위해 링크된 피그마를 확인해보니 개발자모드를 이용하려면 유료 플랜에 가입해야 하는 것 같습니다. 해결방법이 있을까요?
-
해결됨
수학 게임 만들었는데 피드백 해주실 분?
안녕하세요! 파이썬을 1달하고 15일 정도 공부한 사람인데요.제가 블로그의 이벤트를 열기 위해서 파이썬으로 수학게임을 만들었는데,실행할 때 잘못되는 버그는 없는지, 코드가 전부 정상적으로 잘 작동되는지,한번 확인차 피드백을 받으려 합니다! import time import random from threading import Timer print("BFB PYTHON ENGINE ver.1.24.2") time.sleep(2) print("launching_[블루의 수학게임]...") time.sleep(10) n=30 o=0 x=0 def addgame(n1,n2): global o global x global n begin=time.time() an=int(input("{}+{}=".format(n1,n2))) end=time.time() if end-begin>10: print("시간 초과!") time.sleep(2) x=x+1 n=n-1 else: if an==int(n1)+int(n2): print("정답!") time.sleep(2) o=o+1 else: print("오답!(정답은 {})".format(n1+n2)) time,sleep(2) x=x+1 n=n-1 def subgame(n1,n2): global o global x global n begin=time.time() an=int(input("{}-{}=".format(n1,n2))) end=time.time() if end-begin>10: print("시간 초과!") time.sleep(2) x=x+1 n=n-1 else: if an==int(n1)-int(n2): print("정답!") time.sleep(2) o=o+1 else: print("오답!(정답은 {})".format(n1-n2)) time,sleep(2) x=x+1 n=n-1 def mulgame(n1,n2): global o global x global n begin=time.time() an=int(input("{}×{}=".format(n1,n2))) end=time.time() if end-begin>10: print("시간 초과!") time.sleep(2) x=x+1 n=n-1 else: if an==int(n1)*int(n2): print("정답!") time.sleep(2) o=o+1 else: print("오답!(정답은 {})".format(n1*n2)) time.sleep(2) x=x+1 n=n-1 print("") print("블루의 수학게임에 오신 걸 환영합니다!") time.sleep(2) print("이 게임은, 문제에 주어지는 연산을 풀어서, 답을 맞추는 수학 퀴즈 게임입니다!") print("답은 10초 이내에 입력해야 하며, 10초를 넘기고 입력 시, 오답 처리됩니다!") print("답을 입력하실 때는, 띄어쓰기 혹은 엔터를 누르지 마시고, 무조건 숫자로 입력해주세요!") name=input("문제를 맞추실 분의 닉네임을 입력해주세요!") mod=input("연산을 선택하세요! 덧셈/뺄셈/곱셈") dif=input("난이도를 선택하세요! 쉬움/보통/어려움") if dif=='쉬움': a=10 b=10 elif dif=='보통': a=100 b=10 elif dif=='어려움': a=100 b=100 while n>0: if mod=='덧셈': li1=[] li2=[] for i in range(1,a): li1.append(i) k1=random.choice(li1) for j in range(1,b): li2.append(j) k2=random.choice(li2) game=addgame(k1,k2) elif mod=='뺄셈': li1=[] li2=[] for i in range(1,a): li1.append(i) k1=random.choice(li1) for j in range(1,b): li2.append(j) k2=random.choice(li2) if k1>=k2: game=subgame(k1,k2) else: game=subgame(k2,k1) elif mod=='곱셈': li1=[] li2=[] for i in range(1,a): li1.append(i) k1=random.choice(li1) for j in range(1,b): li2.append(j) k2=random.choice(li2) if dif=='어려움': game=mulgame(k1,random.randrange(11,20)) else: game=mulgame(k1,k2) print("축하합니다! 수학 게임의 {} 난이도 {} 문제를 전부 풀었습니다!".format(dif,mod)) time.sleep(3) if o==30: print("문제를 전부 맞추셨군요! 상장을 드리겠습니다!") f=open("상장.txt",'w') data="[%s게임의 %s난이도를 전부 맞춘 것에 대한 %s님의 상장입니다!]\n" % (mod,dif,name) f.write(data) f.close() else: print("맞은 문제의 개수는 {}개, 틀린 문제의 개수는 {}개 입니다!".format(o,x)) time.sleep(3) print("수고하셨습니다! 안녕!") time.sleep(10)
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
Fine-tuning 문의
안녕하세요Fine-tuning 관련하여 궁금한 것이 있습니다.제 데이터로 Fine-tuning 을 하면 기존 학습 데이터는 사라지는 건가요?Fine-tuning 한 데이터셋은 어디에 저장되나요? 파라미터 값만 저장되고 데이터셋은 따로 저장이 되는 것이 아닌가요?
-
미해결
JPA physical-strategy 변환이 안되는 이유가 어떤게 있을까요???
안녕하세요. 스프링부트3 기반으로 api 프로젝트를 셋팅 중 입니다. 그런데 셋팅 중 physical-strategy 이 제대로 동작하지 않아서 이것저것 해보다가도움을 구해보고자 글을 올리게 되었습니다. 우선 프로젝트 환경은스프링부트 = 3.2.2하이버네이트 = 6.3.1.FinalJava = corretto17입니다. application.yml 은 이렇게 설정되어 있습니다. Entity는 카멜케이스로 작성이 된 상태 입니다. DB는 스네이크로 네이밍이 되어 있는 상태입니다. 그런데 JPA 조회 쿼리를 날리면계속 카멜케이스로 조회가 되면서 오류가 발생해서이것저것 해보는데 해결이 안되서 도움을 구해보고자 합니다. 혹시 뭔가 놓치고 있는게 있을까요???
-
해결됨Next + React Query로 SNS 서비스 만들기
Suspense , prefetch 질문
Suspense로 Streaming하여 최적화하기(feat. loading.tsx, error.tsx)강의를 듣던 중 헷갈리는 부분이 있어서 질문 남깁니다.atferLogin > page.tsx 에서 Suspense를 사용해서TabDeciderSuspense 를 감싸주고 있는데 TabDeciderSuspense 내부 코드를 보면위와 같이 prefetch를 통해 postsRecommends관련 데이터를 서버에서 그려서 클라이언트로 하이드레이션 해주고 있습니다.제가 이해한 바로는 이 장점이 사용자가 해당 페이지를 빠르게 볼 수 있다. 그래서 서스팬스를 사용하지 않았을 땐 로딩바가 뜰 새도 없이페이지가 잘 보여지게 되는데, 지금은 프리패치로 데이터를 먼저 받아오는것과 서스팬스 풀백을 통해 로딩에 관한 부분을 둘 다 사용하고 있는 걸로 보여서 좀 헷갈려서 질문드려요.서스팬스로 로딩을 보여주고 싶으면 TabDeciderSuspense에서 프리패치를 사용하는 의미가 없는 거 아닌가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JDBC 강의 내용 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 빈과 의존 관계에서 설명하셨던 다형성과 Solid에 대한 개념이 여기 19:00 이후의 설명에 나온 것 같은데요. helloController는 memberService에 의존하고 있고 이 memberService를 구현하는 구현체로 memoryMemberRepository, JdbcMemberRepository가 있는데 만약에 저걸 저렇게 작성하지 않고 MemoryMemberRepository를 직접 주입받아 사용하게 되면 시간이 지나 다른 것으로 변경을 해야할 때 기존 코드를 고쳐야하니 다형성의 활용하여 인터페이스를 주입하고 그 인터페이스를 구현한 구현체에서 외부 생성자로 주입을 하는 것이 DI고 저게 객체 지향의 기본이다... 라고 이해하는 것이 맞을까요?