Posted
Filed under 프로그래밍
imagemagick은 사용이 좋다
쉘에서 convert를 실행하는게 language에 extension해서 사용하는것보다 빠르다.

GD는 더 빠르다.
하지만 EXIF정보를 가져갈수 없기때문에 EXIF정보가 필요하면 별차이 없다

이미지 리사이징 테스트를 해보았다
240KB짜리 621x700 사이즈를 200x200으로 리사이징만 하는거다

* imagemagick
1개 (0.34741306304932)
100 개 (17.569828033447)

* GD
1개 (0.053716897964478)
100 개 (2.6152718067169)


GD가 확실히 빠르다.
하지만 리사이징 퀄리티가 imagemagick보다 떨어진다는게 중론이다.
근데 속도 차이가 너무 난다.

퀄리티? 스피드?

GD : 메모리에 올려 작업을 하기때문에 메모리의 제약이 있다
작은용량에서는 빠르나 큰이미지는 느려지거나 메모리 오버플로우가 발생할수도 있다


http://www.baschny.de/graphic-test/
http://jamesarmes.net/blog/2009/03/php-image-benchmarks-gd-vs-image-magick
http://www.rubblewebs.co.uk/imagemagick/compair.php
http://dreamfall.blogspot.com/2008/02/php-benchmarks-gd-vs-imagemagick.html


2012/08/23 14:14 2012/08/23 14:14
Posted
Filed under 프로그래밍/PHP
eAccelerator 를 사용하면 정말 효과가 있을까?
CodeIgniter일명 CI를 테스트 해보니 DB사용이 없는 MVC모델을 가진 노멀한 페이지에서 약 3메가 정도의 메모리를 사용하고 있다.

방문자1명이 2M라고 치면 4G정도의 메모리를 가진 서버는 동접1천 정도?
여기에 DB 모듈이나 기타 모듈이 올라가면 메모리를 늘리든 서버를 늘리든 해야한다.

PHP는 인터프린터 언어라 매번 페이지를 컴파일하는데 eAccelerator는 컴파일 해놓은걸
저장해 활용하는 일종의 캐싱이다

당연히 첫번째 불러올때는 정상 컴파일을 하기때문에 원래의 리소스만큼을 사용한다.

CI의 enable_profiler를 사용해서 측정했다.

eAccelerator 적용전
Total Execution Time : 0.0369
MEMORY USAGE : 2,832,528 bytes
eAccelerator 적용후
Total Execution Time : 0.0136
MEMORY USAGE : 621,792 bytes



eAccelerator 기본설정만으로도 훌륭하다.
벤치마킹 수치가 보여주고 있으니 별도의 설명은 안하겠다.

2012/08/23 13:58 2012/08/23 13:58
Posted
Filed under 프로그래밍

location = /favicon.ico { 
  return 204;
  access_log    off;
  log_not_found off;
}
location = /robots.txt { 
  return 204;
  access_log    off;
  log_not_found off;
}


전부 따로 써줘야 한다!!!!!

2011/11/02 11:31 2011/11/02 11:31
Posted
Filed under 프로그래밍
현재 접속해 있는 서버의 AWS정보를 가지고 와야 하는 경우가 있다
아마존 메뉴얼이 잘되어있긴하지만 좀 복잡해서 찾아보기가 힘들다

여튼...

http://docs.amazonwebservices.com/AWSEC2/2007-03-01/DeveloperGuide/AESDG-chapter-instancedata.html


Request
http://169.254.169.254/latest/meta-data/

Response
ami-id
ami-launch-index
ami-manifest-path
instance-id
hostname
local-ipv4
public-keys/
reservation-id
security-groups

예) 현재 접속한 EC2의 instance id 가져오기
http://169.254.169.254/latest/meta-data/instance-id

