2009년 12월 29일 화요일

[Made By] 세계의 명화 - Masterpieces Arts

※교양인을 위한 필수 어플리케이션! 세계 거장들의 예술 작품이 내 손안으로! ※
출시기념으로 한정기간동안 무료로 판매합니다

[어플리케이션 소개]
 '세계의 명화'에서는 르노와르에서 고갱, 모딜리아니 까지 총 25명의 천재적인 화가들의 삶과 그들의 작품 약 1000여점에 대한 상세한 설명을 제공합니다.
 위대한 업적을 남긴 미술가들의 작품을 통해 그림의 역사, 배경지식을 알아보면서 거장들의 발자취를 쫓아가 보세요.
 출퇴근길, 잠자기전, 언제 어디서나 세계의 명화에 대한 교양을 쌓으며  명화를 보는 안목을 높이실 수 있습니다.

[특징 및 기능]

-아티스트별/ 작품별 목록 제공
-아티스트 / 작품에 대한 소개 제공
-마이갤러리 / 디지털 액자 기능
-명화로 푸는 퀴즈
-트위터, 메일로 공유하기 기능
-포토앨범으로 다운로드 기능

[화가 목록]

고갱 / 고야 / 고흐 / 드가 / 레오나드로 다빈치 /
루벤스 / 루오 / 로트렉 / 르노와르 / 루소 / 라파엘로 / 렘브란트 / 밀레 / 마네 / 마티스 / 미켈란젤로 / 모네 / 모딜리아니 / 세잔 / 쇠라 / 위트릴로 / 와토 / 칸딘스키 / 클레 / 쿠르베

 
Posted by EnSight

Review 들
- http://cafe.daum.net/topipod/WcRO/343?docid=1G5CA|WcRO|343|20091224141625&q=ipod%20art
- http://ipodart.tistory.com/446
- http://www.appsinside.com/bbs/board.php?bo_table=utility&wr_id=1310
등등..

많은 리뷰들에 몸둘바를 모르겠네요..
부족한 부분을 꾸준히 보충하여.. 업데이트로 보답하겠습니다. ^^

2009년 8월 13일 목요일

[iPhone] JSON 사용하기

- (NSString *)stringWithUrl:(NSURL *)url
{
 NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                    cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                                    timeoutInterval:30];
     // Fetch the JSON response
 NSData *urlData;
 NSURLResponse *response;
 NSError *error;
 
 // Make synchronous request
 urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                        returningResponse:&response
                                                    error:&error];
 
  // Construct a String around the Data from the response
 return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
}

 

- (id) objectWithUrl:(NSURL *)url
{
 SBJSON *jsonParser = [SBJSON new];
 NSString *jsonString = [self stringWithUrl:url];
 
 // Parse the JSON into an Object
 return [jsonParser objectWithString:jsonString error:NULL];
}

 

- (NSDictionary *) downloadPublicJaikuFeed
{
 id response = [self objectWithUrl:[NSURL URLWithString:@"http://jaiku.com/feed/json"]];
 
 NSDictionary *feed = (NSDictionary *)response;
 return feed;
}

 

[Test Section]

NSDictionary *feed = [self downloadPublicJaikuFeed];
NSLog(@"Here is the title of the feed: %@", [feed valueForKey:@"title"]);

 

[환경 설정]

1. Download the DMG http://json-framework.googlecode.com/files/JSON_2.1.1.dmg
2. Mount the DMG and copy the directory /Volumes/JSON_2.1.1/SDKs/JSON to ~/Library/SDKs/JSON
3. Now, in the build properties (for both Debug and Release) there are two additional properties to configure (omit the double quotes bellow) …

  a “Additional SDKs” must be set to “$HOME/Library/SDKs/JSON/$(PLATFORM_NAME).sdk”
  b “Other Linker Flags” must be set to “-ObjC -ljson”
4. In the source file that uses the JSON library, add the following import “#import <JSON/JSON.h>”

 

[ 한글판 ]

1. SDKs 디렉토리를 ~/Library/SDKs로 복사합니다.
2. JSON.framework 디렉토리를 ~/Library/Frameworks로 복사합니다.
3. 프로젝트 설정창에서 Additional SDKs안에 $HOME/Library/SDKs/JSON/$(PLATFORM_NAME).sdk를 추가합니다.
4. Other Linker Flags-ObjC -ljson를 추가합니다.

 

여기서 중요한 것은 SDK 3.0에서는 에러가 발생한다는 것이다.

Error: Syntax error before 'AT_NAME' token 3.0

 

이러한 에러를 포함 2개가 발생한다.

따라서, Debug를 2.2.1로 변경을 해주어야 한다.

Groups & Files에서 프로젝트 제목이 붙은 부분을 더블 클릭 -> "Gerneral" Tab을 클릭

-> Base SDK for All Configurations: 부분을 클릭 하여 iPhone Simulator 2.2.1을 선택

-> 그 후 실행 해 본다.

 

SDK 3.0에서 돌아가게 하는 방법은

GCC를 변경 해주는 것이다. 환경 설정 부분에 보면 GCC가 4.2로 되어 있는데,

그 부분을 GCC 4.2(System Default) 부분으로 변경 후, 다시 GCC 4.2로 하면.. Error 해결!

^^; 원인은 모르겠지만..... GCC 문제임은 확실 하다! ^^

 

[참고 사이트]

http://iphonedevelopertips.com/cocoa/json-framework-for-iphone-part-2.html

http://theeye.pe.kr/entry/how-to-use-json-framework-on-iphone-sdk

 

2009년 7월 28일 화요일

[iPhone] image Size 조정

Image Size 조정

 

1. header에 정의

- (UIImage *)scaleToSize:(UIImage *)img;

 

2. model 부분에 함수 정의

- (UIImage *)scaleToSize:(UIImage *)img {

    float resizeWidth = 330.0;

    float resizeHeight = 430.0;

 

    UIGraphicsBeginImageContext(CGSizeMake(resizeWidth, resizeHeight);
 
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextTranslateCTM(context, 0.0, resizeHeight);
    CGContextScaleCTM(context, 1.0, -1.0);

    CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, resizeWidth, resizeHeight), img.CGImage);

    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
 
    UIGraphicsEndImageContext();
 
    return scaledImage;

}

 

3. 데이터 넘기기

UIImage * temp = [UIImage imageNamed:@"hello.png"];

UIImage *scaledImage = [self scaleToSize:temp];

 

참고 사이트

- http://developers.enormego.com/view/uiimage_resizing_scaling

- http://theeye.pe.kr/entry/how-to-resize-image-on-iPhone-development

 

 

 

[iPhone] image 폴더 처리 방법

iPhone에서 이미지 폴더로 불러 오는 방법 정리 입니다.

 

[이미지 폴더 추가 하기]

1. 작업 폴더 즉, 개발하고 있는 폴더의 Resources 폴더에 가셔서 폴더를 만든다.

    (당연히 이미지는 들어와 있어야 겠죠?)

2. XCode로 돌아와 Resources > Add > Existing Files 선택

3. (1)에서 만들었던 폴더를 선택 합니다.

4. 그 후 버튼 선택 부분에 Create Folder References for any added folders 클릭

5. Add 버튼 클릭

 

그 후 소스는 다음과 같이 작성 하시면 됩니다.

 

NSBundle *mainBundle = [NSBundle mainBundle];

UIImage *temp = [[UIImage alloc] initWithContentsOfFile:[mainBundle pathForResource:@"파일명" ofType:@"확장자명" inDirectory:@"디렉토리 위치명"]];

imgView.image = temp;

[temp release];

 

테스트는 Xcode 3, iPhone SDK 3.0 에서 했습니다! ^^

참고하시고 질문 및 조언 사항 있으시면 댓글 바람니다.

 

이 글은 맥부기 아이폰 개발의 보노보노님의 글(http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=8143) +

플럼베리님의 글(http://cafe.naver.com/mcbugi.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=8143)을 섞어서 만든 것을 알립니다. 두분께 진심으로 감사에 말씀드립니다.

2009년 7월 7일 화요일

[Flex] Blazeds & Remote Service 연동

1. Remote로 데이터 바로 가져오기
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:RemoteObject id="ro" destination="[서비스 id 명 입력]"/>
<mx:DataGrid dataProvider="{ro.[자바메소드].lastResult}" width="100%" height="100%"/>
<mx:Button label="Get Data" click="ro.[자바메소드]"/>
</mx:Application>
 
 

2. Result & Fault Handler 사용하여 데이터 가져오기
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
[Bindable]
private var get_Data:ArrayCollection;
private function resultHandler(event:ResultEvent):void
{
get_Data = event.result as ArrayCollection;
}
private function faultHandler(event:FaultEvent):void
{
Alert.show(event.fault.message);
}
]]>
</mx:Script>
<mx:RemoteObject id="ro" destination="[서비스 id 명 입력]" result="resultHandler(event)" fault="faultHandler(event)" />
<mx:DataGrid dataProvider="{get_Data}" width="100%" height="100%"/>
<mx:Button label="Get Data" click="ro.[자바메소드]"/>
</mx:Application>

