Search

11주차 멘토링

진행 일자
2023/11/29
피드백 여부
피드백 완

이번주에 배운 것들

1.
프로토타이핑
2.
카메라 UIImagePickerController
3.
데이터베이스 (코어데이터, SQLite)

프로젝트 진행 상황

카메라 기능
1. 카메라 촬영기능
2.
사진 라이브러리에 접근할수 있는기능
이미지 화면을 구성하여 상품 검색뷰 제작
OCR이 잘안되서 고화질로 크롤링 우회 > 법적인 문제 여부 체킹
크롤링이 아닌 이미지를 모아서 해야할듯?
구글 이미지 검색하여 데이터 수집중 > 한품목 5가지 100개정도 표준화

공유할 사항

문혁준
데이터 경쟁에 대해서 이해가 되지 않습니다.
김수비
CoreData 수업 때 실행은 되는데 왜 되는지 이해가 부족합니다.

프로젝트 진행상황 멘토링 체크

수비님
카메라 기능 + 사진 라이브러리 접근 등 기능 추가 완료!
태훈님 & 회원님
회원님과 상품 검색뷰 구현 완료
이미지 모델링 진행중!
혁준님
수비님과 “카메라 기능 + 사진 라이브러리 접근 등 기능 추가 완료!”
회원님
상품 검색뷰 구현 완료
남은 Task
모델링 → 연동
앱 스토어에 테플 업로드
앱 심사 및 배포
이번주부터 실습팀 배정!
이번주는 아이디어 단계
생각해본 개선 사항들
카메라로 촬영하는동안 해당 기능 제공!
햅틱 기능

멘토링

Race Condition
데이터 경쟁
하나의 공유 자원에 여러 프로세스 혹은 스레드가 동시에 접근할때 발생할 수 있는 CS 문제!
if 초코렛 ≠ 0 { ( // 태훈님이 입장해서 초코렛을 1개 가져감! ) 초코렛 1개 가져오기 수행! }
방 하나에 여러 스레드가 동시에 접근할 수 있어서 발생함!
import Foundation var counter = 0 let counterQueue = DispatchQueue(label: "counter", attributes: .concurrent) // 공통 기능! func plusCounter() { counterQueue.sync(flags: .barrier) { for _ in 0..<1000 { let currentValue = counter // 1 스레드가 500이라는 값을 인지 -1 // 2 스레드가 501이라는 값을 인지 -2 --> 500 값 인지 // 1스레드가 501로 변경! 하고 counter에도 501을 넣어줘야함! -3 // 2스레드가 502로 변경! 하고 counter에도 502을 넣어줘야함! // 2스레드가 501로 변경! 하고 counter에도 501을 넣어줘야함! counter = currentValue + 1 } } // count == 1000이 증가되는 상황 } let queue = DispatchQueue(label: "apple", attributes: .concurrent) DispatchQueue.global().async { queue.async { plusCounter() } } DispatchQueue.global().async { queue.async { plusCounter() } } DispatchQueue.global().async { queue.async { plusCounter() } } DispatchQueue.global().async { queue.async { plusCounter() } } // 4000 // 3980 func test() { DispatchQueue.global().asyncAfter(deadline: .now() + 10) { print("\(counter)") } }
JavaScript
복사
struct Car // Entity { name: String // Attribute age: Int // Attribute }
모델 → 객체
context → 객체를 다루는 매니저 - 객체의 속성에 값을 넣을 수도 있고 객체 인스턴스 생성/삭제/업데이트 var car = Car(name: “green”, age: 3)
car.name = “greeeeen”
→ NS → NeXT Step
NSString
float CGFloat
랩 팀 아이디어 피드백!
간단하게 핀치줌에 대한 레퍼런스 제공하기!!!