분류 전체보기
-
멀티프로세스 VS 멀티스레드CS(ComputerScience) 2021. 4. 30. 15:47
안녕하세요. 그린입니다🟢 이번 포스팅에서는 멀티프로세스와 멀티스레드에 대해 비교해보겠습니다🧑🏻💻 프로그래밍을 하다보면 멀티프로세스와 멀티스레드에 대해 어느것이 더 효율적인 성능을 낼 수 있는지 고민하게됩니다. 우선 비교를 하려면 프로세스가 무엇인지 스레드가 무엇인지부터 알아보도록 하겠습니다🎉 프로그램 - 작업을 실행할 수 있는 코드 파일 프로세스 - 프로그램을 실행시키는 인스턴스 - 각 독립된 메모리 영역 (코드 / 데이터 / 스택 / 힙)을 가짐 - 최소 1개의 스레드를 보유 - 프로세스끼리는 접근이 불가 (IPC, 프로세스 간 통신 기법을 통해 접근이 가능. e.g. 소켓) 스레드 - 프로세스 내에서 실행되는 하나의 흐름 단위 - 한 프로세스 내에 둘 이상의 스레드가 동시에 실행되는것이 멀티스레드 ..
-
CI / CDiOS 2021. 4. 29. 16:50
안녕하세요. 그린입니다🟢 이번 포스팅에서는 CI / CD에 대해 간략하게 학습해보겠습니다🧑🏻💻 CI - Continuous Integration (지속적 통합) - 빌드하고 테스트 자동화하는것 까지 의미 (최소한 테스트가 가능해야함) - 정기적 빌드 / 테스트 되어 팀 레파지토리에 통합하는 것을 말함 (앱의 변경사항) - 팀의 개발자들이 형상관리 툴로 공유하여 사용하는 환경이 되어야함 (깃헙 등) - Jenkins 같은 CI tool에 소스코드 변경을 보내고 처리 (빌드, 테스트, 머지를 진행하고 완료 결과를 알림) CD - Continuous Delivery / Deployment (배포 자동화) - CD가 되기 위해 항상 CI가 선행되어야함 - SW가 신뢰 가능한 수준에서 배포될 수 있도록 지속 관..
-
개념 자문자답Swift 2021. 4. 29. 11:28
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swift와 iOS 개발을 하며 몇가지 헷갈렸거나 하는 일부 개념들에 대한 자문자답을 해보겠습니다🧑🏻💻 MVC의 단점을 보안하기 위해 나온 아키텍쳐 패턴? (MVVM) - MVC: 모델 뷰 컨트롤러 각각을 분리하여 의존성을 없애려 했는데 뷰와 컨트롤러에서도 소통을 하는 의존성이 생길 수 있어 재사용성이 낮아지는 문제 - MVP: MVC와 동일한 개념으로 C대신 P 프레젠터로 변경된것으로 결국 MVC와 마찬가지로 뷰/프레젠터 사이 의존성 문제가 나타남 - MVVM: 위 2개 아키텍쳐 패턴의 단점을 극복하고자 나와 이벤트 흐름이 뷰 -> 뷰모델 -> 모델로 이뤄져있어 Command패턴과 Data Binding을 통해 의존성을 제거 타입 캐스팅 및 디이니셜라이저는 ..
-
ResultSwift 2021. 4. 28. 20:36
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Result 타입에 대해 알아보겠습니다🧑🏻💻 Result? - 성공 / 실패에 대한 정보를 담는 제네릭 열거형 타입 - 옵셔널과 유사하지만 값이 없지가 않음 (실패 케이스에도 오류에 대한 정보 존재) Result 분석 @frozen public enum Result where Failure : Error { /// A success, storing a `Success` value. case success(Success) /// A failure, storing a `Failure` value. case failure(Failure) //... } - @frozen: Objective-C에서 건너온 Enum에 새로운 케이스가 업데이트 되지 않는것을 보장되는 키워..
-
Closure 심화Swift 2021. 4. 27. 18:11
안녕하세요. 그린입니다🟢 이번 포스팅에서는 클로저의 심화편으로 Completion Handler / Escaping Closure / Auto Closure에 대해 알아보겠습니다. Completion Handler - 어떤 상황에서 일이 끝났을때 진행할 업무를 담당 - 컴플리션 핸들러에 클로저를 적용시켜볼 수 있음 Completion Handler에서의 클로저 축약 과정 1. VC.present(secondVC, animated: true, completion: { () in print(“화면 이동”) }) 2. VC.present(secondVC, animated: true, completion: { print(“화면 이동”) }) 3. VC.present(secondVC, animated: true)..
-
LLDB (9) - FormattingLLDB 2021. 4. 26. 11:47
안녕하세요. 그린입니다🟢 이번 포스팅에서는 LLDB에서 출력되는 설명 즉 Description의 정보 형식을 정의할 수 있는데 이에 대해 알아보겠습니다🧑🏻💻 Frame & Thread - LLDB에선 사용자가 프레임 및 스레드에 대한 설명(description)의 정보 형식을 정의할 수 있음 - 일반적으론 브레이크포인트 되어 중단되면 중단 이유 및 위치 설명에 대해 아래와 같이 두줄로 표시 * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: test`main at test.c:5 - 출력되는 형식 설정 (setting set) (lldb) settings set thread-stop-format STRI..
-
LLDB - 명령어 (8)LLDB 2021. 4. 25. 15:41
안녕하세요. 그린입니다🟢 이번 포스팅에서도 LLDB 명령어중 정리하지 못한 명령어에 대해 학습해보겠습니다🧑🏻💻 unalias: 별칭이 주어진것을 제거 (lldb) command unalias “별칭준것” thread step-inst: 명령어의 안으로 들어감 (lldb) si thread step-inst-over: 명령어의 한단계를 진행시킴 (lldb) ni thread until 라인or프레임: 해당 라인 혹은 프레임까지 스레드를 진행 thread list: 현재 스레드 리스트를 출력 --> *는 현재 스레드를 나타냄 thread backtrace: 스레드 역추적 -. 함축어: bt thread return : 해당 프레임에서 스레드 즉시 반환 frame variable: 해당 프레임에 선언된 변수..
-
LLDB - 명령어 (7)LLDB 2021. 4. 23. 15:55
안녕하세요. 그린입니다🟢 이번 포스팅에서는 여태 알아본 LLDB 명령어 외의 명령어를 알아보겠습니다🧑🏻💻 ptv: 뷰의 최상위 테이블뷰 정보 출력 (lldb) ptv pcells: 뷰의 최상위 테이블뷰셀 정보 출력 pinternals: 객체 내부 정보 출력 pkp: 키패스로 값 출력 present/dismiss: 뷰컨을 보여주거나 사라지게함 slowanim / unslowanim: 애니메이션을 느리게 / 정상적으로 해줌 paltrace: 서브뷰의 계층구조 출력 (오토레이아웃이 잘못되어 있으면 Ambiguous Layouts라고 뜨는걸 볼 수 있음) alamborder / alamunborder: 잘못된 오토레이아웃의 보더를 설정해주어 알아보기 쉽게 만듬 : 컬러를 지정해주지 않는다면 디폴트 보더색은 빨..