3. Java로 데이터 보내기
(1) Java 설정 부분
public List selectDocKeyword(int docKeywordNum) throws SQLException
 {
  dbConn();
  String url = "Jdbc:Odbc:DomainVisual";
  List list = new ArrayList();
  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  String sql_query = "Select * from DOC_KEYWORDS where DOC_NUM = " + docKeywordNum;
  try
  {
   con = DriverManager.getConnection(url);
   stmt = con.createStatement();
   rs = stmt.executeQuery(sql_query);
   
   while(rs.next())
   {
    DocKeyword docKey = new DocKeyword();
    docKey.setKeyword01(rs.getString("KEYWORD1"));
    docKey.setKeyword02(rs.getString("KEYWORD2"));
    docKey.setKeyword03(rs.getString("KEYWORD3"));
    docKey.setKeyword04(rs.getString("KEYWORD4"));
    docKey.setKeyword05(rs.getString("KEYWORD5"));
    docKey.setKeyword06(rs.getString("KEYWORD6"));
    docKey.setKeyword07(rs.getString("KEYWORD7"));
    docKey.setKeyword08(rs.getString("KEYWORD8"));
    docKey.setKeyword09(rs.getString("KEYWORD9"));
    docKey.setKeyword10(rs.getString("KEYWORD10"));
    list.add(docKey);
   }
  }finally{
   con.close();
  }
  return list;
 }
 중요한 부분은 진한 부분이다.
 저기서 데이터를 받고, DB 내에 검색 후 다시 List에 넣으면 된다.
 Set / Get 부분을 잘 생각하면.. 쉽게 풀린다..^^

(2) Flex 설정 부분
 이 부분은 원하는 부분에 다음과 같이 설정 하면 된다.
 즉, ro.setData(number);
 이런 식으로 사용하면 된다.

아직 까지는 이런 방법들을 사용했다. 더욱 공부하여서... 더 좋은 방법을 사용하도록 해봐야 겠다..^^

[Flex] Blazeds 처음부터~ 끝까지...

Visualization 때문에 시작하게된.. Flex와 Java 연동...
차례차례 셋팅 하면서... 마지막 목표까지... ㄱㄱ!

1. BlazeDS에 대하여..  
  (1) 정의 : 데이터 서비스를 모아 둔 것.
  (2) 서비스의 종류 3가지
     -  리모팅 서비스(Remoting Service) : Flex 어플리케이션이 직접 어플리케이션 서비에 동작하는 Java 객체의 메소드를 호출 할 수 있게 해 준다.
     - 메시지 서비스(Message Service) : 실시간 데이터 Push와 Collaborative 어플리케이션을 가능하게 하기 위해 Flex 어플리케이션이 메시지 Publish 하고 Subscribe 할 수 있도록 Publish/Subscribe Infrastructure 제공.
     - 프락시 서비스(Proxy Service) : Flex 어플리케이션이 안전하고 제어되는 방법으로 크로스 도메인 서비스 리퀘스트를 생성할 수 있게 합니다. 즉, Proxy Service를 통해 Flex 어플리케이션은 다른 도메인의 서비스에 접근할 수 있습니다.

2. BlazeDS 환경 설정
 (1) 설치
   ※ Tomcat Ver. 6.0.14
    - BlazeDS Turnkey Download & 압축 풀기
    - Command 창 실행(실행 -> cmd)
    - /blazeds/tomcat/bin 으로 이동 (dir 이용)
    - catalina run 실행
 (2) Flex Builder 3 Plug in 설치
    - http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email 
      (하단의 Adobe® Flex® Builder 3 Professional Eclipse Plug-in (60 day trial) 를 선택 하여 다운)
    - http://slothink.tistory.com/64 <- 설치 방법 참조..
 (3) Java 프로젝트 생성
    - Flie > New > Project > Java Project 선택 > Next
    - 프로젝트 이름(blazeds-server) 입력 하고 C:\blazeds\tomcat\webapps\samples\web-inf 입력 또는 선택
    - Default output folder 가 "blazeds-server/classes" 임을 확인 하고 Finish 클릭
    ※ Source : WEB-INF/src ::::: Class : WEB-INF/classes 에 자동 컴파일 됨.

3. 리모팅 서비스(Remoting Service) 어플리케이션 만들기

 (1) Java 쪽 설정
  ※ 가상 설정으로.. Access에서 데이터를 가져와서 Flex로 보낼 것이다.
  - Access로 데이터를 보내기 위해.. 간단한 구조인 Class를 만든다. (keyword.java)

    package dataset;

public class Keywords {
 private String keyword;
 private String synset;
 private int weight;
 
 public String getKeywords()
 {
  return keyword;
 }
 public void setKeywords(String keyword)
 {
  this.keyword = keyword;
 }
 public String getSynset()
 {
  return synset;
 }
 public void setSynset(String synset)
 {
  this.synset = synset;
 }
 public int getWeight()
 {
  return weight;
 }
 public void setWeight(int weight)
 {
  this.weight = weight;
 }
}


  - 직접 Access와 연동 되어야 하는 Class를 만든다. (keywordDAO.java)
   

package dataset;
import java.sql.*;
import java.util.*;
import dataset.Keywords;
public class KeywordDAO {
 public void dbConn()
 {
  try
  {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  }catch(ClassNotFoundException ee)
  {
   System.exit(0);
  }
 }
 public List getKeywords() throws SQLException
 {
  dbConn();
  String url = "Jdbc:Odbc:DomainVisual";
  List list = new ArrayList();
  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  String sql_query = "Select * from DOC_KEYWORDS";
  try
  {
   con = DriverManager.getConnection(url);
   stmt = con.createStatement();
   rs = stmt.executeQuery(sql_query);
   
   while(rs.next())
   {
    Keywords kw = new Keywords();
    kw.setKeywords(rs.getString("KEYWORD1"));
    kw.setSynset(rs.getString("SYNSET1"));
    kw.setWeight(rs.getInt("WEIGHT1"));
    list.add(kw);
   }
  }finally{
   con.close();
  }
  return list;
 }
 
}



 (2) Remoting Service 설정 하기
  - remoting-config.xml 파일을 열어 다음의 내용을 하단에 추가 한다.

    <destination id="[서비스 id 입력]">
  <properties>
  <source>[package명.java파일명]</source>
  </properties>
  </destination>

 (3) Flex Project 생성  
  - File > New > Project > Flex Builder > Flex Project > Next
  - 프로젝트 이름 입력
  - Use default location 선택 여부 확인
  - 서버 종류 J2EE 선택
  - Create combined Java/Flex project using WTP 선택 해제
  - LiveCycle Data Services의 루트 폴더 확인
    Root Folder : C:\blazeds\tomcat\webapps\samples
    Root URL : http://localhost:8400/samples/
    Context Root : /samples
  - Validate Configuration을 눌러 테스트가 완료 되면, Finish를 눌러 생성 한다.

 (4) Flex Project 테스트 
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:RemoteObject id="ro" destination="[서비스 id 명 입력]"/>
<mx:DataGrid dataProvider="{ro.[자바메소드].lastResult}" width="100%" height="100%"/>
<mx:Button label="Get Data" click="ro.[자바메소드]"/>
</mx:Application>
 
    다음과 같이 입력 하여.. 프로젝트를 테스트 후.. 데이터가 들어오는 것이 확인 되면..
    완료가 되는 것이다.

 1일째.. 테스트 완료!
 이제 직접 내가 하고 있는 프로젝트에 적용 및 응용을 해보도록 하자! ^^

[Ajax] IE 7에서.. XMLHttpRequest 문제..

ajax로 이것 저것 만들 던 중.. 이상하게.. IE 6에서는 부드럽게 작동 하는데...
IE7 에서만..ㅜ.ㅜ 작동이 안되는 기능이 있다.
컴퓨터 사양에 따라 다르지만.. 내 컴퓨터는.. 이상하게 안되었다.

 - OS : Windows XP Professional June
 - Browser : IE 7

간단한 환경이긴 했지만.. 참으로 난감한 상황이였다.
이것 저곳을 찾다가 보니... IE 7에서는 XMLHttpRequest를 원래 지원 하고 있다는 글을 발견!! ^^
(구글에서 XMLHttpRequest 검색 해보면.. 엄청 나옴...ㅡㅡ;ㅋ )

그래서.. 처음에는 이부분을 지우고 하면 되는 것이었습니다.

====================================================================
if(window.XMLHttpRequest) {
  http_request = new XMLHttpRequest();
  if(http_request.overrideMimeType) {
   http_request.overrideMimeType('text/html');
  }
====================================================================


그러나.. 생각해보니.ㅡ.ㅡ; 내가 개발한 프로그램이 모질라나.. 사파리에서 안돌아 갈것을 생각하니 버리면 안되겠다는 생각이 들어서.. 저는 다음과 같이 소스를 수정해서 쓰고 있습니다.

====================================================================
if (window.ActiveXObject) {
  try {
   http_request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
   try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
   } catch (e) {
    try{
     http_request = new ActiveXObject("window.XMLHttpRequest"); //ie7전용
    }catch(e){}  
   }
  }
 } else if(window.XMLHttpRequest) {
  http_request = new XMLHttpRequest();
  if(http_request.overrideMimeType) {
   http_request.overrideMimeType('text/html');
  }
 }
 
 if(!http_request) {
  alert('Cannot create XMLHTTP instance');
  return false;
 }
=====================================================================


이렇게 쓰고 나서.. 밑에 값을 처리하는 부분에는

=====================================================================
if (http_request.readyState == 4) {
  if (http_request.status == 0) {
   result = http_request.responseText;
   alert(result);
  }else{
   result = http_request.responseText;
   alert("a");
  }
 }
<참고>
http_request.status의 값이 0은 Local상에 파일이 있을 경우 True가 되구요~ ^^
200인 경우에는 HTTP, 즉 웹상에 파일이 있을때.. True가 된답니다!
==================================================================


항상.. Status 및 readyState 값을 설정 해줘야.. "페이지에 오류가 있습니다"
이 놈이 안떠요..^^

도움이 되었으면 합니다! 혹시.. 잘못된거나.. 수정 부분있으시면 과감히!! 트랙백 달아 주세요!

[Linux] Web Server 만들기

