안녕하세요? 늘 좋은 강의와 친절한 답변에 대해서 감사드립니다 1. form에 대해서 질문드립니다 def signup ( request ) : if request.method == ' POST ' : form = SignupForm ( request.POST ) # signupform의 인스턴스 생성 if form.is_valid (): form.save () messages.success ( request, " 회원가입을 환영합니다 " ) next_url = request.GET.get ( ' next ' , ' / ' ) # Get메소드로 들어왔을 때, next라는 인자가 있으면 그걸 가져오고, 없으면 그냥 /를 가져온나 return redirect ( next_url ) else : form = SignupForm () return render ( request, ' accounts/signup_form.html ' ,{ ' form ' :form} ) 위에서 보면 첫번째 if문에서 메소드가 post일 경우 내용을 처리해주는 것 같은데요 그 바로 밑에보면 request.Get.get이 있습니다. GET메소드에서 next가 있으면 들고오고 없으면 /를 반환하라는 것 같은데, 어째서 가능한지 모르겠습니다 ㅠ POST와 GET메소드 요청이 함께 올 수 있나요? 2. 7장 이후의 (즉 8장부터)강의 내용에 대해 질문드릴려고 합니다. 현재 7장을 들으면서 인스타그램을 만들어보고 잇습니다만 ㅠㅠ 허덕이는 제자신을 보니 아무래도 강의를 여러번 들으면서 다시 정리를 해야겠다는 생각이 많이 듭니다. 저는 4월초에 백엔드 개발자가 되기 위한 부트캠프를 들어가는데요, 그전까지 선생님의 강의로 장고를 좀 잘다듬고 싶은 마음이 있습니다. 다만 지금 제 수준을보니.. 시간이 많이 걸릴 것 같아 선택을 해야만 할 것 같습니다.ㅠㅠ 11장, 배포에 관한 부분은 부트캠프를 다니면서 나중에 들을 생각이구요 지금 고민이 되는 부분이 , 강의를 끝까지 완강을 하고 전체강의를 한두번 더들을지, 혹은 특정강까지만 강의를 듣고 그까지 3-4회정도 반복을 할까 고민중입니다. 8,9,10장의 내용이 백엔드 개발자로서, 프론트가 어떤식으로 돌아가는지 알 수있는 반드시 필요한 내용이라거나 혹은 어차피 DRF(뭔진 잘 모르겠지만 ㅠ)와 같은 기능을 장고개발자로서 반드시 쓸 수 밖에 없다면 , 앞의 내용(1~7장까지)에 조금 소홀해지더라도 10장까지 강의를 듣고 나서 2회정도 다시 강의를 들을 생각입니다. 하지만 그렇지 않다면 8장 정도까지만 강의를 듣고, 처음부터 8장정도까지 3-4회정도 반복을 하면서 좀 탄탄하게 다지고 싶은 마음이 큽니다.(선생님의 강의를 허덕이면서 따라가는 제자신을 보니, 기초적인 내용을 반복하고 싶다는 마음이 좀 가득합니다 ㅠㅠ) 서론이 너무 길었네요. 질문을 요약하면, 9-10장의 내용이 혹시 백엔드개발자로서 뗄수 없는 부분인가? 인듯 합니다. 정답은 없는 부분일지도 모르지만, 선택을 위한 조언을 구합니다 ㅠㅠ 초조한 마음에 실례되는 질문을 드린게 아닐까 걱정이되네요. 늘 좋은 강의와 답변 감사합니다.
아무도 안물어보시는것 같아서, 묻게되었습니다. 영상 7분 9초 경 - 영상에 없는 "추가적인 NOT_FOUND 반환값" 을 갖도록 해서, 문서처리를 하려고합니다 이는, ResponseEntity.notFount() 반환값이, HeadersBuilder 인터페이스 타입이라서.. ResponseEntity.HeadersBuilder 이 경우 body(..) 가 없고, header( .. ) 만 있는데, 본문을 담을 수 없습니다. 그래서 Header 만 추가되도록 구성해야 하는데요, 학생들에게 구현하도록 두신건지, 너무 간단해서 언급 안하신건지, 구현하려고 하니 검색자료가 잘 나오질 않아 해매고 있습니다. 질문입니다 HATEOAS 의 경우, 이런 부분은 일반적으로 어떻게 처리가 되는지요? 아래 코드에서 " .header(HttpHeaders.?, ...?) "에 Location 속성에 경로값 설정만 하면 될까요? @GetMapping("/{id}") public ResponseEntity getEvent(@PathVariable Integer id) { var dtoOut = eventRepository.findById(id)... if (dtoOut.isEmpty()) return ResponseEntity .notFound() .header(HttpHeaders.??, ...???) <<< .build(); ... return ResponseEntity.ok(...) } 또는, 구현할 필요가 없나요? (HATEOAS 가 전후방 이동경로를 제공하는 메커니즘이라면, 이 경우에도 방향을 잃지 않도록 제공해야 할까요? 아니면 필요가 없나요? 또는 redirect.. ) 궁금합니다
코드를 똑같이 작성하고 실행을 해보니 아무것도 화면에 출력되지 않아 강의 목차에 오른손 법칙 강의에 올려주신 파일을 다운받아 코드를 돌려봐도 똑같이 아무것도 화면에 출력되지 않았습니다. 혹시몰라 #region 프레임관리 부분을 주석처리 하고 실행을 해보니 정상 출력이 되었는데 왜그런지 알 수 있을까요?
안녕하세요! 강의를 듣다가 이해가 되지 않아서 처음부터 돌려 보고 있는데 대문자/소문자 오브젝트가 계속 잘 이해가 되지 않아 질문드립니다. 저는 대문자 오브젝트는 데이터 저장을 위한 프로퍼티 집합이고, 소문자 오브젝트는 데이터 처리를 위한 프로퍼티 집합이라고 이해했습니다. 대문자/소문자 오브젝트 모두 구조는 key: value (프로퍼티)로 이루어져 있지만, 데이터 저장을 위한 것 VS 데이터 처리를 위한 것을 구분하기 위해 선생님께서 대문자 VS 소문자 오브젝트를 구분하셨다고 이해했습니다. (제가 이해한 게 맞나요?...) 그런데 Number object 파트에서 아래처럼 new 연산자를 설명하실 때, var obj = new Number (); console . log ( typeof obj); 생성된 인스턴스 type을 찍어보면 object로 나오는데, 이 type이 소문자 오브젝트라고 하신 게 이해가 안 됩니다. 소문자 오브젝트를 복사한 개념이니까 소문자 오브젝트라고 하신 걸까요? console . log ( typeof { lang: " JS " }); 이것도 type은 똑같이 object가 나오는데, 이건 데이터 저장 목적이 있는 대문자 오브젝트이니까, 대문자 오브젝트 type이다 라고 하면 맞는 설명인가요? 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] http 강의를 다 듣고 나서 새로운 세계가 열렸습니다. 너무 감사 드립니다. 강의에서 말씀하시는 프록시 캐시가 프록시 서버 캐시를 말씀하시는 것으로 이해 됩니다. 첫번째 질문은, 캐시에는 웹캐시(브라우저)가 있는 것으로 알고 있는데 no-cache를 사용했을 경우에 프록시 캐시(서버)가 없을 경우에는 웹캐시에서 원 서버에 확인하는 것인지 궁금합니다. 두번째 질문은, http강의를 모두 듣고 배민 공홈은 어떻게 사용하나 궁금해서 들어 가봤는데 js, css 및 이미지는 amazon S3를 사용하고 있었습니다. 아마 별도 프록시 서버가 없는 것으로 보입니다. ( 그렇게 생각한 이유는 '임시 헤더가 표시됩니다. 전체 헤더를 보려면 캐시를 사용 중지하세요' 문구가 없어서 입니다. ) 모두 다 no-cache는 사용하지 않는 것으로 보였고 상태 코드는 200이었습니다. 원격 주소는 동일한데 어떤 것은 200 ( 디스크 캐시에서)가 붙어 있고 어떤 것은 없었습니다. 이 둘의 차이가 무엇인지 궁금합니다. ( 구글을 살펴봤을 때 일부 캐시의 경우 200 OK (메모리 캐시에서)라고 적혀 있었습니다. ) 두번째 질문에 이어서 세번째 질문입니다. no-cache를 사용하는 부분은 https://www.google-analytics.com를 호출하는 부분이었습니다. 아마 사용자 행동 분석 태깅을 위함인 것 같은데 해당 부분은 post로 호출되었습니다. post 호출은 조회가 아닌 수정, 저장 등을 위함으로 알고 있는데 왜 캐시 관련된 ( cache-control: no-cache, no-store, must-revalidate )된 부분을 response로 내려 주는지 궁금합니다. \s 감사합니다.
keyframe을 처음봤는데 어찌저찌 구글링해서 이론은 가볍게 배워서 다시 보는 중입니다. 저는 keyframes부분을 이렇게 작성했는데, 선생님은 왜 0% 일 때 scale(.5) 50%일 때 scale(1.2) 100%일 때 다시 0.5로 돌아오게끔 하셨는지 궁금합니다. 제가 생각했던 건 애니메이션 진행률 0%일 때 크기가 작았다가 100%일 때 본래 크기로 돌아오는 거라서 0%일 때 scale 0.5(0이면 너무 과하게 작아져서 0.5정도가 적당하더라고요), 100%일 때 1로 적용을 했는데 선생님처럼 하면 0%, 100%일 때 중간크기로 돌아오고 50%일 때 가장 큰 것 아닌가요? 만약 direction을 alternate로 적용한 경우에 저처럼 해도 문제가 되지 않을까요?(결과물은 똑같이?비슷하게?나옵니다) 선생님은 alternate를 지정하지 않으셔서 0%가 시작 50%가 끝 100%가 다시 시작으로 돌아오는 느낌으로 코드를 작성하신 걸까요?.. 아래 제 css전체 코드도 올립니다! @keyframes loading{ 0% { opacity: 0; transform: scale(.5); } 50% { opacity: 50%; } 100% { opacity: 100%; transform: scale(1); } } body{ height: 100vh; text-align: center; display: flex; justify-content: center; align-items: center; } .loading span{ width: 50px; height: 50px; display: inline-block; border-radius: 100%; margin: 2px; animation: loading .5s linear infinite alternate; } .loading span:nth-child(1){ background-color: pink; animation-delay: 0s; } .loading span:nth-child(2){ background-color: rgba(103, 184, 255, 0.753); animation-delay: .3s; } .loading span:nth-child(3){ background-color: rgba(104, 255, 177, 0.842); animation-delay: .5s; }
vue 5.0.1 node 12.14.0 nvm 0.39.2입니다. 서버와 같이 10.16.3.으로 하려고 했는데 vue cli가 node 버 전을 12이상 요구해서 그냥 12.14.0으로 하였고 vue create 하면 vue.config.js 파일에 이와 같이 있어 eslint 설정을 할 수 가 없네요 방법이 있을까요? const { defineConfig } = require ( " @vue/cli-service " ); module . exports = defineConfig ({ transpileDependencies: true , });
안녕하세요. 컬렉션과 스토어 정리가 잘 되지 않아 질문드립니다. https://www.inflearn.com/questions/265095 를 읽고나서 조금 더 혼란스러워서요..ㅠㅠ 위 질문에서 DELETE /members/{memberid} 는 생성/관리의 역할을 서버가 맡고 있다고 보는것이 맞다라고 답변이 적혀있는데요. 강의에서는 PUT /files/{filename} 은 클라이언트가 리소스의 URI를 알고 관리하기 때문에 /files는 스토어라고 설명되고 있습니다. 형태만 봤을 땐 files나 members의 URI 형태나 처리하는 방식이 비슷해 보여서 정리가 되지 않습니다.ㅠ PUT /files/{filename} 은 파일 자체를 만들어주는것이(생성)이 아니라서 스토어이고, DELETE /members/{memberid}는 멤버정보를 DB에 저장해서 하나의 회원을 생성/관리(수정,삭제)하기 때문에 컬렉션이라고 이해하면 될지요? 그게 아니라면 파일도 결국 members처럼 파일정보를 넘겨서 파일은 서버에 저장하고, 파일정보는 DB에 저장하므로 서버에서 처리하는게 아닌가하는 의문이 듭니다. 매번 답변해주셔서 감사합니다 :)
안녕하세요~ 포트폴리오 제작할때 퍼블리싱전에 포토샵 UI 디자인이 중요하다고 하셨는데 구체적으로 포토샵으로 기능을 이용해서 제작하는건지 어떻게 해야되는지 궁금합니다. 그리고 제가 포토샵은 잘 못다루는데 포토샵 UI 디자인 다루는것도 따로 공부해야되나요?? 포토샵은 어느정도까지 공부해야되는지 궁금합니다..
안녕하세요! 강사님 강의를 보고 여러가지 응용해보고 싶어서 중고장터를 클론코딩 하고 있습니다. 그러던 와중 특정 상품에 들어가면 상품에 달린 문의 글을 불러오는 로직을 작성했습니다. 하지만 문의글을 작성한 유저의 아이디만 불러올 뿐 populate를 할 수 있는 방법이 떠오르지 않아 도움 요청합니다.. DB의 구조는 상품 모델, 유저 모델, 상품문의 모델이 있다고 할 때 상품문의 모델은 문의가 작성된 상품 아이디: ObjectId(62149490b348c807b4337881) 문의를 작성한 유저 아이디: ObjectId(6224a99d95dcdc366868efe8) 문의 내용: "언제 구매한 물품인가요?" 이런식으로 설계되어 있고 특정 상품을 클릭하면 상품에 입력된 여러 정보와 상품 고유 아이디를 통해 상품문의 내용들을 populate 하여 모두 불러왔습니다. 그렇게 되니 최종적으로 { 상품아이디: ObjectId(62149490b348c807b4337881) 상품명: "사과", 설명: "택배 불가능" 문의: [ { 문의가 작성된 상품 아이디: ObjectId(62149490b348c807b4337881) 문의를 작성한 유저 아이디: ObjectId(6224a99d95dcdc366868efe8) 문의 내용: "언제 구매한 물품인가요?" }, { 문의가 작성된 상품 아이디: ObjectId(62149490b348c807b4337881) 문의를 작성한 유저 아이디: ObjectId(498dmek21v2hu3166868efe8) 문의 내용: "2차 구매자 입니까?" } ] 이런식으로 결과가 문의내용은 잘 불러옵니다. 하지만 배열에 담긴 유저 정보도 불러오기 위해 populate를 사용하러면 어떤식으로 사용을 해야할지 모르겠습니다. 모든 배열을 돌면서 해당하는 유저아이디만 찾아서 조합하는 방법을 떠올렸지만 너무 비효율적인것 같아 강사님의 솔루션을 듣고 싶습니다. 깃허브 주소 첨부합니다. https://github.com/nogoduck/Lightning-marketplace-Clone
강의 예시에서 OrderServiceImpl 클래스의 생성자에서 DiscountPolicy에 들어갈 빈을 선택하기 위해 Qualifier를 사용했는데, 이러면 사용할 정책을 바꿀때 마다 config 파일이 아닌 클라이언트인 OrderServiceImpl 까지 가서 Qualifier 코드를 바꿔줘야 하기 때문에 별로 좋지 않은 설계라 생각합니다. 제가 한 이해가 맞을까요?
1:21 에서 말씀해주신 구조분해문법(Destructuring)에 질문이 있습니다. 알려주신 주소에 나와있는 자료를 보면 다음과 같습니다. 이 코드에서 var { language, position, area, hobby, age} = josh; 와 같은 코드가 있어야 디스트럭처링 문법이 실행하는 것을 개발자 도구를 통해 확인했습니다. 그런데 const MainCard의 변수로 넣은 {img}는 저희가 var {img} = props와 같이 선언한 적이 없는데 잘 작동하고 있습니다. 이것이 가능한 이유가 무엇인지 알고 싶습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 좋은 강의를 만들어주셔서 감사합니다. 혹시 본 강의 외에 파일시스템 특히 NTFS를 집중적으로 가르쳐주는 강의를 개설하실 생각은 없으신가요? NTFS를 공부하는데 많이 어려워서 질문드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이전 분이 먼저 질문해주신 SELECT months * salary AS earnings, COUNT(*) FROM employee GROUP BY earnings HAVING earnings = MAX(months* salary) 이렇게 쓰는건 왜 안될까요? 라는 질문에서 having절은 group by 뒤에 사용되는 절로, 서브쿼리를 사용하지 않고 바로 max(earnings)를 할 경우, earnings로 group by 가 된 상태에서 max 값을 구하게 됩니다. 따라서 전체 로우가 출력될 수 밖에 없습니다. 이런 경우를 방지하기 위해 별도의 서브쿼리를 사용하여 max값을 구해주어야 합니다. 이렇게 답변을 해주셨는데요! earnings로 group by 가 된 상태에서 max 값을 구하게 되면 max값만 나와야하는거 아닌가요..?ㅠㅠ 서브쿼리가 있으면 어떤식으로 실행되고 서브쿼리없는경우와 차이가 무엇인지 알려주실수있나요? 잘 이해가 안되네요,, ㅠㅠ