2011년 12월 26일 월요일

windows7 64bit에 부트캠프3.0 설치(2008년 맥북)

64비트 windows7에 부트캠프 설치가 불가능 했다.
문제는 부트캠프3.0 64비트용도 제대로 인스톨하지 못했다. 



1. 윈도우 cmd 실행
2. "net user administrator /active:yes" 명령어 입력 후 엔터
3. 부트캠프 3.0의 bootcamp/drivers/apple/ 디렉토리로 이동
4. bootcampx64 실행 / 설치
5. 재부팅 후 cmd에서 "net user administrator /active:no" 명령어 입력.

2011년 12월 20일 화요일

noSQL Benchmarking

참고 URL. http://www.cubrid.org/blog/dev-platform/nosql-benchmarking/



  1. All three products showed better throughput in INSERT.
  2. Cassandra showed outstanding throughput in INSERT-only with 20,000 ops.
  3. HBase also presented relatively good performance in INSERT-only.
  4. The products did not show large differences with READ-only than INSERT-only.
  5. HBase’s performance was better than Cassandra in READ-only.
  6. Cassandra’s performance in READ-and-UPDATE was better than the other two products. Cassandra’s READ-and-UPDATE might have been higher than READ-only due to Cassandra’s excellent insert throughout.
  7. MongoDB’s throughout in all three conditions was the lowest of the three products. MongoDB, which uses the Memory Mapped File (mmap), probably showed poor performance because the large data size exceeded the physical memory size.
Let’s take a look at why each product showed such difference in performance.

2011년 12월 12일 월요일

Mac OSX 환경설정 터미널 명령




> 파인더의 상태바에 경로를 출력
defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES


> 파인더의 숨겨진 파일보기
defaults write com.apple.finder AppleShowAllFiles -bool YES

2011년 12월 11일 일요일

ssh2_connect(쉘,ftp를 사용하지 않고 파일 전송)


//타겟 ip
$con = ssh2_connect('122.122.122.122', 22);
ssh2_auth_password($con, 'test', '12345');
ssh2_scp_send($con, '/경로/옮길파일명', '/복사될경로/복사될파일명', 0644);  //644는 퍼미션

mac에서 ssh-rsa key값 삭제

개발서버의 OS를 새로 설치한 후 ssh-rsa 쉘 접속이 되질 않음.
예전 서버의 RSA 키값이 OS X의 ssh디렉토리에 저장되어 있어 
업그레이드 된 서버(RSA 키값의 존재하지 않음.)와 fingerprint 대조 실패가 원인이었다.

OS X의 ssh디렉토리 내에 known_hosts 파일을 열어 접속실패한 서버의 IP에 해당하는 값들을 모두 지운 후
쉘에 접속하니 RSA 키값 생성 요구가 이뤄지고 정상 접속 성공.

> cd ~/.ssh
> vi known_hosts 


chmod 2진수 체계


chmod by the Numbers

Up to this point, we’ve been setting the mode with letters. It turns out that you can also set the mode numerically. Here’s how it works:
  1. Write the permissions you want the file to have. To make your life easier, write the permissions grouped into sets of three letters. For example, let’s say you want file info.sh to have these permissions
    - rwx r-x r-- info.sh
    
  2. Under each letter, write a digit 1; under each dash write a digit zero. Ignore the dash at the very beginning that tells you whether it’s a file or directory. This gives you three binary numbers.
    - rwx r-x r-- info.sh
      111 101 100
    
  3. Now convert each set of three digits to a single digit using this table:
    BinaryBecomes
    0000
    0011
    0102
    0113
    BinaryBecomes
    1004
    1015
    1106
    1117
    From our example, the 111 101 100 translates to the number 754.
  4. Now use that number in a chmod command to set your desired permissions on the file:
    chmod 754 info.sh

yum의 rpmforge 저장소 사용하기

yum의 기본 저장소 미러링으로 못찾는 패키지가 발생하였다.
기본제공 rpm이외의 추가적인 rpm 패키지를 사용하고자 한다면 rpmforge를 설치한다.



rpmforge 저장소를 사용하기 위한 rpm 설치


wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

wget 옵션 및 사용예

참조. http://medialab.egloos.com/1288476
         http://kldp.org/node/74603

- r : 지정된 디렉토리의 하위 디렉토리의 내용을 몽땅 다운로드한다.

