프로그래밍 354

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

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

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

안드로이드 앱 시작시 로고가 잠깐 떴다 사라지는 화면을 본 적 있을 것이다.인트로 화면에서는 최근 안드로이드 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..

안드로이드 앱 성능을 최적화 하는 방법 - (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..

안드로이드 PHP GET 방식 통신에서 한글 깨짐(?) 해결

안드로이드와 PHP 연동시GET방식으로 한글을 넘겨 줄 때 일부 스마트폰에서 ??? 이렇게 물음표로 뜨는 경우가 있다.이때는 안드로이드에서 String을 보낼 때 해당 한글 부분을 utf-8 방식으로 인코딩 해주면된다. String url = "http://***.com/login/db_get_messages.php?receiver=" + URLEncoder.encode(userData.getUserData("uname"),"utf-8");

안드로이드 EditText를 이용해 리스트뷰 검색 기능 만들기

오늘은 EditText를 이용해 검색되는 리스트뷰를 만들어 보겠다.다음 GIF처럼 작동되는 것이고, 리스트뷰 아이템의 이름에 따라 검색이된다.나는 이번에 게임에나오는 포션들을 검색할 수 있는 것으로 예제를 만들어 보겠다. 준비물은 만들어진 ListView, ListView Item Layout, ListViewAdapter그리고 검색할 Activity다. ListView와 ListView Item Layout, 그리고 ListViewAdpater를 만드는 방법과동작하는 방식은 다른 강의에서 보시고! ㅎㅎ이 강의에서는 검색기능 구현에만 초점을 맞출 예정이다. 먼저 내 PotionListViewAdapter부터 보겠다.PotionListViewAdapter.java package com.lx5475.****..

안드로이드 Custom Object Intent로 넘기기, Parcelable 구현

내가 만든 클래스 넘기기 (마인크래프트 앱 개발기 3편) 7월 업데이트를 위해 리팩토링을 하면서,데이터 타입에 대한 정리는 끝났으니 이제 전송에 관련된 일을 처리해야했다. 나는 ItemDB라고 하는 클래스를 만들어 아이템 정보를 관리하고 있다.그러나 특성상 ItemDB 자체를 인텐트로 넘겨야 더 좋은 성능을 낼 수 있는 상황이 왔다.intent.putExtra(key, value)로 보내어 value 값이 맞는 아이템을 500개 리스트에서 일일이 찾기 보다는그냥 ItemDB 하나만 심플하게 보내는 방법이 좋아보였다.그러나 putExtra()는 한정된 자료형만 전송할 수 있는 단점이 있기에, 어떻게 해결하면 좋을지 찾아보다가Parcelable 또는 Serializable 을 이용해 커스텀 오브젝트를 전송할..

안드로이드 아름다운 카드뷰(Card View) 리스트 만들기 - (3)

이번 강의에서는 Card View에 이미지를 적용 시키는 방법과, 개별 클릭 이벤트를 처리하는 방법에 대해 알아 볼 것이다.나는 이미지 URL을 이용해 이미지를 불러올 것이기 때문에 마음 편하게 라이브러리를 사용했다.이미지 관련 라이브러리 중 유명한 것은 Picasso와 Glide가 있는데, 둘 다 사용법은 비슷하고 성능도 좋다. 이미지 라이브러리인 Picasso를 사용하기 위해Gradle에 다음 코드를 한 줄 추가한다. build.gradle (Module : app)dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompa..