2014 학년도종합설계 1 차중간보고서 ( 스마트폰기반의나만의검색엔진 ) 성명학번 연락처 하희진 김태훈

Similar documents
2014 학년도종합설계 운영계획서 ( 스마트폰기반의나만의검색엔진 ) 성명학번 연락처 하희진 김태훈 담당교

API 매뉴얼

Microsoft PowerPoint - chap01-C언어개요.pptx

쉽게 풀어쓴 C 프로그래밊

DBMS & SQL Server Installation Database Laboratory

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

JUNIT 실습및발표

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

Microsoft Word - src.doc

Lab 3. 실습문제 (Single linked list)_해답.hwp

게시판 스팸 실시간 차단 시스템

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

11장 포인터

The Pocket Guide to TCP/IP Sockets: C Version

UI TASK & KEY EVENT

PowerPoint 프레젠테이션

Chapter #01 Subject

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

PowerPoint Presentation

Microsoft PowerPoint - ch07 - 포인터 pm0415

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

adfasdfasfdasfasfadf

Windows 8에서 BioStar 1 설치하기

API 매뉴얼

PowerPoint 프레젠테이션

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

chap 5: Trees

강의 개요

Tibero RDBMS

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Frama-C/JESSIS 사용법 소개

BMP 파일 처리

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

Cloud Friendly System Architecture

윈도우시스템프로그래밍

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

CyberLink YouCam

Tibero

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

프로젝트개요 - 사용자들의모바일인터넷사용시간이늘어남 - 모바일광고는높은광고마케팅효과를얻게되었다. - 현재의모바일광고서비스는사용자에게불필요한광고가대부분 - 무선인터넷이지원되는곳이라면, 사용자의현재위치에맞는광고를제공

Microsoft PowerPoint - chap10-함수의활용.pptx

C++ Programming

Microsoft PowerPoint - Windows CE Programming_2008 [호환 모드]

UI TASK & KEY EVENT

JDBC 소개및설치 Database Laboratory

슬라이드 1

Chap 6: Graphs

2002년 2학기 자료구조

[Brochure] KOR_TunA

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Index Process Specification Data Dictionary

Altibase Installation Manual

PowerPoint 프레젠테이션

C++ Programming

OCW_C언어 기초

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

Microsoft PowerPoint - 07-Data Manipulation.pptx

Ç¥Áö

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

JAVA PROGRAMMING 실습 08.다형성

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

공개 SW 기술지원센터

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

rmi_박준용_final.PDF

Microsoft PowerPoint - Java7.pptx

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

Microsoft PowerPoint - chap06-5 [호환 모드]

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

슬라이드 1

UNIST_교원 홈페이지 관리자_Manual_V1.0

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

제4장 기본 의미구조 (Basic Semantics)

Microsoft PowerPoint - e pptx

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Java ...

PowerPoint 프레젠테이션

서현수

ALTIBASE 사용자가이드 Templete

PowerPoint Presentation

설계란 무엇인가?

특허청구의 범위 청구항 1 게임 서버 또는 미들웨어에 의해, 사용자 단말기로부터, GPS 정보, IP 정보, 중계기 정보 중 적어도 하나를 이 용한 위치 정보와, 상기 사용자 단말기에 설정된 언어 종류를 포함하는 사용자 정보를 수신하는 단계; 상기 게임 서버 또는 미들

문서 템플릿

Transcription:

2014 학년도종합설계 1 차중간보고서 ( 스마트폰기반의나만의검색엔진 ) 성명학번 e-mail 연락처 하희진 200412361 wheejinv@naver.com 010-2009-9073 김태훈 200811424 eamay00@gmail.com 010-9032-5537 담당교수 : 유준범교수님 ( 인 ) - 1 -

목 차 1. 프로젝트개요 2. 개발동기 3. 구현계획 4. 기대효과 5. 프로젝트진행상황 6. 어플리케이션 UI 7. 개발환경 8. 팀구성및역할분담 9. 프로젝트추진일정 10. 참고문헌 - 2 -

