묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
4-8. 지표 정의 연습 문제
안녕하세요! DA를 목표로 하고 있는 대학생입니다. 열심히 강의를 듣고 DA로서 필요한 역량, 스킬을 키우겠습니다. 좋은 강의 감사합니다 :)#1. 기능이 잘 동작하고 있는지 확인하려면?배너 영역, 메뉴 카테고리, 이런 음식 어때요 등 기능이 잘 동작하고 있는지 확인하려면 클릭율인 ‘CTR’을 봐야 한다고 생각합니다. CTR는 어떤 것을 보고(또는 페이지에 접근한 후), 특정 버튼인 Component를 클릭한 비율을 가리킵니다. 즉, 배너 영역으로 예를 들면, 배너영역은 home 페이지에 존재하므로 home 페이지에서 배너 영역을 보고 배너 영역의 버튼을 클릭한 비율을 확인해야 해당 기능이 잘 동작하는지 확인할 수 있는 것으로 해석할 수 있기 때문입니다.배너 영역 = 배너 영역 클릭 수 / home 페이지를 본 수메뉴 카테고리 = 메뉴 카테고리 클릭 수 / home 페이지를 본 수이런 음식 어때요 = 이런 음식 어때요 클릭 수 / home 페이지를 본 수동네 맛집 = 동네 맛집 클릭 수 / home 페이지를 본 수지표가 어떤 식으로 움직이면 잘 동작하는지 확인할 수 있는 방법은 전환율인 ‘CVR’을 봐야 한다고 생각합니다. CVR는 특정 행동을 한 후, 전환된 비율을 가리키는데, 배달 서비스의 최종 목표는 구매 전환율이므로 배너 영역, 메뉴 카테고리, 이런 음식 어때요, 동네 맛집 기능을 클릭한 후, 배달 주문(음식 결제)으로 특정 전환을 하는지 확인하면 해당 기능이 잘 동작하는지 확인할 수 있습니다.배너 영역 = 배너 영역을 클릭한 후, 주문을 한 수 / 배너 영역 클릭 수메뉴 카테고리 = 메뉴 카테고리를 클릭한 후, 주문을 한 수 / 메뉴 카테고리 클릭 수이런 음식 어때요 = 이런 음식 어때요를 클릭한 후, 주문을 한 수 / 이런 음식 어때요 클릭 수동네 맛집 = 동네 맛집을 클릭한 후, 주문을 한 후 / 동네 맛집 클릭 수#2. 검색 만족도 지표고객이 검색 기능에 만족했으면 검색 결과로 나온 음식을 클릭하고 배달 주문(음식 결제)까지 이루어진다고 생각합니다. 즉, 고객이 검색 기능에 만족했는지 확인하려면 배달 주문(음식 결제) 전환율인 CVR을 보면 될 것 같습니다. ‘배달 주문(음식 결제)로 전환된 수 / 검색 기능을 사용한 행동’ 의 식을 활용하여 해당 CVR를 구할 수 있다고 봅니다. 그리고 고객들은 검색 결과가 좋지 못하면 검색 결과 페이지에서 시간을 오래 보내지 않고 다시 검색하여 다른 검색 결과 페이지로 넘어갑니다. 이러한 고객의 특징을 생각하면 검색 결과 페이지를 얼마나 머물렀는지 확인하는 Duration Time(체류 시간)를 확인하여도 검색 기능에 만족했는지 확인할 수 있다고 생각합니다.< 질문 1: CVR은 답이 맞다고 확신이 들지만, Duration Time은 확신이 들지 않습니다. >제가 검색하는 흐름을 생각해본 결과, 2가지로 나누어 검색하는 경향이 있는 것을 확인하였습니다.먹고 싶은 음식(ex. 치킨)은 있으나, 딱히 시켜 먹고 싶은 음식점/브랜드는 없을 때앱을 켜고, 검색 페이지에서 먹고 싶은 음식을 검색한다.검색 결과로 나온 페이지에서 원하는 음식점/브랜드를 들어간다.들어간 음식점/브랜드에서 원하는 음식을 클릭한다.원하는 음식을 담은 후, 결제화면으로 넘어간다.결제화면에서 원하는 결제 방식을 선택하고 배달 주문(음식 결제)을 한다.어떤 음식점에서 어떤 음식을 시켜 먹을지도 정했지만(ex. BHC의 뿌링클), 체인점이 많아 어느 지점에서 시킬지 고민될 때앱을 켜고, 검색 페이지에서 먹고 싶은 음식의 음식점을 검색한다. (ex. BHC)검색 결과로 나온 페이지에서 별점과 후기가 좋은 체인점을 확인한다.원하는 체인점에 들어가서 시켜 먹을 음식을 클릭한다.원하는 음식을 담은 후, 결제화면으로 넘어간다.결제화면에서 원하는 결제 방식을 선택하고 배달 주문(음식 결제)을 한다.#3. 검색 필터 기능의 활성화 지표고객은 검색 결과로 나온 페이지에서 가격 순, 별점 순 등 검색 필터 기능을 사용하여 본인이 중요하게 생각하는 요소로 정렬하여 검색 필터를 사용하는 흐름을 보입니다. 이러한 고객의 검색 필터 기능 사용 과정을 보면, 검색 필터 기능의 클릭율인 ‘CTR’로 검색 필터 기능이 잘 사용되고 있는지 알 수 있습니다. 검색 필터 기능의 CTR은 검색 결과 페이지에서 검색 기능 필터를 보고 클릭한 비율로 알 수 있습니다. 즉, 검색 기능 필터 클릭 수 / 검색 결과 페이지로 구할 수 있습니다.더 나아가 필터 기능이 배달 서비스의 최종 목표인 배달 주문(음식 결제)까지 미치는지는 전환율인 ‘CVR’을 통해 알 수 있습니다. 조금 전에 구한 검색 기능 필터 클릭 수를 활용하여 검색 기능 필터를 클릭한 후, 주문까지 한 수 / 검색 기능 필터 클릭 수로 확인할 수 있다.<질문2: 필터 기능을 사용하고 결제 화면까지 도달한CVR까지 확인해야 검색 필터 기능이 잘 사용되고 있는지 알 수 있다고 생각했는데, 클릭율인 ‘CTR’만 확인해도 충분할까요?><질문 3: 치킨을 먹고 싶어서 ‘치킨’이라고 검색하였는데 방대한 범위의 검색 결과가 나와 불편함을 겪은 적이 많습니다. 예를 들면 치킨이 들어간 빵을 판매하는 빵집이나 치킨도 파는 피자 가게가 나온 경우가 해당됩니다. 검색 기능 필터에 이러한 부분을 포함하면 더 편리한 기능을 제공한다고 생각하는데, 아직까지 이러한 필터 기능을 만들지 않는 이유는 무엇인가요? 포함되면 정말 편할 것 같은데 굳이 제공할만한 기능이 아니라서 그런 것일까요?>#4. 배달 서비스에서 가장 중요한 지표는?배달의 민족, 요기요 등 실제 배달 주문 플랫폼 수익 구조를 살펴보면 가장 큰 축이 되는 부분은 입점한 음식점에서 받는 수수료와 광고비입니다. 입점 음식점과 고객을 중개하여 ‘중개 수수료’를 큰 수익원으로 보고 있는데, 배달팁을 입점 음식점과 소비자가 배달 대행 플랫폼에 나눠 내는 것이 이에 속합니다. 즉, 해당 배달 서비스를 활용하여 배달 주문(음식 결제)가 많이 이루어질수록 배달 서비스가 수익을 많이 가져갈 수 있다는 것으로 해석할 수 있습니다. 광고비 또한 배달 주문(음식 결제)로 진행되어야 배달 서비스가 수익을 가져갈 확률이 높아진다고 생각합니다. 광고를 클릭하고 배달 주문(음식 결제)가 많이 이루어질수록 다음 번에도 음식점이 광고를 할 확률이 높아지기 때문입니다. 이러한 실제 배달 주문 플랫폼 수익 구조를 확인해본 결과, 배달 서비스에서 가장 중요한 지표는 ‘주문(결제) 전환율 CVR’이라고 볼 수 있습니다. 주문(결제)로 전환되는 경우를 생각해보면 고객의 니즈를 충족하는 것이 중요하다고 생각합니다. 배달팁으로 인해 주문(결제)로 전환되지 않은 고객에게 쿠폰을 제공한다면 전보다 주문(결제)이 이루어질 것으로 예상할 수 있습니다. 그러므로 배너 영역에 쿠폰 다운로드 이벤트를 제공하여 평소보다 많은 사람들이 주문(결제)로 전환할 수 있게 하면 될 것 같습니다. 이 외에도 개별 고객이 평소 먹는 음식을 데이터 분석하여 음식 추천 서비스를 제공하는 것도 고객의 편리함과 만족도를 증가시켜 주문(결제) 전환율 CVR를 늘릴 수 있다고 생각합니다.#5. 추천 알고리즘의 성능 지표추천 알고리즘이 잘 동작하는지를 확인할 때는 추천 알고리즘 버튼을 클릭한 비율인 CTR를 알아보면 되지만, 추천 알고리즘의 성능을 확인하기 위해서는 추천 알고리즘이 추천한 상품을 고객이 구매를 했는지 알아봐야 한다고 생각합니다. 즉, 추천 상품을 클릭한 후, 상품 구매로 행동이 전환되는지 파악해야 하므로 ‘구매 전환율 CVR’를 확인해야 합니다. 추천 상품 흐름은 이렇게 3가지로 구성될 것이며,추천 상품 클릭하고 해당 상품을 결제했다.추천 상품을 클릭하고 해당 상품을 결제하지 않았다.추천 상품을 클릭하지 않았다.구매 전환율 CVR = 추천 상품 구매한 수 / 추천 상품 클릭한 수의 식을 활용하여 구할 수 있습니다.#6. 여러분들이 자주 사용하는 서비스의 지표제가 자주 사용하는 서비스는 패션 플랫폼 서비스 ‘지그재그’입니다. 패션 플랫폼 ‘지그재그’는 고객과 쇼핑몰을 연결해주는 B2C 플랫폼 역할을 하고 있습니다. 입점 수수료를 책정하여 수익을 올리는 대부분의 패션 플랫폼과 달리 지그재그는 입점 수수료가 아닌 ‘맞춤형 광고’와 통합 결제 서비스 Z결제와 Z페이 수수료로 수익을 창출합니다. ‘맞춤형 광고’를 통해 노출되길 원하는 타깃 연령층과 고객들에게 제대로 노출되고 구매까지 이루어진다면 광고 비용을 지불한 쇼핑몰은 계속해서 광고비를 지불할 의향이 생길 것입니다. 그리고 고객들이 지그재그를 통해 쇼핑몰 옷을 구매하면 할수록 지그재그가 받을 통합 결제 서비스의 수수료는 증가할 것입니다. 이렇게 이들의 수익구조를 살펴본 결과, 지그재그는 고객이 결제를 해야 수익성을 올릴 수 있기 때문에 패션 플랫폼 서비스 ‘지그재그’에서 중요한 지표는 ‘구매 전환율 CVR’이라고 생각합니다.그 외로 확인해야 하는 지표는 ‘맞춤형 광고 클릭율 CTR’과 ‘Retention’이라고 생각합니다. 맞춤형 광고 클릭율 CTR인 이유는 맞춤형 광고를 통해 제공되는 추천 상품 페이지를 보고 상품을 클릭한 비율을 확인해야 수익성을 제공해주는 맞춤형 광고가 얼마나 제대로 제공되는지 확인할 수 있기 때문입니다. Retention인 이유는 서비스를 사용한 사람이 다시 사용하는 비율을 기간별로 확인할 수 있어, 다시 사용을 할 때쯤 쿠폰을 제공하여 상품을 결제하도록 유도하여 수익성을 높일 수 있다고 생각했기 때문입니다.#7. 퍼널 개선 프로젝트전보다 가입 퍼널에서 온보딩을 더 진행하는 기능을 만들었기 때문에 온보딩을 적게 사용했던 과거의 전환율(약 20%)와 더 진행했을 때의 ‘가입 퍼널 전환율’을 비교하면 온보딩의 효과를 파악할 수 있다고 생각합니다. 데이터 비교 방법으로는 전후 비교와 AB Test가 있는데, 전후 비교는 정확히 온보딩의 효과를 파악할 수 없기 때문에 AB Test를 통해 기존에 제공한 온보딩 기능에서의 가입 퍼널 프로세스 전환율보다 온보딩을 더 진행한 현재에서 가입 퍼널 전환율이 높아졌는지 알아보고 온보딩의 효과를 확인합니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
HTTP 1.1이상에서는 어떻게 TCP 연결을 유지하나요?
HTTP의 특징이 Stateless라고 하셨습니다.그런데 HTTP 1.1이상 부터는 한 번 TCP 연결을 한 뒤 여러번의 요청을 보낼 수 있다고 알고 있습니다. 그러면 TCP의 시퀀스와 ACK 번호는 HTTP 요청 마다 계속 커지는 것인가요??즉 www.naver.com에 접속을 할 때 한 번의 TCP 연결 이후에 www.naver.com/blog 이렇게 한다면 ack 번호와 시퀀스 넘버가 계속해서 증가하는 것인지 궁금합니다.감사합니다.
-
해결됨시나브로 자바스크립트
yarn dev 안되요..
강좌에 대해 궁금한 게 있으신가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 비즈니스 로직을 원 쿼리로 하지 않는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요.스프링 MVC 2편 - 섹션6. 로그인 처리1 중 로그인 기능 강의를 수강하다가 구현 방법에 대해 궁금한 점이 생겨 질문 드립니다.강의 3:49초 부분에서 로그인 핵심 비즈니스 로직을 2단계의 과정으로 나누고 이를 코드로 작성하는 것을 학습했습니다.입력 받은 loginId와 일치하는 회원 정보가 있는 지 DB에서 조회한다loginId로 DB에서 조회한 회원 정보의 password와 입력 받은 password를 비교하여, 일치하는 회원 정보를 찾는다public Member login(String loginId, String password) { return memberRepository.findByLoginId(loginId) .filter(m -> m.getPassword().equals(password)) .orElse(null); }강의의 로직은 잘 이해하였지만,일종의 원 쿼리라고 부르는 방식으로, 한 번에 해결할 수 있을텐데, 왜 2단계로 나누어 해결하는 지 이유가 궁금합니다.강의에서는 메모리를 DB로 사용했지만 일반적인 DB를 사용한다고 가정했을 때,제가 생각한 방법은MemberRepository에 public Optional findByLoginIdAndPassword(String loginId, String password) 메서드를 정의하고loginId와 password가 모두 일치하는 (AND 조건) 회원 정보가 있으면, 그 회원 정보(Member)를 반환일치하는 회원 정보가 없으면 null 반환LoginService에서 리포지토리의 findByLoginIdAndPassword를 호출하기만 하면 되지않을까 생각했습니다.public Member login(String loginId, String password){ return memberRepository.findByLoginIdAndPassword(loginId, password); }이렇게 생각한 이유는입력한 정보와 일치하는 데이터가 DB에 있는 지 확인하기 위해 어차피 DB에 접근이 필요한 상황이고,그렇다면 자바에서 루프를 돌면서 비교하는 것보다 DB에서 WHERE 절을 통해 조건을 비교하는 것이 빠르지 않을까 싶어서 입니다.정답이 있는 건 아니겠지만, 영한님께서 로직을 2단계로 나누어 작성하신 데에는 이유가 있을 것이라 생각해서, 그 이유가 궁금합니다.저는 SI에서 근무를 했었는데, 비즈니스 로직을 모두 쿼리에 녹여내고, 대부분을 원 쿼리로 해결하는 방식의 개발 방법을 익혔었습니다.영한님 강의를 들으면서 이게 좋지 않은 방법이란 것을 알게 되었고, 보다 객체지향적으로 설계하고 개발할 수 있도록 노력하고 있습니다.그래서 로그인 로직에서도 원 쿼리보다는, 강의에서와 같이 2단계로 작성하는 것이 더 좋은 방법인 건지 궁금합니다.긴 질문 읽어주셔서 감사합니다. ^^
-
해결됨시나브로 자바스크립트
yearn create 1분정도
yearn create 1분정도 에서 검은 창을 띄우시고 item 쓰셨는데 이 창은 어떻게 띄우는거에요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Spring MVC 구조에서 IoC 개념이 적용되는 건가요?
안녕하세요 강사님! Spring MVC 구조에 대해 공부하다가 궁금한 것이 있어서 질문드립니다.DispatcherServlet에서 핸들러 어댑터를 호출하고핸들러 어댑터에서 저희가 구현한 핸들러(컨트롤러)를 호출해서 사용하는데 여기서 '스프링 프레임워크에서 사용자가 구현한 코드를 호출한다.' 라는 관점으로 보았을 때 IoC 개념이 적용되었다고 봐도 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 시간초과 질문
http://boj.kr/5633bd87bd1d49e28ec713fc1ed3da93재귀함수를 이용하여 풀었더니 시간초과가 납니다. nCr 에서 r이 작다면(r <= 3) 중첩 for문을 이용하는 게 더 빠른 건가요?
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
클래스 메소드 및 호출 관련 질의
안녕하세요.클래스내에서의 str, repr 등을 special method라고 부르는데, dicit, doc, class와 같이 속성에 접근하는 함수들은 뭐라고 칭하나요?
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
vue3 에서는 computed의 get 과 set
해당 방법도 좋은 방법이지만vue3 와서는 computed프로퍼티의 get과 set 으로 퍼포먼스 최적화 하는 방법이 있습니다
-
미해결
API가 무엇이고 종류는 뭐고 어떤 장단점이 있는 지 알려주세요 그리고 어떤 언어로 만든 지도 알려주세요
restAPI를 이용하면 python이랑 java랑 교환이 가능 한데 어떻게 만든는 것예요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
8번퀴즈 speedCam 객체의 Setter가 궁금합니다
안녕하세요 매번 강의 잘 듣고 있습니다.8번 퀴즈를 풀면서 궁금한게 생겨 글써봅니다.앞선 Interface 강의에서는 FactoryCam의 객체를 만들었을때FactoryCam factoryCam = new FactoryCam(); factoryCam.setDetector(advancedFireDetector); factoryCam.setReporter(videoReporter); factoryCam.detect(); factoryCam.report();setDetector()와 setReporter()의 인수로 위에서 정의한Reportable videoReporter = new VideoReporter(); Detectable advancedFireDetector = new AdvancedFireDetector();두 객체를 지정하셨는데 퀴즈 8번에서는 이렇게 인스턴스 객체를 만들고 인수에 집어넣는게 아닌SpeedCam speedCam = new SpeedCam(); speedCam.setDetector(new AccidentDetector()); speedCam.setReporter(new VideoReporter());new AccidentDetector(), new VideoReporter() 인스턴스를바로 인수로 집어넣는것이 import만 쓰면 가능하다는걸 보여주시려고 작성한건지 궁금해서 여쭤봅니다.1회차로 강의를 보는중이라 기본적인 용어의 혼동이나 이전 강의들의 개념도 아직 제대로 정립되지않아 질문하기를 망설였지만 답변받으면서 얻는 정보도 있을거라 생각하여 질문드려봅니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hashMap 저장순서
hashMap에서는 값이 저장되는 순서가 보장이 되지 않는 다고 알고 있습니다. Map인터페이스의 values()메서드 또한 맵에 저장된 값들을 반환하지만 순서가 유지되지 않는 다고 알고 있는데요 그런데 전체 클래스 테스트시 findAll(), findByName(),save()순으로 실행이 되는 데 findAll()과 findByName() 에서 각 멤버 인스턴들이 save가 다 되고 난 후 System.out.println(repository.findAll());추가해 이를 통해 저장된 값들을 확인해 본 결과 findAll()의 System.out.println(repository.findAll()); 에서는 [hello.hellospring.domain.Member@589b3632, hello.hellospring.domain.Member@45f45fa1] findAll()이후에 실행된 findByName()의 System.out.println(repository.findAll()); 에서는 [hello.hellospring.domain.Member@589b3632, hello.hellospring.domain.Member@45f45fa1, hello.hellospring.domain.Member@67a20f67, hello.hellospring.Member@57c758ac] 값이 나왔는데 이 처럼 메소드가 실행된 순서와 각 인스턴스들이 save된대로 저장값의 순서 유지가 되서 출력값으로 나오는데 원래라면 hashMap과 values()메서드가 저장 순서를 보장하지 않으므로 System.out.println(repository.findAll()); 실행시 마다 Map에 저장된 값들을 저장순서 상관없이 랜덤하게 출력되야 되는 거 아닌가요? 제가 어떤 부분을 잘못알고 있는 지 궁금합니다.class MemoryMemberRepositoryTest { MemoryMemberRepository repository = new MemoryMemberRepository(); @Test public void save(){ Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); assertThat(member).isEqualTo(result); } @Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); System.out.println(repository.findAll()); assertThat(result).isEqualTo(member1); } @Test public void findAll(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); //hashMap 함수로 key로 id value로 member(id,name) 인스터스 저장 Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); List<Member> result = repository.findAll(); System.out.println(repository.findAll()); assertThat(result.size()).isEqualTo(2); } }
-
해결됨빅데이터 파이프라인 마스터; 성공을 위한 도구와 기술
수강신청 프로모션 신청했습니다 ㅎㅎ
예전에 취준생 프로모션으로 현재 수업 잘듣고 있습니다ㅎㅎ 일년기한 연장 프로모션도 연 것 같아 구글설문지에 신청했습니다 10월이면 기한이 종료될 예정이라 연장부탁드립니다~~
-
미해결선형대수학개론
ONTO와 One to One 질문
안녕하세요 선생님, 질문들이 조금 많아 정리해서 여쭙고 싶습니다. One to One은 수학에서의 '일대일 함수'와 같은 개념으로 이해했슨데,ONTO의 경우 수학에서의 '일대일 대응'과는 다른 의미인가요? One to One은 서로 다른 x에 대해 무조건 서로 다른 image가 대응되어야 한다고 알고 있습니다.다만 ONTO는 단지 codomain과 range가 (공역 = 치역) 같아야 한다고 알고 있는데,혹시 ONTO도 '일대일대응'과 같이 '공역 = 치역' 이라는 조건과 동시에 '일대일 함수'의 조건 또한 만족해야 하나요? 아니면 단지 공역 = 치역 이기만 하면 되는건가요? ONTO와 One to One을 구별하는 방법 중에 ONTO의 경우 각 Row 마다 pivot이 존재해야 하므로: 행 개수 < 열 개수인 가로로 긴 행렬One to One의 경우 각 Column마다 pivot이 존재해야 하므로: 행 개수 > 열 개수인 세로로 긴 행렬 라는 것을 교재에 수록된 문제 솔루션에서 봤습니다. 이렇게 이해해도 되는건가요? 만약 된다면, Row마다 pivot / Column마다 pivot이 존재해야 한다는 뜻을 정확히 모르겠습니다. 이를 어떻게 다른 조건과 동치로 해석해야 하나요?그리고 맞을 경우에, 행 개수 = 열 개수인 정사각행렬은 ONTO인지 One to One인지 어떻게 판단하나요? ONTO를 판단하는데 있어서, Columns of A가 R^{m} space를 span하는 것이 필충조건이라고 배웠습니다. 그런데 Theroem 4 - (d)에서 A가 각 Row 마다 pivot position이 존재하는 것과 동치라고 알고있습니다. 이는 [0 0 0 ... 0 b]와 같은 행이 존재하지 않는다는 의미인데요, T와 같은 standard matrix의 경우 coefficient matrix이기 때문에 [0 0 0 ... 0 b] 가 아니라 [0 0 0 ... 0 ]의 형태로 b가 빠지는 것으로 알고 있습니다.그렇기 때문에 저는 이를 영행 으로 판단하고 ONTO의 필요충분 조건은 '영행이 없기만 하면 된다'라고 판단했는데 혹 이렇게 판별해도 문제가 있을까요? 선생님, 강의가 공부하는데 정말 큰 힘이 되고 있습니다. 긴 질문글 다 읽어주셔서 정말 감사합니다! 날씨도 더운데 고생 많으십니다 ㅜㅜ
-
해결됨팀 개발을 위한 Git, GitHub 입문
수업 자료 부탁드립니다!!
깃이 너무 어려웠는데 차근 차근 잘 보고 있습니다.감사합니다. 저도 강의자료 부탁드려도 될까요!!cielo_u@naver.com입니다!
-
해결됨하루만에 배우는 ChatGPT API
배포목록에 netlify가 없어요.
다음과 같은 양식으로 남겨주세요.질문을 한 배경 : 배포목록에 netlify가 없어요. 질문내용 : codeSandbox에서 react 키워드가 들어간 모든 템플릿을 찾아봤는데, netlify가 나오지 않습니다. 앞서 2분이 동일한 내용으로 글 작성해주신 걸로 아는데, 어떻게 정리가 된 걸까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
unity 강의에서 singleton 패턴 강의
8:00 instance에 자기 자신을 누군가 채워야한다? 라고 하신거 같은데 무슨 뜻인지 잘 모르겠습니다 왜 해야 하는 건가요???
-
해결됨[리뉴얼] React로 NodeBird SNS 만들기
게시글 등록,삭제시 실시간 반영되지 않습니다.
안녕하세요 제로초님 강의듣고 리덕스, 사가 대신 툴킷과 내장 썽크를 사용해서 다시 만들어보는 중인데 게시글 등록시 글은 정상적으로 등록이 되는데 게시글 갯수가 실시간으로 바뀌지 않고 새로고침 해야 반영이 됩니다. 삭제할때도 정상적으로 삭제는 되는데 새로고침해야 삭제된 결과가 반영이 됩니다. 백엔드 부분은 강의와 같이 js로 작성했고 게시글 작성 툴킷은 다음과 같이 코드작성했습니다. // toolkit/post.ts export const initialState: PostState = { // 기본값 mainPosts: [], imagePaths: [], postAdded: false, // 게시글 로딩 loadPostLoading: false, loadPostDone: false, loadPostError: null, // 추가 로딩 hasMorePosts: false, // 게시글 작성 addPostLoading: false, addPostDone: false, addPostError: null, // 게시글 삭제 removePostLoading: false, removePostDone: false, removePostError: null, export const addPostAction = createAsyncThunk( 'post/addPost', async (data: FormData) => { const response = await axios.post('/post', data); return response.data; } ); export const removePostAction = createAsyncThunk( '/post/delete', async (data: number) => { const response = await axios.delete(`/post/${data}`); return response.data; } ); extraReducers: (builder) => { builder // 게시글 추가 .addCase(addPostAction.pending, (draft) => { draft.addPostLoading = true; draft.addPostDone = false; draft.addPostError = null; }) .addCase(addPostAction.fulfilled, (draft, action) => { draft.addPostLoading = false; draft.addPostDone = true; draft.mainPosts.unshift(action.payload); }) .addCase(addPostAction.rejected, (draft, action) => { draft.addPostLoading = false; draft.addPostError = action.error.message; }) // 게시글 삭제 .addCase(removePostAction.pending, (draft) => { draft.removePostLoading = true; draft.removePostDone = false; draft.removePostError = null; }) .addCase(removePostAction.fulfilled, (draft, action) => { draft.removePostLoading = false; draft.removePostDone = true; draft.mainPosts = draft.mainPosts.filter( (v) => v.id !== action.payload ); }) .addCase(removePostAction.rejected, (draft, action) => { draft.removePostLoading = false; draft.removePostError = action.error.message; }) 이해가 안가는 부분이 post에서 게시글 삭제, 입력등의 작업을 하고 user에서 회원가입,로그인,로그아웃, 팔로우 등의 작업을 하게 나눠놨는데 게시글 입력할때 mainPosts의 값이 추가될때마다 그 값이 컴포넌트에서 불러와져서 화면의 게시글 갯수 부분이 바뀌는건 이해가 가는데 // pages/index.ts const Home = () => { const { mainPosts, hasMorePosts, loadPostLoading } = useSelector( (state: RootState) => state.post ); {me && <PostForm />} {mainPosts.map((post) => ( <PostCard key={post.id} post={post} /> ))} 이 부분에서/component/UserProfile.tsx const UserProfile = () => { const { me, logOutLoading } = useSelector((state: RootState) => state.user); return ( <> <Card actions={[ <div key='twit'> 짹짹 <br /> {me?.Posts.length} </div>, <div key='follower'> 팔로워 <br /> {me?.Followings.length} </div>, <div key='following'> 팔로잉 <br /> {me?.Followers.length} </div>, ]} > me는 툴킷의 user.ts 의 me를 참조하는거 아닌가요? 게시글 입력,삭제시 post.ts를 통해 post.ts의 mainPosts 값이 바뀌는데 user.ts를 참조하는 컴포넌트에서 me.Posts.length 값이 바뀌는 부분이 잘 이해가 가질 않습니다. 그리고 댓글 삭제기능을 추가하고 싶은데요. //pages/index.ts const { mainPosts, hasMorePosts, loadPostLoading } = useSelector( (state: RootState) => state.post ); {mainPosts.map((post) => ( <PostCard key={post.id} post={post} /> ))} //component/PostCard.tsx const { removePostLoading } = useSelector((state: RootState) => state.post); const onRemovePost = useCallback(() => { dispatch(removePostAction(post.id)); }, []); // post.ts export const removePostAction = createAsyncThunk( '/post/delete', async (data: number) => { const response = await axios.delete(`/post/${data}`); return response.data; } ); .addCase(removePostAction.fulfilled, (draft, action) => { draft.removePostLoading = false; draft.removePostDone = true; draft.mainPosts = draft.mainPosts.filter( (v) => v.id !== action.payload ); }) //back/routes/post router.delete('/:postId', isLoggedIn, async (req, res, next) => { try { await Post.destroy({ where: { id: req.params.postId, UserId: req.user.id }, }); res.status(200).json({ PostId: parseInt(req.params.postId, 10) }); } catch (err) { console.error(err); next(err); } }); 게시글을 삭제할때는 post.id로 해당하는 글의 id를 바로 보내서 삭제할수 있는건 이해가 가는데 comment의 경우 [{댓글1}, {댓글2}] 형식으로 각 댓글의 값이 들어있어서 이부분을 어떻게 해야할지 감이 잡히지 않습니다.
-
미해결3. 웹개발 코스 [Enterprise Architecture(EA) X 전자정부프레임워크]
저는 지금 자바 11.0.18버전을 사용하는데 11.0.2로 바꿔야할까요?
많이 차이가 나는지 질문드립니다
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제풀이 16번문제
서로 다른 리전의 s3버킷을 같은 오리진 그룹으로 설정할 수 있나요?