전체 글 170

Core Data와 Database의 차이점

Apple 공식 문서에 따르면 Core Data는 Database가 아니라고 명시되어 있습니다. Core Data와 Database 모두 영속적인 저장소를 제공하는 방법이므로 구체적으로 어떤 차이점을 갖고 있는지는 명확하지 않습니다. 이번 포스트에서는 Core Data가 동작하는 방식을 살펴보면서 어떻게 Database와 다른지 살펴보도록 하겠습니다. 데이터베이스(DB)의 주된 기능 데이터베이스(DB)는 영속적이고 검색 가능한 테이블 형태의 구조로써 Column과 Row로 구성된 데이터 저장소라고 할 수 있을 것입니다. 이 저장소의 주된 목적은 Disk에 항상 최신의 데이터를 저장하는 것이며, 데이터를 불러오고 업데이트를 하는 것이 그 다음으로 중요한 목적일 것입니다. 이러한 주된 기능들을 훨씬 넘어서는..

클라이언트 2020.02.18

2020년 목표를 적어봅시다.

가볍게 2020년 목표를 정리해봅시다. 1. 카카오 정직원 전환 성공 카카오 정직원 전환에 성공하는 것이 첫 번째 목표 (달성) 2. 순탄하게 숭실대학교 졸업을 한다. 3. 정직원 전환 성공 시 자취할 전세집을 마련한다. 4. Notissu 새로운 디자인을 적용하여 출시 5. Notissu 다양한 기능을 추가하여 업데이트하기(달성) 6. 공지사항 받아오는 부분을 Open Source로 만들어 배포하고 이를 활용하여 개발 (빌드 시간 단축 및 모듈화) 7. 서울대학교 공지사항 어플리케이션 개발 (진행) 8. 마스크 재고 확인 어플리케이션 개발 (달성예정) 9. 다른 개인 앱 추가 출시 10. YAPP 16기 성공적인 마무리 11. YAPP 17기 (시간적 여유가 된다면) 12. 진짜 취미 하나 만들어보기 ..

일상이야기 2020.02.16

Swift 메모리 안정성

