2010. 12. 17.

[UX] 사용자 경험 스케치


그동안 웹에서의 UX 책들만 읽어왔는데, 이 책은 제품자체에 대한 UX뿐 아니라 보다 넓은 범위에서의 UX를 포함을 하고 있다. 디자이너의 입장에서 바라본 프로세스 부분 중에서 기획과 디자인, 개발의 진행도를 그림으로 보여주며 이해시키는 부분이 인상깊다. 역시 많은 그림을 통한 설명이 이해를 도왔고 읽는데 지루하지 않다. 더구나 스케치와 초기 프로토타입을 제작하는 디자인 방법론은 가장 흥미있는 부분이었다. 개발자로서 읽어도 많은 깨달음을 얻을 수 있는 책이라고 생각한다.

[cacti] ERROR: Cannot connect to MySQL server on 'localhost'.

problem
log/cacti.log 에 다음과 같은 로그가 남았다면...
12/17/2010 07:00:10 PM - CMDPHP: Poller[0] ERROR: Cannot connect to MySQL server on 'localhost'. Please make sure you have specified a valid MySQL database name in 'include/config.php'.

solution
include/config.php 파일을 보면 $database_hostname = "localhost"; 라고 되어있을텐데
$database_hostname = "127.0.0.1"; 로 변경하면 잘 작동한다.


[cacti] how to install cacti on CentOS 5.X 64bit

Required software(s)
 - MySQL server : Store cacti data.
 - NET-SNMP server : SNMP(Simple Network Management Protocol) is a protocol used for network management.
 - PHP with net-snmp module : Access SNMP data using PHP.
  - RRDTOOL(round robin database tool)
 - Apache / lighttpd / nginx webserver : Web server to display graphs created with PHP and RRDTOOL.

Install the software
# yum install mysql-server mysql php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-snmp php-pear-Net-SMTP php-mysql httpd

Configure MySQL server
# mysql -u root -p
Enter password: **********

mysql> create database cacti;
mysql> use mysql;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'password';
mysql> FLUSH privileges;
mysql> quit

Install snmpd
# yum install net-snmp-utils php-snmp net-snmp-libs
# vi /etc/snmp/snmpd.conf

------------> append <----------------
.
.

com2sec local   localhost       public
group   MyRWGroup       v1      local
group   MyRWGroup       v2c     local
group   MyRWGroup       usm     local
view    all     included        .1      80
access  MyRWGroup       ""      any     noauth  exact   all     all     none
syslocation     Unknown (edit /etc/snmp/snmpd.conf)
syscontact      Root    (configure /etc/snmp/snmp.local.conf)
pass .1.3.6.1.4.1.4413.4.1      /usr/bin/ucd5820stat
------------------------------------

# /etc/init.d/snmpd start
# chkconfig snmpd on
# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
(output)
IP-MIB::ipAdEntIfIndex.your.ip.address = INTEGER: 2
IP_MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1

Install cacti
download cacti-0.8.6i.tar.gz in /usr/local/src
# tar xzfv cacti-0.8.6i.tar.gz
# cp -Rf cacti-0.8.6i /usr/local/cacti/
# ln -s /usr/local/cacti/ /usr/local/apache/htdocs/cacti

# vi /usr/local/cacti/include/config.php
--------------->modify<------------------
#database_type = "mysql";
#database_default = "cacti";
$database_hostname = "127.0.0.1";
$database_username = "cacti";
$database_password = "password";
$database_port = "3306";
------------------------------------------

# mysql -u root -p cacti < /usr/local/cacti/cacti.sql

Configure crond

# crontab -e
-------------->append<----------------
*/5 * * * * php /usr/local/cacti/poller.php > /dev/null 2>&1
----------------------------------------
# service crond restart

Install cacti web console

go to http://your.ip.address/cacti/
click 'Next'
choose 'New Install' and click 'Next'
if all of Path is [FOUND], click 'Finish'

if you show "[NOT FOUND] PHP Binary Path", install php-cli
# yum install php-cli

Username: admin
Password: admin


reference site
cacti plug-in
install cacti
install cacti
more specific information about cacti

[rrdtool] how to install rrdtool on CentOS 5.X 64bit

1. add Dag RPM Repository


# vi /etc/yum.repos.d/Dag.repo
-----------------------------------
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=0
enabled=1
protetc=0
-----------------------------------

2. install rrdtool

# yum install rrdtool

2010. 12. 1.

[CentOS] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Mysql을 설치하고 데몬을 실행하려고 하는데 다음과 같은 에러가 뜬다면 이렇게 해보세요~
# /usr/local/mysql/bin/mysqladmin --version

ERROR 2002: Can't connect to local MySQL server through
socket '/tmp/mysql.sock' (2)  

# chown -R root /usr/local/mysql
# chown -R mysql /usr/local/mysql/var
# chgrp -R mysql /usr/local/mysql/

참고사항
# /usr/local/mysql/bin/mysqld_safe --user=mysql&
...
... mysql ended   <- 데몬 실행이 안된겁니다.
...

[CentOS] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

Mysql을 설치하고 데몬을 실행하려고 하는데 다음과 같은 에러가 뜬다면 이렇게 해보세요~


# /usr/local/mysql/bin/mysqladmin --version


ERROR 2002: Can't connect to local MySQL server through

socket '/tmp/mysql.sock' (2)  


# chown -R root /usr/local/mysql
# chown -R mysql /usr/local/mysql/var
# chgrp -R /usr/local/mysql/


# /usr/local/mysql/bin/mysqld_safe --user=mysql&
 
...
... mysql ended   <- 데몬 실행이 안된겁니다.
...

2010. 11. 30.

linux mount

# mount -rw -t ext3 /dev/sda /home

-rw : 해당 드라이브에 read, write 가능하다.
-t ext3 : 해당 드라이브의 파일 시스템이 ext3이다.
/dev/sda/ : 마운트할 드라이브 공간
/home : 실제로 할당할 디렉토리

# mount -v

/dev/sda on /home type ext3 (rw)

라고 나오면 정상임

2010. 11. 21.

how to check memory usage of memcached

1. 메모리 사용량 체크

# ps -u root -o rss,command | grep 'memcached -d'  | awk '{print $0}{sum+=$1} END {print "\nMemory usage for memcached:", sum/1024, "MB\n"}'

2. stats 확인

# nc localhost 11211
stats

STAT cmd_get 1169958
STAT cmd_set 260621
STAT get_hits 823504
STAT get_missed 346454

※ hitrate : get_hits / cmd_get
 


2010. 10. 14.

[CentOS]call to undefined function mysql_connect

php 에서 mysqli extension을 잘 쓰고 있다가 mysql을 쓸 일이 생겨서 작업을 하다가

call to undefined function mysql_connect

이런 에러를 발견했다.

php와 mysql 사이의 연동이 안된거 같아서 검색해보니

# yum install php-mysql

이거 한방에 해결했다.

2010. 10. 13.

[PHP] how to install memcached on Windows XP

1. memcahced 를 Download 한다.


2. memcached 를  install 한다.

c:\memcached 에 압축을 풀고 command line(cmd)으로 간다.

c:\> cd c:\memcached
c:\> memcached.exe -d install
c:\> memcached.exe -d start
c:\> netstat -a
.
.
TCP     junp:11211     junp:0     LISTENING
.
.

3. php extension을 Download 한다. pecl-5.2.6-Win32.zip
압축풀면 php_memcache.dll 이 있으므로 extension_dir 에 복사를 하고
php.ini에 extension=php_memcache.dll 을 추가한다.


2010. 10. 12.

[PHP] 정규식으로 한글 영어 숫자 추출하기

$pattern = '/([\xEA-\xED][\x80-\xBF]{2}|[a-zA-Z0-9])+/';
$str = 'abc!@하나둘셋#123';
echo $str;
preg_match_all($pattern, $str, $match);
$str = implode('', $match[0]);
echo $str;
==================
abc!@하나둘셋#123
abc하나둘셋123

한글과 영어 숫자를 제외한 나머지문자는 무시하게 된다.




2010. 10. 11.

[CentOS] how to install mongodb in 64bit centos

1. 몽고디비 repository를 추가해준다.

