👩🏻‍💻 TIL 55

[Flutter] 앱 버전관리 규칙

나는 빌드하면서 계속 앱 버전 관리에 대해서 헷갈렸었다. 버전을 잘못 올리면 어떡하지 하는 걱정, 불안감이 가득했다. 하지만 알고보면 간단하다. 내가 겪은 예시의 상황을 들며 자세히 설명해보겠다. 버전 네임 먼저 버전 네임에 대해서 알아보자. 버전 네임은 다음과 같이 이루어진다. Major.Minor.patch 첫 번째 자리는 메이저한 업데이트, 두 번째 자리는 기능 리뷰얼 정도의 중규모 업데이트때, 세 번째 자리는 자잘한 디버깅 및 약간의 수정 일 때, 이들의 숫자를 하나씩 올린다. 그러면 만약 버전 네임이 v1.5.2 라고 하자 뒤에 + 는 무엇을 의미하는 걸까 이것은 빌드 횟수를 말하는 것이다. 이는 빌드할 때마다 무조건 올려준다고 생각하면 된다. 만약 현재의 버전이 v1.4.2+90 인데 기능 리..

👩🏻‍💻 TIL 2022.12.28

안드로이드 인텐트 필터

암시적 인텐트 수신 앱이 수신할 수 있는 암시적 인텐트가 어느 것인지 알리려면, 요소를 사용하여 각 앱 구성 요소에 대해 하나 이상의 인텐트 필터를 메니페스트 파일에 선언합니다. 각 인텐트 필터는 인텐트의 작업, 데이터 및 카테고리를 기반으로 어느 유형의 인텐트를 수락하는지 지정합니다. 시스템은 인텐트가 인텐트 필터 중 하나를 통과한 경우에만 암시적 인텐트를 앱 구성 요소에 전달합니다. 참고: 명시적 인텐트는 항상 자신의 대상에게 전달되며, 이는 구성 요소가 어떤 인텐트 필터를 선언하든 무관합니다. 앱 구성 요소는 자신이 수행할 수 있는 각각의 고유한 작업에 대하여 별도의 필터를 선언해야 합니다. 예를 들어 이미지 갤러리 앱에 있는 어떤 액티비티에 두 개의 필터가 있을 수 있습니다. 한 필터는 이미지를 ..

👩🏻‍💻 TIL 2022.12.05

안드로이드 Manifest 파일

뜻(Meaning) 명사 - 적하목록(선박 또는 항공기에 적재된 화물의 목록) 형용사 - 명백한 동사 - 나타나다 안드로이드에서 매니페스트란 "안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록" 이라고 정의할 수 있습니다. 역할(Role) - Java 패키지의 이름을 지정할 수 있다. 패키지지 이름은 곧 프로젝트의 식별자! 사람으로 따지면 주민등록번호 또는 바꿀 수 없는 이름과 같다. - 후에 알게될 액티비티, 서비스, 브로드캐스트, 리시버 등 앱을 이루는 구성요소들의 클래스 이름을 지정하고 구성요소들이 실행될 수 있는 조건을 기술한다. - 앱이 장치 또는 구성요소들과 상호작용하기 위해 필요한 권한을 설정한다. - 앱이 연결되어야 하는 라이브러리를..

👩🏻‍💻 TIL 2022.12.05

앱이 도중 꺼지는 이유에 대해 분석해보았다

제목 그대로 어느 날, QA 를 하시는 한 분이 내가 만든 기능의 리뷰를 작성하던 도중 앱이 꺼지는 것 같다고 하셨다. 이전 QA 에서 앱이 꺼졌다고 보고한 사람들이 없었는데 왜 갑자기 이런 현상이 일어난 걸까? 또한 내가 쓴 코드에 대해선 여러 번 체크를 해봤기 때문에 코드에선 100% 아무런 잘못이 없다고 나는 확신을 하고 있었다. QA 를 하시는 분이 쓰는 핸드폰은 갤럭시이며 회사의 공용 테스트폰 iphone 7 로 테스트를 하고 있었다. 내가 테스트하는 폰들은 이런 현상이 일어나지 않았기에 QA 분에게 테스트폰을 잠시 빌려서 디버깅을 해보겠다고 부탁하였다. 그런데 테스트폰을 본 순간 문득 예전 기억이 떠올랐다. 옆에 개발하시는 분이 이 폰으로 디버깅하는데 속도가 너무 느리다고 하셨다. 그래서 나는..

👩🏻‍💻 TIL 2022.12.02

xcode push notification not showing

