Posted by Нуеоп
2013. 2. 2. 08:22

$password_hash = md5( $salt . md5( $password . $salt ));



'php' 카테고리의 다른 글

mongodb + rockmongo with php in ubuntu  (0) 2013.01.08
php file upload 와 mysql blob  (0) 2013.01.02
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
xml to json 변환  (0) 2012.12.20
sms 인증보내기 php 소스  (0) 2012.12.19
Posted by Нуеоп
2013. 1. 22. 00:01

1. nginx 소스 코드 다운로드

http://nginx.com/

http://nginx.org/en/download.html

위 사이트에서 직접 다운로드 받는다.


wget를 이용해도 된다.

# wget http://nginx.org/download/nginx-1.2.6.tar.gz



2. 압축 풀기

# tar xvfz nginx-1.2.6.tar.gz


3. 환경 설정, 컴파일, 설치

# ./configure

# make

# make install


별다른 경로설정 없이 make install을 할 경우, 컴팡리된 파일 등이 /usr/local/nginx 디렉토리로 복사된다.


./configure에서 --prefix 옵션을 통해 기본 경로(/usr/local/nginx)를 변경할 수 있다.


보통 nginx의 버전을 기입한다.

# ./configure --prefix=/usr/local/nginx-1.2.6


default로 conf-path는 <prefix>/conf/nginx.conf, sbin-path는 <prefix>/sbin/nginx 가 된다.


4. apt-get 이용

위 방법 말고 apt-get을 이용하여 쉽게 설치할 수도 있다.

# apt-get update

# apt-get install nginx


이 경우 모듈 설정을 할 수 없다는 단점이 있다. apache의 경우, 설치 이후에 모듈을 추가하거나 설정을 변경할 수 있지만, nginx의 경우 컴파일 전에 모듈을 추가, 설정해야 하기 때문이다.




* 요약 정리

# wget http://nginx.org/download/nginx-1.2.6.tar.gz

# tar xvfz nginx-1.2.6.tar.gz

# ./configure --prefix=/usr/local/nginx-1.2.6 \

--user=www-data --group=www-data \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_xslt_module

(apt-get install libxml2 필요)

(그밖에 pcre, zlib, openssl은 이전 글 참고)

(만약 www-data 사용자가 없을 경우, 추가해줄것. nginx.conf에 user, group가 없는 경우 유효함)


# make && make install

# cd /usr/local/sbin

# ln -s /usr/local/nginx-1.2.6/sbin/nginx nginx

# vim /etc/init.d/nginx        ; /etc/init.d/nginx 스크립트는 밑에 소스 참조

# chmod +x /etc/init.d/nginx


작동 테스트

# service nginx start

# service nginx restart

# service nginx stop


만약 service nginx restart가 제대로 작동하지 않는다면, 여기를 참고해서, --pid-path의 경로에서 생성되는 nginx.pid의 위치와, /etc/init.d/nginx에서 PIDSPATH 경로가 일치하는지 확인할 것


시스템 런레벨에서 init스크립트를 실행하기 위해선 다음 명령어 입력

# update-rc.d -f nginx defaults

그러면 우분투가 재시작되어도 nginx가 실행된다.



다음은 /etc/init.d/nginx 스크립트 전문


#! /bin/sh


# 해당 소스는 Jason Giedymin이 최초 작성하였고

# 제가 약간 수정했으며, 한글 주석을 달았습니다.

#

# Author:  Jason Giedymin

#          <jason.giedymin AT gmail.com>.

#

# Version: 2.0 02-NOV-2009 jason.giedymin AT gmail.com

# Notes: nginx init.d dash script for Ubuntu <=9.10.

# This script's project home is:

# http://code.google.com/p/nginx-init-ubuntu/

#

#------------------------------------------------------------------------------

#                               MIT X11 License

#------------------------------------------------------------------------------

#

# Copyright (c) 2009 Jason Giedymin, http://Amuxbit.com formerly

#     http://AcronymLabs.com

#

# Permission is hereby granted, free of charge, to any person obtaining

# a copy of this software and associated documentation files (the

# "Software"), to deal in the Software without restriction, including

# without limitation the rights to use, copy, modify, merge, publish,

# distribute, sublicense, and/or sell copies of the Software, and to

# permit persons to whom the Software is furnished to do so, subject to

# the following conditions:

#

# The above copyright notice and this permission notice shall be

# included in all copies or substantial portions of the Software.

#

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

#------------------------------------------------------------------------------


#------------------------------------------------------------------------------

#                               Functions

#------------------------------------------------------------------------------

. /lib/lsb/init-functions


#------------------------------------------------------------------------------

#                               Consts

#------------------------------------------------------------------------------

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON=/usr/local/nginx-1.2.6/sbin/nginx  #nginx 파일의 위치


PS="nginx"

PIDNAME="nginx" #lets you do $PS-slave

PIDFILE=$PIDNAME.pid                    #pid file

PIDSPATH=/usr/local/nginx-1.2.6/logs    #nginx.pid가 생성되는, --pid-path로 지정한 경로


DESCRIPTION="Nginx Server..."


RUNAS=root                              #user to run as


SCRIPT_OK=0                             #ala error codes

SCRIPT_ERROR=1                          #ala error codes

TRUE=1                                  #boolean

FALSE=0                                 #boolean


lockfile=/var/lock/subsys/nginx

NGINX_CONF_FILE="/usr/local/nginx-1.2.6/conf/nginx.conf"  #nginx.conf 파일 위치


#------------------------------------------------------------------------------

#                               Simple Tests

#------------------------------------------------------------------------------


#test if nginx is a file and executable

test -x $DAEMON || exit 0


# Include nginx defaults if available

if [ -f /etc/default/nginx ] ; then

        . /etc/default/nginx

fi


#set exit condition

#set -e


#------------------------------------------------------------------------------