# vi /etc/yum.repos.d/10gen-mongodb.repo

[10gen]
name=10gen Repository
baseurl=http://downloads.mongodb.org/distros/centos/5.4/os/x86_64/
gpgcheck=0

2. 몽고디비를 설치 및 conf 파일의 내용 확인

# yum install mongo-stable mongo-stable-server

# vi /etc/mongod.conf
logpath=/var/log/mongo
port=27017
dbpath=/var/lib/mongo

3. 몽고디비 데몬을 시작한다.

# chown -R mongod:mongod /var/lib/mongo/
# /etc/init.d/mongod start
# chkconfig --levels 235 mongod on

4. 방화벽을 열어준다.

# vi /etc/sysconfig/iptables (다음 한줄을 추가)

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT


[CentOS] how to install memcached in 64bit centos

CentOS 64 bit에서 memcached 설치하기~

1. Memcached에 필요한 비동기 이벤트통지 소프트웨어 라이브러리를 설치한다.

# wget http://monkey.org/~provos/libevent-1.3e.tar.gz

# tar zxpfv libevent*
# cd libevent*
# ./configure
# make install


2. Memcached를 설치한다.

# wget http://www.danga.com/memcached/dist/memcached-1.4.0.tar.gz
# tar xzfv memcached-1.4.0.tar.gz
# cd memcached-1.4.0
# ./configure --with-libevent=/usr/lib64/
# make
# make install

3. Memcached를 실행한다. (CentOS 64비트에서 하면 다음과 같은 에러가 날 수 있다.)

# adduser memcached
# ./memcached -u memcached -d -m 48 -l 127.0.0.1 -p 11211
./memcached: error while loading shared libraries: libevent-1.3e.so.1: cannot open shared object file: No such file or directory
# ln -s /usr/local/lib/libevent-1.3.e.so.1 /lib64/
# ./memcached -u memcached -d -m 48 -l 127.0.0.1 -p 11211

4. memcached 를 실행하기 위한 스크립트를 생성하자.
   참고사이트를 보고 아래 파일을 만들었으므로 다운받아도 좋다.


다음과 같은 위치에 파일을 작성하자.

# vi /etc/memcached.conf
# chmod +x /etc/memcached.conf
# vi /etc/init.d/memcached
# chmod +x /etc/init.d/memcached
# vi /usr/local/bin/start-memcached
# chmod +x /usr/local/bin/start-memcached
# /etc/init.d/memcached restart
# /sbin/chkconfig memcached on
# /sbin/chkconfig --list | grep memcached





[CentOS] php에서 memcache 설치하기

# wget http://pecl.php.net/get/memcache-2.2.4.tgz
# tar xzfv memcache-2.2.4.tgz
# cd memcache-2.2.4
# phpize
# ./configure --enable-memcache
# make
# cp modules/*.* /usr/lib64/extensions/no-debug-non-zts-20060613/
# vi /usr/local/apache/conf/php.ini

extension=memcache.so

mongo 설치하는거때문에 신경 많이 쓰였는데 의외로 쉽게 설치가 되었군요.

[MySQL] lower_case_table_names 세팅하기

유닉스계열은 0, 윈도우 계열은 1, Mac OS 의 경우는 2(이건 확실치 않음)가 기본 값이라고 한다.

유닉스 계열에서 값을 변경하고 싶다면 다음과 같이 하면 된다.

# /etc/init.d/mysqld stop
# mysqld_safe --lower_case_table_names = 1 &


확인하기

mysql> show variables like '%lower%';

2010. 10. 8.

[CentOS] php version update 5.1 to 5.2

1. 현재 설치된 버전 확인
# rpm -qa |grep php
 php-common-5.1.6-15.el5.i386
 php-cli-5.1.6-15.el5.i386
 php-5.1.6-15.el5.i386
 php-pdo-5.1.6-15.el5.i386
 php-bcmath-5.1.6-15.el5.i386
 php-ldap-5.1.6-15.el5.i386
 php-devel-5.1.6-15.el5.i386
 php-gd-5.1.6-15.el5.i386
 php-xml-5.1.6-15.el5.i386
 php-mbstring-5.1.6-15.el5.i386
 php-mysql-5.1.6-15.el5.i386
 php-dba-5.1.6-15.el5.i386
2. update 하기 위해 파일 생성
# vi /etc/yum.repos.d/CentOS-Testing.repo
--------------------------------------------------------------------------
# CentOS-Testing:
# !!!! CAUTION !!!!
# This repository is a proving grounds for packages on their way to CentOSPlus and CentOS Extras.
# They may or may not replace core CentOS packages, and are not guaranteed to function properly.
# These packages build and install, but are waiting for feedback from testers as to
# functionality and stability. Packages in this repository will come and go during the
# development period, so it should not be left enabled or used on production systems without due
# consideration.
[c5-testing]
name=CentOS-5 Testing
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
includepkgs=php*
--------------------------------------------------------------------------
3. 업데이트 하기
 # rpm -qa |grep php
 # yum update
 # service httpd restart


[CentOS] mysqli 설치

CentOS 64bit, php-5.2.5에서 mysqli를 설치해봤다.
apm 설치할때 보니까 mysqli가 빠져있길래 추가로 설치를 해봤다.
예전에는 애좀 먹었는데 간만에 하니까 술술 잘되는구나

# cd /usr/local/src/apm/php-5.2.5/ext/mysqli
# phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
# make

# mkdir -p /usr/lib64/extension/no-debug-non-zts-20060613
# cp modules/*.* /usr/lib64/extension/no-debug-non-zts-20060613/
# vi /usr/local/apache/conf/php.ini

extension_dir = "/usr/lib64/extensions/no-debug-non-zts-20060613/"
.
.
.
extension=mysqli.so

# /etc/init.d/http restart


2010. 10. 3.

[MySQL]skip-name-resolve

MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여 접속시에 불필요한 부하가 발생하게 됩니다. skip-name-resolve를 설정하시고 접속시에 IP 기반으로 접속을 하게 되면 hostname lookup 과정을 생략하게 되어 좀 더 빠르게 접속을 하실 수 있습니다.

# vi /etc/my.cnf

[mysqld]
skip-external-locking
skip-host-cache
skip-locking
skip-name-resolve

이렇게 추가를 해주고 mysqld를 restart를 하면 된다.

[MySQL]Too Many Connection Error

show variables like '%timeout%';
show variables like '%connect%';
show variables like '%thread%';

show status like '%thread%';
show status like '%connect%';

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

show status like 'Threads_created';
show status like 'Connections';
Cache Miss Rate(%) =  Threads_created / Connections * 100

show status like 'Aborted_connects';
show status like 'Connections';
Connection Miss Rate(%) = Aborted_connects / Connections * 100

show status like 'Threads_connected';
show variables like 'max_connections';
Connection Usage(%) = Threads_connected / max_connections * 100

show status like 'Max_used_connections';

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

Connection Usage가 100%면 max_connections 수를 증가시켜야 한다.
Connection Miss Rate 가 1%이상이면 wait_timeout을 더 길게 설정해야한다.
Cache Miss Rate가 높다면 thread_cache_size를 더 높게 잡아야 한다.

Max_used_connections 에서는 그 동안 사용되었던 최대 커넥션 수를 보여준다.

나의 경우는 Cache Miss Rate가 100%에 가깝게 나왔다.
그건 thread_cache_size가 0이기 때문에 매번 쓰레드를 생성해서이다.
일반적으로 Peak-time의 threads_connected보다 약간 낮은 수치로 설정하는 것이 좋습니다.

SET GLOBAL thread_cache_size = 40;

이렇게 값을 세팅해주었고, Cache Miss Rate 가 줄어들길 기다려야겠다.


2010. 9. 20.

[CentOS] 아파치 2개 이상 설치한 경우 해결책

(98) address already in use make_sock could not bind to address 80

아파치를 중복 설치 했을 때 이런 에러가 나기도 한다.

이런 경우 원상복구를 하기 위해서 다음과 같은 조치를 해주자.

# cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

소스 디렉토리의 apachectl을 httpd로 파일명을 변경해서 복사하면 된다.

2010. 9. 19.

mysql 접속자 수 늘리기

