자바에서 리스트의 정렬은 Collections.sort() 메소드를 이용해서 쉽게 수행할 수 있다. 리스트의 값이 기본 타입일 경우에는 바로 Collection.sort(list)를 적용하면 된다. 만약 리스트의 값의 자체적으로 만든 객체(Object)일 경우, 어떻게 처리해야 할까? 우선 Comparator 인터페이스를 구현해서 내부에 compare 메소드로 정렬할 방식을 정한다. 그리고 Collection.sort를 호출할 때 Comparator 인터페이스를 구현한 클래스의 객체를 전달하면 된다. 예제를 통해서 살펴보도록 하자~ 먼저 name과 volume의 멤버 변수를 가진 MiniVo 객체를 다음과 같이 만든다. package kr.co.acronym.mini; public class MiniVo..
PHP에서 JSON을 리턴하는 예제를 지난번에 살펴봤는데 이번에는 JSP를 활용해 보기로 한다. 스프링 프레임워크를 활용할 경우, 컨트롤러에서 @ResponseBody 어노테이션을 활용해서 바로 JSON을 리턴할 수 있다. 그러나 JSP에서 직접 DB에 접속해 데이터를 가져온 후, JSON으로 리턴할 경우도 있다. DB 구조 DB의 테이블 구조는 PHP 예제와 동일하게 이름, 나이, 중간점수, 기말점수로 구성했다. Gson으로 JSON 만들기 먼저 생각해 봐야 하는 부분은 레코드셋으로 가져온 데이터를 Gson으로 JSON 타입으로 변환하는 것이다. Gson의 toJson() 메소드를 실행하기 위해서 레코드셋으로 가져온 데이터를 List 타입으로 변경했다. List 타입에는 Key, Value 쌍으로 구성..
안드로이드에서 웹뷰를 적용하는 강좌는 지난번에 올렸었다. 뒤로가기 버튼까지 처리를 했지만, 사용하다 보면 한가지 문제가 발생한다. 웹 페이지에서 다른 페이지로 이동한 후, 내부적으로 여러번 리다이렉트가 발생할 경우이다. 이때, 기존의 방식대로 뒤로가기 버튼을 처리하면 원하는대로 동작하지 않는다. 바로 이전 페이지로 이동하기 때문에 다시 현재 보고 있는 페이지로 돌아오게 되는 것이다. 이런 문제를 해결하기 위해서 다음과 같은 방식을 사용해봤다. 현재 URL을 변수에 저장하고 새로운 URL이 로딩되었는데 아직도 현재 URL이면 뒤로 이동하도록 처리하는 것이다. WebViewClient를 상속한 클래스의 shouldOverrideUrlLoading 함수에서 처리하면 된다. private class WebVie..
웹과 모바일에서 입력창이 숫자일 때, 슬라이더 형태로 제공하는 방법을 정리해 보려고 한다. 부트스트랩을 이용한 오픈소스가 있어서 활용해봤다. 먼저 실행하는 결과를 살펴보려면 http://www.word.pe.kr/bootstrap/slider.html 에 접속하면 된다. 다음과 같은 화면이 나온다. 부트스트랩 슬라이더 소스 설명 소스에서는 bootstrap CSS와 JQuery를 기본으로 사용하고 있고, 별도의 bootstrap-slider css와 js 파일이 존재한다. 각각의 파일은 다음과 같다. 먼저 슬라이더로 입력할 부분과 결과를 출력할 부분의 HTML을 다음과 같이 구성한다. 최소값(data-slider-min), 최대값(data-slider-max)을 지정할 수 있고, 값의 이동 간격(data..
안드로이드 스튜디오로 개발하는데 있어 기존 방식과 약간 다른 부분이 있어 해당 부분들을 정리해 보려고 한다. 앱 버전 및 SDK 버전 설정 예전에는 어플 버전을 설정하기 위해 manifest.xml 파일에 versionCode와 versionName을 지정하면 되었다. 또한 지원하는 안드로이드 버전을 설정하기 위해서는 use-sdk 태그에 minSdkVersion과 targetSdkVersion을 지정했다. 그러나 안드로이드 스튜디오에서 생성한 프로젝트는 아무리 manifest.xml을 수정해도 적용되지 않는다. 그 이유는 바로 Gradle Script가 우선 적용되기 때문이다. 위 그림에서 build.gradle이란 파일을 열어 보면 앱 버전이나 SDK 버전을 설정할 수 있는 스크립트가 있다. 바로 이..
최근 모바일 웹을 앱으로 씌워서 서비스하는 경우가 많아짐에 따라 웹뷰의 활용성도 올라가는 것 같다. 안드로이드에서 웹뷰(WebView)를 사용하는 기본 방식을 정리해 보도록 한다. 액티비티 생성 먼저 "File > New > Activity > Blank Activity"를 통해 MiniWebActivity라는 이름의 빈 액티비티를 하나 생성한다. 생성후 살펴보면 Java에는 MiniWebActivity 파일이 Layout에는 activity_mini_web.xml 파일이 추가된다. Menu에도 menu_mini_web.xml이 생성되지만 여기에서는 사용하지 않는다. 레이아웃 설정 activity_mini_web.xml의 레이아웃 설정은 다음과 같다. LinearLayout으로 설정했고 방향(orient..
스티브 크룩의 "사용자를 생각하게 하지 마! (Don't Make Me Think)"에 보면 사용성 평가에 대한 이야기를 하고 있다. 우리는 뭔가 고객 대상으로 평가를 하고 설문을 받아야 한다면 거창한 것을 생각하는데 스티브 크룩이 말하는 사용성 평가는 저렴한 비용으로 효과적으로 자주 수행할 수 있는 방법인 듯 하다. "Rocket Surgery Made Easy" 사이트에 보면 사용성 평가와 관련된 많은 내용을 확인할 수 있다. 여기에서는 스티브 크룩의 핵심 내용만 정리해서 공유하도록 한다. 웹 디자인 만평 먼저 누구나 공감할 만한 웹 디자인 만평을 살펴보자. "2주 후..."에도 동일한 논쟁을 하고 있는 것을 보면 남의 일 같지 않을 것이다. ^^ 이런 상황을 스티브 크룩은 해답이 없는 "종교적 논쟁..
러시아의 사상가인 이사야 벌린은 사람을 "고슴도치"와 "여우"의 두 가지 유형으로 분류했다. 여우는 여러 가지 목적을 동시에 추구하면서 세상의 복잡한 면면을 두루 다룬다. 그래서 오지랖 넓게 여기 저기 기웃거리는 사람이라 할 수 있다. 반면, 고슴도치는 복잡한 세계를 단 하나의 체계적인 개념이나 기본 원리로 단순화 시킨다. 그래서 하나의 원리를 향해 외곬으로 나아가는 사람이라 할 수 있다. 원래 고슴도치와 여우는 라틴어 격언에서 시작한다. 여우는 많은 것을 알지만, 고슴도치는 큰 것 하나를 안다. (Multa novit vulpes, verum echinus unum magnum) 이사야 벌린은 톨스토이가 고슴도치 타입인지 여우 타입인지를 "전쟁과 평화"를 통해 살펴보았다고 한다. 그 결과 톨스토이는 고..