2011/11/01 16:54 2011/11/01 16:54
Posted
Filed under 프로그래밍
AWS EC2 인스턴트중 라이센스비용이 없는 아마존 리눅스 t1.micro의 경우
메모리도 613메가 밖에 안되고 처음 띄우면 swap메모리 조차도 없다
이것저것 깔고 뭐할라고 하면 메모리가 부족하다고 나올수 있는데
아래와 같이 swap을 추가하는 방법으로 해결하자

터미널에서 아래와 같이 실행
128MB 만큼 스왑파일이 생긴다
SWAPFILE=/mnt/swapfile.swap
dd if=/dev/zero of=$SWAPFILE bs=1M count=128
mkswap $SWAPFILE
swapon $SWAPFILE


아래 쉘을 만들면 편하다
vi /etc/init.d/swapfile

#! /bin/sh
# chkconfig: - 92 92
#
# Some things that run always go here
# Carry out specific functions when asked to by the system

case "$1" in 
   start)
     echo "Starting swapfile "
     swapon /mnt/swapfile.swap
     ;;
  stop)
     echo "Stopping swapfile"
     swapoff /mnt/swapfile.swap
     ;;
  restart|reload|force-reload)
    echo "Restarting swapfile"
    swapoff /mnt/swapfile.swap
    swapon /mnt/swapfile.swap
    ;;
  *)
    echo "Usage: /etc/init.d/swapfile {start|stop}"
    exit 1
   ;;
esac
exit 0



아래처럼 시동시 올라올수 있게 지정해주고
ntsysv 에서 체크해주자
chkconfig --add swapfile
2011/10/25 19:16 2011/10/25 19:16
Posted
Filed under 프로그래밍/PHP

아마존 S3 PHP 주요코드

$response = $s3->list_objects('bucket', array( 
    'prefix' => 'FD/',
 'max-keys' => 1000000
)); 
  
var_dump($response->isOK()); 
print_r($response->body);

하위에 있는 모든 파일을 표시
max-keys는 몇개를 화면에 뿌릴건지를 표시 default 는 1000이다

$response = $s3->delete_all_objects('bucket','/FD\/000000000000/');

정규식을 이용한 삭제
위의 예제는 지정 디렉토리 하위까지 몽땅 삭제

$response = $s3->delete_object('bucket', 'FD/1.jpg');

한개만 삭제

$response = $s3->copy_object(array('bucket' => 'bucket','filename' =>'1.jpg'),array('bucket' => 'bucket','filename' => 'FD/2.jpg'));  

모모에서 모모로 복사

  $s3->batch()->create_object('bucket','FD/2.jpg', array(
   'fileUpload' => './3.jpg',
   'acl' => AmazonS3::ACL_PUBLIC,
  ));
  $file_upload_response = $s3->batch()->send();

파일을 S3에 전송
acl 권한을 줘야 외부에서 파일에 접근 할수 있다.

2011/10/18 11:01 2011/10/18 11:01
Posted
Filed under 프로그래밍

ssh 관련 명령 실행시 but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT! 이 화면에 떠도 사용에 문제가 있는건 아니니 걱정마삼

2011/10/14 16:29 2011/10/14 16:29
Posted
Filed under 프로그래밍
pem 인증서를 아마존에서 다운받는다.
pem인증서에 퍼미션 0600 을 준다.

아래와 같이 접속하면 된다.

ssh -i xx.pem root@xxx.xxx.amazonaws.com

응용하면 scp도 아래처럼 가능하다

scp -i xx.pem a.jpg root@xxx.xxx.amazonaws.com:/home/xxxx


2011/10/12 14:58 2011/10/12 14:58
Posted
Filed under 프로그래밍
# 사용 방법
[ code ] [ /code ] 사이에( " [ "와 " code ", " code "와 " ] " 사이에 띄워쓰기 사용 않함 ) 출력할 코드를 넣어주면 자동으로 신택스 하이라이트가 적용됩니다. 기본값 [ code ] 는 C++코드를 신택스 하이라이트로 출력하며 [ code CShap ], [ code Java ], [ code lua ] 등 해당 언어에 대한 식별자를 지정하여 신택스 하이라이트를 적용시킬 수 있습니다.

