안녕하세요! effectively final 관련 궁금증이 있어 질문드립니다! Java에서 람다 사용시 effectively final 여야지만 되는 이유가 람다 외부 지역변수를 제어하는 스레드와 람다식을 수행하는 스레드가 서로 다를 수 있고, 지역 변수는 스택에 저장되는데 각 스레드가 다르면 서로의 스택을 공유하지 못하기 때문에 값을 복사하여 사용하는데 이 경우 값이 최신값임을 보장하지 못하기 때문이라고 알고 있습니다. Kotlin에서는 effectively final 하지 않아도 되는 이유가 잘 이해가 안가서 질문드립니다! 람다 시작 지점에 참조하고 있는 변수들을 모두 포획한다는 것 이 Java에서와 마찬가지로 복사하여 값을 사용하는 것과는 다른 개념인걸까요?
안녕하세요 영원한 스승 제로초님 현재 이미지를 S3 Bucket 2개의 경로로 나누어 유저 프로필 이미지는 profile/ 게시글 이미지는 post/ 이렇게 저장하고 있습니다. 트리거의 접두사는 profile/ 이런 식으로 하나만 감지할 수 있는 거 같던데 프로필 이미지와 게시글 이미지를 다른 사이즈로 리사이징 하려고 한다면 트리거를 1개 추가하는 방법이 있을 거 같고 또 하나는 이미지를 하나의 경로 image/ 이런 식으로 같이 저장을 하고 저장될 파일명에 프로필 이미지와 게시글 이미지를 구분하여 람다 함수에서 프로필과 게시글의 이미지를 분기 처리하여 다른 사이즈로 리사이징 하는 방법이 있을 거 같습니다. 트리거를 추가한다면 비용이 많이 나올 거 같은데 2번째 방법이 적합할까요?
이게 맞는건지.. 참 혼란스러워서 질문드립니다. 국비학원 선생님이 자기가 말하는 거 적지 말라고 하면서, 그냥 집중해서 말을 잘 들으라고 하네요. 근데 상식적으로 제가 기계도 아니고 눈으로 한 번 보고 뭐 적은 것도 없는 상태에서 선생님이 이해한 걸 전부 이해할 수 있나요.. 그래서 문제 풀다가 질문했더니, 좀 집중해서 들으라고 놓치는 부분이 많은 것 같다고 하더라고요. 그러면서 오늘은 온라인 수업에서 제가 질문한 거 설명하더니 자기한테 이런거 다시 질문하면 답변안해드립니다. 이러는 거에요 진짜 제가 집중력이 없는 걸까요? 그냥 눈으로 보고 바로 할 수 있는 건가 고민이 되네요. 또 다른 사람들 보면 그걸 성공하고 있어서 제가 느린 건가도 고민이 되어요. 느린 건 둘째치고, 그럼 이 수업을 어떻게 헤쳐나갈지 고민입니다. 그냥 받아적지 말라고 하니 이해하는데까지만 이해하고 인강을 보충해서 듣는게 나을까요?
우선 주신 내용 삭제하고 다시 up 했는데 동일한 메시지 입니다. 제가 의문이 나는건 아래 Vagrantfile 부분에 #MariaDB 10.4 CentOS repository list # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos8-amd64 gpgkey= https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 EOF sudo dnf -y install dnf-utils sudo dnf -y install nano vim git net-tools tar binutils psmisc wget sysstat dialog sudo dnf -y install boost-program-options stress sudo dnf -y install mariadb-server --disablerepo=AppStream sudo dnf -y install mariadb-client --disablerepo=AppStream sudo dnf -y install mariadb-backup --disablerepo=AppStream SHELL cent2.vm.provision "shell", path: "SHELL/init.sh" end 위 처럼 mariadb repository 에는 baseurl = http://yum.mariadb.org/10.4/centos8-amd64 로 설정되어 있는데 정작 받아오는 로그 찍힌거 보면은 cent2: Errors during downloading metadata for repository 'mariadb': cent2: - Curl error (28): Timeout was reached for https://ftp.harukasan.org/mariadb/mariadb-10.4.26/yum/rhel/8/x86_64/repodata/repomd.xml [Connection timed out after 30644 milliseconds] https://ftp.harukasan.org/mariadb/mariadb-10.4.26/yum/rhel/8/x86_64/repodata/repomd.xml 여기서 찾는거 같습니다 위의 Vagrantfile 에 선언한곳을 접속해보면 실제 접속도 되고 파일이 있는데 위의 ftp.harukasna.og 요쪽은 접속이 안되서 계속 에러가 나는거 같거든요..어떻게 하면 Vagrantfile에 선언한 곳에서 받아 갈 까요?
postman에서 Body에 form-data에서 key, value에 각각 name, hello 라고 하면 안되는데 스프링부트에서는 항상 Body-raw -> Json에서만 들어갈 데이터를 작성해야 되나요?? form-data에 name, hello 작성하면 안되나요??
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
구구단 해설에서 이중 for문을 쓰셨는데 저는 이렇게 풀었습니다 int A = 1; int B = 2; for (int i = 0; i < 72; i++) { cout << B << "*" << A << "="<< A*B<< endl; A++; if (A == 10) { B++; A = 1; } } 제가 쓴 것이 A 와 B 변수를 더 써서 혹시나 메모리를 더 쓴다거나 문제가 있을까요? 개인적으로 for 문을 두번씩 쓰는게 너무 어렵고 if문을 쓰니깐 이해가 더 잘되는데 for문을 꼭 써야하는 상황이 아니라면 if문을 써도 상관 없는 건가요?
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요, 강의에서는 'Integration' Test 를 짠걸로 보이는데요. 실제 작업하실때 Mocking 해서 서비스함수 테스트를 짜시지는 않는지 궁금합니다. 우리가 쓴 테스트가 'Unit' 테스트가 되려면 Mocking 을 해야할 것 같은데 혹시 Mocking 을 하는 것과 테스트 코드를 짜는 방식에 대해서 어떻게 선호하시는지 궁금합니다.
java.choose는 힙에서 인스턴스화된 객체를 찾는다고 알려주신거같습니다. 그럼 attach방식일때만 힙 영역에서 기존에 생성된 인스턴스를 검색할 수 있는건가요? 아니면 spawn방식으로 사용해도 계속 힙 영역을 검색하면서 새 인스턴스가 생성됐을 때 해당 인스턴스 또한 후킹이 가능한건가요?
@Import(MemoryConfig.class) @SpringBootApplication(scanBasePackages = "hello.itemservice.web") public class ItemServiceApplication { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } @Bean @Profile("local") public TestDataInit testDataInit(ItemRepository itemRepository) { return new TestDataInit(itemRepository); } } [위 소스는 강의에서 사용한 코드를 그대로 복사붙여넣기 한 것입니다.] 질문을 남겼는데 제가 질문을 이상하게 한거같아 재질문 남깁니다. 제가 생각하기에 ItemServiceApplication.java 파일 역시 @Configuration이 붙은 class라고 생각합니다. @SpringBootApplication 따라가보니까 @Configuratino이 붙어있더라구요. 거기에 @Import(MemoryConfig.class)를 통해 MemoryConfig.class의 Config정보 또한 가지고 있구요. 그런데 문제는 ItemServiceApplication.java는 ComponentScan의 대상범위가 아니라는 겁니다. scanBasePackages = "hello.itemservice.web"를 통해 web하위만 컴포넌트 스캔 대상으로 했기 때문이죠. 그렇다면 ItemServiceApplication이 들고있는 config정보(MemoryConfig포함)를 스프링이 어떻게 인식하고 있느냐가 질문입니다. Spring docs에 이런내용이 있길 기대했습니다. "scanBasePackages로 specific하게 범위를 지정하더라도, 예외적으로 @SpringBootApplication이 붙은 Application.java는 ComponentScan의 대상에 포함시킨다" 그런데 없더라구요? 아니면 @Import에 "scanBasePackages로 specific하게 범위를 지정하더라도, 예외적으로 @Import가 들어간 class파일은 ComponentScan의 대상에 포함시킨다" 그런데 이것도 없구요.. 그렇다면 Spring은 ItemServiceApplication.java에 속한 config정보를 도대체 어떻게 인식한건가요?
안녕하세요~~! 프론트엔드 쪽으로 가고싶어 입문 강의를 찾다가, 해당 강의로 먼저 기본기를 다지고 있습니다. 지금 1/3 정도 강의를 들었는데, 현재 강의를 끝까지 1회독 끝낸 후에 본격적인 프론트엔드 수업을 수강하려고 합니다. 혹시 그렇게 된다면, 강의 개요에 작성되어있는 것처럼 본 강의를 2,3회독 할 필요는 없이 프론트엔드 수업으로 넘어가면 되는걸까요? 그리고 이후에 프론트엔드로 수강할 만한 수업도 추천해주시면 감사하겠습니다!
먼저 로그인시 mutate()로 data를 넣어주고, 콘솔에 찍어 data가 잘 들어가는 것을 확인했습니다. /workspace/channel로 이동 후, 로그아웃 기능이 제대로 동작하지 않아서 일단 data를 제대로 가져오는지 확인하기 위해 data를 콘솔에 다시 찍어봤는데 위 결과처럼 처음엔 제대로 data가 찍혔지만 바로 이어서 값이 날라가버립니다. (이 때문에 로그아웃 버튼을 누르지 않아도 바로 로그인 화면으로 다시 튕겨버립니다.) fetcher 함수도 같이 올립니다. 혹시 잘못 작성하거나 바뀐 부분이 있을까요?? 너무 좋은 강의 잘 듣고 있습니다!! 감사합니다.
@Import(MemoryConfig.class) @SpringBootApplication(scanBasePackages = "hello.itemservice.web") public class ItemServiceApplication { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } @Bean @Profile("local") public TestDataInit testDataInit(ItemRepository itemRepository) { return new TestDataInit(itemRepository); } } 위 소스는 강의에서 사용한 코드를 그대로 복사붙여넣기 한 것입니다. 코드를 보시면 ItemServiceApplication은 컴포넌트 스캔 범위에 포함되지 않습니다. 제 생각으로는, ItemServiceApplication이 컴포넌트스캔 범위에 포함되어야만 MemoryConfig가 인식되어 빈이 등록될것 같습니다. 하지만 컴포넌트스캔 대상이 아니여도 빈이 등록이 됬습니다. ItemServiceApplication과 같은 Application 파일에서 @Import를 할경우 자동으로 Config로 인식하는 그런 기능이 있는건가요? 아니면, 컴포넌트 스캔 범위를 지정해줘도 예외적으로 Application파일은 컴포넌트스캔 대상이 되는건가요? 지금 스프링이 어떤 원리로 MemoryConfig.class를 인식하여 빈을 등록한건지 이해가 잘 되지않습니다.
안녕하세요 제로초님 강의 잘 듣고있습니다. status(403)의 에러메시지는 saga의 err.response.data로 전달된다고 하셨는데 그럼 status(200)의 성공메시지도 saga로 전달할 수 있는건가요? 전달할 수 있다면 어떤값을 사용해서 참조할 수 있을까요?
3:20초 부근에서 상품카드를 눌렀을때 http://localhost:3000/product 으로 주소는 바뀌는데 페이지는 누르기 전 상태 그대로입니다. 새탭에서 열기, 새창에서 열기로 할때는 제대로 <h1>태그 상품상세페이지가 적용되는데, 강의에서 처럼 그냥클릭했을때 왜 적용이 안되는지 궁금합니다 // 다른 질문글을 보고 수정해봤습니다. index.js에서 <React.StrictMode>를 삭제해보세요. 라는 내용이 있어서 root.render( <BrowserRouter> <App /> </BrowserRouter> ); 강의에는 <React.StrictMode>이 있어도 클릭이 url 변경 + 새로고침이 되는데, 왜 저는 저걸 빼야지 새로고침이 되는건지 궁금합니다 http://localhost:3000/ 에서 새로고침시 콘솔창에 이러한 에러가 나오는데 왜 나오는지 궁금합니다.