안녕하세요, 해당 섹션에서 this 타입이 각각 왜 string 인지, object인지 , 제가 제대로 이해 했는지 궁금해 질문 드립니다. # 1. 영상 1:07 에서, 함수 getParam의 this # 2. 영상 1:35 에서, 함수 getShortKeys의 this # 1. 영상 1:07 에서, 함수 getParam의 this function getParam(this:string, index:number){..중략..} ..중략... console.log('asdf,1234,ok'.getParams(1)) this의 타입을 string로 한 이유는, 그 this 키워드를 정의한 함수,getParam는 function 키워드로 함수를 선언했고, string('asdf,1234,ok'), 즉 문자열이 함수 getParam을 호출했기 때문에, (=function으로 선언한 함수는, 해당 함수를 어떤 객체가 호출 했느냐로, this의 값(타입)이 결정되기 때문에 ) this가 string타입으로 되는건가요? 그래서 function getParam(this:string, index:number){ const params = this.splte(",") } this는 이미 문자열인 string타입으로 참조되기 때문에, 문자열 함수인 split()를 작성 해야하는 에러인건지요? # 2. 영상 1:35 에서, 함수 getShortKeys의 this //인터페이스 정의 getShortKeys(this:object):string[] ..중략... //객체 obj const obj={a:1, bb:2, ccc:3, ddd:4} console.log(obj.getShortKeys()) this가 object인 이유는 함수,getShortKeys를 object(obj객체)가 호출했기 때문에, this가 object 타입이 된건가요??
안녕하세요 질문이 있습니다. 프로메테우스 설치 부분에 있어서 아래의 내용을 추가하면 애플리케이션을 연동할 수 있었습니다. #추가 - job_name: "spring-actuator" metrics_path: '/actuator/prometheus' scrape_interval: 1s static_configs: - targets: [' localhost:8080 '] 혹시 아래와 같이 추가하면 현재 pc의 로컬이 아닌 다른 서버에서 매트릭을 받을 수 있을까요? #추가 - job_name: "spring-actuator2" metrics_path: '/actuator/prometheus2' scrape_interval: 1s static_configs: - targets: ['http://192.*.*.*:8080'] <-이 부분을 서버의 주소로 변경
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 아래 사진은 다운 과정이고 위 사진은 압축 푼 파일 열자마자 뜨는 오류입니다. run 버튼도 안뜹니다. 무엇이 문제일까요..
안녕하십니까, 스프 강의 잘 듣고 있습니다! spring에 대해서 알고 싶은 학생입니다. 강의를 듣고 있는데, 패키지끼리? 빠르게 왔다갔다 하시던데 그런 부분이 이해가 어렵다면 나프 1탄, 2탄을 듣는 게 도움이 될까요? 아니면 스프 강의를 일단 한 번 가볍게 듣고 한 번 더 듣는 게 도움이 될까요? 그리고 나프 1탄, 2탄은 어떤 강의인지 자세하게 알고 싶습니다!
증상 ### 로그인(일반 회원) POST http://localhost:8080/api/login Content-Type: application/json X-Requested-With: XMLHttpRequest { "username": "user", "password": "1111" } ### 로그인(매니저) POST http://localhost:8080/api/login Content-Type: application/json X-Requested-With: XMLHttpRequest { "username": "manager", "password": "1111" } ### messages 요청 GET http://localhost:8080/api/messages Content-Type: application/json X-Requested-With: XMLHttpRequest http 파일을 작성하고 로그인 요청에 성공했음에도 성공 응답 및 사용자 정보 dto가 오도록 했는데, 쿠키가 오지 않는 문제가 있었습니다. 원인 원인은 AbstractAuthenticationProcessingFilter 의 기본 SecurityContextRepository가 RequestAttributeSecurityContextRepository이기 때문입니다. 그동안 폼 인증에서 우리가 세션을 통해 인증을 할 수 있었던 것은 스프링시큐리티가 기본적으로 등록해준 UsernamePassowordAuthenticationFilter가 저 SecurityContextRepository 구현체로 DelegatingSecurityContextRepository(HttpSessionSecurityContextRepository(), RequestAttributeSecurityContextRepository()) 를 넣어줬기 때문입니다. 또 우리가 AuthenticationSuccessHandler, AuthenticationFailureHandler를 커스텀하게 만들었다면 이를 수동으로 등록하는 코드를 작성해줘야하는 이유도 이와 같습니다. 기본 구현체가 위와 같기 때문입니다. @Bean fun ajaxLoginProcessingFilter(): AjaxLoginProcessingFilter { val filter = AjaxLoginProcessingFilter(objectMapper, authenticationManager()) filter.setSecurityContextRepository(securityContextRepository()) filter.setAuthenticationSuccessHandler(ajaxAuthenticationSuccessHandler()) filter.setAuthenticationFailureHandler(ajaxAuthenticationFailureHandler()) return filter } @Bean fun securityContextRepository(): SecurityContextRepository = DelegatingSecurityContextRepository(HttpSessionSecurityContextRepository(), RequestAttributeSecurityContextRepository()) @Bean fun ajaxAuthenticationProvider() = AjaxAuthenticationProvider(userDetailsService, passwordEncoder()) @Bean fun ajaxAuthenticationSuccessHandler() = AjaxAuthenticationSuccessHandler(objectMapper) @Bean fun ajaxAuthenticationFailureHandler() = AjaxAuthenticationFailureHandler(handlerExceptionResolver) @Bean fun ajaxAuthenticationEntryPoint() = AjaxAuthenticationEntryPoint(objectMapper) @Bean fun ajaxAccessDeniedHandler() = AjaxAccessDeniedHandler(objectMapper) 혹시 저처럼 최신 스프링 시큐리티 환경에서 실습하시면서http 요청 실습에서 로그인 시 쿠키가 전송 안 되시는 분들은 이 작업을 해보시길 바랍니다. SecurityContextRepository 구현체를 생성하여, 등록해보시는 것을 추천드립니다.
섹션 4에서 포드 디스크립터 작성을 보는 중에 go-http-pod.yaml 파일을 작성하셨는데 kubectl create -f go-http-pod.yaml 명령어 실행 후 kubectl get pod http-go를 실행하니 Status가 ImagePullBackOff 로 나옵니다. 강의 영상에서는 저번에 만들어두셨다고 하셨는데 어떤 강의에서 이미지를 확인할 수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 13분 05초 처럼 로그를 보고 싶은데 DEBUG 로그레벨로 설정을 어떻게 해야하는지 모르겠습니다. 다른 분들 찾아보니 logback.xml 이라는 파일도 있는 것 같던데 저는 그 파일이 아예 없네요!
안녕하세요 강사님, 현재 태그를 누르면 포스트 목록 페이지 이동까지 구현을 성공한 상태입니다. (섹션 11에 올려주신 메인메뉴 수정 참고해서요 !) 섹션 11 영상이 아니라 앞서 설명해주실 때에는 장고서버에서 설명해주셨어서 (?) 약간 헷갈리는 부분이 있는데, 제가 이해하고 있는 게 맞는지 여쭤보고싶어서 질문 드립니다 !! postdetail.vue 에 내용에 의해 serverPage(tagname) { console.log("serverPage()...", tagname); location.href = `/my_blog.html?tagname=${tagname}`; } 이렇게 태그를 누르면 `/my_blog.html?tagname=${tagname}`; 로 이동하게 해놨는데, (저는 ~/my_blog 에 postlist 컴포넌트를 위치시켜놔서 url 이 저렇습니다 !) 이러면 postlist.vue 에서 저 url 을 파싱해서 created () { const params = new URL(location).searchParams; // const paramTag = params.get('tagname'); this.tagname = params.get("tagname") this.fetchPostList() }, tagname 을 추출하는 것까지는 이해 했습니다 ! 그 후에 fetchPostList() { console.log("fetchPostList()...", this.tagname); // 메서드 이름을 콘솔에 로깅하여 메서드가 호출되는 것 확인 let getUrl = ''; if (this.tagname) getUrl = `/api/post/list/?tagname=${this.tagname}`; else getUrl = '/api/post/list/'; axios.get(getUrl) // axios를 사용하여 /api/post/list/로 HTTP GET 요청 보내기 .then(res => { // 성공적인 응답의 경우 then 부분 실행 // 서버로부터 받은 응답 데이터 는 res 매개변수 안에 console.log("POST LIST GET RES", res); // 서버 응답을 콘솔에 로깅 this.posts = res.data; // res.data 에 서버에서 받은 데이터가 있을 것 // 이 데이터를 Vue 컴포넌트의 this.posts 데이터 속성에 할당 axios 를 통해 해당 태그에 맞는 데이터를 가져오는 것으로 이해 했습니다. 근데 여기서 getUrl = `/api/post/list/?tagname=${this.tagname}` 부분이 약간 이해가 안되어서요. urlpatterns = [ path('post/list/', views.ApiPostLV.as_view(), name='post_list'), path('post/<int:pk>/', views.ApiPostDV.as_view(), name="post_detail"), path('tag/cloud/', views.ApiTagCloudLV.as_view(), name='tag_cloud'), ] django 에서 api 에 관련된 url 은 이렇게 지정을 해두었는데, post list 에서 특정 포스트를 누르면 해당 포스트의 id를 추출해서 axios 를 통해 요청하는 url은 axios.get(`/api/post/${postId}/`) 이잖아요. 이부분은 위의 path('post/<int:pk>/', views.ApiPostDV.as_view(), name="post_detail"), 에서 <int:pk> 에 id 가 들어가는 거로 이해가 됩니다. 그런데 태그에 대한 목록 부분은, api/post/list 뒤의 부분은 정의(?)를 안해두었는데, 어떻게 오류없이 저 url 뒤의 태그를 알아서 인식하고 해당 태그에 대한 데이터를 보내주는 것인지 궁금합니다. 감사합니다 :)
안녕하세요, 애니메이션 Timeline을 기획(정의)하는 법(방식)?에 대해 문의드립니다! 섹션, "3D 텍스트효과(2)" 에서 인터벌 단위로, duration, stagger, pause, 각각의 value 계산 법을 알려주셨는데요 강좌에서 나온 예시 SVG 이미지 보면서, 저렇게 애니메이션을 정의하면 되겠다, 인사이트를 얻었습니다. 문득, 범쌤께서는 어떻게 애니메이션 flow를 정의 하시는지, 관점이나, 포인트가 궁금 해졌습니다! (이미 강의에서 SVG 이미지로 보여주셨지만, 혹시 더 있을까봐서요,,,) 강의 내용처럼, 애니메이션을 duration, stagger, pause, delay 단위로 배치하면, GSAP을 적용하는데 용이 하다 라고 이해하면 될까요?! 블럭 맞추듯 척척, 애니메이션이 구현되는 과정이 신기하네요! 감사합니다!
mac os m2 모델을 사용하는데, 질문게시판에 있는대로 buildkit 부분을 건드리려고 설정에서 Docker Engine에 들어가니, 해당부분이 저는 없더라구요. 찾아봐도 이에 대한 언급은 없는데, m1/m2 mac silicon 도커에서는 이미지 Id를 다른 방식으로 찾아야하나요?