언어 식별자
ActionScript3 as3, actionscript3
Bash/shell bash, shell
ColdFusion cf, coldfusion
C# c-sharp, csharp
C++ cpp, c
CSS css
Delphi delphi, pas, pascal
Diff diff, patch
Erlang erl, erlang
Groovy groovy
JavaScript js, jscript, javascript
Java java
JavaFX jfx, javafx
Perl perl, pl
PHP php
Plain Text plain, text
PowerShell ps, powershell
Python py, python
Ruby rails, ror, ruby
Scala scala
SQL sql
Visual Basic vb, vbnet
XML xml, xhtml, xslt, html, xhtml
2011/10/08 12:40 2011/10/08 12:40
Posted
Filed under 프로그래밍

yum clean all
살짝쿵 때려준다

2011/09/08 15:41 2011/09/08 15:41
Posted
Filed under 프로그래밍/PHP
function _deg2rad($deg)
{
        $radians = 0.0;
        $radians = $deg * M_PI/180.0;
        return($radians);
}


function geoDistance($lat1, $lon1, $lat2, $lon2, $unit="k")
{
        $theta = $lon1 - $lon2;
        $dist = sin(_deg2rad($lat1)) * sin(_deg2rad($lat2)) + cos(_deg2rad($lat1)) * cos(_deg2rad($lat2)) * cos(_deg2rad($theta));
        $dist = acos($dist);
        $dist = rad2deg($dist);
        $miles = $dist * 60 * 1.1515;
        $unit = strtolower($unit);
        
        if ($unit == "k") {
                return ($miles * 1.609344);
        } else {
                return $miles;
        }
}
2011/09/05 11:35 2011/09/05 11:35
Posted
Filed under 프로그래밍

텍스트큐브에서 제공한 샘플 설정 자체 버그임 (//rewrite.php 호출)
set $rewrite_base '/'; 에서 set $rewrite_base ''; 으로 / 만 빼면 정상 작동함

  set $rewrite_base '';
  if (!-f $request_filename) {
    rewrite ^(thumbnail)/([0-9]+/.+)$ cache/$1/$2;
  }
  if ($request_filename ~* ^(cache)+/+(.+[^/])\.(cache|xml|txt|log)$) {
    return 403;
  }
  if (-d $request_filename) {
    rewrite ^(.+[^/])$ $1/;
  }
  rewrite  ^(.*)$ $rewrite_base/rewrite.php last;

2011/08/31 15:59 2011/08/31 15:59
Posted
Filed under 프로그래밍
* nginx.conf 의 주요 환경설정

- CPU수만큼 지정 (듀얼코어는 2)
worker_processes  2;

- gzip압축전송 트래픽절감에 도움
gzip on;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

- 서버에 전송할수 있는 최대용량
client_max_body_size 100M;
2011/08/31 15:57 2011/08/31 15:57
Posted
Filed under 프로그래밍

nginx + php-fpm 조합으로 프로그램을 돌리다보면 간혹
502 Bad Gateway 오류가 나올때가 있다 이건 버퍼가 모자라서 나는 오류로

fastcgi_params 파일을 열어 아래내용을 추가하거나 수정한다
빨간부분이 영향 받는 부분이다.

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;

fastcgi_buffers 256 16k;
fastcgi_buffer_size 32k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

2011/08/30 15:50 2011/08/30 15:50
Posted
Filed under 프로그래밍

기본적으로 nginx는 전송할수 있는 용량이 1m다
파일을 보내거나 할때 Request Entity Too Large 오류가 대부분 날텐데
nxginx.conf 설정을 수정해주면 된다.

아래 라인을 server { 에 추가하자
client_max_body_size 100M;

2011/08/30 12:15 2011/08/30 12:15