안녕하세요 ! 섹션 8 듣는 중에 질문 드립니다. 제가 Class의 개념이 조금 부족한 것 같아서 이해를 잘 못했을 수 있습니다. Class Method는 instance의 상태를 변화시킨다고 말씀주셨는데, instance가 여러 개인 경우, 특정 instance만 변경하고 싶을 때는 해당 instance를 지정해주면 되는 걸까요 ? Class Method는 주로 어떨 때 사용하나요 ? Class 내에서 이미 선언된 instance 값을 변경시킬 일이 어떤게 있나 궁금합니다.
안녕하세요 강사님 강의 잘 보고 있습니다. spark 관련된 질문을 드려도 될까요..? 도커에 spark 컨테이너를 띄워서 airflow의 bash operator로 spark-submit을 해보려 하는데 로그가 다음과 같이 나오면서 spark-submit이 안됩니다. compose 파일도 network 설정을 다시했고, docker network inspect 로 확인해보니 잘 연결된 것이 확인됐습니다. spark submit도 master container 내부에서 잘 실행이되는 상황입니다. shell 파일을 이런식으로 작성한다고 해서 airflow dags로 spark-submit을 할 수 있는건 아닌가요 ? #!/bin/bash script=$1 echo "${script}" echo "start spark submit with bash operator" spark-submit \ --master spark://spark-master:7077 \ ${script}
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 9:54쯤에 질문이 있습니다 val 또는 fun으로 확장함수를 만들 수 있는데.. 두가지 방식의 차이점이 있나요? 또는 이펙티브 코틀린 등등에서 더 선호하는 방식이 있는지, 안티패턴이나 best practice가 있다면 알고 싶습니다. 차이점이 있다면 확장함수에 val을 사용한 경우 custom getter방식으로 구현되고 호출부에 ()가 없는 반면, fun키워드를 사용한 경우에는 get()이 사용되지 않고 호출부에 ()를 해줘야 되는 것 같습니다 1번방식: 강의에서 나온대로 val _ 정의부: val List<Fruit>.samePriceFilter: List<Fruit> get() = this.filter(Fruit::isSamePrice) _ 호출부: val samePriceFruits2 = fruitsInList.flatMap { it.samePriceFilter } 2번방식: fun으로 사용 _ 정의부: fun List<Fruit>.samePriceFilter(): List<Fruit> { return this.filter(Fruit::isSamePrice) } _ 호출부: val samePriceFruits2 = fruitsInList.flatMap { it.samePriceFilter() }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
검사를 눌러 개발자도구로 가면 label이 선택되어... .input-checkbox > label 로 잘가져오며 잘 테스트가 됩니다. 따라하다 보니 궁금한점이 있습니다. checkbox에 클릭을 하는게 목적인데 저는 이렇게 한번 시도해 봤습니다. checkboxes = driver.find_elements(By.CSS_SELECTOR, "input[type='checkbox']") # 각 체크박스 클릭 for checkbox in checkboxes: if not checkbox.is _selected(): checkbox.click () time.sleep(0.5) # 잠시 대기 왜 label.click()만 되는지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] https://www.inflearn.com/questions/137740/orphanremoval%EA%B3%BC-cascade%EC%9D%98-%EA%B4%80%EA%B3%84 위 질문을 바탕으로 정리하자면 부모 엔티티에 있는 자식 엔티티 컬렉션에서 자식 객체를 제거하면 고아객체가 되므로 원래 JPA 스펙상 JPA 스펙상 원칙적으로 CascadeType.PERSIST이 없어도 orphanRemoval만으로 자식 삭제하는 DELETE SQL이 동작하지만 Hibernate 구현체 버그(?)로 인해 동작을 안하는 거다. 라고 정리하면 될까요? 자문자답 ============= 2024년 12월 기준으로 하이버네이트 버전을 최신으로 바꿔서 실행했는데 orphanRemoval=true만 적용해도 DELETE SQL가 정상 동작하는 것으로 보입니다. Hibernate: /* insert for hellojpa.Parent */insert into Parent (name, id) values (?, ?) Hibernate: /* insert for hellojpa.Child */insert into Child (name, parent_id, id) values (?, ?, ?) Hibernate: /* insert for hellojpa.Child */insert into Child (name, parent_id, id) values (?, ?, ?) Hibernate: select p1_0.id, p1_0.name from Parent p1_0 where p1_0.id=? Hibernate: select cl1_0.parent_id, cl1_0.id, cl1_0.name from Child cl1_0 where cl1_0.parent_id=? Hibernate: /* delete for hellojpa.Child */delete from Child where id=? ============= 수정된 pom.xml <!-- JPA 하이버네이트 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>6.6.3.Final</version> </dependency> 수정하고 Maven reload 버튼을 눌러야합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 인터럽트 시작1 부분 강사님 설명 예제중에서 갑자기 궁금해서 질문드립니다.. 제가 궁금한부분은 public class ThreadStopMainV1 { public static void main(String[] args){ MyTask task = new MyTask(); Thread thread = new Thread(task, "work"); thread.start(); } static class MyTask implements Runnable { ...................................... } } 여기서 질문 왜 정적내부클래스 MyTask()에 new를 써서 만드나요?? 정적 내부 클래스는 외부 클래스의 정적 멤버처럼 동작하기 때문에, 외부 클래스의 이름을 통해 접근해야 하는거 아닌가요?. 따라서 new ThreadStopMainV1.MyTask() 형태로 생성해야하는거 아닌가요?? 정적내부클래스도 바로 다이렉트로 new MyTask() 로 생성해도 되는건가요 ?? 너무궁금합니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 영한님! 강의 잘 듣고 있습니다. JPA 더티 체킹 관련해서 질문이 있습니다., 현재 매일 외부로부터 몇천~몇만 건의 데이터를 받아서 인터페이스 테이블에 해당 데이터의 키 값에 해당하는 데이터가 없으면 삽입, 이미 있으면, 키 값을 제외한 해당 데이터와 인터페이스 테이블에 있는 데이터의 컬럼들을 비교해서 update 치는 로직으로 구현했습니다. (해당 정보는 변경될 일이 거의 없기 때문에 매일 테이블을 delete insert 하는 방식보다는 효율적인 방식이라고 생각되어 채택하였습니다.) 로직은 간략하게 다음과 비슷합니다. (실제 컬럼 수는 훨씬 많습니다.) List<UserInfoRequest> users = objectMapper.readValue(decryptedData, objectMapper.getTypeFactory().constructCollectionType(List.class,UserInfoRequest.class)); List<UserInterfaceEntity> existingUsers = UserInterfaceRepository.findAll(); List<UserInterfaceEntity> userListToAdd = new ArrayList<>(); for (UserInfoRequest request : users) { UserInterfaceEntity existingUser = existingUsers.stream() .filter(user -> user.getEmail().equals(request.getEmail())) .findFirst() .orElse(null); /** 기존 인터페이스 테이블에 존재하지 않는 사용자 정보이면 */ if (existingUser == null) { UserInterfaceEntity newUser = UserInterfaceEntity.builder() .email(request.getEmail()) -- PK .name(request.getName()) .address(request.getAddress)) UserInterfaceRepository.save(newUser) } else { existingUser.updateUserInfo(request); } } // 엔티티 클래스 public void updateUserInfo(UserInfoRequest request){ this.name = request.getName(); this.address = request.getAddress(); '''실제로는 컬럼수가 더 많습니다''' } 저는 이러한 상황에서 existingUser가 존재하면 request로 들어오는 데이터가 아예 변경이 되지 않았을 수도 있고, 데이터의 어떤 컬럼 값이 변경됐을 지 모르기 때문에 일일이 if문으로 비교하는 것보다는 모든 컬럼을 update 하는 방식을 취했고, 제가 기대했던 결과는 같은 값이 들어오면 DB에 update 쿼리가 나가지 않는 것을 기대했습니다. 그런데, 실제로 existingUser가 존재하고, request의 모든 필드값과 exsitingUser 의 모든 필드 값이 다 같은 건에 대해서도 update 쿼리가 DB에 나가더라구요. JPA 더티체킹의 경우 최초 조회한 시점에 스냅샷을 떠두고, 커밋 시점에 변경된 엔티티에 대해서만 UPDATE 쿼리가 나가는 것으로 알고 있는데, 왜 필드 값이 실제로는 변경되지 않았음에도 UPDATE 쿼리가 나가는 것일까요? 이 부분에서 실제로 필드 값이 변경된 경우에만 update 쿼리를 실행하고 변경되지 않은 경우에는 update 쿼리를 막으려면 if문을 일일이 필드마다 비교해야하는 로직을 추가하는 것 말고는 다른 좋은 방법이 없을까해서 질문 남깁니다..
선생님 안녕하세요. 우선 오늘 최종 합격하여 소식을 전하게 되었습니다. 다만, 다름이 아니라 점수가 좀 턱걸이인지라.. 담주에 예정된 최종 결과에서 합격예정이 불합격으로 바뀌는 사례가 있는지 궁금합니다. 제가 알기로는 불합격 사례에서 합격 한 사례는 있는 것으로 아는데 반대 사례가 있는지요?? 우선 정말 감사드립니다. 큰 도움이 되었습니다.
금일 빅분기 실기 가체점 결과가 올라와서 확인했는데... 합격했습니다. 1교시가 너무 어렵게 나와서 힘들었었는데... 강사님이 시험전에 2교시->3교시->1교시 순으로 준비를 하라는 글을 보고 많이 도움이 됐습니다. 덕분에 2차시험 2번째에 합격해서 감사드립니다. 회사일 때문에 강사님이 올려주신강의와 모의고사 풀이를 4번이상 반복해서 풀어본거, 마이드 맵을 기반으로 리마인드 해본 것이 많이 도움 됐습니다. 감사합니다.~~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. JAVA로 COS Pro 2급을 따고 싶은데 이 입문강의를 들으면 가능할까요? C언어랑 python은 좀 다뤄봤습니다.
공부 진행에 전혀 문제는 없지만 자그마한 도움이 되고 싶어 말씀드려요 9. 채팅 프로그램.pdf CommandManagerV2 수정 필요한 부분 : public static final String DELIMITER = " | "; 수정 후 : private static final String DELIMITER = " \\| "; CommandManagerV3, CommandManagerV4 수정 필요한 부분 : public static final String DELIMITER = "\\|"; 수정 후 : private static final String DELIMITER = "\\|"; 11. HTTP 서버 만들기.pdf HttpResponse 수정 필요한 부분 : public void setStatus (int statusCode) { this.statusCode = statusCode; } 수정 후 : public void setStatusCode (int statusCode) { this.statusCode = statusCode; } HttpRequestHandlerV4 수정 필요한 부분 : private static void notFound(HttpResponse response) { response. setStatus (404); response.writeBody("<h1>404 페이지를 찾을 수 없습니다.</h1>"); } 수정 후 : private static void notFound(HttpResponse response) { response. setStatusCode (404); response.writeBody("<h1>404 페이지를 찾을 수 없습니다.</h1>"); } pdf 파일에서 setStatus 로 쓰다가 뒤의 커맨드 패턴 NotFoundServlet, InternalErrorServlet 에서는 setStatusCode로 메서드 이름을 사용하고 있어서 강의 내용과 동일하게 setStatusCode로 이름 통일을 시켜봤습니다 ServerMainV5 임포트 추가 import was.v5.servlet.HomeServlet; import was.v5.servlet.SearchServlet; import was.v5.servlet.Site1Servlet; import was.v5.servlet.Site2Servlet;
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요~! 잔재미코딩님을 열심히 믿고 따라가고 있는 수강생입니다. 다름이 아니라 함수 사용에서 print와 return의 차이점이 잘 이해가 되지 않아서요. def cal(a, b, c): if c == '+' : return a + b elif c == '*' : return a * b else : return 0 예를 들면 위 함수 코드를 실행하고 data = cal(2, 3, "*") print(data) 를 실행하면 바로 6이 나오지만 위의 코드에서 return대신 print()를 사용하면 data = cal(2, 3, "*") print(data) 를 실행 시 6 None 이 나온다는 차이점은 느꼈습니다. 근데 왜 이런것인지 잘 이해가 안돼요 ㅠㅠ 정확한 둘의 사용상 차이점이 무엇인가요?