1. APM 설치
----------------------
혹시, 아파치 서버가 있거나 작동중인지 확인하자
# ps -ef | grep httpd
root        1673        1    0  15:27  ?       ~~~
...

주루룩 정보가 나온다면 root 가 실해시킨 PID를 삭제하자
# kill 1673

기존 아파치가 있을때~
# rpm -e apache
...

의존 관계인 패키지들이 주루룩 나온다. 어짜피 다시 설치할 것이기 때문에
의존 관계를 무시하고 모두 삭제한다.

# rpm -e --nodeps 'httpd'          <-- --nodeps옵션은 no dependence ^^
# rpm -e --nodeps 'php'
# rpm -e --nodeps 'mysql'
# rpm -e --nodeps 'apache'

만약 아래같은 메시지가 뜨면
warning : ~~~ /etc/php.ini.rpmsave
# rm -f /etc/php.ini.rpmsave
생성 파일을 삭제해주면된다.

MySQL은 통상 설치되어있지 않다.
만약 MySQL이 설치 되어있다면 위와 같이 진행하고 소스 설치일경우
데몬을 실행중지 시킨후 폴더를 삭제하면 된다.

APM 까는 순서는 MySQL --> Apache configure --> PHP --> Apache


먼저 MySQL을 설치한다. 주의할 것은 제로보드5의 경우 mysql 4.1 이상을 설치해야한다.
----------------------
2.  MySQL 4.1.
----------------------
먼저.
# groupadd mysql
# useradd -g mysql mysql    <-- mysql 그룹과 계정을 추가.

# cd /usr/local      

# tar zxvf mysql-4.1.20.tar.gz

푼다음 /usr/local로 옮기기
# mv mysql-4.1.20 /usr/local/mysql

# cd mysql

# ./configure --prefix=/usr/local/mysql --with-charset=euckr

# make
# make install

상당한 시간이 걸림..

-----------------------------
3. Apache 살짝  apache 1.3.27
-----------------------------

일단, Apache 와 PHP 압축파일을 다 풀어놔보자.
압축파일이 있는 디렉으로 이동해서

# tar zxvf apache_1.3.27.tar.gz
# tar zxvf php-4.3.1.tar.gz

생성된 두개의 디렉을 /usr/local/ 로 옮기자

# mv apache_1.3.27 /usr/local/apache
# mv php-4.3.1 /usr/local/php

# cd /usr/local           확인..

# cd apache

# ./configure --prefix=/usr/local/apache  
--> 몇가지 설정파일과 최종 컴파일을 위해서 PHP가 아파치 설정부분을 인식하기 위해서 하는것~!

-----------------------------
4. Zeroboard 5를 위한 library 설치
-----------------------------
제로보드 5 설치를 위해 iconv와 gd를 설치한다.

우선 gd 를 아래 사이트에서 다운 받는다.

http://www.boutell.com/gd

# tar zxvf gd.2.0.15.tar.gz

# cd gd-2.0.15

# ./configure --prefix=/usr/local/gd

# make

# make install

다음으로 iconv를 설치한다.

iconv는

http://ftp.gnu.org/pub/gnu/libiconv

에서 받을 수 있다.

# tar xzvf liiconv-1.9.1.tar.gz

# cd libiconv-1.9.1

# ./configure --prefix=/usr/local/iconv

# make

# make install

-----------------------------
5. PHP 4.3.1
-----------------------------

# cd /usr/local/php

# ./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql --with-zlib=/usr/local --with-gd=/usr/local/gd --with-iconv=/usr/local/iconv

반드시 --with-gd=/usr/local/gd --with-iconv=/usr/local/iconv 를 추가해야만 제로보드 5 가 정상 설치된다.



************************************************************************************
* 여기서 잠깐 혹시 zlib 문제로 설치가 안된다면 아래 내용을 참조 바란다.
************************************************************************************
1).
http://www.gzip.org/zlib/ 에서 zlib 을 다운 받는다.

2). zlib 설치

# tar -xvzf zlib-1.1.4.tar.gz
# cd zlib-1.1.4
# ./configure -s // libz.so 동적모듈생성
# make
# ./configure // libz.a 정적모듈생성
# make test
# make install

# cp libz.so* /usr/local/lib

# cd /usr/local/lib
# rm -rf libz.so
# rm -rf libz.so.1
# ln -s libz.so.1.1.4 libz.so
# ln -s libz.so.1.1.4 libz.so.1

# vi /etc/ld.so.conf
/usr/local/lib추가 // 라이브러리 경로 추가

# ldconfig // 라이브러리 경로 적용명령
************************************************************************************

다시 돌아와서..

# make
# make install

시간이 좀 걸린다.

-----------------------------
6. Apache 1.3.27 마무리
-----------------------------

# cd /usr/local/apache

# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a  

--> --activate~~~ 옵션은 아파치와 연동하기 위해 php설치중 만들어진 모듈을 인식시켜 주는 옵션


만약 tatter tools 1.0x 이상의 버젼을 사용하고자 한다면 apache 의 rewite 모듈을 추가해야한다.
이것은 configure옵션에 한가지 옵션을 추가해주는 형태로 간단히 설정이 가능하다.

(tatter tools 1.0x 이상의 버젼 사용을 위한 configure 옵션)
# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a --enable-module=rewrite  


# make
# make install

마무리 성공적으로 설치가 끝났다는 메시지 박스를 볼수 있다.

# cd /usr/local/php
# cp ./php.ini-dist /usr/local/lib/php.ini  <-- php.ini-dist 파일 php.ini로 복사

이렇게 APM의 모든 설치가 끝났다.
설치가 끝난 거다. 이제 환경설정이 기다리고 있다.

-----------------------------
7. APM 환경설정
-----------------------------

우선. 아파치 설정파일부터 보자 (httpd.conf)

# vi /usr/local/apache/conf/httpd.conf
...
...
ServerRoot  "/usr/local/apache"
..
ServerName  192.168.10.1        
...
DocumentRoot  "/usr/local/apache/htdocs"
...
<IfModule mod_dir.c>
    DirectoryIndex index.php index.php3 index.php4 index.html index.htm
</IfModule>
...
..
AddType application/x-httpd-php .php .php3 .ph
AddType application/x-httpd-php-source .phps    <-- 이 두 줄 찾기 힘들다. 없으면 추가~!
...
AddType application/x-tar .tgz
...

:wq


이제 아파치 웹서버를 돌려보자.
# /usr/local/apache/bin/apachectl start         <--- apachectl 이란걸.. 주의
/usr/local/apache/bin/apachectl start: httpd started
라는 메시지를 확인하고
데몬도 잘 돌아가나 확인한다.
# ps -aux | grep apache
...
...
주루룩.
#

다 된거 같다면. 웹 브라우저를 켜고 IP주소를 입력해 보자~
우리의 서버IP 192.168.10.1 를 주소창에 치고 엔터를 치면
(자기 서버IP를 써서 확인한다. 아니면 localhost라고 써도된다.
주의할것은 포트를 변경했을경우 예를들어 8088로 변경시
localhost:8088  또는
192.168.10.1:8088
라고 써야한다.)

먼가가 나올것이다. 국가를 고르라는 말이 나오고 kr를 선택하면
아파치 임시 페이지가 나온다..


php를 확인해 보자.
# vi /usr/local/apache/htdocs/phpinfo.php   <---phpinfo 파일을 만드는 거다.

<?
phpinfo();
?>

:wq

이제 웹브라우저 주소창에 이러케 입력하자.  
http://192.168.10.1/phpinfo.php

머가 보이나? 모든 정보가 보일것이다.

서버 시작시 이 APM이 돌아가게 만드는 거~

# vi /etc/rc.d/rc.local

다음 내용을 추가하자
...

/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/safe_mysqld &
:wq

출처 : 제로보드 게시판

[Linux] Redhat 9.0 Vsftp 사용시 꼭!! Check 사항

이것 저것 찾느라.. 이거 힘들었다..

Redhat 9.0에 깔려 있는 Vsftp를 그대로 사용하기 위해서는 몇가지 과정을 거쳐야 한다.

첫번째!

# service vsftpd start

를 통하여 vsftpd를 사용 시켜 준 후에~

# ntsysv

에서.. 시작시에도 바로 적용될 수 있도록 check!!

#vi /etc/vsftpd/vsftpd.conf

에 있는 파일의 내용을 설정 해준다..

 % 설정 내용은.. 찾아보면 많이 나오기 때문에 생략... %

이제.. local 로 Test하면 된다! 자~알 된다..

문제는.. 윈도우 상에서 알 FTP로 접속을 하면.. 이거.. 접속도 안된다..

이유는????

바로.. 방화벽이다..

# vi /etc/sysconfig/iptables

로 직행!!

-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT

로 되어 있을 것이다..

저게.. 0~1023번 까지의 포트를 거절!! 한다는 거다..

그래서 REJECT -> ACCEPT로 바꾸면..

이제 접속이 된다!

P.S 당연히.. restart 아시죠?
        # /etc/init.d/iptables restart

[Linux] Redhat 9.0의 Apache 설정 중 한글 깨짐 현상 해결

윈도우에서 웹페이지를 작업 후 확인 할 때, 한글 정상!
소스보기를 해도...

<meta http-equiv="Content-Type" content="text/html" charset="euc-kr">

이게.. 있고...

근데 한글은 깨지나요?

그럼..

/etc/httpd/conf/httpd.conf 파일에

addDefaultCharset UTF-8
addDefaultCharset euc-kr


추가 하시면.. 될것입니다!

p.s 당연히 httpd 를 다시 시작해 줘야 하는것은 알죠? ^^

[Linux] Root 암호 잃어버렸을 때...

만약 부트로더가 GRUB일 경우