사용예 : wget -r ftp://ftp.ncbi.nlm.nih.gov/blast/db/ 
설명 : 이렇게 하면 ftp://ftp.ncbi.nlm.nih.gov/blast/db/ 의 디렉토리 구조를 유지한 채로 모든 파일을 불러온다.

- nd : 디렉토리를 만들지 않는다. 계층적으로 나열된 웹 사이트의 디렉토리의 내용을 한 디렉토리로 불러올 때 편리하다. -r 옵션과 같이 사용하면 매우 유용하다.

사용예 : wget -nd -r ftp://ftp.ncbi.nlm.nih.gov/blast/db/ 
설명 : 이렇게 하면 ftp://ftp.ncbi.nlm.nih.gov/blast/db/  내의 내용물을 현재 폴더에 몽땅 다운로드받는다.

-A, --accept=: 지정된 확장자의 파일만을 받아온다.

사용예 : wget -nd -r --accept=fna ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria/
설명 : 이렇게 하면 ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria 에서 확장자가 .fna 인 파일만을 받아서 현재 디렉토리에 저장한다. (물론 -nd 옵션을 빼면 폴더 구조가 그대로 유지된다)

-R, --reject=: 지정된 확장자의 파일만을 빼고 받아온다.

사용예 : wget -nd -r --accept=fna ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria/
설명 : 이렇게 하면 ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria 에서 확장자가 .fna 인 파일만 빼고 받아서 현재 디렉토리에 저장한다.

-l , --level= : -r 옵션, 즉 하위 디렉토리 받아오기를 사용하였을 때 다운로드받을 최대 단계를 지정할 때 사용한다.

사용예 : wget -nd -r --accept=fna --level=3 ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria/ 
설명 : ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria 에서 확장자가 .fna 인 파일만 빼고 받고 3단계까지 거슬러 올라서 다운로드를 수행한다.

-N : 현재 다운로드 받을 위치에 있는 파일이 현재 내 하드에 있는 파일보다 새로운 파일일때만 다운로드를 수행한다
-m : 미러 명령. 즉, 특정한 웹사이트의 내용을 그대로 폴더 구조채 긁어오되, 새로 업데이트한 내용만을 다운받고 싶을 때 사용한다.

ftp id, password 지정 : wget ftp://id:password@website

-  자동화 쉘 스크립트
#!/bin/bash
wget -nd -r ftp://id:password@website/$1/

- url의 디렉토리 구조까지 모두 다운로드 가능
wget --recursive http://download_domain_directory/folder -R.h




wget --help


Startup:
  -V,  --version           display the version of Wget and exit.
  -h,  --help              print this help.
  -b,  --background        go to background after startup.
  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.

Logging and input file:
  -o,  --output-file=FILE    log messages to FILE.
  -a,  --append-output=FILE  append messages to FILE.
  -d,  --debug               print lots of debugging information.
  -q,  --quiet               quiet (no output).
  -v,  --verbose             be verbose (this is the default).
  -nv, --no-verbose          turn off verboseness, without being quiet.
  -i,  --input-file=FILE     download URLs found in FILE.
  -F,  --force-html          treat input file as HTML.
  -B,  --base=URL            prepends URL to relative links in -F -i file.

Download:
  -t,  --tries=NUMBER            set number of retries to NUMBER (0 unlimits).
       --retry-connrefused       retry even if connection is refused.
  -O,  --output-document=FILE    write documents to FILE.
  -nc, --no-clobber              skip downloads that would download to
                                 existing files.
  -c,  --continue                resume getting a partially-downloaded file.
       --progress=TYPE           select progress gauge type.
  -N,  --timestamping            don't re-retrieve files unless newer than
                                 local.
  -S,  --server-response         print server response.
       --spider                  don't download anything.
  -T,  --timeout=SECONDS         set all timeout values to SECONDS.
       --dns-timeout=SECS        set the DNS lookup timeout to SECS.
       --connect-timeout=SECS    set the connect timeout to SECS.
       --read-timeout=SECS       set the read timeout to SECS.
  -w,  --wait=SECONDS            wait SECONDS between retrievals.
       --waitretry=SECONDS       wait 1..SECONDS between retries of a retrieval.
       --random-wait             wait from 0...2*WAIT secs between retrievals.
       --no-proxy                explicitly turn off proxy.
  -Q,  --quota=NUMBER            set retrieval quota to NUMBER.
       --bind-address=ADDRESS    bind to ADDRESS (hostname or IP) on local host.
       --limit-rate=RATE         limit download rate to RATE.
       --no-dns-cache            disable caching DNS lookups.
       --restrict-file-names=OS  restrict chars in file names to ones OS allows.
       --ignore-case             ignore case when matching files/directories.
  -4,  --inet4-only              connect only to IPv4 addresses.
  -6,  --inet6-only              connect only to IPv6 addresses.
       --prefer-family=FAMILY    connect first to addresses of specified family,
                                 one of IPv6, IPv4, or none.
       --user=USER               set both ftp and http user to USER.
       --password=PASS           set both ftp and http password to PASS.