#                               Functions

#------------------------------------------------------------------------------


setFilePerms(){


        if [ -f $PIDSPATH/$PIDFILE ]; then

                chmod 400 $PIDSPATH/$PIDFILE

        fi

}


configtest() {

$DAEMON -t -c $NGINX_CONF_FILE

}


getPSCount() {

return `pgrep -f $PS | wc -l`

}


isRunning() {

        if [ $1 ]; then

                pidof_daemon $1

                PID=$?


                if [ $PID -gt 0 ]; then

                        return 1

                else

                        return 0

                fi

        else

                pidof_daemon

                PID=$?


                if [ $PID -gt 0 ]; then

                        return 1

                else

                        return 0

                fi

        fi

}


#courtesy of php-fpm

wait_for_pid () {

        try=0


        while test $try -lt 35 ; do


                case "$1" in

                        'created')

                        if [ -f "$2" ] ; then

                                try=''

                                break

                        fi

                        ;;


                        'removed')

                        if [ ! -f "$2" ] ; then

                                try=''

                                break

                        fi

                        ;;

                esac


                #echo -n .

                try=`expr $try + 1`

                sleep 1

        done

}


status(){

isRunning

isAlive=$?


if [ "${isAlive}" -eq $TRUE ]; then

                echo "$PIDNAME found running with processes:  `pidof $PS`"

        else

                echo "$PIDNAME is NOT running."

        fi



}


removePIDFile(){

if [ $1 ]; then

                if [ -f $1 ]; then

               rm -f $1

       fi

        else

#Do default removal

if [ -f $PIDSPATH/$PIDFILE ]; then

               rm -f $PIDSPATH/$PIDFILE

       fi

        fi

}


start() {

        log_daemon_msg "Starting $DESCRIPTION"

isRunning

isAlive=$?

        if [ "${isAlive}" -eq $TRUE ]; then

                log_end_msg $SCRIPT_ERROR

        else

                start-stop-daemon --start --quiet --chuid $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON \

                -- -c $NGINX_CONF_FILE

                setFilePerms

                log_end_msg $SCRIPT_OK

        fi

}


stop() {

log_daemon_msg "Stopping $DESCRIPTION"

isRunning

isAlive=$?

        if [ "${isAlive}" -eq $TRUE ]; then

                start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE


wait_for_pid 'removed' $PIDSPATH/$PIDFILE


                if [ -n "$try" ] ; then

                        log_end_msg $SCRIPT_ERROR

                else

                        removePIDFile

               log_end_msg $SCRIPT_OK

                fi


        else

                log_end_msg $SCRIPT_ERROR

        fi

}


reload() {

configtest || return $?


log_daemon_msg "Reloading (via HUP) $DESCRIPTION"


        isRunning

        if [ $? -eq $TRUE ]; then

`killall -HUP $PS` #to be safe


                log_end_msg $SCRIPT_OK

        else

                log_end_msg $SCRIPT_ERROR

        fi

}


quietupgrade() {

log_daemon_msg "Peforming Quiet Upgrade $DESCRIPTION"


        isRunning

        isAlive=$?

        if [ "${isAlive}" -eq $TRUE ]; then

kill -USR2 `cat $PIDSPATH/$PIDFILE`

kill -WINCH `cat $PIDSPATH/$PIDFILE.oldbin`

isRunning

isAlive=$?

if [ "${isAlive}" -eq $TRUE ]; then

kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin`

wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin

                        removePIDFile $PIDSPATH/$PIDFILE.oldbin


log_end_msg $SCRIPT_OK

else

log_end_msg $SCRIPT_ERROR

log_daemon_msg "ERROR! Reverting back to original $DESCRIPTION"


kill -HUP `cat $PIDSPATH/$PIDFILE`

kill -TERM `cat $PIDSPATH/$PIDFILE.oldbin`

kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin`


wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin

                        removePIDFile $PIDSPATH/$PIDFILE.oldbin


log_end_msg $SCRIPT_ok

fi

        else

                log_end_msg $SCRIPT_ERROR

        fi

}


terminate() {

        log_daemon_msg "Force terminating (via KILL) $DESCRIPTION"

        

PIDS=`pidof $PS` || true


[ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE`


for i in $PIDS; do

if [ "$i" = "$PIDS2" ]; then

        kill $i

                        wait_for_pid 'removed' $PIDSPATH/$PIDFILE

removePIDFile

fi

done


log_end_msg $SCRIPT_OK

}


destroy() {

log_daemon_msg "Force terminating and may include self (via KILLALL) $DESCRIPTION"

killall $PS -q >> /dev/null 2>&1

log_end_msg $SCRIPT_OK

}


pidof_daemon() {

    PIDS=`pidof $PS` || true


    [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE`


    for i in $PIDS; do

        if [ "$i" = "$PIDS2" ]; then

            return 1

        fi

    done

    return 0

}


case "$1" in

  start)

start

        ;;

  stop)

stop

        ;;

  restart|force-reload)

stop

sleep 1

start

        ;;

  reload)

$1

;;

  status)

status

;;

  configtest)

        $1

        ;;

  quietupgrade)

$1

;;

  terminate)

$1

;;

  destroy)

$1

;;

  *)

FULLPATH=/etc/init.d/$PS

echo "Usage: $FULLPATH {start|stop|restart|force-reload|status|configtest|quietupgrade|terminate|destroy}"

echo "       The 'destroy' command should only be used as a last resort." 

exit 1

;;

esac


exit 0




참고자료

http://blog.blindgaenger.net/create_initd_script_for_nginx.html

http://articles.slicehost.com/2007/10/16/ubuntu-lts-installing-nginx

http://articles.slicehost.com/2007/10/17/ubuntu-lts-adding-an-nginx-init-script

http://stackoverflow.com/questions/8857358/nginx-daemon-stop-is-failing

http://wiki.nginx.org/


