iOS 코드로 UI 짜기 (Code UI)
기본 방법
iOS 텍스트필드와 델리게이트 패턴
텍스트필드는 입력에 관한 세심한 관리가 필요하다. 동작에 따른 뷰컨트롤러와의 상호작용을 위해 델리게이트 패턴을 사용한다.
동작형태의 예시
- 유저가 입력을 시작할때(활성화 할것인지)
- 유저 입력 시작되고나서
- 입력내용 전체삭제 할지 말지
- 키보드의 엔터키가 눌렸을때 (다음 동작을 허락할지)
- 입력이 끝났을때
구현 예제
Docker Compose
- kubernetes와 같이 오케스트레이션 및 컨테이너화된 애플리케이션 관리에 널리 사용되는 도구이다.
- 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구이며 YAML 파일을 사용하여 애플리케이션 서비스를 수행한다.
- CLI를 이용하여 모든 서비스 라이프 사이클을 관리한다.
- YAML 코드를 통하여 여러개의 docker run 및 네트워크 볼륨을 생성 할 수 있다.
- compose로 실행된 컨테이너들은 독립된 네트워크로 컨테이너 간 통신이 가능하다.
Docker Compose 3단계 프로세스
- Dockerfile 작성 — 배포하고자 하는 애플리케이션 환경 정의 (선택)
docker-compose.yaml을 통해 하나 이상의 컨테이너 서비스를 실행할 수 있도록 서비스 정의docker compose up명령으로 YAML에 정의된 서비스를 시작하고 실행한다.
장점
- 서로 다른 OS 환경이라도 동일한 환경 구성이 가능하다. (이식성)
- 동일한 환경 사용으로 개발환경 이슈 발생시 팀간 소통이 쉽다.
- 복잡한 환경도 YAML 코드로 스크립트화 할 수 있어 휴먼에러 감소 및 자동화가 가능하다.
- docker compose CLI를 이용하여 쉽게 “멀티 컨테이너 애플리케이션"을 관리 할 수 있다.
단점
- 동시에 다수의 컨테이너 서비스를 수행하는 경우(MSA) 자원 활용률이 순간 높아질 수 있다.
- docker container에 관한 기술 이해도가 필요하여 진입 장벽이 높다.
YAML
- YAML? Yet Another Markup Language or YAML ain’t markup language (Text file)
- 사람이 쉽게 읽을 수 있는 데이터 직렬화 언어(위 → 아래)로 구성파일 작성에 주로 사용된다.
- 쉽고 이해할 수 있도록 설계되어 프로그래밍 언어로 사용되거나, 클라우드 자동환경 배포 도구(IaC 환경 구성)로 많이 사용된다 (AWS CloudFormation, RedHat Ansible 등)
코드 문법적 특징 — YAML vs JSON 비교
| 항목 | YAML | JSON |
|---|---|---|
| 정식명칭 | YAML ain’t markup language | JavaScript Object Notation |
| 주석 | 사용 가능 | 사용 불가 |
| 한글/유니코드 | 그대로 사용 가능 | 멀티바이트 문자는 인코딩 수행 |
| 주 용도 | 환경 구성 등의 설정 파일 | API 작성 시 사용 |
YAML 예시
Docker DNS
- Docker 컨테이너는 IP를 사용자 정의 네트워크의 컨테이너 이름으로 자동 확인하는 DNS서버가 호스트에 생성된다 (127.0.0.11)
- Docker의 기본 docker0 bridge driver에는 DNS가 포함되어 있지 않음 → Docker0 bridge driver는 작동 안함
- 동일 네트워크 alias 할당을 통해 하나의 타겟 그룹을 만들어 요청에 Round Robin방식으로 응답함다.
- 컨테이너 생성시 호스트 시스템에서 다음 세파일을 복사하여 컨테이너 내부에 적용하여 컨테이너 간에 이름으로 찾기가 가능해진다.
- /etc/hostname
- /etc/hosts
- /etc/resolv.conf
- libnetwork는 핵심 네트워킹 서비스 검색 기능 제공하며 모든 컨테이너가 이름으로 서로를 찾을 수 있게 한다. ( –name or –net-alias 사용 시 DNS에 등록)
Docker Exit Code

Docker Image Push
도커 로그인
- docker login → 비추천 base64로 암호화 언제든 로그인 패스워드 열어 볼 수 있음

로그인 확인
Docker Volume
- Docker에서 제공하는 volume 기술은 컨테이너 애플리케이션에서 생성되고 사용되는 테이터를 유지, 보존하기 위한 메커니즘을 제공한다, 컨테이너가 삭제되어도 volum은 독립적으로 운영되어 데이터를 유지한다.
- volume 기술은 Docker HostOs와 컨테이너에서 직접 접근이 가능하다.
- 일반적으로 컨테이너 내부의 데이터는 컨테이너의 생명주가와 연관되어 컨테이너 종료 시 삭제도지만, 이를 지속적(Persistent)으로 보존하기 위한 방법으로 volume기술이 사용된다.
- Docker는 3가지 volume 기술을 제공한다.

Bind mount
- 디렉토리와 파일을 mount 가능
- “호스트파일 시스템 절대경로”:”컨테이너 내부경로” 를 직접 mount
- 사전에 연결할 파일 또는 디렉토리의 권한대로 연결된다, 존재하지 않으면 root권한으로 생성된다
- 사전정의 없이 컨테이너 실행 시 자동으로 생성되고, 컨테이너 제거시 Bind mount가 자동으로 헤제된다 이때 생성된 호스트 디렉토리 데이터(file)는 보존된다
- Bind monun 방법은 데이터를 Host의 지정된 디렉토리에서 관리한다.