묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨아키텍처 패턴 with iOS - GUI Architecture Patterns(이론)
질문 드려요!
안녕하세요 강의를 보다 헷갈리는 부분이 있어서 질문드립니다. 😅강의 중 Massive View Controller? 라는 챕터에서 강사님이 설명해주신 UIViewController의 책임을 제외한 네트워크통신 로직 또는 로컬데이터 저장하는 로직등에 관한 코드등을 임의로 Controller에 추가하면 비대해질 수 있다고 하셨는데 두 가지 예시는 데이터를 처리하는 로직이라고 생각이 듭니다. PDS의 사상으로 나누면 도메인으로 생각하는 것이 맞을까요?🤔 CocoaMVC에서 해당 로직 등에 관한 정확한 제시가 없는 부분이 개발환경에 따른 영향이 아닌 CocoaMVC아키텍처 패턴에서 문제로 봐야될까요? 🤔 CocoaMVC에서 해당 로직 등은 그럼 어디에 담당하는 것이 맞는지? 고민이 됩니다. 따라서 CocoaMVC에서 다른 아키텍처패턴등이 파생된 것이라고 볼 수 있을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
주식 정보 수집하기 attributeError 해결방법 있을까요?
강의를 들으면서 그대로 입력을 하였는데, attributeError가 발생합니다구글링도 해보고, 다양한 수정도 해봤는데 해결이 안되네요ㅠ조언 부탁드립니다아래는 에러 메세지입니다
-
해결됨
서비스 테스트 코드 계층에 @Transactional
@Transactional프로젝트를 하던 도중에 서비스 계층 테스트를 진행을 할 때에 @Transactional을 안넣고 진행했더니 데이터가 제대로 적용이 안되는 에러가 생겼습니다. 근데 다른 서비스를 테스트 할 때에는 안넣고 진행을 했는데 정상적으로 되는 경우도 있었습니다.물론 롤백에 관한 처리를 @AfterEach로 각 레포지토리를 비우고 진행했습니다.여기서 궁금한 점이 하나 생기는데 왜.. @Transactional을 테스트 코드에 넣지 않으면 제가 생각한 데이터가 나오지 않는 걸까요?.. Lazy Loding 이거 때문이라고는 하는데 잘 모르겠습니다.
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 공부 방식에 대하여
안녕하세요 코팩 강사님!
-
해결됨디자인 시스템 with 피그마
디자인토큰-spacing 네이밍 관련 질문
안녕하세요 선생님수업에서 baseSpacing값을 4로 기준잡고 그 외 네이밍을 4배수로 저장하는데요.만약에 베이스 값이 변경되야 할 때, baseSpacing값만 변경하면 그 외 속성 값들도 자동으로 변경되잖아요!그렇지만 속성 네임이 자동으로 변경되지 않는데 8~64로 저장 되어있는 속성 네임을 일일이 수기로 수정하면 되는거죠?(수업영상에 설명이 없어서 확인차 여쭈어봐요) 감사합니다
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 기본편
네이버 쇼핑 상품 정보 수집하기
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager # 크롬드라이버 자동업데이트 from selenium.webdriver.common.by import By import time # 브라우저 생성 browser = webdriver.Chrome('/Users/gimsuyeon/Desktop/현프파이썬/네이버쇼핑크롤링/chromedriver') # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메세지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service, options = chrome_options) # 웹페이지 해당 주소 이동 driver.get("https://www.naver.com") driver.implicitly_wait(10) # 로딩이 끝날 때까지 10초까지는 기다려줌 # 쇼핑 메뉴 클릭 driver.find_element(By.CSS_SELECTOR,'a.nav.shop').click() time.sleep(2) # 검색창 클릭 search = driver.find_element(By.CSS_SELECTOR,'input._searchInput_search_text_fSuJ6') search.click() # 검색어 입력 search.send_keys('아이폰 13') search.send_keys(Keys.ENTER) # 스크롤 전 높이 before_h = driver.execute_script("return window.scrollY") # 무한 스크롤(반복문) while True: # 맨 아래로 스크롤을 내린다. driver.find_element(By.CSS_SELECTOR, 'body').send_keys(Keys.END) # 스크롤 사이 페이지 로딩 시간 time.sleep(1) # 스크롤 후 높이 after_h = driver.execute_script("return window.scrollY") if after_h == before_h: break before_h = after_h # 상품 정보 div items = driver.find_elements(By.CSS_SELECTOR,".basicList_info_area__0T9JD") for item in items: name = item.find_elements(By.CSS_SELECTOR,".basicList_title__VfX3c").text try: price = item.find_elements(By.CSS_SELECTOR,".price_num__S2p_v").text except: price = '판매중단' link = item.find_elements(By.CSS_SELECTOR, ".basicList_title__VfX3c > a").get_attribute('href') print(name, price, link) .py:10: DeprecationWarning: executable_path has been deprecated, please pass in a Service object이렇게 터미널에 계속 오류가 뜨는데 어디가 문제 인지 모르겠습니다ㅠㅠㅠ 알려주세요ㅠㅠㅠ 셀레니움 4.0 버전 가이드 강의도 다 듣고 한건데도ㅠㅠ계속 오류가 납니다
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
window에서 Unable to find bundled Java version. 에러 어떻게 해결하나요?ㅠㅠ
환경설정 세팅 중 flutter doctor 실행했을 때, "Unable to find bundled Java version." 이 에러가 뜨네요 ㅠㅠ 구글링 해봐도 mac 사용자 해결방법만 나오지 window 사용자 해결방법은 따로 나오지 않네요 ㅠㅠ 도와주세요~
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
아이콘을 다양한 사이즈로 제작할 때 질문입니다.
안녕하세요. [해상도를 고려한 아이콘 Export]하기 편을 듣다가 궁금한 점이 있어 질문 드립니다.만약 24*24px 사이즈의 아이콘 위주로 pc에서 작업을 하다가 큰 사이즈의 아이콘이 필요할 시, 아웃라인 스트로크를 주고 사이즈를 늘리면 24px 아이콘보다 두께가 두꺼워 보이는데요.아이콘의 전체적인 스트로크를 비슷하게 보이게 하려면 그냥 원하는 사이즈 프레임을 만들어서, 24px 아이콘 굵기랑 시각적으로 비슷해보이는 굵기로 맞춰서 만들어야 하나요? 아이콘을 그릴 때 비율 때문에 어쩔 수 없을 경우 프레임 안의 개체가 소수점이나 홀수가 나와도 괜찮나요,,? 답변해주시면 감사하겠습니다 !
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다.
항상 잘듣고있습니다.sion941004@naver.com 감사합니다!
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
Synchronous URL loading 오류
Synchronous URL loading of https://picsum.photos/1000 should not occur on this application's main thread as it may lead to UI unresponsiveness. Please switch to an asynchronous networking API such as URLSession. guard let data = try? Data(contentsOf: url) else { return }
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.
글자 최소길이, 최대 길이 작성 from 서브쿼리에 전체 데이터 글자 작성1,2번 조인을 통해 글자 최소길이, 최대 길이의 city 구함글자수 별 city컬럼 오름차순을 통해 1순위 데이터만 출력을 위한 ROW_NUMBER함수 사용ROW_NUMBER가 1인 것만 출력이런식으로 굳이 복잡하게 풀었습니다..더 쉬운 방법이 있을 거 같은데 알려주시면 감사하겠습니다. Selectcity, lcFrom(Select city, lc, ROW_NUMBER() OVER(Partition By lc Order By city) rnFrom(Select city, length(city) lcFrom station a)ainner join(Select min(length(city)) min_c, max(length(city)) max_cFrom station)bon a.lc = b.min_c or a.lc = b.max_c)aWhere rn = 1
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
js -> tsx로 전환 시 특정 import파일 빨간줄
강의에서는 import { useMutation } from "@apollo/client";에 빨간줄이 없는데 실습을 하면서 js -> tsx로 변환 하면서 특정 import에 빨간줄이 생겼습니다.에러 코맨트는 Cannot find module '@apollo/client' or its corresponding type declarations.ts(2307)입니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제를 풀어보고 강의를 다보고나서 바로 백준으로 가도 될까요??
안녕하세요.강사님 덕분에 무사히 강의 완주를 할 수 있었고, 문제 유형에 따라 풀어보면서 알고리즘 개념을 익힌 것 같습니다. 다름이 아닌 앞으로의 공부 방향성에 대해 여쭤볼게 있습니다.이 강의를 완주하고 나서 바로 백준 사이트에서 문제를 풀지 아니면 이 강의에서 푼 문제들 중에 틀린 문제만 다시 풀어볼지 고민입니다.선택의 가이드를 주시면 감사하겠습니다.아래 사이트는 제가 문제를 풀면서 틀린 문제들을 정리한 개인 노트입니다.https://stirring-zone-39a.notion.site/000a85a88dc64def8241b7fa5baff59b
-
미해결앨런 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=' ')이런식으로 문제를 풀어도 문제가 없을까요?