오늘은 현재 구현하고 있는 Chatbot 프로젝트에서 이미지를 올려 말하는 것 처럼 할 수 있고 이미지의 텍스트를 인식해 보여줄 수 있는 OCR 기능에 대해 찾아보던 중 Vision 프레임 워크가 있다는 것을 알게돼 한번 알아보려고 한다 🙂먼저 Vision 프레임워크는 머신 러닝 기술과 Swift의 동시성 기능을 결합해 앱에서 컴퓨터 비전 작업을 수행할 수 있다. 인간 혹은 동물의 신체 자세 또는 물체의 궤적을 추적한다거나, 텍스트를 인식 하거나, 눈 코 입 등 얼굴의 랜드마크를 감지하는 등 다양한 기능을 제공한다. 먼저 Vision 작업은 요청과 핸들러를 통해 실행되게 되는데 주요 핵심 클래스는 다음과 같다.VNImageRequestHandler : 정적 이미지 요청을 처리하는 클래스VNSequenc..
현재 HaruFit이라는 개인 프로젝트를 진행하면서 추후 유저 간의 커뮤니티 기능과 각각의 계정 별 저장된 운동 기록 및 정보들을 관리하기 위해 계정 정보를 관리하기 위해 사용자를 인증하는 과정을 추가해야 한다. 이를 위해 알아야 하는 개념인 JWT의 기본 개념에 대해서 먼저 정리해보도록 하자 머저 JWT는 JSON Web Token의 약자로 서버-클라이언트 간 인증을 위해 널리 사용되는 토큰 기반 인증방식이다! 서버가 로그인 성공 시 사용자 정보를 기반으로 토큰을 생성하면, 클라이언트는 이후 API 요청 마다 이 토큰을 HTTP 헤더에 포함해 보내게 되고, 서버는 이 토큰을 검증해 사용자를 인증하게 된다.JWT의 3가지 구성 요소Header어떤 해싱 알고리즘을 쓰는지JWT 타입{ "alg": "HS2..
오늘은 Swift Format , Swift Lint를 활용해 팀프로젝트 시 혹은 일관된 코드 스타일을 유지하고 좋은 코드 스타일을 유지하는데 큰 도움이 되는 방법을 알게 되어 한번 정리 해보고자 한다! 먼저 SwiftFormat, Swift Lint는 무엇이냐면 코드 스타일과 품질을 관리하는 도구! 라고 생각하면 된다. 각각 다른 성격을 가지고 있다!Swift Format : 코드의 일관된 스타일을 유지하고 가독성을 높여줄 수 있도록 자동으로 설정Swift Lint : 잘못된 코딩 스타일, 버그, 비효율적인 코드를 찾아 경고 혹은 오류를 통해 일관된 코드 스타일을 유지할 수 있도록 도와준다.둘 다 비슷하지만 다른 성격을 가지고 있어 나는 두개 다 사용하는 방식을 설정했다. 먼저 이 두가지는 SPM을 지..
이번엔 두번째로 Deadlock 에 대해서 알아보자Deadlock?먼저 데드락이란 여러 스레드가 서로가 가진 리소스를 기다리면서 계속 실행이 중단되어있는 상태를 말한다. iOS 개발에서는 멀티스레드 환경에서 동기 작업을 수행하거나 서로 잠긴 리소스를 접근할 때 발생하곤 한다. Deadlock 예시예시를 통해서 살펴보자DispatchQueue 데드락import Foundationfunc deadlockExample() { let queue = DispatchQueue(label: "com.example.queue") queue.sync { print("Task started") queue.sync { // 여기서 데드락 발생 ..
이번에 넥스터즈 면접 중 기술 면접을 진행하고 나서 내가 아직 많이 부족하다고 느낄 수 있었다.. Race Condition, Dead lock, Priority Inversion 등 멀티 스레드를 운용하면서 일어날 수 있는 문제점 등에 대해서 제대로 개념을 잡아두지 않아 답변에 어려움이 있었다.. 처음엔 조금 속상했지만 그래도 이런 경험을 통해 이러한 키워드, 개념들을 잡고 갈 수 있는 기회가 될 수 있으니까 모르면 배우면 되지~ 하는 마음으로 단계별로 개념을 정리해보도록 하자. 먼저 오늘은 멀티쓰레드 환경에서 Race Condition에 대해서 알아보도록 하자!Race Condition그래서 레이스 컨디션이 뭘까 도대체 경쟁 상태라고 해석할 수 있는 이 상태는 두개 이상의 쓰레드나 프로세스가 공유 자..
회사에서 웹뷰를 활용한 챗봇을 만드는 프로젝트가 시작해 Swift에서 웹뷰를 사용하는 방식에 대해서 기록으로 남겨두려고 한다. 요즘 많은 프로젝트에서 웹뷰를 활용한 개발이 많이 이뤄지고 있는데 사실 제대로된 웹뷰를 사용해보지 않아 이번 기회에 공부해보려고 한다.iOS에서 웹뷰를 사용하기 위해서는 주로 WKWebView를 사용한다. 하지만 나는 SwiftUI로 개발을 진행하고 있기 때문에 이 SwiftUI에서는 WKWebView를 사용할 수 없어 UIViewRepresentable를 활용해 UIKit에서 가져와 사용하는 방식으로 구현하려고 한다. UIViewRepresentable 사용UIViewRepresentable은 UIKit의 뷰를 SwiftUI에서 사용할 수 있도록 해주는 프로토콜이다. WKWeb..