전체보기 30

Android Manifest에 <queries> 추가하여 패키지 공개 상태 요구사항 선언하기

안드로이드 앱을 사용할 때 다른 안드로이드 앱과 상호작용해야 하는 상황이 있을 수 있다. 하지만 안드로이드 11(API 수준 30)부터는 안드로이드 앱에서 단말에 설치된 다른 앱 목록을 가져올 수 없다. 안드로이드 11 이상의 앱에서 다른 앱과 상호작용해야 한다면, Manifest 파일에 요소를 추가하여 다른 앱을 지정할 수 있다. https://developer.android.com/training/package-visibility/declaring?hl=ko 패키지 공개 상태 요구사항 선언 | Android 개발자 | Android Developers 패키지 공개 상태 요구사항 선언 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱을 만들 때는 앱이 상호작용해야 하는 ..

Android 2023.08.13

Android 난독화(Proguard) 및 디컴파일, 코드 분석

Android 앱은 apk(Android Application Package)로 구성되어있다. Play Store에 AAB(Android App Bundle)로 앱을 등록해도 실제 사용자가 다운로드 받는 앱은 apk 파일이다. apk 파일은 디컴파일을 통해 소스 형태로 되돌릴 수 있으며, 이는 공격자가 소스를 통해 악의적인 행위를 하는 것을 가능케 하기 때문에 앱 배포 시 난독화가 필수이다. 난독화를 위한 다양한 도구들이 있는데, 그 중 Android에서 제공하는 오픈소스 도구인 Proguard로 난독화를 수행한다. Proguard를 통한 난독화 적용 방법 Android Studio에서 build.gradle(Module :app)을 열어 buildTypes를 찾는다. buildTypes { releas..

Android 2023.08.13

Android FCM 알림 샘플앱 개발가이드

2023.08.03 작성완료 안드로이드에서 알림(notification)을 받는 과정 구현 기록. FCM 소개 이미지 출처 및 Firebase 공식 문서 - FCM 아키텍쳐 개요 : https://firebase.google.com/docs/cloud-messaging/fcm-architecture?hl=ko FCM(Firebase Cloud Messaging)은 무료로 메세지를 안정적으로 보낼 수 있는 교차 플랫폼 메시징 솔루션이다. (구글의 메세지 PUSH 메시지 기능으로 GCM(Google Cloud Messaging), FCM(Firebase Cloud Messaging)이 있다. Android와 IOS Mobile만 지원하던 GCM과 달리 FCM은 Mobile Web까지 확장되어 지원한다. 또한..

Android 2023.08.13

[SQL] 서브쿼리(Subquery), with절, case문 등 유용한 문법 활용하기

이 글은 제가 개발을 하며 알게 된 내용, 느낀 점 등을 기록하고자 쓰는 글입니다. '스파르타코딩클럽'의 '엑셀보다 쉬운 SQL' 강의를 듣고 배우고 있습니다. 내용에 대한 반박과 피드백은 늘 감사히 받겠습니다. 서브쿼리(Subquery)란? 서브쿼리(Subquery)는 쿼리 안의 쿼리이다. 하위 쿼리의 결과를 상위 쿼리에서 사용하면, SQL 쿼리가 훨씬 간단해진다. 즉, Subquery를 사용하지 않아도 원하는 데이터를 얻어낼 수 있겠지만, 더 편하고 간단하게 원하는 데이터를 얻기 위해 사용되는 파워풀한 기능이다. Subquery는 With 구문과 함께 사용하면 훨씬 더 효율적으로 사용할 수 있다. Subquery는 where, from, select절에서 유용하게 사용된다. Where절에 사용되는 S..

Database 2023.08.13

[SQL] Join 기능 (left join/inner join)과 Union 기능 활용하기

이 글은 제가 개발을 하며 알게 된 내용, 느낀 점 등을 기록하고자 쓰는 글입니다. '스파르타코딩클럽'의 '엑셀보다 쉬운 SQL' 강의를 듣고 배우고 있습니다. 내용에 대한 반박과 피드백은 늘 감사히 받겠습니다. 여러 테이블을 연결해보자: Join 이란? Join이란? 두 테이블의 공통된 정보 (key값)를 기준으로 테이블을 연결해서 한 테이블처럼 보는 것을 의미한다. 두 테이블의 정보를 연결해서 함께 보고싶을 때 사용한다. 예) user_id 필드를 기준으로 users 테이블과 orders 테이블을 연결해서 한 눈에 보고 싶다. 이 때 users 테이블과 orders 테이블 둘 다 user_id 필드를 갖고 있어야 한다. -> 이런 필드(user_id를 두 테이블을 연결시켜주는 열쇠라는 의미로 'key..

Database 2023.08.13

[SQL] Group by, Order by 기능 활용하기

이 글은 제가 개발을 하며 알게 된 내용, 느낀 점 등을 기록하고자 쓰는 글입니다. '스파르타코딩클럽'의 '엑셀보다 쉬운 SQL' 강의를 듣고 배우고 있습니다. 내용에 대한 반박과 피드백은 늘 감사히 받겠습니다. [수업 목표] 동일한 범주의 데이터를 묶어서 통계를 내주는 Group by를 이해한다. 출력하는 데이터를 필드의 값으로 정렬하여 출력하는 Order by를 익힌다. 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다. 범주의 통계를 내주는 Group by Group by는? 동일한 범주를 갖는 데이터를 하나로 묶어서, 범주별 통계를 내주는 것 select 필드명, count(*) from 테이블명 group by 필드명; ex) 성씨별로 몇 명의 회원이 있는지 알아보자. select..

