전체 글

전체 글

    [Flutter] How to solve build errors

    빌드 에러가 발생하는 상황빌드 에러는 여러 상황에서 발생할 수 있다:디버깅 모드로 빌드시Xcode에서 Runner/AppDelegate 파일에서 'No such module 'Flutter' 에러 발생Flutter SDK를 다운그레이드 또는 업그레이드한 경우pubspec.yaml 파일을 수정한 후 바로 빌드할 때해결 방법프로젝트 루트 디렉터리에서:lib 폴더와 pubspec.yaml 파일이 있는 위치로 이동터미널에 다음 명령어를 입력:rm -rf pubspec.lockflutter pub cache cleanflutter cleanflutter pub getiOS 폴더에서:cd ios 명령어로 이동다음 명령어를 실행:rm -rf Podfile.lockrm -rf Podsrm -rf ~/Library/De..

    [Flutter/Android] Android 12 PendingIntent Error & How to resolve the error

    블루투스 서비스에서 PendingIntent 사용 시 발생하는 문제 및 해결 방법최근에 Flutter 앱을 디버깅 모드로 빌드하는 과정에서 다음과 같은 에러를 경험했음:E/AndroidRuntime(11350): FATAL EXCEPTION: mainE/AndroidRuntime(11350): Process: com.sxr.sdk.ble.keepfit.client, PID: 11350E/AndroidRuntime(11350): java.lang.RuntimeException: Unable to create service com.apposter.smart_device.BleService: java.lang.IllegalArgumentException: com.sxr.sdk.ble.keepfit.client..

    git pull --prune / git error-"Did not send all necessary objects"

    git pull --prune 명령은 로컬 리포지토리에서 원격 리포지토리의 변경 사항을 가져와 병합할 때, 더 이상 존재하지 않는 원격 브랜치를 로컬에서 삭제하는 명령이다. 이는 git fetch와 git prune의 조합으로 생각할 수 있다.용도와 설명git pull:원격 리포지토리에서 변경 사항을 가져와 현재 로컬 브랜치와 병합한다.이는 git fetch와 git merge FETCH_HEAD를 함께 실행하는 것이다.--prune 옵션:로컬에서 더 이상 존재하지 않는 원격 트래킹 브랜치를 삭제한다.원격에서 브랜치가 삭제된 경우, 로컬에 그 브랜치의 트래킹 브랜치가 남아 있는 것을 방지한다.언제 사용해야 하는가?원격 브랜치 정리:원격 리포지토리에서 브랜치가 삭제되었을 때 로컬 리포지토리에 그 정보가 남..

    Flutter 무선 디버깅 설정

    1. Android 장치 설정개발자 모드 활성화:설정 앱을 열고 "전화 정보" 또는 "디바이스 정보"로 이동합니다."빌드 번호"를 7번 클릭하여 개발자 모드를 활성화합니다.개발자 모드가 활성화되면 "설정" -> "시스템" -> "개발자 옵션"으로 이동합니다.ADB 디버깅 활성화:"개발자 옵션"에서 "USB 디버깅"을 활성화합니다.또한, "네트워크 디버깅" 또는 "ADB 무선 디버깅" 옵션을 활성화합니다. (이 옵션은 Android 11 이상에서 사용 가능)2. Android 장치와 컴퓨터 연결Set-up ADBInstall homebrew/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.s..

    Value error : invalid mode : 'rU' while trying to load binding.gyp

    파이썬 이 3.11이면 나는 에러이며, 3.10 버전으로 바꾸어 주면 된다. brew install pyenv #pyenv 설치 pyenv를 통해 파이썬 3.10버전을 설치 pyenv install 3.10 zshrc에 이 내용 복사 붙여넣기 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" 파이썬 버전 적용하기 pyenv shell 3.10.11 파이썬 버전 확인 python -V

    Create a local server as a public server - Using "Ngrok"

    Create a local server as a public server - Using "Ngrok"

    What is a Ngrok Ngrok은 로컬 개발 환경에서 인터넷을 통해 웹 애플리케이션에 안전하게 접근할 수 있도록 해주는 도구이다. 보안 연결을 통해 인터넷에서 서버를 실행할 수 있으며, 웹 애플리케이션을 외부에 노출시키지 않고도 테스트할 수 있다. Ngrok의 주요 장점은 다음과 같다. 1. 편리한 설치와 사용 Ngrok는 다운로드 및 설치가 간편하다. 설치 후에는 쉽게 사용할 수 있으며, 명령어 한 줄로 로컬 개발 서버를 인터넷으로 노출시킬 수 있다. 2. 안전한 연결 Ngrok은 TLS/SSL 보안 연결을 사용하며, 인증서는 자동으로 생성된다. 이를 통해 로컬 서버에서도 안전하게 연결할 수 있으며, 외부에서도 보안적으로 안전한 연결을 통해 애플리케이션을 실행할 수 있다. 3. 개발 및 테스트 ..

    Redux Toolkit - A non-serializable value was detected in an action, in the path: `type`

    Redux Toolkit - A non-serializable value was detected in an action, in the path: `type`

    A non-serializable value was detected in an action, in the path: `type` 오류 내용을 천천히 읽어 보면 action에 직렬화가 불가능한 값을 전달했다는 뜻으로 해석할 수 있다. 여기서 직렬화란 redux에서 값을 주고받을 때 object 형태의 값을 string 형태로 변환하는 것을 말한다. (JSON.stringify) 역직렬화는 직렬화의 반대로, 문자열 형태의 객체를 다시 object 형태로 되돌리는 과정이다. (JSON.parse) Redux는 state, action에 직렬화가 불가능한 값을 전달할 수 없기 때문에 에러가 발생한 것이다. 해결방법 //아래처럼 사용된 코드를 dispatch({ type: setMovies, payload: { ..

    CORS Issue: Next.js / React application

    React // webpack devServer: { ... proxy: { "/api": { target: "https://api.sampleapis.com/futurama", pathRewrite: {"/api": "/"}, } } }, 먼저 웹팩에서 proxy 부분을 추가해준다. 설정은 이렇다. /api로 시작하는 경로는 실제로 https://api.sampleapis.com/futurama의 경로라는 것이다. 그리고 pathRewrite를 이용하여 /api를 /로 바꿔준다. const res = await axios.get('https://api.sampleapis.com/futurama/info'); const res = await axios.get('/api/info'); 이제 위의 방법으로 ..

    IPv4 / IPv6

    IPv4 현재 네트워크 계층의 프로토콜은 IPv4 Internet Protocal version4 를 사용한다. (현재 대부분 사용되고 있는 아이피) 현재 아이피주소는 버전 4로 4영역으로 나누어진 최대 12자리의 번호로 이루어져 있다. ex) 127.0.0.1 192.12.100.2 . . 숫자로 구성된 인터넷 공인 주소이고 점으로 구분한다. 각 영역의 숫자는 0 ~ 255 까지의 숫자로 표현할 수 있고, 한 영역의 256 (2^8) 가지의 경우의 수를 표현할 수 있다. 비트로 표현하면 각 영역은 8비트로 이루어지며 총 4영역이므로 8 *4 = 32 비트 체계이다. 32비트로 이루어진 IPv4 는 최대 약 40억개(2^32 = 4,294,967,296 )의 서로 다른 주소를 부여할 수 있다. 즉, IP..

    [TypeScript] Difference between type and interface

    1. 확장(상속)하는 법 interface extends 키워드를 이용해서 확장할 수 있다. interface Person { name: string; age: number; } interface Student extends Person { // 확장(상속) school: string; } const mark: Student = { name: 'mark', age: 31, school: 'harvard' } type & 기호를 이용해서 확장할 수 있다. type Person = { name: string, age: number } type Student = Person & { // 확장(상속) school: string } const mark: Student = { name: 'mark', age: 31..