[Sesac IOS] 5일차 TIL
·
TIL
5일차 수업을 듣고 새로 배우게된 것과 더 알아보고 싶은 것을 정리한 글입니다. Learned Git VCS(Version Control System)의 일종으로 소스코드나 파일의 변경 사항을 버전별로 저장해놓고, 필요할때 불러올 수 있는 시스템 코드의 변경 사항과 작업한 사람 등을 추적할 수 있어서 협업 시 효과적으로 코드를 관리하고 여러 사람들과 동기화할 수 있다. 특정 시점으로 롤백이 가능해서 자유롭게 테스트를 하거나 새로운 기능을 개발할 수 있고 문제의 원인을 파악 및 해결하는데 편리하다. GitHub 로컬 저장소를 클라우드 시스템을 통해 원격으로 저장할 수 있게 해주는 서비스 코드를 백업하거나 다른 사람들과 공유하기 위해 사용한다. Working Directory Git이 관리 중인 파일들이 존..
[Sesac IOS] 4일차 TIL
·
TIL
4일차 수업을 듣고 배우게된 것과 알고싶은 점을 정리한 글입니다. Learned 에디터 영역의 Assistant(Ctr + Opt + Cmd + Enter)는 선택된 스토리보드의 뷰 컨트롤러와 연결된 클래스 파일을 화면 분할로 보여주는 기능이다. UIKit 프레임워크 내부에 Foundation 프레임워크가 존재해서 UIKit만 import하면 두 프레임워크를 모두 사용할 수 있다. Swift에서 Int를 사용할때 기기의 사양에 따라 자동으로 비트 수(32, 64)를 설정하여 변환해준다. (대부분의 기기가 64비트 Int를 사용) background의 default 컬러는 색이 존재하지 않는 상태, 즉 backgroundColor 프로퍼티가 nil인 상태를 말한다. UIGestureRecognizer를 추..
[Sesac IOS] 3일차 TIL
·
TIL
3일차 수업을 듣고 새로 알게된 내용과 공부해야할 것들을 정리한 글입니다. Learned 앱 상태의 종류 Not Running : 앱이 실행되기 전 상태, 아직 메모리에 올라가지 않음 Active : 앱이 화면에서 실행중인 상태 Inactive : 앱이 화면에서 실행중이나 어떤 이벤트도 받지 못하는 상태 Background : 앱이 화면에 보이지 않지만 일부 코드를 실행하고 있는 상태 Suspend : 앱이 곧 종료될 상태 Active와 Inactive 상태를 묶어서 foreground 상태라고 부른다. AppDelegate와 SceneDelegate iOS 13 이전까지는 AppDelegate.swift 파일에서 앱의 생명 주기와 UI의 라이프 사이클을 모두 관리했다. iOS 13부터 iPadOS가 등..
[프로그래머스] 도둑질
·
알고리즘
https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결 아이디어를 떠올리기 어려웠던 DP 문제이다. 다른 사람의 풀이를 참고 했는데 경우의 수를 나눠서 복잡한 문제를 단순히 만드는게 풀이의 핵심이었다. N개의 집이 있는 한 마을을 도둑이 털 계획을 하고 있다. 단, 각 집은 원형으로 이어져 있으며 집을 털때 서로 인접해 있는 두 개의 집을 털 수 없다. 각 집마다 털 수 있는 돈이 배열로 주어졌을때 도둑이 이 마을에서 털 수 있는 금액의 최대값을..
[Sesac IOS] 2일차 TIL
·
TIL
2일차 수업을 듣고 새로 알게된 내용과 공부해야할 것들을 정리한 글입니다. Learned App Icon 앱의 아이콘은 여러 크기로 다양한 곳에서 보여지기 때문에 (푸시 알림, 설정 창, 앱 스토어 등) 각 크기에 맞는 아이콘 이미지 에셋이 필요하다. 앱 아이콘 에셋 폴더가 여러 개라면 프로젝트 설정에서 사용할 아이콘을 선택할 수 있다. 앱 아이콘 에셋의 Attribute Inspector에서 아이콘이 보여질 기기를 선택할 수 있는데, iPhone용 앱은 iPad에서도 설치 가능하기 때문에 일반적으로 두 기기를 체크해서 아이콘을 만든다. 1024x1024 크기의 아이콘 하나로 앱에 필요한 모든 크기의 아이콘을 만들어주는 사이트 appicon.co Xcode 14.0 (베타) 버전부터 큰 사이즈의 아이콘..
[Sesac IOS] 1일차 TIL
·
TIL
1일차 교육을 듣고 새로 알게된 점과 더 알아보고 싶은 점들을 정리했습니다. Learned 앱은 크게 화면(Scene), 기능(Logic), 데이터(Data)로 구성된다. 앱이 데이터에 접근하는 방법 앱 내부에 데이터를 저장하여 사용할 수 있지만 백업 및 복구가 필수적이다. 서버에 데이터를 저장하고 네트워킹을 통해 접근할 수 있다. iPhone 저장 공간 설정에서 앱마다 차지하는 용량을 볼 수 있는데 앱 크기는 앱이 자체적으로 가지는 용량이고 문서 및 데이터는 앱 내부에 저장된 데이터(카카오톡 대화의 이미지 파일, 게임의 업데이트 파일 등)를 의미한다. 애플의 정책에 따른 앱 개발 애플의 정책에 따라 앱을 만들어야 앱 스토어에 앱을 출시할 수 있고 그렇지 않으면 스토어에 등록되지 않는다. 애플 로그인을 ..
[IOS] 뷰에 그림자 만들기
·
IOS
UIView에는 실제로 뷰를 그리는 역할을 하는 CALayer 타입의 layer라는 프로퍼티가 존재해서 이 layer가 가진 프로퍼티를 사용해 뷰에 그림자를 만들 수 있다. 그림자를 만들때 사용하는 주요 프로퍼티는 아래 4개 정도이다. shadowOffset: CGSize shadowColor: CGColor shadowRadius: CGFloat shadowOpacity: CGFloat 1. shadowOffset The offset (in points) of the layer’s shadow. Animatable. 레이어 그림자의 오프셋. 오프셋은 사전에서 "상쇄하다" 라는 뜻이지만 컴퓨터 과학에서는 "변위차"라는 의미로 사용된다. 따라서 그림자의 위치가 기존 레이어보다 얼마만큼 떨어진 지점에 위치하..
[IOS] UIButton.Configuration을 사용해서 버튼 커스텀하기
·
IOS
팀 프로젝트로 만들었던 앱의 UI를 변경하다가 게임을 시작하기 위해 눌러야 하는 준비 버튼이 너무 작아서 눈에 잘 띄지 않는다고 생각했다. 그래서 버튼의 외관(Appearance)를 변경하려다가 IOS 15에서 새로 생긴 Configuration을 사용해보고 싶었다. 기존 메소드를 사용해서 설정하는 방법과 다른 점이 꽤 있어서 관련 내용을 포스팅한다. 내가 주로 사용한 설정값을 위주로 설명한다. Configuration을 초기화하기 위해서는 아래 4가지 메소드 중 하나를 사용한다. UIButton.Configuration.plain() UIButton.Configuration.tinted() UIButton.Configuration.gray() UIButton.Configuration.filed() 말로..
Git 관련 개념 및 자주 사용하는 명령어 정리
·
메모
로컬 저장소 생성 $ git init 현재 디렉토리에 git 파일을 생성해서 로컬 저장소로 만드는 명령어 워킹 트리(Working Tree): 작업하는 파일이 존재하는 영역 인덱스(Index): 워킹 트리의 파일이 저장소로 가기 전에 잠시 거쳐가는 임시 영역 저장소(Repository): 버전 관리가 이뤄지는 영역 로컬 저장소로 만들면 워킹 트리에 있는 파일들의 변경 사항을 추적하고 관리할 수 있습니다. 추적한다는 의미는 디렉토리에서 코드를 수정하거나 파일을 삭제했을 때 다시 되돌리거나 변경을 적용할 수 있음을 의미합니다. 스테이징(stage) $ git add 변경된 파일을 인덱스 영역에 추가합니다. 인덱스 영역에 파일을 추가하는 행위를 스테이징이라고 합니다. $ git add . 파일을 하나하나 추가..
[IOS] 웹소켓을 사용한 클라이언트 시간 동기화 방법과 문제점
·
IOS
웹소켓 채팅을 기반으로 실시간 게임을 만들기 위해 했던 시도와 그 과정에서의 생각을 정리한 글이다. 구현하려고 했던 게임의 핵심 기능은 소켓 서버와 연결된 다수의 플레이어들이 자신의 차례에 주어지는 일정 시간동안 특정 메시지를 입력하는 것이었다. 문제는 모든 플레이어들이 동시에 게임을 시작하고 동시에 플레이어들의 차례를 바꿔야했다. 즉, 게임이 진행되는 동안 모든 클라이언트가 동일한 시간을 공유하게 만드는 것이 관건이었다. 서론 기본적으로 게임시작 전, 각 플레이어들이 준비 상태를 서버에 알리면 모든 플레이어의 준비가 끝난 것을 확인한 서버는 게임시작 이벤트를 클라이언트에 보내고 이벤트를 수신한 각 클라이언트는 게임이 진행되는 화면으로 뷰를 전환시키는 과정이 이뤄진다. 본론 1. 게임 화면으로 전환이 완..