전체 글
-
총무앱 - 개발사이드 프로젝트/이기적인 총무 2017. 5. 14. 18:22
구현할 기능 자체가 단순하고 잉여력 측정기 개발 할 때 다양한 기능들을 경험해봐서 그런지 개발을 빠르게 진행 할 수 있었다. 현재 총무앱에 필요한 기본 기능들은 모두 구현이 완료됐다. 각 기능별로 어떻게 구현했는지 간단히 정리하려고 한다. - 모임/결제 데이터베이스 관리 잉여력측정기에서 애플리케이션 데이터베이스를 만드는 것을 한 번 경험해봐서 데이터베이스 기본 동작을 쉽게 구현 할 수 있었다. 테이블은 크게 모임 테이블과 결제 내역 테이블 두개를 생성해서 관리한다. 모임테이블은 Party Table, 결제내역 테이블은 Pay Table로 관리한다. 굵은 글씨로 표시한 것은 각 테이블의 primary key이다. 붉은색으로 표시한 pay_party_id는 외래키인데, 결제 내역은 항상 특정 모임에 포함되는..
-
총무앱 - 기획사이드 프로젝트/이기적인 총무 2017. 5. 5. 16:59
필자는 모임에서 주로 총무를 도맡아(떠밀려서) 하는 편인데 그때마다 거래내역 영수증 챙기고 구글 Keep에 거래내역과 금액 써둬가며 관리를 한다. 하지만 이렇게 관리를 하면 나중에 결산 할 때 불편한 점이 영수증은 지갑에서 구겨져 형체를 알아 볼 수 없게 되어 있고, 구글 Keep에 써둔 결제 내역을 계산기 애플리케이션으로 옮기자니 애플리케이션을 계속 여러번 왔다갔다 해야하는 불편함이 있다. 게다가 옮기는 도중에 거래 금액을 한 번 잘못 쓰거나 계산기 글자수 초과가 나버리면 처음부터 다시 입력해야하는 삽질도 있으니 은근히 시간도 많이 잡아먹고 짜증나는 작업이다. 그래서 날 위해(혹여나 나처럼 돈계산으로 스트레스받는 사람들을 위해) 모임 돈계산을 도와주는 총무앱을 만들어 보기로 했다. 이미 시중에 총무앱이..
-
잉여력측정기 -개발 중단사이드 프로젝트 2017. 4. 24. 22:03
이 프로젝트를 처음 시작 할 때 구글이 보안상의 문제로 기존에 있던 프로세스 관련 함수들을 모조리 없애서 핵심 기능을 구현 할 때 힘들었었다. 다행히 여러 오픈소스 프로젝트에서 이런 구글의 보안 정책들을 피해 프로세스 정보들을 추출 할 수 있게 해주어서 애플리케이션의 실행 유무를 확인 할 수 있도록 만들어 왔는데, 최신 안드로이드 OS 누가(Nougat) 에서는 아예 (/proc) 디렉토리의 권한을 바꿔버려 일반 프로세스가 접근하는 것조차 막아버렸다. 이젠 시스템 애플리케이션이 아니면 프로세스 정보 읽을 때 자신의 프로세스 정보 밖에 볼 수가 없다. 다른 애플리케이션의 실행 유무도 알 수 없고 커널에 백그라운드로 돌아가는 앱도 알 수 없다. 이렇게 되면 이 프로젝트의 가장 중요한 기능인 다른 애플리케이션..
-
SW 역량테스트 기출 문제집 분석알고리즘/acmicpc 2017. 4. 21. 20:12
백준 온라인 저지에서 삼성 SW 역량테스트 기출 문제집을 발견 했다. 분명히 시험시간에 감독관이 외부에 유출하지 말라고(말아달라고) 했을 텐데 싸트 문제처럼 이것도 외부 유출은 막을 수 없나 보다. 재미 삼아 여기 있는 문제들을 한 번 풀어 봤는데 문제들이 공통적으로 뚜렷한 경향이 있었다. 이번 포스트에서는 (문제집에 올라온 기출 문제들이 모두 사실이라는 전제 하에) 기출 문제를 분석하고 취준생 입장에서 어떻게 준비하는 것이 좋을 지를 정리 해봤다. 기출 문제 분석 1. 시뮬레이션 문제가 대부분 대부분의 문제들이 고급 알고리즘 없이도 풀 수 있다. 여기서 고급 알고리즘은 다익스트라나 최소 스패닝 트리 같이 대학교 알고리즘 강의에서 배우는 내용들을 말한다. 물론 기출로 나온 문제들을 고급 알고리즘을 적용한..
-
10422알고리즘/acmicpc 2017. 4. 5. 23:03
문제를 보자마자 DP를 써야 한다는건 직감했는데 식을 어떻게 세워야 할지 쉽게 감이 오지 않았다. 가장 직감적으로 들었던 식은 이렇다. 문자열의 길이가 K인 경우의 식은 아래와 같이 구할 수 있다고 생각했다. 1. dp[K] = dp[K-2] 2. dp[K] += dp[2]*dp[K-2] + dp[4]*dp[K-4] + ... dp[K-2]*dp[2] 이미 괄호의 개수가 정해진 K-2개의 문자열에 괄호를 끼운다고 생각하면 반드시 올바른 괄호가 되므로 1번 식은 성립한다. 2번 식은 나머지 경우들을 처리하는 식인데, K개의 괄호식을 만든다고 생각할 때 앞부분에 해당하는 괄호의 경우의 수 와 뒷부분에 해당하는 괄호의 경우의 수를 곱해주면 길이가 K인 문자열을 구할 수 있다고 생각했다. 하지만 위의 식은 중복..
-
잉여력 측정기 -개발(2/2)사이드 프로젝트 2017. 3. 30. 22:31
잉여력 측정기 개발 두 번째 이야기다. 핵심적인 기능들은 첫번째 포스트에서 만들어 뒀고 이번 포스트에서 설명할 내용들은 필요한 기능들이나 많이 어렵지는 않았던 내용들이다. 현재 구현한 사항들은 안드로이드 버전이 올라가면서 없어지던 기능이 없었다(아주 당연한 일이지만). 스택 오버플로우와 옛날 학교에서 프로젝트 했던 경험을 살려서 빠르게 구현 할 수 있었다. 1. App 실행 횟수 저장할 데이터베이스 구축 데이터베이스를 구축 해보는 것이 너무 오랜만이라 스키마의 기본적인 개념도 까먹었다(튜플이랑 key가 왜이렇게 생소하게 느껴지는 건지) 사실 여기서 구현할 데이터베이스 형태는 정말 단순한 것인데도 허둥 지둥 했다. 기억력 복원 작업을 한 두 시간정도 하고 나서 스키마를 짜고 Android SQLite Tu..
-
잉여력 측정기 -개발(1/2)사이드 프로젝트 2017. 3. 26. 16:29
옛날 안드로이드 애플리케이션 개발 경험 상으로 요구 사항들을 구현하는 것이 별거 아닐 거라고 생각했는데... 왜 안드로이드는 시간이 흐르면서 계속 지원하지 않는 기능들이 많아지는 건지...! 스택 오버플로우에 있는 가이드 내용을 따라 가려고 하니 되는 것이 하나도 없고, 구현에 가장 핵심적인 API함수가 갑자기 depracated로 떠서 어떻게 구현해야 할 지 난감했었다. 다행히 깃허브에서 구해낸 소스와 여기저기 뒤져가면서 코드를 구현해 기획단계에서 만들어둔 요구사항들은 일단 구현을 해냈다. 이번 포스트에서는 개발과정에서 어떤 어려움이 있었고 어떻게 해결했는지를 정리해보려고 한다. 1. 실행되는 애플리케이션 목록 가져오기. 잉여력 측정기 애플리케이션 내에서 실행되고 있는 애플리케이션을 알아 낼 수 있어야..
-
잉여력 측정기 -기획사이드 프로젝트 2017. 3. 26. 15:06
여느때처럼 회사 화장실 좌변식 칸에 들어가 생리 현상 해결 겸 머리를 식히기 위해 다음 앱을 실행하다가 문득 이런 생각이 들었다. '나는 하루에 다음 앱을 몇 번이나 켰을까?' 거의 매번 화장실 갈 때마다 실행 했을 것이고, 밥 먹으러 가는 도중이나 친구를 기다리는 와중에도 뉴스를 확인 하러 들어갔었다. 회의가 너무 길어져 따분해질 때나 코딩이 너무 힘들 때도 눌러 봤고 아침에 일어 나자마자 세상에 별 일이 없는지 확인 할 때도 눌러 봤으니 이 모든 걸 다 합하면 대략 하루에 20-30회는 넘게 실행했지 않았을까 하는 생각이 들었다. 그러면 난 스마트폰을 하루에 총 몇 번이나 실행 했을까? 다음 앱 실행횟수만 봐도 20-30회는 넘을텐데 그렇다면 자는 시간을 포함해서 거의 한 시간에 한 번 꼴로 나는 스..