레이블이 Technologies인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Technologies인 게시물을 표시합니다. 모든 게시물 표시

2010년 12월 2일 목요일

RSS

RSS는 버전도 다양하고 RSS를 지칭하는 말들도 다양하게 존재했다.

RSS 0.9는 RDF Site Summary의 약자로 Netscape에서 my.netscape.com 에서 사용하기 위해 디자인되었으며 기존의 scriptingNews format 을 지원하고 RDF를 통해 header를 구성하고 나머지는 xml 로 되어 있다. (1999년 3월)

RSS 0.91은 Rich Site Summary의 약자로 Netscape의 Dan Libby에 의해 스펙이 만들어졌으며 RDF header를 제외하고 scriptingNews 2.0b1 의 대다수 기능을 포함하고 있다. (1999년 7월)

RSS 1.0은 오라일리의 Rael Dornfest가 이끄는 RSS-DEV 에서 발표하였다. RDF와 namespace 기반으로 되어 있으며 앞선 버전들의 format을 모듈로 받아 들였다. (2000년 8월)

RSS 0.92는 0.91 버전에 선택 요소들을 포함하고 있다. (2000년 12월)

RSS 2.0은 Really Simple Syndication의 약자로 0.92버전에 선택 요소들을 포함하고 있으며 0.92버전과의 하위호환성을 위해 namespace 를 2.0 내의 요소들에게는 적용되지 않지만 RSS 2.0 feed 들에게 적용되게 하였다.

참고
- http://en.wikipedia.org/wiki/RSS
- http://cyber.law.harvard.edu/rss/rssVersionHistory.html

RSS 구조에 대해 알아보기 위해 위키피디아의 문서를 열심히 번역하던 중...
키보드를 잘못 건드려 모두 날라가는 불상사를 겪었다...
이런 젝일...
다소 잘못된 번역이 있을테니 지적해 주시기 바란다.


그럼 이중에서 RSS 2.0 규격에 대해 알아보자.
이 문서에서 다루는 내용은 Harvar의 Berkman Center에서 제공하는 RSS 2.0 Specification을 기준으로 한다.

선언

RSS는 xml 문서이므로 xml 문서선언이 이뤄져야 하고 <rss>를 root element로 갖는다.

<?xml version="1.0"?>
<rss version="2.0">



본문 구조
본문은 다음 두개의 Section으로 이뤄져 있다.

<channel>
<item>

<channel> section은 현재 RSS를 제공하는 사이트(?)에 대한 정보를 담고 있으며
<item> 은 RSS로 제공되는 개별 내용이다.
마치 신문에서 <channel>은 신문사명, 제호 등 발간되는 신문에 대한 정보에 해당하고
<item>은 개별 기사에 해당한다.
<channel>은 optional 요소라고 하나 실질적으로 필수 요소의 역할을 한다.
개별 section의 하위 요소들에 대해 알아보자.
 


<channel> section
  • 필수 하위 요소
    
Element 명 설명 Example
title

현재 채널의 이름.

Website에서 제공되는 정보는 동일 RSS에서 제공하는 정보와 동일해야 한다.

Website의 사이트명과 동일해야 한다.

yoonani's news
link 해당 Website 의 url http://www.yoonani.pe.kr
description 채널에 대한 설명 yoonani가 제공하는 정보입니다.

  • 선택 가능 하위 요소
    
Element 명 설명 Example
language

W3C에서 정의한 채널에서 사용하는 언어 코드

(두자리 언어코드-두자리 국가코드)

en-us

ko-kr

copyright 채널의 저작권 http://creativecommons.org/licenses/by-nc-sa/2.0/
manageEditor 채널 Editor의 email yoonani@gmail.com
webMaster Webmaster email yoonani@gmail.com
pubDate 정기적인 배포 날짜로 신문사의 경우 24시간 주기등을 사용한다.기본적으로 RFC 822에 의한 시간 포맷을 사용하나 년도에 대해서는 두자리, 네자리 모두 가능 Sat, 07 Sep 2002 00:00:01 GMT+9
lastBuildDate 채널의 내용이 마지막으로 바뀐 날짜
category 채널에서 제공하는 카테고리 정보로 <item>이 사용하는 방법과 동일하다. <category>Info</category>
generator RSS를 제공하는 프로그램 명 MightyInHouse Content System v2.3
docs RSS file에서 사용하는 포맷에 대한 문서를 가리키는 URL http://blogs.law.harvard.edu/tech/rss
cloud 채널에 대한 업데이트를 공지하는 cloud에 등록하는 과정을 허가한다. <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl 원본 내용을 다시 읽어오기 전 캐쉬되는 시간을 분으로 나타낸다. <ttl>60</ttl>
image 채널에 표시될 GIF, JPEG, PNG 이미지를 지정한다. 예제의 하위 요소를 갖는다.