1. OS 선택 화면에서 리눅스 선택하시고 E버튼을 누릅니다.

2. 2번째 메뉴에서 e버튼 누른 후 맨 뒤에 한칸 띄우고 single 입력.

3. b버튼 누름. # 프롬프트 나올 때까지 기다려요~

4. # vi  /etc/shadow 
   맨 첫번째 줄 root:aafsdkl;jd:500 머 이런식으로 나오는 부분에
   2번째 필드 root: 여기가 2번째 필드:
   2번째 필드 부분이 암호가 설정되어 있는 부분입니다.
   이 부분을 command 모드에서 x를 누르셔서 2번째 필드에 있는 부분을 모두 지웁니다.
   그럼 암호가 지워진 상태입니다
   이 상태에서 세미콜론 : 을 누르시고 wq혹은 wq!라고 누르시고 엔터를 치십니다.

5. # grep root /etc/shadow //다시 확인 하는 작업

6.
# reboot

7. login : or 화면에서 root 만 치시면.. 바로 접속이 됩니다.

8. # passwd //암호 재설정

[Linux] Samba를 이용한 File 서버 구축 하기

Samba를 이용한 File 서버 구축 하기

(1) Samba 란?
   : Samba는 SMB(Session Message Block) 프로토콜을 이용하여 리눅스 시스템, OS/2, MS 윈도우즈 등
     서로 다른 플랫폼간의 네트워크 서비스를 제공하는 파일 공유 서버로, 삼바를 이용하여 파일 서버를 구축
     하면 윈도우즈 NT 파일 서버와 같은 네트워크 파일시스템(NTFS)을 대체할 수 있으므로 라이선스 비용을
     최소한으로 줄일 수 있습니다.

(2) Samba 설정 및 구동
  - 먼저 설치 되어 있는지 없는 지 확인 한다.
    # rpm -qa | grep samba
    samba-3.0.10-21AX
           .
           .
  - 서비스를 시작함.
    # /etc/init.d/smb restart

 (3) Samba 서비스가 구동될 때 참조하는 설정 파일 /etc/smaba/smb.conf
   - workgroup = MYGROUP : 작업 그룹을 지정하는 부분.
   - server string = Samba Server : 파일 서버의 이름을 지정
   - printing = cups : 프린트 공유시 사용하는 프린팅 방식 지정
   - log file = /var/log/samba/%m.log : 삼바 서버에 연결된 각가의 머신에 대한 로그파일 사용할 수 있게..
   - max log size = 50 : 로그파일의 크기 지정
   - dns proxy = no : DNS nslookup 명령을 통해 NetBIOS 네임의 해석을 삼바가 실행할 것인가 설정
   - security = user : 보안 모드 설정
      ☆ Share : 사용자에 따른 별다른 접속 제한 없이 누구든 접속 해서 사용 가능
      ☆ User : 삼바 서버에 등록된 ID를 통해 삼바 서버에 접속 할 수 있는 보안 등급
      ☆ Server : 윈도우즈NT 서버를 통한 인증으로 접속을 허용하는 보안
      ☆ Domain : 사용자 계정을 접속하는 클라이언트의 컴퓨터 이름으로 패스워드를 확인하여 접속을 허용.

(4) smbmount 사용 형식
   # smbmount //호스트명/공유디렉터리 /마운트포인트
   # smbmount -o [옵션] //호스트명/공유디렉터리 /마운트포인트
   # mount -t smbfs -o [옵션] //호스트명/공유디렉터리 /마운트포인트

 

[DB] Mysql에서 DB 추가 및 사용자 추가 및 권한 설정 하는 방법

< mysqladmin을 이용하여 root 암호 설정 >
$ mysqladmin -u root -p password new-password

< 접속 하기 >
$ mysql -u root -p

< Database 보기 >
mysql> show databases;
mysql> show tables; <- table 보기

< Database 생성 >
mysql> create database DB명;

< Mysql에서 새로운 사용자 추가 >
일단 root로 접속
mysql> use mysql
mysql> INSERT INTO user VALUES('%', '사용자', PASSWORD('비밀번호'),
     -> 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

< 사용자에게 Database 권한 주기 >
mysql> INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv)
     -> VALUES('%', 'DB명', '사용자', 'Y', 'Y', 'Y', 'Y','Y','Y');

mysql> FLUSH PRIVILEGES; <- 바로 적용 하기



[DB] Redhat 9.0 환경에서 Oracle 10.2.0 설치 하기

하루동안... Oracle만 설치 했다.. ㅋ
완성하니.. 기분은 상쾌 하군..
10.2.0 설치시.. 다음과 같이 설치 하면 된다...

=========================================================================
1. Oracle Download
 
http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linuxsoft.html 
 가서 linux version을 받는다.
 File name :
10201_database_linux32.zip
 압축을 푼 후에.. (unzip 이용) 놔 둔다..

2. OS 환경 변경

오라클 10g는 자체적으로 테스트된 몇 가지의 OS만 설치되도록 체크하는 부분이 있습니다.
이를 위해 /etc/redhat-release 파일을 생성 후 레드햇 3 버전으로 만듭니다.
# echo "redhat-3" > /etc/redhat-release


3. 사용자 및 그룹생성

아래의 명령으로 사용자 및 그룹을 생성합니다.

# groupadd dba
# groupadd oinstall
# useradd -g oinstall -G dba oracle
# passwd oracle


오라클이 설치될 디렉토리를 생성합니다.

# mdkir -p /u01/app/oracle
# chown -R oracle.oinstall /u01
# chmod -R 755 /u01/app/oracle



4. 커널 파라미터 수정

/etc/sysctl.conf 파일에 뒷 부분에 아래와 같이 내용을 추가합니다.

[root@localhost ~]# cat >> /etc/sysctl.conf << eof
### Oracle 10g Kernel Parameters
kernel.shmmax = 1073741824
kernel.sem = 250 32000 100 128
fs.file-max = 65536
eof

수정한 /etc/systl.conf의 파라미터 값을 새롭게 커널에 적용시킵니다.

[root@localhost ~]# /sbin/sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.shmmax = 1073741824
kernel.sem = 250 32000 100 128
fs.file-max = 65536


5. 오라클 사용자의 환경변수 추가

/home/oracle/.bash_profile 파일의 뒤에 아래 내용을 추가합니다.

##############################################
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=ORCL
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export DISPLAY=:0.0
##############################################


관리자(root) 권한으로 아래의 명령을 실행합니다.
# xhost + 127.0.0.1
※ 위 명령은 반드시 해당 로컬서버에서 작업을 하셔야 합니다.(원격에서는 안됩니다.)
(오라클 설치는 로컬서버에서 모든 작업을 하시는 것이 좋습니다.)


6. 오라클 설치시작

※ 지금부터는 반드시 oracle 사용자 계정으로 실행해야 합니다.
지금 root권한으로 로그인 되어있다면 로그아웃 하시고,
oracle 계정으로 다시 로그인하시기 바랍니다.

오라클 설치 프로그램을 압축푼 장소로 이동하여, 아래 파일을 찾아서 실행시킵니다.
$ sh runInstaller

※ 만약 글자가 깨져서 보인다면, 프로그램을 종료하고 아래명령을 입력한후 다시 프로그램을 실행합니다.
$ unset LANG


7. Welcome

환영인사 입니다. Next를 클릭합니다.


8. Specify Inventory directory and credentials

디렉토리와 시스템그룹 지정. Next를 클릭합니다.

※ 경고창이 나타납니다.
/u01/app/oracle/oraInventory/orainstRoot.sh를 실행하라는 내용입니다.
콘솔을 띄워서 root 권한으로 변경한 다음, 아래와 같이 스크립트 파일을 실행합니다.
# /u01/app/oracle/oraInventory/orainstRoot.sh
팝업창의 Continue를 클릭합니다.


9. Specify File Locations

설치할 파일과 설치될 파일의 위치를 지정합니다. Next를 클릭합니다.


10. Select Installation Type

오라클을 설치할 유형을 선택합니다. Enterprise Edition을 선택하고, Next를 클릭합니다.


11. Specific Prerequisite Checks

이제까지의 설정을 확인합니다. 이상 없으면 Next를 클릭합니다.

커널 파라미터를 체크하는 부분에서 경고 팝업이 뜹니다.
Yes를 눌러 경고를 무시하고 계속 진행합니다.


12. Select Database Configuration

데이터베이스 사용 용도에 따라 설정 옵션을 선택합니다.
보통 General Purpose로 하면 됩니다. Next를 클릭합니다.


13. Specify Database Configuration Options

데이터베이스의 Global Database Name/SID/Character set의 옵션을 지정합니다.
Global Database Name와 SID는 [ORCL] 로 Character set은 [Korean KO16KSC5601]로 Database 예제 스키마도 생성합니다.
Next를 클릭합니다.


14. Select Database Management Option

데이터베이스를 관리하는데 필요한 옵션을 선택합니다. Next를 클릭합니다.


15. Specify Database File Storage Option

데이터베이스 파일의 스토리지 옵션을 지정합니다. 보통 File System으로 하시면 됩니다.
Next를 클릭합니다.


16. Specify Backup and Recovery Options

백업이나 복구 옵션을 지정합니다. 기본값으로 넘어갑니다.
Next를 클릭합니다.


17. Specify Database Schema Passwords

오라클 관리를 위한 계정들의 패스워드를 입력합니다.
(SYS, SYSTEM, SYSMAN, DBSNMP 등)
개별적으로 입력해도 되며, 하단의 "Use the same password for all the accounts"를 선택하여 한번에 동일하게 입력 가능합니다.
Next를 클릭합니다.

18. Summary