나는 파이어베이스 클라우드 메시징을 이용해서 iOS 의 Push Notification 을 구현하고 싶었다. 참고로 나는 플러터 개발자이기 때문에 iOS xcode 를 다룸에 있어서 익숙치 않다. 나는 인증서와 키를 모두 알맞게 발급 받았다. 혹시 인증서와 키 발급 받는 방법이 궁금하신 분들은 아래 영상을 참고하면 된다. ↓ https://www.youtube.com/watch?v=ytT65m_CjXU&list=LL&index=11 이제 + 버튼을 눌러서 Push Notification 을 추가할 차례이다. 그런데!!!!!!!!! 난 저 + 버튼을 누르면 Push Notification 이 없었다. 오잉? 내가 뭘 잘못했나 하면서 인증서, 키 모두 체크했고 별 이상 없었다. 다른 사람들은 저 버튼 눌러서..

👩🏻‍💻 TIL 2022.10.24

[iOS] [Flutter] module not found.

ios 로 디버깅 시도 하던 중 패키지만 깔고 나면 module not found 라는 문구가 나타난다. 디버그 콘솔 보면 import 패키지 에러 어쩌구저쩌구.. 스택오버플로우를 참고해서 모든 방법을 시도해봤다. https://stackoverflow.com/questions/61956166/flutter-module-not-found-in-xcode Flutter module not found in Xcode When I build the app in Xcode it throws the error: .../ios/Runner/GeneratedPluginRegistrant.m:10:9: Module 'audioplayers' not found I tried reinstalling and setting ..

👩🏻‍💻 TIL 2022.10.18

only one auth mechanism allowed

Amazon s3 s3 : simple storage service 어떤 정보(= 파일) 를 저장하는 서비스, 간단한 저장 서비스 s3 를 쓰는 이유 어떤 서버를 구축해서 저장하는 서비스를 만들 수도 있지만, 아마존에서 제공하는 서비스를 사용하면 많은 것들을 신경 쓰지 않고 안전하게 파일을 보관할 수 있습니다. (유실 가능성 거의 없음. 약 99.9%) (s3 의 서버는 죽을 걱정 거의 안해도 됩니다.) s3 보안 방식 amazon s3 는 ssl 을 통해 데이터 전송과 데이터 업로드 후 자동 암호화를 지원합니다. (ssl 은 암호화 방식) 이벤트 알림 전송 amazon s3 는 amazon s3 에 객체가 업로드 되면 이벤트 알림을 전송할 수 있습니다. 즉, 스토리지와 연계된 다른 서비스를 사용하는데 ..

👩🏻‍💻 TIL 2022.09.19

[Java] 추상 클래스와 인터페이스

클래스는 일반적으로 추상 클래스와 일반 클래스로 나뉜다. 추상 클래스는 클래스 내 '추상 메서드' 가 하나 이상 포함되어 있거나 abstract 로 정의된 클래스이다. 반면 인터페이스는 모든 메소드가 추상 메소드 이다. 이처럼 하는 일은 비슷하지만 이 둘의 개념은 뿌리부터 전혀 다른 곳에서 나왔다. 추상 클래스는 그 추상 클래스를 상속 받아서 기능을 이용하고 확장하는데에 이용하고, 인터페이스는 극단적으로 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것이 바로 인터페이스의 역할이자 개념이다. 인터페이스에 대해 더 자세히 알기 위해 아래 예시를 같이 살펴보자. A학생은 PPT로 논문을 11일날 제출했다. B학생은 EXCEL 2016 로 논문을 12일날 제출했다. C학생은 EXCEL 2019 로 자기만..

👩🏻‍💻 TIL 2022.06.12

[Java] extends implements 차이

extends 와 implements 의 차이는 뭘까? 메소드나 변수를 '구현'하는가 그대로 '사용'하는가에 따라서 상속의 형태가 갈리게 된다. extends 부모에서 선언 / 정의를 모두하며 자식은 메소드 / 변수를 그대로 사용할 수 있음 implements (interface 구현) 부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 (재정의) 해서 사용해야함 abstract extends와 interface 혼합. extends하되 몇 개는 추상 메소드로 구현되어 있음 1. Extends 사실 extends가 상속의 대표적인 형태다. 부모의 메소드를 그대로 사용할 수 있으며 오버라이딩 할 필요 없이 부모에 구현되있는 것을 직접 사용 가능하다. class Vehicle { protected i..

👩🏻‍💻 TIL 2022.06.12

nexus-graphql-mongoose-boilerplate 1일차

현재 회사에서 사용하고 있는 기술을 이해하기 위해 초기세팅 진행해보았습니다. 초기세팅 하면서 모르는 것들이 너무 많아서 며칠동안 블로그에 같이 정리해보도록 하겠습니다. npm init -y rootDir : 시작하는 루트 폴더. outDir : 컴파일 후 생성되는 js파일이 생성될 폴더명. target : 어떤 버전으로 컴파일할지 작성 outDir: './dist' rootDir: './src' 이렇게 설정하기 typescript 설치 yarn add -D typescript npx tsc --init tsconfig 파일이 생겨났습니다. tsconfig.json TypeScript로 짜여진 코드를 JavaScript로 컴파일하는 옵션을 설정하는 파일입니다. TypeScript 컴파일은 tsc 라는 명령..

👩🏻‍💻 TIL 2022.05.15