2017년 6월 4일 일요일
직접 만든 < 경우의 수, 플로이드(경로찾기), 클러스터링 > 자바 라이브러리
경우의 수 : 함수이름을 참고해서 예를들어 3P2 이면 매개변수를 3,2 넣어주면 됨
플로이드 : 경로를 2차원 배열로 만들어서 넘겨주면 됨
클러스터링 : 객체 생성자로 개체의 속성 갯수, 분류할 클러스터 갯수 선언
이후 노드 추가 후 클러스터링 진행
링크: https://github.com/shinseungwon/frequently
Eclipse에서 Github로 프로젝트 올리기 - 1
Github를 하게 되기 까지 많은 시간이 걸렸다. 그 이유는 영어로 된 사이트와 접근 방법이 복잡해 보였기 때문이다.(실제론 엄청 간단)
하지만 인터넷 자료를 검색해서 나도 GitHub에 프로젝트를 올리는 방법, GitHub에서 프로젝트를 다운로드(임포트) 받아 사용하는 방법을 배웠고,
나도 간단하게 한번 글을 적어볼려고 한다.
1.Eclipse에서 GitHub로 프로젝트 올리기
1-1. 레포지토리 만들기
GitHub에 회원가입 후 로그인을 하면 다음과 같은 화면이 나오는데 프로젝트를 올릴 레포지토리(저장소)를 만들어야 한다.
1-2. 레포지토리를 만들때는 이름을 줘야된다.
1-3.만들어진 레포지토리의 모습인데 여기에레포지토리 주소가 있다. 이 주소를 통해 프로젝트를 업로드해야하기 때문에 다음과 같은 버튼을 눌러 레포지토리 주소를 복사해 놓아야 한다.
1-4. 자바에서 프로젝트 우클릭 후에 Team->Share Project...을 누른다.
1-5. 내 컴퓨터 상에 저장될 레포지토리를 생성한다.(이걸 이따가 업로드 시킵니다.)
1-6. 프로젝트 우클릭 후 Team-> Add to Index를 하게되면 프로젝트에 ?가 떠있던게 *모양으로 바뀔 것이다.
1-7.소스를 수정하거나 작업을 완료 후 Commit 을 누르자.
1-8. 아까전에 GitHub사이트에 만들어놓은 레포지토리 주소를 여기에 붙여넣기 한다.(User Password안적혀 있으면 적어줘야합니다.)
1-9. Push Branch 'master'를 하면 프로젝트가 업로드 될 것 이다.
만약에 이 과정에서 master ->master[rejected - non -fast-forward 라는 단어가 발견되면 Pull을 한번해주면된다.
하지만 인터넷 자료를 검색해서 나도 GitHub에 프로젝트를 올리는 방법, GitHub에서 프로젝트를 다운로드(임포트) 받아 사용하는 방법을 배웠고,
나도 간단하게 한번 글을 적어볼려고 한다.
1.Eclipse에서 GitHub로 프로젝트 올리기
1-1. 레포지토리 만들기
GitHub에 회원가입 후 로그인을 하면 다음과 같은 화면이 나오는데 프로젝트를 올릴 레포지토리(저장소)를 만들어야 한다.
1-2. 레포지토리를 만들때는 이름을 줘야된다.
1-3.만들어진 레포지토리의 모습인데 여기에레포지토리 주소가 있다. 이 주소를 통해 프로젝트를 업로드해야하기 때문에 다음과 같은 버튼을 눌러 레포지토리 주소를 복사해 놓아야 한다.
1-4. 자바에서 프로젝트 우클릭 후에 Team->Share Project...을 누른다.
1-5. 내 컴퓨터 상에 저장될 레포지토리를 생성한다.(이걸 이따가 업로드 시킵니다.)
1-6. 프로젝트 우클릭 후 Team-> Add to Index를 하게되면 프로젝트에 ?가 떠있던게 *모양으로 바뀔 것이다.
1-7.소스를 수정하거나 작업을 완료 후 Commit 을 누르자.
1-8. 아까전에 GitHub사이트에 만들어놓은 레포지토리 주소를 여기에 붙여넣기 한다.(User Password안적혀 있으면 적어줘야합니다.)
1-9. Push Branch 'master'를 하면 프로젝트가 업로드 될 것 이다.
만약에 이 과정에서 master ->master[rejected - non -fast-forward 라는 단어가 발견되면 Pull을 한번해주면된다.
| 이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
2017년 5월 31일 수요일
[Github 연동] Github(깃허브) 와 이클립스 연동하기
2016.01.02 00:25
https://github.com/jwgye/project.git
이러한 주소와 같이 개인 깃허브 주소가 있으면 가능합니다.
깃허브 주소가 없을 경우 이전에 작성한 포스트에서 만드시면 됩니다.
2016/01/01 - [Develop/Tool] - [Github 연동] Github(깃허브) 가입하기
STS 의 경우 Git 이 설치되어있기 때문에 별도로 설치할 필요는 없으며 없을 경우 Egit을 마켓에서 설치하시기 바랍니다.
Perspective 에서 Git 을 선택합니다.
Git 에 들어가시면 3개의 항목이 있습니다. 이중에 Clone a Git repository 를 선택합니다.
2개의 메뉴 중 Clone URI 를 선택합니다.
개인의 깃허브 URI 와 아이디 패스워드를 입력해줍니다. port는 입력하지 않아도 됩니다.
기본 Branch인 master를 선택합니다.
깃이 연동될 디렉토리를 선택해줍니다.
보통 SVN과는 다르게 Local의 파일에 commit을 한 뒤에 git 에 push하여 다시 한번 update를 하게됩니다.
local 의 저장소 지정하신다고 보시면 될 것같습니다.
깃이 정상적으로 연결이 되면 아래처럼 세팅이 됩니다.
깃세팅이 끝났으니 이제 개발된 소스 또는 개발 시작하려는 소스를 업로드하면됩니다.
업로드 하려는 프로젝트에 오른쪽 클릭을 하여 Team -> Share Project 를 선택합니다.
Local 저장소를 선택하시고 단순히 Finish를 누르면 Local의 저장소와 함께 동기화가 됩니다.
실제로 깃에 올라간 것은 아니며 깃에 올리기 전 Local 의 저장소에 Commit을 한 뒤에 Update가 가능합니다.
프로젝트에 Add to Index 를 선택하면 프로젝트 파일에 있던 물음표가 사라지는 것을 확인 할 수 있을 것이다.
그런 후 Commit 을 해준다.
Commit 을 실행하면 commit 할 대상과 함께 메세지를 남길 수 있다.
Commit 을 누르면 Local 저장소와 싱크만 맞추며 Commit and Push를 선택하면 Github에 소스가 업로드가 된다.
github에 push 할 때 정보를 확인 한 후 OK 버튼을 누르면 실제 github에 올라가게된다.
깃허브 사이트에서 올라간 소스를 확인 할 수 있다.
| 이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
2017년 5월 26일 금요일
Android studio 리소스 추가 시 발생하는 에러 방지법
build.gradle 의 android 구문에
aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false
추가
2017년 5월 19일 금요일
[Library] StringDistance(문자열 유사도) 검사하는 Library
가끔 정말 가끔, 2개의 문자열이 얼마나 비슷한지 체크해야 되는 경우가 있다.
예를 들면
1) I went to school.
2) I want to Squall.
1) I went to school.
2) I want to Squall.
위의 2개의 문자열이 있다고 가정할 때 2개의 문자열이 실제로 얼마나 비슷한가를
구해야하는 경우가 가끔 있다.
이때 사용하면 좋은 Library를 소개한다.
일명 SecondString이라고 불리는 Library다.
Library 관련 정보는 http://secondstring.sourceforge.net/ 사이트에 가면 얻을 수 있고
어떠한 알고리즘으로 구현되었는지는 http://secondstring.sourceforge.net/doc/iiweb03.pdf
위의 문서를 탐독하면 알 수 있다.
문서는 영어로 작성되어 있고, 처음보는 수학기호들이 많이 존재하며, 그냥 많이 어렵다.
문자열 알고리즘을 개선하고자 함이 아니라면 그냥 Library만 가져다 쓸 것을 권장한다.
Example)
JaroWinkler jaro = new JaroWinkler();
StringDistance distanceChecker = jaro.getDistance();
StringDistance distanceChecker = jaro.getDistance();
double similarity = distanceChecker.score(string1, string2);
위와 같이 사용하면 된다. score는 double값을 반환하는데 1에 가까울수록 2개의 문자열이
비슷하다는 것을 의미한다.
Class Description을 보면 이 외에도 정말 많은 기능을 제공하지만 우선 필요한 기능은
이것뿐이다.
Go! and Coding!
| 이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
2017년 5월 15일 월요일
Java 배열 및 ArrayList 를 Comparable과 Comparator 를 이용해 정렬하기
2017.03.19 11:53
안드로이드 앱을 만들 때, 자료형으로 배열이나 arrayList를 사용하게 되는 경우가 많은데요.작업을 하다보면, 자료를 넣은대로 꺼내서 사용하지 않는 경우도 생기고,
유저에게 보여줄 때, 순서를 필터링해서 보여줘야 하는 경우도 생깁니다.
오늘은, 배열이나, ArrayList를 이용해서, 자료를 원하는 Data기준으로,
정렬하는 방법에 대해서 정리해 보도록 하겠습니다.
1. 간단한 배열의 오름차순 정렬
먼저 아래와 같은 간단한 형태의 배열을 생성합니다.