1. 프로젝트개요 가. 개요 최근블로그를통한정보검색이활발해지고, 일반사용자들의블로그운영이일반화되었다. 이와관련하여일상정보부터전문정보까지블로그의활용도와의존도가높아짐에따라기업의광고대행을맡은상업성블로그의비율도함께높아지고있는추세이다. 일반미디어광고와는달리블로그를통한간접광고는일반사용자들이쉽게분별해낼수없어얻고자하는정확한정보를얻기어렵다. 또한사용자의성향에맞는블로거와이웃을맺을수는있지만이웃블로거들의각각의글들을한눈에비교분석하여최적의정보를찾는것또한불가능하여정보검색에불필요하게많은시간을할애할수밖에없는실정이다. 나. 목적 본프로젝트에서개발하는스마트폰어플리케이션기반의데이터검색시스템은사용자가임의로부여한기준을통해선정된블로그내에서필요한데이터만을얻어비교분석할수있는서비스를제공하는것을목적으로한다. - 3 -

다. 목표 - 스마트폰어플리케이션에탑재가능한데이터검색시스템을개발하여다음과같은서비스를제공한다. - 서버컴퓨터는사용자부터입력받은 ID를이용, 블로그를크롤링하여데이터를 DB에저장한다. - 사용자는자신이선택한블로거들의포스트목록중부여한기준에부합하는포스트목록만을추출한다. - 추출된각포스트마다공감, 코멘트수등의정보를통해신뢰도를판단할수있고, 해당정보를토대로순위구성이가능하다. - 4 -

2. 개발동기 평소블로그를통한정보검색시불편했던사항들과추가되었으면하는기능들을토대로사용자에게최적화된정보만을제공하는진일보한데이터검색시스템을직접구현해본다. C++ 을활용한크롤러구현, ODBC를활용한 DBMS 구현, 자바를활용한프로그램구현등전공수업을통해습득한다양한기술들을활용해목표한결과물을만들어내는한편, 두명의팀원모두경험이없는안드로이드기반의어플리케이션개발에도전해본다. - 5 -

3. 구현계획 가. 전체시스템구조 나. 웹크롤러동작방식 1 seed page는사용자에게입력을받게되는데, 받게되는입력값은사용자사용자가선정한네이버블로거의 ID이다. 2 입력받은 ID 를토대로 seed page url 를설정하고, 소켓 API 를사용하여 html 문서를가져온다. 3 html 문서를분석하기쉽게토큰으로쪼갠다. 예를 들어 <a href = http://naver.com"> 네이버 </a> 라 는 html 구문이있다면이구문은태그의시작을 - 6 -

알리는 <a href = http://naver.com"> 구문과텍 스트인네이버구문과태그가닫히는 </a> 구문으 로쪼개어볼수있을것이다. 4 이를토대로 html 문서에서포스트에관련된정보를추출할수있다. 관련된정보로는블로거아이디, 포스트제목, 포스트업데이트시간, 포스트 url 주소, 본문의내용, 사용된이미지의주소와개수, 코멘트수, 공감수등이있다. 5 이러한정보는 ODBC 를이용하여 DBMS 에접속한 후 DB 에저장한다. 다. DB 블로거는여러개의포스트를쓸수있고, 각각의포스트는여러개의코멘트, 이미지, 태그, 공감 ( 을한사람 ) 정보를담고있다. - 7 -

4. 기대효과 최근넘쳐나는광고성포스트들을제외하고결과값을보여준다면사용자의시간을절약할수있는이점이생길것으로기대한다. 하지만사용자가자신이선호하는블로거들을선정하는데있어서적은수의블로거들만선정하게된다면검색결과값이빈약하게될것이므로네이버블로그카테고리 ( 영화, 미술 디자인, 애완 반려동물, 맛집, IT 컴퓨터 ) 등에서선정한파워블로거들을 DB 에등록해두어, 충분한정보반경안에서유용한정보검색을가능하게한다. 사용자중심의검색기준을마련하여 ( 코멘트수, 공감수, 애정도등 ) 사용자가입력한검색어가포함된게시글중유용한글들을선별할수있다. - 8 -

