![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/6wEa7/btsb5lLTCLf/HKYSv2PUpiFz8UiI4HqBz0/img.png)
시작하기에 앞서 제가 MVC, MVP, MVVM... 등등 어플리케이션 구조화를 위한 여러 디자인 패턴들을 학습하면서 나름대로 정리한 부분을 공유해보고자 합니다. 따라서 이 글에서 말하는 내용들이 정확한 사실이라기보단 제 나름대로 이해해보려 했던 노력으로 봐주시면 감사하겠습니다. 본 포스팅은 iOS를 기준으로 작성하였고 React를 조금 곁들였습니다. 하지만 그 외 플랫폼, 도메인에서도 어느정도는 이해하실 수 있을 내용입니다! 또한 앱, 웹 프론트 등을 합쳐 클라이언트라고 지칭하겠습니다. 1. MVC의 정의와 역사 MVC 등장 배경 MVC는 아주 오래된 패턴입니다. 1970년에 만들어져, 1980년대 쯤 보편화되었다고 하네요. 이때, 이 구조를 고안하게된 이유는 Small Talk으로 데스크탑앱을 만들기..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/uj4jh/btr8NdcTVdN/O91UEkIu8hM0IcQJKRCDt0/img.png)
I/O란? 블로킹(Blocking)/논블로킹(Non-Blocking)은 입출력(I/O)에 관한 문제입니다. 이때 I/O는 뭘까요? I/O는 파일 읽기⋅쓰기, 데이터 베이스 읽기⋅쓰기, 네트워킹 보내기⋅결과 받기 등을 의미합니다. 즉, 이 I/O들은 CPU와 메모리의 밖과 소통하는 작업들입니다. 이 작업들의 특징은 대부분 처리가 느리다는건데요, 이 점을 생각하시고 다음 개념들에 대해 읽어주시면 되겠습니다. 블로킹(Blocking)/논블로킹(Non-Blocking) 블로킹/논블로킹은 이 오래걸리는 I/O 작업을 스레드가 기다릴 것이냐 아니냐 입니다. 스레드가 기다리는 방식을 블로킹 이라고 하고, 기다리지 않는 방식을 논블로킹이라고 합니다. 블로킹 어떤 스레드가 작업을 처리하다가 I/O가 발생했다고 해봅시다...
TDD 공부하다가 정리한 내용을 써보려고합니다. 코드 커버리지(Code Coverage)란 테스트가 소프웨어를 충분히 검증할 수 있는지 나타내는 지표입니다. 즉, 테스트 케이스가 소스코드를 얼마나 커버하고 있는지를 나타냅니다. 백분율로 나타내며, 100%라고 해서 완벽한 소프트웨어라고 검증되는 것은 아닙니다. 보통 80%를 목표로 한다고 합니다. 실제 소스 코드를 알고 테스트하는 화이트박스 테스트를 통해 측정됩니다. 장점 코드 커버리지를 측정하면 다음과 같은 장점이 있습니다. 리팩토링 시에 기존 테스트가 얼마나 새로운 코드를 커버하는지 알 수 있어, 테스트 코드 관리가 편해집니다. 불필요한 코드가 사라집니다. 높은 커버리지를 위해서는 필요없는 코드를 정리해야하기 때문입니다. 측정 기준 함수(Functio..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bSaCSc/btrSUIr0e4b/2QCkTVszRmFFeHjuHp66Uk/img.png)
HTTP Status code는 http 요청에 대한 상태를 알려주는 코드입니다. 굉장히 많은 status code가 있는데, 모든 status code가 중요한 것은 아니라서 자주 쓰이는 코드만 정리해보려고 합니다. 구조 1~5로 시작하고 3자리 숫자로 이루어져있습니다. 맨 앞 숫자의 의미 1xx(Information, 정보) : 요청을 받았으며 처리 진행중 2xx(Successful, 성공) : 요청을 성공적으로 받았으며 정상적으로 처리 3xx(Redirection, 리다이렉션) : 요청 완료를 위해 추가 행동이 필요 4xx(Client Error, 클라이언트 오류) : 클라이언트 오류로 인해 요청을 처리할 수 없음 5xx(Server Error, 서버 오류) : 서버 오류로 인해 서버가 요청을 처리..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ee8Azr/btrSGRLaKKx/yyPJqlqRvV6WQrcjTbyVFK/img.png)
Reactive programming 이란? Reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change. (*출처 위키피디아) 리액티브 프로그래밍은 데이터 스트림과 변화의 전파와 관련된 선언형 프로그래밍 패러다임입니다. 프론트엔드에서 리액티브 프로그래밍이라고 하면 데이터 바인딩과 Rx(비동기 처리)가 있습니다. 데이터 바인딩과 Rx가 어떻게 리액티브 프로그래밍 패러다임을 따랐는지 정의에 나와있는대로 스트림, 변화의 전파, 선언형 등에 맞게 설명해보려고 합니다. 리액티브 프로그래밍의 핵심 제가 생각한 리액티브 프로그래밍의 핵심은 이렇습니다. Async: 결과..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bm8A6H/btrSwsYgeJ6/DDJ0gl0AL7YnYjKxgK3hv0/img.jpg)
소마 약 8개월정도의 과정이 끝났다... 처음 지원할때부터 자세히 회고해서 기록해보려고 한다. ㅎㅎ 지원과정 서류 -> 1차코테 -> 2차코테 -> 면접 방식이었다. 사실 서류는 합불을 따지는 요소가 아닌 것 같다. 프로그래밍에 대한 열정을 표현할 정도면 충분하다. 문항중에 소프트웨어 개발을 위해 '특별한 노력'을 한 경험을 적어달라고 해서 정말 어려웠는데, 특별한 경험이란게 별거 있나 싶다. 그냥 소소하게 노력했던 이야기를 썼었다. ㅎㅎ 글자수만 채우면 될 것 같다. 1차코테 2차코테는 사실 붙을 줄 몰랐다..!! 1차 코테는 절반~반이상 정도 푼거같고, 2차 코테는 0솔에 가깝다고 생각했는데... js랑 sql이 쉬워서 거의 풀었는데 여기서 점수를 얻지 않았나 싶다. 2차코테에선 js도 절반정도 풀고..
- Total
- Today
- Yesterday
- Flutter
- Flux
- GetX
- Bloking/Non-bloking
- DocC
- MVC
- Swift Concurrency
- 아키텍쳐 패턴
- coordinator pattern
- design pattern
- 소프트웨어마에스트로
- SwiftUI
- ios
- SWM
- notion
- MVI
- 프로그래머스
- 노션
- Architecture Pattern
- reactive programming
- TestCode
- RX
- programmers
- MVVM
- healthkit
- 비동기/동기
- swift
- 코디네이터 패턴
- combine
- 리액티브 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |