공부
-
Flutter Supabase Google 로그인 오류 해결 방법공부/기타 2025. 3. 18. 01:32
PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null) 계속해서 소셜 로그인이 동작하지 않는 오류를 겪었습니다.이 문제는 저만 겪었으면 하는 마음에 올립니다.결론부터 말하자면 debug keys는 추가해뒀는데 release는 추가 안해서 발생했던 것... 문제 상황 Supabase 활용해서 google 로그인 구현해야하는 상황이었습니다. 우선, android/key.properties 에 이렇게 관리중이었고,upload-keystore.jks 파일도 마찬가지로 key.properties 와 같은 경로에 저장해뒀습니다.storePassword=스토어비번keyPassword=키비번key..
-
[정보처리기사] 암호 알고리즘(실기)공부/기타 2024. 7. 14. 23:37
개인키 암호화(Private Key Encryption)동일한 키로 데이터를 암호화하고 복호화대칭키, 단일키 암호화암호화/복호화 속도가 빠르지만, 관리해야 할 키의 수가 많다.종류스트림 방식(비트 단위로 암호화)LFSR, RC4, TKIP블록 암호화 방법DES, SEED, AES, ARIA, IDEA, Skipjack공개키 암호화(Public Key Encryption)공개키는 사용자에게 공개, 비밀키는 관리자가 관리관리해야할 키의 숫자가 적지만, 암호화/복호화 속도가 느리다양방향 알고리즘SEEDKISA(한국인터넷진흥원)에서 개발한 블록 암호화 알고리즘 1999년블록 크기는 128비트이며 키 길이에 따라 128,256,으로 분류됨ARIA2004년, SEED 이후로 나온 국가 정보원에서 개발한 개인키 암호..
-
Swift UI와 Gemini API를 활용한 Chat Bot: 채팅 구현 (2/2)공부/iOS 2024. 3. 19. 18:19
지난 포스트에서 이어서 작성하겠습니다. (코드 전문 포함) 목차 말풍선 모양 만들기 질문을 위한 입력 필드 만들기 채팅 말풍선 생성하기 채팅 메세지 리스트 생성하기 코드 전문 말풍선 모양 만들기 사용자(흰색)가 질문을 하면 gemini(노랑)가 답변하는 형태로 대화가 진행됩니다. 이를 위해 1. 우선, 채팅 말풍선 Shape를 만들어줍니다. 좌측하단, 우측하단, 우측상단을 둥글게 만들어 줍니다. struct ChatBubbleShape: Shape { func path(in rect: CGRect) -> Path { let path = UIBezierPath( roundedRect: rect, byRoundingCorners: [.bottomLeft, .topRight, .bottomRight], cor..
-
Swift UI와 Gemini API를 활용한 Chat Bot: 기능 구현 (1/2)공부/iOS 2024. 3. 13. 00:21
목차 Gemini API? Google API KEY 발급하기 Gemini SDK 설치하기 Gemini API의 4가지 기능 기능 구현하기 Gemini API? 제미나이는 구글과 딥마인드가 개발한 멀티모달 생성형 인공지능 모델입니다. 이 포스트에서는 제미니 API의 주요 기능과 스위프트 앱에서 활용하는 방법에 대해 살펴보겠습니다. 우선, 제미나이 API는 두 가지 형태의 개발 환경을 통해 제공됩니다. 구글 AI 제미나이 API(Google AI Gemini API) 버텍스 AI 제미나이 API(Vertex AI Gemini API) 이 중 구글 AI 제미나이 API는 학습 목적이나 소규모 개발에 적합합니다. 이에 반해 버텍스 AI 제미나이 API는 중규모 이상의 시스템에 적합하며 구글 클라우드 서비스인 ..
-
[SwiftUI] 1. TCA를 왜 도입하는걸까? (MVVM의 운명은?)공부/iOS 2024. 2. 27. 19:14
# TCA? TCA(The Composable Architecture)는 Swift UI에서 떠오르고 있는 아키텍처 중 하나입니다. https://github.com/pointfreeco/swift-composable-architecture 위의 깃허브 레포를 확인해보시면 10.9k의 별(2024.02.27 기준)을 보유하고 있습니다. 어째서 Swift UI의 아키텍처 트랜드가 TCA로 변화하고 있는 것일까요? MVVM 패턴과 TCA 패턴에 대해 알아보며 그 이유를 확인해 봅시다. # MVVM MVVM 간단 소개 MVVM을 설명하기 위해 사용자가 검색창에 특정 키워드를 검색하는 상황을 예로 들겠습니다. 1) 사용자가 입력한 키워드를 ViewModel에 전달합니다. 2) ViewModel은 Model로..
-
[iOS] status code가 200일 때 빈 응답이 들어오는 경우공부/iOS 2024. 2. 17. 15:04
배경 Alamofire로 빈 타입으로 파싱을 시도하던 중에 오류가 발생했다. 응답은 status code는 200으로 들어오고 body가 비어있었는데, responseDecodable에서 "Empty"로 파싱을 시도했지만 inputDataNilOrZeroLength 오류가 발생했다. 해결법 해결법은 간단하게도 emptyResponseCodes 파라미터만 추가하면 됩니다. emptyResponseCodes에 성공시킬 응답코드를 담은 배열을 추가해주면 오류가 해결됩니다. func requestVerificationCode(email: String, completion: @escaping (Result) -> Void) { let urlString = "http://localhost:8080/member/se..
-
[iOS]텍스트필드가 등장할 때 타임아웃 뜨는 버그 해결법공부/iOS 2024. 1. 17. 17:35
짜증나는 버그 iOS17 버전으로 개발을 위해 Xcode를 업데이트 한 이후로 갑자기 위의 버그가 등장했다. 간혹가다 락이 걸려 앱 자체가 동작하지 않을 때도 있어 개발에 어려움이 있었다... [UIKeyboardTaskQueue lockWhenReadyForMainThread] timeout waiting for task on queue Error for queryMetaDataSync: 2 [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID 도대체 정체가 뭘까? 찾아보는데 나 뿐안 아니라 많은 사람들이 이 버그에 고통받고 있었다 ..
-
키체인을 활용해 jwt Token 안전하게 저장하기공부/iOS 2024. 1. 16. 16:27
Keychain(키체인) 간단 소개: 키체인은 iOS에서 사용할 수 있는 secure 저장소입니다. 흔히 사용하게되는 UserDefaults의 경우 plist 파일에 저장되기 때문에 비밀번호, 신용카드 번호 암호화 키 등의 민감한 데이터를 저장해선 안됩니다. 키체인에 접근하기 위해선 디바이스의 비밀번호를 통해 보호되기에 사용자만 키체인에 저장된 데이터에 접근할 수 있습니다. Keychain에 사용되는 데이터 보호 방식: 키체인은 AES-256-GCM 암호화 알고리즘을 사용하여 데이터를 암호화하며, Secure Enclave와 같은 하드웨어 보안 모듈을 활용하여 데이터를 안전하게 저장합니다. 키체인은 파일 시스템에 저장되어 있는 SQLite 데이터베이스로 구현되어 있습니다. identifier나 group..