Posted by Нуеоп
2013. 1. 21. 23:35

1. gcc 설치

# apt-get install gcc


2. PCRE(Perl Compatible Regular Expression) 설치

# apt-get install libpcre3 lilbpcre3-dev


3. zlib 설치

# apt-get install zlib1g zlib1g-dev        b와 g 사이 숫자 1임에 주의


4. OpenSSL(Open Secure Sockets Layer) 설치

# apt-get install openssl libssl-dev



1~4단계 한번에 설치

# apt-get install gcc

# apt-get install libpcre3 lilbpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

Posted by Нуеоп

vsftpd 설치

# apt-get update

# apt-get install vsftpd


vsftpd 실행

# service vsftpd start    혹은    # /etc/init.d/vsftpd start


* vsftpd 설정

# vim /etc/vsftpd.conf


anoymous_enable=YES 를 anoymous_enable=NO 로 변경


# service vsftpd restart

'linux' 카테고리의 다른 글

nginx 설치 하기  (0) 2013.01.22
nginx 설치 준비  (0) 2013.01.21
서버 sftp 접속을 위한 editplus설정 및 filezilla 설정  (0) 2013.01.21
ubuntu 12.04, nginx, sftp, 등  (0) 2013.01.21
apache mod_rewrite 설치 및 설정하기  (1) 2013.01.17
Posted by Нуеоп

1. Editplus 설정


[파일] - [FTP] - [FTP 설정]



추가 버튼 클릭후, 설명란에 서버이름을 입력한다.

FTP 서버에는, 서버 주소를 입력한다.

Username과 Password를 입력하고, 고급 옵션을 선택한다.



'sftp 사용'과 'UTF-8 파일명 사용'을 체크한다.


이제 생성한 ftp 설정을 선택하여 접속한다.





2. FileZilla 설정


[파일] - [사이트 관리자]



[새 사이트] 버튼을 눌러 새 사이트 설정을 생성한 뒤, [일반]텝에서 '호스트'란에 ftp 서버 주소를, '프로토콜'은 SFTP를 선택한다. '로그온 유형'은 '비밀번호 묻기'를 선택한다. '사용자'는 별도의 사용자가 없으면 root를 입력한다.




'linux' 카테고리의 다른 글

nginx 설치 준비  (0) 2013.01.21
editplus나 filezilla를 위한 sftp 설치  (0) 2013.01.21
ubuntu 12.04, nginx, sftp, 등  (0) 2013.01.21
apache mod_rewrite 설치 및 설정하기  (1) 2013.01.17
Juju in ubuntu  (0) 2013.01.08
Posted by Нуеоп

준비

editplus 설치

* putty 나 xshell 설치

filezila 설치

 

 

1. putty 나 xshell로 서버 접속해보기

2. sftp설치(editplus, filezila 접속을 위한)

# apt-get update

# apt-get install vsftpd

# /etc/init.d/vsftpd start 혹은 # service vsftpd start

 

3. editplus로 접속해보기

4. filezila로 파일 업로드, 다운로드 해보기

 

5. nginx 설치, 설정, 실행

6. mysql, mongodb 설치

 

Posted by Нуеоп

1. 설치

# a2enmod rewrite


2. mod_rewrite.so 경로확인

# updatedb

# locate mod_rewrite.so

/usr/lib/apached/modules/mod_rewrite.so


3. 설정

# vim /etc/apache2/mods-enabled/rewrite.load


다음을 추가

LoadModule rewrite_module /usr/lib/apached/modules/mod_rewrite.so


4. apache설정

# vim /etc/apache2/sites-available/default


<Directory /var/www/>

Options Indexes FolloSymLinks MultiViews

AllowOverride None

...


위 부분을 아래처럼 수정(AllowOverride None를 AllowOverride all로 수정)


<Directory /var/www/>

Options Indexes FolloSymLinks MultiViews

AllowOverride all

...


5. 규칙 추가

.htaccess를 편집하여, 규칙을 추가한다.


6. 적용을 위한 서버 재시작

# service apache2 restart

혹은

# /etc/init.d/apaches2 restart




Posted by Нуеоп

문자 인코딩

html <head>에 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

처럼 charset=utf-8을 content 속성으로 지정하는 것이 일반적이다.


하지만 html5에선

<meta charset="utf-8" />

처럼 charset이 개별 속성으로 되었다.


링크

<head>안에

<link rel="stylesheet" href="common.css" type="text/css" />

처럼 외부 css를 링크할 수 있다. css는 딱 하나의 언어만 존재하므로 type부분을 생략할 수 있다.

<link rel="stylesheet" href="common.css" />


stylesheet말고도 alternate, archives, author, external, start, prev, next, icon, license, nofollow, noreferrer, pingback,prefetch, search, sidebar, tag 가 있다.






Posted by Нуеоп

html5는 과거 html 4.01과 xhtml 1.0, xhtml 1.1을 잇는 차세대 html이다.

이전까지 통합적으로 표준화 되지 않았던 부분을 표준화하려는 시도이다.

2006년부터 제안된 html5 표준화는 2013년 1월 현재 아직 표준화 작업이 완료되지 않았으며, 2014년 표준화 완료 예정이다.

아직 완료되지 않은 표준이기 때문에, html5를 지원하는 브라우저를 따지는것이 무의미할 수 있다. 하지만 그럭저럭 잘 지원하는 브라우저로는, ie9, ie10, safari, chrome 등이 있다.

ie9, ie10에 대한 안좋은 편입견은 없었으면 좋겠다. 


html5의 코드 작성은 다음과 같이 한다.


<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>HTML5 시작하기</title>

</head>

<body>

<p>안녕하세요</p>

</body>

</html>




추가된 input태그는 다음과 같은 타입이 있다.


<input type="search" placeholder="search">

<input type="number" placeholder="number">

<input type="range">

<input type="color">

