inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

안녕하세요

미해결

스프링 핵심 원리 - 기본편

경력이 5년이 넘었는데도, 스프링을 쓸줄만 알지 이해도는 낮다고 생각되어 수강하고있는 개발자입니다. 예전부터 궁금하다가 답을 못찾고, 이번 강의를 보면서 제가 생각했던게 맞았지만, 과연 이것때문에 모든 코드를 이렇게 구현할까? 라는 의문점이 들어 여쭤보려 하는데요. 서비스를 구현할 때 인터페이스, 구현체로 하는 이유가 있을까요? 실무에서 항상 XXXservice, XXXserviceImpl로 업무를 했는데요. 인터페이스를 사용하며 구현체를 바꿔사용하는것은 이해됩니다. CarService을 확장한 ToyotaImpl, KiaImpl등등을 그에 맞게 확장가능한거는 이해가 되는데... 굳이 이 이유 하나만으로 인터페이스를 사용하는지 좀 궁금해서요.

  • oop
  • spring
zergcity 댓글 1 좋아요 1 조회수 560

파이참과 vscode

미해결

[Django] 장고로 인프런 따라만들기

안녕하세요 현재 강의 수강을 시작한 사람입니다. 제가 현재 vscode를 사용중입니다. 파이썬 기초강의를 몇 개 수강한 후에 html css javascript 등을 배우면서 가장 편한 에디터라고 생각했거든요. 이번 강의를 들을때에도 파이참 대신 vscode로 진행하려고 하는데 문제가 없을까요?

  • 웹앱
  • django
  • 클론코딩
전Jay 댓글 1 좋아요 0 조회수 321

맥에서 실행할 때 에러

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

맥북에서도 c++을 쓸 일이 있어서 vscode를 깔고 파일을 다운받아 cpp_study 파일에서 빌드를 실행했는데 사진과 같은 에러가 발생하네요 ㅠㅠ 구글링을 해봐도 vscode가 비주얼 스튜디오랑은 많이 다른것 같아서 설정을 어찌 바꿔야 할 지 모르겠는데 혹시 알고계신다면 알려주시면 감사하겠습니다

  • C++
ms 댓글 2 좋아요 0 조회수 604

find한 다음에 console.log로 데이터 출력할 때

해결됨

mongoDB 기초부터 실무까지(feat. Node.js)

Pretty()라는게 있는데 nodejs에서 find뒤에 사용하니 pretty() is not a function이라고 나옵니다. 이걸 사용해서 원하는 데이터만 보이도록 출려하고 싶은데 pretty말고 다른 방법있을까요? 아, ! 그리고 실제 업무에서 pretty()를 잘 사용하나요?

  • pretty()
  • 데이터
  • 데이터 엔지니어링
  • mongodb
  • javascript
  • rest-api
  • aws
  • DBMS/RDBMS
  • nodejs
GODOT 댓글 3 좋아요 1 조회수 365

user와 good 관계설정 질문드려요

미해결

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

user.js static associate (db) { db . User . hasMany (db . Auction ) ; db . User . hasMany (db . Good , { as: 'Owner' }) ; db . User . hasMany (db . Good , { as: 'Sold' }) ; } good.js static associate (db) { db . Good . hasMany (db . Auction ) ; db . Good . belongsTo (db . User , { as: 'Owner' }) ; db . Good . belongsTo (db . User , { as: 'Sold' }) ; } user 와 good 모델의 관계가 Owner, Sold 두개 인거 같은데 실행 후에 goods 테이블보면 총 3개의 foreign key 가 생성되어있는데.. 혹시 왜 그런건가요??

  • mongodb
  • mysql
  • nodejs
  • Sequelize
seonmo 댓글 1 좋아요 0 조회수 161

REST API로 로그인 설정 시 remember-me 문제

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

