전체 글

App Developer
· 💻 CS/Git
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에서 만들어진 백업이나 임시 파일을 덮어쓰기할 수 있습니다. -..
· 💻 CS/Git
원격 저장소에 저장할 때, 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..
PushedGun
내 머리에 push 중..