묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Practical Testing: 실용적인 테스트 가이드
영속성 계층과 E2E 테스트에 대해 질문이 있습니다.
안녕하세요! 소프트웨어의 안정성과 테스트에 대해서 많은 고민을 가지고 있는 주니어 백엔드 개발자입니다.우빈님의 강의로 실용적인 테스팅 방식에 대해서 기반을 다졌습니다. 덕분에 면접 질문에서도 우빈님의 의견과 저의 의견이 합쳐져서 좋은 답변을 할 수 있었어요!취업 이후에도 여러가지 테스트 서적을 읽으면서 다른 관점도 많이 바라보고 있는데요. 이 과정에서 영속성 계층에서의 테스트와 E2E 테스트 부분에서 해소되지 않은 고민이 있어서 조언을 얻고자 찾아왔습니다.먼저 영속성 테스트 관련 질문부터 드리고자 합니다.취업을 하기 전에 취준을 하는 상황에서는 H2 DB로만 해소 할 수 있는 상황이 많았던 것 같습니다.하지만 실무에 들어오니 생각보다 Native Function을 사용하는 경우가 있고, 버전 문제로 각 DB에 있는 연산자가 제대로 동작하지 않는 일 (Dialect 이슈) 도 적지 않게 볼 수 있었습니다.이전에 답변 주신 https://www.inflearn.com/community/questions/1408867/classicist-vs-mockist해당 내용처럼 저 또한 동일하게 영속성 계층에서의 테스트를 DB 관점에서 그냥 동작하겠거니 하고 안일하게 생각하여 제대로 동작하지 않는 케이스를 봤기에 할 필요가 있다고 생각을 하는데요.아직까지는 제 경험에서는 Test Container를 사용하여 실 상황과 유사한 DB를 사용하는 것이 그나마 합리적인 방법으로 생각을 하고 있습니다. 하지만, 또 컨테이너가 뜨다보니 테스트하는데 걸리는 시간이 상당한 것도 단점으로 다가오기는 하더라구요.명확한 답은 없겠지만 우빈님은 위와 같은 비슷한 상황에서 어떤 방식을 택하고 계시는지 더 좋은 방법은 없을지하여 질문을 먼저 드리게 되었습니다.이어서, E2E 테스트 관련 질문입니다.비즈니스 계층에서의 통합 테스트가 작성이 되었다면 아직까지는 우빈님의 생각과 동일하게 프레젠테이션 영역에서는 통합 테스트를 하지 않아도 괜찮지 않을까? 라는 생각을 가지고 있는데요.하지만, 종종 테스트 관련 여러 서적이나 토론등을 보면 E2E 테스트는 중요하다는 관점을 가지고 있는 글이나 영상을 종종 찾아 볼 수 있었고, 무엇보다 저희 팀원분들중에서도 "E2E 테스트를 하는게 아니라면 프레젠테이션 레이어를 테스트 할 필요가 있어?" 라는 질문을 받았을 때 다음과 같은 생각이 들었습니다."그러네.. 지금까지는 거의 문서화를 목적으로 작성을 했었는데, 문서화를 RestDocs, RestDocs to Swagger(OpenApi Spec) 를 하는게 아니라면 작성 할 필요가 있을까?" 라는 의문이 떠올랐습니다. 혹시 이 부분에 대해서 어떻게 생각하시는지 우빈님의 소견을 듣고 싶어서 긴 글로 질문을 드리게 되었습니다.항상 좋은 강의 좋은 인사이트 제공 해주셔서 늘 감사드립니다.
-
미해결스프링 시큐리티 OAuth2
spring security 6부터 Implicit 지원 안하네요
spring security 6부터 AuthorizationGrantType.IMPLICIT가 제거되어서 OAuth2AuthorizationRequestException이 발생합니다.spring security 6로 실습 따라가면서 학습하시는 분들은 참고하세요https://github.com/spring-projects/spring-security/issues/11506
-
해결됨실리콘밸리 빅테크 29개의 실습으로 배우는 시스템 디자인 설계
General Service 서비스 컴포넌트 관련 질문있습니다!
안녕하세요~ 섹션 2 General Service 서비스 컴포넌트의 마지막 부분에 질문이 있습니다. 이번 강의 마지막 부분에서 설명해주신 내용과 그림에는 게이트웨이가 모놀리스 서비스에만 적용이 가능하고 마이크로서비스에는 로드밸런서를 사용해야 하는 걸로 나와있는데요~보통 MSA에는 게이트웨이로 설명하고, 동일한 서비스들에 트래픽을 분산시키거나 장애 조치를 할 때 로드밸런서를 둔다고 하지 않나요?혹시나 제가 잘못 알고 있는 부분을 짚어 주셨으면 해서 질문 드립니다! 그리고 이전 강의에서 LB와 게이트웨이를 다르게 설명해주신 부분도 굳이 분리할 수도 있지만... 보통 게이트웨이에는 로드 밸런싱 기능이 포함되는 것으로 보는 것 같던데 이 부분도 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
환경변수 이후 build failed
환경변수 까진 다시 설정했습니다만.. build 안되네요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-G 질문있습니다 :)
안녕하세요 선생님 🙂 문제의 반례를 못찾겠어서 질문드립니다. 36번째 줄에 있는 dp[temp] = 1;이 들어가면 배열의 범위가 초과되는 경우가 있다고 하는데요, 어떤 반례가 있는지 잘 모르겠습니다. 1, 5, 12의 테스트케이스들을 전부 1로 초기화하면 안되는 이유가 있을까요? http://boj.kr/5855aa6cbb0b4df1acddd8288205e6cb
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
yml파일 윈도우 환경설정
아래처럼 cd이용해서 경로이동한 후 yml확인하려고 ls해도 안된다고 뜹니다ㅠㅠ윈도우관련 환경설정도 올려주셨음 좋겠습니다ㅠㅠ
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
Ollama로 사용가능한 한글 임베딩, LLM 모델 추천
안녕하세요. 좋은 강의 감사합니다.강의를 참고하여 standalone PC(GPU 4090)에서Ollama, Langchain으로 RAG를 구성하고 테스트하고 있는데요.혹시 한글 인식이 성능이 좋은 Ollama 임베딩, LLM 모델 추천해주실 수 있을까요? 4090급 GPU를 사용하다 보니 모델 선택 범위가 제한적이네요.즐거운 하루 되세요.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
웹뷰(Webview) 패키지 디버깅, 빌드 안 됨 문의드립니다.
웹뷰 강의 듣는 중에 오류가 생겨 문의드립니다.pub dev에서 웹뷰 플러터 패키지를 설명대로 플러터 터미널을 이용해 내려받고pubspec.yaml에서도 등록했습니다.안드로이드/app/src 빌드.그래들 파일에도 minsdkversion을 19로 작성도 했습니다.21도 적어봐라 flutter clean해서 다시 pub get 해라는 글도 봐서 그렇게 했는데도 안 됩니다...ㅜ 자꾸 디버깅 에러라며 코드 실행 자체가 안 되네요. 앱이 빌드가 안 됩니다. ㅜㅜ 웹뷰 패키지를 main.dart에 임포트할 때는 정상인데 디버깅 때 이럽니다.그래서 pubspec.yaml에서 해당 웹뷰 패키지를 제거하면 또 잘 빌드 됩니다...해당 패키지만 켜면 안 돼요.구글링 해보니 jdk를 21로 설정해라...그래들 업데이트를 해라 이래저래 해봤는데도 안 되네요.. 해당 내용은 이렇습니다.어찌 해야할까요. 검색해서 이래저래 해봤는데 아무래도 한계인 거 같아 문의드립니다. Running Gradle task 'assembleDebug'... FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':webview_flutter_android:compileDebugJavaWithJavac'. > Could not resolve all files for configuration ':webview_flutter_android:androidJdkImage'. > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for JdkImageTransform: C:\Users\admin\AppData\Local\Android\sdk\platforms\android-34\core-for-system-modules.jar. > Error while executing process C:\Program Files\Android\Android Studio\jbr\bin\jlink.exe with arguments {--module-path C:\Users\admin\.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\temp\jmod --add-modules java.base --output C:\Users\admin\.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\jdkImage --disable-plugin system-modules} * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 3s Error: Gradle task assembleDebug failed with exit code 1
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
원핫인코딩 시 표출 오류 및 컬럼수 불일치
아래와 같이, 수업에서 나온 코드 동일하게 작성했습니다.# 원핫 인코딩n_train, n_test, c_train, c_test = get_nc_data() # 데이터 새로 불러오기display(c_train.head())c_train=pd.get_dummies(c_train[cols])c_test=pd.get_dummies(c_test[cols])display(c_train.head())그러나 원핫 인코딩에서 강의처럼 코드 표출이 안 됩니다. -> true , false로 표출됩니다. 또한, 컬럼 수도 99개로 1개 모자랍니다. 무엇이 오류일까요..?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
정신이 나갈것같아요
ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\JavaPlease set the JAVA_HOME variable in your environment to match thelocation of your Java installation.C:\study\hello-spring>환경변수에 java-home 추가해서 경로 다시쓰고 자바 23버전 설치하고 인텔리제이 자바23 통일하고 다해봤는데. 안되네요
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
[16강] 확장함수 관련 질문입니다!
안녕하세요 강사님 확장함수 관련하여 질문이 있습니다. 강의 중에 확장함수는 원본 클래스의 private, protected 멤버 접근이 안된다.라고 말씀해주신 부분이 있습니다. 제가 확장함수를 이해하기로는 특정 클래스에 내가 사용할 특정 로직을 심는 함수라고 이해를 했습니다. 이렇게 이해를 하고 나니어짜피 외부에서는 확장함수로 추가할 원본 클래스의 private 혹은 protected 멤버에 접근이 불가능할텐데,확장함수는 원본 클래스의 private, protected 멤버 접근이 안된다. 내용은 어디에 어떻게 적용이 되는 것인지 이해가 잘 가지 않습니다. 혹시 어떠한 경우에 적용이 되는 내용인지 조금 더 구체적인 예시를 들어주실 수 있으실까요 ?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
22강 다차원 배열과 문자열 배열 j=0으로 선언되는 사유
22강 다차원 배열과 문자열 배열 j=0으로 선언되는 사유가 궁금합니다. 04:38 에 for 문 2개인데 첫번째 for문 탈출 후에두번째 for 문에서 j=2 상태에서 위 for문으로 올라갈때 j가 다시 j=0으로 선언되는 사유가 궁금합니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
커스텀 DateConverter
커스텀 DateConverter04-03 강의 링크가 잘못되어 있는 것 같습니다!!
-
미해결
네이버 스마트스토어 상품 정보 크롤링 질문입니다.
import os from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from openpyxl import Workbook import time # 크롬 옵션 설정 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--incognito') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36') chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_argument('--ignore-ssl-errors') # WebDriver 설정 service = Service(executable_path="C:/Users/User/Desktop/python/chromedriver.exe") driver = webdriver.Chrome(service=service, options=chrome_options) # 엑셀 파일 생성 및 시트 설정 wb = Workbook() ws = wb.active ws.title = "상품정보" ws.append(['브랜드명', '상품명', '정가', '판매가', '상품 링크', '이미지 링크']) # AHC 브랜드스토어 페이지로 이동 driver.get("https://brand.naver.com/ahcshop/best?cp=1") WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'li'))) # 페이지 로딩 대기 # HTML 파싱 html = driver.page_source soup = BeautifulSoup(html, 'html.parser') # 상품 정보 추출 products = soup.select('li') for product in products: try: # 브랜드명 brand = "AHC" # 상품명 name = product.select_one('div.PI9k_4E2vZ > strong.ViNuD_2kZl').text if product.select_one('div.PI9k_4E2vZ > strong.ViNuD_2kZl') else 'N/A' # 정가 original_price = product.select_one('del > span.LGJCRfhDKi').text if product.select_one('del > span.LGJCRfhDKi') else 'N/A' # 판매가 sale_price = product.select_one('strong > span.LGJCRfhDKi').text if product.select_one('strong > span.LGJCRfhDKi') else 'N/A' # 상품 링크 product_link = "https://brand.naver.com" + product.select_one('a')['href'] if product.select_one('a') else 'N/A' # 이미지 링크 image_link = product.select_one('div > img')['src'] if product.select_one('div > img') else 'N/A' # 엑셀에 추가 ws.append([brand, name, original_price, sale_price, product_link, image_link]) except Exception as e: print(f"오류 발생: {e}") # WebDriver 종료 driver.quit() # 엑셀 저장 경로 excel_file_path = os.path.join(os.path.dirname(__file__), "네이버_상품목록.xlsx") wb.save(excel_file_path) wb.close() # 결과 및 로그 저장 log_file_path = os.path.join(os.path.dirname(__file__), f"scraping_log_{time.strftime('%Y%m%d_%H%M%S')}.txt") with open(log_file_path, 'w', encoding='utf-8') as log_file: log_file.write(f"스크래핑 완료: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") log_file.write(f"엑셀 파일 저장 위치: {excel_file_path}\n") print(f"엑셀 파일 저장 완료: {excel_file_path}") print(f"로그 파일 저장 완료: {log_file_path}") 이 코드를 통해 AHC 브랜드 스마트스토어 베스트 페이지에 있는 상품 정보들을 가져오려고하는데요크롬드라이버 통해 실행하면서 해보려고하니까 차단되버리고 백그라운드 작업으로 하려다보니까 데이터를 못가져오는데 어떻게 해야될지 모르겠습니다 도와주세요 ㅠㅠ
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
안녕하세요. 9번 브런치 돌리면 오류가 나요.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 9번 브런치 돌리면 오류가 나요. list.vue 파일에서 하단에 상세보기 하는쪽입니다(id를 String 으로 변경하는과정에서요.)axios 쪽에서 TypeError: relativeURL.replace is not a function 오류가 납니다.. 왜이럴까요~?
-
해결됨실전! FastAPI 입문
get_todos_handler 부분 쿼리 매개변수 인식 오류
from fastapi import FastAPI app = FastAPI() @app.get('/') def heath_check_handler(): return {'ping': 'pong'} todo_data = { 1 : { 'id' : 1, 'contents' : '실전! FastAPI 섹션 0 수강', 'is_done' : True, }, 2: { 'id': 2, 'contents': '실전! FastAPI 섹션 1 수강', 'is_done': False, }, 3: { 'id': 3, 'contents': '실전! FastAPI 섹션 2 수강', 'is_done': False, }, } # 내림차순(큰값 -> 작은값) @app.get("/todos") def get_todos_handler(order: str | None = None): ret = list(todo_data.values()) if order and order == 'DESC': return ret[::-1] return ret위와 같이 강사님 코드 그대로 실행하고, 패키지 버전도 FastAPI==0.97.0인데, 쿼리 매개변수가 인식이 안되는데, 무슨 문제일까요?
-
미해결스프링 시큐리티
메인 페이지로 접속해도 login url로 리다이렉트가 되지 않습니다..
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/user").hasRole("USER") .anyRequest().permitAll(); http.formLogin(); } }@RestController public class SecurityController { @GetMapping("/") public String index() { return "home"; } @GetMapping("/user") public String user() { return "user"; } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-C 질문입니다. 문제에서 메모이제이션이라는 개념이 잘 와닿지가 않습니다..
메모이제이션이란 반복된 계산을 피해 시간을 단축시키는 기법이라고 이해하고 있습니다.근데 이 문제에서는 잘 와닿지가 않습니다..이 경우에 (3,1)에서 이미 dp가 1로 셋팅이 되어 있어서 바로 1을 반환하게 되는데..1로 셋팅된 값이 그 이상의 값으로 셋팅되는 경우의 수는 없을까요? 저렇게 가차없이 바로 return해도 되나 좀 복잡합니다.. 답변주시면 감사하겠습니다!
-
미해결Flutter로 메신저앱 만들기
flutter_file_downloader 패키지 설치 후 앱 실행 시 오류 발생!
안녕하세요?강의 잘 따라해 보고 있습니다.제목 그대로 동영상 파일을 다운로드 받기 위해 flutter_file_downloader 패키지를 설치한 이후앱을 재실행하면 오류가 발생합니다.-----------------------------------------------FAILURE: Build failed with an exception.* What went wrong:A problem occurred configuring project ':flutter_file_downloader'.> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl. > Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace. If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.BUILD FAILED in 889msError: Gradle task assembleDebug failed with exit code 1-----------------------------------------------현재 최신 버전이 2.0.0 인데,, 예제 소스 상의 버전이 1.2.1 인데, 이 버전을 받아 봐도 동일한 현상입니다.동영상 강의에서 강의노트에 설명을 달아 놓으셨다고 하는데, 강의 노트를 찾을 수가 없네요..조언 부탁드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - S 질문 있습니다.
안녕하세요. 강의를 듣고 힌트를 얻어서 어찌저찌 백준에서역시 통과를 하게 되었습니다. 그런데, 이해가 안되는 부분이 하나 있어서 질문을 하고싶습니다. 제가 다이나믹 테이블의 선언을 처음에는 코드의 38번째 줄에서 하였습니다.그 이유는 결국 시작을 어디에서 하던지 간에 다이나믹 테이블의 값은 똑같다고 생각해서이기 때문입니다.하지만 다이나믹 테이블의 선언을 루프 외부, 38번째 줄을 하니 문제가 틀리고, 내부, 40번째 줄을 하니 테스트를 통과 했습니다. 그렇다는 말은 DFS 진입지점에 따라 다이나믹 테이블의 값이 변한다는 말인데, 하나밖에 없는 테스트 케이스로는 왜 변하는지 원인을 찾을 수 가 없습니다. 어떤 케이스, 어떤 반례에서 다이나믹 테이블을 루프 밖으로 꺼냈을때 DFS의 진입지점마다 다이나믹 테이블의 값이 변하게 되나요? https://www.acmicpc.net/source/share/aa38ef94ed944749bfc167ca340deca4 1줄 요약: 다이나믹 테이블의 선언을 38번째 줄에 해도 돌아갈것 같은데 안돌아가고 40번째 줄에 하면 돌아가는데 이유를 모르겠음.