<url>

<title>

<link>

rating 채널의 PICS 등급을 나타낸다.
textInput 채널에 표시될 text 입력상자를 지정하는 것으로 예의 sub element를 통해 내용을 지정한다. <title>
<description>
<name>
<link>
skipHours RSS 정보를 읽어가는 측에 몇시간에 한번씩 정보를 확인하는지 알려준다.
skipDays RSS 정보를 읽어가는 측에 며칠에 한번씩 정보를 확인하는지 알려준다.


<item> 요소
Element 설명 Example
title 해당 아이템의 제목 Venice Film Festival Tries to Quit Sinking
link 해당 아이템의 URL http://nytimes.com/2004/12/07FEST.html
description 아이템의 간략 내용 Some of the most heated chatter at the Venice Film Festival this week was about the way that the arrival of the stars at the Palazzo del Cinema was being staged.
author 저자의 이메일 oprah@oxygen.net
category 해당 아이템의 카테고리
comments 해당 아이템의 댓글을 볼 수 있는 주소 http://www.myblog.org/cgi-local/mt/mt-comments.cgi?entry_id=290
enclosure 첨부한 미디어에 대한 설명
guid 아이템의 고유한 아이디 http://inessential.com/2002/09/01.php#a2
pubDate 해당 아이템의 작성 날짜 Sun, 19 May 2002 15:21:36 GMT
source 아이템이 들어있는 RSS 채널



간략히 RSS의 구조에 대해 알아보았으니...

다음엔 RSS Feeder를 만들고 이 Feeder로 부터 정보를 받아오는 Reader를 작성해 보자

2010년 7월 29일 목요일

ckEditor와 ckFinder 설치 및 테스트 (php)

많은 사람들이 사용했던 FCKeditor가 3.x 버전이 되면서 CKEditor로 불리면서 배포되고 사용되고 있습니다.
FCKEditor 의 성능을 그대로 이어받고 더욱 빨라진 CKEditor의 기본적인 설치 방법을 알아보겠습니다.
다시한번 말씀드리지만 기본적인입니다.
그중에서도 PHP를 기반으로 하고 있으며 php 코드를 불러와 사용하는 설치 및 테스트 방법입니다.
보다 발전되고 최적화 되어 있는 방법은 구글링을 통해 찾아보실 수 있으실 것입니다.

1. 소스 다운로드

위의 주소로부터 소스코드를 다운로드 받습니다.
CKFinder는 CKEditor를 통해서 파일(일반 파일, 이미지, 플래쉬 파일)들을 업로드 할 때 사용됩니다. FCKEditor에서는 두 기능이 합쳐졌다고 표현들을 하시는 것을 보았는데 제 생각에는 CKFinder는 보다 기능이 업그레이드 되었고 완전히 다른 기능이라고 생각됩니다. 그리고 CKFinder의 경우 이 문서에서는 PHP 를 사용할 것이므로 위의 다운로드 URL에서 php를 선택하시면 됩니다. (php외에 ASP.net, ASP, ColdFusion을 지원합니다.)

다운로드 받은 소스를 웹에서 접근 가능한 곳에 압축을 풉니다.
본 문서의 경우 http://localhost/phpTest/include/ 아래에 ckeditor와 ckfinder라는 디렉토리 명으로 되어 있습니다.

2. 설정
CKEditor의 경우 별 다른 설정 필요없이 사용하였습니다.
이에 반해 CKEditor는 파일업로드 등의 이유로 경로 및 업로드 파일에 대한 설정을 해 주어야 합니다.
ckfinder/config.php 를 여시면 다음과 같은 php 파일이 나타날 것입니다. (길이상 주석문은 모두 제거해 주었습니다.)

