전체 글
-
[운영체제] MAC에서 PPID 확인하기CS/운영체제 2023. 5. 2. 20:55
새로운 프로세스를 생성할 때, fork()를 이용해서 효율적으로 프로세스를 생성한다는 내용을 공부했다. 정말 모든 프로세스들이 이런 방식으로 생성되는지, 그렇다면 각 프로세스의 부모 프로세스는 무엇일지 알아보고자 한다. PID확인하기 MAC에서는 활성 상태 보기 프로그램에서, 현재 동작하고 있는 프로세스들의 정보를 확인 가능하다. PID 또한 이곳에서 확인이 가능했다. PPID 확인하기 PPID는 터미널에서 다음과 같은 명령어로 확인이 가능하다. ps -o ppid= -p 현재 활발히 동작하고 있는 Goodnotes(16971)의 ppid를 확인해보았다. Goodnotes의 ppid는 1인것을 확인할 수 있다. 여기서 PID가 1인 프로그램은 launchd라는 프로그램이다. 이번엔, Chrome(643)..
-
크기가 큰 배열에서의 탐색 & 캐시 히트CS/알고리즘 2023. 1. 12. 20:44
https://www.acmicpc.net/problem/7453 7453번: 합이 0인 네 정수 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. www.acmicpc.net 위 문제를 풀 때 큰 배열에서 탐색을 하는 과정에서 특이한 현상을 겪어 쓰는 글. 위 문제는 크기가 4000인 배열 A, B, C, D의 원소의 합이 0인 경우의 수를 구하는 문제이다. 이를 단순하게 접근하면 모든 배열에서 한 개의 원소를 뽑는 경우이므로, 4000 ^ 4 = 256조. 시간복잡도를 줄이기 위해서, A와 B의 합을 AB, C와 D의 합을 CD로 놓으면, 경우의 수..
-
iOS 프로젝트에 Github Action으로 CI 구성하기카테고리 없음 2022. 12. 5. 03:00
현재 부스트캠프에서 진행하고 있는 프로젝트 burstcamp를 개발하며 작성하는 글입니다. 간단히 저희 프로젝트를 개발하는 방식을 소개해드리겠습니다. 일단, git flow 전략을 적용하여 개발하고 있습니다. 각자의 local에서 새로운 브랜치를 생성해 개발한 뒤, 완료되면 remote의 develop 브랜치에 pr을 보내는 방식입니다. 또한, build를 할 때 swiftlint를 이용해서 스타일을 검사한 뒤, 몇몇 항목에 대해서는 autocorrection을 적용해주고 있습니다. pr이 생성되면 나머지 팀원 3명 중 2명 이상의 approve를 받아야 merge가 가능합니다. 이렇게 pr의 리뷰가 끝나면 merge를 하고, 각자 develop 브랜치를 pull 받아 개발하게 되는데, 여기에서 가끔 문..
-
[부스트캠프] 부스트 컨퍼런스 2022 참여 & 발표 후기기타/느낀점 | 회고 2022. 10. 23. 18:08
부스트 컨퍼런스 2022 2022.10.20(목) 14:30 ~ 18:30 네이버 1784 3층 이번 컨퍼런스는 나에게 매우 특별한 이벤트였다. 오프라인 컨퍼런스는 Let us Go에 한 번 참여해 보긴 했지만, 이번 컨퍼런스에서는 무려 연사로서 참여했기 때문이다. 따라서 후기는 연사로서 느낀점에 조금 더 중점을 둘 것이다. 어쩌다가 발표까지? 온라인을 기반으로 하는 부스트캠프였기 때문에, 같이 공부하는 캠퍼들을 오프라인에서 만날 기회는 없었다. 그러던 중 몇몇 iOS캠퍼들을 모아 풋살을 하게 되었고, 이렇게 오프라인에서 이렇게 만날 수 있는 자리가 있었으면 하는 바람이 있었다. 그렇기에 이번 부스트 컨퍼런스가 열린다는 소식을 보자마자 신청을 했다. 동시에 테크톡의 발표를 할 연사도 모집하고 있었는데, ..
-
[UIKit] UITableViewCell 재사용에 대한 실험iOS/UIKit 2022. 8. 23. 23:15
tableview cell의 lifetime 생성 -> 큐에 들어감 -> readyforreuse -> 보임 모든 index에 대해서 셀을 생성하지 않고, 만들어진 셀을 공유함으로써 메모리를 절약할 수 있습니다. 이때 아무리 디버거로 메모리를 들여다봐도 reuseQueue에 어떤 인스턴스가 들어가 있는지 확인할 수 없어서 직접 실험을 통해서 알아봤습니다. 즉 tableviewcell이 어떤 방식으로 재활용되는지 알아보는 간접적인 실험입니다. 제일 처음에는 위와 같이 화면에 보이는 셀들만 생성이 됩니다. 0번째 셀이 완벽하게 들어가지 않은 상황입니다. reuseQueue에 아무것도 없기 때문에, 새로운 cell이 생성됩니다. 이제 0번째 셀이 완벽하게 가려졌습니다. 그렇다면 0번째 셀은 reuseQueue..
-
[Swift] Generic에서 Method DispatchiOS/Swift 2022. 8. 22. 20:17
iOS 개발자라면 꼭 시청해야 한다고 생각하는 WWDC 세션인 Understanding Swift Performance의 내용 중 Generic code 파트에 대해서 공부하며 적은 글입니다. 출처는 알아보기 쉽도록 각 단락마다 적어놓았습니다. Generic Generic code는 더욱 정적인 형태의 polymorphism을 구현할 수 있도록 도와줍니다. 이것을 parametric polymorphism이라고도 부릅니다. "One type per call context" (protocol을 이용했을 때에는 struct를 사용하더라도 메서드가 동적으로 결정되는 부분이 있었는데, generic은 그게 아니라는 뜻인 것 같습니다.) 이제부터 위에 한 말이 무슨 뜻인지 알아보겠습니다 Generic으로 만들어진..
-
[Swift] Protocol에서 Method dispatchiOS/Swift 2022. 8. 21. 19:31
iOS 개발자라면 꼭 시청해야 한다고 생각하는 WWDC 세션인 Understanding Swift Performance의 내용 중 Protocol types 파트에 대해서 공부하며 적은 글입니다. 출처는 알아보기 쉽도록 각 단락마다 적어놓았습니다. Polymorphism with struct polymorphic code를 struct로 작성하는 방법은 무엇일까요? 영상에서는 POP(Protocol oriented programming)이라고 답합니다. 그렇다면 protocol을 사용할 때 method dispatch가 어떻게 동작하는지도 알아야 할 것입니다. 이번에는 이전의 예시에서 부모 클래스를 protocol로 바꿨습니다. 각 struct는 protocol을 채택하여 구현했고, 때문에 상속관계가 없..