사이드 프로젝트
-
애드핏 광고 등록사이드 프로젝트/이기적인 총무 2020. 11. 24. 14:25
옛날에는 구글 애드센스로만 광고를 넣을 수 있었는데 요새는 Dable, Tenting 처럼 다양한 플랫폼에서도 블로그나 앱에 광고를 넣을 수 있게됐다. 그중 주변에 나랑 비슷하게 사이드 프로젝트를 진행중이신 분들이 카카오의 애드핏을 많이 추천하셔서 나도 내가 옛날에 열심히 만든 이기적인 총무애 애드핏으로 광고를 넣어봤다. 훌륭한 개발자가 많은 회사라 그런지(?) 넣는 과정은 어렵지 않고 깔끔했는데 이번 포스트에선 애드핏으로 Android 앱 광고를 넣는 방법을 소개해보려고 한다. 1. 애드핏 라이브러리 임포트 애드핏에선 안드로이드에 광고를 넣기 위한 별도의 라이브러리를 만들어줬다. 이 라인들을 추가해서 새로운 라이브러리를 임포트하자. // app 단위 build.gradle + implementation..
-
구조설계서 작성 후기 - 구조 검토가 우선사이드 프로젝트/이기적인 총무 2018. 4. 6. 21:56
총 네번의 포스트로 작성한 구조 설계서의 원본 파일을 드.디.어 깃허브에 업로드했다 -> 링크. 이 포스트를 몇 분이나 읽고 계실지는 모르겠는데 관심 있으신 분들은 얼마든지 환영이다(욕설만 하지 않는다면 태클도 받는다) 아직 채워야할 내용도 있을 뿐만 아니라 문장이 깔끔하지 않고 오타도 있는 부실한 문서지만 본래 소프트웨어 개발자는 선 릴리즈 후수정이 원칙이고(응?) 난 지금 마무리 포스트를 쓰고 싶은 관계로 일단은 올렸다. 한 달 후의 내가 꼭 수정 하기를 바란다. 혹시나 독자가 생긴다면 더 일찍 하게 될 지도 모르겠다. 처음 이기적인 총무의 구조설계서를 작성하기로 할 때는 열정이 가득차 있었던 것 같다. 한달 간의 회사 교육 프로그램을 통해 구조설계의 중요성을 뼈저리게 배웠고 심화해서 공부해보고자 교..
-
컴포넌트 사양 - 구조설계서 작성(4/4)사이드 프로젝트/이기적인 총무 2018. 3. 24. 12:33
시스템구조에서 소프트웨어의 전반 구조를 추상적으로 정리 했다면 컴포넌트 사양에서는 전반 구조를 구체적으로 채우는 작업을 하게 된다. 앞선 작업에서는 클래스의 이름과 역할을 간단히 소개하고 속성(Attribute)와 동작(Operation) 칸은 비워 두었다면 지금부터는 직접 코드 상에서 구현하게 될 클래스의 함수의 이름과 속성을 명시하고 각각의 사용 목적, 기능을 설명해야 한다. 함수 내부 코드만 없을 뿐 헤더 파일에 전역 변수 명과 함수를 선언하는 것과 동일 하다. 클래스 내부 속성을 구체적으로 작성하고 난 후에는 각 클래스들의 시스템 동작하는 형태 결정한다. 여기서 말하는 '동작 형태'란 프로세스, 쓰레드 또는 핸드러와 같이 시스템 상에서 특정 작업을 수행하는 주체의 종류를 말한다. 다소 전문적인 용..
-
시스템 구조 - 구조설계서 작성(3/4)사이드 프로젝트/이기적인 총무 2018. 3. 12. 23:16
소프트웨어 구조설계서 작성 과정은 그림을 그리는 것과 비슷하다. 문서의 앞부분인 기능적/비기능적 요구사항을 도출하고 사용자 화면을 구상하는 작업은 어떤 그림을 그릴지 고민하는 작업으로 볼 수 있고 시스템 구조와 컴포넌트 사양을 작성하는 일은 앞에서 구상한 그림을 직접 도화지에 표현하는 작업으로 볼 수 있다. 표현하는 작업은 스케치 작업과 스케치 한 바탕에 색을 칠하는 작업으로 나눌 수 있는데 이중 시스템 구조를 작성하는 일은 스케치 하는 작업에 해당한다. 전체 그림의 윤곽을 그리는 스케치 작업처럼 시스템 구조를 작성하는 일 또한 거시적인 시각에서 동작하는 소프트웨어의 전반적인 틀을 짜는 작업이다. 스케치는 한 번 마무리 되면 다시 되돌리기가 어렵다. 색을 입히는 도중 그림 상에서 배치가 마음에 안들면 도..
-
UI 문서 - 구조설계서 작성(2/4)사이드 프로젝트/이기적인 총무 2018. 2. 8. 10:58
앞 포스트에선 이기적인 총무 소프트웨어를 만들게된 계기(시스템 개요)와 시스템이 제공하는 기능 및 품질(요구사항)에 대해서 소개했다면 지금부터는 앞 문서에서 설명한 소프트웨어가 사용자에게 화면으로 보여지는 형태를 정리한 문서, 즉 User Interface 가이드 문서(이하 UI 문서)를 만들어야 한다. 개발자가 아닌 일반인들도 들어보진 못했어도 한번 쯤은 봤을 것이다. 주로 전자제품을 산 후 사용설명서에서 접해보게 된다. 겨울철이니 가습기를 예로 들어 보자. 가습기 사용 설명서에는 어떤 단추를 눌러야 가습기를 실행 할 수 있으며 분무량을 조절하는 버튼은 어디 있는지 그리고 세척 할때는 어떤 부품들을 분해해서 세척할 수 있는지 설명되어 있다. 아무런 안내가 없으면 사용자가 직관적으로 판단해야하는데 전자제..
-
기능적/비기능적 요구사항 - 구조설계서 작성 (1/4)사이드 프로젝트/이기적인 총무 2018. 2. 4. 13:06
소프트웨어 설계 문서는 프로그래밍 언어의 문법처럼 반드시 따라야하는 규칙이 있는것은 아니다. 설계 문서의 주 목적은 소프트웨어 시스템을 모르는 사람에게 설명하는 것이므로 어떤 양식을 사용하든 위 목적에 충분히 부합한다면 잘 작성한 설계 문서라고 할 수 있다. 그러나 '충분히 설명할 수 있는 문서'라는 기준은 애매모호하다. 문서를 작성한 사람이나 소프트웨어를 개발한 사람은 전문적인 용어에 익숙하고 객체들 사이의 관계를 명확히 이해하고 있기 때문에 시스템을 추상화한 다이어그램을 이해하는것이 어렵지 않겠지만 시스템을 경험하지 못한 사람에겐 전문적인 용어는 외계어일 것이고 다이어그램은 초현실주의 작품으로 보이게 된다. 설계자와 독자의 간극을 해소하고자 오래 전부터 학계에서는 '어떤 문서가 바람직한 소프트웨어 문..
-
이기적인 총무 리팩토링 - Database 관리 부분사이드 프로젝트/이기적인 총무 2018. 1. 21. 15:50
구조설계서에 시스템에서 사용할 클래스 다이어그램을 그리다 보니 작성한 내용 그대로 실제로 시스템이 적용 할 수 있을지 의문이었다. 문서의 내용은 그럴듯 한데 여기에 안드로이드 시스템 특유의 feature들을 넣다보면 중간에 엉키게 되는 부분이 상당수 있을 것 같은 느낌이 드었다. 나중에 반복해서 고치는것 보단 직접 먼저 코드를 수정한 후 현실 가능성을 검증하고 옮기는 것이 나을것 같아 예전부터 가장 먼저 손대기로 했었던 DatabaseHelper 클래스를 리팩토링 했다. 수정전 DatabaseHelper.java 클래스는 이랬다. 그림 1. 초기 DatabaseHelper 클래스 다이어그램 DatabaseHelper 클래스는 이름 그래도 이기적인 총무의 데이터베이스를 관리할 수 있는 기능을 제공하는 클래..
-
이기적인 총무 - 리팩토링 계획사이드 프로젝트/이기적인 총무 2018. 1. 7. 23:25
단순히 기능적 요구사항만 만족하는 소프트웨어가 아니라 변경 용이성, 성능, 사용 편의성과 같은 품질 요소와 객체 지향적인 관점을 고려해서 구현하는 것이 구조적으로 튼튼한 소프트웨어를 만드는 일이다. 이기적인 총무를 처음 만들때는 빠르게 출시 해보는것이 목적이어서 기능 구현과 UX 디자인 이외의 것들을 생각하지 못했다. 그러다보니 몇몇 기기에서는 정상적으로 작동하지 않고 있고 수정 하려고 해도 어디서 부터 손대야 할지 엄두가 나지 않는다. 이미 출시 된지 꽤 많은 시간이 흘러 조금 늦은 감이 있지만 앞으로 두달 간은 그동안 놓쳐 왔던 것들을 계획을 세워서 보완해 볼 생각이다. 1. 구조설계서 작성 가장 중요한 일임에도 불구하고 빠르게 개발하는데 급급해 문서 남기는 일을 생략했다. 그 결과 마지막으로 업데이..