분류 전체보기 536

마인크래프트 앱 개발기 9편, 자료구조를 배우다!

이번 학기, 나는 자료구조라는 수업을 듣고 있다.자료구조와 알고리즘 정도는 알고 있어야 프로그래머라고 생각했기 때문에 가장 신경쓰며 듣는 중이다.단순 성적 따기가 아닌, 수업 내용 하나 하나를 흡수하는데 집중하고 있다는 말이다.자료구조 책 초반에 Big O 계산법이 나오는데, 저번에 알고리즘 독학하며 그냥 넘겼던 부분이 알고리즘의 시간복잡도를 따지는 데 중요하단 것을 깨달았다.그리고 중첩 for 문이 상당히 효율이 떨어지는 방법이라는 것도 말이다. 말로만 들었지, 시간복잡도를 따지니 자료가 많아질 수록 중첩 for문의 성능은 기하급수적으로 떨어졌다. 마인크래프트 앱에서 가장 많이 사용하는 기능이 아이템 리스트 펼치긴데, 나는 그 기능을 중첩 for 문으로 구현 해 놓았다.수업을 듣고 여러 실습들을 하면서..

Polynomial Operation in C++, 다항식 연산 덧셈/뺄셈/곱셈

자료구조 수업을 들으면서 과제로 다항식 연산을 C++코드로 구현하라는 것이 나왔다.C++ 자체가 처음이라 C++부터 공부를 했는데, 다행히도 내가 배운 C와 Java가 섞여있는 언어라배우는데 그다지 오래 걸리지는 않았다. 다항식 연산에서 termArray를 static으로 쓰는 것이 포인트고,매커니즘은 내가 그린 그림과 같다...(이렇게 그림 그려서 코드 작성하니 훨씬 쉬워지는 듯) 곱셈의 경우 추가적인 옵션 과제였는데,나는 한번 곱셈해서 나온 다항식을 계속해서 더하는 방식으로곱셈을 구현했다. 코드가 조금 길긴하지만 아래에 붙여넣도록 하겠다.(다항식 곱셈에 관해서 조금더 효율적이 있는 방법이 있으신 분은 댓글로 같이 공유해봐요!) 12345678910111213141516171819202122232425..

마인크래프트 앱 개발기 8편 <Markdown에 관하여>

새로운 기능, 패치 노트요즘 추가하고 있는 기능은 패치노트라고 하는 버전 히스토리를 보는 기능이다.마인크래프트 게임은 특이하게도 매번 업데이트를 할 때마다 유저들이 패치노트를 주의깊게 살펴보기에 필요성이 있겠다 싶어 넣었다. 저번에 앱에 추가한 서버 확인 기능은 잠시 안보이게 넣어두고이번 패치노트를 그 자리에 끼워 넣으려고 한다.서버 확인 기능을 접은 이유는 아래에 따로 적도록 하고, 패치노트 기능에 대해서 적어보겠다. 패치노트 기능은 저번에 블로그에서도 찬양했었던 FireBase를 이용해 구현했다.마인크래프트 패치는 자주되는 편이기 때문에 그때그때마다 실시간으로 업데이트 해주기 위해서 Firebase Storage에 마크다운으로 적은 패치노트를 업로드한 뒤 Firebase Realtime Databas..

안드로이드 아름다운 인트로 화면 만들기

