본문 바로가기

프로그래밍88

[XCode] Build Setting 빌드 환경 변수 목록 확인하기 info list를 적절히 수정하기 위해 여러 가지 환경 변수를 활용할 수 있습니다. 이 환경 변수 목록을 확인해 보겠습니다. 방법1) 공식문서 xcode 공식 문서를 참고하세요. (한결같이 찾기 힘든 애플 공식 문서,,,) 방법2) 명령어 실행 IOS 프로젝트가 로컬에 존재한다면 해당 프로젝트 디렉토리에서 아래와 같은 명령을 실행시켜 보세요. ReactNative와 같은 크로스 플랫폼인 경우 프로젝트명/ios 디렉토리에서 해당 명령을 실행시켜 주세요. xcodebuild -project 프로젝트명.xcodeproj -target "프로젝트명" -showBuildSettings 해당 프로젝트에 적용되는 환경 변수 목록을 아래와 같이 확인할 수 있습니다. ACTION = build AD_HOC_CODE_S.. 2023. 3. 19.
[React-Native] 깃허브 레포지토리 첫 업로드하기 프로젝트 생성 아래 명령을 통해 로컬 프로젝트를 생성합니다. npx react-native init 프로젝트명 깃허브 레포지토리 생성 로컬 환경에서 react native 프로젝트를 생성하는 동안 깃허브에 접속하여 레포지토리를 생성해 주세요. react-native cli 로 프로젝트 생성 시 자동으로 .gitignore이 생성되므로 생성 옵션 중 .gitignore 파일 추가를 선택하지 마세요. README 파일 추가도 선택하지 마세요. 깃 초기화 로컬 프로젝트 생성이 완료되었으면 로컬 프로젝트 디렉토리에서 깃 초기화를 해주세요. git init 깃 리모트 설정 깃허브에서 생성한 레포지토리와 로컬 프로젝트를 연결합니다. git remote add origin https://github.com/그룹또는회.. 2023. 3. 14.
[npm] 라이브러리 버전 semantic versioning 가이드라인 이해하기 라이브러리 버전 규칙에 대한 npm 가이드라인을 서술합니다. npm의 semantic versioning npm 공식 문서에서는 라이브러리 버전 설정 시 아래와 같이 버전을 설정하도록 권장하고 있습니다. 메이저.마이너.패치 형태로 버전을 명시 최초 배포 버전 : 1.0.0 호환되는 버그 패치 버전 : 1.0.1 호환되는 새 기능 추가 버전 : 1.1.0 호환되지 않는 새 기능 추가 버전 : 2.0.0 즉, 이전 버전과 호환 여부에 따라 메이저, 이전 버전과 호환되는 새로운 기능인 경우 마이너, 기타 버그 패치와 같은 자잘한 작업의 경우 패치 버전을 결정합니다. 틸드(~)와 캐롯(^) 위에서 라이브러리 버전이 어떻게 구성되는지 이해했습니다. 허나 package.json에는 버전뿐만 아니라 버전 옆 틸드(~.. 2023. 3. 7.
[npm] package.json 과 package-lock.json 차이점 이해와 필요성 다양한 서드파티 라이브러리들을 사용하기 위해 npm이라는 패키지 매니저를 일반적으로 사용하는데요, npm을 사용함에 있어 필요한 파일 두 가지, package.json 및 package-lock.json을 이해하고 차이점을 알아보겠습니다. package.json과 package-lock.json 차이 이해를 돕기 위해 express 라이브러리를 설치하여 package.json과 package-lock.json을 비교해 보겠습니다. package.json ... "dependencies": { "express": "^4.18.2" } ... package-lock.json ... "node_modules/express": { "version": "4.18.2", "resolved": "https://reg.. 2023. 3. 6.
[React-Native] Watchman std::__1::system_error: Operation not permitted 접근 권한 버그 해결하기 RN 앱을 개발할 때 필요한 도구인 watchman, 프로젝트 디렉토리 접근 권한이 부여된 상태임에도 실행 시 접근 권한이 없다고 에러를 출력하는 문제가 있습니다. 이 문제를 해결해보겠습니다. ... { watchmanResponse: { error: 'std::__1::system_error: open: /Users/taegyeonglee/Documents/GitHub/Checked: Operation not permitted', version: '2023.01.16.00' } } 이 글은 watchman설치를 완료한 상태을 전제로 합니다. 부여된 권한 삭제 설정 -> 개인정보 보호 및 보안 -> 파일 및 폴더 에서 watchman을 모두 삭제해 줍니다. Watchman shutdown 실행 중인 wa.. 2023. 3. 5.
[android] 업로드 키, 인증서 재설정하기 기존 업로드 키를 분실하거나 더이상 사용할 수 없는 경우 새로운 업로드 키를 생성, 반영해야 합니다. 이 과정을 기록합니다. 새 업로드 키 생성 android studio에서 새 업로드 키를 생성합니다. 새 업로드 키를 생성하는 과정은 블로그 글을 참고해 주세요. 새 업로드 인증서 생성 생성한 업로드 키를 통해 새 업로드 인증서를 생성합니다. 아래 명령을 통해 새 업로드 인증서를 생성할 수 있습니다. 보다 자세한 설명은 공식 문서를 참고하세요. keytool -export -rfc -keystore 생성한업로드키파일이름 -alias 업로드키생성시지정한ALIAS명 -file 생성할업로드인증서이름.pem 업로드 키 재설정 요청 play console -> 설정 -> 앱 무결성 -> 앱 서명 항목에서 업로드 .. 2023. 2. 27.
[android] 배포용 안드로이드 앱 번들 빌드하기 안드로이드 스튜디오를 활용해서 배포용 안드로이드 앱 번들을 빌드해 보겠습니다. 버전 변경 versionCode가 같은 번들은 play console에 업로드할 수 없습니다. 처음으로 앱을 배포하는 상황이 아닌 경우 build.gradle 파일 내 versionCode 와 versionName 을 수정해주세요. 두 변수의 차이점과 기능에 대해선 공식 문서를 참고해주세요. 생성 옵션 선택 새로운 번들에 서명을 해야 합니다. Build -> Generate Singed Bundle / APK 를 선택합니다. 기본 설정(Android App Bundle)을 선택 후 다음 단계를 진행해 주세요. 업로드 키 생성 및 적용 업로드 키가 존재하는 경우 서명 키 비밀번호와 alias를 입력해주시고 서명키가 없는 경우 C.. 2023. 2. 26.
[Python3] dictionary 사용 방법 hashmap 을 구현할 수 있는 python dictionary 사용 방법을 서술합니다. dictionary 는 key 와 value 한 쌍의 집합체입니다. 또한 집합 원소 간 순서가 보장되지 않습니다. (순서가 없음) 선언 hashMap = {} 아래와 같이 초기화 할 수 있습니다. hashMap = dict(apple = 10, banana = 6, grape = 7) key 와 value 추가 및 업데이트 keyName 이 없을 경우 추가, 존재하는 경우 value 를 업데이트합니다. hashMap['keyName'] = value key 와 value 삭제 list 삭제와 동일한 방식입니다. del hashMap['keyName'] key 존재 여부 확인 in, not in 구분을 통해 확인 여.. 2023. 2. 13.
[Python3] 다차원 리스트 생성 계속 까먹는 파이썬 다차원 리스트 생성, 알고리즘 문제 푸는 데 유용한 도구가 되니 더 이상 까먹지 않도록 블로그에 기록합니다. 생성 모든 원소 값 0을 갖는 2차원 리스트를 생성합니다. n = 2 table = [[0 for _ in range(n)] for _ in range(n)] # [[0,0], [0,0]] 주의점 아래 프로그램을 실행하여 동일한 결과를 얻을 수 있으나, 일반적인 다차원 리스트를 생성하는 것이 아닌 각 인덱스에 대한 참조 리스트를 생성합니다. n = 2 table =[([0]*n)] *n # [[0,0], [0,0]] table[1][1] 값을 1로 만들고자 할 때, table[0][1] 또한 1로 변경되는 것을 확인할 수 있습니다. print(table) # [[0,0], [0.. 2023. 2. 12.
[React-Native] Pressable 컴포넌트로 재사용 가능한 버튼 구성하기 Presssable 컴포넌트는 RN 앱 개발을 위해 반드시 알아야 하는 컴포넌트입니다. press 상호작용에 관한 기능을 제공하는 컴포넌트이기 때문에 적절히 커스텀해서 버튼 등의 기능을 대신할 수 있습니다. (RN 기본 컴포넌트 Button 컴포넌트는 너무 빈약합니다.) 구성 그러나 Pressable을 재사용 가능한 버튼으로 바로 사용하기에는 난감한 문제들이 있습니다. 버튼 뿐만 아니라 기타 press event에도 대응하기 위해(버튼 그 이상의 목적으로 광범위한 용도를 위해) 만들어졌기 때문입니다. import React from "react"; import { Pressable, Text } from "react-native"; const ButtonCustom = ({ onPress, text, t.. 2023. 2. 12.
[React-Native] react-native-webview 안드로이드 플랫폼에서 웹뷰를 출력하지 않는 문제 앱 내 웹뷰를 이식하려고 했습니다. 웹뷰를 사용하기 위해 react-native-webview 라이브러리를 사용하려 했으나.. 안드로이드 플랫폼에서 정상적으로 출력이 되지 않았습니다. 빈 공간만 출력되었습니다. IOS 플랫폼에선 정상적으로 원하는 웹뷰가 출력되었습니다. 안드로이드 플랫폼에서만 발생하는 문제였습니다. 깃허브 issue 항목에 비슷한 문제에 대한 해결 방법을 찾을 수 있었습니다. 상위 컴포넌트 없이 리턴 View 나 ScrollView 같은 상위 컴포넌트가 존재할 때 리턴하는 경우 발생하는 문제였습니다. 잘못된 예) return ( ); 올바른 예) return ; 참고 : react-native-webview/issues/1426#issuecomment-1207378759 White bla.. 2023. 2. 12.
[React-Native] react-native-google-singin 앱 심사에 통과하기 위한 앱 서명 인증서(SHA-1) 키 적용하기 debug 빌드에서 잘 기능하는 구글 소셜 로그인이 동작하지 않아 플레이 스토어 심사에서 승인받지 못했습니다. 찾아보니 앱 서명 인증서 SHA-1 키를 파이어베이스 콘솔에 추가해야 한다고 합니다. (디버그 환경에서는 상관이 없으니) 귀찮다고 추가 안했던 기억이 나네요... SHA-1 키 복사 구글 플레이 콘솔 -> 앱 선택 -> 설정 -> 앱 무결성 -> 앱 서명에서 앱 서명 인증서(SHA-1) 지문을 복사합니다. 파이어베이스 콘솔 적용 파이어베이스 콘솔 -> 프로젝트 선택 -> 프로젝트 설정 -> 디지털 지문 추가를 클릭합니다. 복사한 SHA-1 키를 붙여넣은 후 저장합니다. (선택) Release 빌드 SHA-1키 콘솔에 적용하기 구글 로그인이 Release 빌드에서도 정상적으로 기능하도록 Relea.. 2023. 2. 12.