묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
Cat.push에 대하여
안녕하세요, 고양이 데이터 post에서 cat.push를 통하여 새로운 데이터를 추가하는데, push 후 get을 통해 postman에서 결과를 보면 push를 통해 넣은 데이터가 포함되어 나오는데, 실제 cats.model.ts 파일에서는 데이터가 추가되지 않습니다. 이 부분은 파일 접근 관련하여 추가적인 함수가 필요하고, 지금은 중요하지 않다고 하셨지만 궁금증이 생겨 질문드립니다! 검색해보니 데이터가 RAM에서는 업데이트되지만 파일을 실제로 수정하지는 않는다고 하네요. 분명 cats.model을 통해 get을 할텐데 해당 파일이 업데이트 되지 않아서 이 부분이 이해가 잘 안 갑니다! API 접근 구조가 어떻게 되길래 RAM에서만 반영되고 이러는 건가요? 이 RAM은 어떤 RAM을 말하는 건가요?json 파일과 json 소스파일의 차이라고 하는데(맞나요..?) 이 저장 구조, 실행구조가 궁금합니다!https://stackoverflow.com/questions/52649541/express-push-method-not-updating-the-json-data-file이 사이트에서 답변을 참고하였습니다
-
해결됨코딩으로 학습하는 리팩토링
리팩토링 강의 [ 일부 소스 파일 누락 ]
안녕하세요 백기선님! 강의 정말 잘 듣고 있습니다 ( 리팩토링, 패턴, 자바, 스프링 등등!! ) 지금 리팩토링 강의를 보고 있던 중, Combine Fucntion into Transform 목차 부분에서 제공 해주시는 소스와 강의에서 다루는 파일이 일치 하지 않아서 글 남겨드려요! ( ReadingClient & ReadingClientTest 파일 ) 강의를 보고 해당 파일을 만드는것은 어렵진 않지만 보완이 되면 좋을 것 같습니다! 질 좋은 강의를 만들어 주셔서 항상 감사하는 마음으로 듣고 있습니다. 감사합니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
람다식과 함수포인터 관련 질문입니다.
위와같이 람다함수를 함수포인터에 대입하는건 에러가 안나는데 람다 캡처 블록에 값표시(=),참조표시(&)를하면 에러가 생기는데 이유를 모르겠습니다.
-
미해결실전! 스프링 데이터 JPA
join 된 entity save시 cast 문제질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 우선 좋은강의 감사합니다. jpa수업을 들으며 개인적으로 응용해보며 공부하고 있습니다. 해당 질문은 개인적으로 응용하며 공부하던 중 발생한 문제에 대한 문의입니다. User Entity 1 : N Scrap Entity 구조에서 Scrap.java 의 addUser method를 구현하여 동시에 저장하려고 했습니다. 헌데 user Entity를 cast하지 못했다고 에러가 발생한것으로 보입니다. java.lang.ClassCastException: Cannot cast com.api.jpaTest.domain.entity.User to java.lang.String 해당 내용에 대한 힌트라도 알고싶습니다. token에서 user에 대한 정보는 정확히 가져왔고 해당 정보를 바탕으로 DB에서 User Entity를 정상적으로 조회하였습니다. scrap은 json 더미데이터가 있어서 데이터 역시 정상적으로 파싱하였습니다. 아래 코드 중 ScrapService.java 의 scrap() method 중 sr.save(userScrap)에서 오류가 발생합니다. User.java ( user Entity ) @Schema(description = "API 사용자 정보") @Builder @Table(name = "user") @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @ToString public class User extends BaseTimeEntity implements UserDetails { @Schema(description = "user table pk",defaultValue = "db generateValue") @Id @GeneratedValue @JsonIgnore @Column(name = "user_no") private Long id; @Schema(description = "user id") @Column(name = "user_id") private String userId; @Schema(description = "사용자 이름") @Column(name = "name") private String name; @Schema(description = "비밀번호") @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @Column(name = "password") private String password; @Schema(description = "주민번호") @Column(name = "reg_no") private String regNo; @ElementCollection(fetch = FetchType.EAGER) @Builder.Default private List<String> roles = new ArrayList<>(); @Schema(description = "스크랩 정보 리스트") @JsonIgnore @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) @ToString.Exclude private List<Scrap> scraps = new ArrayList<>(); public void encodePassword(String password) { this.password = password; } public void encodeRegNo() throws EncodingException { this.regNo = AES256Util.encrypt(this.regNo); } public String decodeRegNo() throws EncodingException { return AES256Util.decrypt(this.regNo); } // security // @Override public Collection<? extends GrantedAuthority> getAuthorities() { return this.roles.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()); } @Override public String getUsername() { return this.userId; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } Scrap.java ( scrap Entity ) @Schema(description = "사용자 scrap 정보") @Builder @Table(name = "scrap") @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @ToString public class Scrap extends BaseEntity { @Schema(description = "scrap table pk") @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) @Id @GeneratedValue @Column(name = "scrap_no") private Long id; @Schema(description = "스크랩 성공 여부") @Column(name = "status") private String status; @Schema(description = "스크랩 에러 메세지") @Column(name = "errors") private String errors; @Schema(description = "스크랩 데이터 정보") @Embedded private ScrapPayData scrapPayData; @Schema(description = "스크랩 요청 일자") @Column(name = "worker_res_dt") private String workerResDt; @Schema(description = "스크랩 응답 일자") @Column(name = "worker_req_dt") private String workerReqDt; @Schema(description = "app version") @Column(name = "app_ver") private String appVer; @Schema(description = "user 정보") @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "user_no") // @ToString.Exclude private User user; public void setUser(User user) { this.user = user; } public void addUser(User user) { this.user = user; user.getScraps().add(this); } } ScrapService.java @Transactional public Result scrap() throws OtherException, EncodingException { User user = userService.getUser(); <-------- User Entity 정보 있음 ( 정상 조회 ) Scrap userScrap = getUserScrap(user); <----------- 더미 데이터를 기반으로 데이터 생성하여 데이터 있음 userScrap.addUser(user); sr.save(userScrap); <-----------저장 시 java.lang.ClassCastException: Cannot cast "User Entity path" to java.lang.String 에러 발생 return Result.builder() .statues(ApiStatus.SUCCESS) .data(userScrap.getId()) .errors("") .build(); } @Transactional Scrap getUserScrap(User user) throws EncodingException, OtherException { HashMap<String, String> jsonMap = new HashMap<>(); jsonMap.put("name",user.getName()); jsonMap.put("regNo",user.decodeRegNo()); JSONObject requestJson = new JSONObject(jsonMap); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<String> entity = new HttpEntity<String>(requestJson.toString(),headers); SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setConnectTimeout(20000); requestFactory.setReadTimeout(20000); RestTemplate restTemplate = new RestTemplate(requestFactory); ResponseEntity<String> response = restTemplate.postForEntity( ScrapConstant.URL.getMsg(), entity, String.class ); return jsonToEntity(response.getBody()); } Scrap jsonToEntity(String json) throws OtherException { try { ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); ScrapDto scrapDto = mapper.readValue(json, ScrapDto.class); JSONObject data = new JSONObject(mapper.writeValueAsString(scrapDto.getData())); JSONObject jsonList = new JSONObject(mapper.writeValueAsString(scrapDto.getData())).getJSONObject(ScrapConstant.LIST.getMsg()); JSONArray scrap002 = jsonList.getJSONArray(ScrapConstant.SCRAP_NUM2.getMsg()); JSONArray scrap001 = jsonList.getJSONArray(ScrapConstant.SCRAP_NUM1.getMsg()); return Scrap.builder() .status(scrapDto.getStatus()) .errors(scrapDto.getErrors().toString()) .appVer((String) data.get("appVer")) .workerReqDt((String) data.get("workerReqDt")) .workerResDt((String) data.get("workerResDt")) .scrapPayData( new ScrapPayData((String) scrap002.getJSONObject(0).get("총사용금액"), (String) scrap001.getJSONObject(0).get("총지급액")) ) .build(); } catch (Exception e) { throw new OtherException(e); } } Exception Message java.lang.ClassCastException: Cannot cast com.api.jpaTest.domain.entity.User to java.lang.String at java.base/java.lang.Class.cast(Class.java:3605) ~[na:na] at com.api.jpaTest.domain.entity.Scrap_Accessor_kqrtpb.setProperty(Unknown Source) ~[classes/:na] at org.springframework.data.mapping.model.InstantiationAwarePropertyAccessor.setProperty(InstantiationAwarePropertyAccessor.java:104) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.mapping.model.SimplePersistentPropertyPathAccessor.setProperty(SimplePersistentPropertyPathAccessor.java:127) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.mapping.model.SimplePersistentPropertyPathAccessor.setProperty(SimplePersistentPropertyPathAccessor.java:171) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.auditing.MappingAuditableBeanWrapperFactory$MappingMetadataAuditableBeanWrapper.lambda$setProperty$0(MappingAuditableBeanWrapperFactory.java:259) ~[spring-data-commons-2.6.2.jar:2.6.2] at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na] at org.springframework.data.auditing.MappingAuditableBeanWrapperFactory$MappingMetadataAuditableBeanWrapper.setProperty(MappingAuditableBeanWrapperFactory.java:259) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.auditing.MappingAuditableBeanWrapperFactory$MappingMetadataAuditableBeanWrapper.setCreatedBy(MappingAuditableBeanWrapperFactory.java:204) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.auditing.AuditingHandlerSupport.touchAuditor(AuditingHandlerSupport.java:169) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.auditing.AuditingHandlerSupport.lambda$touch$0(AuditingHandlerSupport.java:136) ~[spring-data-commons-2.6.2.jar:2.6.2] at java.base/java.util.Optional.map(Optional.java:265) ~[na:na] at org.springframework.data.auditing.AuditingHandlerSupport.touch(AuditingHandlerSupport.java:134) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.auditing.AuditingHandlerSupport.markCreated(AuditingHandlerSupport.java:114) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.auditing.AuditingHandler.markCreated(AuditingHandler.java:92) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.jpa.domain.support.AuditingEntityListener.touchForCreate(AuditingEntityListener.java:92) ~[spring-data-jpa-2.6.2.jar:2.6.2] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.hibernate.jpa.event.internal.ListenerCallback.performCallback(ListenerCallback.java:55) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.jpa.event.internal.CallbackRegistryImpl.callback(CallbackRegistryImpl.java:97) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.jpa.event.internal.CallbackRegistryImpl.preCreate(CallbackRegistryImpl.java:57) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:760) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:746) ~[hibernate-core-5.6.5.Final.jar:5.6.5.Final] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.16.jar:5.3.16] at com.sun.proxy.$Proxy142.persist(Unknown Source) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) ~[spring-orm-5.3.16.jar:5.3.16] at com.sun.proxy.$Proxy142.persist(Unknown Source) ~[na:na] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:637) ~[spring-data-jpa-2.6.2.jar:2.6.2] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:289) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:529) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:639) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:163) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:138) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.6.2.jar:2.6.2] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174) ~[spring-data-jpa-2.6.2.jar:2.6.2] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.16.jar:5.3.16] at com.sun.proxy.$Proxy159.save(Unknown Source) ~[na:na] at com.api.jpaTest.service.ScrapService.scrap(ScrapService.java:50) ~[classes/:na] at com.api.jpaTest.service.ScrapService$$FastClassBySpringCGLIB$$46dc0c0.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.16.jar:5.3.16] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:783) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.16.jar:5.3.16] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753) ~[spring-aop-5.3.16.jar:5.3.16] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698) ~[spring-aop-5.3.16.jar:5.3.16] at com.api.jpaTest.service.ScrapService$$EnhancerBySpringCGLIB$$b9877c5.scrap(<generated>) ~[classes/:na] at com.api.jpaTest.controller.ScrapController.scrap(ScrapController.java:33) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.16.jar:5.3.16] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.16.jar:5.3.16] at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.58.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.16.jar:5.3.16] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.58.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at com.api.jpaTest.config.jwt.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:33) ~[classes/:na] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.6.2.jar:5.6.2] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.16.jar:5.3.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.16.jar:5.3.16] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.16.jar:5.3.16] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.58.jar:9.0.58] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
test 부분에 대하여 질문 드립니다!
안녕하세요! 좋은 강의 감사드립니다. test 부분에서 메모리에 기록이 남아 있어서 afterEach method를 작성하여서 이전 기록을 지우는 걸로 이번 강의에서 배웠는데 동일한 이름을 가진 기록("spring1", "spring2") 때문에 에러가 발생하는 걸까요?
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
백그라운드 쓰레드 질문
노드를 실행하면 하나의 프로세스에서, 예를 들어 4개의 쓰레드가 있다면 직접 다룰 수 있는 스레드는 하나이기에 싱글스레드라고 표현합니다. 그럼 나머지 3개는 코드를 동시에 돌릴 준비를 하고 있다고 하셨는데, 이 나머지 3개 쓰레드는 백그라운드 livub c 라이브러리에서 지원하는 멀티스레딩에 이용되는걸로 이해해도 맞는건가요?
-
미해결Axure RP 9,10 - 서비스 기획자를 위한 최적의 프로토타이핑 툴
한 다이내믹 패널에 복수의 이미지 반복
안녕하세요. 데이먼님. 강의 잘 듣고 있습니다. 의문이 하나 생겼는데요, 다이나믹 패널에서 이미지를 다이내믹 패널과 동일하게 맞추고, 복수개의 이미지를 넣어서 로테이션 시키는 것은 이해를 했습니다. 그런데, 다이내믹 패널의 정해진 화면에서 복수개의 이미지가 보이면서 무한 반복 로테이션하는 기능도 axure에서 구현이 가능한지 여쭤봅니다. 아래 예시이미지 같이 하나의 다이내믹 패널에 여러 이미지가 보이면서 애니메이션 되는 것을 만들고 싶습니다. 그럼 미리 감사드립니다.
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
helper 함수??
vuex에 대해서 강의 + 여러 자료를 찾아보던중vuex 컴포넌트를 쉽게 사용할 수 있는(?) helper 함수란게 있다던데.. 혹시 강의 중에 vuex helper 함수 사용에 대한 부분도 있나 궁금합니다..!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 자료 다운로드
항상 강의 잘 듣고 있습니다. 최근에 강의를 다시 듣기 위해 강의 자료를 다운 받을려고 했지만 아래와 같이 나오지 않아서 질문드립니다. 감사합니다.
-
미해결뉴욕 프로덕트 디자이너가 알려주는, 입문자를 위한 UX디자인 개론
UI 디자인 원리가 잘 적용된 사례와 아닌 사례
안녕하세요, UI 디자인 원리 중 "유사성과 근접성"원리가 잘 적용된 사례와 아닌 사례에 관하여 글을 남깁니다. 좋은 UI 사례 - Skyscanner Skyscanner는 게슈탈트 이론 중 “유사성”의 원칙을 잘 실현한 사례같습니다. 어플 첫 화면에 들어가면 사용자는 콘텐츠가 크게 3가지 요소로 나눠지는 것을 알아차릴 수 있습니다. 각 요소는 아이콘의 쉐입, 크기, 컬러, 배치에서 차이를 두어 사용자가 시각적으로 요소를 구별하여 정보를 그룹화하도록 돕습니다. 디자인으로 각 요소 간 차별성을 두기 때문에 각 정보에 대한 부제를 달지 않더라도 사용자가 각 정보를 그룹화할 수 있도록 돕기 때문에 간결한 UI를 구축할 수 있는 것 같습니다. 안 좋은 UI 사례 - 마이리얼트립 마이리얼트립도 유사성과 근접성의 원리를 활용하여 정보를 그룹화했다고 보입니다. 하지만 각 요소 간의 우선순위를 찾기 어려워 사용자가 한눈에 정보를 그룹화하기는 힘들게 느껴집니다. 첫 화면에 검색창, 여행 정보, 서비스 배너, 정보 아이콘, 큐레이팅 콘텐츠 순으로 나열되어 있는데, 각 요소의 배열 순서와 크기는 사용자에게 정보의 우선순위를 보여주고 있지 않다고 생각합니다. 그렇기 때문에 사용자가 각 요소의 정보를 스캔하고 원하는(혹은 목적하는) 정보를 찾는 시간이 걸려 직관적인 서비스라고 보기 어렵습니다. 즉, 유사성과 근접성의 원칙을 고수하는 것과 더불어 콘텐츠의 우선순위를 정하고 이에 맞게 차별화를 해야 CTA까지 고려한 UI라고 볼 수 있을 것 같습니다.
-
미해결실전! 스프링 데이터 JPA
실무에서 DTO 타입으로 바로 반환하는 사례가 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 항상 잘 듣고 있습니다 ^^ DB의 검색 결과를 바로 DTO 타입으로 반환 받는 사례가 실무에서 어떤 경우에 발생하는 지 궁금합니다! 도메인 모델에서 DTO로 타입 변환은 프레젠테이션 계층에서 수행하는 게 관리 포인트를 한 곳에 모을 수 있어 효율적이라고 알고 있습니다. 혹은 요구사항이 변해서 다른 DTO 로 반환해야 하는 경우에, DB에서 바로 DTO 타입으로 조회하게 되면 여러 영역을 다 수정해야 하기 때문에 Controller 까지는 Entity로 운반하고, Controller 에서 DTO로 변환하는 게 나아 보이는데요 ! 실무에서 어떤 경우에 바로 DTO 타입으로 리턴 받도록 하는지 궁금합니다 ! 아니면 혹시 제가 생각하고 있는 부분에서 잘못 생각한 게 있을까요 ^^
-
미해결[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지
api 서버를 두개로 나눈 이유
nodecat을 api gateway 용도로서 쓰기위해 그런건가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
수업자료 다운로드 오류
수업 자료 관련하여 다운로드한 파일이 지속적으로 오류가 발생해서 메일로 보내주실 수 있는지 문의드립니다. tjgyrud66@naver.com 으로 보내주시면 감사드리겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이럴 때는 어떻게 해야 하나요?
선생님 교안따라 천천히 문제를 풀고있는데예전에 제가 풀었던 백준 문제를 다시 봤는데어케푸는지 기억이 안나는겁니다;문제를 아예 처음 볼 때 기분이랄까이런경우는 제가 그 때 운빨로 맞추고 넘어간걸까요?다시 문제 붙잡고 푸려니이런문제들이 좀 많은 것 같아서 큰일입니다
-
미해결뉴욕 프로덕트 디자이너가 알려주는, 입문자를 위한 UX디자인 개론
좋은 UX 사례와 안 좋은 UX 사례
안녕하세요, 미션으로 내주신 좋은 UX 사례와 안 좋은 UX 사례에 관해 글을 남깁니다. 강의해주신 UX 디자인 원리 중에 "행동 유도성의 원리"를 토대로 사례를 찾아봤습니다. 좋은 UX 사례 - Booking.com 행동 유도성의 원리를 토대로 찾아본 좋은 사례는 “Booking.com”입니다. 사용자의 행동을 유도할 수 있는지는 서비스 혹은 프로덕트가 사용자가 이를 사용하는 목적에 부합하는 UX를 제공하는지에 달려있다고 생각합니다. Booking.com의 사용자는 해당 서비스를 이용하려는 목적이 여행 시 숙박시설을 찾고자 함에 있고, 해당 어플은 첫 화면에서 목적에 부합하는 서비스를 가시성 있게 제공하고 있습니다. 사용자가 어플을 시작하자마자 사용자 목적에 맞는 표를 볼 수 있도록 첫 화면 상단에 위치하여 바로 숙박시설을 찾을 수 있도록 유도하고 있습니다. 또한 표의 필터를 목적지, 일정, 동반자로 단순화시켜 사용자가 사용함에 어려움이 없도록 하며, 표의 테두리를 노란색으로 디자인해 보다 중요성이 떨어지는 다른 콘텐츠와 차별성을 두고 해당 정보를 눈에 들어오도록 장치해 두고 있습니다. 안 좋은 UX 사례 - 테이블링 반면 사용자의 목적에 부합하지 않는 서비스를 제공한다면 사용자의 행동을 유도하는 것이 어렵다고 생각합니다. 테이블링 어플의 목적은 “웨이팅 맛집 줄서기 앱”입니다. 즉, 사용자는 “원하는”식당에 웨이팅을 걸기 위해 어플을 사용하는 것입니다. 하지만 어플 첫 화면에서는 식당 검색을 할 수 있는 아이콘이 왼쪽 상단에 작게 위치하거나 두 번째 탭에 위치하고 있어 사용자가 검색창을 한번 더 찾아야 하는 번거로움이 있습니다. 어플을 열자마자 보이는 첫 화면에 있는 “뭘 좋아할지 몰라서 다 준비했어요!”나 “따끈따끈한 신상 맛집!”리스트는 사용자가 제일 원하는 정보라기보다는 부차적인 요소라고 생각합니다. 오히려 사용자의 행동을 유도하기 위해서는 사용자 목적에 부합하도록 검색 페이지를 첫 번째 화면에 띄우는 것이 보다 효율적인 UX를 제공할 수 있을 것 같습니다.
-
해결됨C# 프로그래밍
강의 링크
https://youtu.be/B-yaWp900sQ
-
해결됨C# 프로그래밍
강의 링크
https://youtu.be/PE4nDJXvXhQ
-
미해결C# 프로그래밍
강의 링크
https://youtu.be/8IyoaeBs9T4
-
미해결C# 프로그래밍
강의 링크
https://youtu.be/io4YrVFCCV0
-
미해결파이썬 무료 강의 (활용편4) - 업무자동화 (RPA)
elem 후 엔터 時 attribute error 발생
말씀하신 대로 터미널에서 작업 중에 다음과 같은 에러가 뜹니다. elem = browser.find_element_by_link_text("카페")Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'WebDriver' object has no attribute 'find_element_by_link_text'>>>