일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- viewcontroller
- 아이폰
- @available
- roundingMode
- 부트캠프
- Codegen
- Structures and Classes
- 스위프트
- NumberFormatter
- Failed to register bundle identifier
- SWIFT
- SWIFTUI
- View Life Cycle
- NotificationCenter
- 스타트업주니어로살아남기
- Mock
- Info.plist
- Navigation
- human interface guidelines
- Modality
- contentInset
- xcode
- 독후감
- IOS
- 독서후기
- delegation
- 야곰아카데미
- 책후기
- mvvm
- UIResponder
- Today
- Total
목록Software Engineering (135)
호댕의 iOS 개발
리베이스를 해결하다가 갑자기 이런 에러가 나왔다... 갑자기 처음 보는 경고가 나와서 당황했었는데 역시 답은 에러 문구에 전부 나와있었다. Build Phase의 Compile Sources에서 중복된 build 파일을 스킵했다는 것이다. 그럼 이는 어디서 중복된 것을 지워줄 수 있을까?? 에러에서 나온대로 프로젝트의 Targets > Build Phase에 가면 이를 찾을 수 있다. Build Phase에서 내리다보면 Compile Sources라는 것이 있다. 여기서 경고에서 나온 파일 이름을 쳐보면.. 이렇게 중복된 파일이 있는 것을 찾을 수 있다. 하나만 지우고 빌드를 해봤지만 하나만 지워도 두 개다 지워지는 것 같다. 분명 Directory에는 파일이 존재하지만 Compile Sources에는 ..
cp holdy-iOS new-holdy-iOS iterm2나 터미널을 사용해 Git이나 파일들을 관리하다 보면 다양한 명령어를 사용하게 된다. Mac OS나 리눅스 모두 UNIX 기반이기 때문에 리눅스 명령어를 MacOS에서도 사용이 가능하다. 그럼 어떤 명령어들이 있는지 알아보자. 일단 모든 명령어 뒤에 --help를 붙이게 되면 해당 명령어에 대한 자세한 사용방법을 알 수 있다. 많이 사용하던 명령어부터 정리해보자. cd (Change Directory) 경로 이동을 하는 명령어이다. cd {디렉토리 주소}를 입력해주면 해당 디렉토리로 이동하게 된다. pwd (Print Working Directory) 현재 작업 중인 디렉토리를 출력해준다. ls (List) 현재 디렉토리에서 확인할 수 있는 목록..
iOS 15 이상에선 문제가 없었지만 iOS 14와 13에선 TableView를 통해 Cell을 띄울 때 TableView의 Cell보다 Separator들이 많이 생기는 문제가 있었다. (최근들어 OS 버전에 따라 달라지는 문제 때문에 골치가 아프다...) 이렇게 Cell이 아무것도 없을 때에도 Separator들은 알아서 생겨있다... 다만 iOS 15 이상에서 확인했을 때에는 전혀 문제가 없었다. 해결 방법은 간단하다. tableView(본인이 프로퍼티로 선언한 테이블 뷰).tableFooterView = UIView() 이 코드만 넣어주면 된다. 넣는 곳은 viewDidLoad에서 넣었다. (필요하다면 다른 곳에서 넣어도 무방하다) 이렇게 되면 Cell하단에는 전부 FooterView로 잡히면서 ..
출시를 목적으로 한 앱 개발을 하다보면 SystemFont가 아닌 CustomFont를 사용하게 되는 경우가 많다. (확실히 폰트를 적용한 것과 적용하지 않은 것은 꽤 많은 차이가 있었다) 그렇다면 커스텀 폰트를 어떻게 적용하는지 알아보자 커스텀 폰트 받기 디자이너가 따로 있다면 어떤 폰트를 쓰라고 말해주겠지만 1인 개발이나 개발자들끼리 개발을 하게 된다면 따로 받아야 할 것이다. 커스텀 폰트를 적용한 경험이 많지는 않지만 보통 Pretendard라는 글씨체를 많이 사용하는 것 같다. https://cactus.tistory.com/306 Pretendard Pretendard 프리텐다드 Pretendard 프리텐다드 글꼴 다운로드 일본어 버전 다운로드 GitHub에서 보기 system-ui를 대체하는 ..
이전 글에서 간단하게 rebase를 사용하여 이미 push한 commit의 내용을 바꾸는 방법을 포스팅한 적이 있다. [Git] 이미 Push를 해버린 Commit을 어떻게 고치지... 이미 커밋을 하고 한~참 시간이 지났다가 중간에 딱 한 커밋이 카르마 규칙을 준수하고 있지 않은 것을 발견했다. 지금까지 바로 직전의 커밋이었으면 reset을 하고 다시 커밋을 했지만 이미 다 ho8487.tistory.com 다만 그 당시 이해했던 rebase는 아직 rebase의 본 기능을 제대로 사용하지 못했었다. 단지 Commit 메세지를 수정할 방법을 찾다가 단순히 rebase를 알게 된 것이었다. 실제 현업에 근무하게 되면서 협업을 할 때 rebase는 거의 필수로 사용해야 하는 기능이라는 것을 알 수 있었다...
네트워킹 관련 코드를 작성하다보면 동기, 비동기 관련된 내용을 정말 많이 접하게 된다. 그렇다면 동기와 비동기는 어떤 차이점과 특징을 가지고 있는지 알아보자. 동기와 비동기 일단 동기로 작업을 하게 되는 경우 작업을 다른 쓰레드에 시키게 되는 경우 해당 작업이 끝날 때까지 기다리게 된다. 이렇게 동기로 작업을 하게 되는 경우 Thread1 에선 Thread2에 시킨 작업이 끝나기 전까진 다른 일처리는 불가능하다. 그렇다면 비동기는 어떻게 동작할까? 비동기에선 일을 시킨 다음 기다리지 않고 바로 다음 작업을 진행하게 된다. 따라서 네트워킹 같이 일을 하는데 시간이 많이 걸리는 작업을 처리할 때 비동기로 동작하게 하여 동시에 다른 작업을 할 수 있도록 하는 것이다. 그래서 사실 iOS에서는 동기에선 항상 일..
CPU 스케줄링의 경우 메모리에 동시에 여러 프로세스를 올리는 다중 프로그램 운영체제의 기본이다. 운영체제를 통해 CPU를 프로세스 간에 교환하면서 컴퓨터를 보다 응답성이 높고 생산성이 높게 사용하게 된다. 일단 기본적으로 어떤 프로세스가 특정 요청이 완료되기를 대기해야 하는 경우 운영체제는 CPU를 해당 프로세스로부터 회수하여 다른 프로세스에 할당하게 된다. 이런 Context Switch는 계속해서 반복되며 이런 컴퓨터 자원들은 사용되기 전 스케줄링이 되어야 한다. 따라서 CPU 스케줄링이 운영체제 설계에서 핵심적인 부분이 되는 것이다. 프로세스 실행의 경우 CPU 실행과 I/O 대기의 사이클로 구성되어 있다. CPU Burst를 통해 running 상태가 되었다가 I/O Burst를 통해 Wait..
일단 컴퓨터 시스템의 경우 네 가지 구성요소를 가지고 있다. 하드웨어 : 중앙처리장치(CPU), 메모리(RAM), 입출력 장치(I/O Device)로 구성이 되어 있음 운영체제 : 다양한 사용자를 위해 다양한 응용 프로그램 간 하드웨어 사용을 제어하고 조정한다. 즉, 다른 프로그램이 원활하게 작업을 할 수 있는 환경을 제공해주는 역할을 한다. (제어 프로그램의 역할 수행) 응용 프로그램 : 컴파일러, 웹 브라우저 등 사용자의 계산 문제를 해결하기 위해 자원이 어떻게 사용될 지를 정의함 사용자 운영체제란 운영체제는 컴퓨터에서 항상 실행되는 프로그램으로 일반적으로 커널이라 부른다. 운영체제가 하드웨어를 컨트롤하게 되며 컴퓨터의 전원을 연결했을 때 컴퓨터가 동작할 수 있도록 운영체제를 로딩해야 한다. 컴퓨터의..