안드로이드 앱 시작시 로고가 잠깐 떴다 사라지는 화면을 본 적 있을 것이다.인트로 화면에서는 최근 안드로이드 M에서 등장한 퍼미션을 받을 수도 있을 것이고, 로딩바도 구현할 수 있을 것이다.오늘은 그 인트로 화면을 구현해보도록 하겠다.먼저, 해당 layout을 준비한다. 그냥 linearLayout에 이미지 하나 올린 거라도 괜찮다.그 화면을 activity_intro.xml 라고 가정하자. 다음은 IntroActivity.java 를 생성한다.IntroActivity.javaimport android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; /** * Created by..

마인크래프트 앱 개발기 7편 "앱 레이아웃 정리!"

안드로이드 앱 성능에 관한 강의를 듣고, 마인크래프트 조합 가이드 앱을 최적화 시키기 시작했다.프로그래밍적인 부분 보다는 디자인적인 부분만 일단 살펴보고 레이아웃 정리에 들어갔다.깔끔하게 짠건 최근에 만든 부분이었고 옛날에 만든건 LinearLayout > LinearLayout > RelativeLayout > LinearLayout 이딴식(?)으로마구마구 뷰가 엉켜있었다. 메인화면 부터 말이다...디자인 타협이 살짝 들어간 부분도 있으나 수정 전 뷰를 그리는 시간이 25ms 였다면 수정 후 15ms 정도로 줄여 뿌듯하다!레이아웃 드로잉에 걸리는 시간 측정은 Hierarchy Viewer를 통해 할 수 있다.

안드로이드 앱 성능을 최적화 하는 방법 - (1) Render

다음은 Udacity의 Android Performance 강의를 듣고 정리한 내용이다.안드로이드 앱 성능은 가장 중요하다! 유저들은 앱이 느리거나 1초라도 버벅되면 당장 앱을 삭제할 수도 있다.그건 그 사람들의 인내심이 없기 때문이아니라 앱을 애초에 잘못만든 탓이다.나는 내 앱의 성능을 최적화하고 유저들에게 원활한 사용 경험을 제공하기 위해 강의를 수강했다. 첫번째 섹션은 Render 부분이다.안드로이드 기기의 CPU는 그려야 할 것들을 GPU로 보내GPU에게 이러 이러한 것들을 그리라고 명령한다.GPU는 drawable에 있는 파일들을 래스터화 시켜 그림을 그린다. Overdraw이럴때 발생할 수 있는 성능 낭비는 Overdraw가 있다.글자 그대로, 과잉으로 그림을 그린 것이다.태극기의 태극 문양을..

안드로이드 Fragment에 정보 전달하기

개발 중 나는 Fragment에 간단한 정보를 전달할 일이 있어 Fragment를 생성할 때 constructor를 추가하여 넣었던 적이있다. 그런데 빌드시 오류가 났다. non-default 생성자는 Fragment에서 허용되지 않는 듯 보였다. 예를 들어 사용자의 정보인 아이디를 보여주는 Fragment가 있다고 하자. 그렇다면 userId라는 String 타입 값을 Fragment에 넘겨줄 방법이 필요하다. 이때 Bundle을 이용하면 마치 Activity간 Intent처럼 넘겨줄 수 있다. Fragment fragment = new UserFragment(); // Fragment 생성Bundle bundle = new Bundle(1); // 파라미터는 전달할 데이터 개수bundle.putStr..

HTTP 개관

HTTP (hypertext transfer protocol)는 전 세계의 웹 브라우저 및 서버, 웹 애플리케이션들이상호작용 할 수 있도록 해주는 통로다. 주소창에 http://라고 쓰는 것은 http 프로토콜을 사용하겠다는 말이다. 웹 클라이언트와 서버웹 클라이언트는 서버에 HTTP 요청을 보내고서버는 요청된 데이터를 HTTP 응답으로 돌려준다.이 요청과 응답을 'Transaction' 이라 한다. 리소스와 MIME웹 서버는 웹 리소스 들도 있다.HTML파일, txt, jpeg, avi등 모든 종류의 파일들이다.이들을 클라이언트가 요청하면, 서버는 리소스에 따라객체 각각에 MIME(multipurpose internet mail extensions) 타입이라는 데이터 포맷 라벨을 붙인다. 예를 들어 j..

마인크래프트에 대한 10가지 진실

1. 마인크래프트의 초기 버전에는 부제로 "Order of the Stone (돌의 주문)" 가 붙어있었다. 마인크래프트의 초기 이름은 Minecraft : order of the stone 이었고,마인크래프트라는 이름은 마인크래프트 출시를 기다리고 있던 한 유저가 개발자 Notch에게 추천하여 생겨난 이름이라고 합니다. 2. 마인크래프트 0.0.32.1a 버전은 아래 사진과 같았다. 당시 마인크래프트는 블럭의 수도 적었고 텍스쳐도 다소 어색했지만노치는 그 버전을 배포한지 하루만에 1.2.5 버전과 텍스쳐가 유사한 진보된 버전을 선보였습니다. 3. 히로빈은 괴담일 뿐이다. 어떤 마인크래프트 커뮤니티 혹은 블로그를 가더라도 대부분 히로빈에 대한 괴담을 다루고 있습니다.하지만 마인크래프트 개발자는 히로빈을 ..

구글플레이(GooglePlay) 순위 높이는 방법, 키워드 최적화! (SEO)

앱 이름핵심 키워드를 포함한 앱 명칭 간단한 설명 (80자)앱의 좋은 기능, 가치를 내세워 다운로드 혹은 설명 더보기를 누르게끔 만드는 것 중요 설명 (4000자)키워드를 자연스레 분산시켜 넣는 것이 중요- 줄바꿈- 짧은 문장 (120문장 내외)- 작은 단락 (3-4줄 내외)- 글머리 기호 또는 목록- 하위 제목- 영어의 경우 필요에 한해 전부 대문자 사용 주의 할 것구글 플레이 스토어의 메타데이터 정책을 확인하고해당 정책을 위반하지 않는 범위에서 키워드를 언급해줘야 한다는 것그렇지 않을 경우, 앱이 예고 없이 짤리는 사태가 발생!

나/이슈 2016.07.22