<?php
function CheckAuthentication()
{
// WARNING : DO NOT simply return "true". By doing so, you are allowing
// "anyone" to upload and list the files in your server. You must implement
// some kind of session validation here. Even something very simple as...

// return isset($_SESSION['IsAuthorized']) && $_SESSION['IsAuthorized'];

// ... where $_SESSION['IsAuthorized'] is set to "true" as soon as the
// user logs in your system. To be able to use session variables don't
// forget to add session_start() at the top of this file.

        // return false;
return true;                                // false를 true로 변경하여 upload 가능하도록 만듭니다.
                                                       // 보안상 true 보다는 주석문에 나타나는 것처럼
                                                       // 세션 변수 점검 등으로 true/false를 결정하는 것이 좋을 것입니다.
}


$config['LicenseName'] = '';
$config['LicenseKey'] = '';


// 호스트명을 뺀url 상의 경로입니다.
$baseUrl = '/phpTest/data/upload/';

// 파일 시스템 상의 절대 경로를 나타냅니다.
// $baseDir = resolveUrl($baseUrl);
// 위의 resolveUrl()이라는 메소드를 쓰는 대신 저는 아래와 같이 절대경로를 적어주었습니다.
// 이 경로는 chmod 777 로 잡혀있어야 합니다.
$baseDir = '/home/yoonani/Dropbox/works/phpTest/html/data/upload/';


$config['Thumbnails'] = Array(
'url' => $baseUrl . '_thumbs',
'directory' => $baseDir . '_thumbs',
'enabled' => true,
'directAccess' => false,
'maxWidth' => 100,
'maxHeight' => 100,
'bmpSupported' => false,
'quality' => 80);

$config['RoleSessionVar'] = 'CKFinder_UserRole';

$config['AccessControl'][] = Array(
'role' => '*',
'resourceType' => '*',
'folder' => '/',

'folderView' => true,
'folderCreate' => true,
'folderRename' => true,
'folderDelete' => true,

'fileView' => true,
'fileUpload' => true,
'fileRename' => true,
'fileDelete' => true);

$config['AccessControl'][] = Array(
'role' => '*',
'resourceType' => 'Images',
'folder' => '/Logos',

'folderView' => true,
'folderCreate' => true,
'folderRename' => true,
'folderDelete' => true,

'fileView' => true,
'fileUpload' => false,
'fileRename' => false,
'fileDelete' => false);

$config['DefaultResourceTypes'] = '';

// 업로드될 일반 파일들에 대한 설정입니다.
// url 키에 값으로 $baseUrl .files를
// directory 키에 값으로 $baseDir.files로 설정되어 있는 관계로
// $baseDir에 하위에 files 디렉토리가 있어야 합니다.
// 또한 files는 chmod 777 권한이어야 합니다.
// 이 경로를 바꾸시려면 두 값을 바꾸시면 됩니다.
// maxSize 키 값이 0으로 되어 있는데 이것은 업로드될 파일의 크기를 나타냅니다.
// 여러분들이 원하시는 값으로 나타내실 수 있으며 bytes, K, M, G 등으로 그 크기를 정할 수 있습니다.
// allowExtensions : 업로드 허용가능한 확장자입니다.
// deniedExtensions : 업로드 불가능한 확장자입니다.
$config['ResourceType'][] = Array(
'name' => 'Files', // Single quotes not allowed
'url' => $baseUrl . 'files',
'directory' => $baseDir . 'files',
'maxSize' => 0,
'allowedExtensions' => '7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip',
'deniedExtensions' => '');


//위의 File과 동일하지만 이 곳은 이미지와 관계된 것들입니다.
$config['ResourceType'][] = Array(
'name' => 'Images',
'url' => $baseUrl . 'images',
'directory' => $baseDir . 'images',
'maxSize' => "16M",
'allowedExtensions' => 'bmp,gif,jpeg,jpg,png,avi,iso,mp3',
'deniedExtensions' => '');


// 마찬가지로 위의 File과 동일하지만 플래쉬와 관계된 것들입니다.
$config['ResourceType'][] = Array(
'name' => 'Flash',
'url' => $baseUrl . 'flash',
'directory' => $baseDir . 'flash',
'maxSize' => 0,
'allowedExtensions' => 'swf,flv',
'deniedExtensions' => '');