이제까지 선택한 내용을 창으로 보여줍니다. [Install] 버튼을 클릭하여 설치를 시작합니다.


19. Install

....[설치 진행 중]....

자동으로 설치가 진행되는 동안, 차한잔 하면서 느긋하게 기다려줍시다.



20. Configuration Assistants

파일 설치 후 데이베이스 관련 파일들을 복사하고 오라클 인스턴스를 생성합니다.

70%이상 넘어가면서 패스워드 오류가 날 수 있습니다. 이는 무시하셔도 좋습니다.

모든 설치가 끝난 후, 각 오라클 시스템에 패스워드를 지정하려면 [Password Management]를 클릭하고, 아니면 [OK] 버튼을 클릭합니다.


21. Setup Privileges

[OK] 버튼을 클릭하면 root.sh 파일을 실행하라는 창이 나타납니다.
root 권한으로 아래와 같이 스크립트 파일을 실행합니다.
# /u01/app/oracle/product/10.1.0/db_1/root.sh


22. End of Installation

이제 설치가 모두 종료되었습니다. Exit 버튼을 눌러서 프로그램을 종료합니다.


-----------------------------------------------------------------------------
데이타베이스를 기동만 하면 안되죠 외부에서 접속하도록 리스너를 띄워야 합니다.

우선 listener.ora 파일을 수정합니다.
$ORACLE_HOME/network/admin/listener.ora 파일 내용

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.1.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 해당ip)(PORT = 1521)) # <== 서버명 대신에 반드시 ip를 넣으세요 127.0.0.1을 넣으시면 안됩니다. 외부에서 소켓이 닫힌 것으로 인식합니다.
)
)
)

한텀내용을 일일이 보고 친 것이니 오타가 있을 수 있습니다. 이는 감안하고 보세요.

이제 리스너를 띄웁니다.

$ lsnrctl start

※ 여기서 다음과 같은 Error가 날 경우...
   
TNS-12537 : TNS:connection closed
    TNS-12560 : TNS:protocol adapter error
    TNS-00507 : Connection closed
    Linux Error : 29: Illegal seek
    우선 /etc/hosts 파일 내에
    127.0.0.1 localhost.localdomanin localhost
    가 추가 되었는지 확인 후에... 다시
    $ lsnrctl start
    를 해본다... 그렇게 해도 되지 않을 경우에는..
    $ORACLE_HOME/network/admin 에 보면.. sqlnet.ora 파일이 있다.
    그 파일에.. 다음과 같은 명령어를 추가 한 후에.. 실행 하면.. 될것이다.
 
  tcp.validnode_checking = no
    tcp.invited_nodes = (해당 ip , localhost,localhost.localdomain);
 
    입력 후, 리스너 가동 여부를 확인 한다!
   
리스너의 기동을 확인합니다.

$ netstat -a | grep 1521
tcp 0 0 해당ip:1521 *:* LISTEN

절대
tcp 0 0 서버명:1521 *:* LISTEN
으로 나오면 위 설정중 HOST의 내용을 확인하세요.

[DB] SGA

1. System Golbal Area

 : SGA는 Oracle Server가 Startup 될 때, Computer Memory 영역에 할당되고, Dabase가 Shutdown 될 때
   Memory에서 제거 된다.

SGA_Full2.jpg

이미지출처 : www.mbjconsulting.com


◆ Shared Pool : Library Cache + Data Dictionary Cache
    : 가장 최근에 실행된 SQL 문장과 Database의 Table 및 Object, User등 많은 정보를 저장.
◆ Database Buffer Cache : 가장 최근에 사용된 Data를 저장.
◆ Redo Log Buffer :
Database에 가해진 변경 사항 기록.


2. Shared Pool 

 (1) Library Cache : SQL TEXT, Parsing된 형태, RDBMS에 의해 제시되는 SQL구문의 실행 계획과 실행되는
                                    PL/SQL PACKAGE(패키지)와 Procedure(프로시저)를 저장합니다.
 (2) Data Dictionary Cache : 참조되는 Database의 모든 정보와, Architecture, User등이 정의된 모든 Table과
                                                   View들의 집합.

 ※ Shared Pool의 크기는 Oracle의 환경변수 File인 Parameter File에 지정된 값으로 결정.
     shared_pool_size는 Shared Pool의 크기를 결정하는 Parmeter.

2-1. Library Cache 
 : User가 요청한 Query문장을 Server Process가 여러 단계를 처져 작업하게 될 때, 사용하는 작업 공간.
   문자의 Text, Parse Tree, Execution Plan등을 저장.
   SQL문장 하나를 실행시마다 사용된 SQL문장이 저장.
   User가 이전과 동일한 SQL 문장을 길행하면 Parse Time을 줄여주며 성능을 향상 시킴.

 ※ 동일한 문장
     - 대소문자, 공백 등을 포함하여 문자열이 동일한 경우
     - 참조된 Object가 동일한 경우
     - 변수의 유형과 이름이 동일한 경우
     - User(Schema)도 동일한 경우
     즉, 100% 같은 문장만이 동일한 문장으로 인식 된다.

2-2. Data Dictionary Cache
 : Query문의 Table, Column의 정보, User Privilege등을 Server Process가 참조하는 영역

 (1) Data Dictionary Cache에 저장된 정보
    - Database에 존재하는 Table과 View의 이름
    - Table의 Column명과 Data Type
    - 모든 User의 정보와 Privilege를 저장하는 Table과 View 
 
 (2) Data Dictionary Cache에 저장된 내부 정보 구분 하기
    - User_ : 현재 User가 소유한 Object에 대한 정보
    - ALL_ : 현재 User가 Access 할 수 있는 Object에 대한 정보
    - DBA_ : DBA만이 접근 가능한 VIEW로 Database의 모든 정보를 제공
    - V$ : Database내부의 Architecture 및 성능정보를 보는 Dynamic Performance View(동적성능 뷰)

    ex) SQL> SELECT object_name
                   FROM user_object;
         SQL> DESC user_objects => sql +에서 하세요~

==============================================================

[DB] Oracle DB에 접속 하는 3가지 방식!

<Oracle DB에 접속 하는 3가지 방식>


1. Local 방식

  - DB server가 다른 곳이 있어서 Host IP를 가지고 접속
  - ID/PW 가 필요함.
  - DB server 의 ID/PW 필요


2. TNS 방식 (Client - Server)
  - DB의 Host IP
  - DB Connect Port
  - DB 통신 프로토콜
  - DB SID
  - DB ID/PW

 => 많은 정보들이 필요하지만 이러한 정보들은 Oracle Home Directory > network > Admin 폴더에 보면
     tnsnames.ora File에 다 들어가 있다. 이것을 변경해 주면.. 접속 할 수 있다.

3. 응용프로그램을 통한 접속 방식!

 => SQL * PLUS 같은 응용 프로그램 으로 접속!

[DB] SQL * PLUS 명령어 모음

<SQL * PLUS 명령어>

1. linesize : 좌,우 화면에 linesize를 재설정(default : 100) ex) sql> set linesize 200

2. pagesize : 상,하 page size를 재설정(default : 14) ex) sql> set pagesize 20

3. desc Table_name : Table의 구조를 본다. ex) sql> desc emp;

4. Edit(=ed) : SQL문 편집 시 사용. (윈도우에서는 메모장(afiedit.buf File)이 열림) ex) sql> ed

5. Run(=/) : Buffer에 들어 있는 SQL 문장을 실행 ex) sql> /

6. List(=l) : Buffer에 들어 있는 SQL 내용을 볼 수 있음. ex) sql> l

7. @File_name : SQL의 파일을 저장 했을 시, SQL Buffer로 불러 와서 실행. ex) sql> @annual.sql

8. get File_name : Disk File 즉, SQL파일로 저장 했을 시, 그 내용을 Buffer로 불러 들임. ex) sql> get annual.sql

9. save File_name : 현재의 Buffer에 있는 내용을 File_name으로 저장한다. (반드시 .sql 파일)
                                    ex) sql> save annual.sql

[DB] Oracle Database Server의 구성

Oracle Database Server는 Oracle Instance 와 Oracle Database로 분리 되어 있다.

- Oracle Instance : Oracle을 접속하게 하기 위한 수단(Memory, Process)
- Oracle Database : Oracle이 파일을 저장하기 위한 수단(File)


※ Oracle Architecture
 (1) Architecture : SGA + DATABASE Files + Process
 (2) Structure : DATABASE, TABLESPACE, SEGMENT, EXTENT, BLOCK (논리적인 저장단위)

1. Memory 

 - SGA : Oracle DATABASE가 StartUp(기동)될 때 Memory에 할당되는 공유 영역
             (Shared Pool, Database Buffer Cache, Redo Log Buffer)
  (1) Shared Pool
       : 공유 메모리 영역, SQL문장들이 처리되는 Library Cache, Data Dictionary 정보를 간직하고 있는
         Data Dictionary Cache로 구성됨.
     - Library Cache : SQL 문장을 실행하거나 문장에 관한 정보를 보관
     - Data Dictionary Cache : DB의 Table과 View 이름, Table들의 Column명과 Data Type, User 정보를
                                          포함하는 Data Dictionary 정보를 저장하고 있는 공간.
  (2) Database Buffer Cache
        : SQL문장의 실행으로 인해 Disk로부터 읽어 들인 Data의 복사본을 저장하는 Memery 영역.
          Data의 변경전 값을 보관하는 Before Image, 변경 후 값을 저정하는 After Imager로 구성.
  (3) Redo Log Buffer
        : Database의 모든 변경 사항에 관한 정보를 기록. 장애 발생시 DB Recovery에 사용됨.

July 15, 2007
===================================================================

