Today I Learned
개발자로서 성장하는 하루하루를 기록하기위해 만든 공간입니다.
2단계를 통해 학습, 복습하고 있습니다 ✨ 1단계. GitHub에 메모 ✨ 2단계. 블로그에 정리해서 게시 ✨
442 TILs and counting...
- 기본적인 자료구조 - 배열 - Sun Sep 29 17:30:58 2024 +0900
- 비동기처리가 필요한 이유 - Sun Sep 29 17:30:58 2024 +0900
- 비동기(Async), 동시(Concurrent)의 개념 - Sun Sep 29 17:30:58 2024 +0900
- 기본적인 자료구조 - 연결 리스트 (Linked List) - Sun Sep 29 17:30:58 2024 +0900
- 프로그래밍에서 동기 비동기 개념에 대한 이해 - Mon Aug 19 20:54:54 2024 +0900
- A_Writing_in_Progress
- About-AI
- About-Error
- About-IT
- Algorithm
- CI_CD
- ComputerScience
- Conference
- Docs
- Flutter
- Git
- Insight
- Mobile-Android
- Ruby
- Sample-App-List
- Self-Review
- iOS-AppStore
- iOS-Architecture
- iOS-Concurrency
- iOS-CustomLogic
- iOS-Development
- iOS-Environment
- iOS-Extensions
- iOS-Foundation
- iOS-Framework-CoreAnimation
- iOS-Framework-CoreLocation
- iOS-Framework-Management
- iOS-Framework-Migration
- iOS-Framework-PhotoKit
- iOS-Framework-SwiftUI
- iOS-Framework-SwiftUI_UIKit
- iOS-Framework-UIKit
- iOS-Framework-UIKit-UIResponder-UIApplication
- iOS-Framework-UIKit-UIResponder-UIView-UIControl
- iOS-Framework-UIKit-UIResponder-UIView-UIScrollView
- iOS-Hierachy
- iOS-Integrity
- iOS-Lang-Objective-C
- iOS-Lang-Swift
- iOS-Library
- iOS-Networking
- iOS-RelatedImage
- iOS-ScreenTranport
- iOS-TDD
- Design Pattern - Command 패턴(작성예정)
- Design Pattern - Composite 패턴(작성예정)
- Design Pattern - Factory method 패턴(작성예정)
- Design Pattern - Mediator 패턴(작성예정)
- Design Pattern - Strategy 패턴(작성예정)
- [Apple Documentation Archive] Auto Layout Guide(작성중)
- [Apple Documentation Archive] Coordinate System : View의 좌표계(작성중)
- Integrity - App Attest (앱 증명)
- Integrity - KeyChain
- Integrity - Secure Enclave
- 소켓이란
- [StoryBoard] - Unknown class ViewControllerC in Interface Builder file
- Git Error - command line tools are already installed (사실 git 에러 아님)
- Git Error - RPC failed; curl 18 transfer closed with...
- GitLab Error - You won't be able to pull or push project code via SSH until ...
- SourceTree Error - 시도때도 없이 꺼지는 현상
- Terminal Error - xcrun: error: active developer path...
- Xcode Error - Presenting view controllers on detached view controllers is discouraged.
- Xcode Error - Build input file cannot be found:
- Xcode Error - The CFBundleShortVersionString of an app extension (‘1.0’) must match that of its containing parent app
- Xcode Error - Command PhaseScriptExecution failed with a nonzero exit code
- Xcode Error - Launching AppName is taking longer than expected
- Xcode Error - Unable to process request - PLA Update available
- Xcode Error - Unknown class @@ in Interface Builder file.
- Xcode Error - Assistant가 작동하지 않을때 체크해야할 것
- Xcode Error - Cannot be opened because it is in a future Xcode project file format.
- Xcode Error - iPhone is busy: Making Apple Watch ready for development
- Xcode Error - maximumViewportInset cannot be larger than frame
- Xcode Error - warning: libobjc.A.dylib is being read from process memory...
- Xcode Error - xcode-select: error: tool 'xcodebuild' requires Xcode
- Flutter Error - Entrypoint doesn't contain...
- 기본적인 자료구조 - 배열
- 기본적인 자료구조 - 연결 리스트 (Linked List)
- 기본적인 자료구조 - 스택 (Stack)
- 기본적인 자료구조 - 큐 (Queue)
- 알고리즘이란
- 자료구조를 왜 공부해야하는지
- 알고리즘 - 선택정렬 : Selection Sort
- 알고리즘 - 버블정렬 : Bubble Sort(작성중)
- 알고리즘 템플릿
- 필수 알고리즘 - BFS: 너비 우선 탐색(Breath-first search)
- 필수 알고리즘 - 백트래킹
- 필수 알고리즘 - 시뮬레이션
- 필수 알고리즘 - 투 포인터
- 필수 알고리즘 - 이진탐색 (Binary Search)
- 필수 알고리즘 - 그리디 (Greedy)
- 필수 알고리즘 - DP (Dynamic programming)
- 필수 알고리즘 - MST (Minimum Spanning Tree)
- 필수 알고리즘 - 플로이드 (Floyd)
- 필수 알고리즘 - 다익스트라 (Dijkstra)
- CI/CD - GitHub Action 사용하기 : 초기 구현하기
- CI/CD - GitHub Action 사용하기2 : on 섹션 수정하기
- CI/CD - GitHub Action 사용하기3 : 실행할 스크립트 짜보기
- 2진법,10진법,16진법
- 트랜지스터의 원리
- Data Structure - 다양한 데이터 구조, iOS에서 사용하는 데이터 구조
- MVP: Minimum Viable Product
- 직렬화(Serialization)
- # 터미널 - 커스텀 함수 및 환경변수 설정하기
- Terminal 기초 사용법
- 여러가지 버전관리정책
- iOS의 Virtual Memory에 대하여
- Virtual Memory - Page File Swap
- Data Structure - Stack과 Queue
- Dynamic Programming (DP): 동적프로그래밍
- iOS와 HTTP/2에 대하여
- iOS에서 메모리구조 : Code / Data / Heap / Stack
- 네트워킹 - 호스트파일이란, 내부망 설정하기
- OSI 7 Layer
- OSI 7 Layer - 1. Physical Layer(물리계층)
- OSI 7 Layer - 1.5 여러 컴퓨터간 통신
- OSI 7 Layer - 2. Data Link Layer(데이터 링크 계층)
- OSI 7 Layer - 3. Network Layer(네트워크 계층)
- 프로그래밍 패러다임 - Functional Programming(함수형 프로그래밍)
- Functional Programming - 모나드 이해하기
- 동기와 비동기
- 마크다운 - HTML사용하기
- 마크다운에서 Toggle(Expander control) 기능 사용하기
- 마크다운 - 이미지 사이즈 세팅하기
- 마크다운 - TOC기능 만들기 (Table Of Contents)
- 마크다운 - 표 만들기 (Table)
- Flutter - 플랫폼 빌드하기 / 라이브러리
- Flutter - 기본 4가지 위젯
- Flutter - Drawer : GNB / 사이드바
- Flutter - ListView
- Flutter - Toggle Switch
- Flutter - 삼각형 View 그리기
- Flutter - Installation
- Git Actions - Permission to ....git denied to github-actions
- Git - 튜토리얼(1) : 브랜치 생성하기. 리스트 확인, 브랜치 체크아웃
- Git - 튜토리얼(2) : pull, fetch
- Git - 튜토리얼(3) : status, add, restore, reset
- Git - 튜토리얼(4) : commit, push
- Git - 푸시한 커밋의 Author 변경하기(username과 user email 수정하기)
- GitHub - Various APIs
- GitLab SSH키 생성하기
- Git - 브랜치 삭제하기
- 브랜치 이름 변경하기
- 푸시 에러 : 원격 저장소와 커밋 기록이 다른 경우
- Git - 현재 깃폴더에 연동한 username 확인하고 변경하기
- 공동작업을 위한 Git 버전관리
- git ignore를 사용하여 불필요한 업로드 줄이기
- Git - Fork한 레포지토리 최신화 하기
- Git - 갑자기 터미널이 한글로 나온다면
- Git - 깃 리모트 변경 하기
- Commit Template - 소스트리
- XcodeError - UserInterfaceState.xcuserState가 자꾸 뜰 때
- sample App - 투두리스트
- sample App - 그림판앱
- Sample App : 설정앱 - SwiftUI
- Sample App : 설정앱 - UIKit(Code)
- Sample App : 네트워킹과정 앱 - SwiftUI [Data parse, URLSession, completion, Singleton, Error, Result, Generic]
- Block6 앱 만들기
- 어떻게 리뷰할 것인가
- 22년 5월 회고 / 6월 목표
- 22년 7월 회고 / 8월 목표
- 23년 4월 회고 / 5월 목표
- 23년 5월 회고 / 6월 목표
- 23년 6월 회고 / 7월 목표
- 23년 7월 회고 / 8월 목표
- 23년 8월 회고 / 9월 목표
- 23년 9월 회고 / 10월 목표
- 23년 10월 회고 / 11월 목표
- 23년 11월 회고 / 12월 목표
- 23년 12월 회고 / 1월 목표
- 24년 4월 회고 / 5월 목표
- 24년 5월 회고 / 6월 목표
- App Store Connect - 배포된 앱을 삭제하는 2가지 방법
- AppStore - 앱 생성하기
- AppStore - 수출 규정 준수 정보
- AppStore - 버전정보 수정하기
- AppStore - 긴급 심사 요청(Request Expedited Review)
- 앱심사 - 수출 규정 관련 문서가 누락됨(Missing Compliance) / 우회처리
- 리젝사유 - 2. Performance(성능)
- 리젝사유 - 4. Design(디자인)
- 리젝사유 - 5. Legal(법률)
- 테스트플라잇 - 외부 테스팅 (External Testing)
- 디자인패턴이란
- Cocoa Design Pattern - Delegate 델리게이트 패턴
- Cocoa Design Pattern - Observer 옵저버 패턴
- Cocoa Design Pattern - Singleton (싱글톤 패턴)
- 아키텍쳐패턴이란, 디자인패턴과 아키텍쳐의 차이
- MVC -> MVP -> MVVM : Caculator
- MVC -> MVP -> MVVM : ColorSelectApp
- MVC to MVVM : 01. UTC 오늘, 현재, 내일 시간보기
- MVC to MVVM : 02. TableVC 클릭시 텍스트 변경
- VC -> MVC : Custom UICollectionView
- Architecture - IOS MVC의 한계
- Architecture - MVC: 전통적인 MVC구조로 HTTP사용하기
- Architecture - 간단한 MVVM구조 예제
- ReactorKit - 예제: CountApp
- Clean Architecture(클린 아키텍쳐)
- 데이터 바인딩이란
- Architecture - 비즈니스 로직이란
- 프로그래밍에서 동기 비동기 개념에 대한 이해
- 비동기처리가 필요한 이유
- 비동기(Async), 동시(Concurrent)의 개념
- GCD - DispatchGroup
- GCD - DispatchWorkItem
- 동시성 프로그래밍 : Concurrency 톺아보기
- GCD - OperationQueue를 이용한 비동기 작업
- GCD - performSelector를 이용한 비동기 작업
- Date - Date로 두 개의 시간차 구하기
- 볼륨버튼 캐치하기
- External Link (외부링크) - 커스텀 앱스키마 만들기, 사용하기
- KVC와 KVO
- 로컬라이징
- AudioToolbox - 롱프레스와 햅틱진동 구현하기 (Feat.Long press)
- IOS에 있어서 Caching
- Xcode - 빌드된 app파일은 어디에 있을까
- appStoreReceiptURL
- .ipa 파일 만들기
- How to Set - 세로모드 고정 (Potrait)
- Info.plist : (값 가져오기, 권한)
- Info.plist - App Version 가져오기
- Xcode 주석사용법
- XCode - 전처리문 사용하기
- Privacy - 여러가지 접근권한요청
- Scheme - Debug / Release 빌드 분리하기
- Xcode에서 디버그뷰 활성화하기 :Firebase, GA4
- iOS DeviceSupport - 테스트 디바이스 iOS 수동 업데이트
- AVFoundation - AVPlayer 사용하기
- AVFoundation - TTS : Text-To-Speech
- AVFoundation - Barcode Scanner 구현하기
- userDefault
- Calendar - 캘린더로 두 개의 날짜 비교하기
- FileManager - 파일 다운로드하기
- FileManager - 사용하기
- Foundation - JSONSerialization(1): 직렬화 Intro
- Foundation - JSONSerialization(3): Decode JSONData
- Foundation - JSONSerialization(2): Encode JSONData
- String Protocol - String to Data
- 타임스탬프 구현하기
- CMTime
- UIAlertView Deprecated in iOS 9, Replaced by UIAlertController in iOS 10.0
- MPMoviePlayerController Deprecated in iOS 10, Replaced by AVPlayerViewController in iOS 7
- NSURLConnection Deprecated in iOS 9, Replaced by URLSession in iOS 7
- 'setVolume:' is deprecated: first deprecated in iOS 7.0 - Use MPVolumeView for volume control.
- Layout - SwiftUI: Text
- Layout - SwiftUI: Image
- Layout - SwiftUI: Button
- Layout - SwiftUI: Spacer
- Layout - SwiftUI: Padding
- Layout - SwiftUI: HStack, VStack, ZStack
- Layout - SwiftUI: NavigationView
- Layout - SwiftUI: TabView
- SwiftUI - Control에 대하여
- SwiftUI - View 프로토콜
- Layout - SwiftUI: Color
- Layout - SwiftUI: List
- Layout - SwiftUI: ScrollView
- Layout - SwiftUI: State와 바인딩
- UIKit으로 구현된 화면에 SwiftUI View를 추가하기 : UIHostingController
- UIKit에서 SwiftUI의 Preview 사용하기
- UIKit에서 SwiftUI의 Preview관련 함수 만들어 사용하기
- SwiftUI에서 UIKit 사용하기 : UIViewRepresentable, UILabel, WebView
- UIKit - UIStoryboard
- [Apple Document] - About App Development with UIKit
- UIKit기반 앱의 간단한 화면 인터페이스 구조
- 읽어야할 개발자 문서
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(0) : Intro
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(1) : Creating a list View
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(2) : Adopting collection views
- [iOS App Dev Tutorials] UIKit - Today앱 만들기(3) : Displaying cell info
- Container ViewController Type - Navigation Controller
- Layout - 오토레이아웃의 개념
- Layout - UIView에 대하여
- Layout - CGRectMake는 뭘까
- Layout - CodeUI: CustomShadow(feat.CustomClass)
- Layout - CodeUI: UIView, UILabel
- Layout - 이미지 컨텐츠 모드 (ContentMode)
- Layout - StoryboardUI: CornerRadius
- UIAlert 어디서든 띄우기
- Layout - Hierarchy of UIView (feat. addSubView)
- 현재기기의 화면크기 측정하기 + 콤바인을 이용한 반응형레이아웃 만들기
- MessageUI란
- MessageUI - MFMailComposeVC : 문의메일 보내기
- MessageUI - MFMessageComposeVC : 문자메세지 보내기
- NSDate - Timezone: UTC, GMT, KST
- NSObject - Timer : 타이머 구현하기
- NSObject_UIBarItem_UIBarButtonItem & UITabBarItem : 네비게이션바 / 툴바 / 탭바를 표시하는 아이템
- CGColor에 대하여
- NSObject - UIFont
- NSObjcect_GestureRecognizer_UILongPressGestureRecognizer
- NSObject_UIResponder : UIResponder와 Responder Chain
- NSObject_UIResponder_UIViewController_UIActivityViewController : 공유하기 기능
- NSObject_UIResponder_UIViewController : 소개
- NSObject_UIResponder_UIViewController : 생성자
- NSObject_UIResponder_UIViewController : UIViewController's Life-cycle (뷰컨트롤러의 생명주기)
- NSObject_UIResponder_UIView : UIView 클래스
- UIView의 Drawing Cycle (Layout Cycle)
- NSObject_UIResponder_UIView_UIImageView - 경로를 통해 이미지 다운로드하여 세팅하기
- NSObject_UIResponder_UIView : UIPickerView
- NSObject_UIResponder_UIView_UIProgressView
- NSObject_UIResponder_UIView_UIScrollView
- NSObject_UIResponder_UIView : UITabBar
- UIView - Layer란 무엇인가(작성중)
- NSObject_UIResponder_UIView_UIActivityIndicatorView : 사용법
- UIKit에서 RootViewController 찾기
- CGPoint, CGSize, CGRect
- UIDevice
- UIKit - UISearchBar
- UICollectionView - 프로퍼티 옵저버 didSet과 isSelected
- [Apple Document] - UIApplicationMain(::::)
- [Apple Document] - UIApplication 싱글턴 객체
- [Apple Document] - AppDelegate, UIApplicationDelegate 프로토콜
- [Apple Document] - Managing your app’s life cycle : 앱의 생명주기 관리
- [Apple Document] - Responding to the launch of your app : 앱 실행에 대한 응답
- [Apple Document] - About the app launch sequence : 앱의 실행되는 순서에 관하여
- 앱의 구동에 관하여
- UIApplication_AppDelegate - 헷갈릴수 있는 두 함수(didReceive형제)
- UIApplication_AppDelegate - userNotificationCenter
- UIApplication_AppDelegate - UIApplicationDelegate : 앱의 상태 / 생명주기(Life-Cycle)
- [Apple Document] - UIControl.Event 살펴보기
- UIKit - UIAlertController : 장문의 얼럿 만들기
- NSObject_UIResponder_UIView_UIControl : UIButton
- NSObject_UIResponder_UIView_UIControl : UIDatePicker
- NSObject_UIResponder_UIView_UIControl : UIRefreshControl
- NSObject_UIResponder_UIView_UIControl : UISegmentedControl
- NSObject_UIResponder_UIView_UIControl : UISlider
- NSObject_UIResponder_UIView_UIControl : UISwitch
- NSObject_UIResponder_UIView_UIControl : UITextField
- NSObject_UIResponder_UIView_UIScrollView_UICollectionView : 사용법
- UICollectionView with DiffableDataSource
- UICellAccessory : UICollectionView에 사용하는 악세서리 Struct
- NSObject_UIResponder_UIViewController_UITableViewController : 테이블뷰 전용 ViewController
- UITableView - 템플릿
- UITableView - 기본 UITableView 생성
- UITableView - 커스텀 UITableViewCell
- UITableView - Section 구현하기
- UITableView - 셀 선택, 삭제 및 상호작용
- UITableView - 동적 셀 높이
- UITableView : 편집스타일 설정하기 - editingStyle
- [Apple Document] - NSObject_UIResponder_UIView_UITableViewCell
- NSObject_UIResponder_UIView_UITableViewCell : accessoryType
- NSObject_UIResponder_UIView_UIScrollView_UITableView : 셀 경계선없는 테이블뷰
- NSObject_UIResponder_UIView_UIScrollView_UITableView : 셀 클릭시 높이가 변경되는 테이블뷰
- Integrity - 앱 설치환경 체크
- Integrity - 인증서(.p8, .p12 / Development, Distribution / Producation SSL, Development SSL)
- Integrity - 인증서와 프로비저닝 프로파일 (Certificate & Provisioning Profile) 관리하기
- Integrity - DeviceCheck
- Integrity_개인정보 보호 매니페스트 PrivacyInfo.xcprivacy 만들기
- Integrity - UUID / UDID / IDFA / IDFV
- Integrity - APN 인증키(.p8) 발급받기
- Integrity - 중간자 공격(man-in-the-middle attack)
- Integrity - 리플레이 공격(Replay attack)
- Objc - Objc 프로젝트에서 Swift 라이브러리 사용하기
- ObjC - Control Flow : Switch문
- Objc - 라이브러리 : 직접 파일삽입된 라이브러리 제거작업
- ObjC - NSDictionary to NSString
- ObjC - 로그찍기
- Objc - c언어와 objective-c의 차이, 발전
- Swift에 대한 소개
- Swift문법 기초
- Swift - Class와 Struct
- Swift - Initialization에 대해 알아보기
- Playground에서 UIView를 그려보자
- Swift - Array 모아보기
- Swift_Sequence Protocol
- Attribute - @frozen
- Swift - Codable 다루기
- Do - Try - Catch
- Swift - Collection_Array : prefix()
안전한 사용
- random함수를 이용해 Random한 숫자 뽑아내기
- Swift - Subscript(작성중)
- 안전하게 배열에 접근하는 방법
- [Common Method] 로그 관련 함수
- # 여러개의 Action을 한번에 추가하기
- mutating 과 구조체
- 텍스트인코딩에 관하여
- 배열안에 담긴 url 유효성 검사
- 이미지의 형태
- Xcode 디버깅으로 변수변화 캐치하기
- Understanding Closures in Swift : 클로저 톺아보기
- enum 사용법
- 저장프로퍼티 - 프로퍼티(1)
- 연산프로퍼티 - 프로퍼티(2)
- 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5)
- 타입프로퍼티(static) - 프로퍼티(3)
- 타입메서드, 클래스메서드, 인스턴스 메서드
- 파일경로 String으로에서 확장자 추출하기
- 고차함수 - Higher Order Function : Map, Filter, Reduce, Sort, FlatMap
- Special Literal
- Splite과 Component
- Swift - 스위프트에서 사용하는 패턴들
- case let : for case let 익숙해지기
- Switch case let, If case let, guard case let
- Swift - Collection_Int : signum()
- Closure 톺아보기
- 1급 객체
- Swift - 키워드 defer
- Swift - 키워드 inout
- Swift - Mirror 사용하기
- Swift - Range 함수 사용하기
- Swift - 참조(Strong, weak, unowned)
- Array - 특정값이 동일하거나 포함한 경우 찾기 : firstIndex()
- iOS - 패키지 의존성 관리 도구: CocoaPods, Carthage, SPM
- About Swift PackageManager
- CocoaPods 사용하기
- About CocoaPods Error 방지하기
- Convention - SwiftLint 세팅하기
- Convention - SwiftLint 세부설정하기
- 라이브러리 - 카카오 SDK 사용하기
- 라이브러리 - GIFu 사용하기
- Library - Hero
- 라이브러리 - Kingfisher 사용하기
- 라이브러리 - swiftSoup
- Push - 핑거푸시
- ReactiveX: RxSwift Introduce
- SNS Login - Kakao
- SNS Login - Naver
- 네트워크 통신의 이해
- NSObject - URLSession
- Notifications - IOS에서 사용하는 알림의 종류
- 개념 - 페이로드(Payload)
- Cookie - ios에서 쿠키 다루기
- Cookie - WKProcessPool를 사용해 여러 웹뷰에서 쿠키 공유하기
- WebView - WKWebsiteDataStore 사용하여 웹뷰의 데이터관리하기
- Cookie란
- Cookie - cookieAcceptPolicy (쿠키수락정책)
- Cookie - 현재 웹뷰로 쿠키 가져오기
- Network Programming - RESTful APIs 사용하기
- 네트워킹 - 각종 URL의 유효성 검사
- WebView - PC에서 사용중인 내부망을 Iphone으로 연결시키는 방법
- WKWebView 사용하기, 구성 요소 살펴보기
- WebView - 웹뷰에 스크립트를 적용시키는 방법
- WebView - 웹에서 앱으로 보내는 JavaScript 수신하기 : WKScriptMessageHandler
- WebView - Delegate method
- WebView - 앱에서 웹소스의 JavaScript 메서드 호출하기 : evaluateJavaScript()
- WebView - App에서 웹페이지를 여는 3가지 방법
- WebView - 네비게이션컨트롤러 목록으로 웹뷰 관리하는 방법
- WebView - Safari로 웹뷰 디버깅하는 방법
- WebView - createWebViewWith : blank로 새창열기
- WebView - 자주 사용하는 메서드
- WebView - 스와이프로 리프레시 세팅
- webview - 바운스 효과 제거하기