출시기념으로 한정기간동안 무료로 판매합니다
|
[어플리케이션 소개] |
|
[어플리케이션 소개] |
- (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
Image Size 조정
1. header에 정의
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에서 이미지 폴더로 불러 오는 방법 정리 입니다.
[이미지 폴더 추가 하기]
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)을 섞어서 만든 것을 알립니다. 두분께 진심으로 감사에 말씀드립니다.
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)
(2) Remoting Service 설정 하기
- remoting-config.xml 파일을 열어 다음의 내용을 하단에 추가 한다.
ajax로 이것 저것 만들 던 중.. 이상하게.. IE 6에서는 부드럽게 작동 하는데...
IE7 에서만..ㅜ.ㅜ 작동이 안되는 기능이 있다.
컴퓨터 사양에 따라 다르지만.. 내 컴퓨터는.. 이상하게 안되었다.
- OS : Windows XP Professional June
- Browser : IE 7
간단한 환경이긴 했지만.. 참으로 난감한 상황이였다.
이것 저곳을 찾다가 보니... IE 7에서는 XMLHttpRequest를 원래 지원 하고 있다는 글을 발견!! ^^
(구글에서 XMLHttpRequest 검색 해보면.. 엄청 나옴...ㅡㅡ;ㅋ )
그래서.. 처음에는 이부분을 지우고 하면 되는 것이었습니다.
그러나.. 생각해보니.ㅡ.ㅡ; 내가 개발한 프로그램이 모질라나.. 사파리에서 안돌아 갈것을 생각하니 버리면 안되겠다는 생각이 들어서.. 저는 다음과 같이 소스를 수정해서 쓰고 있습니다.
이렇게 쓰고 나서.. 밑에 값을 처리하는 부분에는
항상.. Status 및 readyState 값을 설정 해줘야.. "페이지에 오류가 있습니다"
이 놈이 안떠요..^^
도움이 되었으면 합니다! 혹시.. 잘못된거나.. 수정 부분있으시면 과감히!! 트랙백 달아 주세요!
윈도우에서 웹페이지를 작업 후 확인 할 때, 한글 정상!
소스보기를 해도...
<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 를 다시 시작해 줘야 하는것은 알죠? ^^
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 [옵션] //호스트명/공유디렉터리 /마운트포인트
< 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; <- 바로 적용 하기
1. System Golbal Area
: SGA는 Oracle Server가 Startup 될 때, Computer Memory 영역에 할당되고, Dabase가 Shutdown 될 때
Memory에서 제거 된다.
이미지출처 : 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 +에서 하세요~
==============================================================
<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
< 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
휴리스틱(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가맹국 중 아프리카 국가의 수를 맞히는 문제가 있고, 그전에 룰렛을 통한 임의의 숫자를 상대에게 알려주면, 국가의 수를 룰렛에 의해 나온 수에 유사하게 대답을 한다.
룰렛의 수가 기준점이 되는 것으로 실제 아프리카 국가의 수와 룰렛의 수와는 전혀 관계가 없다.
-행동경제학 (도모노 노리오 저) 참조
[출처] 휴리스틱(heuristic)|작성자 기획공학
웹 기획을 하기위한 필/수/도/서 (?) 라는..
"정유진의 웹 기획론 : 비즈니스의 성패를 결정하는 3C + 1P"
를 읽었다.
그 동안 생각했던 모든 것들 + a로 많은 것을 얻을 수 있었으며..
나에게는 더 많은 꼼꼼함과 기초정보의 중요성을 더욱 느끼게 해주는 계기가 된 책이다.
이 책은 간단하게 큰 타이틀만 보더라도.. 안에 내용을 알 수 있게 쓰여졌다.
혹시 웹 기획자를 하고 계시거나.. 하고 싶으시다면.. 꼭 읽어 보고, 느껴 보았으면 좋겠다.
- 잘 하는 앞 사람이 하는 것을 그대로 따라하는 기획
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) 인터페이스
================================================================================================