<input type="tel" placeholder="tel">

<input type="url" placeholder="url">

<input type="email" placeholder="email">

<input type="date">

<input type="month" placeholder="month">

<input type="week" placeholder="week">

<input type="time">

<input type="datetime" placeholder="datetime">

<input type="datetime-local" placeholder="datetime-local">


placeholder는 입력전, input란에 미리 입력된 정보이다. 해당 폼에 포커스되면, 사라지는 문구이다.


img 태그와 마찬가지로, <input type="search"></input> 나 <input type="search" /> 같은 닫는 태그가 필요하지 않다.

참고로 <img />가 아닌 <img></img>는 안된다.


Posted by Нуеоп

1. mongodb 설치

# apt-key adv --keyserver server.ubuntu.com --recv 7F0CEB10


# vim /etc/apt/sources.list.d/10gen.list

deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen


# apt-get update


# apt-get install mongodb-10gen


# service mongodb start


# mongo


2. php mongodb driver 설치

# vim /etc/php5/apache2/php.ini

extension=mongo.so

혹은

extension=/usr/lib/php5/20090626/mongo.so # find / -name mongo.so


# service httpd restart


# apt-get install php5-dev php5-cli

# apt-get install php-pear


# sudo pecl install phpmongo


3. RockMongo 설치

http://rockmongo.com/ 에서 다운로드 및 압축 풀기


http://localhost/rockmongo/index.php 로 접속


username : admin

password : admin




Rockmongo 실행 모습




'php' 카테고리의 다른 글

php password md5 hash  (0) 2013.02.02
php file upload 와 mysql blob  (0) 2013.01.02
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
xml to json 변환  (0) 2012.12.20
sms 인증보내기 php 소스  (0) 2012.12.19
Posted by Нуеоп

http://www.appcelerator.com/ 에서 Titanium studio 다운로드 및 설치

물론 회원 가입해야함


맥에서 설치할 경우, iOS를 위한 앱 개발에 용이함

윈도우즈에서 설치할 경우, simulator는 android를 사용하게됨


처음 설치 후 실행하면, 밑에 Android sdk 설치 버튼 생김. 그걸로 android sdk설치

android 2.2버전 선택해주고, 경로는 공백없는 c:\android 정도로 해둘것.

만약 My documents 로 하게 되면, 경로 공백 때문에 문제가 될 수 있음.


Create Project에서, Titanium project 선택, Mobile web는 체크 해제하고, android만 체크할 것.


Run해보자. 안된다면, python 설치, Titanium studio 관리자 권한으로 실행, python 환경변수 추가 등 해볼것

build log를 보고 문제의 원인을 찾자.


javac도 환경변수에 추가하자


Posted by Нуеоп
2013. 1. 8. 09:06

https://juju.ubuntu.com/



'linux' 카테고리의 다른 글

ubuntu 12.04, nginx, sftp, 등  (0) 2013.01.21
apache mod_rewrite 설치 및 설정하기  (1) 2013.01.17
디렉토리 내 모든 파일에서 특정 문자열 변경하기  (0) 2013.01.05
[펌]zlilb, libpng 등 설치..  (0) 2013.01.03
ftp 보안  (0) 2012.12.19
Posted by Нуеоп

# find . -name \*.\* | xargs /usr/bin/perl -w -pi -e 's/oldstring/newstring/g'


참고 : http://kldp.org/node/95739

'linux' 카테고리의 다른 글

apache mod_rewrite 설치 및 설정하기  (1) 2013.01.17
Juju in ubuntu  (0) 2013.01.08
[펌]zlilb, libpng 등 설치..  (0) 2013.01.03
ftp 보안  (0) 2012.12.19
서버 명령어  (0) 2012.12.12
Posted by Нуеоп

php 언어에는 여러 함수를 지원합니다. php설치시 라이브러리를 설치해 주어야 작동하는 함수들이 많습니다. 모든 라이브러리를 설치하는 것은 무리가 있다고 생각하며, gd라이브러리는 기본적으로 설치해 주어야 한다고 생각해서, 연관있는 위 프로그램들을 설치하도록 하겠습니다. 물론 제가 썼던 설치강좌대로 설치하셨다면, 위 라이브러리들은 모두 설치되어 있을 것입니다. 하지만, gd라이브러리와 연동이 안된 상태이며, php 연동시 문제를 일으키기 때문에 컴파일 설치하도록 하겠습니다. rpm 설치된 것들은 그대로 놔 두셔도 상관없으니 놔두고 설치하겠습니다.

(1) zlib 설치
   zlib은 압축과 관련된 라이브러리 입니다.
[root@localhost local]# cd /usr/local
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/zlib-1.1.4.tar.gz
[root@localhost local]# tar xvfz zlib-1.1.4.tar.gz
[root@localhost local]# cd zlib-1.1.4
[root@localhost zlib-1.1.4]# ./configure && make && make install
[root@localhost zlib-1.1.4]# cd ..
[root@localhost local]#rm -rf zlib-1.1.4*

wget 명령어를 이용해서 ftp 사이트에서 압축된 소스파일을 가져오고 난 뒤에 압축을 해제합니다.
풀어진 디렉토리로 이동하여 configure와 컴파일과 설치를 한꺼번에 명령을 내여 설치합니다. 
여기서 && 표시는 configure 가 성공하면 make를 실행하고 make 가 성공하면, make install를 실행하는 의미입니다.
마지막에 압축파일과 풀어진 소스파일은 필요없기 때문에 삭제합니다.
 앞으로 설치할 모든 프로그램도 위와 같이 간단하게 설치할 것입니다. 

(2) libpng 설치
  png 포맷을 다루기 위한 라이브러리입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/libpng-1.2.5.tar.gz
