안녕하세요 해당 강의 마지막 부분에서 테스트 코드를 작성하신 부분에서 궁금증이 생겼습니다. 강의에서는 콘솔에 출력하는 방식으로 대략적인 테스트를 진행하셨습니다. (이게 진짜 테스트가 아니라는 점도 이해했습니다) 제 스스로 검증 코드를 만들어 테스트해보고 싶어 시도했는데, trace.end() 나 trace.exception() 의 리턴 타입이 void 라 어떻게 assertThat() 의 인자로 넣어야 할지 모르겠더라구요,, 혹시 이렇게 리턴타입이 없는 메소드를 테스트할 수 있는 방법은 무엇이 있을까요? 좋은 강의 늘 감사합니다. :))
안녕하세요 생성자 주입은 타입을 기준으로 하여 스프링 빈을 조회한다고 알려주셨는데요 DiscountService 생성자 주입할때 Map에 있는 타입은 두가지가 있습니다. Map<String, DiscountPolicy> 여기서는 뒤(value값)에 있는 타입을 기준으로 하여 스프링 빈을 죄회 해주고 조회한 빈을 key값으로 등록해주는 것인가요?
안녕하세요! 실제 서비스를 제공할때는 메모리가 부족한 상황을 예방하기 위해 settings.DEBUG=False로 해두어야 한다는 팁을 알려주셔서 감사합니다. 그런데 연습 중에 setting.DEBUG를 꺼두니, 서버가 실행되지 않고, 다음과 같은 에러 메세지가 발생합니다. 1. DDT는 개발시에만 사용하고, 실제 서비스를 제공할때는 ddt를 끄고 제공해야하는 것인가요? 2. 추가로 수동 초기화 명령어는 model.py에 아래와 같은 형태로 추가하는 것이 맞는지도 확인부탁드립니다. from django.db import reset_queries reset_queries() 정보출처(https://stackoverflow.com/questions/33265144/is-there-any-way-to-clear-django-db-connection-queries)
안녕하세요, 도커 기본 명령어(run) 강의에서의 에러 해결경험 공유합니다. 사용 환경은 m1 맥 입니다. 1. hashicorp 설치 에러 에러내용 -> WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 해결방법 -> hashicorp 는 아직 m1맥 미지원이므로 hashicorp/http-echo 대신 jxlwqq/http-echo 입력합니다. 2. telnet 명령어 에러 에러내용 -> zsh: command not found: telnet 해결방법 -> 맥OS에서는 하이시에라 버전 이후 기본적으로 터미널에서 telnet 명령를 제공하지 않게 되었습니다. hombrew 설치 후 telnet 설치(brew install telnet)하여 사용합니다. 3. mysql 설치 에러 에러내용 -> docker: no matching manifest for linux/arm64/v8 in the manifest list entries. 해결방법 -> mysql 실행하는 docker run 명령어의 옵션으로 --platform linux/x86_64 를 추가해줍니다. 4. mysql grant 에러 에러내용 -> ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'wp'' at line 1 해결방법 -> mysql 최신버전은 관련 명령어 스타일이 약간 다르므로 mysql 설치할 때 5.7 버전을 뒤에 명시하여(mysql:5.7) 다시 설치해줍니다. 참고로 현재 실행중인 컨테이너는 docker ps 로 확인할 수 있으며, docker -rm -f [해당하는 CONTAINER ID 혹은 NAMES] 로 컨테이너를 지우고 다시 설치하면 됩니다. 5. 워드프레스 실행시 database 미연결 에러 에러내용 -> 브라우저 접속시 'Error establishing a database connection' 해결방법 -> 4번 에러를 해결했다면 잘 연결될겁니다. 혹시 mysql의 포트를 다르게 바꿨다면 워드프레스 실행 명령어 중간에 host.docker.internal:바꾼포트 로 바꾸면 됩니다.
1. 프론트엔드개발을 하고 싶은데 국비지원이 자바라면 국비끝나고 css js는 제가 따로 공부해야겠죠? 2. 자바는 선행되어서 공부해야할 언어같은것이 있을까요? 3. 프론트엔드 개발자 채용공고를 보니까 제각각 요구하는 기술스택이 달라서 뭘 중점적으로 해야할지 모르겠는데 보편적으로쓰이는 언어가 뭘까요? 중점적으로 우선 공부해야할 언어 추천부탁드립니다! 단톡방 들어갔다가 제가 개인적으로 카톡이 쌓이는걸 별로 좋아하지 않아서 여기에 질문드립니다 ㅠ 그리고 많은 질문 답변해주셔서 감사합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. const user = new User(req.body); 이 부분이 무엇을 의미하는지 궁금합니다. req.body를 넣어주는데 이게 어떤 의미인지 궁금합니다! 사용자가 보낸 요청을 토대로 user 변수에 할당이 된다는 의미인가요?!
첫 줄에 이렇게뜨고요 java.lang.IllegalStateException: Failed to load ApplicationContext 크게 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 이렇게 뜨고 엄청 길게 오류가 떠서 다 적지도못하겠네요.. 현재 JPA쪽 강의 듣고있습니다. h2데이터베이스 넘어오면서부터 문제가 있는것 같아요..
안녕하세요 영한님 서포터즈님들 다름이 아니라 제가 이번에 jpa 2편 듣다가 페치조인에 대해 다시 공부하러 왔습니다. 강의를 2번 듣고도 너무 헷갈렸습니다. 혹시나 저처럼 페치 조인에 허덕이는 분들을 위해 코드 올려봅니다 단지 영한님 코드를 종합해서 한 것이지만, 머리가 아닌 손으로 이 때는 쿼리가 나가는지, 이 때는 쿼리가 왜 안나가는지 하나하나 혼자 납득시키며 공부하시면 어느새 페치 조인이 이해되실 겁니다 제가 몇 일간 이해하는데 힘들어서 조금이나마 도움이 됐으면 좋겠습니다. Team team1 = new Team () ; team1 . setName ( "Team1" ) ; em . persist ( team1 ) ; Team team2 = new Team () ; team2 . setName ( "Team2" ) ; em . persist ( team2 ) ; Member member1 = new Member () ; member1 . setUsername ( " 회원 1" ) ; member1 . changeTeam ( team1 ) ; em . persist ( member1 ) ; Member member2 = new Member () ; member2 . setUsername ( " 회원 2" ) ; member2 . changeTeam ( team1 ) ; em . persist ( member2 ) ; Member member3 = new Member () ; member3 . setUsername ( " 회원 3" ) ; member3 . changeTeam ( team2 ) ; em . persist ( member3 ) ; em . flush () ; em . clear () ; //1. 단일 값 일반 join String query1 = "select m from Member m join m .team" ; //2. 단일 값 fetch join String query2 = "select m from Member m join fetch m .team" ; //3. 컬렉션 값 일반 join String query3 = "select t from Team t join t .members" ; //4. 컬렉션 값 fetch join String query4 = "select t from Team t join fetch t .members" ; System . out . println ( "============1. 엔티티 조인 ===============" ) ; List < Member > resultList = em . createQuery ( query1 , Member . class ) . getResultList () ; for ( Member member : resultList ) { System . out . println ( "member = " + member . getUsername () + "," + " 팀 : " + member . getTeam () . getName ()) ; } em . clear () ; System . out . println ( "============2. 엔티티 페치 조인 ================" ) ; List < Member > resultList1 = em . createQuery ( query2 , Member . class ) . getResultList () ; for ( Member member : resultList1 ) { System . out . println ( "member = " + member . getUsername () + "," + " 팀 : " + member . getTeam () . getName ()) ; } em . clear () ; System . out . println ( "============3. 컬렉션 조인 ================" ) ; List < Team > resultList2 = em . createQuery ( query3 , Team . class ) . getResultList () ; for ( Team team : resultList2 ) { System . out . println ( "team: " + team . getName ()) ; for ( Member member : team . getMembers ()) { System . out . println ( "-> member = " + member . getUsername () + " " ) ; } } em . clear () ; System . out . println ( "============4. 컬렉션 페치 조인 ================" ) ; List < Team > resultList3 = em . createQuery ( query4 , Team . class ) . getResultList () ; for ( Team team : resultList3 ) { System . out . println ( "team: " + team . getName ()) ; for ( Member member : team . getMembers ()) { System . out . println ( "-> member = " + member . getUsername () + " " ) ; } System . out . println () ; } tx . commit () ;
1) Auto든 Manual이든 false로 처음에 지정해 놓으면 들어가려는 시도를 할 때 누군가는 문을 열어놓아야하는데 이부분은 따로 구현해주면 되는건가요? Release를 먼저 호출하지는 않을 것 같아서 다른 식으로 문을 열어야 하지 않나 생각이 들어서 질문드립니다. 2) 두 이벤트 방식에서 지정하는 initialState인자는 아토믹한 방식으로 동작하는 건가요? 3) ManualResetEvent 사용 예를 보여주실 때 동작이 이해가 잘 안됩니다. false로 지정해놔서 문이 닫혀있다고 하고, 다른일을 하다가 Set이 호출되어 문이 열리면 WaitOne으로 입장을 시도한다 까지는 이해가 되는데 그러면 AutoResetEvent와 달리 자동으로 문을 닫는게 아니면 다시 문을 닫아주는 함수가 호출이 되어야하는 것 아닌가요?
5분 30초 정도에서 println 하는 부분에서 run을 누르니 에러가 떠서 수업을 진행하지 못하고 있습니다ㅠㅠ 구글링해봐도 정확한 해답을 못찾겠어서 질문 올립니다. 어떤 문제일까요?? > Task :app:processDebugAndroidTestManifest FAILED C:\Users\user-pc\AndroidStudioProjects\practice\app\build\intermediates\tmp\manifest\androidTest\debug\tempFile1ProcessTestManifest12737616324960338379.xml Error: android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. C:\Users\user-pc\AndroidStudioProjects\practice\app\build\intermediates\tmp\manifest\androidTest\debug\tempFile1ProcessTestManifest12737616324960338379.xml Error: android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. C:\Users\user-pc\AndroidStudioProjects\practice\app\build\intermediates\tmp\manifest\androidTest\debug\tempFile1ProcessTestManifest12737616324960338379.xml Error: android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details. See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 섹션 3 영속성 관리 부분을 들으며 궁금한 점이 생겼습니다. EntityManager를 이용해 엔티티를 em.persist(entity) 했을 때 영속화만 시키고, DB로는 쿼리가 안 날아가는 것으로 들었습니다. 테스트 환경이 잘못된 것인지 Spring boot 환경에서는 다른건지 궁금해서 질문 남깁니다. 저의 테스트 코드를 첨부합니다. 커밋하기 전 em.persist(studio);를 했을 때 Insert 쿼리가 나갑니다 ㅠㅠ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; @SpringBootTest public class NewTest { @Autowired EntityManagerFactory emf; @Test public void test() { EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); Hello hello = Hello.builder() .name("hello") .build(); System.out.println(">>>>>>>"); em.persist(hello); System.out.println(">>>>>>>"); System.out.println(">>>>>>> Commit"); tx.commit(); System.out.println(">>>>>>>"); em.close(); } }
"GCD - 7.(심화) Thread-safe한 코드의 구현과 방법"에서 두번째 강의 "시리얼큐와 Sync"의 7분 44초 부분 질문입니다. ppt 맨아래에 " 디폴트 글로벌큐에서의 기다림 /시리얼큐에서의 기다림이 아님" 이라고 적혀있는데, 이 부분을 " 디폴트 글로벌큐에서의 기다림 그리고 시리얼큐에서의 기다림이 아님" 이라고 이해하는게 맞는건가요? 코드에서 global큐에서 sync 코드를 시작하고 있으니 디폴트 글로벌 큐에서 기다리는게 아닌가 잘 이해가 안가서 질문드립니다.