본문 바로가기

전체 글60

GitHub Actions으로 Flutter CI/CD 구축하기 - workflow 설정 2 GiHub Actions으로 Flutter CI/CD 구축하기 - GitHub Secret 설정GitHub Actions으로 Flutter CI/CD 구축하기 - workflow 설정 1 이전 두 편에서는 깃허브 액션에서 제공하는 가상환경에서 빌드할 때 필요한 파일들과 데이터들을 깃허브 시크릿에 등록하는 작업, 그리고 이를 활용해서 안드로이드, iOS 배포를 위해 각각 apk, ipa를 빌드하여 구글 드라이브와 AppStore Connect의 api를 통해 배포하는 워크플로우를 작성해보았다.  이제 마지막으로 자동 빌드 후 Flutter  프로젝트의 버전 및 빌드 번호 수정 또한 자동화하는 workflow를 작성하겠다. 본인 프로젝트의 버전(빌드 버전) 관리 전략에 대해 먼저 간단하게 설명하면,배포 환경.. 2024. 1. 8.
GitHub Actions으로 Flutter CI/CD 구축하기 - workflow 설정 1 GiHub Actions으로 Flutter CI/CD 구축하기 - GitHub Secret 설정 전편에서 깃허브 액션 내에서 활용할 파일들이나 데이터들을 GitHub Secret에 등록하는 작업을 했다. 이제 깃허브 액션이 제공해주는 가상환경에서 이 secret을 활용하여 Workflow를 구성하는 작업을 진행한다. 우선 나의 프로젝트 상황에서는 두개의 workflow가 필요하다. 1. 풀리퀘스트 시 빌드 번호 업데이트, 빌드 그리고 배포 (develop, stage, release 브랜치 각각 작성) 2. develop, stage, release 브랜치에서 풀리퀘스트 시 develop, stage, release 브랜치 모두의 빌드 번호 업데이트 이번 글에서는 먼저 1번(빌드 및 배포 워크플로우)에 .. 2024. 1. 6.
GitHub Actions으로 Flutter CI/CD 구축하기 - GitHub Secret 설정 1, GitHub Secrets 추가 Github Actions에서 제공하는 가상 환경에서 빌드하기 전에 먼저 빌드에 필요한 인증 관련 파일들과 api key 등이 필요하다. 이를 코드로 직접 올리는 것은 보안상 위험하므로 GitHub Secrets으로 등록하여 사용한다. 이때 바이너리 파일을 직접 업로드할 수 없으므로 텍스트 형식으로 암호화 하여 등록하고 가상환경에서 빌드 시 복호화하여 사용한다. 1, GitHub Secrets 추가하는 방법 GitHub Repo > settings > Secrets and Variables > Actions 탭 → New repository secret 클릭 입력할 값의 name과 Secret 입력 2, 바이너리 파일을 텍스트형식으로 암호화하는 방법 Github Se.. 2024. 1. 2.
[Xcode] Sandbox: rsync.samba(24495) deny(1) 에러 사항 Sandbox: rsync.samba(24495) deny(1) file-write-create /Users/yugseongmin/Library/Developer/Xcode/DerivedData/allinonesns-gciarraamzgeqmdwjiuvlqicftmk/Build/Products/Debug-iphonesimulator/allinonesns.app/Frameworks/FBSDKCoreKit.framework/FacebookSDKStrings.bundle 해결 https://stackoverflow.com/questions/76590131/error-while-build-ios-app-in-xcode-sandbox-rsync-samba-13105-deny1-file-w error w.. 2023. 12. 19.
[Swift] 백준 16139 : 인간-컴퓨터 상호작용 https://www.acmicpc.net/problem/16139 16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 풀이 과정 누저합 원리만 알고 있다면 크게 어려움이 없는 문제이다. 단, 1) 질문의 수가 최대 200,000번이기 때문에 매번 반복되지 않도록 한번 누적합을 구한 알파벳의 누적합은 저장해놓고 사용하도록 하고 2) 물어보지 않을 특정 문자가 있을 수 있기 때문에 특정 문자가 등장하는지에 대한 누적합을 처음 물어볼 때에만 누적합을 구하도록 한다. 먼.. 2023. 12. 18.
[Swift] 백준 3020 : 개똥벌레 https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 풀이 방식 나는 처음에는 1...n 구간마다 장애물로 막혀 있는 곳의 위치들을 높이별로 빈도수 배열을 구한 뒤 배열 전체를 검색하면서 최솟값과 그 개수를 구하는 방식으로 구현했었다. // 완전 탐색으로 구현할 경우 O(n^2) 복잡도 for i in 0.. 2023. 12. 14.
[Swift] 백준 10986 : 나머지 합 https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 단순히 누적합 알고리즘으로 접근할 경우에 아래와 같이 시작점과 끝점의 모든 경우의 수를 확인해야 하므로 시간 복잡도가 O(n^2) for i in 0...n-1 { for j in i+1...n { count += ( psum[j]-psum[i] ) % 1 == 0 ? 1 : 0 { { 하지만 여기서 누적합 psum[0]...psum[n] 중 나머지.. 2023. 12. 13.
[Flutter] --dart-define 옵션 사용법 --dart-define 옵션이란?이 설정을 통해 사용자 정의 변수를 정의하고 런타임 시 동적으로 사용할 수 있도록 하는 옵션. 런타임의 환경에 따라 서버 엔드포인트를 변경하거나 로깅 레벨을 조정하거나 배포 환경을 설정하는 등의 목적으로 사용할 수 있다.사용법실행(빌드) 명령 뒤에 --dart-define=변수명=값 추가flutter run --dart-define=변수명=값ex) api 서버 엔드포인트를 설정할 경우flutter run --dart-define=API_URL=https://dev.api.comex) debug / production 빌드 환경을 구분하여 id 입력 flutter run --dart-define=FIREBASE_PROJECT_ID=your_debug_project_idf.. 2023. 12. 10.
[Swift] 백준 2559 : 수열 # 풀이 전형적인 누적합 문제. 아래와 같이 psum[0] = 0 부터 시작하는 prefix sum을 먼저 구한 뒤 var psum = [Int](repeating: 0, count: n + 1) for i in 1...n { psum[i] = psum[i-1] + inputArr[i-1] } psum[m] - psum[0] 부터 psum[n] - psum[n-m] 중 가장 작은 값을 찾는다. var max = Int.min; for i in m...n { if( max < psum[i] - psum[i-m] ) { max = psum[i] - psum[i-m] } } 소스코드 import Foundation let input = readLine()!.split(separator: " ").map{Int.. 2023. 12. 7.