Directories:
  -nd, --no-directories           don't create directories.
  -x,  --force-directories        force creation of directories.
  -nH, --no-host-directories      don't create host directories.
       --protocol-directories     use protocol name in directories.
  -P,  --directory-prefix=PREFIX  save files to PREFIX/...
       --cut-dirs=NUMBER          ignore NUMBER remote directory components.

HTTP options:
       --http-user=USER        set http user to USER.
       --http-password=PASS    set http password to PASS.
       --no-cache              disallow server-cached data.
  -E,  --html-extension        save HTML documents with `.html' extension.
       --ignore-length         ignore `Content-Length' header field.
       --header=STRING         insert STRING among the headers.
       --max-redirect          maximum redirections allowed per page.
       --proxy-user=USER       set USER as proxy username.
       --proxy-password=PASS   set PASS as proxy password.
       --referer=URL           include `Referer: URL' header in HTTP request.
       --save-headers          save the HTTP headers to file.
  -U,  --user-agent=AGENT      identify as AGENT instead of Wget/VERSION.
       --no-http-keep-alive    disable HTTP keep-alive (persistent connections).
       --no-cookies            don't use cookies.
       --load-cookies FILE     load cookies from FILE before session.
       --save-cookies FILE     save cookies to FILE after session.
       --keep-session-cookies  load and save session (non-permanent) cookies.
       --post-data=STRING      use the POST method; send STRING as the data.
       --post-file=FILE        use the POST method; send contents of FILE.
       --content-disposition   honor the Content-Disposition header when
                               choosing local file names (EXPERIMENTAL).
       --auth-no-challenge     Send Basic HTTP authentication information
                               without first waiting for the server's
                               challenge.

HTTPS (SSL/TLS) options:
       --secure-protocol=PR     choose secure protocol, one of auto, SSLv2,
                                SSLv3, and TLSv1.
       --no-check-certificate   don't validate the server's certificate.
       --certificate=FILE       client certificate file.
       --certificate-type=TYPE  client certificate type, PEM or DER.
       --private-key=FILE       private key file.
       --private-key-type=TYPE  private key type, PEM or DER.
       --ca-certificate=FILE    file with the bundle of CA's.
       --ca-directory=DIR       directory where hash list of CA's is stored.
       --random-file=FILE       file with random data for seeding the SSL PRNG.
       --egd-file=FILE          file naming the EGD socket with random data.

FTP options:
       --ftp-user=USER         set ftp user to USER.
       --ftp-password=PASS     set ftp password to PASS.
       --no-remove-listing     don't remove `.listing' files.
       --no-glob               turn off FTP file name globbing.
       --no-passive-ftp        disable the "passive" transfer mode.
       --retr-symlinks         when recursing, get linked-to files (not dir).
       --preserve-permissions  preserve remote file permissions.

Recursive download:
  -r,  --recursive          specify recursive download.
  -l,  --level=NUMBER       maximum recursion depth (inf or 0 for infinite).
       --delete-after       delete files locally after downloading them.
  -k,  --convert-links      make links in downloaded HTML point to local files.
  -K,  --backup-converted   before converting file X, back up as X.orig.
  -m,  --mirror             shortcut for -N -r -l inf --no-remove-listing.
  -p,  --page-requisites    get all images, etc. needed to display HTML page.
       --strict-comments    turn on strict (SGML) handling of HTML comments.