2. Files

 OS에 저장되는 일반 File형태와 DB 내부에 저장되는 형태로 나눌 수 있는데 먼저 DB 내부에 저장되고 Oracle DB를 구성하는 3개의 중요한 File이 있다.

 (1) Control Files
      : Database에 무결성을 보장해 주는 Files. 즉, Oracle DB의 상태 정보를 저장 한다.
        최소 하나의 파일이 필요. 이진 파일로 구성되어 수정 불가.
 (2) Data Files
      : DB의 실제 Data를 저장하는데 사용. (데이터 객체 저장 + Data Dictionary 정보도 포함됨.)
 (3) Redo Log Files
      : 모든 Database의 변경 사항을 저장. 오로지 복구를 위해서만 사용되는 File.

 Oracle Database 외부에 저장되는 Files. 

 (1) Parameter File 
        : Oracle DB의 환경설정 Files. Instance의 상태 정보 저장. Txt File로 되어 있어서 수정이 가능함.
 (2) Password File
        : DB의 관리자 인증을 담당 하는 File.
 (3) Archive Log File
        : Redo Log File의 복사본. 즉, Recovery를 위해 사용.
 (4) Trace File
        : BackGround Process의 Error 정보를 기록하며 DB의 문제가 발생시 그 원인을 찾아내는데 사용.

July 16, 2007
===================================================================

3. Process 

 Oracle Process는 Server Process, User Process, Background Process 등이 있다.

 (1) Sever Process
      : User Process로부터 전달받은 SQL문을 Parse(해석), Execute(실행), Fetch(인출)작업을 통해  
        결과를 다시 User에게 전달하는 역할.
 
 (2) User Process
 
      : User가 실행시킨 SQL문을 Server Process에 전달하는 역할. 
 
 (3) Background Process

      : Oracle Database의 운영에 필요한 전체적인 기능을 담당하는 Process로 이중 필수 5대 Process인
        PMON, SMON, CKPT, DBWR, LGWR등은 Oracle Database를 운영하는데 필수 Process 임.
   
   - DBWR : Database Buffer Cache의 내용을 DataFile에 내려쓰기
   - LGWR : Redo Log Buffer의 내용을 Redo Log File에 내려쓰기
   - SMON : Database Open시 File들의 Consistency(일관성)검사 및 Database Recovery.
  - PMON : Process 비정상 Shutdown시 Resource 회수, Transaction Rollback, Lock 해제.
   - CKPT : Buffer Cache 내의 변경 사항이 Database에 영구적으로 기록 될때 마다 DB 상태 정보 갱신.
                (Database 동기화 시켜 줌)

July 18, 2007
===================================================================

[DB] 리눅스 상에서 오라클 10g 설치 하기.

< OS 환경 >
 - Asianux
 - Oracle 10g
 - VM ware 사용

1. 오라클 설치를 위해 오라클 홈페이지에서 프로그램을 다운 받습니다.
 : http://www.oracle.com/technology/software/products/database/oracle10g/
   Oracle Database 10g Release 1 (10.1.0.3) for Linux x86

2. 압축을 해제 합니다.
 : # zcat file_name  or # unzip file_name.zip or # tar xvfz file_name.tar.gz

3. AsiaNux에서는 "오라 나비" 이라는 오라클을 특별한 변수 설정 없이 설정할 수 있게 하는 프로그램이 있다.
    만약, "오라나비"를 사용한다면, 앞으로를 잘 따라하게 되면.. 설치 될 것이다.
    (여기서는 "오라나비" 사용이 아닌, 환경 설정, 유저 추가 등.. 오라나비를 이용하지 않을 경우를 설명한다.)

4. 오라클 설치 시에 사용될 사용자 및 그룹을 생성합니다.
   # groupadd dba
   # groupadd oinstall
   # useradd -g oinstall -G dba oracle //초기화 그룹과 그룹을 지정하여 oracle 사용자를 추가한다.
   # passwd oracle
   # mkdir -p /u01/app/oracle
   # chown -R oracle.oinstall /u01
   # chmod -R 755 /u01/app/oracle
   ※ 오라클을 다른 경로에 설치하고자 하는 경우 위의 'u01'을 알맞은 경로로 바꾸고,
        "오라클 사용자 환경 변수 설정" 부분에서 'ORACLE_BASE' 항목을 적절한 값을 변경하여 입력 하면 된다.

 5. 커널 파라미터 수정
  # vi /etc/sysctl.conf
### Oracle 10g Kernel Parameters
 kernel.shmmax = 2147483648
 kernel.sem = 250 32000 100 128
 fs.file-max = 65536
(/etc/sysctl.conf 파일에 kernel.shmmax 값이 있다면 수정 또는 기존 행 주석 처리 후 입력함)

# /sbin/sysctl -p //수정한 파라미터 값을 커널에 적용

6. 오라클 사용자 환경 변수 설정
 - $HOME/.bash_profile를 열어 하단에 오라클 설치 및 사용을 위한 설정을 입력한다.

export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=ORCL
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin

7. 본격적인 오라클 설치를 위해 콘솔창에서 OUI를 띄운다.
    만약 init 3환경에서 작업을 했다면, startx 후에.. 콘솔 창을 띄운 후 작업을 한다.

 # sh runInstaller

    만약, OUI의 글자가 깨어져서 보인다면 $unset LANG 을 실행 후 다시 띄운다.

환영 메시지가 나타나면, 읽어보고.. 열심히... ^^:;

※ 참조

[Redhat 9.0 환경에서 Oracle 10.2.0 설치 하기]

 = > http://blenz.textcube.com/30

 

[Wiget] 위젯 가운데 정렬 하기

나는 가운데 정렬을 하고 싶다구!!!!
특별한 도움말이 없던... 나는.. 비장의 무기(?) 소스 보기를 통해..
찾아보기 시작했다.

머.. 간단한 태그라..<center>만 쓰면 되겠지? 하고.. 썼지만..
되지 않았다..ㅜㅜ

그래서 앞뒤 부분을 잘 살펴보니..
<span>과 같이 쓰이는 것이였다.

그리하여... 혹시나.. 나처럼.. 붙여 넣기 후.. 좌측정렬에 난감해 하시는 분들을 위한 포스팅!
중앙 정렬을 하고 싶을 때는요..

<center><span>[복사해 놓은 소스]</span></center>


이렇게 하시면 된답니다~
도움이 되셨길..^^

[Web] 휴리스틱(Heuristic)

휴리스틱(heuristic)

휴리스틱은 불확실성 하에서 의사결정 (또는 판단)을 해야 할때, 과거의 경험을 토대로 판단을 하는 방법을 말한다.따라서 의사결정이 빠르다라는 장점은 있지만, 그 판단이 항상 옳다라고 장담을 할 수 없는 단점이 있다.


(1) 이용가능한 휴리스틱 (Availability Heuristic)
자신의 경험을 했거나 들을 정보를 토대로 판단을 하는 것이다.
이 경우 자신이 들은 것의 빈도에 따라 잘못된 판단을 할 수 있다.
예를 들어 미국에서 자살자수과 타살자수 중 어느 것이 더 많냐라는 질문이 있을 때,
대부분 타살이라고 하지만 실제로는 자살이 타살보다 더 많다.
이는 매스컴을 통해 자살보다는 타살에 대한 보도가 자주 나오기 때문에, 타살이 더 많다라고 느끼는 것이다.

(2)이미지화 용이화 (Ease of Imaginablility)
어떤 판단을 할 때 자신이 이미지화(형상화) 할 수 있는 방향으로 결정을 하는것을 말한다.
자신이 머리속에서 이미지화 할수 있는 것을 없는 것에 우선하여 옳다라고 생각한다.

 

(3) 사후판단 편향 (Hindsight bias)
어떤 사건(또는 의사 결정이 필요한 event)의 결과를 알고 나서는 자신이 사전에 그것을 알았다는 듯이 생각하는 것이다.
흔히 "내가 그럴 줄 알았어" 라고 말하는 것으로, 본인은 사건 전에는 몰랐지만 사건이 일어난 후 그것을 마치 알았다고 생각하는 것이다.

 

(4) 대표성 함정 (Representativeness Heuristic)
일반적으로 알려져있는(대표적인) 사실로 인해 잘못된 판단을 하는 것으로, 대수의 법칙(law of numbers)법칙과 유사한다.

