본문 바로가기

분류 전체보기239

[안드로이드] room cannot verify the data integrity. looks like you've changed schema but forgot to update the version number [Error 발생] 신규 기능 추가 개발 중에 겪었던 Error 이다. 신규 기능을 추가하면서 로컬 DB로만 이루어진 기능이다보니, 신중하게 DB 설계를 하고를 개발을 했지만, 테이블 스키마가 변경되고, 테이블이 추가되는 상황이 왔고, 위 에러를 만나게 됐다. [확인 해야할 사항] 사실 보통 App 배포 후, 스키마가 변경되거나, 테이블 구조가 바뀌게 되면 Room Version 을 올리며 마이그레이션 코드를 추가하여 룸 데이터를 보존하며 작업을 한다. 하지만, 현재 개발기에서 개발 중에, 무의미한 더미데이터가 있을 경우 삭제 후, 다시 생성하면서 기능 개발을 하면 되는데 계속해서 위와 같은 에러가 발생했다. Androidmanifest.xml allowBackup = false 위 코드로 자동백업을 막.. 2023. 8. 13.
[Kotlin] zip(), mapIndexed(), filterNotNull() Leetcode 알고리즘 문제를 풀다가 자주 쓰지 않았던 함수를 사용하게 되어 정리를 하게 됐다. Leetcode - Find the Town Judge / https://leetcode.com/problems/find-the-town-judge/description/ Find the Town Judge - LeetCode Can you solve this real interview question? Find the Town Judge - In a town, there are n people labeled from 1 to n. There is a rumor that one of these people is secretly the town judge. If the town judge exists, the.. 2023. 7. 9.
[안드로이드] webview 메모리 덤프 평문 노출 이번 글은 회사에서 겪었던 이슈를 정리할 예정이다. 보안팀에서 외주분들과 함께 자사 서비스를 모의해킹 했다. 여러 보안 취약점이 발생했고, 그 중 한 가지인 의도적으로 메모리 덤프 했을 시에 '중요한 정보' 가 Hex(16진수) 코드들 사이에 그대로 평문 노출되는 것을 보안해야 하는 상황이였다. 해당 이슈를 해결하기 위해 찾아보는데, 내가 찾는 케이스가 존재하지 않았다. 우리 UI/UX 개발팀에서 Android native 만 담당하고, WebView 작업은 다른 사업팀에서 관리를 한다. 해당 보안 취약점 이슈를 어느 사업팀에서 처리를 해야 하는지 이야기가 오가는데, 서로 자기 쪽이 아니라고 한다. 정말 아리송하지 않는가..? Android Native 에서 WebView 를 연 뒤, Webview 에서.. 2023. 6. 30.
한 주간 외운 경제 단어 정리 #3 G7 : 선진 7개국 정상회담 - 미국, 일본, 서독, 영국, 프랑스, 이탈리아, 캐나다 G20 : 총 5개 그룹으로 나누어진 국가 1그룹 - 미국, 캐나다, 사우디, 호주 2그룹 - 러시아, 인도, 튀르키예, 남아공 3그룹 - 브라질, 아르헨티나, 멕시코 4그룹 - 영국, 프랑스, 독일, 이탈리아 5그룹 - 한국, 일본, 중국, 인도네시아 SMIC : 주국의 반도체 위탁제조(파운드리) 기업. 중국 최대규모이며, 23년도 1분기 기준 세계 파운드리 시장 점유율 5위의 기업. YMTC : 중국의 메모리 전문 종합 반도체 (IDM) 회사로 플래시 메모리 칩을 전문적으로 생산하며, 중국 기업 최초로 3D NAND 플래시 메모리 적층 기술을 활용한 메모리 양산에 성공하였다. 중국 내에서는 중국의 삼성으로 불리운.. 2023. 6. 25.
[안드로이드 면접] - 24 : 1. 레포지토리(Reopository) 패턴이란? 더보기 데이터의 출처에 관계없이 동일한 인터페이스로 데이터에 접근할 수 있도록 하는 패턴이다. 비즈니스 로직과 데이터 레이어를 분리하기 위해 Data Layer 를 캡슐화 시키는 것이 Repository 패턴의 주된 목적이다. 즉, DataSource 를 캡슐화 한다. 💡 데이터의 출처에 관계없이란? 외부 DB 와 내부 DB 관계없이라고 생각을 하면 될 것 같다. 장점 -> 데이터 로직과 비즈니스 로직을 분리할 수 있다. -> 도메인에서는 일관된 인터페이스를 통해 데이터를 요청할수 있다. -> 객체 간의 결합도가 감소한다. 2. SAA (Single Activity Architecture) 란? 더보기 하나의 액티비티와 여러 개의 프래그먼트로 구성하여 프.. 2023. 3. 1.
[안드로이드 면접] - 23 : 1. Android KTX 란? 더보기 안드로이드 프레임워크와 서포트 라이브러리를 모두 지원하여, 안드로이드를 위한 코틀린 코드를 간결하고 편하게 사용할 수 있게 설계된 확장 라이브러리이다. (Jetpack, AndroidFramework 등등) 2. SurfaceView 와 View 의 차이는? 더보기 View 와 달리, SurfaceView 는 다른 View 들과는 달리 직접 SurfaceView 가 컨텐츠를 표시하지 않는다. 일반적으로 View 를 화면에 표시하기 위해 하나의 메인 스레드에서 처리가 된다. 하지만, 뷰를 표시하기까지 5초 이상이 걸린다면, ANR 이 발생한다. 그런데 우리가 만약 카메라 프리뷰, 즉 실시간으로 화상을 카메라로부터 받아서 1초에 수십 프레임 이상의 속도로 화면을 업데이.. 2023. 3. 1.
[안드로이드 면접] - 22 : 1. 네이비게이션의 3대 컴포넌트는? 더보기 Navigation graph : 네비게이션 에디터를 사용하거나, xml 을 직접 수정함으로써 앱에서 사용할 모든 화면과 연관관계 이동 방법을 정의할 수 있다. Navigation host : 네비게이션 그래프에서 정의한 프래그먼트를 표시하는 컨테이너다. 컨테이너 뷰를 추가하면 된다. Navigation controller : 화면 전환을 수행하는 컨트롤러다. 프래그먼트를 전환하기 위해서는 호스트로부터 컨트롤러 인스턴스를 얻어서 네비게이션을 실행하게 된다. 2. Safe Args 에 대해서 설명하시오. 더보기 네비게이션 라이브러리를 통해 프래그먼트 간의 데이터 통신을 쉽게할 수 있다. 보통 key-value 타입에 번들을 사용한다. 번들은 타입 안정성을 보장하.. 2023. 2. 28.
[안드로이드 면접] - : 21 1. 선언형 프로그래밍과 명령형 프로그래밍의 차이는? 더보기 명령형 프로그래밍은 컴퓨터가 어떻게 행동해야 하는지를 프로그래밍하는 것이고, 선언형 프로그래밍은 컴퓨터가 무엇을 해야할지를 프로그래밍 하는 것이다. 명령형 프로그래밍은 컴퓨터가 어떻게 행동해야할 것인가, 모든 행동을 코드에 짜넣어야 한다. 반면에 선언적 프로그래밍은 이러한 과정이 없다. 그냥 단순하게 무엇을 하지를 명시하기만 하면된다. 따라서, 프로그래밍 공부를 하지 않은 상태에서 생각을 해보면 인간의 사고와 매우 비슷한 방식으로 구동되기 때문에 쉽게 이해할 수 있다. 선언형 프로그래밍은 인간의 사고와 유사하게 하기 위해서 추상화 시켜 프로그래밍이 된 것이다. 실제로는 명령형 구문이 선언형 뒤에서 코드가 실행되고 있다고 생각하면 될 것이다. 2.. 2023. 2. 27.