전체 글 (41) 썸네일형 리스트형 [Architecture] 안드로이드가 권장하는 앱 아키텍처 개발자 모집공고를 보면 'MVVM 아키텍처'라는 단어를 쉽게 찾아볼 수 있다. 아키텍처는 시스템을 구성하는 서브 시스템, 컴포넌트와 같은 구성요소 간의 관계를 관리하는 시스템 구조이고, MVVM은 아키텍처의 한 기법으로 Model, View, ViewModel의 줄임말이다. 하나의 소프트웨어를 최대한 기능적으로 작은 단위로 나누어(이를 관심사 분리라 한다.) 테스트가 쉽고 큰 프로젝트도 상대적으로 관리하기 쉬워진다. 라는 것이 간단한 검색을 통해 얻은 사전적 지식이다. 이렇게 좋은 SW 설계 기법이지만 나는 아키텍처를 잘 모른다. 이번에 뉴스 앱을 따라 만들어 보면서 다음의 대략적인 '흐름'만 느낄 수 있었을 뿐이다. View에서 상호작용(예: 버튼 누름) 발생 - ViewModel이 Model에게 변동.. [Android] Layout 속성 설정할 때 조심할 것 이미지를 보면 앱 화면 상단에 빈 공간이 잡히는 걸 볼 수 있다. RecyclerView로 item들을 띄우는 fragment의 미리보기에서는 저런 공간이 없는데도 activity_main 레이아웃으로 들어오면 저 모양이다. 저걸 없애고자 3시간 가량 구글링 하고 있던 찰나에 이미지 뷰가 전체화면으로 출력되지 않는다고 도와달라는 글에서 adjustViewBound 속성을 제거하라는 대답을 볼 수 있었다. 순간 나도 속성값 잘못 준거 아닌가?! 라는 생각에 서둘러 activity_main으로 향했고, 아니나 다를까 paddingTop 속성에 액션바 만큼의 사이즈를 value로 설정해두었다. paddingTop 속성을 지우자 빈 공간이 사라졌다. 아까운 내 시간.. 해서 무작정 코드를 적지말자는 취지에서 이.. [Android] 뉴스 앱 만들어 본 후기 뉴스 앱을 만들게 된 계기는 원티드(Wanted)에서 진행하는 프리온 보딩(preonboarding) Android에 지원하기 위해서였다. 2주간의 기간 동안, 주어진 조건의 뉴스 앱을 만들어야 했는데 뚜껑을 열어보니 기간을 맞추지 못 할 것 같았다. 당장에 API 사용법 조차 몰라서 적용해보지도 못한 상황이었으니 어쩔 수 없었다. 그래서 인터넷에 올라오는 각종 예제들을 살펴보면서 공부해보자 라는 생각으로 시작했다. 다행히 많은 예제들이 GitHub에 올라와 있었고, 그중 하나를 골라 하나하나 뜯어봤다. 나는 여러 개의 Activity를 만들어 놓고 intent를 통해서 데이터 담고 Activity끼리 주고받을 줄만 알았지 data class, Factory / Resource Manage(?) 패턴, .. [백준 15649] N과 M (1) - JAVA 문제 링크 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 백트래킹(Backtracking) 영단어 그대로 해석해서 '역추적'으로 이해해도 됩니다. 백트래킹(Backtracking)이란 유망성이 존재하는 노드들에 대해서 알고리즘을 적용하는 기법으로, 만일 유망성이 존재하지 않는다면 부모 노드로 돌아가 다른 자식 노드를 찾는 방법입니다. 따라서 재귀(Recursion )로 구현할 수 있습니다. 모든 경우의 수를 탐색하는 브루트포스(Br.. [백준 1269] 대칭 차집합 - JAVA 1. 문제 해석 문제에 따르면 A 집합과 B 집합이 다음과 같은 형태로 존재할 때 이들의 대칭 차집합은 아래와 같습니다. 위와 같은 형태로 집합을 구하고, 그 집합의 원소의 개수를 구하면 되는 간단한 문제입니다. Bit-string으로 표현되는 Set을 이용하기로 했습니다. Set을 Bit-string으로 표현하면 전체 집합의 크기가 N일 때, 각 집합을 N bit로 표현하고, 원소가 집합에 포함되어 있으면 해당 bit를 1로, 그렇지 않으면 0으로 표현하게 됩니다. 예를 들어서 10bit로 집합 A = {1, 3, 5, 7, 9}를 표현하면 아래와 같습니다. 어떤 원소가 집합 A에 속하는지 확인할 때는 value가 1인지 아닌지만 확인하면 되고 원소의 삽입과 삭제는 해당 bit를 1 또는 0으로 설정하.. [Android] Activity 수명 주기(LifeCycle) 사용자의 사용에 따라서 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환됩니다. 앱을 종료, 탐색, 새로운 Activity 생성 등의 상태가 이에 해당합니다. 유튜브 통해서 동영상을 시청하고 있는 사용자가 있습니다. 사용자는 홈버튼을 눌러 앱을 잠시 벗어나게 된다면 네트워크 연결을 종료하고 동영상 재생을 멈춥니다. 그리고 유튜브를 다시 실행하면 네트워크를 재연결해서 일시 정지된 부분부터 영상이 재생되도록 할 수 있습니다. 즉, 각각의 상태에서 취해야 하는 행동을 정의함으로써 앱의 안정성에 기여합니다. Activity 수명 주기(LifeCycle) 개념 활동 클래스는 원활한 Activity 전환을 위해서 onCreate(), onStart(), onResume(), onPaus.. [Android] Android studio Arctic Fox 버전 이후 build.gradle 수정하기 안드로이드 스튜디오를 올해 초에 다운로드 받아서 공부하기 시작했습니다. 공부를 하면서 추가 라이브러리가 필요한 경우가 많았고, 프로젝트 단위와 애플리케이션 단위의 build.gradle에 코드를 추가해야 했습니다. 이때 프로젝트 단위의 build.gradle에 아래와 같은 유형의 코드를 추가하면 오류가 발생하곤 했습니다. buildscript { repositories { google() // Google's Maven repository } dependencies { classpath 'com.google.gms:google-services:4.3.10' } } ... allprojects { repositories { google() mavenCentral() maven { url "https://j.. [Pascal] 학생 정보 관리(Student Info Manage) 학교 과제로 학생 정보를 관리해주는 Program을 만들었습니다. 노트북에만 내버려두기에 너무 아쉬워서 블로그에 남겨보려 합니다. :D 1. Program 요구사항 여러 학생의 과목별 점수를 입력하고, 이를 합산하여 Sorting 하는 Pascal program을 작성하라. 한 학생의 data는 학번, 이름, 과목별 성적(3개 이상)으로 하라. Quick sorting algorithm을 이용하라. Sub program을 두 개 이상 정의하여 작성하라. EOF, EOLN을 이용하여, 임의의 학생수 및 과목수에 대해 처리할 수 있도록 하라.(확장성이 좋도록 작성하라) 2. Program code 개요 1) Main program 사용자에게 보여줄 interface를 출력해주고, 사용자의 입력에 따라 각 기.. 이전 1 2 3 4 5 6 다음 목록 더보기