전체 글

Tuist Project 'Could not build Objective-C module' 오류 해결법
Tuist 로 프로젝트를 진행하다가 Could not build Objective-C module 'RXSwift' 라는 오류메시지를 마주해 해결한 방법을 공유합니다. 1. XCode Settings -> Locations -> Derived Data 로 이동2. XCode 를 종료합니다.3. Derived Data 폴더에 많은 폴더들이 있을텐데, 문제가 되는 프로젝트명이 붙은 폴더를 전부 삭제합니다.(Ex: TestProject-dqiwebnaks)4. tuist clean, tuist generate 를 순서대로 해줍니다.5. xcworkspace를 열어 재빌드합니다. 위와같이해서 문제를 해결했습니다 !
![[백준] BOJ-15649 N과 M (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FKTNmH%2FbtrSqXX0l7B%2FAAAAAAAAAAAAAAAAAAAAADWOfISbRQOn6o2Qe30VyYVva6UoLInkwSFuvZtdLtu4%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DnFF4pmD6i%252Btlh%252B0hgn5H%252FkNjbok%253D)
[백준] BOJ-15649 N과 M (1)
문제 N과 M을 입력받아 nPm 의 순열을 구하는 문제였다. 풀이 import Foundation let nm = readLine()!.split(separator: " ").map { Int($0)! } let n = nm.first! let m = nm.last! let nums = Array(1...n) // [1, 2, ..., n] /// nPr func permutation(n elements: [Int], r: Int) -> [[Int]] { var result = [[Int]]() var visited = [Bool](repeating: false, count: n) func permu(_ temp: [Int]) { if temp.count == r { result.append(temp) ..
![[SwiftUI] 사라질 때 transition이 적용안되는 경우 (SwiftUI removal transition not animated)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbJBHV5%2FbtrSq8Zo4Af%2FAAAAAAAAAAAAAAAAAAAAAG8UmEUoT-BJqFX_6oPs-u_46jXDvix7DAFCiDX6b8c3%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DBqbPHkdMDf4l26UWoHWefdWvG5s%253D)
[SwiftUI] 사라질 때 transition이 적용안되는 경우 (SwiftUI removal transition not animated)
문제Color 로 덮여있는 화면을 탭하면 Lottie 뷰가 아래에서 나타나고,Lottie 뷰를 다시 탭하면 아래로 사라지도록 했다.뷰가 나타나는 건 잘되는데, 사라질 때 왜 애니메이션이 안먹을까? 원인 및 해결ZStack { Color.green.ignoresSafeArea() if isAnimating { CustomLottieView() .transition(.move(edge: .bottom)) }}// @State isAnimating, onTapGesture 는 생략위 코드처럼 구성이 되어있는데 .ignoresSafeArea() 를 풀어보면 removal transition 시, CustomLottieView 의 ZIndex 가 0으로 변경되면서 Color 보다 아..
![[백준] BOJ-14889 스타트와 링크](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FHgaZg%2FbtrSa77Wphs%2FAAAAAAAAAAAAAAAAAAAAAPOLqV6olsaAMPbrCcH8BP8rt75MX7q4gGY38ocyAUO0%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DhlPdRsBuqF413%252FG2nw7z6K4MsPo%253D)
[백준] BOJ-14889 스타트와 링크
문제 문제 풀이 알고리즘 스터디 1주차 문제로, DFS, 백트래킹 알고리즘으로 접근하며 문제풀이를 시작했다. 백트래킹은 "DFS를 기반으로 하며, 어느 정도의 Depth 에 도달하면 탐색을 중단 하는 알고리즘" 정도로 이해하고 접근했다. n이 무조건 짝수로 제공되고, 절반 씩 팀을 나누기 때문에 dfs로 순차 탐색을 진행하다가 n / 2 일 경우 탐색을 중단하고 팀원을 구성하도록 했다. 두 팀간의 능력치 차이가 가장 적은 경우의 능력치 차이를 출력하는 문제이기에 result 변수의 초기값을 Int.max 로 설정해둔 후, min() 과 abs() 함수를 사용해 두 팀 간의 능력치 차이를 구하고 result 와 비교해 더 적은 값으로 업데이트 하도록 했다. import Foundation let n = I..
![[Git] gitignore에 등록해도 DS_Store가 자꾸 Stage에 올라가요](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FddOaMA%2FbtrQCiV8OF3%2FAAAAAAAAAAAAAAAAAAAAALbY8URxVRsVulZP8_rQ8oPg7FFgMBRXpYmSd7BGoDpu%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DiVoEXW1OClPSARQcw2peaADhSd4%253D)
[Git] gitignore에 등록해도 DS_Store가 자꾸 Stage에 올라가요
DS_Store 파일은? DS_STORE 파일이란 Desktop Services Store의 약자로, 애플에서 정의한 파일 포맷이다. 애플의 맥 OS X 시스템이 finder로 폴더에 접근할 때 자동으로 생기는 파일로써, 해당 폴더에 대한 메타데이터를 저장하는 파일이다. 윈도우의 thumb.db 파일과 비슷하다. 분석해보면 해당 디렉토리 크기, 아이콘의 위치, 폴더의 배경에 대한 정보들을 얻을 수 있다. 맥 OS 환경에서만 생성 및 사용되지만, 파일을 공유하는 과정에서 이 파일도 같이 공유되는 경우가 있다. DS_store 파일은 프로젝트와 관련없는 파일이며, git status를 사용했을 때 발견되는 파일이니, github로 넘기지말고 삭제해도 된다. 문제 .gitignore 에 *.DS_Store 를..

CocoaPods pod install 시 minimum deployment target 경고가 뜰 때
프로젝트를 Clone 후 의존성 설치를 위해 pod install 을 했다.분명 예전에도 pod install 후 워닝이 떠서 minimum deployment target 를 최소 지원 버전과 맞춰 놨는데, pod install 을 하면 다시 초기화되는 경우가 발생했다. 새로운 팀원이 들어오거나 프로젝트 파일을 새로 여는 경우 매번 minimum deployment target 을 설정해주는건 번거로운 일이다. 그래서 이참에 자동화 하는 방법을 찾아서 적용해두었다.. # 이런 저런 초기 설정...target 'YourApp' do # 당신의 앱의 이런저런 외부 의존성... # ex) pod 'KakaoSDKTalk' # ex) pod 'Alamofire'endpost_install do..
![[소프트웨어 공학] 블랙박스 테스트-1](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlS93N%2FbtrQtVnP5SR%2FAAAAAAAAAAAAAAAAAAAAAFdrTydr7BnFF2O5hd3rj_SVkOnebxpoG2PFOprWfs5r%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DWLbo8Kzj1pEAw7pjeD38HQn%252F7nQ%253D)
[소프트웨어 공학] 블랙박스 테스트-1
블랙박스 테스트 명세 기반 테스트(ISO/IEC/IEEE 29119) 명세에 따른 올바른 구현여부 테스트 명세 정보 등을 이용하여 테스트 케이스 설계 요구사항 분석 / 시스템 인터페이스 / UI 명세 원시 코드 정보를 이용하지 않음 사용자 입장에서 테스트 케이스 설계 가능 개발 초기 단계부터 테스트 케이스 설계 가능 단위, 통합, 시스템, 인수 테스트 전 과정에 사용 동일 명세로 구현된 여러 시스템에 재사용 가능 기능 (누락) 오류 / 명세 오류 검출 예시 입력이 1024 이하이면 입력 값, 크면 1 증가 값 반환 // BlackBoxTest.java public class BlackBoxTest { public int bTest(int x) { return x; } } 명세에 따라 1024 이하인 경우..

앱스토어 첫 심사와 리젝 대응 : Guideline 2.1
첫 심사시험 하루 전날이었지만,첫 개인 앱이 세상 밖으로 나갈 준비를 마치니까 몸이 근질거려 시험공부는 때려치고 처음으로 심사를 넣어보았다!앱스토어에 등록될 스크린샷(6.5/5.5)도 직접 만들고인생 첫심사라니 뿌듯해하던것도 잠시 심사에 들어간지 2시간 정도만에 답장이 왔다.첫 리젝이게 뭐지? 하고 읽어보니 리젝당했다는 뜻이었다. 처음 읽을때만해도 통과는 됐는데 뭘 바꾸라는건가? 싶었음ㅋㅋㅋㅋㅋ가이드라인과 함께 내용을 파파고와 함께 읽어보니2.1 앱 완전성 앱 심사 팀에 제출하는 앱(사전 주문용 앱 포함)은 필요한 모든 메타데이터가 있고 URL이 정상적으로 작동하는 최종 버전이어야 합니다. 플레이스홀더 텍스트, 빈 웹 사이트와 기타 임시 콘텐츠는 제출하기 전에 삭제해야 합니다. 앱을 제출하기 전에 기기에..

협업 시 팀원과 Provisioning Profile 및 Certificate 공유하기
iOS 앱개발을 하다보면 혼자서만 작업하는게 아닌 협업을 자주 하게 되는데요.혼자서 개발할땐 거의 Automatically manage signing 을 켜둔 상태에서 개발하다보니XCode 가 알아서 Provisioning Profile 을 만들어주고, 이렇게 만들어진 Provisioning Profile 엔 내 App ID, Signing Certificate, Device 가 등록되어있을테니 내 작업환경에선 실기기 빌드도 잘되고 문제가 없습니다. 하지만 팀원은 인증서와 프로비저닝 프로파일이 없기 때문에 실기기를 빌드하려고 하면 오류가 나게 됩니다. 따라서 수동으로 프로비저닝 프로파일(Provisioning Profile)과 인증서(Certificate) 을 만들고 팀원들에게 공유해 준다음 팀원들이 등..
![[소프트웨어 공학] JUnit](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fn29bV%2FbtrN4OrLvkc%2FAAAAAAAAAAAAAAAAAAAAAAD14PmCKS88tIohFlU-iS-AzJU2Wekd20MVdnYPe_hL%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DxEYDSJ3XKJWwuMjqF76nWlFy2hc%253D)
[소프트웨어 공학] JUnit
JUnit 이란? 자바 프로그램의 단위 테스트 프레임워크 어노테이션으로 쉽고 간결한 테스트 코드 테스트를 위해 코드에 출력문을 삽입할 필요 없음 예시 src/main/java(kr.se) 폴더에서 Calc 클래스 생성 -> File -> New -> Class 선택 package kr.se; public class Calc { //Calc.java private int res=0; public void add(int x, int y) { res=x+y; } public void sub(int x, int y) { res=x-y; } public int getResult( ) { return res; } } src/test/java(kr.se) 폴더에서 CalcTest 클래스 생성 -> Flie -> N..

2022년 9월 회고
회고를 10월이 되자마자 바로 쓰고 싶었지만, 일도 많고 탈도 많고 너무 바쁜 한 달이었다.. 그래도 이번 한 달간 무슨 일들이 있었는지 기록해두면 쓰면서 생각도 정리되고 나중에 다시 찾아왔을 때 '아 이 때 이런 일도 있었지' 하면서 회상할 수 있을 것 같다. 블로그 리스타트 🤔 사실 블로그는 이미 예전에 깃허브 블로그로 처음 시작해서 벨로그로 이사도 했었다. 근데 그땐 포스팅에 너무 공을 들였던 것 같다. 내용 하나하나 틀린 내용은 없는지, 문맥은 적절한지 등등 완벽한 포스팅을 해야된다는 강박관념이 있어서, 어느 순간 블로그를 포기했던 것 같다. 그리고 이번에 SOPT 지원을 준비하다가 내 글쓰기 실력에 충격을 먹고 공부도 할 겸 글쓰는 연습도 할 겸 겸사겸사 시작하게 되었다. SOPT 지원 포기 😓..
![[GitKraken] 깃크라켄 테마 변경하기 - Dracula](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbucCU5%2FbtrNKVqiAi5%2FAAAAAAAAAAAAAAAAAAAAAE-5Q5QfAhc29rYIajwCe_lpcZR6Kgx1smIYpvFJX1mn%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DmvG7cKh8ruMpDiDX0oMeKWBq%252BLs%253D)
[GitKraken] 깃크라켄 테마 변경하기 - Dracula
Dracula 테마 홈페이지 https://draculatheme.com/gitkraken Dark theme for GitKraken and 275+ apps — Dracula Dracula is a color scheme for code editors and terminal emulators, including GitKraken and 275+ other apps. Check the instructions to learn how to install it. draculatheme.com brew 로 설치하는 방법 brew tap dracula/install brew install --cask dracula-gitkraken 터미널에서 위 명령어를 순서대로 입력하신 다음 깃 크라켄 Preferences ..