이번 포스트에서는 Swift 개발 시 고려할 수 있는 메모리 안정성에 대한 주제를 다뤄보도록 하겠습니다. Swift에서는 메모리 접근 충돌을 막기 위한 작업이 이루어집니다. 그렇기 때문에 Swift 개발자는 Memory Safety에 대해 크게 고려하지 않아도 개발할 수 있습니다. 하지만 Memory Access Conflict가 발생할 수 있는 상황을 이해하고 Memory Access Conflict를 방지할 수 있는 코드를 어떻게 작성할 수 있는지 이해하는 것은 중요합니다. Memory Access Conflict는 변수에 값을 쓰는 작업과 읽는 작업이 동시에 이루어질 경우 주로 발생합니다. var num1 = 1 var num2 = 2 print("num1 : \(num1), num2 : \(num..

Swift 제어문 (조건문, 반복문)

이번 포스트에서는 Swift에서 제공하는 다양한 제어문에 대해 살펴보도록 하겠습니다. Swift에서는 while, if, guard, switch, for-in 등 다양한 제어문을 제공합니다. 1. White Swift에서는 while문과 repeat-while문 두 가지 종류의 while 문을 제공하고 있습니다. while 조건 { 코드 구문 } 실제 사용 예시는 아래와 같습니다. var score = 0 while true { score += 10 if score > 100 { print("while문을 종료합니다.") break } } Repeat-While Repeat - While 문은 다른 언어에서는 do-while이라고 불리는 것과 동일합니다. repeat { 실행 구문 } while 조건 ..

Today Extension 올바르게 사용하기 ( 위젯 깜빡임 현상 )

이번 포스트에서는 Today Extension올바르게 사용하는 방법에 대해 알아보도록 하겠습니다. Today Extension은 지난 포스트에도 한번 설명한 바가 있듯이 알림 센터에 나오는 위젯이라고 생각하시면 됩니다. Host APP을 실행하지 않고도 간단한 정보를 간편하게 사용자에게 제공해주기 위해 사용하는 요소입니다. Today Extension에서도 Core Data와 API Request를 할 수 있습니다. 이 때 주의해야 할 점이 있습니다. 바로 Today Extension의 View Controller의 Life Cycle에 대한 이해가 중요합니다. 왜 그럴까요? Today View Controller는 사용자가 홈 화면에서 가장 왼쪽 화면으로 스와이프하거나 알림센터를 내릴 때 화면에 나타납..

클라이언트 2020.02.11

Swift Collection Types (컬렉션 타입)

이번 포스트에서는 Swift에서 제공하는 Collection 타입에 대해 알아보도록 하겠습니다. Swift에서는 Collection Type으로 Array (배열), Dictionary (딕셔너리), Set (집합) 을 제공합니다. Objective-C에서는 Immutable과 Mutable이 구분되어 있었는데 Swift에서는 var와 let으로 그 기능을 사용할 수 있습니다. var로 정의하게 되면 Mutable이 되는 것이며 let으로 정의되면 Immutable이 됩니다. (예를 들어, NSMutableArray와 NSArray는 swift에서 var arr: [Int]? / let arr = [Int]() 와 같이 사용할 수 있습니다.) var arrayMutable: [Int]? // 변경 가능 ..

Swift 문자열과 문자

이번 포스트에서는 Swift에서 문자열과 문자에 대해 살펴보도록 하겠습니다. Swift에서 제공하는 String은 Foundation 프레임워크의 NSString이 bridge된 타입이기 때문에 NSString의 메소드를 String에서 캐스팅 없이 사용 가능합니다. (NSString은 Objective C에서 사용하는 문자열 타입입니다.) 문자열은 큰 따옴표(“)로 묶어 표현 합니다. 여러줄의 문자열을 사용하고 싶은 경우 큰 따옴표 3개(“””)로 묶어서 사용할 수 있습니다. 여러줄 문자열을 사용하며 줄바꿈을 하고 싶으면 백슬래쉬(\)를 사용합니다. let quotation = """ 나는 나와 연애를 했다. \ 너무 슬프지만 어쩔 수 없다. \ "연애를 하고 싶고 좋은 사람을 만나고 싶다." \ ""..

Swift의 기본 연산자

이번 포스트에서는 Swift의 기본 연산자에 대해 살펴보도록 하겠습니다. 할당 연산자 할당 연산자는 값을 초기화하거나 이미 설정된 값을 새로운 값으로 변경하는 역할을 가지고 있습니다. 아래와 같이 상수, 변수 모두 사용할 수 있습니다. 또한 튜플 형식을 사용하여 여러 개의 값을 한 번에 할당할 수도 있습니다. let num1 = 10 var num2 = 5 num2 = num1 // 결과 : num2 = 10, num1 = 10 let (numX, numY) = (10, 20) // numX는 10, numY는 20이 할당됩니다. C 혹은 Objective-C와는 달리 Swift에서 할당 연산자는 값을 반환하지 않는 특징을 하지고 있습니다. 즉, C 혹은 Objective-C에서 성공적으로 값이 할당된 ..

GitHub를 활용한 이슈 관리

이번 포스트에서는 GitHub에서 제공하는 도구를 활용하여 이슈를 관리하는 방법에 대해 알아보도록 하겠습니다. GitHub에는 Project Board, Issue관리, Milestone 기능을 제공합니다. 본격적인 관리법을 소개하기에 앞서 Issue에 대해 알아보도록 하겠습니다. Issue의 전체적인 Flow 1. Isuee 발급 2. Issue 작업 3. Pull Request & Code Review 4. Issue 반영 & Close Repository에 들어가면 Issue라는 탭이 있습니다. 해당 탭을 누르면 위와 같은 화면이 나오는데 여기서 이슈를 등록할 수 있습니다. New Issue 버튼을 누르면 아래 화면이 나오게 됩니다. 이슈를 등록하는 화면입니다. 각 부분별로 살펴보도록 하겠습니다. ..

개발 일반 2020.02.07

Agile 방법론에 대한 발췌글

Agile 방법론에 대해 간단하게 잘 정리된 글이 하나있어 발췌하였습니다. 출저 : https://velog.io/@dooyou21/%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-%EC%8A%A4%ED%81%AC%EB%9F%BC-%EC%95%A0%EC%9E%90%EC%9D%BC 가장 익숙한 단어인 스프린트(Sprint)를 먼저 찾아보았다. 스프린트의 사전적 의미는 아래와 같다 스프린트(sprint): 육상 경기·수영 경기·스피드 스케이트 등의 단거리 레이스. 또는, 단거리를 전력(全力)으로 행하는 질주(疾走)나 역영(力泳). 단거리 전력질주. 이 정의를 일에 대입해서, 매우 크지 않은 태스크(단거리)를 적당한 기간(너무 길면 안됨! 단거리니까)동안 집중해서 전력질주하듯 업무를 수행하는..

개발 일반 2020.02.02