묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해
Barrier 작업 관련 질문입니다.
안녕하세요! 본강의 Barrier파트를 듣고 직접 구현을 해보았을때, 모르는 부분이 생겨 질문을 드립니다. barrier 작업들을 DispatchGroup으로 묶었을 경우Tsan을 체크하고 빌드하는 경우 Thread-Safe하지 않는 부분이 감지되었습니다.반면, 똑같은 barrier 작업을 DispatchGroup으로 묶지않는 경우는Tsan에 감지되지 않는데, 이런 결과가 나오는 이유를 모르겠어서 질문드립니다!// Tsan에 감지되는 코드(DispatchGroup) for i in 1...5 { print("--- \(i)번째 ---") let group = DispatchGroup() var someNumber = 10 DispatchQueue.global().async(group: group, flags: .barrier) { sleep(1) someNumber *= 10 // Race Condition 감지되는 부분 print("after multiple 10 : \(someNumber)") } DispatchQueue.global().async(group: group, flags: .barrier) { sleep(1) someNumber += 1 // Race Condition 감지되는 부분 print("after add 1 : \(someNumber)") } group.notify(queue: .main) { print("\(i)번째 결과 : \(someNumber)") } group.wait() }// Tsan에 감지되지 않는 코드(DispatchGroup X) for i in 1...5 { print("--- \(i)번째 ---") var someNumber = 10 DispatchQueue.global().async(flags: .barrier) { sleep(1) someNumber *= 10 print("after multiple 10 : \(someNumber)") } DispatchQueue.global().async(flags: .barrier) { sleep(1) someNumber += 1 print("after add 1 : \(someNumber)") } }
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Notifier와 Provider 관계 질문
안녕하세요?우선 알찬 강의를 제공해 주시고, 열심 성의껏 지식을 나눠주셔서 감사의 말씀 먼저 드립니다.다름이 아니라, Provider와 Notifier의 관계를 제가 아직 다 이해를 못해서 그런건지,오류는 아닙니다만, 혼란스러워서 질문을 드립니다.StateProvider 사용 시 StateNotifer를 상속한 사용자 정의 StateNotifier를 먼저 정의하고, 해당 사용자정의 StateNotifer를 사용하는 StateProvider를 선언한다고 이론강의에서 배웠는데,아래 소스를 보면 선언을 사용자정의 StateNotifer를 네이밍해야 할거 같은데 StateNotifer를 상속한 Provider 라고 네이밍 해서 이게 맞는 표현일까? 아니면 예제와는 틀리게 사용된 경우일까? 혼란스러워 질문 드립니다.<pagination_provider.dart>class PaginationProvider<T extends IModelWithId, U extends IBasePaginationRepository<T>> extends StateNotifier<CursorPaginationBase> {아래 소스도 위 Provider를 상속한 Notifer라고 되어 있어서 이 부분도 이론 예제에는 안나와 있는 경우인지 질문을 드립니다.<restaurant_rating_provider.dart>class RestaurantRatingStateNotifier extends PaginationProvider<RatingModel, RestaurantRatingRepository> { RestaurantRatingStateNotifier({ required super.repository, }); }
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
처음에 무한 Loop 을 돌게 되는 이유
안녕하세요~ 강의 중 처음에 order 들을 조회하는 api 가 무한 루프를 도는 이유가 궁금해서 질문을 올리게 되었습니다 (6분 30초 ~ 7분 부분)우선, Order > Member > Order 조회 의 순으로 일어나기 때문에 무한 루프가 발생한다고 설명해주셨습니다.이 때, Order 는 member 가 Lazy 설정이 되어 있고, Member 에도 List<Order> 를 가져오는 것이 Lazy 로 설정이 되어 있습니다 (@OneToMany 이기 때문) .[모든 order 를 조회하라] 라는 로직에 member 를 join 해서 가져오기 대문에, Order 가 Member 를 조회해서 가져오는 부분은 이해를 하였습니다. 쿼리도 다음과 같이 나가더라구요! 2023-01-15 18:08:52.603 DEBUG 74756 --- [nio-8080-exec-1] org.hibernate.SQL : select order0_.order_id as order_id1_6_, order0_.delivery_id as delivery4_6_, order0_.member_id as member_i5_6_, order0_.order_date as order_da2_6_, order0_.status as status3_6_ from orders order0_ inner join member member1_ on ( order0_.member_id=member1_.member_id ) 2023-01-15 18:08:52.713 DEBUG 74756 --- [nio-8080-exec-1] org.hibernate.SQL : select member0_.member_id as member_i1_4_0_, member0_.city as city2_4_0_, member0_.street as street3_4_0_, member0_.name as name4_4_0_ from member member0_ where member0_.member_id=? 2023-01-15 18:08:52.722 DEBUG 74756 --- [nio-8080-exec-1] org.hibernate.SQL : select orders0_.member_id as member_i5_6_0_, orders0_.order_id as order_id1_6_0_, orders0_.order_id as order_id1_6_1_, orders0_.delivery_id as delivery4_6_1_, orders0_.member_id as member_i5_6_1_, orders0_.order_date as order_da2_6_1_, orders0_.status as status3_6_1_ from orders orders0_ where orders0_.member_id=?첫번째 쿼리로 join 을 하는데, <이후 호출>에 의하여 두, 세번째 쿼리가 나가는 것 같습니다.이 때, 각각의 멤버의 정보를 불러오기 위하여 member 쿼리가 나가는 것은 이해가 되는데, orderItem 이 LAZY 임에도 쿼리가 또 나가는 이유가 궁금합니다. response 가 나가는 과정에서 Json 형성을 위해 ObjectMapper 가 getMember, getOrderItem 등을 수행하는 것으로 알고 있는데, 이 때 불러오기 때문일까요?? 2.ObjectMapper 가 무시할 수 있도록 다음과 같이 변경후 실행시켜 보았습니다. @JsonIgnore @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); 이렇게 될 시엔 다음과 같이 Serializable 관련 에러가 발생하는 것 같았습니다. 그랬더니 두번재 쿼리까지만 나가긴 하는데, 다음과 같은 에러가 발생합니다.com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.ArrayList[0]->com.example.actualjpa.domain.Order["member"]->com.example.actualjpa.domain.Member$HibernateProxy$jMkxupIu["hibernateLazyInitializer"])검색을 해보니 프록시 객체를 Serialize 하려고 했다는 에러가 발생하는 것 같은데, orders 에 프록시 값들이 들어있는게 맞을까요? 반대인 경우에는 DB 에 FK값이 있기 때문에 id 값만을 가지고 Proxy 객체를 형성한다는 점을 완전히 이해를 했었는데, 이와 같은 경우에는 각 ID 값이 DB에 없기 때문에, Member만 조회시 orders 내의 Order 들에 대한 프록시도 없고 아예 아무 정보도 없겠구나 라고 이해를 했었습니다.즉, 레이지일 경우 Member만 조회시 orders 에 대한 정보는 Member 객체에 없다 라고 이해를 했었습니다. @JsonIgnore를 해서 조회같은걸 할 수 없도록 했음에도, 위와 같은 에러가 발생하는 이유가 어떤건지 알 수 있을까요?? =========================위 질문에 대한 수정사항:제가 질문한 바로 뒷내용이 JsonIgnore 설정해주시고 같은 에러에 대해서 설명해주시는 부분 확인했습니다 ㅠㅠ 프록시 객체 때문에 발생하는 에러가 맞네요.그래도 같은 질문을 드리고 싶은데, 1:N 관계에서 Proxy 객체에 대해서 조금 이해가 안되었습니다(JPA 강의 완강했습니다). Apple 과 Tree 라는 N:1 관계에서 살펴보면 (양방향 모두LAZY 설정시) , Apple Entity 내의 private Tree tree가 있을 것이고, APPLE DB에는 외래키값으로 tree_id 가 들어가있을 것이기 때문에 그 값을 토대로 프록시 객체를 형성해 놓는다는 사실은 잘 이해하였습니다.하지만 그 반대일 경우 에 대해서 이해를 못한 것 같습니다 (JPA 강의에서도 반대에 대한 프록시 구성 설명은 없었던 것 같습니다 ㅠ). 반대의 경우 Tree DB 안에는 Apple 을 외래키값으로 가지고 있지 않은데, 어떻게 프록시 객체를 형성해 놓는 걸까요?? (프록시 객체를 형성해 놓기 때문에 위 2번과 같은 상황이 발생한 것으로 보입니다). 다음과 같은 예제를 설정해보았습니다.@Test @DisplayName("1:N에서 1이 N List를 조회시 :: LAZY LOADING 의 타입은 Proxy") void test2() { Tree findTree = em.find(Tree.class, tree.getId()); System.out.println("findTree.getApples().get(0).getClass() = " + findTree.getApples().get(0).getClass()); }이 때, em.find 만 해서 tree 를 조회하였을 경우 쿼리가 Tree 만을 조회하도록 나가는 것은 확인했습니다. 하지만, 그 아래 get(0) 를 수행하는 순간 "Apple 테이블에서 Tree_ID={tree_id} 인 값을 찾아와라" 라고 쿼리 문이 나가는 것을 확인했습니다. (getClass 를 통해 프록시가 맞는지 확인하려 했으나, get() 을 하는 순간 select 가 나가서 확인하지 못했습니다)즉,Apple 에서 Tree 프록시를 형성할 때는 Apple DB에 있는 외래키를 통해 Tree Proxy 에 PK 값을 넣어준 상태로 프록시를 형성하였는데, Tree 에서 Apple 들의 프록시를 형성할 때는 외래키가 없으므로, 그냥 자신의 PK 값을 통해 Apple 의 외래키 값을 넣어준 상태로 프록시를 형성해 둔다(??).이렇게 정리되는게 맞는 걸까요?질문이 너무 기네요.... 계속 붙이다 보니 .... 죄송합니다. 2번 질문은 그냥 아래 수정사항 이후 질문이라고 봐주시면 될 것 같습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Unity Samples: UI -> UI Samples
저만 이름이 바뀐지는 모르겠는데 검색해도 안나오면 UI Samples로 검색해보세요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
memberRowMapper()메서드 문법관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요수업 내용은 아니고 문법관련 질문입니다.3분 15초 경 memberRowMapper()메서드를 생성하는데요. 여기서 return대상은 new RowMapper()로 클래스인 것으로 이해했습니다. 근데 그 후에 어째서 mapRow메서드를 다시 선언할 수 있는거죠? RowMapper가 클래스가 아닌건가요? 람다식으로 선언할 수 있는 거 보면 RowMapper()가 메서드일 수도 있는 거 같은데, 그렇다면 new키워드는 왜 쓰는 건가요? 죄송합니다. 제가 기본 문법이 많이 부족한 상태에서 수강하고 있어요. 제가 모르는 것이 무엇인지도 모르는 상태에서 질문을 드려서 질문이 굉장히 난잡하네요. 다시 정리하자면, RowMapper()클래스를 반환하는 코드에 어떻게 다른 메서드(mapRow())를 선언할 수 있는지 궁금합니다.
-
미해결
[ios - Swift] 회사 내부용 앱을 만들었는데요.. 배포는..?
CRM ios app을 제작하였습니다. swift 언어를 사용하였고, storyboard 방식으로 제작하였습니다.플러그인으로 onesignal(푸시알림 서비스)를 붙였고, 현재 애플 공식 개발자 계정이 존재합니다.CRM을 App Store가 아닌, 직원들에게 직접 설치해주려고 합니다.어떤 방법을 사용해야 하는지 질문드립니다.*참고: 스타트업이라, Enterprise용 계정이 아닌 일반 개발자 계정입니다. 즉 직접 설치 방법 중Enterprise 방식은 사용할 수 없습니다.**참고2: Xcode로 build하여 아이폰에 설치해봤는데요, 개발자 모드 없이는 실행이 안됩니다. (다른 분들에게 항상 개발자 모드를 켜놓으라 할 수는 없어서...) 그래서 Xcode 빌드 외에 방법을 찾고 있습니다...
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
두리스트 합치기 수업 질문
n=int(input()) a=list(map(int, input().split())) m=int(input()) b=list(map(int, input().split())) res=list(a+b) res.sort() print(res) for i in range(len(res)): print(res[i], end=' ')이런식으로 문제를 풀어도 문제가 없을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 틀렸는지 이유를 잘 모르겠습니다..
import java.util.Scanner; public class Main { public static void main(String[] args) { Main main = new Main(); Scanner sc = new Scanner(System.in); String s = sc.next(); String solution = main.solution(s); System.out.println(solution); } public String solution(String str) { String answer = ""; char[] chArr = str.toCharArray(); if (chArr.length % 2 == 1) { return answer = "NO"; } int lt = 0; int rt = chArr.length - 1; while (lt < rt) { char startWord = Character.toUpperCase(chArr[lt]); char lastWord = Character.toUpperCase(chArr[rt]); if (!(startWord == lastWord)) { return answer = "NO"; } lt++; rt--; } return answer = "YES"; } }
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
run실행시 크롬에서 에러발생
run실행하면 크롬에서 사이트에 연결할 수 없습니다.http://localhost:8080/vscode에서 error메시지는 다음과 같습니다.crbug/1173575, non-JS module files deprecated.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
데이터 불러오기 강의에서 오류가 발생하였습니다.
다음과 같이 에러가 발생하였다고 하는데 코랩을 사용해보는게 처음이라 스스로 해결하는데 어려움이 있어 질문드립니다.
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
팩토리 패턴의 의존성 주입과 관련해서 질문이 있습니다!
강의 교재에서 "CoffeeFactory라는 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스인 LatteFactory가 구체적인 내용을 결정하고 있습니다. 참고로 이는 의존성 주입이라고도 볼 수 있습니다. CoffeeFactory에서 LatteFactory의 인스턴스를 생성하는 것이 아닌 LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하고 있기 때문이죠."위 문장에 대해 두 가지 의문점이 있습니다.CoffeeFactory 클래스와 LatteFactory가 상속 관계를 가진 상위/하위 클래스인가?CoffeeFactory는 그저 LatteFactory, EspressoFactory를 호출하는 역할의 클래스이고 extends를 통해 상속을 하고 있지 않다고 생각하는데 이 부분이 왜 상속 관계에 있는 것인지 이해가 안갔습니다.LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하고 있다?해당 예시에서 의존성 주입은 의존성 주입자의 역할을 하고있는 CoffeeFactory 클래스가 main 함수와 하위 클래스(LatteFactory, EspressoFactory)와의 의존성을 느슨하게 만들고, 하위 클래스가 CoffeeFactory 클래스에 의존하게 만들면서 달성된다고 생각했습니다. 그런데 LatteFactory에서 생성한 인스턴스를 CoffeeFactory에 주입하기 때문에 의존성 주입이 달성된다는 문장이 이해가 안 갔습니다.+static 메서드를 사용하고 있기 때문에 인스턴스를 생성하지 않는 것으로 보이는데 '인스턴스'를 주입하고 있다는 문장도 잘 이해가 가지 않습니다.긴 질문 읽어주셔서 감사합니다! 답변 기다리겠습니다 :)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 질문이 있습니다 !
선생님 7-A에서 경로를 계산할 때 순서는 상관이 없다고 하셨는데..각 경로 방향마다 가중치값이 다른데 어떻게 순서가 상관이 없나요??각 경로마다 모든 경우의 수를 계산해서 최솟값을 계산해야하는거아닌가요? ㅠㅠ 예를 들면 도시 A,B,C가 있다고 가정할 때 A B CA C BB A CB C AC A BC B A각 경로 가중치 합이 다르지 않나요 ?그래서 저는 왜 시작 정점을 하나로만 계산하는지도 잘 이해가 안갑니다 ㅠㅠ
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
5-1 CNN코드에서 모델 정확도 구할때
안녕하세요! 좋은 강의 감사드립니다.5-1 CNN코드에서 모델 정확도 구할 때correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data[0].to(device), data[1].to(device) outputs = net(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) # 개수 누적(총 개수) correct += (predicted == labels).sum().item() # 누적(맞으면 1, 틀리면 0으로 합산) print('Accuracy of the network on the 10000 test images: %d %%' % (100 * correct / total)) _, predicted = torch.max(outputs.data, 1)에서 _ 는 무엇을 뜻하나요?? 그리고 max에서 max(outputs.data, 1) 에서 1은 무엇을 의미하나요?? 감사합니다!!
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
5-1강 CNN코드에서
class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) # 합성곱 연산 (입력 채널수 3, 출력 채널수 6, 필터크기 5x5 , stride=1(defualt)) self.pool1 = nn.MaxPool2d(2, 2) # 합성곱 연산 (필터크기 2, stride=2) self.conv2 = nn.Conv2d(6, 16, 5) # 합성곱 연산 (입력 채널수 6, 출력 채널수 16, 필터크기 5x5 , stride=1(defualt)) self.pool2 = nn.MaxPool2d(2, 2) # 합성곱 연산 (필터크기 2, stride=2) self.fc1 = nn.Linear(16 * 5 * 5, 120) # 5x5 피쳐맵 16개를 일렬로 피면 16*5*5개의 노드가 생성 self.fc2 = nn.Linear(120, 10) # 120개 노드에서 클래스의 개수인 10개의 노드로 연산 def forward(self, x): x = self.pool1(F.relu(self.conv1(x))) # conv1 -> ReLU -> pool1 x = self.pool2(F.relu(self.conv2(x))) # conv2 -> ReLU -> pool2 x = x.view(-1, 16 * 5 * 5) # 5x5 피쳐맵 16개를 일렬로 만든다. x = F.relu(self.fc1(x)) x = self.fc2(x) return x net = Net().to(device) # 모델 선언에 x = x.view(-1, 16 * 5 * 5) # 5x5 피쳐맵 16개를 일렬로 만든다.에서 -1이 배치의 개수라고 하셨는데 그럼 이 파일의 코드에서trainloader = torch.utils.data.DataLoader(trainset, batch_size=8, shuffle=True)trainloader에서 batch_size 가 8이니까 -1값이 제일 마지막에 나누어 떨어지지 않을 때 제외하고8 인건가요??아니면print(len(trainloader))하니까 6250이 나오는데 6250일까요..배치의 크기를 의미하는건지 헷갈립니다..
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
컨트롤러에서 반환하려는 DTO 에 임베디드 타입
컨트롤러에서 반환하려는 DTO에 임베디드 타입으로 사용한 클래스를 넣어도 괜찮은가요? 강의에서 OrderDto에 Address 를 넣으셨는데 생각해보면 Address 자체는 엔티티가 아니라서 괜찮을것 같지만 궁금해서 질문 남깁니다.
-
미해결[핵집] 2025 빅데이터 분석기사(필기)_과목 1~2
밑에 분들과 마찬가지로 1~4까지 강의를 모두 신청하였습니다.
빅데이터 분석기사 필기 1~2와 3~4 강의를 모두 신청하였습니다.저도 강의 자료 한꺼번에 받고 싶습니다.athena_jiwon@naver.com으로 자료 부탁드립니다.감사합니다.
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
이벤트 핸들러로 왜 일반 함수로는 작동이 안 되나요? + console.log도 인식이 안되요
정상 작동 <input @input=" e => { e.target.value += '!'; console.log('hi'); } " /> 에러 뜸 <input @input=" function(e) { e.target.value += '!'; " /> 질문1) 화살표 함수를 일반함수로 바꿨더니 에러가 뜨면서 화면이 안떠져요질문2) 이벤트 핸들러를 화살표 함수로 작성하면e.target.value += '!' 는 정상 작동되는데console.log()에서 Uncaught TypeError: Cannot read properties of undefined (reading 'log')가 뜹니다이유가 뭔가요?
-
미해결내러티브 있는 문서와 프레젠테이션
도형에 대한 템플릿을 공유받을 수 있을까요?
강의를 시간될때 보면서 많은 도움 받고 있습니다.그 중 도형 강의를 들어보니 10개 정도의 도형을 미리 만들어놓고 활용하라는 내용을 보았는데요.선생님께서 강의에서 보여주신 도형들을 혹시 파일로 공유받을 수는 없을지 여쭤보고자 합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
클래스 - 상속 (후반전) 강의 질문
강의에서와 달리 SpeedCam.java의 public String name;을 지우지 않으니 실행 결과의 마지막 줄에서 "과속단속 카메라 : 사진을 촬영합니다" 가 아닌 "카메라 : 사진을 촬영합니다"가 나오는데, 왜 이런 결과가 나오는 것인지 궁금합니다.제 생각으로는, SpeedCam.java의 public SpeedCam()에서 this.name = "과속단속 카메라"를 적어 놨으니 public String name;을 지우든 지우지 않든 "과속단속 카메라 : 사진을 촬영합니다" 가 나와야 할 것 같은데, public String name;을 지우지 않고 남겨 놓으니 SpeedCam()에서의 this.name이 무시가 되는 것 같아 그 이유가 궁금하여 질문드립니다.감사합니다.
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
삽입 정렬 - 1분 17초에서
여기서 선택 정렬은 가장 첫 번째 숫자인 4만 정렬되었다고 가정합니다. 선택 정렬은 정렬되지 않은 영역의 가장 앞에 있는 숫자를 하나씩 정렬된 영역의 적절한 위치에 ‘삽입’을 하며 정렬을 진행합니다. 삽입 정렬을 선택 정렬이라고 잘못 말씀하신건가용?