강사님 안녕하세요. 1. 저는 다음과 같이 코드를 작성했어요. CREATE FUNCTION getNthHighestSalary (N INT) returns INT BEGIN RETURN( SELECT DISTINCT MIN(salary) FROM employee ORDER BY salary DESC LIMIT O, N); END 큰 순서대로 0번 이후부터 (1번부터) N개 나열 후 최소값을 찾을 생각이었는데, 자꾸 200이 아닌 100이 나옵니다. 아무래도 ORDER BY DESC가 제대로 작동하지 않는 것 같은데 이유가 뭘까요?? 2. LIMIT에서 결과가 나오지 않으면 NULL을 돌려주기때문에 서브쿼리에서 IF문/CASE문을 안써도 된다고 하셨는데,(6:00) 이 부분이 잘 이해가 안가요. CASE문 쿼리 (함수 부분은 생략하겠습니다) SELECT CASE WHEN count(sal.salary) <n THEN null ELSE min(sal.salary) END FROM (SELECT DISTINCT salary FROM employee ORDER BY salary desc LIMIT n) as sal) 와 LIMIT OFFSET 쿼리 SELECT DISTINCT salary FROM employee ORDER BY salary DESC LIMIT 1,N 은 크게 다를 것 없는 것 같은데, 첫번째는 NULL 나오게 하려고 서브쿼리 & CASE WHEN 처리를 하는 반면, 두번째는 그냥 NULL이 나온다고 하시는데 왜 두개가 다른건지 잘 모르겠습니다.
제목같이 firebase에 올리려 하는데 잘 되지가 않습니다. 제가 기본 지식이 많이 부족해서요.. MySQl은 GCP의 CloudSQL에 연결하였습니다. 아래는 firebase.json의 내용이고요.. { "hosting" : { "public" : "public" , "ignore" : [ "firebase.json" , "**/.*" , "**/node_modules/**" ], "rewrites" : [{ "source" : "**" , "function" : "app" }] } } 아래는 index.js를 위 firebase.json과 맞춘겁니다. app . set ( 'port' , process . env . PORT || 80 ); app . listen ( app . get ( 'port' ), () => { console . log ( 'running @' , app . get ( 'port' ), ' port by me...' ); }); exports . app = functions . https . onRequest ( app ); 그렇게 해서 firebase serve로 서버 실행을 하면 로컬에서는 정상적으로 되는 것처럼 보입니다. 그런데 port관련해서 조금 문제가 있는 듯합니다. 아래는 실행 후 나오는 내용들 중 일부... + functions: Using node@12 from host. i functions: Watching "C:\Users\xxxxx\Node_js_Test\node_js_textbook\nodebird2firebase\functions" i hosting: Serving hosting files from: public + hosting: Local server: http://localhost:5000 > process.env.PORT: undefined + functions[app]: http function initialized (http://localhost:5001/xxxx/us-central1/app). > running @ 80 port by me... > success database connection... 위와 같이 내가 지정한 포트는 80, 위에 firebase가 로컬에서 지정한 포트는 5000번 포트.. 그런데 실행은 정상적인듯 합니다. 포트 80에서 돌아 갑니다. 자료 올라가고, 조회되고, 로그인되고, 카카오도... 그런데 GCP firebase cloud Function에 deploy하면 아래와 같이 에러가 발행하네요.. i deploying functions i functions: ensuring required API cloudfunctions.googleapis.com is enabled... i functions: ensuring required API cloudbuild.googleapis.com is enabled... + functions: required API cloudbuild.googleapis.com is enabled + functions: required API cloudfunctions.googleapis.com is enabled i functions: preparing functions directory for uploading... i functions: packaged functions (85.94 KB) for uploading + functions: functions folder uploaded successfully i functions: updating Node.js 12 function app(us-central1)... Functions deploy had errors with the following functions: app(us-central1) To try redeploying those functions, run: firebase deploy --only "functions:app" To continue deploying other features (such as database), run: firebase deploy --except functions Error: Functions did not deploy properly. deploy 시의 메시지는 위와 같으며 주의: 버전 7.7.0 이하의 Firebase CLI로 배포된 새로운 HTTP 및 HTTP 호출 가능 함수는 기본적으로 비공개이며, 호출하면 HTTP 403 오류가 발생합니다. 새 함수를 배포하기 전에 명시적으로 이 함수를 공개로 설정 하거나 Firebase CLI를 업데이트 하세요. 위의 내용도 인증되지 않은 호출 허용 과 같이 수정을 하였습니다. 아주 작은 샘플 스태틱 페이지는 정상적으로 됨을 확인 하였고요.. 포트 지정이나 그런 부분에 무슨 문제가 있을까요? 고견을 부탁드립니다. 감사합니다. ps. AWS에 시스템을 올렸더니 시스템이 너무 잘 죽네요.. 물론 디버깅을 해야겠지만 firebase가 더 좋은 솔루션 같아 진행을 하고 있습니다.
안녕하세요 강의 잘 듣고 있어요! post는 회원가입과 같은 url에 숨겨야 하는 정보일 때 사용한다고 알고 있는데 그정도로 이해하면 될까요? form에서도 get을 사용하면 되는데 굳이 post를 사용하는 이유가 더 있을까 해서요. 바디에 담아서 요청한다고 해도 어차피 개발자 도구 열어서 바디에 요청한 데이터가 보이든 Get으로 요청하여 url에 보이든 똑같은게 아닌가 싶어서요 지금까지 그냥 당연하게 생각 했는데 문득 궁금해져서 질문 드립니다!! http 강의 올리신 내용에도 딱 이정도로만 설명을 하신 걸로 알고 있어서 ㅜㅜ
리포지토리 권한 부여에 걸리는 기간은 얼마나 되나요? 시간이 있을 때 배워두고 싶은데요...ㅠㅠ 강의와 관련있는 질문 을 남겨주세요. • 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등) • 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색 을 해주세요. (중복 질문을 자제해주세요.) • 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’ 를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달 에도 요령이 필요합니다. • 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요. • 강의실 페이지 (/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다. • 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재 해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드 를 남겨주세요! 구체적인 질문 일수록 명확한 답을 받을 수 있어요. • 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요. • 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요 . • 정확한 질문 내용과 함께 코드 를 적어주시거나, 캡쳐 이미지 를 첨부하면 더욱 좋습니다. 기본적인 예의 를 지켜주세요. • 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용 은 스팸 처리 등 제재를 가할 수 있습니다.
영한님 안녕하세요. Spring MVC 강의를 듣던 도중 질문드립니다. 빌드까지는 성공적으로 인식이 되는데, webapp/index.html도 들어있는데, localhost:8080/ 또는 localhost:8080/index.html과 같은 경로를 입력하면 white label error가 발생합니다. 밑에서 비슷한 질문이 있어서 확인해보니 war파일로 빌드를 했습니다. 어떻게 해결을 해야되는지 잘 모르겠습니다. 샘플코드로 올려주신 코드로 일부 코드들을 변경하고 있지만 이 부분은 해결되지 않고 있습니다.
안녕하세요 노드js S3 람다까지 실습을 해보고 모든 강의를 수강했습니다. 람다까지 구현했습니다. 어제까지만 해도 이미지 업로드시 thumb 까지 업로드가 됬는데 오늘 아침에 테스트를 하니까 올라가지 않습니다. 그리고 브라우저 콘솔에 아래와 같이 오류가 발생합니다. GET https://[저장소이름으로 비공개함 ].s3.ap-northeast-2.amazonaws.com/thumb/[파일명].jpg 403 (Forbidden) 권한 오류 같습니다. 갑자기 잘되다가 안되는데 왜 그런걸까요?ㅠㅠ
강의를 듣다보면 가려웠던 부분을 긁는듯 시원한 느낌이 드네요! 좋은강의 감사합니다 전체적인 흐름을 한번 정리 해봤는데, 제가 이해한게 맞을까요?? (캐시가 되는 데이터라고 가정하겠습니다) 1. 데이터 최초요청 2. 서버 응답에 last-modified 정보 포함 3. 브라우저 캐시에는 last-modified 정보가 포함되어있음 4. 두 번째 요청시, 캐시의 유효시간이 만료됐다면 last-modified 정보를 바탕으로 if-modified-since 를 만들어 요청 5. 서버는 if-modified-since 정보를 바탕으로 데이터에 변경점이 없다면 304 notmodifed 리턴 6. 브라우저는 캐시에있는 데이터를 사용
안녕하세요 강사님. 연관검색어( relatedKeywords ) api 에서 검색어 중간에 공백이 들어가면 오류가 나는데, 혹시 강사님은 내부적으로 공백을 제거하는 로직을 넣으신건가요? 다른분이 말씀하신 "TypeError: 'NoneType' object is not subscriptable" 오류가 검색어에 공백이 들어가서 생긴문제가 아닌지 문의 드립니다. 블로그나 쇼핑사이트 정보 수집시에는 중간에 공백이 들어가도 문제가 없었는데, 연관검색어에서는 오류가 발생합니다. 아래 2개의 사진 캡쳐로 정상응답하는 경우와 공백이 들어간 경우를 첨부합니다. 소스코드는 강사님이 주신 소스를 사용하였습니다. 확인 부탁드립니다. 검색어 '나이키운동화' 로 검색한 경우입니다. 정상동작합니다. 검색어 '나이키 운동화' 로 검색한 경우로 중간에 공백이 추가된 경우입니다. 오류 발생한 경우입니다.
안녕하세요~ 기다리던 강의였는데 덕분에 즐겁게 배우고 있습니다 mvc 프레임워크 만들기부터 더 재밌어졌어요! 강의와 강의자료가 정말 도움이 많이 됩니다. (특히 강의자료가 완벽하다고 느껴지는 강의는 개인적으로 영한님이 유일할 정도...) 질문 드리려던 것은 다음과 같습니다. 프론트컨트롤러에서 넘겨준 Map<String,Object> model 을 각 컨트롤러가 받아 값을 담으면... '이 model도 반환을 해주어야, 프론트컨트롤러에서 값이 담긴 model을 이용하겠거니' 생각했는데 그냥 그대로 담겨있어 그냥 쓸 수 있다는 것이 이해가 되지 않습니다 static도 아니고.. 그럼 내가 빈 통을 전달해서 받은 애가 값을 담았으면 그걸 리턴을 받아야 쓸 수 있다고 생각했는데.... 자바 기초가 부족한 거겠죠 ㅠㅠ
기존 Spring , JPA 강의가 재밌는 강의라면 Querydsl은 신나는 강의네요. 어? 이것도 가능해? 아니 이것도 된다고?? 여기에 더해서 이런것까지 해줘? 강의 듣는 내내 감탄사만 나왔네요 ㅎㅎ 직접 jpql을 건드릴 때는 상상할 수도 없던 것들이 다 가능하게 되는게 너무 신기합니다. 기존 JPA 강의에서 Querydsl을 엄청 강조하신 이유가 이제야 알겠네요 ㅎㅎㅎ 마지막 강의는 조금 저한테는 어렵긴 했지만 Function<Target, Result> 로 만든 파라미터가 결국에는 람다식을 파라미터로 넣기 위한 자바기능이란것도 이해했구요. (계속 복기하다보면 어느샌가 이해되겠죠 ㅎㅎ) 덕분에 신나게 강의 들었습니다! 감사합니다~~
이 코드가, response 객체 안에 Writer를 담당하는 객체가 또 있고 그 객체를 writer라는 변수로 따로 저장해서 writer를 이용하는 방식인가요? 생소한 패턴이라서 헷갈리네요.. 혹시 response 객체가 어떻게 구성돼 있는지 확인할 수 있는 방법이 있을까요?
그냥 앞전에 우리가 배운 Condition 클래스를 만들어서 그걸로 바인딩 받아서 where 문에 넣으면 되나요? 제 눈에는 그게 더 직관적이더라구요. Querydsl을 복잡한 실무환경에서 사용할때도 클래스로 바인딩받아서 BooleanExpression 메소드 만들어서 쓰면 될까요? 항상 감사합니다~
안녕하세요 9장 multer 모듈로 이미지 업로드 구현하기 에서 Nodebird에 폭탄 이미지 올릴때 post요청 다음에 get요청이 하나 더 있는데 이 요청이 app.js에서 app.use('/img', express.static(path.join(__dirname, 'uploads'))); 가 실행되어야 폭탄이미지가 나온다는건 알고 있는데 이 구문이 언제 실행이 되는지 명확하게 이해가 가지 않습니다. 사진 업로드만 했는데 어떻게 get요청이 추가로 들어올 수 있는건가요??
DOM 처리 책임를 Vue 맡김으로써, 개발자는 다른 부분에 집중할 수 있다고 하셨는데, 이렇게 할 수 있는 이유가 MVVM 패턴이 주는 이점 때문인가요? 아니면 Vue가 주는 이점 때문이가요? 그리고, DOM 처리라는게 render 함수 호출 부분을 말씀하시는건가요? 이 함수를 만들 필요가 없게 되고, render함수를 어디서 호출할지 고민 안해도 되어, 개발자가 다른 부분에 집중할 수 있다로 이해해도 괜찮을까요?