안녕하세요, 기선님. 항상 강좌 잘 듣고 있습니다! 다름이 아니라, 제가 이 강좌를 바탕으로 현재 프로젝트를 진행중인데 프론트엔드는 Vue.js로 진행하므로 rest api를 사용하고 있습니다. 현재 postman으로도 테스트중인데 alwaysRemember 값을 true로 설정해도 remember-me 쿠키가 들어오지 않더라구요 ㅜㅜ 하지만 네이버 oauth2 로그인을 하면 또 멀쩡하게 들어옵니다.. 현재 일반 로그인에서는 리다이렉션을 막아뒀는데 혹시 그것과 관련이 있을까요? 며칠동안 이것저것 찾아보다 도저히 답이 안나와서 이렇게 질문 남깁니다.. 코드도 첨부하겠습니다 @Component public class AuthSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { @Override public void onAuthenticationSuccess ( HttpServletRequest request , HttpServletResponse response , Authentication authentication ) throws ServletException , IOException { response . setStatus ( HttpServletResponse . SC_OK ); } } @Slf4j public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter { private boolean postOnly = true ; private HashMap < String , String > jsonRequest ; @Override protected String obtainPassword ( HttpServletRequest request ) { String passwordParameter = super . getPasswordParameter (); if ( request . getHeader ( "Content-Type" ). equals ( ContentType . APPLICATION_JSON . getMimeType ())) { return jsonRequest . get (passwordParameter); } return request . getParameter (passwordParameter); } @Override protected String obtainUsername ( HttpServletRequest request ) { String usernameParameter = super . getUsernameParameter (); if ( request . getHeader ( "Content-Type" ). equals ( ContentType . APPLICATION_JSON . getMimeType ())) { return jsonRequest . get (usernameParameter); } return request . getParameter (usernameParameter); } @Override public Authentication attemptAuthentication ( HttpServletRequest request , HttpServletResponse response ){ if ( postOnly && ! request . getMethod (). equals ( "POST" )) { throw new AuthenticationServiceException ( "Authentication method not supported : " + request . getMethod ()); } if ( request . getHeader ( "Content-Type" ). equals ( ContentType . APPLICATION_JSON . getMimeType ())) { ObjectMapper objectMapper = new ObjectMapper (); try { this . jsonRequest = ( HashMap < String , String >) objectMapper. readValue ( request . getReader (). lines (). collect ( Collectors . joining ()), new TypeReference < Map < String , String >>() { }); } catch ( IOException e ) { e . printStackTrace (); throw new AuthenticationServiceException ( "Request Content-Type(application/json) Parsing Error" ); } } String username = obtainUsername ( request ); String password = obtainPassword ( request ); //String rememberMe = request.getParameter("remember-me"); if (username == null ) username = "" ; if (password == null ) username = "" ; username = username. trim (); UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken (username, password); setDetails ( request , authRequest); return this . getAuthenticationManager (). authenticate (authRequest); } @Override public void setPostOnly ( boolean postOnly ) { this . postOnly = postOnly ; } } @Override protected void configure ( HttpSecurity http ) throws Exception { http . oauth2Login () . userInfoEndpoint () . userService ( customOAuth2UserService ); http . exceptionHandling () . authenticationEntryPoint ( restAuthenticationEntryPoint ); // 인증 실패시 401 http . formLogin (). disable (); http . logout () . logoutSuccessUrl ( "/" ); // 로그인 유지 String rememberKey = "remember_me" ; http . rememberMe () . key (rememberKey) . rememberMeParameter (rememberKey) . rememberMeCookieName (rememberKey) . userDetailsService ( memberService ) . alwaysRemember ( true ) . tokenRepository ( tokenRepository ()); http . csrf (). disable (); http . cors (); // Json http . addFilterBefore ( customAuthenticationFilter (), UsernamePasswordAuthenticationFilter . class ); } // Json @Bean public CustomAuthenticationFilter customAuthenticationFilter () throws Exception { CustomAuthenticationFilter filter = new CustomAuthenticationFilter (); try { filter. setFilterProcessesUrl ( "/login" ); filter. setAuthenticationManager ( this . authenticationManagerBean ()); filter. setUsernameParameter ( "email" ); filter. setPasswordParameter ( "password" ); filter. setAuthenticationSuccessHandler ( authSuccessHandler ); //filter.setAuthenticationFailureHandler(authFailureHandler); } catch ( Exception e ) { e . printStackTrace (); } return filter; } @Bean public PersistentTokenRepository tokenRepository () { JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl (); jdbcTokenRepository. setDataSource ( dataSource ); return jdbcTokenRepository; }

  • thymeleaf
  • spring-boot
  • JPA
  • java
  • spring
이예슬 댓글 1 좋아요 0 조회수 674

안녕하세요...

미해결

데브옵스(DevOps)를 위한 쿠버네티스 마스터

동일하게 vm들을 생성했는데 ip가 안나오네요.. (네트워크에서 natnetwork로 선택하고 시작하면 네트워크 연결이 실패했습니다.. 라고 나오는데 이것과 연관이 있는걸까요??) 감사합니다.

  • docker
  • kubernetes
최규호 댓글 1 좋아요 0 조회수 199

2:30초 경 그림 질문

해결됨

실전 자바스크립트

그림에 getYounger의 위치에 대해서 질문있습니다. static 메서드 getYounger는 Programmer가 아니라 Person으로 가야하는 것 아닌가요? 프로토타입 체인에 의해서 연결되어있기 때문에, Person이 가지고 있고, 이것을 Programmer가 프로토타입 체인을 통해서 접근가능한 것 아닌가요? 혹시 일반 클래스 필드처럼 값의 레퍼런스가 아니라 static의 경우에도 값을 복사해서 가지고 가나요? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields mdn 문서에 따르면 ` Public static fields are not reinitialized on subclasses, but can be accessed via the prototype chain.` 라고 나와 있어서 혼란스럽습니다 ㅜㅜ

  • javascript
  • es6
비오 댓글 3 좋아요 0 조회수 389

bp관련 질문입니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

스택에서 함수를 2개쓴다 가정하고 1번함수 이전bp값을 BP에 저장하고 2번함수로 넘어가서 2번함수의 이전bp값을 또 저장할때 BP에 넣는데 이러면 1번함수의 BP값을 에 2번함수의 BP값으로 덮어씌우는데 그러면 1번함수의 BP값이 소실되어 1번함수의 스택프레임 공간을 모르는게 아닌가요?

  • C++
Windfall 댓글 1 좋아요 1 조회수 198

constructor 질문있습니다!

해결됨

실전 자바스크립트

강의 마지막에 있는 constructor를 보고 궁금증이 생겨서 코드를 한번 만들어서 돌려봤는데, 제가 생각한것과 전혀 다른 ? 방식으로 동작해서 질문드립니다. 아래 코드를 보면, 생성자에 name을 받고, 상위의 클래스를 통해서 생성자호출을 하였는데, 왜 클래스 필드의 초기값이 p1.name이 iu가 아니라 다른 값이 나올까요? 참고: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields Public instance fields are added with Object.defineProperty() either at construction time in the base class (before the constructor body runs), or just after super() returns in a subclass. 라고 되어있는데 이게 후자에 해당하는 부분인가요? 저는 이해가 안가는 부분이, 클래스필드를 생성자를 통해서 초기화를 해주어야 맞지 않나? 라는 생각을 하고 있거든요.. class Person { name = 'memberPerson'; constructor(name){ this.name = name; } } class Programmer extends Person { name = 'memberProgrammer'; constructor(name) { super(name); } } const p1 = new Programmer('iu'); p1.name; >>> memberProgrammer

  • es6
  • javascript
비오 댓글 2 좋아요 0 조회수 302

들어보니 자바의 클래스와 개념이 같은거 같은데 맞나요?

미해결

Javascript ES6+ 제대로 알아보기 - 중급

자바의 클래스와 개념이 같다고 이해하면 될 까요? 문법은 다른데 super를 써서 최상위 클래스를 초기화 한 후 사용하는 방식이랑 상속도 그렇고... 비슷한데 그러면 최상위 메서드 오버라이딩도 가능한가요? 그리고 다형성도 성립이 되나요 그럼?

  • es6
  • javascript
트릴 댓글 1 좋아요 0 조회수 330

npm run dev 에서 부터 막힙니다.

미해결

따라하며 배우는 노드, 리액트 시리즈 - 유튜브 사이트 만들기

(node:5188) Warning: Accessing non-existent property 'count' of module exports inside circular dependency [0] (Use `node --trace-warnings ...` to show where the warning was created) [0] Server Listening on 5000 [0] (node:5188) Warning: Accessing non-existent property 'findOne' of module exports inside circular dependency [0] (node:5188) Warning: Accessing non-existent property 'remove' of module exports inside circular dependency [0] (node:5188) Warning: Accessing non-existent property 'updateOne' of module exports inside circular dependency [1] Failed to compile. [1] [1] ./src/components/views/LoginPage/LoginPage.js [1] Attempted import error: 'Icon' is not exported from 'antd'. [0] MongoDB Connected... 이러한 에러가 뜨고 ICON이 antd에서 익스포트되는게 아니라는데 어떻게 해결해야 되나요?

  • nodejs
  • mongodb
  • react
  • redux
sj p 댓글 4 좋아요 0 조회수 496

이런 에러는 뭔가요

해결됨

리액트로 나만의 블로그 만들기(MERN Stack)

모달 창 띄우고 서브밋을 눌러보면 모달에서 msg로 나와야한데 안나오네요

  • bootstrap
  • react
  • nodejs
  • express
  • mongodb
  • redux
스터디하쟈 댓글 3 좋아요 0 조회수 366

My-sql

미해결

[백문이불여일타] 데이터 분석을 위한 중급 SQL

My-sql은 보니까 EXCEPT, MINUS(차집합) INTERSECT(교집합) FULL OUTER JOIN 이런것들을 지원안하는데도 코딩테스트에서 My-sql을 쓰는게 좋은가요..? 오라클에 비해 지원 안되는게 벌써 3개니 더 불편해 보이긴 합니다 오히려 사용안하는게 실행시간을 단축하는데 좋은가요? 뭐 각자 취향차이겠지만 저는 둘다 초보라 하나를 메인으로 가려고 해서 여쭤봅니다. 원래 oracle을 약간 기본적인거만 써봤는데 초급반, 중급반 강의 my-sql쓰면서 다시 oracle로 바꾸기고 그렇네요

  • sql
golk lee 댓글 1 좋아요 1 조회수 215

expression Error: 열거형에 요소가 너무 적어 작업을 완료할 수 없습니다.

미해결

진짜 현업에서 쓰이는 직장인의 실무 엑셀 - 데이터 가공부터 분석까지

안녕하세요? url 주소 편집후, 탐색창에서 body 부분 클릭시 [Expression Error: 열거형에 요소가 너무 적어 작업을 완료할 수 없습니다.]라고 되고 로드할 수 없는데 무슨 문제일까요? ㅠㅠ

  • ms-office
  • excel
Yunseok Lee Ryan 댓글 3 좋아요 2 조회수 1518

local에서 terminal이나 aws에서 서버를 백그라운드로 돌리는 방법 문의

미해결

따라하며 배우는 노드, 리액트 시리즈 - 쇼핑몰 사이트 만들기[전체 리뉴얼]

서버를 백그라운드로 어떻게 돌리나요? aws에서 npm run start 로 하면 서버가 백그라운드에서 돌지 않아서 cli 창을 끄면 서버가 종료됩니다. pm2 start server/index.js 로 하면 서버가 계속 돌아가긴 하지만 이미지를 못 찾아서 not found 에러가 발생합니다. 해결 방법 말씀해주시면 감사하겠습니다.

  • mongodb
  • react
  • 웹앱
  • redux
  • nodejs
Abraham 댓글 1 좋아요 0 조회수 189

상품주문 테스트에 대한 질문있습니다.

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 선생님 테스트에 관한 질문 하나 올립니다. 1. 상품 주문 관련테스트를 진행할 때 그전에 Member와 Item을 insert하는 과정에서 영속성 컨텍스트에 저장해두고서 실제 아래와 같이 findeOne과 같이 영속성 컨텍스트에서 조회해온다라고 이해하고 있습니다. 다음 줄에 영속성 컨텍스트를 지워주고 난후에 조회시 em .flush() ; em .clear() ; assertEquals부분에서 오류가 납니다 오류 내용은 아래와 같습니다. 테이블을 확인해보니 order_item에 oder_id값이 null이여서 그런거였습니다. 왜 null 이들어가는지 확인이 안되네요 ..ㅠㅠㅠ Order Entity에는 아래와 설정이 되어있습니다. 생성메소드에서 무언가 수정해줘야할까요 ..

  • spring
  • JPA
  • 웹앱
  • java
  • spring-boot
Na Seunghoo 댓글 2 좋아요 0 조회수 247

주인이 아닌 관계에서 읽기 질문

미해결

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

안녕하세요 강사님, 수강 중 궁금증이 생겨 질문을 남깁니다. 지금까지 설명해주신 연관관계 주인이 왜 존재해야 하는지, 또 어떤 식으로 주인을 설정해야 하는지는 모두 이해했습니다. 설명하신 내용 중에 아래와 같은 내용이 있었는데요. "연관관계 주인이 아닌 관계로는 읽기 기능만 사용이 가능하다. 그 외의 모든 관리는 관계의 주인이 처리한다." 이와 관련하여 팀에 새로운 멤버를 추가하고 싶을 때 team.getMembers().add(member)를 하면 DB에 반영되지 않고, member.setTeam(team)을 해야만 제대로 반영되는 부분까지 이해했습니다. 그런데, member.setTeam(team)으로 멤버가 팀을 가지도록 하고, 트랜잭션 커밋까지 완료해 해당 내용이 DB에 정상적으로 반영이 되었다면.. 그 이후에 따로 team.getMembers().add(member)를 하지 않아도 Team이 가지고있는 List<Member> members에서 방금 추가한 member를 조회할 수 있어야 하는 것이 맞지 않나요? 이를 확인하기 위해 아래와 같은 코드로 실습을 진행하였습니다. try { Team team = new Team() ; team.setName( "TeamA" ) ; em.persist(team) ; Member member = new Member() ; member.setName( "MemberA" ) ; member.setTeam(team) ; em.persist(member) ; tx.commit() ; Team findTeam = em.find(Team. class, member.getTeam().getId()) ; List<Member> members = findTeam.getMembers() ; for (Member m : members) { System. out .println( "Name : " + m.getName()) ; } } catch (Exception e) { tx.rollback() ; } finally { em.close() ; } team을 생성하고 member를 생성하여 member에 team을 할당해줬습니다. em.persist를 통해 해당 객체들을 영속상태로 만들었고 tx.commit으로 flush처리까지 해주었습니다. 하지만 Name : MemberA는 출력되지 않습니다. 물론 DB에는 정상적으로 저장되었더라도 메모리에는 저장되지 않았기 때문에 조회가 안 된다고 말씀하시기는 했지만.. 이 코드의 경우에는 Team과 Member가 정상적으로 DB에 적용된 후에 em.find()를 통해 새롭게 받아온 Team으로 조회한 것인데.. 왜 제대로 조회되지 않는 것인지 모르겠습니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 추가 질문 하나만 더 드리겠습니다. 관계의 주인이 아닌 List<Member> members는 읽기 전용으로만 사용하기 때문에 members.add(member)를 아무리 해도 DB에 영향을 끼치지는 않겠지만.. 쓰기 권한이 없는 녀석에게 쓰기 메서드가(list.add()) 존재하는 것 자체만으로 어떠한 문제가 야기될 수도 있지는 않을지 궁금합니다. 이 부분에 대해서도 함께 답변해주시면 감사하겠습니다.

  • JPA
  • java
akakakakak 댓글 5 좋아요 0 조회수 300

Python 코드 실행을 위한 코드 다운로드 관련

미해결

밑바닥 부터 시작하는 머신러닝 입문

상세한 강의와 설명에 감사드립니다. 강의 내용 중에 코드 설명을 해 주시는 Python 코드를 내려 받을 수 있는 Github 같은 곳이 있으면 안내 부탁 드리겠습니다.

  • 머신러닝 배워볼래요?
김대영 댓글 1 좋아요 0 조회수 310

인기 태그

인프런 TOP Writers

주간 인기글