TDD 공부하다가 정리한 내용을 써보려고합니다. 코드 커버리지(Code Coverage)란 테스트가 소프웨어를 충분히 검증할 수 있는지 나타내는 지표입니다. 즉, 테스트 케이스가 소스코드를 얼마나 커버하고 있는지를 나타냅니다. 백분율로 나타내며, 100%라고 해서 완벽한 소프트웨어라고 검증되는 것은 아닙니다. 보통 80%를 목표로 한다고 합니다. 실제 소스 코드를 알고 테스트하는 화이트박스 테스트를 통해 측정됩니다. 장점 코드 커버리지를 측정하면 다음과 같은 장점이 있습니다. 리팩토링 시에 기존 테스트가 얼마나 새로운 코드를 커버하는지 알 수 있어, 테스트 코드 관리가 편해집니다. 불필요한 코드가 사라집니다. 높은 커버리지를 위해서는 필요없는 코드를 정리해야하기 때문입니다. 측정 기준 함수(Functio..
스토리보드와 제약조건 방식의 UI 구성은 관리하기가 매우 어렵습니다. SwiftUI는 편리하지만 아직 UIKit을 완전히 대체하기엔 무리가 있죠. 그래서 스토리보드 대안으로 사용되는 여러 라이브러리들이 나오게 되었는데요, 그 중 FlexLayout에 대해 알아보겠습니다. 먼저 FlexLayout과 함께 사용되는 PinLayout부터 알아보겠습니다. PinLayout CSS absolute position 방식에 기반한 레이아웃 섬세한 조정과 애니메이션에 유용합니다. 한번에 하나의 뷰를 배치할 때 유리합니다. top, left, bottom, right 속성을 이용해서 레이아웃합니다. .top(10)이면 super view의 위에서 10 떨어진 곳에 위치하는 방식입니다. 기본적으로 super view 기준..
HTTP Status code는 http 요청에 대한 상태를 알려주는 코드입니다. 굉장히 많은 status code가 있는데, 모든 status code가 중요한 것은 아니라서 자주 쓰이는 코드만 정리해보려고 합니다. 구조 1~5로 시작하고 3자리 숫자로 이루어져있습니다. 맨 앞 숫자의 의미 1xx(Information, 정보) : 요청을 받았으며 처리 진행중 2xx(Successful, 성공) : 요청을 성공적으로 받았으며 정상적으로 처리 3xx(Redirection, 리다이렉션) : 요청 완료를 위해 추가 행동이 필요 4xx(Client Error, 클라이언트 오류) : 클라이언트 오류로 인해 요청을 처리할 수 없음 5xx(Server Error, 서버 오류) : 서버 오류로 인해 서버가 요청을 처리..
Reactive programming 이란? Reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. (*출처 위키피디아) 리액티브 프로그래밍은 데이터 스트림과 변화의 전파와 관련된 선언형 프로그래밍 패러다임입니다. 프론트엔드에서 리액티브 프로그래밍이라고 하면 데이터 바인딩과 Rx(비동기 처리)가 있습니다. 데이터 바인딩과 Rx가 어떻게 리액티브 프로그래밍 패러다임을 따랐는지 정의에 나와있는대로 스트림, 변화의 전파, 선언형 등에 맞게 설명해보려고 합니다. 리액티브 프로그래밍의 핵심 제가 생각한 리액티브 프로그래밍의 핵심은 이렇습니다. Async: 결과..
소마 약 8개월정도의 과정이 끝났다... 처음 지원할때부터 자세히 회고해서 기록해보려고 한다. ㅎㅎ 지원과정 서류 -> 1차코테 -> 2차코테 -> 면접 방식이었다. 사실 서류는 합불을 따지는 요소가 아닌 것 같다. 프로그래밍에 대한 열정을 표현할 정도면 충분하다. 문항중에 소프트웨어 개발을 위해 '특별한 노력'을 한 경험을 적어달라고 해서 정말 어려웠는데, 특별한 경험이란게 별거 있나 싶다. 그냥 소소하게 노력했던 이야기를 썼었다. ㅎㅎ 글자수만 채우면 될 것 같다. 1차코테 2차코테는 사실 붙을 줄 몰랐다..!! 1차 코테는 절반~반이상 정도 푼거같고, 2차 코테는 0솔에 가깝다고 생각했는데... js랑 sql이 쉬워서 거의 풀었는데 여기서 점수를 얻지 않았나 싶다. 2차코테에선 js도 절반정도 풀고..
Flutter에서 웹뷰를 띄워보겠습니다. 1. 라이브러리 설정 [pubspec.yaml]에 해당 라이브러리를 추가해줍니다. dependencies: flutter: webview_flutter: ^3.0.4 // 최신버전으로 적어주세요 최신버전 확인 : https://pub.dev/packages/webview_flutter/install 아니면 터미널에 다음 명령어를 입력하셔도 됩니다. (자동으로 최신버전 다운로드) flutter pub add webview_flutter 2. 웹 뷰 컴포넌트 생성 import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; class CustomWebView ..
라이브러리 Retrofit과 Freezed를 이용해서 REST 통신을 하는 상황에서 에러가 발생했습니다. Retrofit은 Dio라이브러리를 이용해 네트워킹을 해주는 라이브러리이고, Freezed는 json을 객체로 매핑하는 작업 (serialize)을 도와주는 라이브러리입니다. (json_serializable 라이브러리를 의존) 두 라이브러리 모두 어노테이션을 이용한 코드 제너레이터 기능이 있기 때문에 타이핑 코드양을 정말 많이 줄일 수 있습니다. 에러 DioError [DioErrorType.other]: type 'String' is not a subtype of type 'Map?' in type cast 타입 에러가 발생했습니다. Map으로 들어와야할 값이 String으로 들어왔다고 합니다. ..
에러내용 App Transport Security has blocked a cleartext HTTP connection ... 라는 에러가 뜨면서 URLSession과 같은 네트워크 통신 코드가 작동하지 않는 문제가 발생했습니다. 해결방법 위 사진 순서대로 따라가 Info에서 App Transport Security Settings > Allow Arbitrary Loads 를 YES로 바꿔줍니다. 만약 해당 속성이 없다면 중간쯤 + 버튼을 이용해 새 속성을 추가하고 App Transport .. 속성을 찾아 추가해줍니다. 토글을 열고 Allow Arbitrary Loads도 추가해서 YES로 설정하면 됩니다.
- Total
- Today
- Yesterday
- Architecture Pattern
- MVVM
- swift
- MVC
- TestCode
- design pattern
- Swift Concurrency
- 코디네이터 패턴
- Flutter
- SWM
- SwiftUI
- notion
- DocC
- 소프트웨어마에스트로
- RX
- coordinator pattern
- 프로그래머스
- ios
- 노션
- GetX
- reactive programming
- programmers
- Flux
- healthkit
- Bloking/Non-bloking
- 리액티브 프로그래밍
- combine
- 아키텍쳐 패턴
- MVI
- 비동기/동기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |