묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
이미지 로드 기초
이미지 로드 기초 강의에서 강의에 나온대로 따라 해보았는데,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. 라는 문구가 뜨고 사진 크기 조절이 안됩니다.코드를 다르게 수정해야 할까요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
딕셔너리?
강의중rates 의 데이터를 가공하기위해 PickerViewController 에var rates : [(String, Double)]? 로 선언하시고URLSession 을 사용하여 Decoder 하는 과정에서 Json 데이터가 순서없이 들어오기 때문에 순서를 있게하려고 map 이나 sorted 형태를 사용한다 하셨는데,위에 선언한 rates : [(String, Double)]?는 array 안에Tuple을 element로 사용해 변수를 선언하셨는데, 왜 element 를 Tuple로 선언하셨는자 궁금합니다.찾아본 바로는 Dictionary 타입의 값을 비교하는 것은 불가능하다는데 그렇기때인가요??var rates : [String, Double]? 딕셔너리 형태로 선언하는것보다 더 효율적인가요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
present(_ viewController: animated)에 대해 질문이 있습니다
이 방법과let sb = UIStorybard(name: "Main", bundle: nil) guard let selfVC = sb.instatntiateViewcontroller(withIdentifier:) ... present(selfVC, animated: true) 그냥 인스턴스를 생성하는 방법의 차이가 궁금합니다.let selfVC = SelfViewController() present(selfVC, animated: true) 밑에 방법으로 하면 selfVC의 배경이 투명한 걸 제외하고 차이가 있나요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
이미지는 어디..?
이미지를 어디서 다운 받나요..? 제가 이미지를 다운받아서 집어넣었는데 이미지가 app이 까만 이미지에요 디바이스의 앱이 까만색입니다.
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
클로즈 배열? 의 실행방법
var myClosureList2: [() -> Void] = [] func showString2(completion: @escaping () -> Void){ myClosureList.append(completion)}showString2 { print("aa")} 에서 myClosureList[0] 또는 myClosureList[1] 등을 출력하려고 할때 어떻게 해야하나요? 검색을 해 보려고해도 뭐라고 검색해야할지 감이 안와서 질문 드려요.showString2 함수에 파라미터로 클로저 를 넘겨 저장했기때문에 myClosureList 안에는 클로저가 담겨있는데 이 중 하나의 클로저를 실행을 어떻게 시키나요?
-
미해결운영체제 공룡책 강의
Page는 Text Data이외에 다른 메모리도 포함하나요?
page에는 프로그램 코드뿐만 아니라 프로세스 실행중에 발생되는 동적 데이터도 포함되어 있나요?동적 데이터가 포함되어 있다면 page out시 이들은 어떻게 유지되나요?동적 데이터가 포함되지 않았다면 copy on write가 발생하는 이유는 무엇인가요?(프로그램 코드는 항상 완전히 동일하다고 생각합니다.) copy on write같은 상황이 발생하는 이유는 page가 동적 데이터를 포함하기 때문이라고 생각합니다. 프로그램 코드만 있다면 별도의 페이지를 카피할 필요가 없을 거같아서요.하지만 이 경우는 page out시에 page에 포함된 동적 데이터도 날아가므로 동적 데이터를 유지할 다른 방법이 또 필요할 것 같습니다. 만약 별도의 메모리 공간을 사용한다면 애초에 page에 동적 데이터를 포함하는 것이 무의미해질 것 같아서 혼란스럽습니다.
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
stockservice 함수의 saveandflush 질문이 있습니다
stockservice 클래스의 decrease의 saveandflush를 synchronized를 위해 사용한 것은 이해가 갔습니다.근데 jpa를 사용할 때 값을 update할 때 더티체킹에 의해서 update가 확인이 되어 repository를 통해 save를 하지 않아도 되는걸로 알고 있는데 실무에선 save나 saveandflush를 사용하지 않고 decrease 메서드만 사용해도 될까요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
willSet, didSet 질문
35강에서 willSet, didSet 관련하여 질문 드립니다.class ClassA { var a = 0}class ClassB { var b = ClassA() { willSet { print(newValue) } didSet { print(oldValue) } }}class는 레퍼런스 타입이라서 classB.b.a = 100이 안되고, struct는 된다고 하셨는데, 강의를 여러 번 들어도 이해가 가지 않아 질문 드립니다.혹시 더 자세하게 설명해주실 수 있을까요?
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
동시처리 처리 적용 방안
아래와 같은 프로그램을 만들때 어떤 방식으로 병렬처리를 구성 하면 될까요 ?조건 1 : 외부 통신 (시리얼) 로 물체의 감지 여부 (스트림 수신데이터) 를 계속 적으로 확인 해야 한다. 조건 2: 조건 1에서 물체가 감지 되었을때, 카메라의 영상을 가져온다. 조건 3: 조건 2에서 가져온 영상데이터를 다양한 처리를 하여 결과를 산출한다 (시간이 걸리는 작업) ——현재 문제점—조건 3에서 시간이 걸리기 때문에 조건 1의 감지가 실행 되지 않는 문제 제가 생각하는 루틴 Producer-Consumer Pattern 패턴 적용 조건 1에서 물체 감지 —생산자—조건 2에서 Queue 에 카메라 영상 저장 —소비자—조건 3에서 Queue 에 카메라 영상을 가져와 처리 질문 1 : 위와 같은 경우 어떤 병렬처리를 적용하면 제일 좋을까요 ? 질문 2 : Producer-Consumer Pattern 패턴 적용 시 “py_ad_1_7.py” 조건3에서 오래 걸리는 작업을 실행 시 조건 1도 중간 중간 실행 할수 있을까요 ? 감사합니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
Facade를 controller 에서의 사용
안녕하세요 동시성 관련된 수업을 너무 잘 들었습니다. 위와 같이 만들어진 facade의 decrease 메서드를 controller에서 바로 사용하면 동시성 문제가 해결되는걸까요?
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
35강 property_2 앞부분이 잘린 것 같습니다.
확인 부탁 드립니다.property observer 설명 없이 바로 코드 작성으로 들어가네요.
-
해결됨성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
Task 질문
Task{}와 DispatchQueue.global().async{}와는다른건가요 ?? 아니면 동작방식은 똑같은데 이름만 다른건가요
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI, async, await)
aiohttp 동시 요청 수 제한 관련
안녕하세요. 강의 잘들었습니다!강의 내용 토대로 비동기로 API 수집을 구현했었는데API 서버가 제가 보낸 모든 요청을 처리하지못해 오류 발생하여 요청 수를 제어하려고 합니다.예를 들어들어 각기 다른 파라미터로 서버에 요청해야 할 수가 총 1000번이라면1초당 10개씩만 요청하려고 합니다.이럴 경우에는 어떻게 구현하는게 좋을까요?semaphore 사용해서 하는게 맞는건지 아님 aiohttp.BaseConnector 의 limit 수 파라미터를 조정하는게 맞는건지 궁금합니다.https://docs.aiohttp.org/en/stable/client_reference.html#baseconnector그리고 한번에 요청 보내는 수뿐만아니라 요청보내는 간격에 대해서도 제어하려면 어떻게하면 좋을지 의견부탁드립니다!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
LettuceLockStockFacadeTest를 다시 실행하면 왜 실패가 날까요?
test가 정상으로 처리되어 redisson을 추가하여 test하였습니다.RedissonLockStockFacadeTest는 이상이 없는데LettuceLockStockFacadeTest를 재시도 한 결과 실패가 됩니다.원인을 찾아보려고 다 다시 만들어봤지만 동일한 이슈가 발생하여습니다. 무엇이 문제일까요?redisson의 종속성을 삭제하고 돌리면 이상이 없음을 확인하였습니다. LettuceLockStockFacade 컴포넌트 와RedissonLockStockFacade 컴포넌트는 함께 사용할 수 는 없나요?또한 그 이유가 무엇인가요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
동시성 이슈 질문
안녕하세요. 동시성 이슈를 synchronized 키워드를 사용하지 않고 해결해보려고 했었는데요.MySQL InnoDB의 default level은 repeatable_read로 알고 있어서 한 단계 더 높은 수준인 serializable로 설정하면 동시성 이슈를 해결할 수 있을거라 생각을 했었는데요. 그래도 동시성 이슈가 발생하더라구요..@Transactional(isolation = Isolation.SERIALIZABLE) public void decrease(Long id, Long quantity) { Stock stock = stockRepository.findById(id).orElseThrow(); stock.decrease(quantity); stockRepository.saveAndFlush(stock); }제가 뭘 놓치고 있을까요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
실무에서는 어떠한 방식을 선호하나요?
실무에서 mysql lock을 사용하면 퍼포먼스부분에서 우려가 되는데요~실무에선 redis를 사용한 동시성 제어를 주로 하나요?실제로 실무에서 어떠한 방법으로 동시성을 처리하는지 궁금합니다!!
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
환율 계산기 앱 - 네트워크처리1 에러가 발생하는데요 ㅠ
[Assert] UINavigationBar decoded as unlocked for UINavigationController, or navigationBar delegate set up incorrectly. Inconsistent configuration may cause problems.위와 같은 에러가 발생하는데, 코드 문제는 아닌거 같고 Xcode문제 인 것 같습니다. 구글링을 해봐도 해결책을 찾지 못해 질문 남겨요 !! 아 그리고 혹시 SwiftUI 강의도 새로 찍으실 계획이신가요 ?
-
해결됨고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
multiprocessing(4) - sharing state 공유 변수 출력 값 예상치와 다를 때
환경 차이(Python 3.8 + M1 Pro) 인지는 모르겠습니다만 저 같은 경우는 기대값이 50씩 증가되어 최종 450이 나오질 않더군요. 다른 분도 마찬가지면 참고하라고 아래 코드 넣습니다.def generate_update_number(v: int): with v.get_lock(): for _ in range(50): v.value += 1 print(current_process().name, 'data', v.value)
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
낙관적 락 무한루프 도는 이유 공유합니다 !
MySQL을 사용한다면 Isolation Level이 REPEATABLE READ가 기본으로 설정되어 있는데요. 이 때 트랜잭션 안에서 처음 SELECT한 값은 트랜잭션이 끝나기 전까지 몇 번을 다시 SELECT해도 동일한 값으로 읽게 됩니다. 이것 때문에 문제가 발생하는데요...트랜잭션 안에서 낙관적 락이 진행되도록 구현한 상황에서 쓰레드 100개가 동시에 재고를 감소 시키고, 업데이트에 성공하면 version을 1씩 증가시킨다고 해보겠습니다. DB에는 Stock이 100개 version이 1로 세팅되어 있다고 가정합니다.@RequiredArgsConstructor @Service public class ProductService { private final ProductRepository productRepository; @Transactional public void subtractStockOptimistic(int productId, int quantity){ int updatedCount = 0; while (updatedCount == 0){ Product product = productRepository.findById(productId); product.subtractStock(quantity); updatedCount = productRepository.updateStockOptimistic(product); if (updatedCount <= 0) { //업데이트에 실패한 경우 50ms 대기 try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } } } } } <update id="updateStockOptimistic"> update test_product set stock = #{stock}, version = version + 1 where id = #{id} and version = #{version} </update>쓰레드 100개는 처음에 재고를 읽어서 모두 다음 값을 받아옵니다.stock : 100, version : 1제일 빠른 트랜잭션이 업데이트를 성공하고 DB는 다음과 같이 변합니다.stock: 99, version: 2이제 나머지 99개의 트랜잭션은 version이 다르므로 모두 업데이트에 실패하게 됩니다.업데이트에 실패하게 된 트랜잭션들은 재시도를 하게 됩니다.이 때 DB에서 다시 읽어드린 재고는 stock: 99, version: 2일 것 같지만 실제로는stock: 100, version: 1 를 읽게 됩니다.왜냐하면 여전히 하나의 트랜잭션 안에 들어 있고, Isolation Level이 REPEATABLE READ로 처음 읽은 값을 계속 읽게 되기 때문입니다.따라서 첫 트랜잭션을 제외한 모든 트랜잭션은 무한히 실패하게 됩니다.......따라서 한 트랜잭션 안에서 업데이트와 재시도 로직이 진행되지 않도록 @Transactional을 메소드에서 떼주시면 정상 동작하게 됩니다.혹시 정말 Isolation Level 때문인지 확인하고 싶으신 분들은 DB에 Isolation Level을 READ COMMITTED로 바꾸고 테스트를 진행해보시면 @Transactional이 붙어 있어도 정상 동작하는 것을 확인하실 수 있습니다~!
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
비관적 락과 update product set stock = stock -1 where id = 1의 차이
update product set stock = stock -1 where id = 1 이렇게 할 경우 읽는 작업과 쓰는 작업이 원자적으로 이루어지고, 이 쿼리가 커밋하기 전까지는 다른 update 쿼리는 블락되기 때문에 비관적 락과 다른 점이 없다고 생각되는데요.제가 잘못 생각한 부분이 있을까요?