전체 글 66

[iOS 개발자 햄스터 하루]깃허브 일주일 연속 커밋 도전 성공!

깃허브 배포 연습 깃허브 커밋과 푸시 개념에 대해서 저번주에 인프런 강의를 보고 학습을 해서 소스트리로 커밋을 꾸준히 하고 있습니다 7일간 연속 커밋 성공! 잔디밭 심어서 거대한 숲을 만들고 싶어요 (연말에는 숲을 볼 수 있을지도?!) 7일간 스토리보드로 오토레이아웃 그리기를 꾸준히 하고 있습니다 이제 14일 2주간 연속 커밋에 도전해봐야겠어요! 일주일 간 오토레이아웃과 화면 이동 구현하기 작업 속도가 조금씩 빨라지고 정교해지고 있다고 칭찬받았습니다. 무엇보다 중요한 건 성실히 꾸준히 하는 것 천천히 실력이 확실하게 늘고 있습니다. 스크롤뷰를 익히고 우선순위에 대해서 알게되면서 에러가 나는 부분을 수정하였습니다! 돌아가기 ctrl+Z를 누르면 Xcode가 튕기는 현상이 계속 되어서 틈틈이 커밋을 해주었습..

[혼자 공부하는 컴퓨터 구조+운영체제] 2. 데이터: 0과 1로 문자 표현

0과 1로 문자를 표현하는 방법 문자 집합(character set) 컴퓨터가 이해할 수 있는 문자의 모음 인코딩 코드화하는 과정 (문자 집합에 속한)문자를 0과 1로 이루어진 문자 코드로 변화하는 과정 디코딩 코드를 해석하는 과정 0과 1로 표현된 문자 코드로 문자로 변환하는 과정 아스키 코드 초창기 문자 집합 중 하나 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자 7비트로 하나의 문자 표현 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit) c.f.) 코드 포인트 == 문자에 부여된 값 간단한 인코딩 But 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현 불가 아스키 코드는 7비트로 하나의 문자를 표현하기에 128개보다 많은 문자를 표현할 수 없음 8비트 ..

CS 2023.04.27

[혼자 공부하는 컴퓨터 구조+운영체제] 2. 데이터: 0과 1로 숫자 표현

0과 1로 숫자를 표현하는 방법 정보 단위 비트: 0과 1을 표현하는 가장 작은 정보 단위 n비트로 2의 n제곱 가지의 정보 표현 가능 프로그램은 수많은 비트로 이루어져 있음 워드 CPU가 한번에 처리할 수 있는 정보의 크기 단위 하프 워드: 워드의 절반 크기 풀 워드: 워드 크기 더블 워드: 워드의 두 배 크기 이진법 0과 1로 수를 표현하는 방법 숫자가 1을 넘어가는 시점에 자리올림 우리가 일상적으로 사용하는 직업은 숫자가 9를 넘어갈 때 자리올림하는 십진법(decimal) 0과 1로 음수 표현하기: 2의 보수 어떤 수를 그보다 큰 2의 제곱에서 뺀 값 모든 0과 1을 뒤집고 더한 값 십육진법 이진법으로는 숫자의 길이가 너무 길어진다 십진수 32 == 이진수 100000 그래서 컴퓨터의 데이터를 표현..

CS 2023.04.27

[혼자 공부하는 컴퓨터 구조+운영체제] 1. 컴퓨터 구조 시작하기

컴퓨터가 이해하는 정보 데이터 명령어 컴퓨터의 네 가지 핵심 부품 CPU (두뇌 역할) 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품 ALU 산술논리연산장치 = 계산기 레지스터 = CPU 내부의 작은 저장장치 제어장치 = **제어 신호(컴퓨터 부품들을 관리하고 작동시키기 위한 전기 신호)**를 내보내고, 명령어를 해석하는 장치 메모리 읽기 신호, 메모리 쓰기 신호 메모리(주기억장치, RAM) **현재 실행되는 프로그램(프로세스)**의 명령어와 데이터를 저장하는 부품 주소 = 위치 → 명령어와 데이터가 어디에 저장되는지 알 수 있음 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다 보조기억장치 전원이 꺼져도 보관될 프로그램을 저장하는 부품 메모리를 보조 입출력장치 컴퓨터 외부에 ..

CS 2023.04.27

[오토레이아웃] Content Hugging VS Content Compression Resistance