[root@localhost local]# tar xvfz libpng-1.2.5.tar.gz
[root@localhost local]# cd libpng-1.2.5
[root@localhost libpng-1.2.5]# cp scripts/makefile.linux makefile
[root@localhost libpng-1.2.5]# make test && make install
[root@localhost libpng-1.2.5]# cd ..
[root@localhost local]#rm -rf libpng-1.2.5*

 특별한 것은 makefile을 configure로 만들지 않고 , 복사한 것 외에는 다른 것이 없습니다.

(3) freetype 2 설치
 글짜를 그릴 때 쓰는 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/freetype-2.1.5.tar.gz
[root@localhost local]# tar xvfz freetype-2.1.5.tar.gz    
[root@localhost local]# cd freetype-2.1.5
[root@localhost freetype-2.1.5]# ./configure && make && make install
[root@localhost freetype-2.1.5]# cd ..
[root@localhost local]#rm -rf freetype-2.1.5* 

(4) libjpeg 설치
jpg 포맷을 다루는 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz
[root@localhost local]# tar xvfz jpegsrc.v6b.tar.gz
[root@localhost local]# cd jpeg-6b
[root@localhost jpeg-6b]# ./configure --enable-shared --enable-static
[root@localhost jpeg-6b]# make && make test 
[root@localhost jpeg-6b]# mkdir /usr/local/man/man1
[root@localhost jpeg-6b]#make install
[root@localhost jpeg-6b]# cd ..
[root@localhost local]# rm -rf jpeg*
 위 설치법에서 특별한 것은 중간에 /usr/local/man/man1이라는 디렉토리를 생성합니다. 이유는 make install 하면 /usr/local/man/man1 디렉토리가 없다고 멘 페이지가 설치가 되지 않는다는 에러가 납니다. 

