검색결과 리스트
2014/01/18에 해당되는 글 3건
- 2014.01.18 [프로젝트] Tweech (1)
- 2014.01.18 [프로젝트] 분실물 다나와 (1)
- 2014.01.18 [프로젝트] StarOS를 아시나요?
글
[프로젝트] Tweech
1. 기본사항
시스템명: Tweech
주관기관: 앳게임
개발인원: 5명
프로젝트 기간: 2010.08.02 ~ 9.17
2. 프로젝트 소개
SNS 시장에서 트위터 서비스의 점유율이 빠른 속도로 증가함에 따라 트위터를 통한 정보와 지식 공유의 수준 역시 나날이 높아지고 있다.
Tweech 앱은 미국 내 트위터 서비스 이용자들을 대상층으로 한다. 단순한 키워드 검색 서비스를 넘어서서 사용자를 대변하는 Bot(로봇)을
Following 함으로써 관심있는 분야에 대한 최적의 글을 자신의 타임라인에서 구독할 수 있는 앱이다.
이런 검색시스템을 바탕으로 트위터 사용자들이 작성한 메시지들의 패턴을 분석하여 사용자와 유사한 유형을 가진 다른 사용자들을 추천해주는
기능을 제공한다. 트위터 검색시스템 구축을 1차 목표, 로봇 및 성향 분석 모듈 구축을 2차 목표로 하며, 현재 버전에서는 1차 목표까지 완료하였다.
3. 개발환경
타겟 시스템: iPhone 3GS
SDK: Java 5, iPhone SDK 3.0, Apache Lucene 3.0
언어: Java, Objective-C
프레임워크: iBATIS 2.3, Spring2.5, SpringMVC
분석/설계도구: Visual Paradigm
개발도구(IDE) : Eclipse 3.6, Xcode 3
서버 운영체제: CentOS 5.4
애플리케이션 서버: Apache Tomcat 6.02
데이터베이스: MySQL 5.1
[iPhone Client]
OAuth 인증처리 및 사용자 계정관리 (Objective-C / C언어 사용)
Third Party 라이브러리를 사용하지 않고, 웹 서비스 자원 오픈 표준인 OAuth 인증처리를
구현하였다. 최대 5개까지의 트위터 계정을 등록할 수 있으며, 최초 등록 시 OAuth 인증과정을
거치게 된다.
Tweeter API (Follow / Favorite / Retweet) 요청 및 처리 (Objective-C 언어 사용)
Tweeter API와 연동하여 검색된 트윗글을 북마크하고, 리트윗하는 기능을 구현하였다. 또한
트윗글 작성자를 팔로우하는 기능도 제공한다.
[Server]
색인기(Indexer) 모듈 (Java 언어 사용)
Apache Lucene 3.0 검색 라이브러리를 사용하여, 분석기를 구현하였다. Crawler 모듈에서 수집된 트윗글을 네트워크로 전송 받아 파일시스템에 색인파일을 생성한다.
[iPhone Client]
OAuth 인증처리 및 사용자 계정관리
OAuth 인증처리 과정은 다음과 같다. Tweeter API 지원 페이지에서 Third Party 앱으로
등록하면 Consumer Key, Consumer Secret 값이 발급된다. 이 값과 사용자부터 입력 받은
트위터 서비스 UserName과 Password를 바탕으로 OAuth 인증 URL로 접속하여 Request
Token 요청, Acces Token 요청과정을 거쳐 최종적으로 Access Token을 획득하게 된다.
Access Token은 사용자 데이터에 접근을 허용하는 일종의 허가권으로 인증이 요구되는 트위터
API 사용시 필요한 값이다. OAuth 구현시 트위터 OAuth 도움말 페이지 및 OAuth Core1.0 Spec을 참고하여 구현하였다.
최대 5개까지의 계정을 등록하여 사용할 수 있으며, 등록 요청을 받은 계정정보는 유효성 검사
후 OAuth 인증처리를 거치게 되며, 성공시 iPhone SQLite 데이터베이스에 저장된다.
6-2.색인기(Indexer) 모듈
색인기(Indexer) 모듈
색인기 모듈은 Java 언어를 사용하여, Apache Lucene 3.0 오픈소스 검색 라이브러리를 사용하여 구현하였다.
Crawler가 수집한 트윗글(Status) 목록을 네트워크를 통해 전송 받아, 색인파일을
생성하는 역할을 한다. Crawler가 수집한 트윗글 목록이 끊임없이 전송되기 때문에 지연없이
색인을 생성하는 것이 핵심이 된다. 색인속도가 전송되는 트윗글의 속도를 따라가지 못하게 되면 메모리 부족현상이 발생하게 된다.
성능을 향상을 위해 5개의 쓰레드로 동작하며, 100건 단위로 트윗글을 메모리에 색인한다. 빈번한 파일 색인 생성작업은 가장 CPU
자원을 소모하기 때문에 1000건의 트윗글이 메모리에 색인되면 파일색인을 생성하도록 처리하였다.
색인된 파일들은 NFS(Network File System)을 통해 검색기 모듈에 의해 참조된다.
빠른 검색을 지원하기 위해서 증가하는 색인파일들을 주기적으로 최적화하여 색인파일의 개수를
줄이고 정리해야한다. IndexerOptimizer는 색인기 모듈 구동과 동시에 지정된 시간 후에
일정 주기로 색인파일을 최적화 한다.
7. 주요화면
|
|
|
|
|
'언어로그 > 프로젝트로그' 카테고리의 다른 글
| [프로젝트] Tweech (1) | 2014.01.18 |
|---|---|
| [프로젝트] 분실물 다나와 (1) | 2014.01.18 |
| [프로젝트] StarOS를 아시나요? (0) | 2014.01.18 |
설정
트랙백
댓글
글
[프로젝트] 분실물 다나와
1.기본사항
시스템명:분실물 다나와
주관기관: 앳게임
개발인원: 5명
프로젝트 기간: 2010.10.1 ~ 11.19
2.프로제트 개요
매일 지하철에서만 약 200여건의 분실물이 발생하며 그 중 28% 가량이 주인에게 돌아가지 못하고 누적되어
보관장소 확충과 관리인력 낭비 문제를 발생시키고 있는 실정이다.
“분실물 다나와” 는 서울시 대중 교통 통합분실물 센터 웹서비스와 연동하여 사용자들이 분실물을 빠르게
찾을 수 있게 편리한 서비스 제공과 분실물 반환율 증가를 통한 예산 절감을 목표로 한다.
분실물 조회 서비스 이외에도 유사분실물로 의심되는 항목들을 Push 메시지로 전달해주는 편리한 기능을 제공한다.
또한 서울시 대중교통 조합에 소속된 모든 업체들의 연락처와 위치를 지도상에서 제공하여 좀더 용이하게 분실물을
회수할 수 있게한다. (서울시/중소기업청 주관 앱 공모전 출품)
3. 개발환경
타겟 시스템: iPhone 4G
SDK: Java 5, iPhone SDK 3.2
언어: Java, Objective-C
프레임워크: iBATIS 2.3, Spring2.5, SpringMVC
분석/설계도구: Visual Paradigm
개발도구(IDE) : Eclipse 3.6, Xcode 3.5
서버 운영체제: Ubuntu 10.04
애플리케이션 서버: Apache Tomcat 6.02
데이터베이스: PostgreSQL 8.4
4. 맡은 업무및 구현 내용
프로젝트 일정 계획 및 업무 분장
앱 화면전환 절차 설계
클라이언트/서버 유사 분실물 관리/통지 모듈 설계 및 구현
(Apple Push Notification Service 연동)
분실물 이미지 cache 모듈 설계 및 구현
5. 분실물 다나와 시스템 구성도
[iPhone Client]
클라이언트 유사 분실물 관리/통지 모듈
관심있는 분실물에 대한 대중교통, 분실물 종류를 입력하면 원하는 기간동안 분실물 센터에 등록되는 유사 분실물들의 정보를 Push 받을 수 있다. Push 서비스를 위해, 앱 최초 구동시 사용자
iPhone에 대한 Device Token과 UUID를 추출하여 서버에 전송하며, 이 값들은 APNS 에 Push를
요청하기 위해 필요한 데이터가 된다.
분실물 이미지 cache 모듈
웹서비스를 통해 검색된 분실물 목록을 10개 단위로 받아온다. 목록을 받아오는 API와 분실물에
대한 상세조회 API, 분실물 이미지 조회 API가 모두 분리되어 있어, 분실물 이미지를 조회하기
위해서는 3번의 요청이 이루어져야 한다. 다수의 요청과 동일한 이미지 중복요청으로 인한 성능
감소를 극복하기 위해 Dictionary에 요청한 이미지를 캐시하도록 구현하였다.
[Server]
서버 유사 분실물 통지 모듈
유사 분실물이 존재할 경우 Apple Push Notification Service 에 해당 사용자 앱에 Push 메시지전송을 요청한다. Local and Push Notification Programming Guide 문서를 참고하여 구현하였다.
6. 푸시 모듈 클래스 다이어그램
[APNS에 Push Service 등록 요청]
앱 최초 구동시 사용자 iPhone과 앱에 대한 Push 서비스 등록을 APNS 서버에 요청한다.
UIApplication 클래스에 registerForRemoteNotificationTypes: 메소드를 사용한다.
[APNS로부터 Device Token 수신]
서비스가 수락되면 APNS로부터 앱을 유일하게 식별하는 값인 Device Token을 응답 받는다.
APNS에 Push를 요청하기 위해 Device Token를 함께 전송해야 한다.
[서버에 Device Token과 UUID 전송]
사용자 Device를 유일하게 식별하기 위한 디바이스 UUID와 Push 요청을 위한 Device Token을
서버에 전송한다. UUID는 본 시스템에서 사용자를 유일하게 구분하는 값이 된다.
[서버에 통지 받을 분실물 등록]
사용자는 앱을 사용하여 관심있는 분실물에 대한 정보를 등록한다.
[Push 메시지 수신]
UIApplicationDelegate 프로토콜의 RemoteNotification 관련 메시지를 구현하면, Push 메시지를
통해 관심 분실물에 대한 키를 통지 받을 수 있게 된다.
[서버에 유사 분신물 목록 조회요청]
통지받은 키와 함께 유사 분실물 목록을 요청하면, XML 형태로 데이터를 수신받게 된다.
7. 주요 화면
메인화면
분실물 목록조회 화면
분실물 정보 상세조회
유사 분실물 발견시 등록
유사 분실물이 발견시 푸시수신
발견된 유사 분실물 목록
발견된 유사분실물 상세정보
대중교통별 분실물 센터의 전화번호와 위치 안내
버스별 분실물 센터
버스별 분실물센터 위치
'언어로그 > 프로젝트로그' 카테고리의 다른 글
| [프로젝트] Tweech (1) | 2014.01.18 |
|---|---|
| [프로젝트] 분실물 다나와 (1) | 2014.01.18 |
| [프로젝트] StarOS를 아시나요? (0) | 2014.01.18 |
설정
트랙백
댓글
글
[프로젝트] StarOS를 아시나요?
2009년 8월~12월은 가장 재미있었던 개발을 했던 순간으로 기억합니다.
비트 자바 고급반을 수강하면서 그동안 몰랐던 웹이라는 기술에 눈을 떳던 시간이었고,
프로젝트다운 프로젝트를 했던 순간이었고 좋은 동료들과 인상깊었던 결과물을 완성할 수 있었던 시간이었습니다.
결과물을 SourceForge 에 올려 오픈소스 프로젝트로 삼겠다던 당시의 포부는 게으름으로 이루지 못했지만 ^^;;
이대로 그냥 지나쳐 버리기엔 너무 아쉬울 당시의 결과물을 표현하고자 이 글을 작성합니다 ~
1. StarOS - "언제 어디서나 웹을 내 개인PC 환경처럼 쓸수 없을까"
StarOS는 웹을 마치 개인 PC 바탕화면처럼 사용하면 좋겠다는 생각으로 만들어진 "브라우저에서 동작하는 OS" 입니다.
현재의 서비스들에 비유하자면 "클라우드+웹하드+a" 정도로 생각할 수 있겠네요.
2. StarOS로 무엇을 할 수 있는데?
기획당시 일반적으로 개인 PC에서 할 수 있는 작업들을 할 수 있도록 하고 싶었습니다.
예를 들자면 음악/비디오 감상, 메일쓰기, 워드 문서작성, 사진 보기, 일정작성, 인터넷 서핑과 같은 가장 빈번하게
사용하는 작업들 말이죠.
2달이라는 짧은 시간동안 프로젝트를 완료 해야했기에 다소 기능을 제한하여 다음을 목표로 삼았습니다.
- 일반적인 윈도우 환경과 유사한 사용자 인터페이스를 제공한다
- 이미지 파일을 볼 수 있다.
- 음악과 비디오를 감상할 수 있다.
- 파워포인트, 워드문서를 볼 수 있다.
- 일정을 작성하고 조회할 수 있다.
- 개인파일을 업로드, 다운로드 할수 있다.
- 메일을 작성하고 조회할 수 있다.
프로젝트가 순조롭게 진행되었고, 2달이 다되어 갈 무렵에 계획했던 기능들이 모두 구현되었습니다.
팀원들과 테스트를 진행하던 중에, StarOS 가 기능들을 잘 제공하기는 하지만 너무 재미없다는 것을 깨닫게 되었습니다.
"누군가와 공유할 수 있는 무엇가가 있으면 좋겠다" 는 생각을 하게 되었고,
방문자에게 파일을 공개/비공개 유무를 설정할 수 있고, 방명록을 통해 글을 남길 수 있는 기능을 추가로 적용했습니다.
SNS 기능을 추가한 것인데요! 남아있는 프로젝트 시간이 없어서 "방명록" 과 "파일 공개설정" 에 그쳤지만
채팅이라던가 친구와 게임하기와 같은 소셜 기능 등 재미있는 요소를 많이 적용할 수 있겠다는 생각이 들었습니다.
3. 개발 개발 개발
4명의 팀원들과 주제선정, 마인드맵을 사용한 브레인스토밍을 거쳐 구현할 기능 구체화한 뒤...
업무를 분장하고 개발에 착수했습니다. Flex 플랫폼을 모두 처음 접했기 때문에 처음 진행은 더딜 수 밖에 없었습니다.
하지만 모두들 같은 목표를 위해 열심히 했고, 팀워크가 워낙 좋았기 때문에 조금씩 결과물이 보이기 시작했습니다.
제가 담당했던 부분은 전반적인 아키텍처 설계 및 탐색기와 메일클라이언트의 구현이었습니다.
"윈도우 창관리"와 "아이콘과 이벤트 연동" 과 같이 상당히 고난이도의 UI 를 다루는 기술이 필요했기에 처음에는 너무
막막했습니다. 그러던 중 구글코드에서 창관리를 구현한 오픈소스를 발견하였고, 저희 프로젝트에 맞게 커스터마이징하고
아이콘 배치구조와 클릭시 이벤트를 전송하는 구조를 구현하고, 팀원들에게 전파했습니다.
기반코드가 만들어지니 그 이후부터는 좀더 수월하게 진행할 수 있었습니다. 각 자 맡은 모듈을 구현하면서 재미있게 놀수 있었죠!
유일한 여자 팀원이 있었는데, 수업시간에 매일 조느라고 프로젝트에 적응할 수 있을까? 란 고민이 컸었는데 프로젝트에서
이분의 역할이 상당했습니다. 탁월한 디자인 안목으로 StarOS에 생명을 불어 넣어주셨었죠. 잠만 덜 자면 참 좋았을 텐데 ㅋ
4. 내가 StarOS다!
2달간의 프로젝트 완료후 발표회에서 사용했던 발표자료 입니다.
StarOS의 모습은 아래와 같습니다.
시연 영상도 볼까요?
전문 다자이너가 없어서 웹사이트 디자인은 많이 부실하지만
StarOS 애플리케이션은 나름 봐줄만 하죠 ^^
Java 고급과정에서 배웠던 Spring2.5, iBATIS 내용들을 200% 활용하였고, Flex도 학습할 수 있어서 기술적으로 많은 것을 배웠던 프로젝트였습니다.
가끔 그때 Source forge에 오픈소스로 등록하여 지금까지 계속 개선하고 가꾸어 왔으면 어땠을까? 하는 생각을 해보네요
마지막으로 "재미있게 개발을 하기위해 힘쓰고 있는가" 라는 물음을 던지면서 이 글을 마칠까 합니다.
'언어로그 > 프로젝트로그' 카테고리의 다른 글
| [프로젝트] Tweech (1) | 2014.01.18 |
|---|---|
| [프로젝트] 분실물 다나와 (1) | 2014.01.18 |
| [프로젝트] StarOS를 아시나요? (0) | 2014.01.18 |