git filter-branch -f --prune-empty --index-filter "git rm -r --cached --ignore-unmatch path/fileName" HEAD 이걸로 해결하였다.. 참고로 path는 다음과 같이 지정해주었다. ./filefolder/fileName *나는 ./ 이걸 안써줘서 시간을 좀 날렸다.. 이런 방식으로.. 모든 커밋에서 해당 파일과 관련된 모든 정보를 지우는 명령어이다. 이렇게 수정 후 원격 저장소에 force 옵션으로 push해주면 된다. 상세한 정보는 GPT한테 물어봤다. -f 또는 --force: 필요한 경우 덮어쓰기를 강제합니다. 이 옵션을 사용하면 기존에 filter-branch에서 만들어진 백업이나 임시 파일을 덮어쓰기할 수 있습니다. -..
전체 글
App Developer원격 저장소에 저장할 때, git push -f origin (저장소명) 위와 같이 설정하면 강제로 저장소에 push해준다. 필자는 잘못 원격저장소에 push해버린 commit 기록을 없애기 위해 사용하였다.
그간 미루어두었던 정보처리기사 시험을 접수하였다. 네이버 부스트 캠프를 하며 탄탄한 CS지식의 필요성을 더욱 느꼈기 때문이다. 2/15 정보처리기사 필기에 합격하여 혹 도움이 될까싶어 후기를 공유하고자 한다. 1. 배경 지식 - 비전공과 전공 사이. 깊게 배우진 않았고 프로그래밍 개론 등 가벼운 과목을 수강하였었다. - 부트캠프 2회(윈도우 닷넷 전문가 과정, 네이버 부스트 캠프 웹・모바일) - 윈도우앱 개발 경력 약 9개월 2. 활용한 자료 및 반복 학습 수 교재는 따로 구매하지 않고, 인터넷에 검색하여 나온 자료들을 활용하였다. 정보처리기사 시나공 2023 요약집 4회독 3회분 기출문제 풀이 (푼 횟수) -20220424 (2번) -20210814 (2번) -20220305 (1번) 3. 구체적인 학..
1. 개요 들여쓰기 칸 수, 공백 등.. 코드를 작성하는 스타일은 사람마다 다를 수 있다. 그런데 협업을 하는 경우에도 한 프로젝트 내에 사람들의 각기 다른 습관들이 나타난다면 코드를 읽기가 참 힘들어질 것이다. 그래서 이런 약속들을 swiftLint, swiftFormat을 사용하여 정해둔다. 물론, 협업을 하지 않는 경우에도 코드 내에 사용되지 않는 등 불필요한 코드들을 관리할 수 있다. 2. SwiftLint swiftLint는 정한 규칙을 어길 시, warning이나 error를 표시해주는 역할을 한다. 제공되는 규칙과 사용방법은 다음 링크에서 확인할 수 있다. Rule Directory Reference realm.github.io 참고로 필자는 프로젝트에서 다음과 같은 규칙을 정하였다. # 한..
1. 리뷰 final class APINetwork { func request(requestable: Requestable, type: T.Type) -> AnyPublisher { let request: URLRequest = requestable.asURLRequest() return URLSession.shared .dataTaskPublisher(for: request) .//생략.. .eraseToAnyPublisher() } } 위 코드에서 리뷰어님께 다음과 같은 리뷰를 받았다. 2. Session 프로토컬 생성 protocol Session { func dataTaskPublisher(for request: URLRequest) -> URLSession.DataTaskPublisher } e..
1. 정규표현식 func isOutOfRangePassword(passwordText: String) -> Bool { let rangeRegex = /^password:.{8,16}$/ if passwordText.prefixMatch(of: rangeRegex) == nil { return true } return false } 정규표현식을 사용하여 받은 문자열의 패턴을 파악하는 것은 흔히 사용되는 방법이다. 그런데 패턴 뿐만 아닌, 원하는 패턴의 문자열을 정규표현식을 사용하여 추출하는 것도 가능하다. 바로 예제를 보자. 2. name capture func isOutOfRangePassword(passwordText: String) -> Bool { let rangeRegex = /^password..
1. closure에서 self를 쓰면 무조건 순환참조? closure로 값을 넘겨주고, 그 안에서 self를 호출할 일이 있을 때 순환 참조를 우려하여 weak self를 종종 사용하였다. 그런데, 모든 closure라고 항상 self를 쓴다고 순환 참조가 발생하지 않는다. 2. non-escaping closure의 경우 위 그림과 같이 함수가 return 되며 closure도 함께 메모리에서 사라지기 때문에 순환참조를 우려할 필요가 없다. class A와, 그 안에서 함수와 함수에서 사용되는 closure 가 있다고 가정하자. 여기서 closure 안에 self를 사용하여도, self 안이 아닌 func 안에 closure이 존재하기에, func가 사라지면 closure도 사라지기에 순환참조가 발생..
1. 개요 fatalError를 사용하면, 개발 뿐 아니라 배포버전에서도 Error가 난다. 그런데 개발 시에는 Error를 내고 싶지만, 배포할 땐 내지 않도록 하고 싶은 경우가 있을 것이다. 2. assertionFailure 이런 경우에 사용하기 좋다. 단, fatalError처럼 return을 무시해주진 못하니 구현을 해두어야 한다는 번거로움이 있다. https://developer.apple.com/documentation/swift/assertionfailure(_:file:line:) assertionFailure(_:file:line:) | Apple Developer Documentation Indicates that an internal sanity check failed. develo..