netstat으로 살펴보니 mysql 의 time_wait 가 너무 많아 보였다.

그래서 1차적으로 mysql의 동접자 수를 늘려주기로 했다.

우선 현재 동접자 수를 확인해보자.

# mysqladmin -u root -p패스워드 variables | grep max_connection


1-1. /etc/my.cnf 를 통해 늘려주기

[mysqld]
set-variable=max_connections=200   ---> 다음 한 줄을 추가한다.

1-2. mysqld_safe 로 늘려주기

# mysqld stop
# mysqld_safe -O max_connection=200 &

위의 두가지 방법중 1가지로 동접자 수를 늘려보자.

netstat 사용법

Port는 접속 포트이고..
LocalAddress는 사용자의 IP주소이고..
Foreign Address는 상대 IP주소이고..
State는 현재 상태입니다.
State가 Lisen?이면 포트가 열려가 누군가가 접속하기를 기다리는 중입니다.
만약 님이 웹서핑을 하게 된다면 그 주소까지도 나오게 됩니다.
모든 정보가 누군가가 해킹을 하려고 접속시도를 하는건 아니지요.. ^^;
해킹을 막을려면 방화벽을 설치하는걸 권해 드립니다.
해킹 시도를 하는건 열려있는 특정포트로 접속을 해서 하게 되는데..
방화벽은 포트를 막아 버립니다.
(고급 해커는 방화벽도 뚫습니다.. ^^)
바이러스도 해킹을 위한 바이러스는 포트를 열게 됩니다.
이른바 백도어라고 하지요..

netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)


포트스캔 명령어로 확인 하는 방법

# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*


lsof 명령어로 확인 방법

# 모든 네트워크 소켓 확인
lsof -I

1. netstat : 현재 님 컴퓨터와 연결되었거나 연결될 목록을 프로토콜과 함께 보여주는 도스 명령어입니다.

2. netstat -a : 현재 님컴터와 연결되거나 연결될 목록을 프로토콜과 함께 모두 보여줍니다. -a 옵션이 없으면 연결된 목록만 보여주는데, -a 옵션을 주면 연결되었거나 연결을 기다리는 목록을 모두 보여줍니다.

3. netstat -n : 통상 연결 목록이 컴퓨터 이름이 나오는데, -n 옵션을 주면 컴퓨터이름대신 ip주소가 뜹니다.

4. netstats -an or -na : 둘다 같은 의미인데 님 컴퓨터와 연결되었던 혹은 연결을 기다리는 목록을 아이피주소로 바꾸어서 보여줍니다.

Command 모드에서 netstat를 사용하여 PC내의 악성 코드 여부를 확인할 수도 있다.

1. [시작버튼] > [실행]을 눌러서 cmd 라고 입력하여 Command 창을 띄운다.

<참고: CTRL+R 을 누르면 [실행]창이 바로 뜬다.>

<또 참고: Windows 98에서는 cmd 가 아니라 command 라고 해야 command 창이 나온다.>



2. netstat -an

이 명령어를 치면 아래 그림과 같은 메시지가 출력된다.




이 명령어를 치면 아래 그림과 같은 메시지가 출력된다.


앞에 보이는 IP주소(Local Address)는 로컬시스템(내 PC)의 IP주소이며 뒤의 IP주소(Foreign Address)는 나와 네트워크로 연결이 이루어진 시스템의 IP주소이다. (IP뒤의 ":숫자" 들은 포트 번호이다.)netstat 명령어는 현재 시스템과 네트워크로 연결이 이루어진 상태를 보여주는 명령어다.


자, 이제 분석 방법이다!(FPORT 블로그에서는 존댓말을 썼었는데 왜 갑자기 반말쓰냐고 욕하지는 마세요;)



먼저 위 메시지의 맨 끝 필드인 State 필드를 보자. ESTABLISHED는 연결되어있는 상태를 말하며 CLOSED는 이미 연결이 끊어졌음을 말한다. LISTENING은 현재 시스템에서 열려있는 포트를 말한다.

일단 LISTENING 이라고 되어있는 놈들은 본다. IP주소는 0.0.0.0으로 된 놈들이 많고 내 IP주소 몇개 안될것이다.

<참고: 0.0.0.0(네트워크 IP) - 이놈을 인식하지 못하면 인터넷을 못한다.>

<또 참고: 127.0.0.1(LocalHost IP) - 이놈은 자기를 스스로 가리킬때 사용하는 주소이다.>

Local Address 필드의 IP는 중요하지 않다. 어차피 거기는 내 컴퓨터의 정보만 나오니까. 중요한것은 LISTENING으로 되어있는, 다시말하면 "열려있는 포트"번호이다.


내 컴퓨터에 몇번 포트들이 열려있는지 살펴본 후에, 만일 그 포트로 접속한 놈이 있다면 90%는 뭔가 이상한 거라고 생각하면 된다.

예를 들어,

0.0.0.0:445 0.0.0.0:0 LISTENING

. . .

. . .

. . .

150.2.50.14:445 68.235.32.153:4461 ESTABLISHED



이렇게 보였다고 하자, 445 번 포트(0.0.0.0:445)가 현재 열려(LISTENING)있음을 알 수 있고,

아래에는 내 445번 포트로(150.2.50.14:445) 웬 68.235.32.153 이라는 놈이 접속(ESTABLISHED)했다는 것이 확 드러났다.



일반 개인 컴퓨터 이므로 누가 내 컴퓨터로 들어올일은 거의 없다! (P2P로 내 컴퓨터의 폴더가 공유되어 있다면 몰라도..)


아무튼 이런식으로 분석을 하면 되겠다.


그 외의 것들은 죄다 내가 상대방 컴퓨터로 접속한것을 나타내는 것이기 때문에 무시해도 된다. 물론, Reverse 해킹 방식이 있기는 하지만, 그걸 개인 컴퓨터에 적용할 정도로 무식한 크래커는 없을것이다.

netstat 명령어를 치시면 foreign address 라는 게 있죠.

그 곳에 아이피 : 숫자

일케 써있잖아요..

여기서 숫자는 포트라는것 입니다.

컴퓨터의 열려있는 창문이라고 생각하면 되죠.

트로이목마 프로그램이 침투하려면 그 프로그램이 침투할수 있는 고유의 창문 ,즉 포트가 열려있어야 합니다.

서버파일이란게 있는데 그 프로그램이 침투할수있는 포트를 여는 역할을 하죠.

여기서 아까 netstat 명령어 치면 나오는거..

아이피:숫자 있잖아요.

만약에

211.111.111.111 :12345
이렇게 됐으면 12345라는 포트에 211.111.111.111 이라는 아이피가 접속해있다는 겁니다.

12345라는 포트는 넷버스 1.70가 침투할수 있는 포트번호죠...


제가 여러 트로이목마 프로그램이 침투하는 포트번호들을 모아봤습니다.해커뉴스에서 펌