순서가 뒤죽박죽인데요.
오름차순으로 숫자가 적은 순서대로 정렬해 보도록 하겠습니다.
Array.sort() 메소드에 인자로 위에서 생성한 Array를 넣어주기만 하면 되는데요.
이것을 정렬해서 리스트로 표현해보겠습니다.
참고로 RecyclerView로 리스트를 만드는 방법은 아래 링크를 참조해주세요
>>> RecyclerView 로 listview 정복 <<<
실행시키면 아래와 같이 오름차순으로 정렬된 것을 볼 수 있습니다.
정말 간단하게 정렬이 되었는데요.
이번에는 데이터 모델클래스를 정의하고 객체들을 생성한 후에,
데이터를 정렬하는 것에 대해서 알아보겠습니다.
2. 데이터 모델 클래스 객체 생성 후 정렬
2-1. 데이터 모델 클래스 생성과 배열
위와 같이 간단하게, 하나의 String이나 int만 정렬하는 경우도 있지만,
아래와 같은 데이터 모델을 가진 객체의 배열의 경우에는 어떻게 정렬할 수 있을까요?
한번 객체를 생성하고, Array로 집어넣어 보겠습니다.
여기서 바로 Arrays.sort()메소드를 사용하면 될까요?
아직 아닙니다. 한가지 더 해주어야 하는 것이 있는데요.
정렬의 기준을 마련해 주는 것인데요. 아래에서 알아보도록 하겠습니다.
2-2. Comparable 의 구현(implement)
위에서 애기한 대로 Arrays.sort()를 실행하기 전에,
정렬의 기준을 마련하기 위해서는,
Student데이터 클래스에 Comparable<T>이라는 인터페이스를 implement해주어야 합니다.
이 때, 구현해야 하는 메소드는, compareTo()이구요.
참고로 compareTo()메소드의 소스코드에 적힌 설명을 쓱 보고 지나가겠습니다.
주어진 객체를 비교하여서 작으면 음수, 같으면 0, 더 크다면 양수로 반환한다고 되어 있네요.
그럼 이제, CompareTo()를 구현해야 하는데요.
위의 설명대로, compareTo메소드로 들어온 값보다 크면 양수값을,
그보다 작으면 음수를, 같으면 0을 반환하도록 compareTo()메소드를 아래와 같이, 구현하였습니다.
(물론 score - o.getScore를 해준값을 return하도록 해줘도 됩니다.
그렇지만, 가능성이 낮긴해도 int의 범위를 초과할 수도 있으므로, 조건문을 사용하겠습니다.)
여기서는 Score점수를 기준으로 정렬을 하겠다고, 구현하겠습니다.
이제 드디어, Array.sort()를 실행해 보겠습니다.
아래와 같이, 점수순서대로 잘 정렬되었습니다.
2-3. Comparator 의 구현
Comparator를 이용해서도, 정렬을 할 수 있는데요.
사실 개인적으로는 이 방법을 더 많이 사용하는 것 같아요.특히나, Arrays.sort()메소드는 두번째 인자로 Comparator를 가질 수 있도록 해놓았는데요.
sort()메소드의 소스 잠깐 보고 가시죠.
아래와 같이 sort()메소드의 두번째 인자를, 익명 클래스로 간단하게 구현하여 넘겨줄 수 있습니다.
나이 순서대로 잘, 정렬되어 나옵니다.
당연하게도, 익명클래스가 아니라, 아래와 같이 클래스를 작성한 후에,
객체로 만들어서, sort의 두번째 인자로 넘겨줘도 똑같이 동작합니다.
Comparable 이 data클래스에 implement하는 반면,
Comparator는 고유의 클래스를 가지므로, 다양한 클래스로 정의하고,
좀 더 유연하게 쓸 수 있다는 장점이 있겠네요.
3. ArrayList에서의 정렬
ArrayList에서는 Collections.sort를 사용하면 정렬이 가능한데요.
사용방법이 같아서, 코드를 보면 쉽게 이해가 될 것 같습니다.
Collections.reverOrder()메소드를 사용하면 위의 순서의 역순으로 정렬할 수 있는데요.인자로 역순서를 만들 ArrayList를 주기만 하면 됩니다.
다음가 같이, 나이의 역순으로(내림차순으로) 나오는 것을 볼 수 있습니다.
이렇게 해서, 배열과 ArrayList의 정렬에 대해서 정리해 보았습니다.
크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
| 이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
피드 구독하기:
글 (Atom)








































