안녕하세요~ 네이버쇼핑(닭가슴살) 과제 심화로 구매건수를 추출하고 있는데, 강의에서는 구매건수만 별도로 추출하는 것으로 나와서 한번 상품명,링크,가격,구매건수를 같이 추출해보려고 하고 있거든요. 이렇게 짜니, 자꾸 모든 상품의 구매건수가 똑같은 숫자로 나오는데, 원인이 무엇일까요? products = soup.select(".product_item__KQayS") # 상품명, 상세페이지링크, 가격, 구매건수수 추출하기 for product in products: # 상품명 name = product.select_one(".product_title__ljFM_").text # 상세페이지 링크 link = product.select_one(".product_title__ljFM_>a").attrs['href'] # 가격 price = product.select_one(".price_num__Y66T7").text.split('원')[0].replace(',','') # 구매건수 if soup.select_one("[data-shp-area*=purchase] em"): bought = soup.select_one("[data-shp-area*=purchase] em").text.replace(',','') if '만' in bought: bought = int(float(bought.split('만')[0])*10000) else : bought = '' print(name, link, price, bought) data.append([name, link, price, bought])
안녕하세요 강사님 좋은 강의 정말 감사드립니다. 실습 따라면서 튜닝을 익혀가고있는데 이번 강의에서 이해되지 않는 부분이 있어 질문 남깁니다. 일단 저는 MariaDB를 이용하여 실습을 하고 있습니다 죄송합니다 ㅠ -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100; 두 쿼리 실행 속도에 별로 차이가 없어서 1) students, scores 두 테이블 각각 데이터 300만개로 늘리고 2) 두 쿼리 모두 동일하게 limit 10을 붙여줬더니 갑자기 성능 차이가 엄청나게 났습니다. -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1 LIMIT 10; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 limit 10; 제가 궁금한 것은 limit 10을 붙이면 튜닝을 하든 안하든 실행 속도가 더 줄어들어야 할 것 같은데 튜닝 전 쿼리가 갑자기 1분넘게 소요되더라고요. 튜닝 후 쿼리는 limit을 붙이나 안붙이나 별 차이가 없는데 튜닝 전 쿼리는 왜 limit을 붙이면 갑자기 성능이 엄청나게 저하되는걸까요..?? 확인해주시고 답변 주시면 많은 도움 될 것 같습니다 감사합니다!
해당 시간대 영상 화면의 설명 중 가운데 다단에 '여덟번째 호출 반환'에서 a가 반환되는 것은 이해했습니다. 그렇게 되면 자바 코드 하단의 String result 변수에는 a가 저장되고, 마지막에 result 변수값을 출력하면 a가 나와야 하는 것 아닌가요?? 어떻게 일곱번째 호출 반환으로 가게 된 건지 궁금합니다.
if의 조건이 잘 이해되지 않아요. 제가 이해한 바로는 처음 seen 배열을 선언할 때 배열에 들어갈 값들을 지정하지 않았으므로, 256칸 전부에 모두 0으로 값이 초기화되었고, 따라서 !seen[c] 는 항상 !0 = 1 인 것으로 보입니다. 제가 이해한 게 맞을까요?
Python 언어 기출변형 - dict 형태와 재귀함수 질문 강의 59분대 질문 마지막 print문 결과에서 {rs(memo_dict)}, {memo_dict['memo']}) 위에서 rs의 최종 memo_dict는 왜 4가 되는건가요? memo_dict['n']는 value로 4를 넣은건 알겠는데 rs(memo_dict) 부분이 잘 이해가 안됩니다..!
퍼블리셔로 일하고 있는데.. 설정하는 부분이 녹록치 않아 이렇게 질문드립니다. 제가 하고자 하는 것은 라이트,다크 테마시 주요 컬러와 기타 색상등을 변경하려고 하는데요.. css 변수 처리 예는 아래와 같습니다. /* root 라이트테마 기본 변수 */ :root { --text-color: #000; --bg-color: #fff; } /* 다크 테마 기본변수 */ .dark { --text-color: #fff; --bg-color: #000; } 테마 설정은 다음과 같이 진행했습니다. preivew.tsx 에 decorators 배열로 추가함. import { withThemeByClassName } from '@storybook/addon-themes'; 이렇게 하니까 dark 클래스는 잘 붙고 있는데.. 문제는 상단 패널에 기본적으로 레이어로 떠서 클릭할수 있는 라이트,다크테마는 컴포넌트 화면의 배경컬러가 변경되지만 제가 애드온한 것은 토글버튼은 라이트,다크버튼이 나오더라구요.. 근데 문제는 애드온 한것은 클래스만 제어되고 있고 컴포넌트의 배경컬러를 제어하려니까 잘 안되더라구요.. 상단 기본 패널의 테마설정 부분과 애드온 한 부분의 싱크가 안맞는 부분도 있구요.. 이것을 어떤 식으로 처리해야하는지.. 조언을 구하고 싶습니다. 강의 잘 듣고 있습니다. 감사합니다.
C언어 기출문제의 변형 - 배열과 포인터 증가 문제 시간 : 21분대 처음 1번에서 ++*ptr은 arr 배열의 첫번째 값을 가져온 다음, ++ 전위연산자를 통해 값이 1만큼 증가된다는 것은 이해했습니다. 그리고 3번에서 *ptr++은 마찬가지로 arr 배열의 첫번째 값을 먼저 가져온 다음 (1번에 의해 바뀐 21) 후위 연산자 ++에 의해 다음 줄에 값이 1만큼 바뀌어야 하는거 아닌가요? 즉, 제가 이해하기온 *ptr++로 값 21을 반환하고 다음 줄에 만약 printf("%d", ptr)을 한다면 출력이 22가 되는 걸로 이해했는데 이 경우에는 배열의 다음 주소로 넘어가네요. ++전위 연산자는 값이 1만큼 증가되고 후위 연산자는 왜 배열의 다음 주소로 넘어가는 지가 궁금합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, GUI 완성 부분 수강 중인데 파일 목록이 정적페이지 크롤링 부분이 뜨게 하려면 어떻게 해야 하나요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 저는 현재 인프런에서 데이터리안 SQL 시리즈 강의를 수강 중인 대학생입니다. 해당 강의를 통해 SQL 기초부터 실전 활용까지 체계적으로 배우며 많은 도움을 받고 있습니다. 다만, 현재 대학 중간고사 기간으로 인해 학업 일정이 매우 바쁜 상황이라 강의를 꾸준히 수강하기 어려운 상황입니다. 강의 만료일이 얼마 남지 않았는데 아직 끝까지 수강하지 못해 아쉬운 마음이 큽니다. 혹시 가능하다면 강의 수강 기간을 조금만 연장해주실 수 있을지 요청드립니다. 연장해주신다면 남은 기간 동안 학업이 마무리된 후 더욱 집중해서 학습을 이어갈 수 있을 것 같습니다. 항상 좋은 강의 제공해주셔서 감사드리며, 바쁘시겠지만 검토 부탁드립니다. 감사합니다.
안녕하세요 강의 너무 잘 보고 있습니다. 공부를 하다가 궁금한점이 생겨서 질문을 드립니다. 메모를 추가 삭제 기능에서 처음에는 추가같은 경우에는.... const handleAddNote = () => { setNotes([...notes, {id: "", content: ""}]) } 이런식으로 ...notes로 기존 값에다가 id, content로 새로운 메모를 추가하는 기능으로 알고 있는데 나중에는... // 새로운 캔버스 export function createCanvas() { const newCanvas = { title: uuid().substring(0, 4) + '새로운 린 캔버스', lastModified: dayjs().format('YYYY-MM-DD HH:mm:ss'), category: '신규', }; return canvases.post('/', newCanvas); 이런식으로 추가기능을 만들고 삭제도 filter를 이용을 하는데 나중에는 export async function deleteCanvas() { await canvases.delete(`/${id}`); } 이런식으로 삭제 기능을 작성이 되었더라구요. 첫번째 코드들은 처음에는 추가, 삭제기능이 되지만 새로고침 후에는 다시 원래대로 나오고 두번째 코드들은 서버에서 추가, 삭제 기능을 만들어서 새로고침을 하면 실제로도 추가, 삭제 기능을 하게 되는 것인가요? 만약 그렇다면 첫번째 코드들은 새로고침을 하면 원대대로 되는데 왜 사용이 되는건지 궁금합니다.
질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야 어떤 강좌에서 질문하셨는지 알 수 있습니다. 영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다. 이미 다른 누군가가 질문을 한 이력 이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁드립니다. 학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다. 제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다. 시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산) 질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.