port 2 - Death
port 21 - Back Construction, Blade Runner, Doly Trojan, Fore, FTP trojan, Invisible FTP, Larva, MBT, Motiv, Net Administrator, Senna Spy FTP Server, WebEx, WinCrash
port 23 - Tiny Telnet Server, Truva Atl
port 25 - Aji, Antigen, Email Password Sender, Gip, Happy 99, I Love You, Kuang 2, Magic Horse, Moscow Email Trojan, Naebi, NewApt, ProMail trojan, Shtrilitz, Stealth, Tapiras, Terminator, WinPC, WinSpy
port 31 - Agent 31, Hackers Paradise, Masters Paradise
port 41 - DeepThroat
port 48 - DRAT
port 50 - DRAT
port 59 - DMSetup
port 79 - Firehotcker
port 80 - Back End, Executor, Hooker, RingZero
port 99 - Hidden Port
port 110 - ProMail trojan
port 113 - Invisible Identd Deamon, Kazimas
port 119 - Happy 99
port 121 - JammerKillah
port 123 - Net Controller
port 133 - Farnaz, port 146 - Infector
port 146 (UDP) - Infector
port 170 - A-trojan
port 421 - TCP Wrappers
port 456 - Hackers Paradise
port 531 - Rasmin
port 555 - Ini-Killer, NeTAdministrator, Phase Zero, Stealth Spy
port 606 - Secret Service
port 666 - Attack FTP, Back Construction, NokNok, Cain & Abel, Satanz Backdoor, ServeU, Shadow Phyre
port 667 - SniperNet
port 669 - DP Trojan
port 692 - GayOL
port 777 - Aim Spy
port 808 - WinHole
port 911 - Dark Shadow
port 999 - DeepThroat, WinSatan
port 1000 - Der Spacher 3
port 1001 - Der Spacher 3, Le Guardien, Silencer, WebEx
port 1010 - Doly Trojan
port 1011 - Doly Trojan
port 1012 - Doly Trojan
port 1015 - Doly Trojan
port 1016 - Doly Trojan
port 1020 - Vampire
port 1024 - NetSpy
port 1042 - Bla
port 1045 - Rasmin
port 1050 - MiniCommand
port 1080 - WinHole
port 1081 - WinHole
port 1082 - WinHole
port 1083 - WinHole
port 1090 - Xtreme
port 1095 - RAT
port 1097 - RAT
port 1098 - RAT
port 1099 - BFevolution, RAT
port 1170 - Psyber Stream Server, Streaming Audio trojan, Voice
port 1200 (UDP) - NoBackO
port 1201 (UDP) - NoBackO
port 1207 - SoftWAR
port 1212 - Kaos
port 1225 - Scarab
port 1234 - Ultors Trojan
port 1243 - BackDoor-G, SubSeven, SubSeven Apocalypse, Tiles
port 1245 - VooDoo Doll
port 1255 - Scarab
port 1256 - Project nEXT
port 1269 - Mavericks Matrix
port 1313 - NETrojan
port 1338 - Millenium Worm
port 1349 (UDP) - BO DLL
port 1492 - FTP99CMP
port 1509 - Psyber Streaming Server
port 1524 - Trinoo
port 1600 - Shivka-Burka
port 1777 - Scarab
port 1807 - SpySender
port 1966 - Fake FTP
port 1969 - OpC BO
port 1981 - Shockrave
port 1999 - BackDoor, TransScout
port 2000 - Der Spaeher 3, Insane Network, TransScout
port 2001 - Der Spaeher 3, TransScout, Trojan Cow
port 2002 - TransScout
port 2003 - TransScout
port 2004 - TransScout
port 2005 - TransScout
port 2023 - Ripper
port 2080 - WinHole
port 2115 - Bugs
port 2140 - Deep Throat, The Invasor
port 2155 - Illusion Mailer
port 2283 - HVL Rat5
port 2300 - Xplorer
port 2565 - Striker
port 2583 - WinCrash
port 2600 - Digital RootBeer
port 2716 - The Prayer
port 2773 - SubSeven
port 2801 - Phineas Phucker
port 3000 - Remote Shutdown
port 3024 - WinCrash
port 3128 - RingZero
port 3129 - Masters Paradise
port 3150 - Deep Throat, The Invasor
port 3456 - Teror Trojan
port 3459 - Eclipse 2000, Sanctuary
port 3700 - Portal of Doom
port 3791 - Eclypse
port 3801 (UDP) - Eclypse
port 4000 - Skydance
port 4092 - WinCrash
port 4242 - Virtual hacking Machine
port 4321 - BoBo
port 4444 - Prosiak, Swift remote
port 4567 - File Nail
port 4590 - ICQTrojan
port 5000 - Bubbel, Back Door Setup, Sockets de Troie
port 5001 - Back Door Setup, Sockets de Troie
port 5010 - Solo
port 5011 - One of the Last Trojans (OOTLT)
port 5031 - NetMetropolitan
port 5031 - NetMetropolitan
port 5321 - Firehotcker
port 5343 - wCrat
port 5400 - Blade Runner, Back Construction
port 5401 - Blade Runner, Back Construction
port 5402 - Blade Runner, Back Construction
port 5550 - Xtcp
port 5512 - Illusion Mailer
port 5555 - ServeMe
port 5556 - BO Facil
port 5557 - BO Facil
port 5569 - Robo-Hack
port 5637 - PC Crasher
port 5638 - PC Crasher
port 5742 - WinCrash
port 5882 (UDP) - Y3K RAT
port 5888 - Y3K RAT
port 6000 - The Thing
port 6006 - The Thing
port 6272 - Secret Service
port 6400 - The Thing
port 6667 - Schedule Agent
port 6669 - Host Control, Vampyre
port 6670 - DeepThroat, BackWeb Server, WinNuke eXtreame
port 6711 - SubSeven
port 6712 - Funny Trojan, SubSeven
port 6713 - SubSeven
port 6723 - Mstream
port 6771 - DeepThroat
port 6776 - 2000 Cracks, BackDoor-G, SubSeven
port 6838 (UDP) - Mstream
port 6912 - Shit Heep (not port 69123!)
port 6939 - Indoctrination
port 6969 - GateCrasher, Priority, IRC 3, NetController
port 6970 - GateCrasher
port 7000 - Remote Grab, Kazimas, SubSeven
port 7001 - Freak88
port 7215 - SubSeven
port 7300 - NetMonitor
port 7301 - NetMonitor
port 7306 - NetMonitor
port 7307 - NetMonitor
port 7308 - NetMonitor
port 7424 - Host Control
port 7424 (UDP) - Host Control
port 7789 - Back Door Setup, ICKiller
port 7983 - Mstream
port 8080 - RingZero
port 8787 - Back Orifice 2000
port 8897 - HackOffice
port 8988 - BacHack
port 8989 - Rcon
port 9000 - Netministrator
port 9325 (UDP) - Mstream
port 9400 - InCommand
port 9872 - Portal of Doom
port 9873 - Portal of Doom
port 9874 - Portal of Doom
port 9875 - Portal of Doom
port 9876 - Cyber Attacker, RUX
port 9878 - TransScout
port 9989 - iNi-Killer
port 9999 - The Prayer
port 10067 (UDP) - Portal of Doom
port 10085 - Syphillis
port 10086 - Syphillis
port 10101 - BrainSpy
port 10167 (UDP) - Portal of Doom
port 10528 - Host Control
port 10520 - Acid Shivers
port 10607 - Coma
port 10666 (UDP) - Ambush
port 11000 - Senna Spy
port 11050 - Host Control
port 11051 - Host Control
port 11223 - Progenic trojan, Secret Agent
port 12076 - Gjamer
port 12223 - Hack´99 KeyLogger
port 12345 - GabanBus, My Pics, NetBus, Pie Bill Gates, Whack Job, X-bill
port 12346 - GabanBus, NetBus, X-bill
port 12349 - BioNet
port 12361 - Whack-a-mole
port 12362 - Whack-a-mole
port 12623 (UDP) - DUN Control
port 12624 - Buttman
port 12631 - WhackJob
port 12754 - Mstream
port 13000 - Senna Spy
port 13010 - Hacker Brazil
port 15092 - Host Control
port 15104 - Mstream
port 16660 - Stacheldracht
port 16484 - Mosucker
port 16772 - ICQ Revenge
port 16969 - Priority
port 17166 - Mosaic
port 17300 - Kuang2 The Virus
port 17777 - Nephron
port 18753 (UDP) - Shaft
port 19864 - ICQ Revenge
port 20001 - Millennium
port 20002 - AcidkoR
port 20034 - NetBus 2 Pro, NetRex, Whack Job
port 20203 - Chupacabra
port 20331 - Bla
port 20432 - Shaft
port 20432 (UDP) - Shaft
port 21544 - GirlFriend, Kidterror, Schwindler, WinSp00fer
port 22222 - Prosiak
port 23023 - Logged
port 23432 - Asylum
port 23456 - Evil FTP, Ugly FTP, Whack Job
port 23476 - Donald Dick
port 23476 (UDP) - Donald Dick
port 23477 - Donald Dick
port 26274 (UDP) - Delta Source
port 26681 - Spy Voice
port 27374 - SubSeven
port 27444 (UDP) - Trinoo
port 27573 - SubSeven
port 27665 - Trinoo
port 29104 - Host Control
port 29891 (UDP) - The Unexplained
port 30001 - TerrOr32
port 30029 - AOL Trojan
port 30100 - NetSphere
port 30101 - NetSphere
port 30102 - NetSphere
port 30103 - NetSphere
port 30103 (UDP) - NetSphere
port 30133 - NetSphere
port 30303 - Sockets de Troie
port 30947 - Intruse
port 30999 - Kuang2
port 31335 (UDP) - Trinoo
port 31336 - Bo Whack, ButtFunnel
port 31337 - Baron Night, BO client, BO2, Bo Facil
port 31337 (UDP) - BackFire, Back Orifice, DeepBO, Freak>
port 31338 - NetSpy DK, ButtFunnel
port 31338 (UDP) - Back Orifice, DeepBO
port 31339 - NetSpy DK
port 31666 - BOWhack
port 31785 - Hack´a´Tack
port 31787 - Hack´a´Tack
port 31788 - Hack´a´Tack
port 31789 (UDP) - Hack´a´Tack
port 31791 (UDP) - Hack´a´Tack
port 31792 - Hack´a´Tack
port 32100 - Peanut Brittle, Project nEXT
port 32418 - Acid Battery
port 33333 - Blakharaz, Prosiak
port 33577 - PsychWard
port 33777 - PsychWard
port 33911 - Spirit 2001a
port 34324 - BigGluck, TN
port 34555 (UDP) - Trinoo (Windows)
port 35555 (UDP) - Trinoo (Windows)
port 37651 - YAT
port 40412 - The Spy
port 40421 - Agent 40421, Masters Paradise
port 40422 - Masters Paradise
port 40423 - Masters Paradise
port 40426 - Masters Paradise
port 41666 - Remote Boot
port 41666 (UDP) - Remote Boot
port 44444 - Prosiak
port 47262 (UDP) - Delta Source
port 50505 - Sockets de Troie
port 50766 - Fore, Schwindler
port 51996 - Cafeini
port 52317 - Acid Battery 2000
port 53001 - Remote Windows Shutdown
port 54283 - SubSeven
port 54320 - Back Orifice 2000
port 54321 - School Bus
port 54321 (UDP) - Back Orifice 2000
port 57341 - NetRaider
port 58339 - ButtFunnel
port 60000 - Deep Throat
port 60068 - Xzip 6000068
port 60411 - Connection
port 61348 - Bunker-Hill
port 61466 - Telecommando
port 61603 - Bunker-Hill
port 63485 - Bunker-Hill
port 65000 - Devil, Stacheldracht
port 65432 - The Traitor
port 65432 (UDP) - The Traitor
port 65535 - RC
이렇게 있습니다.

