묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
memorymemberrepository 와 memberrepository 의 관계
자바에 대해 이해가 아직 부족해서 질문드립니다. 마지막에 같은 인스턴스를 생성하기위해 수정하는 부분에서 MemberServiceTest클래스에서는 memorymemberrepository 객체를 생성하고 memberservice 클래스의 생성자 메소드에는 memberrepository 객체를 매개변수로 넣어야하는데 테스트클래스에서 memorymemberrepository 타입을 넣어서 객체를 생성했잖아요? 그 둘이 상속 관계라는 건 알겠는데 그러면 두개의 타입이 동일한 타입이라고 생각하고 쓰면 되는건가요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의랑 조금은 관련있는 개인적인 질문입니다.
안녕하세요 ! 루키스님 강의 들으면서 열심히 게임만들고있는 무직백수입니다. 게임을 만들다가 마법탄환이나, 화살같은걸 오브젝트풀링 방식으로 하고 싶어서 만들었는데요. 이상하게 poolable 스크립트를 붙이면 이런 오류가 발생하면서 아예 에디터가 먹통이 되어버립니다. 검색 결과 저 경로안에있는걸 삭제하라길래 삭제한뒤에 실행해봐도 아예 아무키도 안먹히는 먹통상태가 되버립니다.. 혹시 이 오류가 왜 발생하는지 알 수 있을까요?? The property database "Library/Search/propertyAliases.db" is already opened. UnityEditor.EditorApplication:Internal_InvokeTickEvents ()
-
미해결만들면서 배우는 리액트 : 기초
github page로 배포하기 이후 질문입니다.
안녕하세요, 유림님의 친절하고 상세한 설명에 쉽게 완강할 수 있었습니다. 다 듣고 나서 궁금증이 생겨서 질문을 드리게 되었습니다. 현재 강의 기준(37 빌드한 결과물 github page로 배포하기) 후에 제가 추가로 소스를 수정하게 되면 예를들어 생성버튼의 이름을 생성123으로 변경했다고 가정했을 시 main branch를 통해서 소스 수정한 부분을 github에 배포를 하고서 cat-jjal-maker-cra 폴더로 가서 npm run build, npm run deploy를 실행해주면 되는걸까요? 소스 배포를 안하더라도 수정 이후에 npm run build, npm run deploy를 했을 경우 제 페이지에서 수정되는게 확인은 가능해서 위 질문을 드리게 되었습니다. ( commit, push를 안해도 페이지의 내용은 변경되지만 그럼 결국 main branch 와는 상이한 소스가 되니 변경된 소스를 commit, push를 해주는 걸까요? )
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예외처리
9분 3초 쯤에 톰캣까지 예외를 보내주어야 한다고 하셨는데 1)저희가 코드에 따로 예외 로깅안했으니까 톰캣까지 예외가 보내진건가요? 2)그리고 예외를 먹으면 정상처럼 흘러간다고 하셨는데 단지 로깅을 했다고 해서 예외가 사라지는건가요?
-
미해결만들면서 배우는 프론트엔드 DO IT 코딩 (Next.js, Typescript)
svg파일 주신pdf로 복사붙여넣기했는데 깨져요ㅠㅠ
google.svg는 안깨지는데 logo.svg와 main_logo.svg가 깨져서 노출이 안되고있어여 ㅠ 제가 잘못 붙여넣은건지 한번 확인부탁드리겠습니다!!ㅠ logo.svg <svg width="500" height="451" viewBox="0 0 500 451" fill="none" xmlns="http:// www.w3.org/2000/svg"><path d="M0 300C0 244.772 44.7715 200 100 200H400C455.228 200 500 244.772 500 300V300C500 355.228 455.228 400 400 400H175.457C169.978 400 164.657 401.838 160.347 405.22L131.038 428.216C121.799 435.465 108.662 426.732 111.771 415.407L112.294 413.501C114.159 406.706 109.046 400 102 400V400H100C44.7715 400 0 355.228 0 300V300Z" fill="#FF75B5"/><path d="M0 37C0 16.5655 16.5655 0 37 0H463C483.435 0 500 16.5655 500 37V163C500 183.435 483.433 200 462.999 200C442.402 200 422.731 200 403.75 200C391.481 200 411.533 213.179 416.123 223.773C418.463 229.172 412.007 233.051 406.129 232.804C376.75 231.566 323.991 200 310 200C222.191 200 141.537 200 37.018 200C16.5835 200 0 183.435 0 163V37Z" fill="#FFB86C"/></svg> main_logo.svg <svg width="500" height="451" viewBox="0 0 500 451" fill="none" xmlns="http:// www.w3.org/2000/svg"><path d="M0 300C0 244.772 44.7715 200 100 200H400C455.228 200 500 244.772 500 300V300C500 355.228 455.228 400 400 400H175.457C169.978 400 164.657 401.838 160.347 405.22L131.038 428.216C121.799 435.465 108.662 426.732 111.771 415.407L112.294 413.501C114.159 406.706 109.046 400 102 400V400H100C44.7715 400 0 355.228 0 300V300Z" fill="#FF75B5"/><path d="M0 37C0 16.5655 16.5655 0 37 0H463C483.435 0 500 16.5655 500 37V163C500 183.435 483.433 200 462.999 200C442.402 200 422.731 200 403.75 200C391.481 200 411.533 213.179 416.123 223.773C418.463 229.172 412.007 233.051 406.129 232.804C376.75 231.566 323.991 200 310 200C222.191 200 141.537 200 37.018 200C16.5835 200 0 183.435 0 163V37Z" fill="#FFB86C"/><circle cx="194.5" cy="171.5" r="4.5" fill="black"/><circle cx="230.5" cy="171.5" r="4.5" fill="black"/><path d="M218.5 183C218.5 185.769 215.875 188.5 212 188.5C208.125 188.5 205.5 185.769 205.5 183C205.5 180.231 208.125 177.5 212 177.5C215.875 177.5 218.5 180.231 218.5 183Z" stroke="black" stroke-width="5"/><circle cx="161.271" cy="222.76" r="4.5" transform="rotate(-13.055 161.271 222.76)" fill="black"/><circle cx="196.341" cy="214.628" r="4.5" transform="rotate(-13.055 196.341 214.628)" fill="black"/><path d="M171.5 231.5C173.667 233 179.2 235.5 184 233.5C188.8 231.5 190 227.667 190 226" stroke="black" stroke-width="5" stroke-linecap="round"/></svg>
-
미해결쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
headless error
안녕하세요. 강의를 듣고 코드를 작성했습니다. 그런데 typeError가 발생했습니다. 구글링을 해보고 스택오버플로우에서 찾아보고 글을 남겼지만 해결이 되지 않아 여쭤봅니다. 강의 시간은 8:18입니다. 현재 크롬은 최신업데이트하였고 드라이버 경로도 확인했습니다. 에러 메세지는 아래와 같습니다. TypeError Traceback (most recent call last) Input In [20], in <cell line: 6>() 4 headlessoptions.add_argument('headless') 5 chromedriver = 'C:/dev_python/Webdriver/chromedriver.exe' ----> 6 driver = webdriver.Chrome(chromedriver, options=headlessoptions ) 7 driver.get('https://davelee-fun.github.io/') 9 elem = driver.find_element_by_tag_name("h1") TypeError: __init__() got an unexpected keyword argument 'options' 아래는 작성한 코드입니다. from selenium import webdriver headlessoptions = webdriver.ChromeOptions() headlessoptions.add_argument('headless') chromedriver = 'C:/dev_python/Webdriver/chromedriver.exe' driver = webdriver.Chrome(chromedriver, options=headlessoptions) driver.get('https://davelee-fun.github.io/') elem = driver.find_element_by_tag_name("h1") print (elem.text) driver.quit()
-
미해결설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
Vivado 설치 문의
안녕하세요 Vivado 설치 중 아래와같은 오류가있어 문의드립니다. Xilinx에서 받은 파일명은 아래와 같으며 Xilinx_Unified_2022.1_0420_0327_Lin64 계정 토큰 생성을 위해 ./Xilinx_Unified_2022.1_0420_0327_Lin64.bin -- -b AuthTokengen 명령어를 시행중 아래와 같은 오류가 발생합니다. 가이드북 상 그위의 명령어들은 다 오류없이 실행했는데 어떻게 해결해야할까요?
-
미해결만들면서 배우는 리액트 : 기초
함수를 넘기는 게 왜 localstorage에 한번만 접속 하는건지 이해가 잘 가지 않습니다
useState(localStorage.getItem("test")); 이거랑 useState(() => { return localStorage.getItem("test"); }); 이거랑 결국 함수 실행 시에 localStorage에 접근을 할텐데 왜 랜더링 할 때 1번만 접근한다는건지 개념이 이해가 안가네요
-
미해결블렌더 처음 시작부터 로우폴리 3D 애니메이션 까지
덕분에 완강했습니다!
지금 렌더링 하고있는데 다만 좀 궁금한건 소리가 없으니 렌더링한 영상이 좀 밋밋한 느낌이 날 거 같은데 헬리콥터 돌아가는 소리까지 추가하는건 블렌더에서 어렵겠죠?
-
미해결이더리움 디앱(dApp) 개발과 프로젝트, 블록체인 스마트 컨트랙트
강의 업데이트.
- 학습이더리움 디앱 개발과 프로젝트를 학습중에 있습니다. 근데 강의 소개에는 24개의 강의가 있다고 소개 돼어 있어서 구매를 했느데, 현재 17 개의 강의밖에는 없고 4월 이후로 더 이상 업데이트가 돼지 않고 있습니다. 예를 들어서 18 강의 (ESR20) 부터 없습니다. 강의가 더 이상 업데이트 돼는게 아닌가요? 궁금합니다.
-
미해결
살려주세요 'WebDriver' object has no attribute 'find_elements_by_xpath' 에러가 나요
from bs4 import BeautifulSoup import openpyxl import time from selenium import webdriver url = "https://www.amazon.com/Wireless-Keyboard-Rechargeable-Cimetech-Cordless/product-reviews/B07VCPLMQR/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews" browser = webdriver.Chrome(executable_path=r'D:\dev_python\Webdriver\chromedriver.exe') browser.get(url) time.sleep(1) soup = BeautifulSoup(browser.page_source, 'html.parser') wb = openpyxl.Workbook() ws = wb.active ws.title = "review data" ws.append(['name', 'review']) ws.column_dimensions['A'].width = 12 ws.column_dimensions['B'].width = 60 for page in range(0, 100): review_name = soup.select('#customer_review-RHQYUQ8OC53OJ > div:nth-child(1) > a > div.a-profile-content > span') product_review = soup.select('#customer_review-RHQYUQ8OC53OJ > div.a-row.a-spacing-small.review-data > span > span') for name, review in zip(review_name, product_review): ws.append([name.text, review.text]) button = browser.find_elements_by_xpath('//*[@id="cm_cr-pagination_bar"]/ul/li[2]/a') button.click() time.sleep(3) wb.save("crawling review data.xlsx") 이런 코드를 짰는데 자꾸 'WebDriver' object has no attribute 'find_elements_by_xpath' 에러가 떠요 살려주세요 제발 제발 제발 제발 제발.........
-
미해결설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
윈도우 11 업그레이드
- 강의 내용외의 개인 질문은 받지 않아요 (개별 과제, 고민 상담 등..)- 저 포함, 다른 수강생 분들이 함께보는 공간입니다. 보기좋게 남겨주시면 좋은 QnA 문화가 될 것 같아요. (글쓰기는 현업에서 중요한 능력입니다!)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 현재 비바도 2021.2 사용중이며, 윈도우 11 업그레이드를 할려고하는데요! 호환성 등 이슈가 있나요?? 비바도 2021.2는 윈도우11을 지원하지 않는다는 말들이 몇달 전까지 있었는데, 지금도 그런가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
에러
안녕하세요.Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2022-06-29 21:39:03.114 ERROR 10435 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : 라는 문구가 콘솔창에 뜨며 안됩니다.. 왜 그런 것인가요..?ㅜ 인텔리제이로 하고있습니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
프록시를 이용한 연관관계 설정 시 잘못된 id값을 받았을 경우에 대해 질문드립니다!
단순히 연관관계 설정을 위해 엔티티를 사용하는 경우, 프록시로 조회(em.getReference || Data JPA의 경우 getById()) 형태로 조회한다고 알고 있습니다. 연관관계 설정을 위해 필요한 값은 id뿐인데, 굳이 엔티티의 다른 필드 정보까지 조회하기 위한 쿼리를 날리지 않는 편이 좋으니까요. 이 점과 관련해서 동료들과 이야기를 나누던 중 얘기가 나왔었는데, - 위와 같은 방식으로 연관관계를 맺을 경우 id값이 잘못된 값일 때 문제가 발생한다. 는 이야기를 들었습니다. 제 생각에는 정확한 id값 전달의 경우 id값을 전송하는 쪽의 책임이고, 그런 일이 나올 경우에 대비하는 것에 비해 프록시를 이용해서 조회 쿼리를 한 번 절약하는 이득이 더 크다고 생각했습니다. 하지만 방어적 코드를 작성하는 편이 좋다라는 측면에서 동료들의 말에도 일리가 있어서 고민이 되었습니다. 현업에서도 프록시를 이용해 연관관계를 맺는 방식을 사용하실 것 같은데, 위 경우에 대해 어떤 방식으로 별도의 처리를 해주시는지, 이 문제에 대해 어떻게 생각하시는지 궁금합니다.
-
미해결Slack 클론 코딩[백엔드 with NestJS + TypeORM]
관계가 적용되었을 때 row를 삭제하면 관계가 적용된 row도 삭제 하게 하려면 어떻게 해야 할까요?
상품 entity와 이미지 entity가 아래 처럼 있다고 가정합니다. @Entity("products") export class ProductEntity extends CommonEntity { @IsString() @IsNotEmpty() @Column({ type: "varchar", length: 20, unique: true, nullable: false }) name: string; @IsNumber() @IsNotEmpty() @Column({ type: "int", unsigned: true, nullable: false }) price: number; @IsString() @IsNotEmpty() @Column({ type: "varchar", length: 20, nullable: false }) origin: string; @IsString() @IsNotEmpty() @Column({ type: "varchar", length: 20, nullable: false }) type: string; @IsString() @IsNotEmpty() @Column({ type: "text", nullable: true }) description: string; @Column({ type: "int", default: 50 }) quantity: number; @Column({ type: "float", default: 0.0 }) rating: float; @OneToOne(() => ImagesEntity, (image) => image.product, { cascade: true }) @JoinColumn({ name: "imageId" }) image: ImagesEntity; } @Entity("images") export class ImagesEntity extends CommonEntity { @OneToOne(() => ProductEntity, (product: ProductEntity) => product, { onDelete: "CASCADE", onUpdate: "CASCADE", }) product: ProductEntity; @Column({ type: "varchar", nullable: false, unique: true }) url: string; @ManyToOne(() => UserAuthEntity, (Join) => Join.image) @JoinColumn({ name: "uploaderId", referencedColumnName: "id" }) uploader: UserAuthEntity; @Column({ type: "enum", enum: ["product upload", "review", "inquiry"] }) uploadReason: "product upload" | "review"; } product entity에는 image라는 가상 컬럼이 존재하고 images entity에는 product라는 가상 컬럼이 존재합니다. 여기서 상품쪽 row가 지워지면 이미지쪽 row도 지워지게 하고 싶어서 각각의 가상컬럼에 casecade : true 와 onDelete: "CASCADE"를 주었습니다. 질문 1. 상품 쪽에서 지울 때 이미지 쪽에서도 지워지게 하려면 옵션을 저렇게 설정하는게 맞을까요? 질문 2. 아래는 제가 구글링을 하다가 찾게 된 코드입니다. const author = await Author.findOne({ id: '123' }); author.books.push(new Book(...)); await author.save(); 위 같은 방식이 activate record가 맞을까요? 질문 3. 위 질문이 맞다면 제가 save메서드를 호출해야 cascade가 적용 된다는 글을 봤었는데(https://velog.io/@hahaha/TypeORM-Relation) 그러면 repository pattern을 사용하면 cascade를 적용시킬 수 없는것일까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요 선생님. 질문이 있습니다.
안녕하세요 선생님? 선생님 강의 시리즈 잘 듣고 덕분에 학교 졸업 전에 많은 걸 배웠습니다. 다름이 아니라 이 강의를 참조하면서, 개인 프로젝트를 만들고 있습니다. 다름이 아니라 신고 기능을 구현하던 중 막혀서 질문 드립니다. 신고 기능을 구현하기 위해서 저는 UserReport 라는 테이블을 만들고, 그 안에 필드로 repoter 와 reportedUser (둘다 같은 User 객체 타입)을 선언 했는데, 스프링 서버를 실행시키니 작동은 되나, 테이블 생성이 안됩니다. 아무래도 제 생각이지만 같은 객체타입으로 선언을 해서 그런 것 같은데 어떻게 하면 좋을까요?? 일단 제가 여기서 생각한 방법은 reporter, reportedUser 을 모두 각각 reporter_id, reportedUser_id 로 두는 방법인데 이게 더 나을까요? 스택오버플로우에 올려도 아무도 답변을 안 해줘서 선생님에게 질문 남깁니다. 감사합니다^^ package yoon.community.entity.report;import lombok.AccessLevel;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.hibernate.annotations.OnDelete;import org.hibernate.annotations.OnDeleteAction;import org.springframework.format.annotation.DateTimeFormat;import yoon.community.entity.user.User;import javax.persistence.*;import java.time.LocalDate;@AllArgsConstructor@NoArgsConstructor(access = AccessLevel.PROTECTED)@Data@Entitypublic class UserReport { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "reporter_id", nullable = false) @OnDelete(action = OnDeleteAction.NO_ACTION) private User reporter; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "reported_id", nullable = false) @OnDelete(action = OnDeleteAction.CASCADE) private User reportedUser; @Column(nullable = false) private String explain; @DateTimeFormat(pattern = "yyyy-mm-dd") private LocalDate createDate; // 날짜 public UserReport(User reporter, User reportedUser, String explain) { this.reporter = reporter; this.reportedUser = reportedUser; this.explain = explain; } @PrePersist // DB에 INSERT 되기 직전에 실행. 즉 DB에 값을 넣으면 자동으로 실행됨 public void createDate() { this.createDate = LocalDate.now(); }}
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
11 line에 조건문 중 첫번째 조건 꼭 필요한가요?
!map2.has(key)라는 조건이 반드시 필요한 조건인지 궁금하네요. 두번째 조건인 map2.get(key)!==val 에서 어차피 해당 key가 없다면 undefined 될거같은데 반례가 있을까요?
-
미해결Do it! Node.js 프로그래밍(개정판)
'새파일 만들기'를 눌렀는데 '대상 디렉토리를 변경 할수 없다'고 자꾸 나오네요.
- 이렇게 폴더 열기를 NodeExample로 해주면, 열리긴 하는데, '파일만들기'했을때 이런 오류가 납니다. bracket을 다시 지웠다 깔아봐도 소용없고 도대체 어떻게 해야 하는 줄을 잘 모르겠습니다.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
gnb에 padding: 0; 을 2번주는 이유가있을까요?
gnb에 padding: 0; 을 2번주는이유가있을까요?
-
해결됨[입문] Qt 6 프로그래밍 1편
최신 버전에서 QDataStream의 파일 입출력
안녕하세요. 강의 잘 듣고 있습니다. 현재 최신 버전의 QT Creator를 사용하여 수강중인데, 해당 강의의 경우 가격 정보를 읽어오는 부분에서 차이가 있어서 질문드립니다. in >> keyboardPrice; in >> monitoryPrice;강의에서는 위와 같이 Keyboard , Monitor 순으로 받아오는데 강의 결과값과 달리 저는 두 값이 바뀌어 저장이 됩니다. 혹시 최신 버전의 QDataStream 파일 입출력 알고리즘이 변화가 있었는지, 아니면 제 실수인지 궁금해서 질문 드립니다. 아래는 강의의 결과와 같게 나오기 위해 수정한 제 코드입니다. #include "widget.h" #include "ui_widget.h" #include <QDataStream> #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); setWindowTitle("QFile을 이용한 예제"); connect(ui->pbSave, SIGNAL(pressed()), this, SLOT(slot_pbFileSave())); connect(ui->pbLoad, SIGNAL(pressed()), this, SLOT(slot_pbFileLoad())); m_file = new QFile(); if(QFile::exists("c:/QT/price.data")) { m_file->setFileName("c:/QT/price.data"); } } Widget::~Widget() { delete ui; } void Widget::slot_pbFileSave() { QString fileName = QString("c:/QT/price.data"); m_file->setFileName(fileName); if(!m_file->open((QIODevice::WriteOnly | QIODevice::Truncate))) { qDebug("File Open Fail !"); return; } else { qint32 keyboardPrice = ui->leKeyboard->text().toInt(); qint32 monitorPrice = ui->leMonitor->text().toInt(); QDataStream out(m_file); out << keyboardPrice; out << monitorPrice; m_file->flush(); m_file->close(); } } void Widget::slot_pbFileLoad() { if(!m_file->open(QIODevice::ReadOnly)) { qDebug("File Open Fail !"); return; } qint32 keyboardPrice; qint32 monitorPrice; QDataStream in(m_file); in >> monitorPrice; in >> keyboardPrice; m_file->flush(); m_file->close(); QString keyboard = QString("키보드 가격 : %L1").arg(keyboardPrice); QString monitor = QString("모니터 가격 : %L1").arg(monitorPrice); ui->textEdit->clear(); ui->textEdit->append(keyboard); ui->textEdit->append(monitor); }