Recursive accept/reject:
  -A,  --accept=LIST               comma-separated list of accepted extensions.
  -R,  --reject=LIST               comma-separated list of rejected extensions.
  -D,  --domains=LIST              comma-separated list of accepted domains.
       --exclude-domains=LIST      comma-separated list of rejected domains.
       --follow-ftp                follow FTP links from HTML documents.
       --follow-tags=LIST          comma-separated list of followed HTML tags.
       --ignore-tags=LIST          comma-separated list of ignored HTML tags.
  -H,  --span-hosts                go to foreign hosts when recursive.
  -L,  --relative                  follow relative links only.
  -I,  --include-directories=LIST  list of allowed directories.
  -X,  --exclude-directories=LIST  list of excluded directories.
  -np, --no-parent                 don't ascend to the parent directory.

libmcrypt오류 configure: error: mcrypt.h not found. Please reinstall libmcrypt.


php 컴파일시 오류.

wget ftp://ftp.port80.se/gentoo/distfiles/libmcrypt-2.5.8.tar.gz

# tar -xvzf libmcrypt-2.5.0.tar.gz 
# cd libmcrypt-2.5.0 
# ./configure 
# make 
# make install 

# vi /etc/ld.so.conf     ---->/usr/local/lib 추가 

# ldconfig 

php.ini의 short_open_tag


php-5.3.3 설치하고 아파치 실행하면 phpinfo가 실행되질 않았다.
php 5.x 버전이후로 default 값인가 보다??? 당황...

php.ini 의 short_open_tag = Off 였다. 


short_open_tag = On : <? 사용가능
short_open_tag = Off : <? 사용불가능. <?php 로 표현해야 함.


php.net의 short_open_tag 설명.
xml사용시 off. 소스 노출에 대한 보안권고 인듯....

Tells PHP whether the short form (<? ?>) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"?>'; ?>. Also, if disabled, you must use the long form of the PHP open tag (<?php ?>).

apache document root를 사용자 홈 디렉토리로 변경.

httpd.conf에 document root를 사용자 홈 디렉토리로 변경하면 퍼미션 오류가 발생한다.
이때 사용자 계정 디렉토리에 실행권한을 부여함으로써 오류를 해결.

chmod 755 -R /home/사용자계정

apache 2.2.19 설치 + php 5.3.3 설치


# wget http://mirror.khlug.org/apache//httpd/httpd-2.2.19.tar.gz
# ./configure --prefix=/usr/local/httpd --enable-module=so --enable-rewrite --enable-module=headers --enable-ssl
# make && make install
# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

httpd데몬을 chkconfig에 올리기 위하여 httpd를 수정. 상단 두번째 줄에 입력. ( 부팅시 아파치 자동실행 )

# vi /etc/init.d/httpd
# description: init file for Apache Server daemon
# config: /usr/local/httpd/bin/apachectl
# pidfile: /usr/local/httpd/logs/httpd.pid
chkconfig --add httpd
chkconfig --level 2345 httpd on

ntsysv 로 확인.

httpd.conf에서 사용자, 그룹을 변경
# vi /usr/local/httpd/conf/httpd.conf
User daemon -> nobody
Group daemon -> nobody
mod_rewrite사용시 httpd.conf를 열어 활성화되었는지 체크.

<Directory>
  Options FollowSymLinks
  AllowOverride None
</Directory>
으로 설정되어 있다면 아래와 같이 설정을 변경.
<Directory>
  Options FollowSymLinks
  AllowOverride FileInfo</Directory>


- 기존 apache 사용하는 중에 --enable-rewrite 을 추가 하는 경우

[root@localhost httpd-2.2.10]# /usr/local/apache2/bin/apxs -aic modules/mappers/mod_rewrite.c

 컴파일이 완료되면 apache2/conf/httpd.conf 화일 내용에 아래와 같이 라인이 추가된 것을 확인 할수 있습니다.

# LoadModule foo_module modules/mod_foo.so
LoadModule rewrite_module     modules/mod_rewrite.so

여기까지는 모듈 설치가 완료된 것으로 이후에는 rewrite_module 에서 지원되는 모듈 지시자를 이용하여 도메인 설정을 합니다.
 
# chkconfig --add httpd
# /etc/init.d/httpd start
# /etc/init.d/iptables restart



php 5.3.3설치
# wget http://kr.php.net/get/php-5.3.3.tar.gz/from/kr2.php.net/mirror
make distclean  // 이전 컴파일 정보 지움.

