https://www.inflearn.com/community/questions/48156/aop-timetraceaop-%EB%A5%BC-component-%EB%A1%9C-%EC%84%A0%EC%96%B8-vs-springconfig%EC%97%90-bean%EC%9C%BC%EB%A1%9C-%EB%93%B1%EB%A1%9D @Configuration 파일 내에서 @Bean 어노테이션을 사용하여 TimeTraceAop.java 파일을 빈으로 등록하는 경우, 참조 문제가 발생하는 부분에 대해 위 다른 분이 작성해주신 글을 통해 이해가 잘 갔는데요, 그럼 @Component 어노테이션을 활용하여 등록하는 경우에는 동일한 @Around 구문을 통해 명시된 @Around("execution(* hello.hellospring..*(..))")를 사용하는 경우 문제가 발생하지 않는 것인지 궁금합니다.
submit.to_csv("result.csv", index=False)를 실행시킨 다음 코드를 지우고 print(submit.to_csv("result.csv", index=False)) 실행시켜 버린 후 제출했는데 이렇게 해도 정상적으로 제출될까요?ㅠㅠㅠ 너무 찜찜합니다
안녕하세요. 양질의 강의로 빠른 기간 내에 시험을 보고 온 것 같습니다. 다름이 아니고, 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 파일이 잘 생성되었을지 가 알고 싶습니다. 감사합니다.
https://drive.google.com/file/d/1M-NYH5etfTZPV5kMZzuiOWaBjA7bR3XR/view?usp=sharing 위는 제 프로젝트 파일입니다 강의 파일에 나와있는부분을 복붙해도 오류나고 testImplementation("junit:junit:4.13.2") 이렇게 해도 오류납니다. Assert 부터 안되는데 뭐가 잘못된걸까요?
배운거를 적용하면서 쿼리 개선을 하고 있었는데, 혼자 해결해보려고 했으나 컬렉션 조회가 같이 섞이면서 이해가 잘 안 되는 것 같아 질문을 남기게 되었습니다. 게시글 목록을 불러올때 태그이름 리스트를 같이 필요하기 때문에 관련 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에 대한 SQL Injection 에 관한 내용을 보고 김영한님의 생각이 궁금합니다! 그리고 querydsl 지원중단 얘기를 보기도 해서 이런 취약점이 나올 때마다 빠른 대응이 되는지 역시 궁금합니다!! https://www.csirt.sk/querydsl-java-library-vulnerability-permits-sql-hql-injection.html
데이터 핸들링을 위한 판다스 기초1 강의 중 type(df)를 적으면 pandas.core.frame.DataFrame 말고도 뭔가 가 뜹니다. 그냥 print(type(df))를 적으면 아래와 같은게 안뜨는데, 무슨 에러인가요? pandas.core.frame.DataFrame def __init__(data=None, index: Axes | None=None, columns: Axes | None=None, dtype: Dtype | None=None, copy: bool | None=None) -> None /usr/local/lib/python3.10/dist-packages/pandas/core/frame.pyTwo-dimensional, size-mutable, potentially heterogeneous tabular data. Data structure also contains labeled axes (rows and columns). Arithmetic operations align on both row and column labels. Can be thought of as a dict-like container for Series objects. The primary
ROC AUC로 평가 할때, 예측을 확률로 하는 이유가 있을까요? 그냥 0또는 1로 예측하면 안될까요? 여자 0, 남자 1로 성별이 정해지면 여자일 확률을 예측하는지, 남자일 확률을 예측하는지 문제에서 정의되지 않았는데, 강사님께서 남자일 확률을 예측하는 것으로 정한 이유가 궁금합니다.
질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요. 질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다. 시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다. 오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-) 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. postgresql 을 다른 서버에 연결하여 사용중인데요. runserver 시에는 정상 작동하나 강사님이 올려주신 pytest를 똑같이 설정하고 실행하면, schema가 없어서 table을 생성할 수 없다는 오류가 발생합니다. MigrationSchemaMissing("Unable to create the django_migrations table 일단은 settings.py를 sqlite3로 변경하여 정상 작동은 시켰는데요 어떻게 수정할 수 있을까요? 또한 올려주신 소스코드에서 import factory from accounts.models import User class UserFactory(factory.django.DjangoModelFactory): class Meta: model = User django_get_or_create = ("username",) username = factory.Sequence(lambda n: f"user{n}") email = factory.LazyAttribute(lambda user: f"{user.username}@example.com") # UserFactory 인스턴스 생성 시에, 암호 입력을 지원하기 위함 # raw_password 필드가 아니라 password 필드로 지정하면, 암호화없이 입력값 그대로 저장됩니다. raw_password = factory.Faker("password") @classmethod def _create(cls, model_class, *args, **kwargs): # raw_password 필드값을 암호화하여 password 필드에 저장합니다. # User 모델에는 raw_password 이름의 필드가 없으므로 kwargs 사전에서 제거해줘야만 합니다. raw_password = kwargs.pop("raw_password", None) if raw_password: kwargs["password"] = make_password(raw_password) return super()._create(model_class, *args, **kwargs) make_password 부분이 import 되어 있지 않습니다. git에서는 수정되어 있는 모양인데 참고 부탁드립니다.
현재는 train.csv로 출제되기에, 인코딩 전 타겟데이터를 분리해서 target = train.pop('col') 하잖아요? 만약 x_train, y_train 분리 시, 인코딩 전에 (혹은 아무 과정에서나) target = y_train.pop('col') 처럼 분리해도 되죠? 이 과정이 모델링 시, model.fit(x_train, y_train['col']) 과 마찬가지인 것이죠??