5. 프로젝트진행상황가. crawler 구현 1. string connecthttp(const char *url) url을매개변수로하여해당 url의 html을읽어와서 string형타입으로반환 1-1. InternetOpen("test", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL,0) 인터넷관련 DLL 을초기화한다. 1-2. InternetOpenUrl(hInternet,url, NULL, 0, INTERNET_FLAG_RELOAD, 0); URL에대한접근을하는데에사용하는함수이다. 만약해당 URL이존재하지않는다면 0을리턴하고, URL이있다면 HINTERNET 핸들을반환한다. 1-3. InternetQueryDataAvailable (hurl, &dwsize, 0, 0) 네트워크카드를통해서들어온데이터가버퍼에쌓이게되는데, 그버퍼의양을읽어낸다. 곧바로저장하거나읽어낼때이용가능한버퍼사이즈를얻어낸다. 버퍼사이즈는 DWORD dwsize에저장한다. - 9 -

1-4. InternetReadFile(hURL, buffer, dwsize, &ReadSize) Internet 정보를읽어온다. hurl은조사할버퍼의핸들러이고, buffer는읽은데이터를저장할버퍼이다. dwsize는읽고자하는데이터의크기이다. 2. int tag_finder(struct token *tok, const char *str_html, int index) < 로시작하는태그를찾아의미있는 token 정보를저장한다. token 구조체는토큰의타입 (int) 과토큰의컨텐츠 (char[10000]) 으로구성된다. index는 html 문서를나타내는 str_html의분석할시작지점을나타낸다. 다음그림은아이디가 hyunwoo879인블로거의 http://blog.naver.com/postlist.nhn?from=postlist& blogid=hyunwoo879&categoryno=0&currentpage =1 페이지의 html중 3407번줄을분석한결과를보여준다. - 10 -

토큰타입은 0, 1, 2 세가지로나뉘어져있으며 0 은 태그가열리는 TAG_OPEN, 1 은태그가닫히는 TAG_CLOSE, 2 는 TEXT 를나타낸다. 3. void parser(string blog_id) 실질적으로파싱을하는부분으로소스의일부분을첨부. while (str_size > index) { index = tag_finder(&tok, html, index); /* 1. post tiitle 파싱. strstr은문자s1에서 s2를찾아그주소를반환한다. 토큰의타입이 TAG_OPEN 이고토큰의내용중 "pcol1 itemsubjectboldfont") 와같은부분이있다면참이된다. */ if ( (tok.type == TAG_OPEN) && strstr(tok.contents, "pcol1 itemsubjectboldfont") ) { post_title_flag = true } else if ( (tok.type == TEXT) && post_title_flag ) - 11 -

} { } /* 타이틀부분인 tok.contents 를페이지정보가담겨있는 PageInfo 클래스의변수인 page에 post title 정보를저장한다.*/ page.setposttitle(tok.contents); post_title_flag = false 4. 다음그림은크롤러가동작하여 hyunwoo879라는네이버블로거가작성한포스트들중하나이다. PageInfo 클래스변수에저장한후각변수들을 test.txt 파일에출력한결과이다. 5. ODBC 연동 5-1. SQLAllocHandle (SQL_HANDLE_ENV,SQL_NULL_HANDLE, &henv) 모든유형의핸들을할당한다. SQLAllocConnect() 또는다른함수를호출하기전에이함수를먼저 - 12 -

호출해야한다. 이후에입력으로환경핸들을필요 로하는모든함수에 handle 값이전달된다. 5-2. SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)sql_ov_odbc3,0) 현재환경에대한 ODBC 환경설정을한다. 5-3. SQLConnect(hdbc, (SQLCHAR*)dsn_name, SQL_NTS, (SQLCHAR*)log_in_id, SQL_NTS, (SQLCHAR*)passwd, SQL_NTS) 목표데이터베이스와의연결을설정한다. 목표 SQL 데이터베이스와옵션으로권한부여이름, 인증 string을제공해야한다. 5-4. SQLExecDirect (SQLHSTMT hstmt, SQLCHAR *szsqlstr, SQLINTEGER cbsqlstr) 지정된 SQL 문을직접실행한다. 명령문은한 번만실행될수있다. 연결된데이터베이스서 버는명령문을준비할수있어야한다. SQLHSTMT hstmt 은명령문핸들로써 hstmt 와 연관된열린커서가없어야한다. SQLCHAR *szsqlstr 은 SQL 문스트링으로연결 된데이터베이스서버는명령문을준비할수 있어야한다. SQLINTEGER cbsqlstr 은 szsqlstr 인수의내용길이로길이는명령문의정확한길이또는명령문이널로종료될경우 SQL_NTS 로설정한다. - 13 -

