강의는 대략 도커파일 작성 쯤입니다만, hello_world를 삭제한 강의 이후쯤부터 잘못된것 같습니다. SignUp에서 id와 pw를 입력하면, Reverse for 'hello_world' not found. 'hello_world' is not a valid view function or pattern name. 라는 오류 메세지가 뜨네요. url 패턴을 정의할 때, pattern name을 지정하지 않아서, url reverse 시에 해당 패턴을 찾지못한다는 오류로 알고있습니다. 어디가 틀렸을까요? 그 hello world 함수를 강좌대로 삭제한게 맞았고, 같은 코드를 작성했다고 믿었는데 저는 오류메세지가 뜨네요 ㅜㅜ 해결을 위해 커뮤니티에 'reverse'라는 키워드로 질문 검색해봤는데, 같은 오류지만 원인이 다른 것 같습니다. https://github.com/synodical/pinterest_django 제 깃헙주소입니다 Environment: Request Method: POST Request URL: http://127.0.0.1:8000/accounts/create/ Django Version: 3.2.5 Python Version: 3.8.2 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'bootstrap4', 'accountapp', 'profileapp', 'articleapp', 'commentapp', 'projectapp', 'subscribeapp'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch return handler(request, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 172, in post return super().post(request, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 142, in post return self.form_valid(form) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 126, in form_valid return super().form_valid(form) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 57, in form_valid return HttpResponseRedirect(self.get_success_url()) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/views/generic/edit.py", line 112, in get_success_url if self.success_url: File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/utils/functional.py", line 135, in __wrapper__ res = func(*self.__args, **self.__kw) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/urls/base.py", line 86, in reverse return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) File "/Users/LeeYeEun/venv/lib/python3.8/site-packages/django/urls/resolvers.py", line 694, in _reverse_with_prefix raise NoReverseMatch(msg) Exception Type: NoReverseMatch at /accounts/create/ Exception Value: Reverse for 'hello_world' not found. 'hello_world' is not a valid view function or pattern name.
$ ./gradlew clean build ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_261\bin Please set the JAVA_HOME variable in your environment to match the location of your Java installation. 이런식으로 오류가 발생하는데 어떻게 해결할수있을까요?
self에 관련해서 질문 드립니다. 해당 강의에서 self.object.user.pk를 통해 pk값을 가져오고 이를 detail 페이지에 pk값으로 넘겨줍니다. 이전 강의에선 pk값을 넘겨주는 일이 있을 경우 self.request.user.pk 를 통해 pk값을 넘겨주었습니다. 왜 여기선 self.request 방식이 아닌 self.object를 통해 user pk값을 넘겨주나요?
현재 제가 본 강의는 아래와 같습니다. -스프링 기반 REST API 개발 -스프링 부트 개념과 활용 -더 자바 Java8 -더 자바, 코드를 조작하는 다양한 방법 -스프링 웹 MVC (절반정도..) 물론 모든 내용을 이해했다고 하긴 어렵고 코드를 따라가고 이해하려고 노력은 했습니다.... 제가 추후 프로젝트에서 Springboot, JPA, Web, RestAPI, Embbed Tomcat, TDD, Test코드(mvn test 구현) 이렇게 구성한 backend를 추진하고 싶습니다. JPA가 부족해서 강의를 따라가며 학습해야 할거 같은데, 지금 시점에 어떤 강의를 보는게 좋을까요?
nox_adb devices 입력했을 때 127.0.0.1:62001 devices 라고 나오는데 frida-ps -D 127.0.0.1:62001 입력하면 Device '127.0.0.1:62001' not found 라고 나옵니다. (frida -U ~~) 하면 연결되는 것도 확인했습니다.. 그리고 frida-ls-deivces라고 입력하면 Id Type Name -- ------ ------- local local Local System socket remote Local Socket 라고 나옵니다.. 녹스 프리다 콘다 다 삭제하고 다시 깔았는데도.. 똑같습니다....frida-ps -D옵션이 안되는..이유가 뭘까요...!! 그리고 frida-ls-devices 에 nox목록이 안뜨는 것도... 버전은 파이썬: 3.7.11 녹스: 7.0.1.3 프리다: 15.0.16 콘다: 4.10.1 입니다.
회원 가입부분을 한번 해보고 싶은데 id 부분이랑 createdAt,updatedAt 설정을 어떻게 해야할지 문의 드립니다. await sequelize . query ( ` INSERT INTO users (id, userName, email, password, phoneNumber, memberClassification, membershipGrade, memberRole, createdAt, updateAt) values (?,?,?,?,?,?,?) ` , { replacements : [ id부분 어떻게 써야하나요 ? req . body . userName , req . body . email , req . body . password , "0" , req . body . memberClass , "0" , "0" , createdAt 부분을 now () 로 하고 싶은데 어떻게 써야하나요 ? updateAt 부분을 now () 로 하고 싶은데 어떻게 써야하나요 ? ], type : QueryTypes . INSERT , } );
MyLogger를 보면 @Component @Scope (value = "request" ) public class MyLogger { @Component 되어있는데 이를 스프링빈 등록하려면 어디선가 @ComponentScan이 진행되어야 할텐데 그 진행되는 부분이 어디인가요? 예전에 만들어 놓은 AutoAppConfig 에서 진행되는건가요? @Configuration @ComponentScan public class AutoAppConfig { } 이게 예전에 예제하면서 만든 AutoAppConfig인데 이곳에서 진행되는건가 싶어서 @ComponentScan을 주석처리했는데도 실행을 하면 잘돌아가는걸 보니 MyLogger가 스프링빈에 등록된거 같은데 어디서 이작업을 진행되는지 알 수 있을까요? 추가 질문으로 Controller 부분에 @RequsetMapping("log-demo")로 요청받은 url을 알 수 있었는데 @GetMapping을 사용해도 차이는 없는건가요?
안녕하세요 이클립스로만 코딩을 해보다가 다시 스프링 공부하려고 듣고 있습니다. 예전에 자바 1.8버전은 다운받아놔서 자바 버전 확인할때 그 버전으로 나오는데 이클립스 셋팅은 11로 했습니다. 원래 깔려있는 jdk 버전을 올리면 되는건가요 아니면 인텔리제이 개발 버전을 1.8로 줄여도 가능한건가요?
exponent 범위를 표현할 때 범위가 -126 ~ 128 라고 하셨는데, 0000 0000 과 1111 1111은 특수한 용도로 사용한다고 하면 실제 값을 표현할 수 있는 범위는 0000 0001 ~ 1111 1110이 되어 10진수로 표현하면 (1 - 127) ~ (254 - 127) = -126 ~ 127이 될 것 같습니다. 혹시 제가 잘못 이해한 부분이 있을까요?
강의해서 1:N 은 페이징처리를 하려고하면 인메모리로 다 올려버린다고 이해하였습니다. 하지만 약간 이해가 안된다고 해야될까요? 결론적으로 정확하게 메커니즘을 제가 이해를 못하는거 같습니다. 강의를 3~4번 다시 보구 있습니다만 몇가지 질문드립니다. 1. jpql에서 1:N으로 fetch join을 하여 뻥튀기? 데이터가 되어 distinct로 해결하였습니다. 여기서 추가로 페이징을 넣으면 인메모리로 바꿘다고하셨는데, 정확하게 jpa에서 예를 들면 select distinct o from order o join fetch o,orderItems oi 이렇게 하구 페이징처리를 하면 인메모리로 된다고하셨는데 distinct를 하기전에 jpql이 1:N인걸 인지하고 인메모리로 일다누올린다는건지 궁금합니다 2. 위에 내용과 동일하게 단순히 1:N 어노테이션만 보구 컬렉션 연관관계가 되는기준으로 페이징을 처리하면 워닝 에러가 나는지 궁금합니다
제가 블로그 어플리케이션을 한번 만들어 보고자 하는데 @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "parent_id") private Category parent; @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true) private List<Category> child = new ArrayList<>(); 하나의 카테고리 엔티티안에서 이런식으로 parent, child로 구성했더니 child는 parentid를 가지고 rootcategory의 경우 parentid는 null값을 가지는 하나의 테이블이 생성되었습니다. 저장의 경우 아주 잘되는데, 다만 문제가 parent category나 root category를 삭제했을 경우 자식 카테고리들은 전부 다 삭제되도록 하고 싶습니다. 그래서 아래의 코드와 같이 연관관계를 끊어주는 메서드도 만들었습니다. public void cutCategoryRelation(Blog blog) { blog.getCategories().remove(this); if (this.getChild().isEmpty() && this.parent != null) { this.parent.getChild().remove(this); } if (this.parent != null) { this.parent.getChild().remove(this); } } 제 생각으로는 cascade.ALL을 사용했기 때문에 부모 -> 자식으로의 연관관계만 끊어주면 된다고 생각하는데 테스트에서 에러가 발생합니다. 구글링 해보니 Parent category와 child category를 나눠서 테이블을 두개 만들어줘야 cascade가 작동된다? 라고 이해한게 맞는지 잘 모르겠습니다. 그럼 무한 카테고리를 하려면 자식을 가진 부모 카테고리는 삭제가 불가능한 것일까요? (자식없는 카테고리는 잘 삭제됩니다!)
아랫분들도 비슷한 질문을 해주셨는데, 그에 대한 답변이 제대로 이해가 안가서 다시한번 질문드립니다. ==============>질문을 드리는 과정에서 제가 이해한 내용이 있는데 이해한 내용이 맞는지 확인부탁드립니다! 제가 지금까지 수강들은 내용을 적자면 @Configuration 을 통해 컨테이너에 저장되면 같은 클래스에 대해 싱글톤이 유지 된다고 이해하였습니다. 그런데 제가 예제를 다시 돌아보면서 의문이 생겨 질문 기존 AppConfig에서 @Configuration을 주석을 하였습니다. //@Configuration public class AppConfig { @Bean public MemberService memberService () { System. out .println( "call AppConfig.memberService" ) ; return new MemberServiceImpl(memberRepository()) ; } @Bean public OrderService orderService () { System. out .println( "call AppConfig.orderService" ) ; return new OrderServiceImpl(memberRepository() , discountPolicy()) ; } @Bean public MemberRepository memberRepository () { System. out .println( "call AppConfig.memberRepository" ) ; return new MemoryMemberRepository() ; } @Bean public DiscountPolicy discountPolicy () { return new RateDiscountPolicy() ; } } 이후 테스트 코드에서 두개의 객체를 생성해 값을 확인해보았습니다. #1번테스트 @Test void springContainer (){ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig. class ) ; //1. 조회 : 호출할 때 마다 객체 생성 MemberServiceImpl memberService1 = ac.getBean( "memberService" , MemberServiceImpl. class ) ; //2. 조회 : 호출할 때 마다 객체 생성 MemberServiceImpl memberService2 = ac.getBean( "memberService" , MemberServiceImpl. class ) ; // 참조값이 같은 것 확인 System. out .println( "memberService1 = " + memberService1) ; System. out .println( "memberService2 = " + memberService2) ; // assertThat(memberService1).isSameAs(memberService2); } 테스트 결과 두 개의 객체 memberService1과 memberService2의 참조값이 같다는걸 확인했습니다. 저는 이 결과를 보고 @Configuration이 없이 싱글톤이 유지되어 의문이 생겼습니다. @Configuration을 여전히 주석한 상태로 다른 테스트인 #2번테스트 @Test void configurationTest (){ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig. class ) ; MemberServiceImpl memberService = ac.getBean( "memberService" , MemberServiceImpl. class ) ; OrderServiceImpl orderService = ac.getBean( "orderService" , OrderServiceImpl. class ) ; MemberRepository memberRepository = ac.getBean( "memberRepository" , MemberRepository. class ) ; MemberRepository memberRepository1 = memberService.getMemberRepository() ; MemberRepository memberRepository2 = orderService.getMemberRepository() ; System. out .println( "memberService -> memberRepository1 = " + memberRepository1) ; System. out .println( "orderService -> memberRepository2 = " + memberRepository2) ; System. out .println( "memberRepository = " + memberRepository) ; // assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); // assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } 이 코드의 결과를 확인해보니 세개의 객체 memberRepository가 모두 다른 참조값을 가지고 있음을 확인했습니다. 그리고 다시 AppConfig.class에 @Configuration의 주석을 해제 후 같은 참조값을 가진것을 확인했습니다. 질문을 드리면서 제가 깨달은 내용은 #1번테스트 와 #2번테스트 의 차이는 1번 테스트는 스프링컨테이너에 MemberService가 하나만 등록되었기 때문에 여러개를 생성해서 같은 참조값을 가지게 된거고 2번 테스트는 스프링컨테이너에 MemberRepository가 3가지의 객체로 저장되었기 때문에 3가지의 객체 모두 다른 참조값을 가지게 된거다. 따라서 @Configuration을 통해 스프링컨테이너에 MemberRepository를 싱글톤형태로 하나만 남게 된 것. 제가 이해한 내용이 맞나요? 제가 이해한 내용이 맞다면 제가 지금껏 잘못 생각한 내용은 @Configuration 이 없이 스프링컨테이너에 등록하게 되면 싱글톤 유지를 하지 못하는것은 맞는데 싱글톤의 범위(?)를 제가 잘못 이해하고 있었던 것 같습니다. 그냥 혼자 이해하고 말까라고 생각했다가 확인을 받고, 저랑 비슷하게 이해하셨던 분들이 있으신거 같아서 글 올립니다! 감사합니다!
안녕하세요 김영한 팀장님! hibername.hbm2ddl.auto value를 create 또는 create-drop으로 해도 현재 엔티티의 GeneratedValue 전략이 Identity라면, 시퀀스 또는 테이블 전략에서 기존에 (테스트용으로 기존에 db에 반영을 해둔) 쓰였던 시퀀스 및 테이블은 자동으로 drop이 되지 않는 것 같습니다. 이 부분은 관련 전략을 쓸 때만 drop & 초기화 되는건가요?