이걸 봄으로서 무슨 프로그램을 사용하여 컴을 공격했는지 알수 있습니다.
그리고 그냥 netstat 명령어를 사용하지 마시고

netstat -an 이라는 명령을 사용해서 보시기 바랍니다.


netstat 명령어로 장애처리

1. netstat -rn

netstat 명령은 라우팅 테이블을 보여주므로 네트웍 상태를 확인할 수 있음.
(참고: Cisco router: sh ip route, Extreme switch: sh iproute)


netstat -rn 은 라우팅 테이블을 수치로 보여주는 것으로 이렇게 하면 이름 찾기를 하는 것 보다 빠르고 /etc/services, /etc/hosts 파일이 정확하지 않을 때 혼동을 피하기 위해서도 사용할 수 있으며, 또한 직관적으로 IP 주소를 확인할 수 있다.

Flags에서 U는 경로가 사용 가능한 상태, H는 목적지가 네트웍이 아닌 호스트이며, G는 게이트웨이나 라우터를 의미한다. 또한, 브로트캐스트 b, 정적으로 추가된 항목은 S, 복제의 결과로 생성된 경로임을 나타내는 W와 c등을 포함한다.

sol:/bin% netstat -rn ; r 은 Routing Table을 나타내며 n 은 주소와 포트를 숫자로 나타내줌.

Routing Table:
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ------ ---------
210.116.105.0 210.116.105.112 U 3 1306 hme0
10.107.11.0 10.107.11.112 U 2 685 hme1
10.107.0.0 10.107.11.254 UG 0 19334
224.0.0.0 210.116.105.112 U 3 0 hme0
default 210.116.105.126 UG 0 179635
127.0.0.1 127.0.0.1 UH 0 4414 lo0


2. netstat -an


netstat의 기능 하나는 한 호스트에서의 연결 내역(all connections)과 서비스의 목록(listening ports)을 보여주는 것이다. (netstat –a)


바이러스, 웜 이나 해킹등의 상태를 확인할 수 있는 수단이 될 수도 있다.

Listening이나 Established 된 Session의 IP 주소나 포트를 확인한다.
http://www.ccgsecurity.com/port.asp 

Pipe line과 함께 Unix/Linux는 grep, Windows는 find 옵션을 병행하여, 특정 포트를 검색한다.


analysisman:/home/elca% netstat -an | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 210.116.123.195:21 211.226.105.161:3044 ESTABLISHED
tcp 0 48 210.116.123.195:22 210.116.123.196:3619 ESTABLISHED
tcp 0 0 210.116.123.195:22 210.116.123.196:3618 ESTABLISHED

C:\\>netstat -an | find "445"
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
UDP 0.0.0.0:445 *:*

3. netstat -i, netstat -e

netstat –i (Unix/Linux), netstat –e (Windows) 옵션을 이용하여 해당 인터페이스의 패킷량과 에러, Collision 등을 확인할 수 있다.

특정 프로토콜의 연결 현황 파악하기
- Unix: netstat -P protocol (tcp/udp…)
- Linux: netstat -tcp/-udp
- Windows: netstat -p protocol
* -s (statistics)옵션을 같이 사용하면 해당 프로토콜의 통계치를 볼 수 있다.

C:\\>netstat -s -p tcp
TCP Statistics
Active Opens = 204
Passive Opens = 734
Failed Connection Attempts = 2
Reset Connections = 263
Current Connections = 2
Segments Received = 44759
Segments Sent = 26058
Segments Retransmitted = 15

상기 예제를 보면 26,058 TCP 세그먼트가 서버에 의해 전송되었고 15개의 재전송(Retransmission)이 발생하였다. 이것은 1% 보다 작다. 만약, 퍼센트가 이보다 높아진다면 Analyzer를 걸어서 TCP 트래픽을 조사해야 한다


네트워크를 확실하게 보호하고 점검, 모니터링한다 - Netstat Agent

(출처 : '[tacchan]★시스템 명령어인 netstat 를 사용하는 방법' - 네이버 지식iN)

2010. 8. 29.

[MySQL] Slave_Sql_Running = No

Master-Slave Replication 환경에서 Master에만 있는 테이블을 변경한다던가, Slave에서 테이블을 DROP하는 작업을 하는 경우 Slave의 Replication이 중단된다.

 

이 경우 SHOW SLAVE STATUS\G 명령어를 수행하면

 

Slave_Sql_Running = No

 

라는 부분을 발견한다. 이런 경우 error를 유발한 쿼리를 skip 해줘야 한다.

 

mysql> SLAVE STOP;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
mysql> SLAVE START;


SQL_SLAVE_SKIP_COUNTER : Slave를 작동한 후 Master로부터 읽어온 쿼리 중 skip할 쿼리 수

 

 

[MySQL] Master-Slave Replication

가. Master 서버 설정

 

1. Slave 서버에서 접근할 수 있도록 권한을 준다.

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'ID'@'IP' IDENTIFIED BY 'PASSWORD';


ID : Master MySQL의 user id로 Slave의 MySQL에서 접근함

IP : Slave 서버의 IP

PASSWORD : Slave의 MySQL에서 쓰는 id의 password

 

2. Master 역할을 할 수 있는 권한 부여

 

# vi /etc/my.cnf

[mysqld]
server-id = 1
binlog-do-db = 'DB_NAME'
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
log-bin = mysql-bin


server-id : 동기화 구성에 참여한 각각의 MySQL들을 구분짓기 위한 UNIQUE ID로서 중복되면 안된다.

binlog-do-db : 실제 동기화 하려는 대상 DB의 이름. DB마다 한 라인씩 추가하면 된다.

binlog-ignore-db : 동기화 하지 않을 DB의 이름. DB마다 한 라인씩 추가하면 된다.

