묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬과 딥러닝을 활용한 시계열 자료 처리
자문자답 - Pandas(groupby) 관련
실습 파트에 Groupby 함수가 적용이 안될 시group_variables = ['Order Date', 'Category'] desired = df.select_dtypes(['int16', 'int32', 'int64', 'float16', 'float32', 'float64']).columns grouped_df = df.groupby(group_variables)[desired].sum() grouped_df이렇게 숫자데이터만 잡아서 해보면 되실거에요
-
미해결코딩 몰라도 OK! CursorAI로 시작하는 개발 생활 (웹/초급)
insert버튼이 안나오는데 뭐가 문제일까요?
안녕하세요. 포모도로 앱만드는 첫번째 부터 막히네요 ㅠㅠ일단 insert버튼이 생기지 않는데 뭐가 문제인걸까요? 이런식으로만 뜨네요 계속해봐도 ㅠㅠ PS C:\Users\your_\OneDrive\바탕 화면\다시> npx create-react-app . --template typescript && npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -pPS C:\Users\your_\OneDrive\바탕 화면\다시> npx create-react-app . --template typescript && npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p위치 줄:1 문자:46+ npx create-react-app . --template typescript && npm install -D tailwi ...+ ~~'&&' 토큰은 이 버전에서 올바른 문 구분 기호가 아닙니다.위치 줄:1 문자:97+ ... escript && npm install -D tailwindcss postcss autoprefixer && npx ta i ...+ ~~ '&&' 토큰은 이 버전에서 올바른 문 구분 기호가 아닙니다.위치 줄:1 문자:205+ ... ive\바탕 화면\다시> npx create-react-app . --template typescript && npm ins ...+ ~~ '&&' 토큰은 이 버전에서 올바른 문 구분 기호가 아닙니다.위치 줄:1 문자:256+ ... escript && npm install -D tailwindcss postcss autoprefixer && npx ta i ...+ ~~ '&&' 토큰은 이 버전에서 올바른 문 구분 기호가 아닙니다. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRec ordException + FullyQualifiedErrorId : InvalidEndOfLinePS C:\Users\your_\OneDrive\바탕 화면\다시> 어떤 프로그램을 어디서 어떻게 깔아야 하는지부터, 어떻게 설정을 하는지물론 정리를 해주셨지만 순서도 모르겠고 적용하는것도 어려운 거 같아요. 처음 강의부터 아예 같이 시작을 하고 설명을 들었으면, 오류가 안났을거같은데수업관련 파일은 또 따로 봐서 공부를 해야하고, 알아서 다 설치하고 공부한다음에강의를 들어야해서그런지 잘 이해가 안가는거같아요..ㅠㅠ오류가 난게 제가 뭐 프로그램을 잘못설치해서그런건지, 아니면 설정을 뭔가 잘못해서 그런건지잘모르겠네요 답변주시면 감사하겠습니다..
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
emit() broadcast.emit() 질문있습니다
두 함수의 차이는 해당 메시지를 발행하는 client 를 포함하고 않하고로 알고 있습니다. 그럴때 socket.emit('user_conneted', username);다음 코드를 통해서도 상대방에게 보여진다고 생각했는데 실제로는 메시지 발행 client 의 console에만 나오는 것을 확인했습니다. 왜 상대방쪽의 console에서는 메시지가 보이지 않는지 궁금합니다
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
이번 9회 시험 2유형 파일 제출
submit.to_csv("result.csv", index=False)를 실행시킨 다음 코드를 지우고 print(submit.to_csv("result.csv", index=False)) 실행시켜 버린 후 제출했는데 이렇게 해도 정상적으로 제출될까요?ㅠㅠㅠ 너무 찜찜합니다
-
해결됨실전! FastAPI 입문
Internal Server Error
이렇게 인터프리터랑 main.py 파일을 알맞게 사용하는데, Internal Server Error가 뜨고 컴퓨터를 재부팅하면 정상적으로 실행이 되는데 혹시 무슨 오류인지 알 수 있을까요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
빅분기 2유형 결과 파일 제출
안녕하세요. 양질의 강의로 빠른 기간 내에 시험을 보고 온 것 같습니다. 다름이 아니고, 2유형 결과를 제출하면서 제가 정상적으로 한 게 맞는지 궁금해서요! # 결과 파일 제출1) submit = pd.DataFrame({ 'pred' : pred }).to_csv("result.csv", index=False) 위의 코드로 제출을 해버렸습니다. 제출 전에 pred 결과 확인을 위해 pd.read_csv("result.csv")로는 데이터가 잘 불러와졌습니다.(submit 변수를 따로 호출하지 않음.) 연습 환경 (코랩)에서는 아래 형식으로 테스트를 했었는데요. 2) submit = pd.DataFrame({ 'pred' : pred })submit.to_csv("result.csv", index=False) 이번에는 1) 방식으로 파일을 제출해 버려서, 혹시 시험 환경에서 result.csv 파일이 잘 생성되었을지가 알고 싶습니다. 감사합니다.
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
9회차 시험 풀이
먼저 너무 좋은 강의 덕분에 시험 잘 치고 왔습니다! 감사합니다 !혹시 9회차 풀이는 언제쯤 올라올까요 ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
단축키 작동 안됨
단축키 설정을 했는데 tdd 도 안되고 sout 도 안되는 이유는 무엇일까요? 참고로 build.gradle 파일은 아래와 같습니다plugins { id 'java' id 'org.springframework.boot' version '3.4.0' id 'io.spring.dependency-management' version '1.1.6' } group = 'jpabook' 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-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } testImplementation 'junit:junit:4.13.2' } tasks.withType(Test) { useJUnitPlatform() }
-
미해결반응형 웹사이트 포트폴리오(Architecture Agency)
full reload 질문
선생님 처럼 영상을 보고 css full reload 를 설정 했는데 체크를 해제하면 css 수정 시 안올라가고 체크를 하면 올라 갑니다 또한 html 수정시 마다 매번 위(무한스크롤링)로 올라 갑니다. 해결방법이 있나요?
-
해결됨실무에 바로 적용하는 프런트엔드 테스트 - 2부. 테스트 심화: 시각적 회귀・E2E 테스트
Retry-ability와 커스텀 커맨드, 커스텀 쿼리 질문
안녕하세요 선생님 강의 잘 듣고 있습니다. 이번 강의에서 질문이 있습니다! 1. 커스텀 쿼리도 Retry-ability 지원되고 커스텀 쿼리 안에 커맨드도 Retry-ability가 지원되면 n의 m제곱 번의 재시도가 발생하는 것일까요? 2. 커스텀 커맨드와 커스텀 쿼리 중에 뭘 사용할 것인지는 Retry-ability 지원 유무와 체이닝을 기준으로 선택하면 될까요? 예시코드를 봤을 때 getCardButton와getProductCardByIndex 둘 다 DOM 요소를 조회해서 subject를 리턴하여 체이닝을 통해 후속 작업을 하는 것처럼 보이는데 왜 getProductCardByIndex는 커스텀 커맨드로 작성하는지 잘 모르겠습니다..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
junit 안됨
https://drive.google.com/file/d/1M-NYH5etfTZPV5kMZzuiOWaBjA7bR3XR/view?usp=sharing위는 제 프로젝트 파일입니다 강의 파일에 나와있는부분을 복붙해도 오류나고testImplementation("junit:junit:4.13.2")이렇게 해도 오류납니다.Assert 부터 안되는데 뭐가 잘못된걸까요?
-
미해결하루만에 해외 구매대행 파악하기
노하우 공유
리뷰 후 강사님의 노하우는 어떻게 받을 수 있나요?
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
과연 그 상황이 같을까요?
좀비님의 노력과 업적은 훌륭하다고 생각하지만 과연 다른 사람이 잘하는 것을 나도 잘할 수 있다고 막연히 믿어도 될지는 의문입니다
-
미해결Java 마이크로서비스(MSA) 프로젝트 실습
SpringCloud Gateway 연동
https://github.dev/ishrhrl39/3-3.Microservice강의중 유레카 대쉬보드에는 아이템 서비스가 잘 표현되는데 왜 postman 요청은 404가 뜨는지 원인을 못찾겠네요..라우팅쪽 문제인것같은데..
-
해결됨실전 연습으로 익히는 고급 타입스크립트 기술
행운동전!
안녕하세요 타입스크립트에 대해 몰랐던 사실을 알고 공부하고있습니다.꽝인지 에러인지?!몰라서 일단 남겨봅니다좋은 강의감사합니다!
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
r2_score
r2_score는 확률값이 높으면 높을수록 좋은건가요?
-
미해결
컬렉션 조회 시 영속성 컨텍스트
게시글 프로젝트를 하다가 컬렉션 조회 관련 영속성 컨텍스트가 이해가 가지 않는 부분이 있어서 질문을 드리게 되었습니다. getRecommedPosts2메서드에서 findAllByMemePostId로 태그 정보를 미리 가져오면 영속성 컨텍스트에 MemePostTag와 Tag가 같이 불려와지니까 이후에 memePost.getTagNames()를 했을때 따로 쿼리가 나가지 않을 거라고 생각했는데, 별도로 또 쿼리가 나가는 것을 확인했습니다.그래서 getRecommedPosts3메서드에서 findByIdWithTags와 같이 MemePostTag와 Tag를 같이 fetch join하면 따로 쿼리가 나가지 않더라구요 혹시 이유가 무엇인가요? 제가 어떤 개념을 잘 모르는 것 같은데 뭘 모르는 것인지 모르겠어요. 저는 getTagNames()를 하면 memePostTags 컬렉션이 필요할때 id로 영속성 컨텍스트에 있는지 조회한다고 생각해서 필요한 엔티티들을 미리 불러와 놓으면 따로 쿼리가 나가지 않을 것이라고 생각했습니다. public List<MemePostSummaryResponse> getRecommendedPosts2(Long memePostId, int size) { MemePost memePost = getMemePostById(memePostId); //fetch join으로 memePost의 태그 정보 미리 가져오기 memePostTagRepository.findAllByMemePostId(memePost.getId()); //tag 이름으로 관련있는 포스트 찾기 List<MemePost> recommendedPosts = memePostRepository.findRelatedPostsByTagNames(memePost.getTagNames(), memePostId, PageRequest.of(0, size)); memePostTagRepository.findTagsByMemePostIdIn(getPostIds(recommendedPosts)); return recommendedPosts.stream() .map(mp -> new MemePostSummaryResponse(mp, false, mp.getTagNames())) .toList(); } public interface MemePostTagRepository extends JpaRepository<MemePostTag, Long> { @EntityGraph(attributePaths = {"tag"}) List<MemePostTag> findAllByMemePostId(Long postId); }public class MemePost { public List<String> getTagNames() { return memePostTags.stream() .map(mpt -> mpt.getTag().getName()) .toList(); } }public List<MemePostSummaryResponse> getRecommendedPosts3(Long memePostId, int size) { MemePost memePost = memePostRepository.findByIdWithTags(memePostId) .orElseThrow(() -> new FindMyMemeException(ErrorCode.NOT_FOUND_MEME_POST)); //fetch join으로 memePost의 태그 정보 미리 가져오기 //tag 이름으로 관련있는 포스트 찾기 List<MemePost> recommendedPosts = memePostRepository.findRelatedPostsByTagNames(memePost.getTagNames(), memePostId, PageRequest.of(0, size)); memePostRepository.findAllWithTagsInPostIds(getPostIds(recommendedPosts)); return recommendedPosts.stream() .map(mp -> new MemePostSummaryResponse(mp, false, mp.getTagNames())) .toList(); }@Query("select distinct m from MemePost m " + "left join fetch m.memePostTags mpt " + "left join fetch mpt.tag t " + "where m.id = :id and m.deletedAt is null") Optional<MemePost> findByIdWithTags(@Param("id") Long id);
-
해결됨실전! 스프링 데이터 JPA
컬렉션 조회 관련
배운거를 적용하면서 쿼리 개선을 하고 있었는데, 혼자 해결해보려고 했으나 컬렉션 조회가 같이 섞이면서 이해가 잘 안 되는 것 같아 질문을 남기게 되었습니다.게시글 목록을 불러올때 태그이름 리스트를 같이 필요하기 때문에 관련 memePostTags와 Tag까지 같이 조회를 해야하는 상황입니다.테이블 관계가 MemePost 1 : N MemePostTag 1 : 1 Tag 이렇게 되어있을때getMemePost5 메서드와 getMemePost6메서드 둘 중에 어느 것이 더 나은 방법인지, 아니면 더 나은 다른 방법이 있는지 궁금합니다.getMemePost5의 경우는 MemePostTagRepository에서 Tag까지 fetch join으로 불러오고, Map 객체에 postId를 key로 저장해서 태그 이름을 조회합니다.getMemePost6의 경우는 페이징으로 조회한 후 postIds를 in절로 postTag와 tag를 fetch join합니다. 컬렉션 조회의 경우 페이징을 안할 경우 fetch join으로, 페이징을 할 경우 batch size로 하라는 것까지는 이해가 되었는데, 이 경우에는 postTags를 batch size로 가져오고, 그에 다한 tag도 batchsize로 가져와 추가로 두번의 쿼리가 더 나가게 되어서 다른 방법을 고안해내다가 점점 미궁으로 빠지는 것 같아서 질문을 남기게 되었습니다 😂 public Slice<MemePostSummaryResponse> getMemePosts5(int page, int size, MemePostSort postSort, Long userId) { Pageable pageable = PageRequest.of(page, size, postSort.toSort()); Slice<MemePost> memePostSlice = memePostRepository.findSliceAll(pageable); List<Long> postIds = getPostIds(memePostSlice.getContent()); // MemePostTag와 Tag를 한번에 fetch join 하나의 쿼리로 하되, MemePostTagRepository에서 entitygraph를 통해 fetch join Map<Long, List<String>> postTagNames = memePostTagRepository.findTagsByMemePostIdIn(postIds) .stream() .collect(groupingBy(tag -> tag.getMemePost().getId(), mapping(tag -> tag.getTag().getName(), toList()))); //좋아요도 하나의 쿼리로 Set<Long> likedPostIds = new HashSet<>(memePostRepository.findLikedPostIds(postIds, user)); List<MemePostSummaryResponse> responses = memePostSlice.getContent().stream() .map(mp -> new MemePostSummaryResponse( mp, likedPostIds.contains(mp.getId()), postTagNames.getOrDefault(mp.getId(), Collections.emptyList()) )) .toList(); return new SliceImpl<>(responses, pageable, memePostSlice.hasNext()); } public Slice<MemePostSummaryResponse> getMemePosts6(int page, int size, MemePostSort postSort, Long userId) { Pageable pageable = PageRequest.of(page, size, postSort.toSort()); Slice<MemePost> memePostSlice = memePostRepository.findSliceAll(pageable); List<Long> postIds = getPostIds(memePostSlice.getContent()); // MemePostTag와 Tag를 한번에 fetch join memePostRepository.findAllWithTagsInPostIds(postIds); //좋아요도 하나의 쿼리로 Set<Long> likedPostIds = new HashSet<>(memePostRepository.findLikedPostIds(postIds, user)); List<MemePostSummaryResponse> responses = memePostSlice.getContent().stream() .map(mp -> new MemePostSummaryResponse( mp, likedPostIds.contains(mp.getId()), mp.getTagNames() )) .toList(); return new SliceImpl<>(responses, pageable, memePostSlice.hasNext()); } public interface MemePostRepository extends JpaRepository<MemePost, Long>, MemePostRepositoryCustom { @Query("SELECT mp FROM MemePost mp where mp.deletedAt IS NULL") Slice<MemePost> findSliceAll(Pageable pageable); @Query("SELECT mp.id FROM MemePost mp " + "JOIN MemePostLike mpl ON mpl.memePost = mp " + "WHERE mp.id IN :postIds AND mpl.user = :user") List<Long> findLikedPostIds(@Param("postIds") List<Long> postIds, @Param("user") User user); @Query("SELECT mp FROM MemePost mp " + "LEFT JOIN FETCH mp.memePostTags mpt " + "LEFT JOIN FETCH mpt.tag " + "WHERE mp.id In :postIds") List<MemePost> findAllWithTagsInPostIds(@Param("postIds") List<Long> postIds); } public interface MemePostTagRepository extends JpaRepository<MemePostTag, Long> { @EntityGraph(attributePaths = {"tag"}) List<MemePostTag> findAllByMemePostId(Long postId); @EntityGraph(attributePaths = {"tag"}) List<MemePostTag> findTagsByMemePostIdIn(List<Long> memePostIds); } public class MemePost { public List<String> getTagNames() { return memePostTags.stream() .map(mpt -> mpt.getTag().getName()) .toList(); } }
-
미해결실전! Querydsl
Querydsl 취약점 관련 질문입니다.
안녕하세요. 최근 querydsl 공부를 시작하려고 정보를 찾던 중 querydsl에 대한 SQL Injection 에 관한 내용을 보고 김영한님의 생각이 궁금합니다!그리고 querydsl 지원중단 얘기를 보기도 해서 이런 취약점이 나올 때마다 빠른 대응이 되는지 역시 궁금합니다!! https://www.csirt.sk/querydsl-java-library-vulnerability-permits-sql-hql-injection.html
-
미해결스프링 부트 - 핵심 원리와 활용
스프링 컨테이너 등록 스프링 라이브러리 오류
가이드대로 스프링 mvc를 추가하는데 추가가 되지 않아서 이후 진행이 안되고 있습니다. 코드를 작성하고 저장하면 자동으로 라이브러리가 생성되는 방식이 아닌가요? 어떻게 해야하는지 알려주시면 감사하겠습니다.