프로그래밍 379

안드로이드 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..

객체 지향 프로그래밍, 자바

한 학기 동안 학교에서 Java강의를 들으면서 정리한 내용이다.간단히 자바에대해 파악하기 좋다. 00 Introduction 없음 01 Basic Concepts and a Sample 1. 언어의 분류- 기계어 (machine language)- 어셈블리어 (assembly language)- 절차적 언어 / 비절차적 언어 (procedural / nonprocedural language) 2. 자바의 특징- 1991년 SUN 마이크로 시스템즈의 James Gosling에 의해 탄생- 플랫폼 독립적, 적은 메모리 사용- Write Once, Run Everywhere- 소형 기기, 인터넷의 발달과 함께 성장- JVM 상에서 동작- 객체 지향, 객체를 기본 단위로 디자인 3. 클래스- Java에서 객체를..

Merge Sort Algorithm (병합 정렬 알고리즘)

앞서 살펴본 Selection Sort(선택 정렬)와 Insertion Sort(삽입 정렬)은입력 리스트의 크기가 크면 클수록 더욱 비 효율적인 단점을 갖고 있다. 그래서 조금 더 나은 정렬법인 Merge Sort를 배워보도록 하겠다.Divide and Conquer Merge Sort에는 Divide and Conquer(나눠서 정복하기)라는 재귀에 기반한 알고리즘 양식이 적용된다.이것은 문제를 원래의 문제와 비슷한 형식으로 자그마하게 쪼개서작은 문제들을 재귀적으로 풀어내는 것이다. Divide(나누기) : 큰 문제를 같은 방식으로 풀 수 있는 작은 문제로 쪼갠다.Conquer(정복) : 작은 문제들을 재귀적으로 풀어낸다.Combine(합치기) : 작은 문제들에서 얻어낸 해결책을 원래의 큰 문제에 적용..

Insertion Sort Algorithm (삽입 정렬 알고리즘)

Insertion Sort(삽입정렬)의 방식은 이렇게 이해하면 쉽다. 내가 트럼프카드를 패로 쥐고 있고, 그게 오름차순으로 정렬되있다고 가정하자. 그러고 새 카드를 뽑으면 정렬된 패의 정렬순서에 맞게 새 카드를 어딘가에 삽입해야한다. 그것이 삽입정렬이다. 도식화 한 Insertion Sort리스트 그림을 통해 삽입정렬의 작동원리를 보자! 0~5번째 위치까지 정렬된 리스트 6번째 위치에 5라는 숫자가 들어왔다. 마지막 위치에 있는 5를 key라고 하자. key는 왼쪽으로 움직이면서 어디에 들어갈지 본다. key가 왼쪽으로 움직이면서 앞자리와 숫자 대소비교를 하게된다. 5번째 자리로간 key는 리스트의 5번째 원소인 13과 값을 비교한다. 이때 key > 13 이므로 5번째 원소의 값 13은 뒤로 밀려난다...

Selection Sort Algorithm (선택 정렬 알고리즘)

정렬(Sorting)은 리스트의 아이템을 오름차순 혹은 내림차순으로 정렬하는 것을 말한다.정렬은 사람, 컴퓨터 모두가 리스트에 있는 아이템을 빨리 찾을 수 있도록 도와준다. Swap정렬을 하기위해서는 swap(자리 바꾸기)을 할 줄 알아야 한다. 123456789101112131415161718192021222324252627namespace Rextester { class Program { public static void Main(string[] args) { int[] array = { 1, 2, 3, 4, 5 }; Console.WriteLine("Before swap()"); printArray(array); Console.WriteLine("After swap()"); swap(array, 0..

Binary Search Algorithm (이진 검색 알고리즘)

Binary Search는 순서대로 정렬된(sorted) 리스트에서 아이템을 찾는데 유용한 알고리즘이다.Binary Search는 아이템이 있는 범위까지 계속해서 반으로 나누면서 찾는다.1부터 10까지 수 중 아무거나 하나를 생각해서 맞추는 게임의 알고리즘과 동일하다. Binary Search의 의사 코드는 다음과 같다. 1. min은 범위 중 가장 낮은 것, max는 범위 중 가장 높은 것이다.min = 1, max = n2. min과 max의 평균값을 구해서 반내림을 한다. 이게 추정치다. (정수가 되도록)3. 만약 숫자를 맞췄다면, stop!4. 만약 추정치가 너무 낮다면 min을 그 추정치보다 높게 변경.5. 만약 추정치가 너무 높다면 max를 그 추..