클린 아키텍처에 대하여
·
Swift
🎯 Overview클린 아키텍처는 소프트웨어의 복잡성을 관리하고 유지보수성을 높이는 아키텍처 패턴임. 특히 iOS 개발에서 MVVM, VIPER 등과 함께 사용하면 더욱 강력한 앱을 만들 수 있음.Prerequisites iOS 개발 경험 (Swift 기본 문법) 프로토콜 지향 프로그래밍 이해 의존성 주입 개념 파악 MVVM 패턴 기본 지식📦 Step 1: 클린 아키텍처 핵심 원칙 이해하기클린 아키텍처의 핵심은 관심사의 분리와 의존성 규칙임.핵심 규칙 3가지관심사의 분리: 기능과 책임이 명확하게 정의되고 분리된 레이어의존성 규칙: 의존성 방향은 항상 외부에서 내부를 향함. 내부는 외부에 대해 알면 안됨.의존성 역전 원칙(DIP): 고수준 모듈은 저수준 모듈에 의존하는 대신 추상체(인터페이스)에 의존해..
의존성 역전 원칙(DIP)에 대하여
·
CS
🎯 Overview의존성 역전 원칙(Dependency Inversion Principle, DIP)은 SOLID 원칙 중 하나로, "자주 변하는 구체적인 것에 의존하지 않고, 잘 변하지 않는 추상체(인터페이스)에 의존하라"는 설계 철학임. 이 원칙을 지키면 비즈니스 로직(상위 모듈)이 구체적 구현(하위 모듈)의 변화에 휘둘리지 않고, 유연하고 확장성 높은 시스템을 만들 수 있음.Prerequisites 객체지향 프로그래밍(OOP) 기본 개념 인터페이스/추상 클래스 개념 의존성 주입(DI)📦 Step 1: 의존성 역전 원칙이란?소프트웨어의 핵심 목표(비즈니스 규칙, 정책)에 가까울수록 "상위 모듈"임.구체적인 기술, 방법, 도구에 가까울수록 "하위 모듈"임.DIP는 상위 모듈이 하위 모듈(구현체)에 ..
[iOS] Fastlane Match로 Apple 인증서, 프로비저닝 파일 관리하기
·
iOS
🎯 개요iOS 앱을 개발하거나 배포할 때 반드시 필요한 게 바로 "인증서"와 "프로비저닝 프로파일"임. 이걸 잘못 관리하면 빌드가 안 되거나, 앱이 배포 중단되는 등 심각한 문제가 생길 수 있음. Fastlane의 match를 활용하면 이 복잡한 인증서/프로비저닝 관리가 한결 쉬워짐. 이 글에서는 비개발자도 이해할 수 있도록 Fastlane Match의 개념부터 실전 적용, 문제 해결까지 단계별로 설명함.✅ 준비물 (Prerequisites) Apple Developer 계정 macOS 환경 (Xcode 설치됨) 터미널 사용 가능 개인/회사 구분된 Git 저장소 (비공개 권장) Fastlane 설치됨 (설치 가이드)📦 Step 1: Fastlane Match란?Fastlane Match는 인증서와 프..
[iOS] UITextField 비밀번호 자동 채우기 기능 구현하기
·
iOS
🎯 OverviewiOS 11부터 도입된 Password AutoFill 기능은 로그인/회원가입 UX를 개선 가능함. 사용자는 키체인, 1Password 등에서 저장된 계정 정보를 한 번에 입력할 수 있음. 개발자는 몇 가지 설정만으로 보안성과 편의성을 모두 챙길 수 있음.Prerequisites iOS 11 이상 타겟팅 Apple Developer 계정 HTTPS로 서비스되는 도메인 앱에 Associated Domains 권한 추가 도메인 루트에 AASA 파일 업로드📦 Step 1: 키체인 및 AutoFill 활성화아이폰 설정 → 암호 → 키체인 사용 체크함앱 삭제 후 재설치 권장함 (AASA 파일 갱신 반영 위해)📦 Step 2: UITextField에 textContentType 태깅이메일/아..
[iOS] WKWebView에서 웹문서 스크롤 높이 구하기
·
iOS
🎯 개요iOS 앱에서 WKWebView를 사용할 때, 웹문서의 실제 컨텐츠 높이를 알아야 할 때가 많음.예를 들어, 웹뷰의 높이를 컨텐츠에 맞게 동적으로 조정하거나, 테이블뷰 셀 내부에서 웹뷰가 잘리는 현상을 방지하려면 웹문서의 전체 스크롤 높이를 정확히 알아야 함.이 글에서는 WKWebView에서 JavaScript를 활용해 스크롤 높이를 구하는 실전 방법을 정리함.📦 Step 1: WKWebView 델리게이트 설정 및 didFinish 구현WKWebView의 navigationDelegate를 설정하고, 웹페이지 로딩이 끝났을 때 호출되는 didFinish 메서드에서 JavaScript를 실행해야 함.func webView(_ webView: WKWebView, didFinish navigatio..
Django 서버에서 iOS Push Notification 보내기
·
iOS
Django에서 iOS 푸시 알림 구현하기📱 Django 백엔드에서 iOS 앱으로 실시간 푸시 알림 보내는 방법 단계별로 알아봄🎯 개요이 글에서는 Django 서버에서 Apple Push Notification Service(APNs)를 통해 iOS 기기로 푸시 알림 보내는 방법을 다룸.사전 준비사항Django 프로젝트 환경Apple Developer 계정APNs 인증 키(.p8 파일) 또는 인증서(.pem 파일)iOS 앱에서 푸시 알림 권한 설정 완료📦 1단계: 필요한 패키지 설치먼저 Django에서 푸시 알림 처리하기 위한 패키지들 설치함.pip install django-push-notificationspip install apns2 # Apple Push Notification Servic..
URL의 구성 요소와 웹 통신 과정
·
CS
1. URL이란? URL은 Uniform Resource Locator의 약자로 인터넷에 존재하는 리소스의 위치를 나타내는 주소이다. 자원을 식별하기 위해 사용하는 URI는 URL를 포함하는 더 넓은 개념이다. 2. 구성 요소 프로토콜(Protocol) 스키마(Scheme)라고도 하며, 사용하는 프로토콜의 이름이다. URL에서 사용되는 프로토콜의 유형을 지정하는 역할로 주로 http, https, ftp 등이 사용된다. 서브 도메인(Subdomain) 도메인의 하위 요소로 웹 사이트의 기능을 구분하거나 특정 서비스를 나타내기 위해 사용된다. 예를 들어, 'blog.naver.com', 'webtoon.naver.com' 처럼 도메인 내에서 다른 서비스에 접근할 수 있다. 2차 수준 도메인(Second-L..
HTTP 버전별 특징 정리
·
CS
HTTP 0.9 (1991년) HTTP의 초기 버전 요청 메시지가 단일 라인으로 구성되고 GET 메서드만 사용 가능 요청 및 응답 헤더가 없고 HTML 문서만 전송 가능 응답 메시지에 상태 코드가 없고 문서 파일 자체만 전송 HTTP 1.0 (1996년) GET, POST, HEAD 메서드 사용 가능 메타데이터를 나타내는 헤더가 메시지에 추가됨. Content-Type 헤더를 사용해서 HTML외에 다른 형식의 데이터도 전송 가능 요청 메시지에 프로토콜 버전과 메서드를 포함 응답에 상태 코드가 추가됨. 요청을 보낼 때 마다 매번 TCP 연결을 새로 설정해야하는 단점 존재 HTTP 1.1 (1997년) Keep-Alive 기능을 통해 일정 시간 또는 횟수 동안 연결을 닫지않고 유지 Persistent Con..
HTTP 메시지와 구성 요소
·
CS
1. HTTP 메시지 1) 개요 HTTP는 서버-클라이언트 구조로, 클라이언트가 요청하고 서버가 응답하는 단방향 통신이다. 이때 각 호스트가 보내는 데이터는 HTTP 메시지 구조를 가진다. HTTP 메시지는 요청 메시지와 응답 메시지로 나뉘고 크게 라인, 헤더, 바디로 구성된다. 2) 요청 메시지 클라이언트가 서버에게 전송하는 데이터 라인(Line) HTTP 메서드 요청할 리소스의 경로 또는 이름 (URI) 프로토콜 버전 헤더(Header) 요청 메시지의 메타데이터를 포함하는 부분 미디어 타입, 요청 호스트 정보 등 요청에 대한 부가적인 정보를 나타낸다. Host, User-Agent, Accept, Content-Type 등이 있다. Host와 User-Agent는 각각 요청 호스트 IP와 클라이언트 ..
HTTP vs HTTPS (feat. 대칭키, 공개키)
·
CS
1. HTTP란? 1) 개요 HTTP(HyperText Transfer Protocol)는 두 네트워크 장치 간 하이퍼텍스트 전송을 위한 프로토콜이다. 주로 웹 브라우저와 서버가 웹 페이지(HTML) 문서를 주고 받을때 사용된다. HTML (HyperText Markup Language) 태그를 사용해 하이퍼텍스트로 이루어진 문서 또는 데이터를 구조화한 형식 응용 계층 프로토콜로서 TCP/IP를 사용하며 80번 포트를 사용한다. 전송 과정에서 평문으로된 데이터가 제3자에게 노출될 수 있어 보안에 취약하다. 2) 특징 A. 서버-클라이언트 구조 클라이언트가 요청하면 서버가 응답하는 단방향 통신이다. 서버가 먼저 클라이언트에게 요청 메시지를 보낼 수 없다. B. 무상태성 (Stateless) 서버는 클라이언..