메서드 추출은 되는데 IntelliJ IDEA 2023.2.2 Ultimate (컴퓨터는 맥북) 해당 버전 사용중입니다 중복된 메서드일때 intellij 에서 Extract Parameters to Replace Duplicate (10:34 초부분) 이건 안되네요. 인텔리제이 버전 업하면서 그런거같은데 혹시 해당 화면처럼 하는 팁 있을까요? package jpabook.jpashop; import jakarta.annotation.PostConstruct; import jakarta.persistence.EntityManager; import jpabook.jpashop.domain.*; import jpabook.jpashop.domain.item.Book; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; /** * 총 주문 2개 * userA * * JPA1 BOOK * * JPA2 BOOK * userB * * SPRING1 BOOK * * SPRING2 BOOK */ @Component @RequiredArgsConstructor public class initDb { private final InitService initService; @PostConstruct public void init() { initService.dbInit1(); // 여기에 코드들 다 넣는 경우는 작동하지 않는다 initService.dbInit2(); } @Component @Transactional @RequiredArgsConstructor static class InitService { private final EntityManager em; public void dbInit1() { Member member = new Member(); member.setName("userA"); member.setAddress(new Address("서울", "1", "1111")); em.persist(member); Book book1 = new Book(); book1.setName("JPA1 BOOK"); book1.setPrice(10000); book1.setStockQuantity(100); em.persist(book1); Book book2 = new Book(); book2.setName("JPA2 BOOK"); book2.setPrice(20000); book2.setStockQuantity(100); em.persist(book2); OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1); OrderItem orderItem2 = OrderItem.createOrderItem(book1, 20000, 2); Delivery delivery = new Delivery(); delivery.setAddress(member.getAddress()); Order order = Order.createOrder(member, delivery, orderItem1, orderItem2);// ... 되어있으면 여러개 넘길 수 있다 em.persist(order); } public void dbInit2() { Member member = new Member(); member.setName("userB"); member.setAddress(new Address("진주", "2", "2222")); em.persist(member); Book book1 = new Book(); book1.setName("JPA1 BOOK"); book1.setPrice(10000); book1.setStockQuantity(100); em.persist(book1); Book book2 = new Book(); book2.setName("JPA2 BOOK"); book2.setPrice(20000); book2.setStockQuantity(100); em.persist(book2); OrderItem orderItem1 = OrderItem.createOrderItem(book1, 10000, 1); OrderItem orderItem2 = OrderItem.createOrderItem(book1, 20000, 2); Delivery delivery = new Delivery(); delivery.setAddress(member.getAddress()); Order order = Order.createOrder(member, delivery, orderItem1, orderItem2);// ... 되어있으면 여러개 넘길 수 있다 em.persist(order); } } } 전체코드고 아래 부분을 메서드 추출하면 중복 체크하고 매개변수 넘기는 방식으로는 안되네요.. Member member = new Member(); member.setName("userA"); member.setAddress(new Address("서울", "1", "1111")); em.persist(member);
안녕하세요 강사님 proxy 서버에서 web 서버로부터 받은 파일을 검사 후 안전한 파일이면 클라이언트에게 전달한다 해주셨는데, 일부 스트림만 봐서 이 파일이 안전한지 알 수 있나요? 아니면 web 서버로부터 패킷을 전부 받아 조립 하여 확인 후 다시 쪼개어 클라이언트에게 하나 하나 보내주는 걸까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 학습내용을 확장하는 중 이슈가 있어서 문의드립니다. 윈도우 OS 타겟으로 개발 중이며, 특정폴더(origin)에 파일이 생성되는 event 발생 시 다른 특정폴더(target)로 파일을 복사하는 로직을 구현했습니다. 이슈는, 용량이 1kb로 작은 파일일 경우 잘 작동하지만, 용량이 몇mb 정도로 큰파일은 아래와 같은 예외가 발생하며 복사가 되지 않습니다. 예외는 다음과 같습니다. Unhandled Exception: PathAccessException: Cannot copy file to 'C:\0.st\target\10.tdms', path = 'C:\0.st\origin\10.tdms' (OS Error: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. , errno = 32) #0 _checkForErrorResponse (dart:io/common.dart:55:9) #1 File.copy.<anonymous closure> (dart:io/fileimpl.dart:356:7) <asynchronous suspension> 제가 파일을 복사하기 위해 구현한 함수는 아래와 같습니다. 중간에 newOriginFile.copy(copyFilePath); 부분에서 예외가 발생합니다. 참고로 copySync 메서드로 변경해 보았으나 같은 현상이 발생합니다. 복사할 대상 파일을 다른 프로세스에서 열지 않은 상태인데도 위와 같은 예외가 발생하여 디버깅이 안되는 상황입니다. 항상 감사합니다! void _startEvaluationMode() { Navigator.pop(context, 'OK'); // 계측 모드 시작 setState(() { _evaluationMode = true; }); // origin 경로 불러오기 if (_directoryInfoBox.containsKey(DirectoryType.origin.name)) { setState(() { _originDirectory = Directory(_directoryInfoBox.get(DirectoryType.origin.name)!.path); }); if (!_originDirectory!.existsSync()) { // 실제 origin 경로의 폴더가 존재하지 않는 상태 // origin directory 확인하라는 alert dialog 보여주고 evaluation mode 종료 } // origin 경로 워칭 Stream<FileSystemEvent> originDirFileEvent = _originDirectory!.watch(); print('start evaluation mode'); // _streamListner = originDirFileEvent.listen((event) async { // if (event.type == 1) { // print('create event'); // } // }); _streamListner = originDirFileEvent.listen((event) { // origin 경로에 새 파일이 생성된 경우 FileSystemCreateEvent type == 1 if (event.type == 1) { print('created file: ${event.path}'); final newOriginFile = File(event.path); // 포맷에 맞는 파일 이름 생성 var newOriginFilename = p.basenameWithoutExtension(event.path); // print('base file name: ${newOriginFilename}'); String testMethodRoadName = TestMethodRoadInfoManager.getNameById(newOriginFilename); // 중복되는 이름 확인 // 파일 이름을 _ 로 분리하여 4번째 인덱스 값으로 구분 List<String> existingTestMethodRoadNameList = _evaluationItem!.evaluationFileInfos!.map((fileInfo) { return p .basenameWithoutExtension(fileInfo.evaluationFilePath) .split('_') .first; }).toList(); // print(existingTestMethodRoadNameList); // List<String> duplicatedList = existingTestMethodRoadNameList.where((name) { return name == testMethodRoadName; }).toList(); String fileNameWithDuplicateCount = ''; if (duplicatedList.isNotEmpty) { fileNameWithDuplicateCount = '${testMethodRoadName}_${duplicatedList.length + 1}'; } else { fileNameWithDuplicateCount = '${testMethodRoadName}_1'; } // print('road name: ${testMethodRoadName}'); // var copyFilePath = p.join(_itemDirectory!.path, // '${_itemFilePrefix}_${fileNameWithDuplicateCount}.tdms'); var copyFilePath = p.join( _itemDirectory!.path, '${fileNameWithDuplicateCount}.tdms'); print('copy file path: ${copyFilePath}'); // 파일을 eval item 경로로 이름 바꾸어 복사 newOriginFile.copy(copyFilePath); print('copy finish'); // eval item DB의 evaluationFileInfos 리스트 업데이트 var newEvaluationFileInfo = EvaluationFileInfo( originFilePath: event.path, evaluationFilePath: copyFilePath, activated: true, ); setState(() { _evaluationItem!.evaluationFileInfos!.add(newEvaluationFileInfo); }); // print( // 'file info length: ${_evaluationItem!.evaluationFileInfos!.length}'); _evaluationItemBox.put(_evaluationItem!.id, _evaluationItem!); // ui 상 file list, count 업데이트 List<File> files = []; for (var entity in _itemDirectory! .listSync(recursive: false, followLinks: false)) { if (entity is File) { files.add(entity); } } setState(() { _files = files; }); } }); } }
집합 연산자 유니온과 조인이 결과적으로는 비슷해보이는데 각각 차이가 있을까요? 조인이나 아웃터조인에 따라 교집합이 포함되냐 아니냐의 차이인데 유니온 역시 테이블 간에 중복 값을 제거 하냐 / 아니냐에 대한 내용인 것 같아 질문드립니다! 현재 맥 환경에서 DBeaver, docker 설치로 데이터베이스 연결하여 실습하고 있는데 sql_practice 파일을 DBeaver 상에서 삽입하는 방법이 있을까요? 번거로운 질문 죄송합니다.
안녕하세요 큰돌님, 아래는 제가 강의 보고 코드를 그대로 구현했는데, 백준에 통과를 못하는 이유를 알 수 있을까요? ㅜㅜ 아무리 찾아보고 디버깅 해봐도 예제 문제 4,5번에 오답이 뜹니다. https://www.acmicpc.net/source/67562965 그리고 추가 질문 있습니다.. 이전 강사님 영상에는 dfs 하실때 보통 dfs 함수내에 visited을 정의를 하셨는데, 이번 영상에는 dfs 에 visited를 정의를 안하신 이유도 궁금합니다, 혹시 이전 영상들처럼 dfs에 visited[y][x] = 1 걸어도 문제 풀이가 가능한지 여쭤드리고 싶습니다, 그리고 이번 영상에 다르게 하신 점도 이유도 알고 싶습니다 ㅎㅎ 미리 감사합니다!
현재 제가 진행하고 있는 프로젝트는 csv로 데이터를 관리하고 있습니다. 함수가 호출되면 csv에서 Read하고,Write 합니다. 아래 사진과 같이 데이터를 관리하고 있습니다. 강의에서 보니 csv로 받아온 데이터를 xml로 변환하고 관리하시는 것 같은데 그렇게 했을 때의 이점이 있나요?
Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
안녕하세요. Backpressure의 Drop 전략에서 버퍼가 비워질 때까지 Emit된 데이터가 Drop이 된다는 것은 이해했습니다. 그런데 1번 데이터가 subscriber에게 전달되어서 처리가 되면 버퍼에 자리가 한 자리 비게 되는데 왜 데이터가 계속 Drop이 되는건가요? (코드 실습에서 onNext()함수가 호출이 되어도 255,256,257 ~ 1024까지 모두 드랍됨) | 1, 2 | <-------- 3 듣랍 | 2, |. <-------- 4 드랍 (여기서 왜 4번 데이터는 안들어가나요?) | 5, 6 | Buffer DROP-LATEST를 보면 | 1, 2 | <---- 3들어오는 중 버퍼 가득 차서 drop | 2, 4 | <------ 1번이 버퍼에서 나가고 한 자리가 비어서 4번이 들어와짐 이런식으로 동작을 하는데 Drop은 이렇게 동작하지 않는 것 같아 버퍼가 어떻게 동작하는지 궁금하여 질문드립니다.
예제로 보여주신 실습 파일의 내용을 보면 ConfigMap 에서는 파일로 생성한 후 이를 프로그램에서 이 파일을 읽어서 처리하는 형태로 되어 있는 것 같습니다. Secrete 의 경우에는 이 파일을 생성하지 않고 env 를 이용하여 직접 변수로 사용하고 있었습니다. 몇 가지 질문 있습니다. ConfigMap 의 경우 파일로 생성하셨는데 그럼 POD 에서 이 값을 사용하려면 해당 파일을 열어서 읽어 사 용하는 건지 ? ConfigMap 도 VolumeMount 를 사용하는 경우에 env 를 사용해서 파일로 생성하지 않고 직접 env 변수로 사용하는 방법이 존재하는지 여부 Secrete 도 VolumeMount 를 사용하는 경우 별도의 파일을 생성해서 이 파일을 이용하는 방법의 존재 여부 입니다. 참고로 Secrete 의 volumes: 부분에 "secrete" 을 추가하여 파일이 생성되는지 확인해 봤지만 에러가 발생하였습니다. 아울러 좋은 강의 감사드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 진행 중 해결되지 않는 오류가 있어 질문 드립니다. 기본 페이지 HelloSpring 까지는 정상적으로 뜨는데 이후 회원 가입 버튼을 누르면 Whitelabel 오류가 발생합니다. 비슷한 질문들이 있어서 확인하여 오타와 템플릿 구조까지 확인하였는데 원인을 모르겠습니다. -MemberController -MemberForm -createMemberForm.html -home.html -에러 코드 아래는 프로젝트 파일 구글 드라이브 링크입니다. https://drive.google.com/drive/folders/11r1sRmpTQR_So_Yu06AFgux0aCphYlUm?usp=sharing 감사합니다
/usr/bin에 압축을 푼 상태로 chmod 755 , 777 모두 한번씩 다 해봤고 암호, 지문 모두 설정되어있는 상태임에도 동일한 오류가 나 문의 드립니다 keychain_dumper 하나만 입력했을때 오류입니다. keychain_dumper > 1.txt를 입력했을때 나타나는 오류입니다.