본문 바로가기

개발

유일하게 강력 추천하는 안드로이드 앱 개발 도서 책 - 안드로이드 프로그래밍 천인국 몇 년 전부터 안드로이드 앱 개발을 해보고 있는데요. 여러 종류를 책을 봤는데, 가장 추천드릴만한 책은 유일한 책은 '안드로이드 프로그래밍' 천인국님이 쓰신 책입니다. 1. 먼저 원리에 대한 설명이 쉽고 자세하게 되어 있습니다. 2. 폰트나 이미지가 깔끔하고 재질이 매우 좋스니다. - 저 개인적으로는 책을 살때 폰트도 보는 편인데, 매우 정리가 잘 되어 있습니다. 3. 안드로이드 개발에서 알아야 할 깊이 있는 설명도 포함합니다. 브로드캐스트, 쓰레드 등의 고급 기술에 대해서도 잘 설명이 되어 있어서 매우 좋습니다. 강력 추천드립니다. 두고 두고 원리를 이해하시기 좋다고 생각됩니다. 안드로이드 앱 개발 유일한 추천 책입니다. 아래 링크로 접속해서 구매시 "파트너스 활동을 통해 일정액의 수수료를 제공받을 수.. 더보기
안드로이드 가로 전환 시 onCreate 호출 방지 안드로이드 앱을 개발하고 가로 모드로 전환을 해봤을 때 어떤 현상이 나는지 사실 모르다가. 이번에 음악을 들려주는 앱을 개발하고 나서 음악을 듣다가 가로로 전환했을 때 음악이 두번 들리길래 왜 그런가보니 onCreate가 두 번 호출하는 것이다. 왜 호출이 될까를 고민하다가 찾아보니 가로 모드로 전환된 후 화면 다시 생성을 하는 과정을 거친다. 이때 구지 이렇게까지 안해도 되는 상황들도 있기에 그런 경우 옵션은 아래와 같다. manifest.xml 파일 내에서 전환 시 아무런 동작도 원하지 않는 Activity의 경우 아래와 같이 configChanges 옵션을 추가해주면 된다. 더보기
안드로이드 앱 데이터 - SQLlite 데이터 편집툴 소개 안드로이드 앱을 만들면서도 데이터들을 저장하고 보여줘야할 때가 있는데, 이때 유용한 것이 안드로이드에서 기본적으로 제공하는 SQLLite이다. 여기서 데이터를 편집해서 넣기를 원할 수 있는데, 이때 유용한 툴이다. http://www.sqliteexpert.com/ 더보기
안드로이드 앱 글로벌 버전 만들기 글로벌 버전은 앱을 영어로 만들면 된다고 간단하게 생각할 수도 있다. 그럼 리소스들을 영어로 표시 하는 것이 필요하고, 그 영어 버전과 한글 버전을 어떤식으로 관리할지가 고민스럽다. 리소스 관리 그리고 소스 관리 어떻게 하는게 효율적일까? 앱의 전략에 따라서 앱을 2개로 나눌 수도 있고, 하나의 앱으로 리소스만 달리 할 수도 있다. 당연히 하나의 소스에 리소스만 분리하는게 유리할 것으로 생각된다. 안드로이드는 기본적으로 다국어 지원을 잘(?) 해주려고 준비가 되어 있다. 기본적으로 /res/values 에 /res/values-en를 추가하면 핸드폰의 언어에 따라서 자동으로 해당 언어로 로딩이 된다. 그렇게 폴더가 추가되고, strings.xml을 해당 폴더에 넣으면 스튜디오에서는 values에 stri.. 더보기
과연 블로그로 돈 벌수 있을까요? 일평균 방문자수가 100회 조금 넘는다면 그리고 더 많은 컨텐츠를 게시해서 1000회를 넘는다면 그리고 1만회까지 된다면으로 가정을 해서 계산을 해보았습니다. 현재 평균 200회인 상황에서 한달에 1$ 정도의 수익이 되었습니다. 그렇다면 10배가 된다면 10$, 그리고 불가능에 가깝지만 100배가 된다해도 한달에 10만원이라면 사실 많은 돈을 벌기 위해서 시작한 것은 아니더라도 유입을 생각하지 않은 것은 아닌데, 블로그 내 배너 광고에 대한 강한 회의감이 들었습니다. 저는 몇년 전부터 앱을 만들기는 했는데, 광고가 있는게 유저 입장에서는 매우 불편한 경험이였습니다. 그래서 2년정도 앱에 광고를 하지 않았습니다. 그런데, 과연 수익구조가 있을까? 유료앱이거나 인앱 결제 또는 광고인데, 아니면 연관관계가 있.. 더보기
주소 검색 OpenAPI 공개 요즘은 OpenAPI가 많습니다. 왜 Open을 할까요? 결국 OpenAPI를 공짜로 오픈을 한다는 것은 또다른 수익구조를 가져가려고 할텐데요. 공공API도 그럴까 생각해볼 필요는 있습니다. 구지 모든 것을 색안경을 끼고 볼 필요는 없다고 봅니다. 공공재화를 우리가 누리기 나름인데요. 예를 들면 공원 시설, 공원 내 운동 시설 누리는 사람이 임자인 것이지요. 주소를 검색하는 API가 대표적으로 우리가 자유롭게 쓸 수 있는 API인거 같습니다. 제가 직접 만들어봤던 앱에서 사용했던 API여서 조금 더 신뢰가 가는거 같습니다. 참고로 API 연계 신청 방법 첨부해드리니 참고해보시기 바랍니다. 오픈된 자료여서 공개적으로 올려도 무관할 거거 같은데요. 아마 승인된 사람에 한해서 다운로드 받는 것이고 문제가 된다.. 더보기
애자일 방법론, 방법론 테일러링 애자일 방법론도 어쩌면 개발방법론에 집중하기 보다는 개발에 집중하다 보니 나오게 된 방법론의 혁식적인 변화일 것이다. 애자일이라는 것은 민첩함 정도, 그렇다고 애자일 방법론을 민첩하게 개발하는 것 정도로 생각하고 해석하기에는 애자일이 가지는 의미는 매우 넓다. 대부분의 방법론은 제조에서 나온 것으로 보인다. 물론 PMP와 같은 프로젝트 관리 자격증은 건축에서 나왔다고 한다. 제조나 건축 무엇을 만드는 것에 대해서는 소프트웨어나 하드웨어도 관리가 필요하고 방법론이 필요하다는 측면으로 일맥상통한 면이 있을 것이다. Why? 애자일일까? 두가지 시대적 상황의 만남으로 보인다. 말그래로 민첩한 대응이 필요했다. 소프트웨어가 가지는 가장 큰 장점일 수도 있다. 바로바로 반영이 가능하다는 점. 자동차 생산관련해서 .. 더보기
CBD방법론의 컴포넌트란? Component Based Development 방법론이다. 개발 방법론은 여러가지가 있다. 컴포넌트 기반으로 개발을 한다는 것이다. 컴포넌트는 무엇일까? 프로그램의 기본 단위는 함수라고 할 수 있다. 함수도 어떤 기능을 한다. 모듈이 있다. 모듈도 기능을 하는 것인데, 함수들의 집합이다. 함수들이 어떤 순서로 동작이 되면서 기능을 하는 것이다. 모듈은 꽤 큰 기능을 표현할 때 사용한다. 결제 모듈, 화면 모듈 서버 모듈, 이런식의 표현을 사용쓴다. 그리고 모듈들을 여러개 모이되 주제를 기반으로 모인 것을 컴포넌트라고 한다. 컴포넌트는 꽤 큰 주제인데, 이 아래 여러개의 모듈이 있을 수 있다. 컴포넌트 베이스 개발 방법론의 취지는 주제별로 독립적으로 개발을 하고 서로 다른 컴포넌트 간의 상관 관계를 줄.. 더보기
앱 개발 어떻게 하지? 프로그램을 개발한다는 것은 어떤 기능들을 가진 것을 만드는 것이다. 프로그램 개발 자체는 절차를 만들고, 특정 기능이 불려지면 해당 기능에 맞게 로직을 만드는 것이다. 어떤 프로그램을 만드느냐에 따라서 약간씩은 방법이 달라질 수 있다. 예를 들면 앱을 개발한다고 하면 어떤 앱을 개발을 할지 생각하는 것이다. 그 앱은 어떤 화면을 가질 지 생각해본다. 그리고 그 화면을 대략 그려본다. 종이에 그리는 것도 좋다. 그리고 그 화면에는 어떤 기능이 있는지 생각해본다. 그 기능들을 만들기 위해서 어떤 로직이 필요한지 생각해본다. 개발을 한다는 것이 로직을 구현하는 것에 가장 밀접하지만 이런 일련의 과정 모두가 개발의 범주에 속한다. 그리고 기능을 개발하기 위해서는 어떻게 만들 수 있을까를 생각하는 것이다. 그리고.. 더보기
알고리즘을 뭐라 말할까? 자료구조가 데이터를 다루는 구조였다고 하면 알고리즘은 어떤 기능을 동작시키기 위한 과정이다. 프로그램은 기본적으로 다루고자 하는 데이터와 알고리즘으로 이뤄진다. 기본적으로 무엇을 넣으면 어떤 결과가 나온다는 것이 알고리즘이다. 수학의 모든 공식이 알고리즘이고, 내가 미리 정해놓은 약속들이 알고리즘이다. 알고리즘은 문제를 풀어가는 방법이다. 어떤 식으로 풀면 된다라는 것도 알고리즘이다. 예를 들면 지금 있는 곳에서 서울 시청까지 가는 방법도 하나의 알고리즘이 될 수 있다. 길찾기 알고리즘에 해당된다. 알고리즘은 정해진 한가지만 있는 것이 아니다. 버스를 탈 수도 있고, 택시를 탈 수도 있고, 지하철을 타고 갈 수도 있다. 문제를 풀어가는 방법이라는 것이다. 문제를 풀어감에 있어서 최단 시간이 걸렸다든지 최.. 더보기
자료구조 꼭 알아야 할까? 자료 구조라는 것을 꼭 알아야 할까? 컴퓨터를 조금 공부한 상황이라면 자료구조라는 말에 먼저 머리가 아플수도 있다. 개발을 할 때 꼭 알아야 할까? 소프트웨어 개발에 있어서 필수적인 요소이긴 하다. 프로그램은 기본적으로 어떤 데이터를 다룬다. 회원 관리 프로그램이라고 하면 회원 데이터를 다룬다. 회원의 정보를 기억하고, 보여주기도 하고, 탈퇴할 수도 있다. 회원 정보는 이름도 있고, 어떤 경우는 나이도 있다. 어떤 경우는 가입일이 있을 수 있다. 이러한 정보를 자료라고 하고, 이것을 어떻게 관리할 것이가 어떤식으로 저장할 것이가가 자료 구조이다. 여기까지는 데이터 베이스까지의 얘기는 아니다. 데이터 베이스틑 저장에 관한 부분이다. 물론 데이터 베이스에서도 어떻게 저장하는가의 문제가 있다. 정보를 어떤식으.. 더보기
소프트웨어 왜 중요한가? 누가 잘할 수 있는가? 개발을 한다는 것은 무언가를 만드는 것이다. 건축물로 비교하면 아파트나 백화점을 건축하는 것이다. 그 건물의 목적이 있고, 디자인이 있고, 그 건물에 들어가는 각종 기능들이 있을 것이다. 소프트웨어로 개발을 하는 것의 대상은 무형의 것이다. 물론 결국 화면이 보여지기때문에 유형이라고도 할 수 있다. 무형이라고 말하는 이유는 그것이 최소 손에 잡히는 물건은 아니기 때문이다. IT세계에서 손에 잡히는 기기를 하드웨어라고 한다. 손에 보이지 않고, 안에서 그 하드웨어를 움직이는 것을 소프트웨어라고 한다. 사람으로 치면 몸 자체는 하드웨어이고, 뇌도 하드웨어이고 그 안에 돌아가고 있는 생각이 소프트웨어에 해당된다. 소프트웨어는 미리 정해놓은 약속이다. 사용자가 어떤 기능을 선택하면 그 기능이 동작되어진다. 소프.. 더보기
모바일앱 vs 모바일웹 vs 하이브리드앱 -안드로이드, 아이폰, 모바일웹, 모바일웹앱, 모바일앱 스마트폰 어플리케이션은 이제 실생활에 너무 많이 쓰여서 너무 익숙하다. 일상이 스마트폰으로 시장해서 스마트폰으로 끝난다고 볼 수도 있다. 아침 알람도 스마트폰이고, 신문도 스마트폰으로 보고, 대화도 스마트폰으로 하고 주식, 게임, SNS등 모든 것을 스마트폰으로 할 수 있다. 스마트폰의 활용이라든가 어떤 것인지에 대해서는 익숙하기에 가볍게 넘어가도 될거 같다. 스마트폰 앱에 대한 구분을 한번 다뤄보면 좋을거 같다. 모바일앱이 있고, 모바일웹이 있다. 하이브리드앱이라는 말도 존재한다. 모바일앱은 모바일에 설치를 하고 사용하는 앱이다. 앱이라는 말도 사실 어플리케이션의 준말이다. 윈도우도 설치해서 사용하는 PC어플리케이션이 있었다면 웹사이트를 접속하여 .. 더보기
[추천도서] 나홀로 안드로이드 게임 프로그램 불혹의 나이가 드는데, IT 바닥에 발을 들인지도 어언 15년, 어느 정도 적응할만한데도 항상 새롭다는 느낌이 든다. 최근 IOT라는 주제로 여러가지를 찾아보다가 이런 생각이 들었다. 최근에 프로젝트다 회사생활이다 하다보니 나름 IT회사에 다니고 있어도 최신 기술 동향을 많이 놓치고 있었다는 생각이 든다. 프로젝트는 보통 나온 기술을 가지고 구현을 하는 것이라서 아무리 최신 프로젝트여도 기술 자체는 한두발 뒤에 있는 것이 보통이다. 이런 생각을 하다가 문뜩 이런 생각이 들었다. 항상 최신 기술을 살핀다 해도 고작 빨리 따라가는 수준이구나. 그 최신 나온 기술들만 이해하고 따라가는 것도 큰 일이구나. 이렇게 가서는 절대로 앞선 기술 또는 트렌드를 앞질러 갈 수는 없는구나. 라는 생각이 들었다. 한마디로 감.. 더보기
RESTful API 방식이란? RESTful API IT와 철학은 무관하게 느껴진다. 하지만 스티브 잡스가 본인이 소크라테스와 만날 수만 있다면 그 회사의 반도 주겠다고 했다고 하는데, 이토록 철학은 힘을 가지고 있다. IT와 심리도 무관한듯 하나 지금의 IT의 흐름을 보면 사람의 심리를 얼마나 이해했는가가 바로 승부의 갈림수가 되어버린 상황이다. 철학 얘기를 꺼낸 이유는 결국 기술의 발전은 사람의 생각속에서 그 사람의 생각이라는 것을 약간 어렵게 접근하면 철학이 아닌가 싶다. RESTful 이름 만 봐서는 그 의미를 전혀 알 수가 없다. 왜냐면 약어이기때문이다. Representation State Transfer의 약자이다. 어떻게 풀어놔도 이해가 안되는가 점점 IT가 외계어처럼 느껴지는 것은 내가 정상인이 되어가는 것이 아니라 .. 더보기
소프트웨어, 누가 이렇게 개떡같이 만든거야? 서점에 갔다가 우연히 발견했다. '소프트웨어, 누가 이렇게 개떡같이 만든거야?' 누가 제목을 이렇게 개떡같이 만들었을까요? ㅋㅋ 제목이 일단 재밌고, 표지의 그림도 상당히 재밌다. 그리고 제목만으로 나의 생각을 좀 대변해주는 거 같았다. 개발자의 삶을 살때는 사실 '개발만 하면 끝이다'라고 생각했었지만, 관리자가 되고, 사용자가 되어보니 그런 개발자들을 정말 쥐어 박고 싶을 심정이다. 개발자들은 본연의 임무에 너무 충실한 나머지 사용자를 무시한다는 느낌이 들 정도로 시쳇말로 '발로 만들어놓은 듯한' 프로그램들이 많다. 만들어놓은 프로그램들을 보면 정말 실망 완전 실망이다. 물론 이를 만들기 위해서도 매일 야근에 제대로 집에도 못가면서 만드는 것을 알고 있다. 최근 대화를 해보니 옆에 PM은 요즘 일주일에.. 더보기
bada 어플리케이션 개발 지원을 위한 OCEAN 이런게 있네요~~~ 혹시 필요하신 분들 신청하셔서 쓰셔도 되겠습니다. 유용할 거 같아서 공유해봅니다. 안녕하세요. 삼성전자 OCEAN 입니다. OCEAN에서는 일반 App제작자 및 중소개발사 대상으로 App제작시 많은 지원을 하고 있으며, 모든 지원은 무료로 제공하고 있습니다. 주요 지원 내용 - 개발 환경 제공 : 개발좌석, 노트PC, 단말, 도서 등 - 회의실 - 개발/기획 교육 - 디자인 지원 이용 신청 및 승인을 통해 회원이 되시면 OCEAN내 테스트 공간을 상시 이용 가능하시며, 심사에 따라 고정좌석을 제공해 드리고 있습니다. *아래 해당하시는 분들께 OCEAN을 적극 추천해 드립니다. - 개인 및 중소 팀단위로 App 제작 중 사무실이 필요하신 분 - App 개발 능력은 있으시나 컨텐츠가 없으.. 더보기
바다 플랫폼과 바다 IDE/SDK 이번에 마이크로소프트 4월에 기고했던 삼성 바다폰 개발에 관련된 내용입니다. 바다SDK 다운로드 바로가기 바다SDK/IDE는 bada Developer(http://developer.bada.com) 사이트에 가입하면 바로 다운받으실 수 있습니다. ‘바다’는 순수 한국어의 바다에서 나온 말로, 삼성전자(이하 삼성)에서 제시하는 차세대 오픈형 휴대폰 플랫폼의 통칭 브랜드이다. 삼성은 이를 글로벌로 서비스하기 위해 ‘bada’로 표기했으며 기존에 삼성이 도전과 창의를 의미하기 위해 활용하던 ‘블루’의 확장 의미로도 이해할 수 있다. 아울러 무한하고 신비로운 공간에서 상상의 나래를 펼칠 수 있다는 이미지도 함께 강조되는 것 같다. 지금부터 이런 이해를 바탕으로 바다의 기술적 면모를 살펴본다. 바다의 궁극적인 .. 더보기
Refactoring 정의 - 프로그램의 외부사양(입력과 출력)을 변경하지 않은 채 내부구조를 안전하게 개선하는 테크닉 목적 - 프로그램을 이해하기 쉬운 상태로 유지하고, 확장성과 재이용성을 높이는 것 안전한 리팩토링을 위해서 - 리팩토링을 다른 작업을 분리하고, 리팩토링전후에 반드시 테스트한다. - 한 번에 최소한의 작업만 하고, 기존의 로직에 미치는 영향을 적게 하며, 반드시 백업 한다. 대표적인 리팩토링 '메소드 추출' 순서 - 적절한 이름의 새 메소드를 만든다. - 추출하고 싶은 로직을 새 메소드로 복사한다. - 추출된 로직 속의 로컬 변수를 새 메소드에 적합하도록 변경한다. - 컴파일하여 테스트한다. - 원래 메소드를 새로운 메소드를 호출하도록 변경한다. - 컴파일하여 테스트한다. 리팩토링 과정 - 이해하기 쉬운 변.. 더보기
'소프트웨어 공학의 진실과 오류' 中에서 #3 복잡성 사람이 중요한 이유가 무엇인가 ? - 복잡성을 극복하는 데는 상당한 사고력과 기술력 - 결국 똑똑한 사람은 복잡한 문제를 단순하게 만드는 사람이다. 왜 검사(inspection)이 오류 제거에 대한 가장 효과적, 효율적인 접근 방법인가? 복잡성을 걸러내고 오류의 위치를 찾는 데는 결국 사람의 노력이 필요하기 때문이다. 22. 소프트웨어 작업의 80%는 지적인 작업이다. 그 중 상당 부분은 창조적인 작업이다. 사무적인 작업은 거의 없다. 재사용 15. 소규모 재사용 50년 전부터 시작되어 잘 해결되었다. 단, 소규모에 한해서 우리는 그것을 'Copy&Paste'라 부른다. 16. 대규모 재사용(컴포넌트) 재사용에 대해서 중요 바람직하다 생각하지만, 현실에서는 거의 해결되지 않는다. - 도메인에 종속.. 더보기