log-bin : 아마도 mysql의 log file 이름.

 

나. Slave 서버 설정

 

1. Slave 역할을 할 수 있는 권한 부여

 

# vi /etc/my.cnf

[mysqld]
server-id = 2
master-host = 'Master IP'
master-user = 'ID'
master-password = 'PASSWORD'
master-port = 3306
log-bin = mysql-bin

 

server-id : Master에서의 역할과 동일하게 UNIQUE ID

master-host : Master 서버의 IP

master-user : Master 서버의 MySQL에 생성했던 Replication 계정 ID

master-password : Replication 계정 ID의 비밀번호

master-port : Master 서버의 MySQL 원격 접속 포트번호 (기본: 3306)

log-bin : Master에서의 역할과 동일하게 아마도 log file 이름

 

다. 동기화 작동

 

1. Master 서버 재시작 후 MySQL에 접속

 

2. Master 서버 동작 확인

 

mysql> SHOW MASTER STATUS\G
********************** 1. row **********************
                   File : mysql-bin.000003
             Position : 98
     Binlog_Do_DB : test
Binlog_Ignore_DB : mysql, information_schema
1 row in set (0.00 sec)
mysql>

 

3. Slave 서버 재시작 후 MySQL에 접속

 

4. Slave 서버 동작 확인

 

 

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
********************** 1. row **********************
           Slave_IO_State : Waiting for master to send event (정상)
              Master_Host : IP
              Master_User : ID
               Master_Port : 3306
        Connection_Retry : 60
         Master_Log_File : mysql-bin.000003
Read_Master_Log_Pos : 98
.
.
       Slave_IO_Running : Yes (정상)
    Slave_SQL_Running : Yes (정상)
.
.
1 row in set (0.00 sec)
mysql>

 

Read_Master_Log_Pos : MASTER STATUS의 Position과 동일하다.

 

Slave_IO_State, Slave_IO_Running, Slave_SQL_Running 의 상태가 위와 같다면 정상

 

 

 

2010. 8. 26.

[CentOS] apache tomcat mod_jk 이용해서 연동하기

tomcat의 기본 포트는 8080이다.
apache와 tomcat을 mod_jk로 연동하면 포트번호를 입력하지 않고 접근이 가능하다.

아파치 버전 : httpd-2.2.4
탐캣 버전 : apache-tomcat-6.0.29

----------

1. 탐캣 커넥터 다운받기

tomcat-connectors-1.2.30-src.tar.gz 를 다운받는다.

다운받기

2. 설치하기

# cd /var/tmp   => 다운 받은 파일 있는 디렉토리
# chmod 755 tomcat-connectors-1.2.30-src.tar.gz
# tar xvfz tomcat-connectors-1.2.30-src.tar.gz
# cd /var/tmp/tomcat-connectors-1.2.30-src/native

# ./buildconf.sh
# ./configure --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

설치가 잘 된거라면 /usr/local/apache2/modules/mod_jk.so 파일이 생성된다.
mod_jk.so 가 /usr/local/apache2/modules 디렉토리 안에 있고, 권한은 755로 설정되어있는지 확인한다.

3-1. apache2/conf/httpd.conf 설정하기

# vi /usr/local/apache2/conf/httpd.conf

LoadModule이 있는 라인으로 가서 다음 한줄을 추가한다.

LoadModule jk_module modules/mod_jk.so

<IfModule @#$@#$> </IfModule>의 제일 마지막에 다음을 추가한다.

############################################
<IfModule jk_module>
JkWorkersFile /usr/local/tomcat/conf/workers.properties
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
JkLogFile /usr/local/apache2/logs/mod_jk.log
JkLogLevel info
</IfModule>
############################################

3-2. apache2/conf/workers.properties 설정하기

# vi /usr/local/apache2/conf/workers.properties

밑의 내용을 작성하고 저장한다.

# Example socket channel, explicitly set post and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1

# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