// 아래는 그냥 기본값으로 두었습니다.
$config['CheckDoubleExtension'] = true;
$config['FilesystemEncoding'] = 'UTF-8';
$config['SecureImageUploads'] = true;
$config['CheckSizeAfterScaling'] = true;
$config['HtmlExtensions'] = array('html', 'htm', 'xml', 'js');
$config['HideFolders'] = Array(".svn", "CVS");
$config['HideFiles'] = Array(".*");
$config['ChmodFiles'] = 0777 ;
$config['ChmodFolders'] = 0755 ;
$config['ForceAscii'] = false;

include_once "plugins/imageresize/plugin.php";
include_once "plugins/fileeditor/plugin.php";

$config['plugin_imageresize']['smallThumb'] = '90x90';
$config['plugin_imageresize']['mediumThumb'] = '120x120';
$config['plugin_imageresize']['largeThumb'] = '180x180';



3. 사용 예제
php 방식으로 사용하는 예제입니다.

경로는 ckeditor, ckfinder는 include 디렉토리의 하위에 있으며 예제 파일들은 include와 같은 경로상에 위치합니다.

먼저 form 생성 파일입니다.

<html>
<head>
<?php
// ckeditor 경로 설정
include_once './include/ckeditor/ckeditor.php';
// ckfinder 경로 설정
include_once './include/ckfinder/ckfinder.php';

// ckEditor 객체 생성
$ckeditor = new CKEditor();
// 경로 지정
$ckeditor->basePath = '/phpTest/include/ckeditor/';
// ckeditor 객체와 ckfinder의 경로를 이용하여 ckfinder를 ckeditor에 포함시킨다.
// 소스코드를 보시면 더욱 자세한 내용을 알 수 있습니다.
CKFinder::SetupCKEditor($ckeditor, '/phpTest/include/ckfinder/');
?>
</head>
<body>
<form name="ckTest" method="POST" action="getCKtest.php">
<?php
// textarea 의 name이 editor1 이 되는 ckEditor를 포함하는 textarea 생성
$ckeditor->editor('editor1');
?>
<input type="submit" />
</form>
</body>
</html>



실행화면입니다.




먼저 웹 브라우저로 전송된 소스코드를 살펴봅시다.
다음과 같이 파란색으로 되어 있는 코드가 생성되었습니다.


<html>
<head>
</head>
<body>
<form name="ckTest" method="POST" action="getCKtest.php">
<textarea name="editor1" rows="8" cols="60"></textarea>
<script type="text/javascript">//<![CDATA[
window.CKEDITOR_BASEPATH='/phpTest/include/ckeditor/';
//]]></script>
<script type="text/javascript" src="/phpTest/include/ckeditor/ckeditor.js?t=A5AB4B6"></script>
<script type="text/javascript">//<![CDATA[
CKEDITOR.replace('editor1', { "filebrowserBrowseUrl": "\/phpTest\/include\/ckfinder\/ckfinder.html", "filebrowserImageBrowseUrl": "\/phpTest\/include\/ckfinder\/ckfinder.html?type=Images", "filebrowserFlashBrowseUrl": "\/phpTest\/include\/ckfinder\/ckfinder.html?type=Flash", "filebrowserUploadUrl": "\/phpTest\/include\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Files", "filebrowserImageUploadUrl": "\/phpTest\/include\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Images", "filebrowserFlashUploadUrl": "\/phpTest\/include\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Flash" });
//]]></script>
<input type="submit" />
</form>
</body>
</html>

php 코드를 사용하여 위와 같이 웹 페이지 안에 CKEditor를 삽입하였으며 이 코드에 의해 CKFinder 역시 추가되었습니다. 이를 이미지 버튼을 눌러 확인해 보겠습니다.

다음과 같이 보조 창이 뜹니다.
여기서 서버 보기 (Browse Server) 를 클릭해 봅시다.



다음과 같은 판타스틱한 파일 업로드 상자가 나옴을 알 수 있습니다.



여기서 파일을 업로드 하고 업로드한 사진을 클릭하면 ckfinder의 config.php에서 설정한 $baseDir에 _thumnail 이란 디렉토리가 생기고 거기에 지금 보이면 썸네일 사진 또한 같이 저장됩니다.

자 이제 텍스트 상자에 입력을 마치고 서버로 값을 전송하고 그 값을 어떻게 받아오는지 봅시다.
다음은 폼으로부터 값을 전달받아 단순히 화면에 출력시키는 코드입니다.




