DIP(Dependency Inversion Principle)의 줄임말로 의존 역전 원칙이라는 뜻이다.이 원칙은 고수준 모듈이 저수준 모듈에 의존하는 것이 아닌, 저수준 모듈이 고수준 모듈에 의존하게 해야한다는 것이다.고수준 모듈이란, 어떠한 의미 있는 단일 기능을 제공하는 모듈이다.저수준 모듈이란, 고수준 모듈의 기능을 구현하기 위해 필요한 기능들을 구현한 모듈이다. 이 DIP 원칙을 다시 말하자면, 사용자가 상속 관계로 이뤄진 모듈을 사용할 때 하위 모듈을 직접 인스턴스하여 쓰지 말라는 것이다. 이 경우 사용자는 하위 모듈을 사용하는 것 기준으로 짜여져있기 때문에 하위 모듈의 내용에 변화가 생길 경우 사용자의 코드나 상위 모듈의 코드를 수정하게 되기 때문이다. 그래서 여러 코드들을 보면 사용자가 접..
객체지향 프로그래밍 (Object-Oriented Programming)은 프로그램 설계방법론의 일종으로, 명령형 프로그래밍에 속한다. 프로그램을 객체 단위로 나누어 상호작용을 서술하는 방식이다. 다음과 같은 예시가 있다고 가정하자fun main() { Cloth("헤비웨이트 반팔 티셔츠", "이너 웨어", "L").description() OuterWear("오버핏 가디건", "아우터 웨어", "XL", 34500, "가디건").also { it.description() it.price() } output(Cloth("헤비웨이트 반팔 티셔츠", "이너 웨어", "L")) output(OuterWear("오버핏 가디건", "아우터 웨어", "XL", 3..
테스트 중인 대쉬보드앱의 플로우는 다음과 같다. 로고 스플래쉬 UI 로그인 UI 회원가입 UI 메인 UI 프로필 UI 로그인 시스템을 Firebase Auth를 사용해 구현하였다. 물론 Firebase Auth- Google Cloud를 사용해 유저 정보를 관리하는 것은 Google에 매우 의존적이므로 기업이 사용하기엔 좋지 못한 점이 많으리라 생각되지만 개인이 테스트용, 가볍게 다룰 프로젝트에 적합하다고 생각했기에 이를 통해 구현하였다. Firebase & Auth - Androidstudio에 관하여선 인터넷에 많은 자료들이 존재하기 때문에 넘어가겠다. https://firebase.google.com/docs/auth/android/google-signin?hl=ko Android에서 Google로..
이전글 : https://small-stepping.tistory.com/603 날씨 앱 기록 02 이전글 : https://small-stepping.tistory.com/596 날씨 앱 기록 01 https://small-stepping.tistory.com/586 다시 개발 중... 다시 앱쪽을 만질 때가 됐다, 더 손 놓고 있으면 기억 하나도 안나겠다 싶어서 기초를 다시 잡 small-stepping.tistory.com 중간에 절취선처럼 잘리는 건 캡처 문제다. 스크롤 캡처를 하니 저렇게 화면이 이상하게 나온다. 신기하게도 글을 작성하는 23.10.20 오후 9시 20분경 중기 예보 데이터가 이상하다. 앱 자체 에러가 아니라 기상청 api 들어가서 제대로 데이터 하나하나 수기로 넣어봐도 데이터가..
1. 트라이 자료구조란? 문자열의 집합을 표현하는 트리 자료구조. 원하는 원소를 찾기 위해 자주 이용되는 이진 검색들은 원소를 찾는데 O(logN)의 시간이 걸린다. 문자열의 길이가 길수록 더욱 오래 걸리게 되고, 원하는 문자열을 찾는데 O(MlogN)의 시간이 걸리게 될 것이다. 이는 반복수행하게 된다면 더더욱 오래 걸리게 된다. 이를 해결한 것이 문자열 특화 자료구조, 트라이(Trie)이다. 문자열을 빠르게 탐색할 수 있는 자료구조 트라이 자료구조의 시간복잡도는 다음과 같다. 제일 긴 문자열을 L, 총 문자열의 수를 M이라고 할 때 생성시 시간 복잡도는 O(M*L)이다. 탐색시 시간복잡도는 O(L)이다. 2. 작동 원리 트라이는 집합에 포함된 문자열의 접두사들에 대응되는 노드들이 서로 연결된 트리이다..
이전글 : https://small-stepping.tistory.com/596 날씨 앱 기록 01 https://small-stepping.tistory.com/586 다시 개발 중... 다시 앱쪽을 만질 때가 됐다, 더 손 놓고 있으면 기억 하나도 안나겠다 싶어서 기초를 다시 잡고자 간단하게 포트폴리오, 튜토리얼 강좌 등으로 많 small-stepping.tistory.com 다음글 : https://small-stepping.tistory.com/610 날씨 앱 기록 03 이전글 : https://small-stepping.tistory.com/603 날씨 앱 기록 02 이전글 : https://small-stepping.tistory.com/596 날씨 앱 기록 01 https://small-st..
1. 플로이드 워셜(Floyd-Warshall) 이 알고리즘은 동적 계획법의 한 예로, 로버트 플로이드가 1962년에 현재 알려진 형태로 발표했다고 한다. 하지만 본질적으로는 1956년 클레이니 알고리즘, 1959년 버나드 로이의 알고리즘, 1962년 스티븐 워셜 알고리즘과 밀접한 관련이 있다. 따라서 이 알고리즘은 플로이드-워셜 알고리즘, 로이-워셜 알고리즘, 로이-플로이드 알고리즘, 또는 WFI 알고리즘으로 불린다고 한다. 플로이드 워셜 알고리즘은 "모든 최단 경로를 구하는 알고리즘"이다. 한 번 실행하여 모든 노드 간 최단 경로를 구할 수 있다. 그러나 플로이드 워셜 알고리즘의 시간 복잡도는 O(n^3)이다. 즉, 그래프의 크기가 작아 세제곱 시간 알고리즘을 적용해도 문제가 풀리는 경우에만 사용이 ..
다음글 : https://small-stepping.tistory.com/603 날씨 앱 기록 02 이전글 : https://small-stepping.tistory.com/596 1. 시간대 별로 배경 색과 박스 색이 다르다. (morning, afternoon, evening, night) - 너무 많아서 오히려 번잡하게 느껴지나 싶어서 2개로 추릴까 생각 중이다. 2. swipe small-stepping.tistory.com https://small-stepping.tistory.com/586 다시 개발 중... 다시 앱쪽을 만질 때가 됐다, 더 손 놓고 있으면 기억 하나도 안나겠다 싶어서 기초를 다시 잡고자 간단하게 포트폴리오, 튜토리얼 강좌 등으로 많이 쓰이는 공공데이터 API를 사용한 앱 개..
다시 안드로이드 스튜디오를 만지면서 다음과 같은 권고 사항을 발견하게 되었다. 내가 쓰려는 room 라이브러리는 KSP 지원되기 때문에 kapt보다 KSP를 쓰는게 더 성능이 좋을 것이라는 듯 하다. https://developer.android.com/studio/build/migrate-to-ksp?hl=ko#kts kapt에서 KSP로 이전 | Android 개발자 | Android Developers 주석 프로세서의 사용을 kapt에서 KSP로 이전합니다. developer.android.com kapt에서 KSP로 바꾸는 방법에 대해서는 위 링크에 자세히 나와있다. KSP 지원에 사용하는 라이브러리 확인 프로젝트에 KSP 플러그인 추가 주석 프로세서를 KSP로 대체 kapt 플러그인 삭제 우선 ..