# Web Context Setup
[uri:/*]
worker=ajp13:localhost:8009

3-3. tomcat/conf/workers.properties 설정하기

# vi /usr/local/tomcat/conf/workers.properties

밑의 내용을 작성하고 저장한다.

# Start setup file
#
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/java
ps=/
worker.list=ajp13

# Definition for Ajp13 worker
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# End setup file

4. 탐캣, 아파치 재시작


[CentOS] How to install MySQL Connector/J

0. JDK와 tomcat 설치는 밑의 블로그에 가면 상세히 나와있다.
JDK, tomcat 설치하기

---------

JSP 환경만 세팅하고 MySQL등 DB와 연동하지 않으면 아래와 같은 에러를 발견한다.
org.apache.jasper.JasperException: An exception occurred processing JSP page

---------
JDK와 tomcat 설치 후, mysql 연동하는 부분은 웹에서 찾기 힘들어 이렇게 자료로 남긴다.

1. mysql-connector-java-5.1.5.tar.gz 다운받기
http://ftp.plusline.de/mysql/Downloads/Connector-J/

2. 압축풀기
# tar xvzf mysql-connector-java-5.1.5.tar.gz
# cd mysql-connector-java-5.1.5
# cp mysql-connector-java-5.1.5-bin.jar /usr/java/jdk1.6.0_21/jre/lib/ext

3. tomcat 재시작


[CentOS] how to install apache, PHP and MySQL on Linux

LAMP 세팅하는 건 밑의 링크를 타고 가면 자세한 안내를 받을 수 있다.

리눅스에서 APM 설치하기

[리눅스] OS 확인

# uname -m
x86_64

uname에 -m 옵션을 주면 OS가 몇 비트인지 확인 가능하다.

x86_6464비트이고, i68632비트이다.

[리눅스] 방화벽 포트 열기

# iptables -L  : 방화벽 설정 확인

# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT  : 3306포트 방화벽 뚫어주기

# service iptables save : 설정한 내용을 저장한다.

# /etc/init.d/iptables restart : 포트변경후 iptables 재시작

[CentOS] configure: error: xml2-config not found. please check your libxml2 installation.

# ./configure !@#!@#!@#
.
.
configure: error: xml2-config not found. please check your libxml2 installation.


php설치중에 ./configure 명령어를 수행하면 위와 같은 에러를 발견할텐데 간단히 다음 명령어를 수행하자.

# yum install libxml2
# yum install libxml2-devel


그럼 설치가 잘 된다!

[CentOS] gpg key retrieval failed errno 14 http error 404 not found

# yum install packagename    
gpg key retrieval failed errno 14 http error 404 not found


yum install이 안되면서 gpg key retrieval failed errno 14 http error 404 not found 이런 에러가 나는 경우 해결책이다.

# rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

gpg key라는 CentOS RPM signing key가 없으므로 이를 받아온 뒤에 yum 명령어를 실행하면 잘 될꺼다!


밑의 링크 두군데 중 한개를 import 하면 된다!


[CentOS] No curses/termcap library found MySql

# ./configure --prefix=/usr/local/mysql-5.0.37 --with-charset=utf8 --with-collation=utf8_general_ci
.
.
.
@#$@#$%#$%#$%     No curses/termcap library found MySql

mysql을 설치하는 중에 ./configure 명령어 후에 다음과 같은 에러를 내면서 make를 할 수 없는 상황이 왔을 때 해결법을 찾았다.

# yum install libtermcap-devel

이후엔 설치가 잘 될꺼다!

2010. 8. 25.

[CentOS] service apachectl does not support chkconfig

# chkconfig --add apacheclt  
service apachectl does not support chkconfig

위의 예처럼 데몬을 자동으로 수행하려는데 에러가 발생한다면
다음과 같은 해결책을 사용해보세요.

# vi /etc/init.d/apachectl

# chkconfig: 2345 90 90
# description: init file for apachectl server daemon
# processname: /usr/local/apache2/bin/apachectl
# config: /usr/local/apache2/conf/httpd.conf
# pidfile: /usr/local/apache2/logs/httpd.pid

편집기를 열고 다음의 주석달린 5문장을 입력하면 놀랍게도 해결이 될것이다.

화이팅!!

[리눅스] root 로 접속 막기

1. 환경설정파일변경
> vi /etc/ssh/sshd_config

------------------------------------------
PermitRootLogin no
------------------------------------------

yes를 no로 변경하고 주석을 풀어줍니다.

2. 재시작
> service sshd restart


2010. 8. 24.

[리눅스]그룹생성 및 폴더에 그룹권한주기

1. 그룹 추가

>groupadd -g 505 web
>vi /etc/group

파일 내용중 다음과 같은 라인을 확인할 수 있다.

web:x:505:     => web이라는 그룹에 GID 505를 부여함

2. 사용자에게 GID(그룹아이디)주기

>vi /etc/passwd
원하는 사용자의 GID를 505로 변경함.

- /etc/passwd 파일의 구조
  account:password:UID:GID:GECOS:directory:shell
     account  :  사용자이름
     password : 암호(shadows파일로 대치될 경우 * 표시)
     UID, GID : 사용자번호, 그룹번호
    GECOS : 사용자정보(사용자 Full Name)
    directory : 사용자의 홈디렉토리
    shell     : 사용자의 기본 shell

3. 원하는 폴더에 그룹으로 권한주기

> chgrp web 대상폴더
> ls -al

drwxr-xr-x 2 root web 4096 1월 4 13:15 폴더이름

해당 폴더에 그룹이 web으로 변경되었음

단, 해당 디렉토리에 그룹에 대한 rwx의 권한이 있어야 함.
chmod 가 필요함.

2010. 8. 17.

[PHP] MongoDB 사용하기

<?php
$mongoDB = new Mongo();
$newDB = $mongoDB->newDB;
$newCollection = $newDB->newCollection;

$doc = array('name' => 'owner', 'text' => 'this is test');
$newCollection->insert($doc);

$mongoDB->close();
?>

쉘에 들어가서 다음을 입력하면 확인가능하다.
>db.newCollection.find()

[MongoDB] 사용자추가 스키마생성 DB삭제

mongod 를 기동할 때는 --auth 옵션을 추가해야 함

mongoDB는 system영역 내에서 admin이라는 DB관리를 위한 스키마를 가짐

>use admin // admin DB 사용
>db.addUser('name','pswd') // 사용자 추가

>use newDB => 해당 디비가 없으면, 새로운 디비를 생성함
   mysql의 스키마 생성과 같음

>db.collectionName.drop() => 해당 collection을 삭제함
   mysql의 DROP TABLE과 같음

2010. 8. 16.

[MongoDB] APM에서 시작하기

1. mongoDB 설치하기

2. 압축풀기
   본인은 C:\MongoDB 에 풀었다.

3. data 폴더 생성하기 (DB data를 위해 생성함)
   본인은 C:\MongoDB\data 에 생성함

4. MongoDB 시작
   
C:\MongoDB\bin> mongod --dbpath C:\MongoDB\data


5. php에서 쓸 MongoDB 드라이버설치
   다른버전 찾기 -> 여기

6. 압축풀고 PHP의 extension 폴더에 dll 파일을 넣음
   C:\APM_Setup\Server\PHP5\ext 폴더가 extension 폴더임
   (본인은 APM_Setup에 APM을 설치함)

7. php.ini에서 해당 모듈을 적용함
   php.ini에 보면 extension정보가 쭉 나열되어 있는 곳이 있음
   거기에 밑의 한줄을 추가해줌
   이왕이면 알파벳 순서에 맞게 하는게 나중에 찾기 편할 듯
 
extension=php_mongo.dll

8. 아파치 재시작
   APMSETUP Monitor를 열어서 Apache를 재시작한다.

9. 확인하기
   echo phpinfo(); 를 이용해서 불러온 정보에 mongo 관련 설정이 있는지 확인한다.
   설치 끝!


[테스트하기] - 반드시 "4번.몽고DB실행"을 한 뒤에 작업해야함.

<?php
$m = new Mongo();
?>


MongoDB를 실행하지 않으면 다음과 같은 에러를 볼 수 있다.

Fatal error: Uncaught exception 'MongoConnectionException' with message ': Unknown error' in C:\APM_Setup\htdocs\mongoDB_tester\index.php:4 Stack trace: #0 C:\APM_Setup\htdocs\mongoDB_tester\index.php(4): Mongo->__construct() #1 {main} thrown in C:\APM_Setup\htdocs\mongoDB_tester\index.php on line 4
 

[참고 사이트]


2010. 8. 15.

[MySQL] index 추가, 삭제, 확인하기

1. 테이블의 인덱스 확인하기

SHOW INDEX FROM tablename;

2-1. 테이블의 인덱스 추가하기 : 컬럼은 1개도 가능, 2개 이상도 가능
ALTER TABLE tablename ADD INDEX indexname (column1, column2);

2-2. 테이블의 유니크 인덱스 추가하기 : 컬럼은 1개도 가능, 2개 이상도 가능
ALTER TABLE tablename ADD UNIQUE INDEX indexname (column1, column2);

3. 테이블의 인덱스 삭제하기
ALTER TABLE tablename DROP INDEX indexname;

2010. 7. 19.

FirePHP 사용법

require_once './library/FirePHP.class.php';
$firephp = FirePHP::getInstance(true);
$firephp->log($variable);

FirePHP 사용법.


post raw data

file_get_contents("php://input");

POST 방식으로 보낸 http 패킷의 body에 접근할 수 있다.

일반적으로 PHP에서는 form방식 전송을 이용하는 경우가 대부분이지만

body에 JSON으로 만든 raw data를 넣어서 보내는 경우에 서버단에서 접근하려면

위와 같은 명령어를 이용해야 한다.

etc/passwd

abc:x:600:600::/home/abc:/bin/bash

abc : 사용자 계정
x: 비번
/home/abc : 로그인시 홈 디렉토리

---------------------------------------------------

chown abc /usr/local/apache/htdocs (-R)

abc 사용자에게 해당 디렉토리의 권한을 준다.

-R 옵션을 쓰면 하위 디렉토리까지 일괄적으로 권한을 준다.

2010. 7. 1.

PHP 이미지 crop

<iframe name="cropFrame" width="60" height="50" scrolling="no" style="display:none;"></iframe>
<form action="crop.php" method="post" target="cropFrame">
    <input id="imageSrc" type="hidden" name="imageSrc" value="" />
    <input id="x" type="hidden" name="x" value="0" />
    <input id="y" type="hidden" name="y" value="0" />
    <input id="w" type="hidden" name="w" value="450" />
    <input id="h" type="hidden" name="h" value="200" />
    <input type="submit" value="crop" />
</form>

----------------------------------------------------------------------

<?php
    require_once './FirePHPCore/FirePHP.class.php';
    $firephp = FirePHP::getInstance(true);

    //$firephp->log($_POST['imageSrc']);
    
    $imageSrc = $_POST['imageSrc'];
    $x = $_POST['x'];
    $y = $_POST['y'];
    $w = $_POST['w'];  // 높이
    $h = $_POST['h'];   // 길이

    $target_w = 450;
    $target_h = 200;
    $jpeg_quality = 90;
    $src = substr($imageSrc, 2);
    $img_r = imagecreatefromjpeg($src);
    $dst_r = ImageCreateTrueColor($w, $h);

    imagecopyresampled(
        $dst_r,
        $img_r,
        0, 0, $x, $y,
        $target_w, $target_h, $w, $h
    );

    $output_filename = './pic/test.jpg';

    header('Content-type: image/jpeg');
    imagejpeg($dst_r, $output_filename, $jpeg_quality);
?>

imagecreatefromjpeg($src);
 - 해당 경로의 파일을 jpeg 이미지로 생성함

ImageCreateTrueColor($w, $h);
 - 파라미터로 받은 넓이와 높이의 크기만한 검정색 이미지를 생성함

imagecopyresampled(
    $dst_r, // 타겟 이미지
    $img_r,  // 복사할 이미지
    0,         // 타겟 이미지의 x좌표
    0,         // 타겟 이미지의 y좌표
    $x,       // 원본 이미지의 x좌표
    $y,       // 원본 이미지의 y좌표
    $target_w, // 타겟 이미지의 넓이
    $target_h,  // 타겟 이미지의 높이
    $w,      // 원본 이미지의 넓이
    $h        // 원본 이미지의 높이
);
 - 이미지의 크기를 변경해서 복사함
 - 이미지의 x, y 좌표는 좌상단 모서리에서 시작함

PHP 파일업로드

<iframe name="uploadFrame" width="60" height="50" scrolling="no" style="display:none;"></iframe>
<form action="upload.php" method="post" enctype="multipart/form-data" target="uploadFrame"/>
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    <label for="userfile">Upload a file:</label>
    <input type="file" name="userfile" id="userfile" />
    <input type="submit" value="Send File" />
</form>

---------------------------------------------------------------------

<?php
file_exists($filepath);
 - 파일경로를 파라미터로 넘겨주고 존재 여부를 Boolean으로 받음

 move_uploaded_file($_FILES['userfile']['tmp_name'], $path);
 - 파일을 해당 경로에 업로드함
?>



웹폼디자인


웹 폼 디자인 : 고객을 끌어당기는 폼 디자인의 원리 - 도서출판 ...

이미지출처 : insightbook.springnote.com

UX에 대한 관심이 높아져서 이 분야에 종사하는 분께 추천을 받았다. 요즘 웹 폼을 만들면서 책에 대한 흥미도가 높아졌고, 실제로 많이 도움이 된다. 웹 폼에 대한 이렇게 다양한 고민을 함께 할 수 있기에 너무 유익한 책이다. 웹 폼에 한정되어 있어 아쉽긴 하지만 폼에 관해선 왠만한 경우의 수를 다 고려한 느낌이 묻어난다.
앞으로 다른 UX에 관한 책들도 많이 읽어봐야겠다. 요즘엔 개발자도 디자이너도 UX를 고려해야 한다고 생각하는 사람으로 매우 추천할 만 하다.

2010. 6. 30.

웹표준교과서


위지아 - 아이템 : 웹표준교과서

이미지출처 : www.wisia.com

마크업을 공부할땐 항상 웹표준 교과서와 W3C 홈페이지를 이용한다. 뭐 앞으론 HTML5를 많이 볼테지만 그동안 많이 참고가 되었던 책이다. 이 책은 기본에 충실하면서도 왠만한 내용은 다 들어있다고 생각한다. 한권 가져다 놓으면 나름 든든한 책이다. 이 책 역시 처음부터 쭉 보기보단 필요한 부분을 찾아서 보는 용도가 좋다고 생각한다.

자바스크립트 완벽가이드


변두리 블로그 : 자바스크립트 완벽가이드 (JavaScript: The ...

이미지출처 : jinaida.egloos.com

자바스크립트에 대한 아주 유명한 책이다. 흔히들 괜찮은 자바스크립트 책을 추천해달라고 하면 권하는 책이기도 하다. 이 책은 처음부터 끝까지 전부 보진 않았지만 꾸준히 보는 책이다. 매번 볼때마다 다른 느낌인건 실력이 올라가고 있기 때문인걸까? 여하튼 자바스크립트를 공부하기 위해선 필수라고 생각한다. 내 생각에 이 책은 레퍼런스적인 성격보다도 기본에 충실하게 설명한다고 느껴진다.

2010. 6. 7.

CSS3 embossing, highlight, gradient effect

text embossing effect

<주요 속성 요약>
#test1 {
     color: #ccc; font-size: 55px; font-weight: bold; background-color: #b38f00;
     text-shadow: 0 1px 0 #fff, 0 -1px 0 #000; 
     border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px;
}

<속성 설명 >
- 첫번째 : X좌표     - 두번째 : Y좌표     - 세번째 : 블러     - 네번째 : 색상


box highlight effect


<주요 속성 요약>
#test2 {
     color: #ccc; font-size: 55px; font-weight: bold; background-color: #bbb;
     text-shadow: 0 1px 0 #fff, 0 -1px 0 #000;
     border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px;
   box-shadow: 4px 4px 4px #555, -4px -4px 4px #555, 4px -4px 4px #555, -4px 4px 4px #555;
     -moz-box-shadow: 4px 4px 4px #555, -4px -4px 4px #555, 4px -4px 4px #555, -4px 4px 4px #555;
     -webkit-box-shadow: 4px 4px 4px #555, -4px -4px 4px #555, 4px -4px 4px #555, -4px 4px 4px #555;
}

<속성 설명>
- 첫번째 : X좌표     - 두번째 : Y좌표     - 세번째 : 블러     - 네번째 : 색상

linear gradient effect


<주요 속성 요약>
test3 {                    
     background: -moz-linear-gradient(90deg, #1a1a1a, #808080);
     background: -webkit-gradient(linear, 0 0, 0 100%, from(#808080), to(#1a1a1a));
}

<속성 설명 -moz-linear-gradient>
- 첫번째 : 각도. 0deg 왼쪽에서 시작, 90deg 아래에서 시작
- 두번째 : 시작 색     - 세번째 : 끝나는 색

<속성 설명 -webkit-gradient>
- 첫번째 : 타입 (radial or linear)
- 두번째 : 해당 타입이 적용될 영역의 %단위, 오른쪽 밑
- 세번째 : 해당 타입이 적용될 영역의 %단위, 왼쪽 위
- 네번째 : 시작 색     - 다섯째 : 끝나는 색


2010. 6. 6.

HTML5 meta Tag

1. 문서 설명 : 검색엔진에 좀 더 노출 시킬 수 있다.
<meta name="description" content="HTML5 Tutorial" />

1. 문서 키워드 : 검색엔진에 좀 더 노출 시킬 수 있다.
<meta name="keywords" content="HTML5,CSS3,JavaScript" />

1. 문서 작성자를 정의
<meta name="author" content="Jace Park" />

1. 문서 수정자와 날짜 정의
<meta name="revised" content="Jace Park, 07/06/2010" />

1. 문자인코딩 정의
<meta charset="cp949" />

1. 페이지 리다이렉트 (5초 뒤, 해당url로 이동한다.)
<meta http-equiv="refresh" content="5;url=http://www.abc.com/" />

1. 페이지 리플레시 (5초 간격)
<meta http-equiv="refresh" content="5" />

1. 문서 편집기 정의
<meta name="generator" content="Gvim 7.2">

1. 어플리케이션 이름 정의: 만일 어플리케이션 이름이 없다면 정의하지 안아도 좋다.
<meta name="APPLICATION-NAME" content="Long headed application">

1. 웹크롤러에 노출여부 결정 (noindex - 문서 긁어가지 않음, nofollow - 문서 내 링크 긁어가지 않음)
<meta name="robots" content="noindex,follow" />

JavaScript - Zoo Keeper


Javascript로 Zoo Keeper를 만들었습니다.

더 깨질 블럭이 없는 경우 판을 재배치하는 기능과
동시에 여러개 블럭을 움직였을 때의 경우가 구현이 안되었습니다.
그 밖에 미쳐 발견하지 못한 버그가 있을 수 있겠지만
일단은 프로토타입 거의 완성입니다!

물론 css로 눈속임을 했고, 기능이 완벽하지 않지만 뿌듯하네요.
이번 프로젝트를 통해서 게임을 만들기 위해서 어떤 고민을 해야하는지를 꺠달았습니다.

향후 구현하지 못한 부분을 완성시키고,
html5, css3, javascript UI library(스크립타큘러스 또는 제이쿼리 UI 등등)를 이용해서
좀더 화려한 게임으로 업그레이드 시키고 싶네요.

2010. 5. 10.

CSS3와 jQuery TOOLS 를 사용한 탭디자인

jQuery 기반 UI Library인 jQuery TOOLS가 나온 소식을 몇일전에 접했습니다.

자바스크립트 코드 몇줄이면 멋진 UI가 튀어나오더군요.

너무 재밌어서 데모를 시연해보다가 탭 디자인 한개를 직접 사용해봤습니다.


<탭 디자인 그림파일>


1. jQuery와 jQuery TOOLS 링크입니다.

펼쳐두기..


2. css3를 적용했습니다. (참고사이트 : http://www.designlog.org/2512076)

펼쳐두기..


3. HTML

펼쳐두기..


4. jQuery TOOLS를 사용한 자바스크립트

펼쳐두기..



이 링크를 따라가시면 jQuery TOOLS 데모를 볼 수 있습니다.