오늘은 사전과제였던 구구단을 팀원과 같이 다시 학습하는 시간을 가졌다.먼저 각자 기존에 작성하였던 구구단 코드를 다른 팀원에게 설명하는 시간을 가졌다. 각자 왜 코드를 특정한 방식으로 짰는지 한 줄 한 줄 최대한 자세히 설명하려고 노력하였다. 다른 팀원의 코드를 보면서
git_workflow출처: 야곰의 강의자료Working Directory작업하는 일반적인 local 공간\*add를 통해 Stage Area로 옮길 수 있음Stage Areaadd된 자료가 모이는 공간\*commit을 통해 Repository로 넘겨줄 수 있음git
<특징>ROMRead Only Memory비교적 느림항구적 기억장치비 휘발성 메모리RAMRandom Access Memory비교적 빠름휘발성 메모리, 비교적 빠른 속도, ex): 주기적으로 재충전이 필요한 DRAM(동적 램)Ex): 전원이 유지되는 상태에서 기억
A type that represents either a wrapped value or nil, the absence of a valueOptional에 대해 더 알고 싶다면...\*Xcode에서 Optional문자를 키보드의option + mouse click 시 O
"An entity describes an object, including its name, attributes, and relationships"출처: Configuring Entities | Apple Developer Documentation타입 은 개체를 대표하
특정한 프로젝트를 나와 다른 협업자와 같이 작업한다고 가정할 때우리는 지구 갱생 project의 step1 브랜치에서 같이 작업을 하는 중이다.그런데 코로나 때문에 자가격리를 하면서 따로 프로젝트를 진행해야 할 상황에 처해졌다.따라서 우리는 step1-inwood
Optional Chaining이란? 참고하면 좋을 블로그👇👇👇\[옵셔널 체이닝 | yagom’s Swift Basic\[옵셔널체이닝(Optional Chaining) 알아보기 (feat. Flow chart) – Neph – Swift Knowledge and
do-catch 구문을 활용하여 혼자서 코드를 짜다가 드는 의문점이 있었다. catch문 뒤에 GameError.unknownError 에러패턴을 적으니 try 에서 이런 오류가 나서 당황스러웠다:Errors thrown from here are not handled
설계할 때 자주 쓰이는 템플릿. 선배들의 삽질기록.코드의 모양새Design Patterns(1994) by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides디자인 패턴의 의미OOP의 다양한 문제상황에 대한 예방프로그래
구조체 또는 클래스 내 프로퍼티를 읽기만 가능하도록 제한 하려면 어떻게 해야 하는가?이럴 경우 설정자setter 만 더 낮은 접근 수준을 갖도록 제한해주면 된다.요소의 접근 수준 키워드 뒤에 private(set)을 작성 해주면 설정자의 접근수준만 더 낮도록 지정해
한문장으로 설명할 수 없는 개념은 모르는 개념과 같다.인스턴스: 일을 수행할 수 있는 실체 또는 형태이 일을 하는 실체는 그 실체를 설명하는 것으로 부터 시작된다.인스턴스를 만들기 위해서는 이를 설명 해 줄 수 있는 코드가 필요하다. 필요한 것은 바로바로 타입\[Typ
하나의 앱, 또는 프로젝트를 구성할 때 구성요소를 아래와 같이 3가지 역할로 구분:Model - View - ControllerModel데이터 관리View사용자에게 보여지는 역할ControllerModel과 View 사이의 중간다리View와 Model은 분리되어있다사용
layout: post title: "Mar 15, 2021, TIL (Today I Learned) - Notification Center, iOS" summary: "iOS 커리어 스타터 캠프 2기" author: inwoodev date: '2021-03-15
매개변수란?매개변수 또는 parameter란 변수를 함수와 같은 동작을 하는 기능의 인풋으로 제공되는 데이터를 가리키기 위해 사용된다.이렇게 인풋으로 제공되는 데이터를 우리는 전달인자(argument)라고 부른다.Swift의 함수에서는 name : type 과 같은 형
생명 주기란?화면이 태어나고 죽기까지의 과정 또는 cycle이라고 볼 수 있다.무엇을 기준으로 태어난 것과 죽었다는 것을 결정하나?객체지향 프로그램에서는 객체가 클래스의 인스턴스이다.메모리에 올라왔다 == instance의 태어남. 즉 해당 데이터가 활동할 준비가 되어
함수를 적절히 분할하여 역할에 맞게 분배하기!기존 방법:FruitStorage의 managefruit() 메서드가 모든 작업을 다 하기에 해당 메서드의 어깨가 너무 무겁다. 또한 model에서 에러처리를 하고 받아 주었기 때문에 Viewcontroller에서 어떻게 재
도식화/ 시각화의 강력함의사소통!!나 자신 → 전체 구조 및 클래스 의존성 파악같이 일하는 사람 → 의사소통 및 설계 논의미래에 이 프로그램을 맡을 사람(나 포함) → 문서화Structural Diagram 정적인 다이어그램Sequence Diagram동적인 다이어그램
동기 / 목표성장하기 위해서 모든 공부는 동기와 목표가 있어야 한다.it could be... 문제 해결 또는 그냥 흥미!!그런데 성장이라는 자체가 공부의 목표 또는 동기가 되면 안된다.성장은 너무 추상적이기 때문에 내가 성장을 이루었는지 정확히 확인하기가 어렵다.따라
가치와 원칙가치는 원칙보다 높은 수준의 개념원칙은 가치를 지키기위해서 존재해야한다.가치를 최우선적으로 생각하며 원칙을 지켜보자개발자는 코드를 통한 커뮤니케이션읽고 이해할 수 없는 코드가 더욱 가치가 없다.코드는 단순해야 한다.커뮤니케이션에 도움이 된다.버그가 생길 틈이
분명 계산기만드는 프로젝트 진행 중이었는데 갑자기 뿌리와 근원이라....이걸 왜 배워야 하나 고민 해 봤습니다...그런데 역시 제가 잘못 찾았던거 였습니다 ㅠㅠ2진법, 10진법 등 같은 수체계에서 각각의 숫자 위치에서 사용되는 숫자의 크기를 radix라 합니다 😁그럼
테스트주도 개발(Test-driven Development TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에 그 테스트 케이스를 통과하기 위한 최소한의 코
기존 이진계산기의 연산자와 피연산자를 데이터를 담아두는 그릇을 클래스 내 전역변수 배열로 만들어 준 뒤 singleton 변수 sharedInstance를 만들어 주어서 클래스간 데이터를 전달하고 받아주면서 연산작업을 진행하였습니다.그런데...싱글턴을 여러 클래스에서
Warning: 이해한 부분을 최대한 남기고 정리하려 남긴 글 입니다. 틀린 부분이 있을 수 있습니다. 이점 유의하고 읽어주시면 감사할 것 같습니다. 그리고 틀린 부분 알려주시면 바로바로 고치도록 하겠습니다.Auto Layout Guide: Anatomy of a Co
설계를 간과하지 말자코드에 집착하기 보다는 설계를 어떻게 할지 깊게 생각하고 꼭 리뷰어에게 설계한 UML에 대한 조언을 구하자!!기존에는 타입프로퍼티를 활용하여 계산값을 담아서 사용하였습니다.그런데 이렇게 사용하면 테스트 여러개를 병렬로 수행할 수 없을 것 같다는 생각
계산기기능을 구현만 한 뒤 앱으로 만들면 어떻게 될까? 내가 생각하지 못한 부분에서 에러가 나면 다시 처음부터 하나하나 고친 뒤 다시 해당 앱을 업로드 해야 할 것이다. 해결하기 전에 해당 앱을 다운로드 받은 유저는 문제를 해결한 버전을 다시 다운로드 받으면 되긴하지만
나 자신을 알자..부족한 점을 깨닫고 DEADLINE 까지 할 수 있을만큼 최선을 다해서 하자컴퓨터끼리 데이터를 주고 받을 때 변환 형태를 거쳐서 가게 된다. JSON은 통신할 때 쓰는 데이터 양식이다.JSON은 문자열로 특정한 인스턴스 또는 오브젝트를 표현하는 표기법
"With Text Styles APIs, Dynamic Type support is automatic"Typography - Visual Design - iOS - Human Interface Guidelines - Apple Developer특정 앱의 텍스트나 버튼
iOS 애플리케이션에서 정보를 리스트 형태로 보여주기 위해 사용하는 사용자 인터페이스 입니다.UITableViewCell은 UIView를 상속 받는다테이블뷰의 셀은 각 테이블 뷰를 이루는 개별적인 행(row)을 뜻한다.당연하게 들릴지도 모르지만 테이블뷰 셀은 UITab
코드의 블럭일급객체전달인자, 변수, 상수 등으로 저장, 전달이 가능함수: 이름이 있는 클로저매개변수, 반환 타입 생략 가능return 키워드 생략 가능축약된 전달인자 이름을 사용 가능후행 클로저하나 이상의 함수를 인자로 취하는 함수함수를 결과로 반환하는 함수map, f
UITableView를 구현하는 방법으로는 우선 UIViewController를 생성한 뒤 UITableViewDelegate 프로토콜과 UITableViewDataSource프로토콜을 채택하는 방법그리고 UIViewController를 상속받는 UITableViewC
시스템의 오류랑 벌레잡기Build: 소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정아래와 같은 일련의 과정을 거쳐서 빌드를 한다.Compile: Compiler가 우리가 작성한 코드를 컴퓨터가 읽을 수 있는 언어로 변환 해 주는 작업.원시코드Swift
XCode 11.4버전부터 Testing에 새로 추가 된 기능이 있습니다. 기존에는 테스트 시작 전에는 단순히 테스트 시작 준비 그리고 테스트 후 데이터를 cleanUp 해주는데 이제는 에러처리까지 가능해졌더라구요.이 부분에 대한 이해가 많이 부족한 것 같아서 공식문
End-To-End예): 전체 구매 과정Integration예): 상품 상세 화면Unit예): 상품 가격 뷰테스트 하기 쉬운 것 부터유틸리티: 입력이 같으면 출력이 같다를 증명하는 테스트!이런 것도 굳이 테스트를 작성해야 할까?사소한 것이라도 시간만 허락해진다면 하는게
메인 쓰레드는 1/60초에 한번씩 (60Hz)화면을 다시 그리는 역할을 하고 있기 때문에 오래걸리는 작업(네트워크 통신)과 같은 일을 시키면 안된다. (버벅임의 원인이 된다.)iOS에서는 다른 쓰레드로 보내는 비동기처리를 큐(대기열)의 개념으로 처리한다.GCD(Disp
제 첫 아이디어 Screen Shot 2021-04-30 at 3.07.42 PMFezz 아이디어Screen Shot 2021-04-30 at 3.15.15 PM아이디어 퓨전!!!!!은행창구퓨전실패for문 속에서 dependency를 주는 방법은
동시성 프로그래밍: 단일 코어에서 여러 개의 thread를 활용하여 시간을 잘게 쪼개서 일을 진행하는 것이기에 동시에 실행되는 것 처럼 보인다. 앱 같은 경우 여러개의 작업(데이터 압축, 처리, 테이블뷰 등등)을 실행하기 위해 병렬 프로그래밍: 여러개의 프로세스를 같은
layout: posttitle: "May 04, 2021, TIL (Today I Learned) - Delegate Pattern, Protocol Adoption & Conformance"summary: "iOS 커리어 스타터 캠프 2기"author: inwoo
layout: posttitle: "May 06, 2021, TIL (Today I Learned) - Scene Delegate & App Delegate"summary: "iOS 커리어 스타터 캠프 2기"author: inwoodevdate: '2021-05-06
Fast(빠르게) : 테스트는 빨리 실행되야 한다. 그래서 사람들이 신경쓰지 않는다.Independent/Isolated(독립적/분리된) : 테스트는 따로 설정이나 분리를 해서는 안된다.Repeatable(반복가능한) : 테스트 수행할때마다 동일한 결과를 얻어야 한다.
팩스 소리 나던 시절 (스티븐 어렸을 적)전화선을 통해 0과 1을 통신여보세요? (사람이 전화 받는 양식)프로토콜통신규약 (정보를 주고 받는 약속)장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계즉, 통신(네트워킹) 할 때 정해진 메세지 규칙http, https,
Step 1 : 다음의 조건을 만족하는 테이블뷰를 구현해봅시다섹션이 10개이며, 각 섹션의 줄 수는 섹션번호+2 개 (섹션번호는 0부터 시작)4번 섹션까지는 셀의 레이블에 (섹션번호, 줄번호)를 표기하고, 그 이후는 없음각 섹션의 3번 줄은 빨간색 배경을 가진 셀을 표
layout: posttitle: "May 17, 2021, TIL (Today I Learned) - Collection View vs TableView"summary: "iOS 커리어 스타터 캠프 2기"author: inwoodevdate: '2021-05-17
테스트를 위해 아래와 같이 Sample api를 만들어봤습니다.Screen Shot 2021-05-18 at 10.23.26 PM그런데 이걸 테스트에서 어떻게 사용하면 좋을까 고민하다가 이렇게 타입으로 먼저 구현했습니다.Screen Shot 2021-05-18 at 1
NSObject타입 이름객체로써 사용할 수 있는 타입의 모음으로 정의된다.상위 클래스 기능 변경시 하위 클래스에 영향을 끼칠 수 있습니다.불필요한 요소를 자식 클래스가 물려받아야 하는 상황이 생길 수 있어요.프로토콜도 어떤 타입이라 생각했을 때 프로토콜에게도 기능을 덧
Create a composite Interface by combining content from one or more view controllers with other custom views.특정 ViewController가 다른 ViewController를 Cont
페이스북, 트위터와 같은 소셜미디어 앱을 들어가보면 유저가 feed를 스크롤링할 때 끊임 없이 데이터를 불러오는 것을 볼 수 있습니다. 이런 기술은 어떻게 구현이 되는지 한 번 끄적여보면서 알아가 보겠습니다.추가 예정
Screen Shot 2021-05-29 at 10.23.52 PMCellForItemAtIndexPath: dataSource 메서드를 reuse cell이 생성되고 prepareForReuse 메서드를 호출해서 cell 재사용 준비작업을 수행한다. 해당 과정에서 c
Persist or cached data on a single device, or sync data to multiple devices with CloudKitCore Data를 활용하여 애플리케이션의 반영구적 데이터를 오프라인에서 사용하고, temporary data
UIView의 인스턴스 프로퍼티According to Apple...A Boolean value that determines whether the view’s autoresizing mask is translated into Auto Layout constraints.
이벤트를 핸들링하고 이벤트에 반응할 수 있는 객체. 모든 responder 객체는 UIResponder에서 상속된 클래스의 인스턴스. 모든 UIApplication, UIWindow, UIViewController, UIView의 객체들은 responder입니다. R
Swift를 공부하면서 네트워크 작업을 해야 하는 경우가 많습니다. 그럴 경우 아래와 같이 urlSession 또는 alamofire를 많이들 활용합니다.제가 진행했던 프로젝트에서는 오픈마켓의 API를 통해 상품 목록의 데이터를 가져와서 cell에 구현해 줘야 했습니다
Simulator Screen Recording - iPhone 11 - 2021-06-09 at 14.11.17해당 화면은 collectionView를 활용하여 상품목록을 보여주는 화면입니다. 얼핏보면 segmented control을 터치하여 화면이 정상적으로 전환
frame과 bound는 가족사진 액자라고 이해하면 쉽습니다. frame위치를 조정하면 액자 안에 있는 사진의 위치 또한 같이 바뀝니다. 반면에 bound는 사진을 제외한 엑자라고 보시면 됩니다. bound 위치를 바꾸면 사진은 움직이지 않습니다. 다만 액자만 움직이
Simulator Screen Recording - iPhone 12 Pro - 2021-06-22 at 22.00.27상품을 등록하는 페이지를 구현 중 맞닥드린 문제는 이와 같습니다. 사용자가 상품등록시 비밀번호를 모두 숫자로 입력하거나 빈칸으로 냅두면 경고 알림장을
multipart/form-data를 전송하기 위해 form을 작성하던 중 어이없는 문제 때문에 몇 시간을 소비했는지 모르겠습니다. 다시는 이런 실수를 하지말아야겠다는 마음으로 글을 남겨봅니다.혹시 차이가 보이시나요?문제는 : 이었습니다. 이거 하나 때문에 몇 시간을
같은 앱의 일 경우 해당 앱이 드래그의 source app 그리고 destination app 이 됩니다!TableView의 drag 와 drop 기능을 지원하게 하려면 먼저 ViewController에게 UITableViewDragDelegate 프로토콜을 채택하게
tcp/ip , http/https , ws/wss 가 가장 대중적이고, 보편적으로 사용되는 통신프로토콜ip 주소에 도메인이라는 별칭을 통해 사람이 쉽게 기억할 수 있게 되었습니다.{{ipAddress}}:{{port}} → {{domain}}:{{port}} 로 네트
드래그앤 드랍을 활용하여 사용자는 아이패드 앱의 데이터를 같은 앱 또는 다른 앱으로 복사할 수 있습니다. 해당 데이터는 NSItemProvider 개체를 활용해서 공유됩니다. NSItem Provider는 데이터 약속입니다. 모든 드래그 앤 드랍 데이터는 비동기적으로
UIView 클래스는 가장 적합하다고 판단될 때 프로그래머가 요청한 View 업데이트 사항을 취합하여 drawing code를 통해 view를 다시 그린다.View 업데이트를 야기하는 행동은 아래와 같은 경우가 있습니다:특정한 View를 부분적으로 가리고 있던 다른 V
서버 또는 로컬에서 유저 기기에게 푸쉬 알림을 전달 해 주는 프레임워크 입니다.로컬 알림 같은 경우 앱이 시간 또는 위치에 따라 알림 컨텐츠를 생성합니다. 서버 노티피케이션 같은 경우 회사의 서버가 푸쉬 알림을 생성하고 애플의 Apple Push Notification
지역화는 앱을 여러 언어와 지역에 맞게 번역하고 적용하는 과정을 뜻 합니다. 앱 지역화를 통해서 다양한 언어를 사용하는 사용자가 앱 스토어에서 앱을 다운받았을 때 사용할 수 있게 해 줍니다.프로젝트의 앱을 지역화 해보세요.텍스트이미지날짜화폐단위글쓰기 방향접근성 향상을
1layout: posttitle: "July 19, 2021, TIL (Today I Learned) King fisher and more"summary: "analyzing Kingfisher"author: inwoodevdate: '2021-07-19 22:35
보안의 유무HTTP :: 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜HTTPS :: HTTP에 데이터 암호화가 추가된 프로토콜"HTTPS프로토콜은 SSL을 사용함으로써...서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버
coming soon...
CAAnimation: Core Animation의 추상 클래스. 실제로 사용되지는 않고해당 클래스를 상속받아서 실제로 사용합니다.CALayer: animation과 view에 있는 이미지 기반의 컨텐츠를 표현할 때 사용Screen Shot 2021-08-02 at 1
본 글은 raywenderlich의 Design Patterns on iOS using Swift - Part 1/2, Design Patterns on iOS using Swift - Part 2/ 2을 읽고 이해한 바탕으로 필요한 부분을 정리한 글입니다.소프트웨어
An abstract class representing a streamStream 객체는 디바이스로부터 독립적으로 존재하는 여러가지 미디어로부터 데이터를 읽거나 쓸 수 있는 기능을 제시 해 줍니다. 메모리, 파일, 또는 네트워크(소켓을 활용하여)에 존재하는 데이터를 위
A build setting provides information necessary for building the product(https://help.apple.com/xcode/mac/current/타겟은 빌드하기 위한 프로덕트를 뜻합니다. A targe
앱 확장 프로그램을 사용하면 맞춤형 기능과 콘텐츠를 앱 외부로 확장할 수 있으며 사용자가 다른 앱 또는 시스템과 상호 작용하는 동안에도 앱 기능을 사용할 수 있습니다.it implements a specific, well scoped task that adheres t
coming soon
coming soon.