강의를 듣게 된 이유 개발자로 취업한 이후, 다양한 기술과 오류를 접하며 많은 경험을 쌓았다. 이런 경험들을 체계적으로 기록하고 정리하는 것의 중요성을 알았지만, 실제로는 머릿속에만 남겨두는 경우가 많았다. 이로 인해, 누군가 나에게 질문을 할 때나 경험을 공유하는 데 어려움을 느꼈다. 이러한 고민을 해결하기 위해 기술 블로그를 시작했지만, 글쓰기에 익숙하지 않았고, 쉽게 설명하는 것에 대한 부담감에 글을 완성시키지 못하는 일이 잦아졌다. 우연히 기술블로그로 알아보는 테크니컬 라이팅 강의를 알게 되었다. 강의 소개를 보며 내 블로그 보고 쓰신건가 싶을 정도로 공감이 갔다. 그만큼 많은 사람들이 나와 같은 고민을 하고 있음에 안도하며^^ 해당 강의를 수강하게 되었다. 테크니컬 라이팅? 테크니컬 라이팅은 단..
신청 이유 애플아카데미를 마치고, iOS 개발자로 취업이 되었다. 기존 앱에 기능을 추가하는데 끙끙대는 모습을 발견했다.. 네트워크 모델을 작성했는데, 한 곳을 수정하면 모든 곳을 수정하고 있는 내 모습을 발견했다. 나는 어떤 구조를 작성하는데 어려움을 겪고 있다라는 것을 인지하게 되었다. 어떻게 고쳐야할까? 무엇이 부족할까?를 고민하던 중 야곰 아카데미를 알게 되어서 지원하게 됐다. 커리어 캠프와 스타터 캠프가 있었는데, 우선 내가 부족한 부분이 객체지향적으로 코드를 설계하는 부분이라고 생각하기도 했고, 커리어 캠프의 경우 직장과 병행이 불가능했기 때문에 선택권이 없었다. 학습 과정 우선 매주 라이브 세션이 존재한다. 이때는 개념을 설명해주시고, 이해가 안 되는 부분에 대해 질문할 수 있는 시간들이 주..
OAuth? 💡 OAuth는 Third party app에게 유저의 비밀번호를 제공하지 않고, 인증하기 위해 나타난 개념이다. 즉, Third party app는 유저의 비밀번호를 알지 못해도, 사용자가 허가한 자원에 대해 접근할 수 있도록 도와준다. OAuth에는 4개의 참여자가 존재한다. Third party App에 해당하는 Client, 실제 앱 사용자에 해당하는 Resource Owner, 요청 데이터에 대해 응답을 주는 Resource server, 인증을 수행하는 Authorization Server가 존재한다. 우선 참여자에 대해 알아보자. 참여자 Resource Owner 보호된 리소스에 대해서 액세스를 부여할 수 있는 주체이다. (end user라고 부른다) 앱으로 설명하자면, 작고 소..
문제 상황 - 코드로 뷰를 변경하기 위해서는 Storyboard의 ID를 설정해야한다. 나는 ChattingViewController로 이동시키기 위해서 해당 스토리보드에서 ID를 설정해줬다. - 일반적으로 이렇게 설정하면, 해당 문제는 해결되어야한다. 그런데 나는 이 문제가 해결되지 않았다. 프로젝트 상황 생각해보니 나는 Main Storyboard에서 View Controller들을 관리하지 않았다. 뷰컨트롤러마다 storyboard 파일을 만들어서 관리하고 있었다. 그러니 당연히 self.storyboard (Main.storyboard)에서 ChattingViewController를 가진 storyboard는 찾을 수 없는 것이다. 그럼 어떻게 해결하는가? Main.storyboard에서 해당 스..
MVVM ViewModel이란? 이제 기존 MVC 프로젝트를 MVVM으로 리팩토링하기 전에, ViewModel에 대해서 간단하게 알아보자. ViewModel은 View에서 일어난 변경을 감지해서 Model에게 그 변경을 전달한다. 예를 들어, 사용자가 음악을 검색하면, 입력할 때마다 또는 검색 버튼을 누를 때 ViewModel이 그 변경을 감지하는 것이다. 이후에 Model에 그 변경을 전달하기 위해 NetworkManager라는 계층에게 데이터 변경을 요청하는 역할을 담당한다. 기존 MVC의 ViewController와 MVVM의 ViewController의 차이를 살펴보자. ViewModel - 유저의 입력을 감지하여 처리한다. - Network 요청한다. View - View를 보여준다. MVVM을..
MVC 이제까지 해 왔던 방법으로 View Controller를 구성해보자. (우선 UI는 단순한 TableView에 음악 제목을 띄우기만 할 것이다.) ViewController class ViewController: UIViewController { private var musicData: [Music]? private let networkManager = NetworkManager.shared private let tableView: UITableView = { let table = UITableView() table.register(UITableViewCell.self, forCellReuseIdentifier: "cell") return table }() override func viewDidL..
MVC -> MVVM으로 구조 변경해보기 많은 글들을 보고, 코드를 봤지만 나는 아직도 왜 MVVM이 필요한지 모르겠다.. 그래서 MVC를 MVVM으로 리팩토링해보며 왜 필요한 지 공부해보고자 한다. 우선 내가 만들고자 하는 앱은 iTunes API를 이용해 음악 정보를 받아오는 아주 단순한 앱이다. MVVM, MVC에서 공통적으로 사용하는 코드는 다음과 같다. 모델 import Foundation struct MusicData: Decodable { let resultCount: Int let results: [Music] } struct Music: Decodable { let albumImage: String let musicTitle: String let artist: String let albu..
1389 케빈 베이컨의 6단계 법칙 문제로 이동 문제 요약 사람들의 관계에서 케빈 베이컨의 수를 찾고, 케빈 베이컨 수가 가장 작은 사람을 찾아야한다. 알고리즘 친구 관계를 양방향 그래프로 입력받는다. 노드 간 depth를 계산하여 케빈 베이컨의 수를 계산한다. 케빈 베이컨의 수가 가장 작은 사람을 찾아 출력한다. 접근 방법 친구 관계를 양방향 그래프로 입력받아야 하는 이유 A와 B가 친구라면, B와 A도 친구이기 때문이다. 그래프를 쉽게 입력받기 위해서 모든 노드에 대해 빈 배열을 선언해주면 contains연산 없이 삽입할 수 있다! 케빈 베이컨의 수 계산하는 방법 케빈 베이컨의 수를 다시 생각해보면, 노드 간 depth를 계산하면 되는 것이다. 즉, 1-3-2라는 관계가 있을 때, 1과 2사이의 de..
14501 퇴사 문제로 이동 문제 요약 오늘부터 N+1일 째 되는 날, 퇴사를 하려고 한다. 남은 N일 간 상담을 받아, 최대한 많은 금액을 받으려고 한다. 이때, 받을 수 있는 최대 금액을 구해라. (배열 Tn에는 상담에 걸리는 시간이 저장 돼 있고, Pn에는 상담 시 받을 수 있는 금액이 저장 돼 있다.) 접근 방법 i 번째 날짜에 상담을 받는다고 할 때, 다음과 같은 연산을 할 수 있다. i + T(i) 이후 모든 result에 접근한다. result[next], result[i] + price[next] 중 더 큰 값을 계속 구해나간다. 코드 let n = Int(readLine()!)! var times = [Int]() var prices = [Int]() for i in 0 ..< n { l..
11053 가장 긴 증가하는 부분 수열 문제로 이동 문제 요약 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성해라. 알고리즘 수열을 입력받는다. 나보다 작은 수 중 부분 수열이 가장 긴 값을 찾아 저장한다. result의 최댓값을 출력한다. 접근 방법 우선 가장 긴 증가하는 부분수열이라는 말 부터 이해를 해 보자. 부분 수열 = "주어진 수열의 일부 항을 원래 순서대로 나열하여 얻을 수 있는 수열" 증가하는 수열 = "오름차순으로 증가하는 수열" 가장 긴 증가하는 부분 수열 = 오름차순으로 정렬되는 부분수열 중 length가 가장 긴 수열 -> [10, 20, 10, 30, 20, 50]에서 가장 긴 증가하는 부분 수열 = [10, 20, 30, 50]이 되는 것이다. 문제..
- Total
- Today
- Yesterday
- 정답
- 깃허브
- Code up
- replit
- 부르트포스
- 코드업
- python
- 16진수 입력
- 깃
- do while
- 리플릿
- for문
- 파이썬
- CodeUp
- 레플릿
- level1
- 백준
- 코드 업
- 프로그래머스
- baekjoon
- 기초 100제
- SwiftUI
- ord
- 이것이 코딩테스트다
- 반복문
- 시간초과
- CHR
- COMMIT
- Swift
- 설명
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |