전체 글

전체 글

    [iOS Error] - [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID .feat: RxSwift

    [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID UITableViewCell에 위치한 TextField를 선택하면 firstResponder가 되자 마자 바로 위의 에러가 발생하며 resign이 되는 오류였습니다. 구조는 다음과 같습니다 TableView -> Cell -> StackView -> TextField(문제가 되는 부분) UITableView는 내부 컨텐츠 크기만큼 height이 늘어나도록 만들어둔 커스텀 클래스였고 그렇기 때문에 재사용 이슈가 발생하지 않지 않을까 했지만 새로운 값이 바인딩 될 때 재사용이 발생합니다..

    [iOS] - 클릭 이벤트가 발생하지 않는 이유

    사이드 프로젝트를 진행하다 제 하루를 날려먹은 원인을 기록하고자 합니다.. 커스텀 바텀 시트를 구현중이었습니다. 아래의 커스텀 바텀시트를 구현중이었고 닫기의 tap Event를 뷰모델에 바인딩을 했는데 아무리 클릭을 해도 tap 이벤트가 발생하지 않았습니다. 해당 뷰는 이런구조입니다. 뷰컨 - 1커스텀뷰(반투명 배경의 뷰) - 2커스텀뷰(바텀시트뷰) 애니메이션까지 모두 구현했으나 아무리 탭 이벤트가 발생하지않습니다. 그래서 1커스텀뷰에 touchesBegin을 찍어보니 1커스텀뷰까진 터치이벤트가 잘 전달됩니다. 그래서 2커스텀뷰의 레이아웃을 확인해보니 contentView는 내부의 컨텐츠를 스택뷰로 구현해놓은 UIStackView입니다. 2커스텀뷰의 top이 bottom과 같았을테고 event전달이 하위..

    [Agile] - 2. 칸반(Kanban)

    사이드 프로젝트를 시작하며 Jira를 사용하게 되어 칸반에 대해 공부해봅니다. 애자일을 먼저 학습하면 도움이 됩니다. 칸반(Kanban) 칸반의 가장 큰 특징은 다음과 같다고 생각합니다. 칸반은 연속적인 흐름 방식이다. - 회고를 통해서.. 칸반은 팀이 수행해야하는 업무와 팀원이 맡을 수 있는 작업량 간의 균형을 맞추는 수단입니다. - WIP를 통해서.. 모든 칸반팀의 업무는 업무를 시각화하고 팀 간 워크플로우를 최적화 하는데 사용되는 도구인 칸반보드를 중심으로 이루어집니다. 칸반보드를 이해하면 칸반을 이해할 수 있습니다. 우선 칸반이 필요한 이유를 알아봅시다. 칸반이 왜 필요한가? 팀이 새로운 프로젝트를 시작한다면 누가 어떤 업무를 수행하고 있는지, 업무가 어떤 단계에 있는지와 같은 스케쥴을 쉽게 파악..

    [Agile] - 1. 애자일(agile)이란 무엇인가.

    Agile agile = 기민한, 날렵함 애자일이란 소프트웨어 개발 방식의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론입니다. 애자일은 기민하다라는 뜻으로 , 둘 사이의 균형을 잡자는 의도로 나온 개발방법론입니다. 폭포수모델 전통적인 개발방법론중 에는 이 있습니다. 이런 전통적인 개발방법론들은 대략 다음과 같은 틀을 가집니다. 기획 > 디자인 > 개발 > 테스트 > 배포 > 유지보수 많이 겪어봤던 프로세스입니다..! 이 프로세스는 마감기한을 딱. 정해놓고 그 마감기한 안에 프로젝트를 끝내기 위해 모든 팀원이 자신이 맡은 일을 끝낸 후 다음차례로 넘깁니다. 아무 문제 없이 끝난다면 좋겠지만 현실은 그렇지..

    Framework, Library, API

    API(Application Programming Interface) API는 응용프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다. 쉽게 말해 프로그램 사이를 연결해주는 다리역할을 합니다. 예를 들어 위치공유 프로그램을 개발하고싶은데, 직접 지도서비스를 개발하기엔 시간과 비용이 많이들어 타사의 서비스를 사용하겠다. 라고 한 경우 Google의 지도서비스를 생각할 수 있습니다. Google의 지도 서비스를 사용하려면 API를 호출해야합니다. https://map.google.com/37.2318&26.138 이런식으로 호출을 하게되면 Google지도서비스는 내 프로그램에게 지도와 관련된 정보를 전달해주게 될 겁니다. 여기서 https://map.google....

    [iOS] Push Notification(3). FCM

    Firebase를 이용해 원격 푸시 알림을 사용해봅니다. Push Notification(1), Push Notification(2)에 PushNotification과 APNs의 내용들을 자세히 정리했기 때문에 추가적인 설명은 넘어가겠습니다. 1. APNs 인증 키를 발급받아야합니다. Apple Developer > 인증서, 식별자 및 프로파일 > 키 키는 계정당 2개가 최대입니다. 키 이름은 원하는대로 생성하고, Apple Push Notifications 를 체크합니다. Continue를 클릭합니다. Register를 선택하고 등록을 완료하면 "Download Your Key" 페이지가 등장하는데, 여기서 우측에 DownLoad버튼을 클릭하면 ".p8" 확장자의 파일이 다운로드됩니다. 여기서 p8..

    [iOS] Push Notification(2). PushNotification 구현

    출처: Kodeco PushNotification Push Notification에 필요한 배경지식은 여기에 정리되어있습니다. PushNotification은 흔히 푸시알림, 푸시 메시지로 일컫는 형태입니다. 앱에서 알림을 보내야 하는 경우가 필요합니다. 새로운 메세지가 왔던가, 새로운 소식을를 전달하던가 Push를 진행하기 위해선 Push Server가 필요하지만.. 여기에선 terminal을 통한 push TEST를 진행해봅니다. 사전 작업 1. Bundle Identifier PushNotification을 사용하기 위해선 Apple Developer계정이 있어야 합니다. Bundle Identifier를 설정해줍니다. 2. Push Notification 사용 설정 해당 Target에 Signin..

    [TLS] 2. TLS의 인증서

    TLS의 인증서 TLS(1) 포스팅의 다음 포스팅으로 인증서를 다룹니다. TLS는 3가지 주요 이점 TLS는 다음 이점을 제공합니다. 암호화: TLS(1)에 작성한 암호화 기법들로 서버 사이에 오가는 데이터들을 "스니핑"으로부터 보호합니다. 암호화로 실제 데이터를 숨길 수 있습니다. 무결성: 데이터가 위, 변조 되지 않도록 보호합니다. 대칭키를 RSA방식으로 안전하게 공유 후 암호화된 통신으로 중간에 데이터를 임의로 수정할 수 없도록 합니다. 인증: 데이터를 주고받는 서버가 신뢰할 수 있는 서버인지. 클라이언트가 신뢰할 수 있는 서버와 통신하는 것인지 확인하는 작업이 필요합니다. 이 과정에서 "인증서"가 사용됩니다. 여기서 인증서가 등장합니다. 인증서 인증서는 서버가 신뢰할 수 있는 서버인지 확인할 때 ..

    [TLS] 1. TLS의 암호화(대칭키, 비대칭키)

    TLS SSL, OpenSSL, HTTPS 모두 "보안"과 관련된 것입니다. TSL가 뭔지 알기위해 배경지식을 하나씩 설명해보겠습니다. 1. SSL(Secure Socket Layer) SSL은 네트워크 통신의 보안을 강화하기 위해 설계된 암호화 프로토콜입니다. 쉽게 말해 웹브라우저와 서버 혹은 두 서버 사이에 전송되는 데이터를 암호화하여 인터넷 통신 보안을 유지하는 표준 기술입니다. 이는 TCP/IP네트워킹에 적용됩니다. SSL은 현재 TLS로 대체되었다고 합니다. 그러므로 무엇인지만 알고 넘어가도 좋을듯 합니다. TLS를 알아야죠. 2. TLS TLS는 SSL의 업데이트버전? 이라고 생각하면 될 것 같습니다. SSL이 표준화되며 바뀐 이름이 TLS입니다. 아직도 TSL라는 이름 대신 SSL라고 불리긴..

    [iOS] 소켓통신 (2). echo server와의 소켓통신.

    echo server echo server는 클라이언트가 전송해주는 데이터를 그대로 되돌려 전송해 주는 서버를 말합니다. 소켓통신을 공부해보려 하는데 연결할 서버가 없어서 echo server를 이용해보기로 했습니다. 간단한 echo_server입니다. # echo_server.py import socket def start_echo_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('ip주소', 8085)) server_socket.listen(5) print("Echo server is listening...") while True: client_socket, addr = serv..