./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/httpd/conf \
--with-apxs2=/usr/local/httpd/bin/apxs \
--enable-discard-path \
--enable-force-cgi-redirect \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--disable-debug \
--enable-sigchild \
--enable-inline-optimization \
--enable-safe-mode \
--enable-magic-quotes \
--enable-sysvsem \
--enable-sysvshm \
--enable-bcmath \
--enable-ftp \
--enable-sockets \
--enable-exif \
--enable-soap \
--with-zlib-dir =/usr\
--with-zlib \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-freetype-dir=/usr \
--with-iconv \
--enable-mbstring \
--with-mcrypt \
--with-curl \
--with-openssl \

 

# make && make install

# cp php.ini-production /usr/local/httpd/conf/php.ini

# ls -l /usr/local/httpd/modules/libphp5.so // httpd의 모듈에 php5 모듈 적용여부 확인

# vi /usr/local/httpd/conf/httpd.conf  // 환경파일에 추가

 AddType application/x-httpd-php .php .html .htm
 AddType application/x-httpd-source .phps

centOS5.6에 mysql 5.5.13 설치

mysql 5.5.10 이상의 버전에서부터는 ./configure가 아닌 cmake로 빌드.
이를 위해 cmake를 바이너리 소스로 설치.

wget
 http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

설치시 C compiler 오류 발생시 
# yum install gcc-c++


# tar xvfz cmake-2.8.4.tar.gz
# cd cmake-2.8.4
# ./bootstrap
# make && make install


[출처] mysql 5.5.10 소스 설치 하기(CentOS 5.5)|작성자 삽질맨

mysql 그룹, 계정 생성 

# groupadd mysql
# useradd -g mysql mysq

mysql 컴파일 전 요구되는 모듈들을 설치한다.

# wget ftp://ftp.pbone.net/mirror/dev.mysql.com/pub/Downloads/MySQL-5.5/MySQL-devel-5.5.13-1.rhel5.i386.rpm 

# rpm -Uvh --force --nodeps MySQL-devel-5.5.13-1.rhel5.i386.rpm


# yum -y install zlib curl gcc g++ cpp gcc-c++ openssl openssl-devel ncurses-devel libtermcap-devel libc-client-devel bison

 

tar xvfz mysql-5.5.13.tar.gz
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/usr/local/mysql/data -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_TCP_PORT=3306
# make && make install
 
# chown mysql:mysql /usr/local/mysql

# chown -R mysql:mysql /usr/local/mysql/data
# cd /usr/local/mysql
# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
# cp support-files/my-medium.cnf /etc/my.cnf
# cp support_files/mysql.server /etc/init.d/mysqld
# vi /etc/init.d/mysqld
# datadir=/usr/local/mysql/data

# service mysqld start 
# ps -ef | grep mysqld

서버 기동시 자동실행을 위해 chkconfig에 올려준다.

# chkconfig --add mysqld
# chkconfig --level 35 mysqld on
# chkconfig --list | grep mysqld

mysql 서버에 접속.
# /usr/local/mysql/bin/mysqladmin -uroot password 
# /usr/local/mysql/bin/mysql -uroot -p
cd /usr/local/mysql

mysql의 lib를 /usr/lib에 심볼릭 링크

# ln -s lib lib 

사용자 등록 및 권한 설정

# mysql -uroot -p
mysql> use mysql;
mysql> describe user;

// 로컬호스트 사용자 등록
mysql> insert into user (Host,User,Password) values('localhost','userid',password('userpasswd'));

// 원격접속 사용자 등록 [ 컬럼 개수(desc user)만큼 'N' ]
mysql> insert into user values('Remote_IP', 'userid',password('userpasswd'),'N','N','N','N','N','N','N','N','N','N','N',...);

// 사용자 등록 시 'Y' 이면 모든 db에 모든 권한을 다 주는 것임[ 컬럼 개수(desc db)만큼 'Y' ]
mysql> insert into db values('localhost', 'dbname', 'userid','Y','Y','Y','Y','Y',...);

//3306포트 외부접속 허용
mysql> grant all privileges on *.* to '사용자아이디'@'%' identified by '비밀번호';
 

mysql> create database dbname;
mysql> flush privileges;
# /etc/init.d/mysql restart