전체 글

전체 글

    [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..

    [iOS] 소켓통신 (1). Socket과 TCP와 UDP

    소켓통신공부 첫 번째 글입니다. 소켓의 본질을 먼저 이해해봅시다. 소켓 소켓은 OS커널 영역에 구현되어있는 프로토콜요소의 추상화된 인터페이스 뭐 이런 저런 어려운 설명이 많은데 "File(파일)" 이라고 생각하면 쉬울 것 같습니다. OS에서 커널 영역은 운영체제가 관리하는 영역입니다. 시스템 관리를 위한 영역(모드) 느낌이랄까요 (내용을 이해하기 위해서 꼭 완벽히 알아야하는 개념은 아닙니다.) 예를 들어, A와 B는 모두 File입니다. 어떤 파일(A)을 따라갔더니 Bluetooth가 나오면 Bluetooth소켓, 어떤 파일(B)을 따라갔더니 IRDA가 나오면 IRDA소켓이 됩니다. 아무튼 소켓이라는 단어는 여러곳에 사용합니다. 여기서 우리가 알아볼건 TCP/UDP 소켓입니다. TCP로 설명을 해보겠습니..

    [iOS] 스토리보드와 코드베이스 UI구현

    iOS 개발에서 UI를 구현하는 방식에는 크게 스토리보드를 사용하는 방식과, 코드로 구현하는 방식이 있습니다. 각 방식의 장점과 단점을 정리해봅니다. 스토리보드로 UI 구현시 장점 시각적 편의성: 스토리보드에서 UI컴포넌트를 드래그 앤 드롭으로 배치할 수 있으므로 레이아웃을 쉽게 구성할 수 있습니다. 코드량 감소: UI컴포넌트의 배치와 속성을 직접 코드로 작성하지 않아도 되므로 초기 코드량이 줄어듭니다. 화면 플로우 파악: 여러 뷰 컨트롤러와 세그웨이(segue)를 한눈에 볼 수 있어 앱의 전체적인 플로우와 네비게이션을 쉽게 파악할 수 있습니다. 인터페이스 빌더: 여러 편리한 기능들을 지원해 UI구성에 도움을 줍니다.(레이아웃 제약조건 설정, 미리보기 등) 단점 복잡성: 프로젝트가 커지면 스토리보드가 복..

    [iOS - TDD] 2. UI Test

    UITest 참고자료 https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial?page=3 참고자료를 토대로 공부하고 상세히 기록합니다. Xcode의 UI Test UITest를 통해 사용자 인터페이스와 상호작용을 테스트할 수 있습니다. UI테스트는 쿼리를 사용하여 앱의 UI객체를 찾고, 이벤트를 합성한 다음 해당 객체에 이벤트를 보내는 방식으로 작동합니다. API를 사용하면 UI객체의 속성과 상태를 검사하여 예상 상태와 비교할 수 있습니다. Test navigator에서 새 UI Test Target을 추가합니다. Test Target이 BullsEye인지 확인하고 기본 이름은 BullsEyeUITest를 사용합니다. UnitTe..

    [iOS - TDD] 1. Unit Test

    Unit Test 항상 공부하고싶은 주제였던 UnitTest를 이제 시작합니다! 참고자료는 게시글 맨 하단에 위치하여있고, 학습 파일은 사이트에서 쉽게 다운로드할 수 있습니다. 자료의 전반적인 정리와 강의에서 다루지 않는 상세한 내용들을 정리해볼게요. Unit Test는 프로그램의 기본 단위인 모듈을 테스트합니다. 소스코드에서 "특정 모듈, 클래스가 개발자가 의도한 대로 정확하게 작동하는지 테스트하는 과정"입니다. Unit Test구조가 잡혀있으면 추후에 리팩토링 후 확인이 쉬워 변경이 쉽다고 하는데, Unit Test 구조를 잡기위해 TDD(테스트주도개발) 방법이 존재한다고 하는데, 나중에 다뤄보겠습니다. 테스트 대상 파악하기 어떤 테스트를 작성하든지, 무엇을 테스트 해야하는지 알아야 하겠죠 일반적으로..

    [iOS] DeepLink로 앱을 띄워보자

    DeepLink 딥링크에 대해 정리하고 간단한 예제로 이해해봅니다. 딥링크는 "하이퍼링크의 모바일판"이라고 할 수 있습니다. 예를 들어볼까요? 쿠팡 상품의 광고를 클릭하면 "쿠팡앱실행 -> 해당상품" 이동 카톡 메세지를 클릭하면 메세지 화면으로 바로이동 "카카오톡실행 -> 해당 메세지 화면" 카톡에서 카카오맵의 특정 위치를 클릭하면 "카카오맵실행 -> 해당위치화면" 이렇게 링크를 클릭해 앱을 실행하고 원하는 화면으로 이동할 수 있게 할 수 있습니다. iOS에서 딥링크를 구현하는 방법은 두 가지가 있습니다. URLScheme Universal Link 여기서 Universal Link는 특징만 보고 넘어가고. URLScheme을 집중적으로 보겠습니다. URLScheme 어플리케이션간의 통신이나 특정 앱을 ..

    [iOS] App Thinning과 Bitcode에 대하여

    App Thinning 앱이 디바이스에 설치될 때 앱스토어와 운영체제가 디바이스의 특성에 맞게 설치되도록 설치 최적화 기술입니다. iOS 9에서 도입된 기능으로 앱의 크기를 최적화 하고 사용자 기기에 저장되는 앱의 전체 크기를 줄이는데 사용됩니다. 이에 따른 전반적인 이점으론 아래와 같은데, 빠른 다운로드와 설치 앱의 크기가 작아지면 사용자는 앱을 더 빨리 다운로드 할 수 있습니다. 디바이스 공간 최적화 App THinning을 사용하면 특정 디바이스, 버전에 필요한 리소스만 다운로드 하므로, 불필요한 데이터를 저장하는 것을 방지합니다. 예를 들어, 아이폰 X 와 3rd Generation IPad는 다른 해상도를 사용하기 떄문에 각 디바이스에 적합한 리소스만을 다운로드 할 수 있게 됩니다. 앱에서 3x..

    [iOS] UITraitEnvironment

    iOS interface environment에는 다음과 같은 trait이 포함됩니다. horizontal / vertical size class (수평, 수직 사이즈 클래스) display scale (디스플레이 픽셀에 관합니다.) user Interface idiom ( Enum으로 phone, pad, tv, carplay, mac...) user Interface style( 라이트모드, 다크모드인지.. lightMode, darkMode, unspecifiedMode) 여기서 horizontal / vertical의 size class만 살짝 보고 가겠습니다. size class size class는 portrait, landscape에 따라 현재 화면의 size class가 Compact / ..