텍스트 필드의 Content Hugging Priority(컨텐츠 허깅 우선순위)와 Content Compression Resistance Priority(컨텐츠 압축 저항 우선순위)는 Auto Layout 시스템에서 뷰의 크기 조절에 관련된 우선순위 옵션입니다. Content Hugging Priority(컨텐츠 허깅 우선순위) = 압축 뷰가 자신의 컨텐츠를 허깅(압축)하는 우선순위를 나타냅니다. 즉, 컨텐츠의 크기에 맞게 뷰의 크기가 조절되는데, 컨텐츠 허깅 우선순위가 높을수록 뷰는 자신의 컨텐츠를 더 많이 허깅하고 크기를 더 작게 유지하려고 합니다. Content Compression Resistance Priority(컨텐츠 압축 저항 우선순위) = 확장 뷰가 자신의 컨텐츠를 압축(확장)하는 우선..

Apple/Xcode 2023.04.09

[스터디 기록 ✏️ 데이터 저장] plist VS UserDefaults

✏️ 스터디 노션 기록 ✏️ 스위프트 스터디 모임에 데이터 저장과 서버에 대해 차주에 다루기로 해서 노션에 정리하였다. 프로퍼티 리스트 vs UserDefaults 비교 애플의 가이드라인 비교적 간단하고 작은 데이터들은 UserDefaults 사용 데이터의 양이 많다면 커스텀 Plist 데이터베이스가 필요할 정도로 큰 규모의 데이터라면? 둘 모두 적합하지 않음 SQLite나 코어 데이터 혹은 서버에서 제공하는 데이터베이스 시스템 사용하는 것이 효율적

iOS의 시스템 프레임워크(Window, View, View Controller)

😀 iOS의 시스템 프레임워크는 UIWindow, ViewController, VIew 등의 핵심 개체들로 이루어짐  Window 항상 유저 인터페이스 표현 계층의 최상위에 위치 콘텐츠를 가진 뷰를 내부에 배치하여 화면에 출력하는 역할 View 콘텐츠를 담아 스크린상에 표시하고 사용자의 입력에 반응함 뷰컨트롤러의 역할 뷰를 관리 화면(view)과 데이터(model) 사이의 중개자 역할 윈도우 객체로부터 전달된 이벤트를 받아 내부적으로 구현된 비즈니스 로직을 실행하고 그 결과로 얻어진 데이터를 콘텐츠로 만들어 화면에 표시함 주요 컨트롤러 컨트롤러 기능 구현 클래스 View Controller 화면을 구성하고 콘텐츠를 표현하는 기본 뷰컨 UIViewController Navigation Controller..

MVC 패턴 (Model - View - Controller)

Model - 앱의 두뇌적인 부분 담당 - 로직 View - UI 화면 담당 Controller - Model과 View의 중개인 담당 - View에서 사용자 액션을 전달 받아, Model에서 데이터를 얻어와 View에 결과를 표시함 [프로젝트 모듈 예시] 👉 폴더를 만들어서 Model - View - Controller 순으로 정리하여 코드를 리팩토링한 모듈의 예시입니다. 안젤라유 강의 9.Quiz 앱 만들기 과제를 하며 MVC 패턴을 배웠습니다. Model 부분에서 퀴즈 텍스트를 Question 파일에 구조체로 작성하였습니다. 이외 로직은 QuizBrain에서 작성하였습니다. ViewController에서 QuizBrain 구조체를 생성한 대리자인 객체 quizBrain을 생성하여 VC와 소통하였습니..

디자인 패턴

디자인 패턴이란? * 복잡한 코드를 더 나은 방식으로 구성하고 구조화하는 것 * 소프트웨어에 대한 조직도 * 건축으로 비유하면 건축 청사진 - 북극에 살려면 이글루를 지어야 하고, 나무 위에 살려면 트리하우스를 짓기 위한 건축 패턴이 필요하듯이 - 어떤 앱을 만드는지에 따라 그에 맞는 디자인 패턴을 다르게 사용해야 함 * 문제 해결책 * 디자인 패턴의 종류 - MVC, MVVM, MVP... - Singleton - Delegate - Command - VIPER - Facade 등등 [출처: udemy - iOS app angela Bootcamp]

inout 파라미터 사용 / 점수 reset 함수

안젤라유 No.9 quiz 앱을 만드는 과정에서 흥미로웠던 과제 두 개를 포스팅 해보려 합니다. 안젤라가 작성한 코드와 제가 짠 코드를 비교해보겠습니다. [과제 완료 사진] 1. 퀴즈를 맞추면 Score 점수가 올라감 2. 퀴즈를 다 풀고 첫 문제로 돌아가면 Score가 0으로 reset 됨 [과제1. 퀴즈 score 올리기] #안젤라 코드 // score 전역 변수 선언 var score = 0 // 기존 함수에 기능 추가 mutating func checkAnswer(userAnswer: String) -> Bool { if userAnswer == quiz[questionNumber].answer { score += 1 // 기존 함수에 score 점수 +1 기능 추가 return true } el..

Apple/Swift 2023.04.04