본문 바로가기

전체 글

(86)
Compose MVI를 적용하면서.. 회사에서 Compose를 사용한 프로젝트를 진행 중이다. 선언형 프로그래밍도 어색하지만, 무엇보다 MVI 아키텍쳐와 Flow가 생각보다 어려워서 난항 아닌 난항을 겪고 있다(ㅠㅠ) 확실히 Compose 프로젝트를 진행하는 사람들 사이에서 언급되는 단점 중 아래 두가지가 생각보다 많이 거슬린다. 보일러플레이트 코드가 양산 작은 변경도 Intent로 처리 TextField를 함수로 만들어 여러번 재사용을 하는데, 이것때문에 보일러플레이트 코드가 장난아니게 양산되고 있고, 사소한 변경도 무조건 함수로 처리하니 "굳이 이래야하나...?"라는 생각이 머리속을 떠나지 않는다ㅠㅠ 그러던 중, Orbit에 대해서 주워듣게 되었고, 최근에 쪼금씩 살펴보는 중이다. 조만간 Compose와 Orbit 글로 다시 돌아오겠다.
Permission Check (권한 요청) 들어가며..안드로이드 개발을 하다보면 권한 요청이 사소하게 성가시다.반드시 필요하지만, 손볼 일이 많지 않다보니 작성해야하는 순간이 오면 헷갈리기 쉽상이었다.물론 구글링으로 다른 뛰어난 분들의 코드를 쉽게 접할 수 있고, 최근에는 gpt의 도움을 받을 수도 있겠지만, 일단 내 코드 스타일과 맞는 걸 찾기는 어려웠다.그래서 나중에 내가 사용할 목적으로 기록해 둔다.검증 없이 작성된 코드이므로 문제가 발생 할 수 있다.발생한 문제는 공유해주면 같이 해결해보도록 최대한 노력하겠다. 언제든지 피드백은 환영이다. 최종 수정일: 2024.01.18Permission Check우선, Manifest에 필요한 권한들을 등록해 준다. 본인은 인터넷 접근, 알림, 카메라, 위치 정보, 저장소의 이미지 읽기 권한, 포..
힙(Heap) 🥪🥅목표우선 순위 큐를 위하여 만들어진 자료구조, 힙(Heap)에 대해 이해한다.배열을 사용하여 힙(Heap)을 구현할 수 있다.힙(Heap)의 삽입과 삭제를 이해한다. 🤔시작 전…우선순위 큐(Priority-Queue)란?데이터틀이 우선순위를 가지고 있고, 우선순위가 높은 데이터가 먼저 나간다.자료구조삭제되는 요소스택(Stack)가장 최근에 추가된 데이터큐(Queue)가장 먼저 들어온 데이터우선순위 힙(Priority-Queue)가장 우선순위가 높은 데이터우선순위 큐는 배열, 연결리스트, 힙으로 구현이 가능하다. 이 중에서 힙(Heap)으로 구현하는 것이 가장 효율적이다.표삽입삭제순서 없는 배열O(1)O(n)순서 없는 연결 리스트O(1)O(n)정렬된 배열O(n)O(1)정렬된 연결리스트O(n)O(1)힙O..
스택(Stack) 🥪Stack목표스택(Stack)의 기본 연산을 이해한다.Kotlin과 Python으로 Stack을 구현할 수 있다.📖개념한쪽 끝에서만 자료를 넣고 뺼 수 있는 LIFO(Last In First Out) 형식의 자료구조🧮연산스택(Stack)은 LIFO를 따른다. 즉, 가장 최근에 스택에 추가한 항목이 가장 먼저 제거될 항목이다.pop(): 스택에서 가장 위에 있는 항목을 제거한다.push(item): item 하나를 스택의 가장 윗 부분에 추가한다.peek(): 스택의 가장 위에 있는 항목을 반환한다.isEmpyty(): 스택이 비어있을 때 true를 반환한다. ⚒️구현문제의 종류에 따라 배열보다 스택에 데이터를 저장하는 것이 더 적합한 방법일 수 있다.배열과 달리 스택은 상수시간(O(1)에 i번째 항목에..
큐(Queue) 🥪🥅목표큐(Queue)의 기본 연산을 이해한다.Kotlin과 Python으로 Queue를 구현할 수 있다.📖개념컴퓨터의 기본적인 자료구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식이다. 🧮연산큐(Queue)는 FIFO(First-In-First-Out)을 따른다.add(item) : item을 리스트의 끝부분에 추가한다.remove(): 리스트의 첫 번째 항목을 제거한다.peek(): 큐에서 가장 위에 있는 항목을 반환한다.isEmpty(): 큐가 비어있을 때에 true를 반환한다. ⚒️구현Kotlin으로 구현한 큐 예시 코드는 아래와 같다.class Queue { private val items = mutableListOf() fu..
Moshi Converter 최신화: 2023.10.23 ‣ Intro: Moshi? 데이터를 다른 종점으로 전송하기 전, 통신이 가능하면서 나중에 재구성이 가능한 포맷으로 변환해줘야한다. 이런 포맷 변환을 직렬화라하며, 변환 포맷중 가장 많이 사용되는 것이 JSON이다. 반대로, 직렬화된 파일을 다시 객체 형태로 변환하는 과정을 역직렬화라 한다. Moshi는 Square에서 만든 라이브러리로, JSON과 객체 사이의 직렬화(Serialization) / 역직열화(Deserialization)를 쉽고 안전하게 작업할 수 있도록 서포팅하는 라이브러리로, 리플랙션과 Codegen 방식의 변환을 모두 지원한다. 또한, Gson이 가지는 일부 한계점과 문제점을 개선하려는 목적으로 만들어진 만큼, 다음과 같은 장점들을 가진다. 성능 Mosh..
한 3주 넘모 바빠서 글을 못썻넹 Jetpack -> Compose 순으로 안드로이드 관련 글 정리 끝내고 이제 Flutter 공부 시작하면서 관련 글 작성해 보도록 하겠습니당
[Python] heapq: min heap & max heap 파이썬 Heapheapq 모듈을 사용해서 최소 힙과 최대 힙을 간단하게 구현 가능.import heapq자주 쓰이는 메소드로는 heapify(), heappush(), heappop()가 있다.heapify(heap): heap 불변성을 유지하면서 heap내부 item 값들을 min heap으로 바꿔준다.heappush(heap, item): heap 불변성을 유지하며 item 값을 heap으로 push해 준다.heappop(heap): heap 불변성을 유지하면서 heap에서 가장 작은 항목을 pop하고 반환해주는 메소드이다.heappop 메소드를 사용할 때, heap이 비어있으면 indexError가 발생한다. 사용법Min heap(최소 힙)import heapq # 1️⃣ heapify()로 min..