선생님 안녕하세요. UiPath를 아직 해본 적이 없는데, UiPath는 요금제가 무료 버전과 유료 버전으로 나뉜다고 알고 있습니다. 무료 버전 은 개인이나 소규모 프로젝트에 적합하다고 들었는데, 본 강의에서 다루는 내용을 실습하고 활용하기에는 UiPath 무료 버전으로도 충분한가요? 이 강의를 배우고나서 실제 회사 실무에서 UiPath를 이용하려면 유료버전이 필수적인지가 궁금합니다. 제가 말하는 회사 실무란 전사적인 업무 자동화 이런 건 아니고, 회사에서 담당 업무를 할 때 업무 효율 향상 정도 수준을 의미합니다. 이 정도 수준에는 UiPath 무료버전으로도 충분히 활용성이 좋은지요? 향후 UiPath 활용을 위해 고민될 정도의 비용이 수반된다면, 오히려 처음부터 파이썬 등 다른 대안을 공부해 보려고 합니다. 감사합니다.
package study.array.ex; import java.util.Scanner; public class ProductAdminEx { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] productNames = new String[10]; int[] productPrice = new int[10]; int productCount = 0; while (true) { System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료"); System.out.print("메뉴를 선택하세요 : "); int option = sc.nextInt(); sc.nextLine(); switch(option) { case 1: if(productCount != 10){ System.out.print("상품 이름을 입력하세요 : "); productNames[productCount] = sc.nextLine(); System.out.print("상품 가격을 입력하세요 : "); productPrice[productCount] = sc.nextInt(); productCount++; } else System.out.println("더 이상 상품을 등록할 수 없습니다."); break; case 2: if(productCount != 0) { for (int i = 0; i < productCount; i++) { System.out.print(productNames[i] + " -> " + productPrice[i]); System.out.println(); } } else { System.out.println("등록된 상품이 없습니다."); } break; case 3: System.out.println("프로그램을 종료합니다."); System.exit(0); } } } } 마지막 문제풀이때 for문을 사용하지 않고 switch문을 사용하여서 풀었는데 어떠한 상황에서 FOR문을 사용해야 더 개선된 코드인지 SWITCH문을 사용해야 더 개선된 코드인지 분별이 잘 안갑니다. 이런 문제풀이때는 어떤걸 사용해야 하나요??
FrontControllerV1에서 http://localhost:8080/front-controller/v1/members/new-form 접속해도 404 Not Found 오류가 뜹니다. 섹션 4에서 basic.html, index.html도 뜨지 않아서 resources/static 폴더 내부에 옮기니 잘 떴었습니다. 그런데 지금은 다시 webapp 폴더로 옮기고 나니 http://localhost:8080 으로 접속하면 "회원가입, 회원목록"들을 다루는 페이지가 떠야하는데 그 또한 안 뜨네요.. 그리고 질문&답변에서도 찾아보고 블로그들도 며칠동안 다 찾아봤는데도 해결이 안되어서 질문 남깁니다.. 코드는 구글 드라이브에 올려두었습니다! https://drive.google.com/drive/folders/1uQwA4Xl9kkChJB32kl-VGCZ2Xdg6YG-3?usp=drive_link
[질문 내용] 여기에 질문 내용을 남겨주세요. package study.array.ex; import java.util.Scanner; public class ArrayExRef6 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int[] numbers = new int[scanner.nextInt()]; System.out.println(numbers.length +"개의 정수를 입력하세요:"); // 입력 for (int i = 0; i < numbers.length; i++) { numbers[i] = scanner.nextInt(); } int min, max; min = max = numbers[0]; // 가장 작은 정수 for (int number : numbers) { if(min > number) min = number; } // 가장 큰 정수 for (int number : numbers) { if(max < number) max = number; } // 출력 System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } } 선생님의 기존 코드와 비교했을때 이런 로직으로 짜는것은 가독성이나 효율성(비효율적인 반복문 사용)이 떨어지는 코드일까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] @RestController @RequiredArgsConstructor public class MemberController { // 도메인 클래스 컨버터 private final MemberRepository memberRepository; @GetMapping("/members/{id}") public String findMember(@PathVariable("id") Long id){ Member member = memberRepository.findById(id).get(); return member.getUsername(); } @GetMapping("/members2/{id}") public String findMember2(@PathVariable("id") Member member){ return member.getUsername(); } @PostConstruct public void init(){ memberRepository.save(new Member("userA")); } } MemberController 에서 @PostConstruct 부분을 보면, save 메소드가 보입니다. 일반적인 경우를 생각해보면, 서비스 계층에 @Transactional 이 붙어있고, 트랜잭션이 걸려있는 메소드를 통해서 리포지토리의 save 를 호출하니 리포지토리에도 트랜잭션이 걸려있다고 할 수 있을 것 같습니다. 그런데 위와 같은 경우에서는 리포지토리에 트랜잭션이 안 걸려있습니다. JpaRepository 의 상위 인터페이스나 클래스를 찾아가면서 save 에 트랜잭션이 걸려있는지 확인을 해보았으나 없었습니다. 그렇다면 트랜잭션이 걸려있지 않은데, 어떻게, 어떤 시점에 커밋이 이루어져서 db 에 반영이 된 것인지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요. 이번에 스프링을 듣고 있는 취준생입니다. 자바 스프링으로 취업준비하기 위해 듣고 있는데 스프링과 스프링부트 로드맵을 위주로 강의를 들으려고 하고 있습니다. 근데 자바가 익숙치 않아서 김영한님의 자바강의를 보고 있는데 자바는 어느정도 강의까지 들으면서 익혀야 스프링과 스프링부트 Jquery에 익숙하게 학습이 가능할까요? 너무 질문 수준이 낮아서 죄송합니다...
강의에서 보면 Mysql을 사용하는 DBMS서버가 물리적으로 WAS와 같은 서버에서 가동 중일 때 Mysql의 함수인 Load_flie 을 통해 로컬 파일의 내용을 확인하는 것을 보았습니다. 해당 강의를 보다 궁금한 사항이 생겨 질문 드립니다. 1. 로컬 파일의 위치(경로)를 해커의 입장에서 어떻게 찾는 건가요? 해당 서비스가 Window인지 Linux인지는 어떻게 찾나요?
안녕하세요 강의 잘 듣고 있습니다. 감사합니다. 강의에서 Hello World가 화면에 출력하는 예시를 들어 설명하신 부분에서 Device file 이라는 인터페이스를 통해서 User Process와 Kernal이 상호작용한다고 하셨습니다. 이때, Device File에 무엇을 읽고 쓴다는 것은 Memory 나 Disk에 적재하는 과정이 될 거 같다는 생각이 듭니다. 맞을까요? 아래는 영상에서 설명한 예시에서 제가 생각한 과정입니다. Device File 에 "Hello world" 출력하라는 명령을 쓰기 위해 User -> Kernal -> H/W(Memory or Disk) "Hello World" 출력하기 위해서 Kernal -> H/W (영상에서 설명하신 부분) 총 두 번 일어나는 것이 맞는건가요? 뭔가 현대에는 최적화가 잘 되어서 1번으로 끝낼 수 있게 구성이 되어 있을 거라고 생각이 들긴 합니다. *구글링으로 찾아본 내용 리눅스 파일의 종류엔 3가지가 존재 일반 파일: 데이터를 담을 수 있음 디렉토리 파일: 일반 파일을 담을 수 있음 특수 파일 (Socket, Device File, Named Pipe) 영상에서 언급해주신 Device File 은 특수파일에 해당 Device File은 특수파일의 하위 집합으로 character device file, block device file 두가지 타입이 있음. 특수 파일은 일반 파일과 달리 단순 운영체제와의 인터페이스로 데이터를 저장하는 행위는 하지 않음. 그럼 왜 파일이라고 하는건가? 일단, 리눅스는 "모든게 파일이다." 라는 철학을 갖고 있음. 그렇다면 왜 모든 걸 파일로 정의했는가? => 다양한 자원을 하나의 일관된 인터페이스로 추상화하여, 파일을 읽고 쓰는 방식으로 모든 자원(디스크, 장치, 네트워크 등)을 다룰 수 있도록 하기 위함 질문을 드렸지만, 궁금해서 구글링을 해서 찾아 아래 부분에 찾은 내용을 정리했습니다. 제가 찾은 내용이 좀 틀렸다면 정정해주시면 감사하겠습니다!
ServerSession 클래스의 Write 함수의 일부입니다. // 최종적으로 패킷의 크기를 할당하기 위한 공간 확보 count += sizeof(ushort); success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this.packetId); count += sizeof(ushort); success &= BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this.playerId); count += sizeof(long); BitConverter.TryWriteBytes(s.Slice(count, s.Length - count), this.packetId); 와 같이 스팬을 자를 때 왜 s.Length - count로 count 부터 남은 공간을 전부 자르는 건가요? ushort 크기를 사용할 것이기에 s.Slice(count, sizeof(ushort))로 사용할 공간만 잘라서 사용하는 것이 더 효율적인 것이 아닌가요? +추가 이 이유가 강의에서 말씀해주셨던 누군가가 이상한 값을 할당해 정확한 크기가 전달되지 않을 가능성이 있어서 남은 공간을 모두 확인하려는 의도일까요??
네트워크의 구조는 그래프의 형태를 띄고있다 라고 하셨는데, 비유인가요 ? 실제로 기기간(노드)간의 메시지를 주고받을때 그래프 자료구조를 사용하는건가요 ? 실제로 제 기기가 네트워크안에 있다면(연결 되었다) 라고 한다면 어딘가의 장비에 코드로써 제 기기(노드 ) 가 기존의 그래프에 추가된건가요 ?
안녕하세요 강사님 수업 잘 듣고 있습니다. OrderableProductItem.jsx에서 컨텍스트의 컨슈머 안에 렌더 프롭을 children으로 만들고 changePath를 이용해서 주문하기 버튼을 누르면 cart로 이동하지 않습니까? 그런데 productItem.jsx에서는 {onClick && ( <Button styleType={"brand"} >주문하기</Button> )} 1. 이렇게 정의되어서 onClick 메서드를 받기만 하고 직접 활용하지 않습니다. 그럼에도 불구하고 Context를 통해 changePath가 작동할 수 있는 이유가 무엇인가요? 코드의 가독성을 위해서는 productItem.jsx에서 onClick ={onClick}을 달아주어야 하지 않나요?
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
char*와 int 의 원본을 수정하는 방식이 다른 이유가 아래와 같은 원리때문인 걸까요? char*는 문자의 배열(?) 같은 것이고 "Hello" 라는 문자열이 있는 주소를 담는 변수라 한다면 SetMessage는 "Hello"를 담는 바구니의 내용물을 "Bye"로 바꾸는 것이 아니라 따로 "Bye"를 담는 바구니(주소)로 이사하는 방식으로 주소를 바꾸는 것이기 때문에 이중 포인터를 사용하는 것이고 int는 바구니의 내용물을 바꾸는 것이기에 하나의 * 만 필요하다.
문득 궁금한건데 아스키코드가 ’A’ 는 65잖아요 예를들어 union Data { int intValue; char charValue; }; 이고 main함수에 charValue 값만 ‘A’ 로 대입 해주고 printf를 통해 intValue 값을 출력하면 65가 나오더라구요 이게 왜 이러는건가요? 메모리내에 값이 [41] [xx] [xx] [xx] 같이 0x41 값을 제외하고는 모두 쓰레기값일텐데 왜 65를 잘 출력하는거죠? 좀 헷갈립니다.