묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Camera #3 에서 질문입니다. 카메라가 캐릭터 position으로 이동됩니다.
using UnityEngine; public class CameraController : MonoBehaviour { [SerializeField] Define.CameraMode _mode = Define.CameraMode.QuaterView; [SerializeField] Vector3 _delta = new Vector3(0f, 0f, 0f); [SerializeField] GameObject _player = null; void Start() { } void LateUpdate() { if (_mode ==Define.CameraMode.QuaterView) { RaycastHit hit; if (Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall"))) { float dist = (hit.point - _player.transform.position).magnitude * 0.8f; transform.position = _player.transform.position + _delta.normalized * dist; } else { transform.position = _player.transform.position + _delta; transform.LookAt(_player.transform); } } } public void SetQuaterView(Vector3 delta) { _mode = Define.CameraMode.QuaterView; _delta = delta; } } 대체 어디가 잘 못 된건지 모르겠습니다 ㅠ
-
미해결오라클 성능 분석과 인스턴스 튜닝 핵심 가이드
Buffer Cache를 통한 데이터 Access 에서 DBA 정보를 어떻게 알아내는지 궁금합니다.
Buffer Cache 개념 및 Buffer Cache Access 메커니즘의 이해 강의 6분 30초 쯤 나오는 내용에 질문이 있습니다.Select * from customer where id = '005'위의 쿼리가 있을 때 아래와 같은 설명이 있습니다."설명에서는 Data Dictionary 등의 내부 정보를 통해서 Custormer 테이블의 id='005' 데이터가 있는 Block의 DBA 정보를 알아냄" 그런데 이 내용이 이해가 되지 않습니다.조건 값으로 어떻게 Block 3에 있는지 알 수 있는지요?풀스캔을 제외하고 바로 찾으려면 인덱스의 ROWID 값을 이용해야 하지 않나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
경계값 테스트 작성 시 질문 있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요. 경계값을 테스트할 때는 하나의 테스트 메서드 안에 모두 작성하는게 맞는건가요?상품 등록시 상품 번호의 증가로 예를 들면한 자리 -> 한 자리 ( 1 -> 2 )한 자리 -> 두 자리 ( 9 -> 10 )두 자리 -> 세 자리 ( 99 -> 100 ) 이런 식으로 작성할 수 있을 것 같은데, 이렇게 경계값에 대한 모든 경우를 한 메서드에 작성하는게 맞는 것 같긴한데, 경계값이 많아지면 좀 알아보기 힘들 것 같아서 여쭤봅니다..
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
웹 크롤링 대상중 웹에디터(smart_editor2) 안의 텍스트를 크롤링하는 방법
수업을 적용하며 크롤링 연습을 하고 있는데, 웹 크롤링 대상중 웹에디(smart_editor2) 안의 텍스트를 크롤링하는 방법이 궁금합니다.셀레니움을 활용하여 적용하고 있는데 웹에디터는 접근이 잘 안되고 접근이 된것 같은데 텍스트가 출력되지 않습니다 어떠헥 해야 할지 모르겠어서 질의 드려요 외부 접근되지 않는 사이트이고 아이디 비번은 마스킹 처리한 코드는 아래와 같습니다. 결국 아래 부분이 문제인것 같은데 에디터 내 텍스트 추출 방법을 몰라 문의드려요 try: driver.switch_to.frame("iframe4dummy") # 🔹 iframe 내부로 이동 # 🔹 iframe 내부에서 특정 클래스("se2_inputarea")를 가진 body 태그 찾기 # 🔹 iframe 내부의 `body` 태그에서 텍스트 가져오기 body = driver.find_element(By.CSS_SELECTOR, "body") answer = body.text.strip() print("✅ HTML 에디터 내용:", answer) # 🔹 다시 원래 페이지로 복귀 driver.switch_to.default_content() except Exception as e: print("❌ iframe 전환 실패 또는 body 태그를 찾을 수 없습니다:", str(e)) from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from urllib.parse import urlencode # URL 파라미터 추가용 import time import random import openpyxl import requests from bs4 import BeautifulSoup from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC newscralling =[] import pyautogui import pyperclip #크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager # #브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service = service) # 웹페이지 해당 주소 주소이동 driver.implicitly_wait(2) #웹페이지가 로딩 될때까지 5초 대기 driver.maximize_window() driver.get("https://OOO") #아이디 입력창 id = driver.find_element(By.CSS_SELECTOR, ".submitLogin.text:nth-of-type(1)") id.click() pyperclip.copy("id") pyautogui.hotkey("ctrl", "v") time.sleep(0.3) # id.send_keys(Keys.TAB) # #비밀번호 입력창 직접입력 # time.sleep(7) pw = driver.find_element(By.CSS_SELECTOR, ".login ul li:nth-of-type(2) input") pw.click() # pw.send_keys("비밀번호") pyperclip.copy("pass") pyautogui.hotkey("ctrl", "v") #로그인 버튼 login_btn = driver.find_element(By.CSS_SELECTOR, ".btnLogin") login_btn.click() time.sleep(1) params = { "counselProcStatus": 2, "page": 1, "pageSize": 2 } #SSL인증 비활성화에 대한 경고메시지 삭제 import urllib3 urllib3.disable_warnings() qna_list_url = "https://OOO"+ urlencode(params) driver.get(qna_list_url) html = driver.page_source soup = BeautifulSoup(html, 'html.parser') articles = soup.select(".boardListStyle table tbody tr") import openpyxl from datetime import datetime wb = openpyxl.Workbook() ws = wb.active ws.title = "온라인상담_접수중" ws.append(["date", "category", "title", "quest", "answer", "man", "status"]) crowling = [] for article in articles: title = article.select_one(".alignLeft a").text date = article.select_one(".boardListStyle table tbody td:nth-of-type(4)").text category = article.select_one(".boardListStyle table tbody td:nth-of-type(2)").text status = article.select_one(".boardListStyle table tbody td:nth-of-type(7)").text link = 'https://OOO/'+ article.select_one(".alignLeft a").attrs['href'] title_link = f'=HyPERLINK("{link}", "{title}")' #상세 페이지 요청 driver.get(link) time.sleep(2) # 페이지 로딩 대기 detail_html = driver.page_source detail_soup = BeautifulSoup(detail_html, 'html.parser') quest = detail_soup.select_one(".con_txt").text try: driver.switch_to.frame("iframe4dummy") # 🔹 iframe 내부로 이동 # 🔹 iframe 내부에서 특정 클래스("se2_inputarea")를 가진 body 태그 찾기 # 🔹 iframe 내부의 `body` 태그에서 텍스트 가져오기 body = driver.find_element(By.CSS_SELECTOR, "body") answer = body.text.strip() print("✅ HTML 에디터 내용:", answer) # 🔹 다시 원래 페이지로 복귀 driver.switch_to.default_content() except Exception as e: print("❌ iframe 전환 실패 또는 body 태그를 찾을 수 없습니다:", str(e)) #answer = detail_soup.select_one(".se2_input_area.husky_seditor_editing_area_container iframe").text man = detail_soup.find('th', string="작성자").find_next_sibling().text crowling = ws.append([date, category, title, quest, answer, man, status]) driver.back() # 브라우저에서 '뒤로 가기' 실행 print(date, category, title, quest, answer, man, status) now = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"온라인상담_{now}.xlsx" wb.save(filename)
-
해결됨오라클 SQL 데이터베이스
(HTTP code 500) server error - Ports are not available 에러가 나옵니다.,
학습 관련 질문을 남겨주세요. 자세하게 남겨주면 더 좋습니다. 안녕하세요 docker 설치하고 말씀하신 이미지 다운받아 실행하니 이미지와 같이 포트를 허용할수 없다는 에러가 나옵니다.gpt보며 이거저거 해보았는데 방법이 잘못되었는지 해결이 되지 않습니다. 혹시 어떻게 하면 되는지 알려주시면 감사하겠습니다.
-
미해결실전! Querydsl
프로젝트 세팅시 궁금한게 있습니다 !
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]plugins { id 'java' id 'org.springframework.boot' version '3.4.2' id 'io.spring.dependency-management' version '1.1.7' } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //test 롬복 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } 프로젝트 세팅하면서 두 가지 궁금한게 있습니다. 강의 교안에 나와있는것처럼 세팅을 완료하였는데, "Gradle -> Tasks -> other -> compileQuerydsl" 여기서 compileQuerydsl이 보이지 않습니다. compileJava를 하면 Q도메인이 생성되는데, 이러면 문제 없는게 맞을까요 ?Q도메인을 보면, 아래와 같이 javax.annotation.이 생성되는데, 이건 jakarta가 아니어도 상관 없는것일까요? package study.querydsl.entity; import static com.querydsl.core.types.PathMetadataFactory.*; import com.querydsl.core.types.dsl.*; import com.querydsl.core.types.PathMetadata; import javax.annotation.processing.Generated; import com.querydsl.core.types.Path; /** * QHello is a Querydsl query type for Hello */ @Generated("com.querydsl.codegen.DefaultEntitySerializer") public class QHello extends EntityPathBase<Hello> { private static final long serialVersionUID = 1910216155L; public static final QHello hello = new QHello("hello"); public final NumberPath<Long> id = createNumber("id", Long.class); public QHello(String variable) { super(Hello.class, forVariable(variable)); } public QHello(Path<? extends Hello> path) { super(path.getType(), path.getMetadata()); } public QHello(PathMetadata metadata) { super(Hello.class, metadata); } } 감사합니다.
-
미해결Amazing JavaScript - 입문
export 선언 위치
일반적으로 어떤 프로그래밍 언어이든 사용하고자 하는 변수나 함수가 먼저 선언되고 그 이후에 사용이 가능한데 export 예시를 보여주신 것처럼 export는 해당 파일에서 가장 아래 쪽에서 선언을 해야 하는 게 맞나요?
-
미해결홍정모의 따라하며 배우는 C++
안녕하세요 혹시 제가 이해한게 맞을까요
void printColorName(Colors color){ if (color == Colors::BLACK) std::cout << "Black" << std::endl; else if (color == Colors::WHITE) std::cout << "White " << std::endl; else if (color == Colors::RED) std::cout << "Red" << std::endl; 여기서 매개변수가 Colors color인데enum타입의 클라스 Colors의 오브젝트를 color라는 이름으로 매개변수를 받는다음에 if문이 실행되는거 맞죠? 그 오브젝트가(attribute가) 될 수 있는거는 BLACK,WHITE RED GREEN,BLUE만 가능하구 매개변수로 줄 떄, Colors::BLACK이렇게 줘야하구요
-
미해결Airflow 마스터 클래스
dag_run 주기적으로 삭제
안녕하세요 강사님! 실습중에 궁금한게 생겨서 질문드립니다! dag이 실행될때 저장되는 dag_run 데이터는 주기적으로 삭제해도 airflow 스케줄 실행에 문제가 발생하진 않나요?? postgres도 EC2 내부에 docker-compose로 띄워놔서 혹시나 주기적으로 지워주면 리소스를 줄일 수 있을까 해서요!
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Infinity Blade: Warriors를 다운 에러
4강 수업을 위해 Infinity Blade: Warriors를 다운받으려고 하는데 fab으로 바뀌어서 검색이 되지 않습니다. 자료다운을 통해 Github에서 언리얼에디터파일을 다운받았으나 에디터가 실행은 되나 Animation폴더 내 애셋 전체가 에러가 나면서 실행되지 않습니다. 또한 Animation폴더를 다른 언리얼에디터 프로젝트로 migration하거나 직접 content폴더내로 이동해도 계속 에러가 납니다. Infinity Blade: Warriors 파일을 다운 받도록 도와주세요~
-
미해결프로젝트로 배우는 Python 챗봇 & RAG - LangChain, Gradio 활용
커널선택시 poetry env가 보이지 않습니다.
위와 같이 poetry env 가 보이지 않는데 어떻게 해결해야 할까요??
-
미해결실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
docker 권한 오류입니다
powershell에서는 usermod -aG 명령어로 정상적으로 권한부여 됐는데(docker run hello-world) vscode 터미널에서는 권한부여가 자꾸 오류납니다같은 환경이라고 생각해서 powershell에서 계속 작업을 했었는데, dev container reopen할때 권한 오류가 나더라구요. 원인이 무엇일까요? 재부팅 및 terminal kill해도 해결이 안되네요
-
미해결Next + React Query로 SNS 서비스 만들기
cache 질문
이전 faker 를 사용했을 때 이미지가 바뀌는 문제때문에 getPostRecommend 함수 부분에 cache : "force-cache" 를 작성하셨었는데 실제 데이터를 받아오는 현시점에선 cache:"no-store" 를 작성하는게 맞을까요 ?
-
미해결김영한의 실전 자바 - 중급 2편
배열에 제네릭 타입을 사용하지 못하는 이유에 대한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 1. 제네릭은 생성자를 통해 인스턴스를 생성하는 시점에 타입이 결정된다. 2. 코드로 타입 인자가 전달되면 자바 컴파일러는 제네릭 정보를 이용해서 해당 타입을 이해한다. 3. 자바 이레이져에 의해 컴파일 후 제네릭 정보가 사라진다 => 상한인 Object로 변경됨제네릭 적용이 이런식으로 진행된다고 이해를 했습니다.그러면 배열에 타입 인자를 적용하더라도 결국 상한인 Object로 변경되어서 코드가 돌아가지 않나요?private E[] elementData; public MyArrayListV4() { elementData = new E[DEFAULT_CAPACITY]; }자바가 E를 알 수 없어서 사용 불가능하다는 부분이 이해가 잘 안됩니다... 제가 어떤 부분을 놓치고 있는 걸까요?
-
해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL
INNER JOIN 질문. 강의와 결과값이 다릅니다.
분명히 강의와 똑같이 작성한 것 같은데, 강의와 다르게 컬럼이 추가로 나타납니다.갈수록 이런 경우가 너무 많이 보이는데... 안내 좀 부탁드립니다. 이 부분은 에러로 출력됩니다.
-
미해결Airflow 마스터 클래스
강의 내용이 일부 잘린 것으로 보입니다!
안녕하세요! 항상 강의 잘 듣고 있습니다다른 강의와 달리 실습 코드에 대한 설명 없이 바로 airflow 실행으로 화면이 넘어가는 것으로 보입니다!혹 강의 영상의 일부가 잘린 것인가 하여 문의를 드립니다(해당 영상 4분 30초 기준)
-
미해결김영한의 실전 자바 - 중급 1편
TestString6 str.indexOf(Key, index + 1); 의 문장 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]While (index > = 0) 내부 코드에 궁금한 점이 있어서 질문을 드립니다. 제공해주신 코드 일부입니다. while (index >= 0) { index = str.indexOf(key, index + 1); System.out.println("index = " + index); count++; } System.out.println("count = " + count); } 결과를 보면,index = 18index = 32index = -1 이 순서대로 출력이 됩니다.궁금한점 입니다.1번 질문입니다. 18, 32, -1이 출력 된 뒤 count가 1씩 증가했습니다. 제가 생각하기에는 6, 18, 32가 출력이 되고 count = 3이 출력되어야 하지 않나 생각들었습니다. 제 생각이 맞는지 확인받고 싶습니다.2번 질문입니다.제가 수정한 코드의 일부입니다. 이 코드가 타당한지 검토받고 싶습니다. 감사합니다. while (index >= 0) { index = str.indexOf(key, index + 1); System.out.println("index = " + index); if (index == -1) { break; } count++; } System.out.println("count = " + count); }
-
해결됨실전도커: 도커로 나만의 딥러닝 클라우드 컴퓨터 만들기
ssh의 연결과 rdp의 연결은 별개인건가요?
vscode를 연동하기 위해서 gui방식의 연결이 필수인걸까요?아니면 ssh만으로도 vscode 연동이 가능한걸까요?
-
해결됨고객을 이해하는 가장 좋은 방법 : UT와 사용자 인터뷰
UT 성공/실패 기준세우는 법
안녕하세요 UT 설계시 성공/실패 기준을 세우는게 중요하다고 말씀해주셨는데요, 이 기준을 세우는 부분이 아직 어렵게 느껴져서 질문드립니다!예시로 보여주신 아이패드 문제집 UT의 경우에는 성공/실패 기준을 어떻게 세우셨는지 궁금합니다. 특히 인터뷰를 통해 아날로그 방식을 고집할 필요가 없다고 판단되어 OMR카드에서 직접 보기를 클릭하는 방향으로 디자인이 수정되어있는데, 이 판단의 근거는 무엇이었는지 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
MemoryMemberRepository를 2번 선언해도 테스트 결과가 정상인 이유?
[질문 내용]안녕하세요 '주문과 할인 도메인 실행과 테스트' 수강 도중 의문점이 생겨서 질문 남깁니다. MemberServiceImpl 과 OrderServiceImpl 에서 모두 new 생성자를 통해서 MemoryMemberRepository 를 생성하고 있습니다.이렇게 되면 MemberSerivceImpl에서 join 한 Member 객체는 MemberServiceImple 객체에 존재하는 MemoryMemberRepository에만 저장될 것 같아서 OrderServiceImpl에서 선언한 MemoryMemberRepository는 비어있는 상태일 것이라고 생각했습니다. 그런데 OrderServiceImpl에서 선언한 MemoryMemberRepository에서 findById()를 해도 join한 Member 객체를 조회할 수 있게 되는 이유가 무엇인가요?