5-5. SQLRETURN SQLFetch (SQLHSTMT hstmt); 결과집합의다음행으로커서를진행시키고 바인드된열을검색한다. 5-6. SQLGetData (SQLHSTMT hstmt, SQLSMALLINT icol, SQLSMALLINT fctype, SQLPOINTER rgbvalue, SQLINTEGER cbvaluemax, SQLINTEGER *pcbvalue) 결과집합의현재행에서단일열에대한자료를검색한다. SQLFetch() 를호출하여직접어플리케이션변수로자료를전달하는 SQLBindCol() 대신이함수를사용할수있다. SQLGetData() 를호출하기전에 SQLFetch() 를호출해야한다. 각열에대해 SQLGetData() 를호출한후에, 다음행을검색하기위해 SQLFetch() 가호출된다. SQLGetData() 는 SQLGetCol() 과같으며, 호환성을위해두함수모두지원한다. 5-7. SQLFreeStmt (SQLHSTMT hstmt, SQLSMALLINT foption) 명령문핸들에의해참조된명령문의처리를종료 5-8. SQLFreeHandle (SQLSMALLINT htype, SQLINTEGER handle) 핸들을무효화하고해제한다. - 14 -

6. DBMS 크롤러가수집한자료들이 MSSQL sever 에 저장되었는지확인 - 15 -

6. 어플리케이션 UI - 16 -

1 어플리케이션타이틀 2 검색어입력창 3 아래나열될포스트들의정렬방식선택 - favorite : 사용자가기호에맞게설정한방식대로각각의포스트에점수를부여하고, 해당점수의합이높은포스트순으로정렬 (ex. 댓글 1개당 1점 + 공감 1개당 2점 + 첨부이미지파일 1개당 1점 ) 7의 Setting 란에서설정가능 - comment : 댓글수가많은순으로정렬 - sympathy : 공감수가많은순으로정렬 4 포스트제목 5 포스트업데이트날짜 6 C : comment/ 댓글수, S : sympathy/ 공감수 7 작업선택 - Search : 자료검색 - List : 사용자가자료검색에활용하기위해선택한블로그리스트 - Setting : 3번의 favorite 설정및블로그리스트추가 / 삭제 - Exit : 프로그램종료 - 17 -

7. 개발환경가. 개발툴 Microsoft Visual Studio 2010 Microsoft SQL Server 2012 Eclipse Standard/SDK - Luna Release (4.4.0) Build id: 20140612-0600 나. PC 환경 OS : Microsoft Windows 7 버전 Service Pack 1 빌드 7601 프로세서 : Intel(R) Core(TM) i3-2100 CPU @ 3.1GHz 메모리 : 8GB 시스템 : 64비트운영체제 - 18 -

8. 팀구성및역할분담 하희진 - 웹크롤러구조설계 - 웹크롤러구현 - ODBC 연계 김태훈 - 서비스어플리케이션 UI 설계 - 서비스어플리케이션개발 공통 - 제반기술분석및이해 - 자료수집및테스트 - 보고서작성 - 19 -

9. 프로젝트추진일정 9 월 10 월 11 월 1 2 3 4 1 2 3 4 1 2 3 4 제반기술분석및이해계획서작성웹크롤러구조설계웹크롤러구현 ODBC 연계서비스어플리케이션 UI 설계서비스어플리케이션개발자료수집및테스트최종테스트및보고서작성 - 20 -

10. 참고문헌 WinInet 라이브러리 http://blog.naver.com/kgg1959/30188202655 SQL API http://publib.boulder.ibm.com/html/as400/v5r1/ic29 86/index.htm?info/cli/rzadpmst02.htm 열혈강의 Java Programming, 김승현 실전앱프로젝트 - 안드로이드지하철정보개발편 ( 장영남, 제이펍 ) - 21 -