Database 2023.08.13

[SQL] 데이터베이스(DB), SQL이란? Select문과 where문 이해하기

이 글은 제가 개발을 하며 알게 된 내용, 느낀 점 등을 기록하고자 쓰는 글입니다. '스파르타코딩클럽'의 '엑셀보다 쉬운 SQL' 강의를 듣고 배우고 있습니다. 내용에 대한 반박과 피드백은 늘 감사히 받겠습니다. [수업 목표] 데이터베이스(DB)와 SQL이 왜 필요한가? DB에서 데이터를 가져오는 기초적인 문법인 select와 where문 이해하기 자주 사용되는 유용한 문법 익히기 1. 데이터베이스와 SQL이 왜 필요한가? 데이터가 적으면 혼자 엑셀 시트에 정리하는 것이 어렵지 않을 것이다. 하지만 데이터가 많아지면 엑셀 시트가 느려지고, 데이터가 복잡해져 알아보기 힘들것이다. 그래서 사용하는 것이 데이터베이스! 데이터베이스는에 모든 데이터를 정리하면 다음과 같은 장점이 있다. 1) 필요한 데이터만 불러..

Database 2023.08.13

[리버싱 핵심 원리] 20장 온라인 패치 실습

20.1 인라인 패치 인라인 코드 패치 (혹은 인라인 패치) 기법이란? 원하는 코드를 직접 수정하기 어려울 때 간단히 코드 케이브라고 하는 패치코드를 삽입한 후 실행해 프로그램을 패치시키는 기법이다. 주로 대상 프로그램이 실행 압축(혹은 암호화)되어 있어서 파일을 직접 수정하기 어려운 경우 많이 사용된다. ㄴ그림 20.1 인라인 코드 패치 위 그림처럼 EP 코드의 복호화 과정 이후 JMP 명령어를 수정하여 패치코드로 가서 실행시킨 후 OEP로 가는 식이다. 그래서 인라인 패치는 코드 패치와는 사뭇 다르다. 인라인 패치는 프로그램이 실행될 때마다 패치된다. 그리고 코드 패치와 다르게 파일과 메모리 모두를 패치하고, 원하는 위치에 직접 패치하는 것이 아닌 Indirect(패치 코드를 미리 설치한 후 메모리에..

보안 2023.08.13

메타버스와 NFT에 대한 내 생각

메타버스가 한창 뜨던 2021년도에 썼던 글을 재업로드합니다. 현재 2023년도와 맞지 않는 트렌드일 수 있습니다. 메타버스(Metaverse)란? 메타버스 또는 확장 가상 세계는 가상, 초월 의미인 '메타'와 세계, 우주 의미인 '유니버스'를 합성한 신조어다. 3차원 가상 세계를 뜻한다. 요즘 메타버스가 굉장히 핫하다. 코로나 때문에 비대면 활동이 뜬 덕인지, '가상세계'라는 아이템이 주목받고 있다. 메타버스의 가장 대표적인 예시로는 로블록스, 제페토, 동물의 숲, 포트나이트 등이 있다. 특히 해외에서 로블록스가 엄청나게 뜨면서 메타버스가 급부상했다. 해외에서는 메타버스=로블록스라고 받아들이는 사람이 있을 정도로 로블록스가 유명하다고 한다. 로블록스, 왜 뜬 것일까? 로블록스가 유명해지고, 주가가 치솟..

주절주절 2023.08.13

자주 쓰는 Git 명령어 정리

Git과 Github(또는 Gitlab)의 차이 Git(깃) : 프로젝트의 버전관리를 하기 위해 사용하는 프로그램 Github(깃허브), Gitlab(깃랩) 등 : 깃 기반의 저장소 서비스(약간 클라우드같은 개념?) it 쌩초보였을 시절엔 깃이랑 깃허브가 같은건줄 알았다. 그 후에는 깃허브는 어떤 사이트구나, 그럼 깃은 정확히 뭐지? 했었고...그래서 확실히 정리하고 넘어가고자 한다. 깃은 중간중간 코드를 저장하고, 이전 코드로 돌아가고 싶으면 돌아갈 수 있도록(또는 꺼내 쓸 수 있도록) 도와주는 버전관리 프로그램이다. 깃 덕분에 요즘엔 ui를 구현하다가 마음에 안들면 일단 현재 버전을 저장해놓고(이를 커밋한다고 한다.) 이전 버전으로 돌아가서 다시 수정하곤 한다. 깃을 알기 전과 안 후의 생활이 확 바..

Git 2023.08.13