(5) 도박사의 오류 (Gambler's Fallacy)
과거의 결과를 토대로 미래를 잘못 예측하는것을 말한다.
예를 들어 야구에서 2할 5푼(4번 타석에 나오면 1번은 안타는 치는 실력)의 타자가 있을 때,
앞 타석 3번에서 안타를 못치면 4번째 타석에서는 안타를 친다라고 생각하는 오류를 말한다.
실제로 4번째 타석에서도 안타를 칠 확률은 100%가 아닌 25%이다.

 

(6) 평균으로의 회귀 (Regression to the Mean, Regression Effect)
단기적인 결과를 토대로 장기적인 결과를 예측하는 잘못된 판단을 하는 것을 말한다.
단기적으로 불규칙한 결과가 있더라도 장기적으로 갈수록 평균치에 도달한다는 것을 말한다.
5할(2번 타석에 나오면 1번은 안타는 치는 실력)의 실력을 가진 타자가 있다고 했을 때 초반에 부진하더라도 장기적으로 갈 수록 5할 타율에 도달한다.

 

(7)기준율을 무시한 믿음 (Neglect of Base Rate)
확율을 고려하지 않은 판단으로 희귀한 병에 양성반응이 나왔고 신뢰성이 70% 이더라도, 사람들은 양성반응이라는 것 때문에 병에 걸린 확율을 70%가 아닌 100%로 판단을 한다.

(8)기준점 효과와 조정(Anchoring and Adjustment)
불확실한 상황에서 판단을 할 때 기준점을 설정하고, 그 다음에 조정을 해서 최종 예측을 하는 것을 말한다.
예를 들어, UN가맹국 중 아프리카 국가의 수를 맞히는 문제가 있고, 그전에 룰렛을 통한 임의의 숫자를 상대에게 알려주면, 국가의 수를 룰렛에 의해 나온 수에 유사하게 대답을 한다.
룰렛의 수가 기준점이 되는 것으로 실제 아프리카 국가의 수와 룰렛의 수와는 전혀 관계가 없다.

-행동경제학 (도모노 노리오 저) 참조

[Web] 서비스 기획자가 갖추어야 할 것들

각종 모집 요건 및 이력서를 쓰면서 느꼈던 것들이다.
(아래의 내용은 극히.. 개인적인 것입니다.. 많은 조언 부탁 드립니다.)

1. 커뮤니케이션 능력
2. 다양한 경험
3. 꼼꼼한 분석력
4. 창의력..(문제해결능력)
5. 새로운 것을 두려워 하지 않는 도전 정신
6. 정리 능력
7. 기술(Web 관련..)


이러한 것들이 있는데.. 나는 현재 무엇을 갖추고 있다고 생각하는가?

1. 커뮤니케이션 능력 
 =======================    50%
  : 아직 논리적으로 무언가를 전달하지 못한다.

2. 다양한 경험
 =================================   80%
  : 대외 활동, 봉사활동, 해외연수 등 다양한 경험을 학창시절 동안 했다.

3. 꼼꼼한 분석력
 =============================   70 %
  : 점점 좋아지고 있는 점이다. 무언가를 배워가면서 하나하나 분석해 가는 것이 재미 있기 때문에
    다음과 같은 점수를 주었다.

4. 창의력 .. (문제해결능력)

 =====================================  85%
  : 주위에서 어떠한 문제가 발생하면 항상 나에게 온다. 그런데 이상하게 해결이 잘 된다.
    또한, 빠른 판단으로 해결할 수 있는 방안 제시를 잘한다. (프로젝트나 업무 수행시 칭찬을 들어서..)
    (너무 자랑인가...ㅠ.ㅠ?)

5. 도전 정신
 
 ==========================  60%
  : 해외 연수를 하면서 많이 늘었다. 스키를 이틀 배우고 점프했던 기억을 떠올리면서 도전을 하면,
    그 어느 것도 두렵지 않다.

6. 정리 정리 정리..

 =============================  70%
  : 나는 흔적을 남기는 것을 좋아 한다. 그래서 블러그든 어디에는 끄적인다..
    그러나.. 조금 더 체계적으로 정리 해야 한다고 느낀다.

7. 기술 
 ====================================  85%
  : Web과 관련된 기술은 Ajax, Html, JSP, PHP, Flex, Flash, Actionscript, Javascript 등 관련 언어에
    대해서도 알아야 한다고 생각한다. 흠.. 위와 같은 내용은 소스 리딩은 가능! 또한 홈페이지 제작도
    가능.. 그래서.. 85%.. (다른 기술들은 UI 작성 능력?? )

 위의 내용은 내가 내 자신을 평가해 본 것입니다. 혹시.. 웹 기획자가 더 갖추어야 할 것들이 있거나..
관련된 서적을 추천해 주고 싶으신 분은.. 꼭! 꼭! 댓글 및 트랙백 부탁 드립니다..

[Web] "웹 기획론" 읽고 정리..

웹 기획을 하기위한 필/수/도/서 (?) 라는..
"정유진의 웹 기획론 : 비즈니스의 성패를 결정하는 3C + 1P"
를 읽었다.

그 동안 생각했던 모든 것들 + a로 많은 것을 얻을 수 있었으며..
나에게는 더 많은 꼼꼼함과 기초정보의 중요성을 더욱 느끼게 해주는 계기가 된 책이다.

이 책은 간단하게 큰 타이틀만 보더라도.. 안에 내용을 알 수 있게 쓰여졌다.
혹시 웹 기획자를 하고 계시거나.. 하고 싶으시다면.. 꼭 읽어 보고, 느껴 보았으면 좋겠다.

==================================================================================
1. 웹 기획의 시작 : 명확한 목표 설정
 (1) 성공적인 웹사이트란 무엇인가?
   a. 성공적인 웹사이트를 만드는 두 가지 기본 사항
      - 비즈니스 목표를 파악하는 것
      - 유저를 파악하는 것
   b. ‘변하지 않는 사이트의 의미
      - 크게 바뀌지는 않으나 새로운 서비스를 꾸준히 제공한다.
   c. 웹기획이 전략이 될 때
     - 기준을 먼저 정하라!
     - 그전에 생각해야 할 것들
     - 왜 사이트를 만드는가? 필요한가? 리뉴얼하려고 하는가?
     - 사이트의 성공이란 무엇이며, 어떻게 측정하는가?
     - 유저가 이 사이트를 통해 가장 얻고 싶은 것이 무엇인가?
     - 유저는 이 사이트를 방문해서 무엇을 하는가?
     - 유저가 다른 경쟁 사이트가 아닌 이 사이트를 방문해야 하는 이유는 무엇인가?
     - 유저가 이 사이트를 다시 방문 해야 하는 이유는 무엇인가?
 (2) 비즈니스 목표 설정 : 왜 만드는지 알아야 잘 만들 수 있다.
   a. 먼저 ?”라는 질문을 한다.
     - 새로 만들 사이트를 목적을 묻는 것이다.
   b. 비즈니스 목표가 웹사이트의 목표와 꼭 일치하는 것은 아니다.  
    
-
농심 site : 제품에 대한 상세 소개
 (3) 브랜드와 웹기획
  
a. 온라인 브랜드는 유저의 경험으로 만들어진다.
   b. 오프라인 브랜드 이미지와 연계되어야 한다.
 (4) 유저의 머리속에 들어가는 몇 가지 방법
   a. 유저가 누구인지 아는데서 시작한다.
   
 - , 타겟을 정의하여 그 특정 타겟의 기호와 행동패턴에 맞는 사이트를 만든다.
   b. 유저의 행동 패턴을 보여주는 로그 분석
   c. ‘유저에서 사람으로, 유저 시나리오
   d. 유저빌리 테스트
 (5) 벤치마킹도 전략이다.
   a. 밴치마킹과 유저빌리티 테스트의 공통점
     - 무엇에 대해 알고 싶은지, 미리 알고 있어야 한다.
     - 기획 과정에서 지속적으로 이루어진다.
     - 검증해야 한다.
   b. 나도 할래, Me-too

 - 잘 하는 앞 사람이 하는 것을 그대로 따라하는 기획

c. 적합한 벤치마팅 대상 사이트는 ?

 - 경쟁 사이트, 분야는 다르더라도 같은 타겟층을 공유하는 사이트, 같은 분야의 톱 사이트,
       
최근 이슈 사이트


2.
사이트를 채우는 핵심 : Contents

 (1) 컨텐츠의 구조를 설계하는 프로세스

a. 컨텐츠 기획의 내용형식

 - 컨텐츠 기획 체크리스트

  - 컨텐츠의 목표 (목적, 타겟유저, 수명, 업데이트 방식)

  - 컨텐츠의 제작 (내용, 포맷, 분량, 사용 범위, 구성, 담당, 저작권)

  - 컨텐츠의 운영 및 관리 (업데이트 주기, 업데이트 방식, 관리, 비용, 가격)

  - 컨텐츠의 제공 (채널, 구조, 레이블링, 네비게이션, 검색, 인터랙션)

b. 컨텐츠 리스트 (재료 컨텐츠 전체를 목록화 한다)

 - 무엇이 들어가고 무엇이 들어가지 않을지 결정한다.

 - 컨텐츠별로 컨텐츠 체크리스트의 각 항목을 검토한다.

 - 문서화하고, 공유한다.

c. 컨텐츠 분류하기

 - 오프라인 관찰 직접 뛰어 다니기

 - 경쟁사 벤치마킹

 - 카드 소팅 : 컨텐츠 분류 방법

d. 레이블링 : 분류된 정보에 이름 붙이기, 직관성이 필요함.

 - 레이블의 역할 : 유저에게 설명, 클릭 유도, 정보 표현

e. 메타데이터 : 컨텐츠에 관한 컨텐츠, 정보에 관한 정보의 맥락이 정의 되어 있는 데이터

 - 검색 옵션

 - 컨텐츠 부가 서비스 기획

 - 메타데이터 키워드 관리

(2) 유저 메이킹 컨텐츠의 활용

 a. 온라인 컨텐츠의 종류

  - 제작 컨텐츠 : 업체가 직접 제작하거나 외주를 통해 유저에게 제공하는 컨텐츠

  - 유저 메이킹 컨텐츠 : 유저가 만든 컨텐츠, 유저가 재가공한 컨텐츠도 포함됨.

  - 유저 프로파일/액티비티 : 사이트를 운영하면서 자동으로 쌓이는 정보

  - 링크 : 중요한 정보와 중요하지 않은 정보를 유저가 대신 걸러줌

 b. 유저 메이킹 컨텐츠를 사이트와 통합하는 방법

  - 별도 게시판 별도 메뉴 : 낮은 단계의 통합

  - 토크백 : 독자의 피드백 강화 :

  - 리플 : 공동 컨텐츠 제작의 가능성

 c. 컨텐츠 리사이클링

  - 단기적 리사이클링: 하이라이트 컨텐츠

    : 인기있는 내용을 골라 베스트 컨텐츠 형태로 제공

  - 장기적 리사이클링 : 컨텐츠의 자료화

 (3) 컨텐츠의 서비스화

  a. 마음과 주장을 드러내는 평가시스템

   - 행동을 유발시키는 지관적인 인터페이스

   - 인터페이스를 통해 유저에게 보상한다.

  b. 내 것으로 만드는 개인화서비스

  c. 추천이나 선물을 통한 공유

  d. 디지털 컨텐츠의 물리적 소유

  e. 다양한 컨텐츠 소팅 옵션을 제공한다.


3.
사람과 사람이 만나다: Community

 (1) 웹 사이트에서 일어나는 커뮤니티 발전 단계

1단계 : 사이트 -> 개인 일방향 푸시

 - 컨텐츠 중심의 사이트가 지향하는 모드

2단계 : 사이트 개인 쌍방향 인터렉션

 - 유저가 적극적으로 사이트 활동에 참가하게 되는 모드

3단계 : 유저 유저 간의 멀티 커뮤니케이션/커뮤니티

 - 유저가 사이트와 인터렉션 뿐만 아니라, 다른 유저와 적극적으로 커뮤니케이션 하는 모드

 (2) 커뮤니티 기획시 우선 컨텐츠나 서비스에 사람과 사람을 연결시키는 커넥티비티라는 개념을
      도입하자.

 (3) 사이트에 Connectivity을 도입하는 방법

a. 여기에 사람이 있음을 보여준다.

 - 조회수 공개

 - 컨텐츠를 본 사람들의 이름 공개

 - 컨텐츠를 본 사람들의 의견 공개

b. 사람과 사람이 만날 수 잇는 공간을 제공한다.

 - 유저가 필요에 따라 공간을 만들게 한다.

 - 사이트에서 미리 주제별로 분류된 공간을 제공한다.

c. 사람에 대한 정보를 제공한다. 내가 돋보일 수 있는 방법이나 내 감정을 표현할 수 있는 방법을 제공한다.

 - 프로필 분석 서비스

 - 아바타

 - 행동스토리(Review)

 - 다른 사람의 추천이나 평가, 회원 등급

d. 내가 원하는 사람을 쉽게 찾을 수 있는 방법을 제공한다.

 - 조건에 의한 검색/브라우징

 - 취향이나 행동을 통한 매칭

 - 회원 프로모션

e. 그 사람과 연결할 수 있는 방법을 제공한다. 생각이나 정보 등을 나눌 수 있는 방법을 제공한다.

4. 유저의 마음을 읽는다. : Commerce

 (1) 필요한 상품을 찾게 한다.

  a. 유저의 니즈를 창출한다.

   - 기획/프로모션 영역을 활용한다.

   - 유저에게 제품을 푸시한다.

  b. 상품에 대한 다양한 진입 경로를 제공한다.

   - 다양한 방식의 상품 분류를 제공한다.

   - 하나의 상품이 2개 이상의 카테고리에 속하게 한다.

   - 상품을 통해 다른 상품을 찾게 한다.

c. 효과적으로 검색할 수 있게 한다.

 - 제품 간의 차이를 알 수 있게 한다.

 - 유저의 선택의 폭을 좁힌다.

 - 검색 결과와 제품 카테고리의 연계

  d. 유저의 실수를 보완한다.

   - 검색어에 틀린 단어를 넣었을 경우

   - 검색 결과가 없는 경우

   - URL 문제

   - Page Not Found 페이지의 관리

 (2) 유저를 설득하고, 행동하게 한다.

  a. ‘지금 당장행동하게 한다.

   - 지금 구매해야만 하는 급박한 이유를 제공한다.

   - 유저가 원하는 시점에 구매할 수 있게 한다.(품질 규격화 되어 있는 CD, 책 등)

   - 관련 제품을 함께 구매할 수 있게 한다.

   - 액션을 통해 점진적으로 설득한다.

  b. 장바구니 유저빌리티

   - 장바구니 담기를 강조한다.

   - 제품이 장바구니에 담겼다는 사실을 명확하게 알린다.

   - 사이트의 어디에서나 장바구니를 쉽게 알아보게 한다.

   - 장바구니를 담을 때 로그인을 요구하지 않는다.

   - 직관적으로 상품의 수량을 바꾸거나 삭제할 수 있게 한다.

   - 최종 지불 비용을 계산하고, 보여준다.

   - 상품의 이름과 함께 썸네일을 제공한다.

   - 장바구니에 담긴 내용을 보관한다.

   - 고객 지원을 받을 수 있게 하고, 신뢰할 수 있게 한다.

  c. 신뢰할 수 있는 사이트의 조건

  d. 고객을 지원하는 방법

   - 전화

   - 이메일

   - 폼메일

   - Help & FAQ

 (3) 컨텐츠와 커뮤니티, 커머스의 통합

  a. 커머스 사이트에서의 컨텐츠

  b. 사이트에서 제공하는 정보

   - 상품 정보 컨텐츠

   - 웹진형 독립 컨텐츠

   - 테스티모니얼 : 업체에서 사전에 제작하여 보여주는 유저의 의견 (유저메이킹 컨텐츠 + 사이트 제공)

  c. 고객의 말로 상품을 판다.

   - 상품 Review, 상품 자체를 재패키징한 추천 리스트, 측정 제품군에 대한 구매 가이드나 팁, Q&A

 (4) 재방문, 재구매를 유도하는 방법

  a. 복잡한 단계를 간편하게 한다.

  b. 자주 쓰는 서비스는 북마크하게 한다.

  c. 필요한 상품을 찾기 위한 정보를 기억한다.
 

5. 모든 유저는 특별하다 : Personalization

(1) 개인화 서비스의 내용

a. 개인화에서 제공되는 서비스들

 - 나의 개인 정보를 관리한다.

 - 나의 현재 상태를 확인한다.

 - 내가 선택한 컨텐츠를 관리한다.

 - 나의 니즈에 따라 사이트의 컨텐츠를 필터링한다.

 - 나의 히스토리 정보를 보관한다.

 - 나의 커뮤니케이션을 관리한다.

 - 나에게 필요한 것을 알려 준다.

 - 내가 편한 방식으로 사이트를 이용할 수 있게 한다.

 - 부가 서비스나 컨텐츠를 제공받는다.

 - 남과 다른 특별한 대접을 받는다.

b. 개인화 서비스가 제공되느 장소

 - My 페이지

 - 홈페이지

 - 글로벌 네이비게이션 (사이트 전체에서 공통으로 보여지는 곳)

 - 프로세스

 - 이메일

c. 유저에 대한 정보를 얻는 방법

 - 중요한 질문을 한다.

 - 유저에게 개인화의 가치를 설득한다.

 - 단계적으로 정보를 수집한다.

 - 프라이버시 보호를 강조한다.

(2) 개인화를 활성시키는 유저 인터페이스

a. 개인화 서비스의 문제점

 - 어떻게 개인화 서비스를 더 많이 사용하도록 설득할 것인가?

 - 개인화 서비스로 인해 유저의 네비게이션 흐림이 깨진다면, 이것을 어떻게깨야 가장 효과적인가?

 - 유저의 클릭을 최대한 절약할 수 있는 방법은 무엇인가?

b. 개인화 서비스의 두 가지 측면

 - My 페이지 중심의 개인화 인터페이스

: 개인화를 설정하거나 소비하기 위해 반드시 My 페이지에 접속해야 한다.

   - 개인화와 기본 서비스의 통합

    : 컨텐츠, 커뮤니티, 커머스의 자연스러운 맥락에서 개인화 서비스로 유도한다.

c. 마음에 들었을 때 설정하게 한다.

d. 많이 보고, 자주 쓰게 한다.

 - 꼭 보게 만든다.

 - 메뉴화 한다

 - 개인화 설정 단계에서 개인화 소비 단계로 연계한다.

 (3) 개인화 서비스의 확장

a. 개인화 서비스를 공개한다.

b. 개인화 컨텐츠를 관리 할 수 있게 한다.

 - 카테고라이징과 레이블링

 - 코멘트

 - 디자인

 - 통계 관리

 - 커뮤니티

 - 홍보

c. 개인화된 내용의 다양한 활용

 - 포맷을 바꾸어 활용하고, 배포한다.

 - 구매할 수 있게 한다.

 - 다른 사람의 것을 복사한다.

 - 사이트 외적인 요소를 개인화한다.

6. 유저를 배려하는 또다른 관점 : 구조와 형식

 (1) 홈페이지

 (2) 메뉴

  a. 사이트 구조 설계

   - 탑다운(Top-down) 방식 : 위에서부터 필요한 내용을 결정해 하부 구조를 만든다.

     (사이트를 멀리서 바라보고, 보다 거시적인 관점에서 전략적인 목표를 성취하도록 방향을 제시한다.)

   - 바텀업(Bottom-up) 방식 : 개별 컨텐츠 요소들의 관계를 파악하고 분류하여 상부 구조를 만들어간다.

     (가지고 있는 컨텐츠를 면밀히 분석하여 가장 효과적으로 활용할 수 있는 구조를 찾는다)

  b. 메뉴 레이블링

   - 레이블링 평가항목 : 대표성, 연관성, 차별화, 표현의 일관성, 볼륨의 일관성(컨텐츠의 양)

   - 타겟 유저가 사용하는 언어를 사용한다.

   - 레이블링은 브랜드를 표현한다.

   - 관습을 따르자

  c. 클릭 대상으로서의 메뉴

   - 메뉴는 눈에 잘 띄어야 한다.

   - 쉽게 클릭할 수 있어야 한다.

   - 가독성이 높아야 한다.

   - 2 depth 메뉴의 유저빌리티 문제점

   - 온마우스 메뉴의 활용

  d. 메뉴의 분산

(3) 네비게이션

(4) 인터페이스

================================================================================================