<?php
$eData = $_POST["editor1"];
?>
<html>
<head>
</head>
<body>
<?php
echo $eData;
?>
</body>
</html>



일반 php에서 폼을 통한 값의 전달시 사용하는 방법을 그대로 따릅니다.
앞선 폼에서 이름을 editor1이라 하였으므로 editor1으로 POST로 전달된 값으로부터 받아와서 그대로 출력합니다.
다음과 같은 결과를 보여줍니다.











아주 기본적인 ckEditor, ckFinder에 대해 알아봤습니다.

제가 계속해서 사용해 보고 더욱 자세한 사항 올리도록 하겠습니다.

감사합니다.

2010년 7월 28일 수요일

ubuntu 10.04에 설치된 eclipse에 SQL Explorer 사용

SQL Explorer를 eclipse Add-On으로 설치하였는데 update sites는 다음과 같다
http://eclipsesql.sourceforge.net/
위의 주소를 Help > Install Software 메뉴에서 SQL Explorer로 추가하여 설치하였다.

그 다음으로 SQL Explorer에서 Connector로 사용할 드라이버를 잡아줘야 하는데
MySQL의 경우 jdbc connector가 필요하다 다음의 링크에서 다운받을 수 있다.
(참고 : http://www.64bitjungle.com/tech/eclipse-pdt-and-mysql-sql-explorer-plugin/)
http://dev.mysql.com/downloads/connector/j/5.1.html

다운받은 후 압축을 풀고 /usr/share/mysql/ 아래로 옮기자 (ex. $ sudo cp -r mysql-connector-java-5.1.13/ /usr/share/mysql/)

SQL Explorer Perspective를 열어 Connectors에서 새로운 연결(Connection)을 생성하는 버튼을 클릭하면 다음과 같은 Create New Connection Profile 창이 나온다.



여기서 Add/Edit Drivers를 클릭하면 다음 창이 활성화된다.


위의 그림과 같이 MySQL을 선택하고 Edit를 클릭하여 설정창을 띄우고 위에서 다운로드 받은 MySQL Connector를 설정하자.

Extra Class Path로 이동하여 Add JARs를 클릭하고 다운받은 드라이버의  jar 파일을 선택한다.


OK를 클릭하자.

그럼 처음띄운 Connection Profile 창이 뜨는 데 이 창에서 URL을 아래 그림에서 처럼

"jdbc:mysql://localhost:3306/데이터베이스명
"
으로 변경하고 로그인 정보를 입력하자.
Namedms  적절하게 자신이 원하는 대로 입력하면 된다.



이상과 같이 연결 설정을 마쳤으면 Eclipse의 Connections 창에서 방금 생성한 Connection이 생기고 이 Connection을 클릭하면 서버와 통신후 다음과 같은 Eclipse Perspective를 볼 수 있다.










Eclipse 에서 SQL Explorer를 설치하고 MySQL 과 연결하는 과정에 대해 간단하게 알아보았다.
Eclipse 에서 모든 것을 관리하는 것이 보다 용이할 거 같아 이렇게 진행하였지만 어디까지나 개인의 취향대로 작업을 진행하면 되겠다.







2010년 7월 21일 수요일

[단문] WordPress 에서 Plugin을 관리하기 위해

Manual로 다운 받아서 할 수도 있지만 웹에서 쉽게 plugin을 다운받아 설치하려면
ftp Server 를 구축하고 (sudo apt-get install vsftpd)
WordPress 소스 아래의 wp-content 를 웹서버가 쓸 수 있도록 하여야 한다.

2009년 11월 30일 월요일

구글 검색 알고리즘에 대한 markov 님의 정리

구글 검색 알고리즘의 원리 - 1 (http://markov.tistory.com/2 )

구글 검색 알고리즘의 원리 - 2 (http://markov.tistory.com/3 )

구글 검색 알고리즘의 원리 - 3 (http://markov.tistory.com/13 )

구글 검색 알고리즘의 원리 - 4 (http://markov.tistory.com/14 )

 

잘 정리된...

한번 살펴보고 무언가 시작해야 할 것이다...

몇가지 PageRank와 관련된 논문을 저장하였는데...

이 녀석이 정보 + 통계에 합당한 녀석이 아닐런지?