(5) gd 설치
그래픽 라이브러리 입니다.
[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/gd-2.0.15.tar.gz
[root@localhost local]# tar xvfz gd-2.0.15.tar.gz
[root@localhost local]# cd gd-2.0.15
[root@localhost gd-2.0.15]# ./configure && make && make install
[root@localhost gd-2.0.15]# cd ..
[root@localhost local]#rm -rf gd-2.0.15*

출처: http://www.smbw.net/129

'linux' 카테고리의 다른 글

Juju in ubuntu  (0) 2013.01.08
디렉토리 내 모든 파일에서 특정 문자열 변경하기  (0) 2013.01.05
ftp 보안  (0) 2012.12.19
서버 명령어  (0) 2012.12.12
ubuntu 우분투 한글  (0) 2012.08.16
Posted by Нуеоп

blob_main.html

<html>

<head>

<title>

</title>

</head>

<body>

<h1>Upload new files</h1>

<form action="blob_db.php" method="post" enctype="multipart/form-data">

<div>

<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" />

</div>

</form>

</body>

</html>





blob_db.php

<?

$clear = array();

$clear['tmp_name'] = $_FILES['userfile']['tmp_name'];

$clear['name'] = $_FILES['userfile']['name'];

$clear['size'] = $_FILES['userfile']['size'];

$clear['type'] = $_FILES['userfile']['type'];

$clear['error'] = $_FILES['userfile']['error'];


if( basename($clear['name']) != $clear['name'] ){

echo "fatal error. forbidden file name <br />";

exit;

}


echo $clear['tmp_name'].'<br />';

echo $clear['name'].'<br />';

echo $clear['size'].'<br />';

echo $clear['type'].'<br />';


if( $clear['error'] > 0 ){

echo "error code = [".$clear['error']."]<br />";

}


$db = mysqli_connect('localhost', user, passwd, dbname);

if (!$db) {

echo "Connect failed: " . mysqli_connect_error();

exit();

}



$name = $clear['name'];

$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/upload';

//echo $upload_dir.'/'.$name.'<br />';

//echo nl2br(`ls /tmp -al`);


if( is_uploaded_file($clear['tmp_name'])){

if( move_uploaded_file($clear['tmp_name'], "$upload_dir/$name") ){

echo 'move_uploaded_file succeed <br />';

}

else{

echo 'move_uploaded_file fail <br />';

}

}


//$fp = fopen("$upload_dir/$name", "rb");

//$content = addslashes(fread($fp, filesize("$upload_dir/$name")));

$fname = $upload_dir.'/'.$name;

//fclose($fp);


$query = "INSERT INTO blob_test(name, content) VALUES('$name', '". mysql_escape_string(file_get_contents($fname)) ."');";

$result = mysqli_query($db, $query) or die('fail to query');


mysqli_free_result($result);

mysqli_close($db);


?>



mysql schema

CREATE TABLE IF NOT EXISTS `blob_test` (
  `name` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  `content` blob,
  `key` tinyint(4) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`key`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

'php' 카테고리의 다른 글

php password md5 hash  (0) 2013.02.02
mongodb + rockmongo with php in ubuntu  (0) 2013.01.08
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
xml to json 변환  (0) 2012.12.20
sms 인증보내기 php 소스  (0) 2012.12.19
Posted by Нуеоп

1. PHP 파일 경로 지정자 제거

입력값에 경로 지정자가 있는지 검사한다.
만약 있을 경우를 대비하여, 제거해준다.

../../etc/passwd -> etc/passwd 이런식으로 제거해주는 코드를 작성한다.

basename()를 이용하여, 파일명만 뽑아내자
if( basename($_GET['filename']) == $_GET['filename'] ){

}
else{

}
위 코드는 filename에 다른 파일 경로 지정자가 입력되었는지 검사할 수 있다.



2. PHP 정규 표현식으로 이메일 유효 검사


if( !eregi('^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $email) ){


}

else{


}



3. 줄바꿈 문자열 \n을 HTML <br />로 변경하기


nl2br()



4. 문자열 필터링

addslashes() : 이스케이프가 안되어 있다면, addslashes()를 이용하여 \를 \\로 바꿔주는 함수

stripslashes() : \\를 \로 바꿔주는 함수

get_magic_quotes_gpc() : 자동으로 이스케이프를 해주었는지 검사

htmlspecialchars() 

htmlentities() : 모든 특수문자를 HTML 엔티티로 변환



5. MySQL


데이터베이스 접속

(1) 객체지향 방식

@ $db = new mysqli('localhost', 'users', 'passwd', 'dbname');

(2) 절차지향 방식

@ $db = mysqli_connect('localhost', 'users', 'passwd', 'dbname');


@는 에러를 무시한다는 뜻


데이터베이스 선택

mysql> use dbname;

(1) 객체지향 방식

$db->select_db('dbname');

(2) 절차지향 방식

mysqli_select_db( $db, 'dbname');


질의

(1) 객체지향 방식

$result = $db->query($query);

(2) 절차지향 방식

$result = mysqli_query($db, $query);


질의 결과 행의 수

(1) 객체지향 방식

$num_results = $result->num_rows;

(2) 절차지향 방식

$num_results = mysqli_num_rows($result);


질의 결과 접근

(1) 객체지향 방식

$row = $result->fetch_assoc();

(2) 절차지향 방식

$row = mysqli_fetch_array($result);


접근 방식에 대해서는

$result->fetch_row($result);

mysql_fetch_row($result);

$result->fetch_object();

mysqli_fetch_object();

등을 찾아볼것


데이터베이스 접속 끊기

(1) 객체지향 방식

$result->free();

$db->close();

(2) 절차지향 방식

mysqli_free_result($result);

mysqli_close($db);



서버 루트 경로

echo $_SERVER['DOCUMENT_ROOT'].'<br />';




'php' 카테고리의 다른 글

mongodb + rockmongo with php in ubuntu  (0) 2013.01.08
php file upload 와 mysql blob  (0) 2013.01.02
xml to json 변환  (0) 2012.12.20
sms 인증보내기 php 소스  (0) 2012.12.19
[php] 변수명 앞에는 $를 꼭 붙이자  (0) 2012.11.11
Posted by Нуеоп
2012. 12. 20. 05:07

http://outlandishideas.co.uk/blog/2012/08/xml-to-json/

'php' 카테고리의 다른 글

php file upload 와 mysql blob  (0) 2013.01.02
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
sms 인증보내기 php 소스  (0) 2012.12.19
[php] 변수명 앞에는 $를 꼭 붙이자  (0) 2012.11.11
[php] imagelibrary  (0) 2012.11.09
Posted by Нуеоп
2012. 12. 19. 12:58

<?php

// http:/localhost/sendSMS.php?phone=01022314854

$phone = $_REQUEST['phone'];

$auth = mt_rand(100000,999999);


// 발송 URL

$sms_url = "http://sslsms.cafe24.com/sms_sender.php";


// 계정 정보

$sms['user_id'] = base64_encode("카페24계정");

$sms['secure'] = base64_encode("SMS발송키");


// 메시지 내용

$sms['msg'] = base64_encode("인증번호 : ".$auth);

// 받는 번호

$rphone1 = substr($phone, 0, 3);

$rphone2 = substr($phone, 3, 4);

$rphone3 = substr($phone, 7, 4);

$sms['rphone'] = base64_encode($rphone1."-".$rphone2."-".$rphone3);


// 보내는 번호

$sms['sphone1'] = base64_encode($rphone1);

$sms['sphone2'] = base64_encode($rphone2);

$sms['sphone3'] = base64_encode($rphone3);


// base64_encode 사용시 반드시 1로 세팅할 것

$sms['mode'] = base64_encode("1");


// 경로 설정

$host_info = explode("/", $sms_url);

$host = $host_info[2];

$path = $host_info[3]."/".$host_info[4];


$boundary = "---------------------".substr(md5(rand(0,32000)),0,10);


// 헤더 생성

$header = "POST /".$path ." HTTP/1.0\r\n";

$header .= "Host: ".$host."\r\n";

$header .= "Content-type: multipart/form-data, boundary=".$boundary."\r\n";



// 본문 생성

foreach($sms AS $index => $value){

//echo "sms[$index] : ". base64_decode($value). "<br>";

$data .="--$boundary\r\n";

$data .= "Content-Disposition: form-data; name=\"".$index."\"\r\n";

$data .= "\r\n".$value."\r\n";

$data .="--$boundary\r\n";

}

$header .= "Content-length: " . strlen($data) . "\r\n\r\n";


// 보내기

$fp = fsockopen($host, 80);

    if ($fp) { 

        fputs($fp, $header.$data);

        $rsp = '';

        while(!feof($fp)) { 

            $rsp .= fgets($fp,8192); 

        }

        fclose($fp);

$msg = explode("\r\n\r\n",trim($rsp));

$rMsg = explode(",", $msg[1]);

$Result= $rMsg[0]; //발송결과

$Count= $rMsg[1]; //잔여건수


//발송결과 알림

        if($Result=="success") {

            $alert = "성공";

            $alert .= " 잔여건수는 ".$Count."건 입니다.";

        }

        else if($Result=="reserved") {

            $alert = "성공적으로 예약되었습니다.";

            $alert .= " 잔여건수는 ".$Count."건 입니다.";

        }

        else if($Result=="3205") {

            $alert = "잘못된 번호형식입니다.";

        }


else if($Result=="0044") {

            $alert = "스팸문자는발송되지 않습니다.";

        }

        else {

            $alert = "[Error]".$Result;

        }

}

    else {

        $alert = "Connection Failed";

    }

//echo "<script>alert('".$alert ."')</script>";

echo "201";

?>

'php' 카테고리의 다른 글

php file upload 와 mysql blob  (0) 2013.01.02
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
xml to json 변환  (0) 2012.12.20
[php] 변수명 앞에는 $를 꼭 붙이자  (0) 2012.11.11
[php] imagelibrary  (0) 2012.11.09
Posted by Нуеоп
2012. 12. 19. 12:17

http://www.finebe.com/29


요약

익명의 ftp 사용자가 상위 폴더로 접근 가능한 것을 막고자, vsftpd.conf 에서 chroot_local_user=YES를 세팅해준다.
그러면 ftp 사용자는 홈 디렉토리를 최상위 루트로 인식하게 되어, 더이상 상위 폴더로 접근할 수 없다.



'linux' 카테고리의 다른 글

디렉토리 내 모든 파일에서 특정 문자열 변경하기  (0) 2013.01.05
[펌]zlilb, libpng 등 설치..  (0) 2013.01.03
서버 명령어  (0) 2012.12.12
ubuntu 우분투 한글  (0) 2012.08.16
vim suspend ctrl-z ^z  (0) 2012.08.03
Posted by Нуеоп
2012. 12. 12. 13:16

아파치 서버

# apachectl start

# apachectl stop

# apachectl restart


APM 설치(우분투 12.04기준)

http://kimoppa.tistory.com 참조

사전 작업

# apt-get update


아파치 서버 설치

# apt-get install apache2


MySQL 인증 모듈 및 서버/클라이언트 설치

# apt-get install libapache2-mod-auth-mysql

# apt-get install mysql-server mysql-client

 

dpkg 관련 오류 날 경우

# apt-get update

# apt-get dist-upgrade

혹은

https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/984688

 


php설치

# apt-get install php5 php5-cli memcached php5-curl php5-gd php5-memcache php5-mysql php-apc php5-xsl php5-imap libssh2-php libapache2-mod-php5 php5-xmlrpc php5-intl


아파치 서버 재시작

# /etc/init.d/apache2 restart


MySQL 작동 상태 확인

# netstat -tap | grep mysql

# /etc/init.d/mysql restart


아파치 및 MySQL 디폴트 트렉토리

Apache configuration : /etc/apache2/apache2.conf

Apache root location : /etc/apache2/sites-available/default

MySQL configuration : /etc/mysql/my.cnf

Default Web root : /var/www


phpMyAdmin 설치

http://kimoppa.tistory.com 참조

설치

# apt-get install phpmyadmin


설정파일 수정(다음 두줄 추가)

# vim /etc/apache2/apache2.conf

#Enable phpMyAdmin

Include /etc/phpmyadmin/apache.conf


아파치 서버 재시작

# /etc/init.d/apache2 restart


삭제

# apt-get autoremove phpmyadmin


접속

http://localhost/phpmyadmin



sftp 설치 및 설정

# apt-get install vsftpd

# service vsftpd start



디렉토리 권한

# chmod -R 755 directory

(소유자 rwx 421)(그룹 rwx 421)(방문자 rwx 421)


# chown -R [소유그룹:소유자] [파일명or디렉토리]



데이터베이스

# mysql -uroot -pmypasswd



계정

# userdel -r userid

# adduser userid

# users

# passwd 계정


히스토리 삭제

# history -c

# logout


압축

gzip

# tar cvfz some.tar.gz some

# tar xvfz some.tar.gz


bzip2

# tar cvfj some.tar.bz2 some

# tar xvfj some.tar.bz2



메일 설정

# apt-get install ssmtp

# vim /etc/ssmtp/ssmtp.conf

mailhub=smtp.gmail.com:587

hostname=user@example.com

AuthUser=메일주소

AuthPass=메일비밀번호

UseSTARTTLS=yes

UseTLS=yes

FromLineOverride=yes




'linux' 카테고리의 다른 글

[펌]zlilb, libpng 등 설치..  (0) 2013.01.03
ftp 보안  (0) 2012.12.19
ubuntu 우분투 한글  (0) 2012.08.16
vim suspend ctrl-z ^z  (0) 2012.08.03
vim 소스코드 자동정렬  (0) 2011.11.01
Posted by Нуеоп
2012. 11. 30. 10:48

SafeInt

http://vsts2010.net/530


C++ AMP

http://vsts2010.net/591


류광의 C++0x 이야기

http://occamsrazr.net/tt/tag/C++0x


최흥배의 C++11 슬라이드

http://www.slideshare.net/OnGameServer/boost-c11


김학규의 Elements of Modern C++ style

http://www.lameproof.com/844613


C++ rvalue 레퍼런스

http://itguru.tistory.com/189



multiplatform network programming : asio

multiplatform gpgpu programming : amp


Posted by Нуеоп

http://code.activestate.com/recipes/473810-send-an-html-email-with-embedded-image-and-plain-t/



'python' 카테고리의 다른 글

파이썬 계산 속도 향상 psyco  (0) 2012.07.13
기본 자료형  (0) 2012.05.25
파이썬 개발 환경 구성  (0) 2012.05.23
토큰 분리  (0) 2012.05.21
python ascii character to int, int to ascii character  (0) 2012.05.20
Posted by Нуеоп
2012. 11. 27. 12:10

void SpriteEaseElasticInOut::onEnter()

{

    EaseSpriteDemo::onEnter();

    

    CCSize s = CCDirector::sharedDirector()->getWinSize();

    

    CCActionInterval* move = CCMoveBy::create(3, CCPointMake(s.width-130, 0));


    CCActionInterval* move_ease_inout1 = CCEaseElasticInOut::create((CCActionInterval*)(move->copy()->autorelease()), 0.3f);

    CCActionInterval* move_ease_inout_back1 = move_ease_inout1->reverse();

    

    CCActionInterval* move_ease_inout2 = CCEaseElasticInOut::create((CCActionInterval*)(move->copy()->autorelease()), 0.45f);

    CCActionInterval* move_ease_inout_back2 = move_ease_inout2->reverse();

    

    CCActionInterval* move_ease_inout3 = CCEaseElasticInOut::create((CCActionInterval*)(move->copy()->autorelease()), 0.6f);

    CCActionInterval* move_ease_inout_back3 = move_ease_inout3->reverse();

    

    CCDelayTime *delay = CCDelayTime::create(0.25f);

        

    CCFiniteTimeAction* seq1 = CCSequence::create(move_ease_inout1, delay, move_ease_inout_back1, CCCA(delay), NULL);

    CCFiniteTimeAction* seq2 = CCSequence::create(move_ease_inout2, CCCA(delay), move_ease_inout_back2, CCCA(delay), NULL);

    CCFiniteTimeAction* seq3 = CCSequence::create(move_ease_inout3, CCCA(delay), move_ease_inout_back3, CCCA(delay), NULL);

    

    m_tamara->runAction( CCRepeatForever::create((CCActionInterval*)seq1));

    m_kathia->runAction( CCRepeatForever::create((CCActionInterval*)seq2));

    m_grossini->runAction( CCRepeatForever::create((CCActionInterval*)seq3)); 

}

Posted by Нуеоп

보통 < operator를 이용한다. x라는 데이터가 set에 있는지 없는지 검사를 다음과 같이 한다.

!(x<y) && !(y<x)


그런데 x가 edge를 나타내는 등, 구조체인 경우, less operator를 지정할 수 있다.


typedef struct Edge

{

int v1, v2, w;

bool operator <(const Edge &rhs) const{

bool b = (v1 < rhs.v1 || v2 < rhs.v2);

return (b);

}

} edge;


이렇게 하면 (3, 7) 과 (7, 3)을 비교하는 과정에서 문제가 생긴다.


http://stackoverflow.com/questions/13548472/using-stdset-find-with-struct-data


typedef struct Edge

{

int v1, v2, w;

bool operator <(const Edge &rhs) const{

bool b = v1 < rhs.v1 || (v1 == rhs.v1 && v2 < rhs.v2);

return (b);

}

} edge;


위와 같이 검사해야 제대로 작동한다.


추가로 less와 greater는 다음과 같이 직접 구현할 수 있다. visual studio 2012부터는 less만 기본으로 제공하고 greater등은 제공하지 않는것 같다.


template <class T>

struct _less

{

bool operator()(const T& _Left, const T& _Right) const

{

return (_Left < _Right);

}

};


template <class T>

struct _greater

{

bool operator()(const T& _Left, const T& _Right) const

{

return (_Left > _Right);

}

};



각 컨테이너에서 다음과 같이 선언하여, comparator를 지정할 수 있다.


priority_queue<edge, vector<edge>, _greater<edge> > pq;

set<edge, _less<edge> > s;



별도로 comparator를 지정하지 않으면, less가 default로 지정된다.


priority_queue<edge, vector<edge> > pq;

set<edge > s;






Posted by Нуеоп


for( $i = 0; i<list.count(); i++){

....

}


이렇게 되면 안된다


for( $i = 0; $i<$list.count(); $i++){

....

}


$에 유의하자



'php' 카테고리의 다른 글

php file upload 와 mysql blob  (0) 2013.01.02
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
xml to json 변환  (0) 2012.12.20
sms 인증보내기 php 소스  (0) 2012.12.19
[php] imagelibrary  (0) 2012.11.09
Posted by Нуеоп
2012. 11. 9. 12:26

파일로 부터 png 이미지 객체를 생성

imagecreatefrompng( image_name );


빈 이미지 객체 생성

imagecreatetruecolor( w, h );


src 이미지 객체의 일부를 dst 이미지 객체로 덮어씌움

imagecopyresampled( dst, src, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h );


dst 크기 만큼의 색 객체 생성

imagecolorallocate( dst, r, g, b );


??

imagefill( dst, x, y, color);


imagecopy( dst, src, dst_x, dst_y, src_x, src_y, w, h );


ImageTTFText( dst, fontsize, angle, x, y, color, fontname, text );


imagepng( dst, image_name );


imagedestroy( image );



width, height, type, attr 값 한번에 리턴, type는 숫자

getimagesize( filename );


getimagesize 함수만 봐도 php가 제정신으로 만든게 아니라는걸 알 수 있다.

'php' 카테고리의 다른 글

php file upload 와 mysql blob  (0) 2013.01.02
PHP와 MySQL을 이용한 웹 프로그래밍  (0) 2013.01.01
xml to json 변환  (0) 2012.12.20
sms 인증보내기 php 소스  (0) 2012.12.19
[php] 변수명 앞에는 $를 꼭 붙이자  (0) 2012.11.11
Posted by Нуеоп
2012. 10. 19. 09:52

디비 로그인

[root@localhost ~]# mysql -u username -p password


디비 비번 변경

mysql> set password for root@localhost = password('mynewpassword');


디비 접속자 수

mysql> SHOW PROCESSLIST;

Posted by Нуеоп

1페이지 이상은 안된다.

반드시 폰트 이미지는 1페이지로 구성되어야 한다.


void CCBMFontConfiguration::parseCommonArguments(std::string line)

에서 

    // pages. sanity check

    index = line.find("pages=") + strlen("pages=");

    index2 = line.find(' ', index);

    value = line.substr(index, index2-index);

    CCAssert(atoi(value.c_str()) == 1, "CCBitfontAtlas: only supports 1 page");


부분이 있기 때문이다.

'Cocos2d' 카테고리의 다른 글

CCAction 관리  (0) 2012.11.27
cocos2d-x Sprite의 이미지를 바꾸기  (0) 2012.08.29
cocos2d-x "color type 6"  (0) 2012.08.29
cocos2d-x CCTextureCache::sharedTextureCache()->textureForKey()  (0) 2012.08.28
cocos2d-x addChild()와 onEnter()  (0) 2012.08.24
Posted by Нуеоп
2012. 10. 4. 15:50
Posted by Нуеоп
이전버튼 1 2 3 4 5 이전버튼