15대 16대 대통령 추모 배너

Developer2010/01/19 11:55
서로 다른 환경에서 개발된 CSS와 JS를 이용할 때 인코딩에 주의할 필요가 있습니다.
이를 해결하기 위해서 CSS에 인코딩을 정의해주고, JS의 경우 파일을 불러올 때 인코딩을 설정해줍니다.

CSS
@charset 'EUC-KR';
body {
    color:#333;
}
Javascript
<script type="text/javascript" src="script.js" charset="EUC-KR"></script>


참조 :
저작자 표시 비영리 동일 조건 변경 허락
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer/Video Encoding2009/07/16 12:45

ffmpeg-php 함수를 이용해 썸네일을 추출할 때 발생할 수 있는 오류 입니다.

일단 기본적으로 아래 환경이 설정되어져 있어야 합니다.


php.ini

ffmpeg

ffmpeg-php version               0.6.0-svn

ffmpeg-php built on               Jul 16 2009 10:12:33

ffmpeg-php gd support          enabled

ffmpeg libavcodec version     Lavc1d.51.38.0

ffmpeg libavformat version      Lavf1d.51.10.0

ffmpeg swscaler                   diabled

gd

GD Support                          enbled

GD Version                          2.0 or higher

FreeType Support                 enabled

FreeType Linkage                 with freetype

FreeType Version                 2.3.5

T1Lib Support                      enabled

GIF Read Support                enabled

GIF Create Support              enabled

JPG Support                        enabled

PNG Support                       enabled

WBMP Support                    enabled

 

ffmpeg_frame() 클래스의 toGDImage() 를 이용해 GDImage를 생성하면,

failed to convert frame to gd image

에러로 생성할 수 없습니다.

 

이 문제는 0.5.3 이하 버전에서는 문제가 없었던 것 같습니다.

ffmpeg-php-0.6.0 으로 업그레이드 되면서 몇가지 문제들이 발생하네요.

(resize(), crop() 함수는 0.6.0 버젼에서 제외되었습니다. : http://ffmpeg-php.svn.sourceforge.net/viewvc/ffmpeg-php/trunk/ffmpeg-php/ChangeLog?view=markup)

 

 

원인은 ffmpeg_frame.c 파일의 버그였습니다.

(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=496079)

 

ffmpeg-php-0.6.0.tar.bz2 파일의 압축을 풀고

ffmpeg-php.c 파일을 수정합니다.

 

ffmpeg_frame.c (수정 전)

for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        if (gdImageBoundsSafeMacro(dest, x, y)) {
            // copy pixel to gdimage buffer zeroing the alpha channel
            dest->tpixels[y][x] = src[x] & 0x00ffffff;
        } else {
            return -1;
        }
    }

    src += width;
}

 

ffmpeg_frame.c (수정 후)

if(width > dest->sx || height > dest->sy){
    return -1;
}

for (y = 0; y < height; y++) {
    for (x = 0; x < width; x++) {
        // copy pixel to gdimage buffer zeroing the alpha channel
        dest->tpixels[y][x] = src[x] & 0x00ffffff;
    }
    src += width;
}

 

수정 후 설치하면, 문제가 해결됩니다..^^

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer/CakePHP2009/07/15 21:56

프로젝트를 진행하면서 각 개발자의 계정(도메인)정보를 config 파일에 기록하여 각각 관리하는데,

CakePHP에서는 APP디렉토리 마다 config/core.php 를 만들어서 필요한 파일을 기록하고 있습니다.

core.php

Configure::write(‘hosts’, array(
	'WWW' => 'http://www.minseop.com',
));

 

문제가 된 부분은 Javascript 였습니다.

Javascript 에서도 이런 사용자별 호스트 정보를 이용할 경우가 있지요.

그냥 js 파일을 만들어서 기록하고,

layout 에 담아두면 문제는 없습니다.

하지만, 관리적인 면에서 비효율적이라는 생각이 들었습니다.

 

이를 해결하기 위해 PHP에서 이용할 수 있는 하나의 방법입니다.

 

index.php

<script type="text/javascript" src="/js/extend.php"></script>

 

extend.php

<?php
header('content-type:application/x-javascript');
$message = 'Javascript Test';
echo("document.write('{$message}')\n");
?>

 

이렇게 이용하면 외부 파일을 불러와서 이용하는 것이 가능해 집니다.

 

CakePHP에서 이 방식을 이용하면,

Configure Class를 이용하기 위해 너무 많은 라이브러리가 필요했습니다.

 

아니면, hosts Array 만 따로 파일을 만들어서 core.php와 extend.php에서 공동으로 이용할 수도 있습니다.

하지만 개별적으로 관리해야 하는 파일이 하나 추가되는 부분이 조금 걸리네요..^^;;

 

 

그래서, 다른 방법으로 Javascript를 위한 컨트롤러를 생성할 수 있습니다.

exjs_controller.php

<?php
class ExjsController extends AppController {
	var $name = 'Exjs';
	var $uses = null;
	var $autoRender = false;
	var $autoLayout = false;

	function index() {
		header('content-type:application/x-javascript');
		$hosts = Configure::read('hosts');
		foreach ($hosts as $k => $v) {
			echo "var HOST_{$k} = '{$v}';\n";
		}
	}
}
?>

 

index.php

<script type="text/javascript" src="/exjs/"></script>

 

이런 방법으로 Javascript와 PHP에서 이용할 수 있는 config파일을 쉽게 관리할 수 있습니다.

또한, hosts 외에도 다른 설정 값을 이용할 수 있다는 장점도 있네요.^^

 

 

 

참조 :

http://www.javascriptkit.com/javatutors/externalphp.shtml

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer/Video Encoding2009/07/10 10:45

ffmpeg-php-0.6.0 컴파일 중에 발생되는 에러입니다. (Ubuntu)

0.6.0 하위버전 에서도 같은 문제가 나타날 수 있으며 해결방법은 똑같습니다.

 

/usr/local/src/ffmpeg-php-0.5.3/ffmpeg_frame.c: In function ‘zif_toGDImage’:
/usr/local/src/ffmpeg-php-0.5.3/ffmpeg_frame.c:448: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)
/usr/local/src/ffmpeg-php-0.5.3/ffmpeg_frame.c: In function ‘zif_ffmpeg_frame’:
/usr/local/src/ffmpeg-php-0.5.3/ffmpeg_frame.c:533: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)
make: *** [ffmpeg_frame.lo] Error 1

 

ffmpeg-php 컴파일 시 PIX_FMT_RGBA32 에러 발생으로 컴파일이 안되면,

 

아래 명령을 실행합니다.

perl -i -p -e ’s/PIX_FMT_RGBA32/PIX_FMT_RGBA/g;’ ffmpeg_frame.c

 

다시 컴파일을 시도하면 문제가 해결됩니다…^^

 

 

출처 : http://blog.hostonnet.com/ffmpeg-php-error-pix_fmt_rgba32

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer2009/07/08 10:44
vim scp://remoteuser@server.tld//path/to/document

 

호스트주소 뒤에 // 를 붙이면 절대 경로 파일에 접근도 가능합니다.

 

해당 호스트에 직접 접속해서 편집하는편이 가장 빠르지만,

 

가끔 참조나 복사를 간단하게 이용할 경우 유용하게 이용할 수 있습니다.

 

 

참조 :

http://vim.wikia.com/wiki/VimTip337

http://vim.wikia.com/wiki/Edit_remote_files_locally_via_SCP/RCP/FTP

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
TAG vim
Developer2009/04/07 17:22

trac-admin (프로젝트 저장소) (옵션) (추가옵션)

 

 

프로젝트 백업 : trac-admin /home/trac/malltb2 hotcopy /home/trac/opentb

 

Repository 가 변경되면,

resync 명령으로 저장소를 변경합니다.

 

(이걸 몰라서 cp –R 로 복사해버렸던..^^;;;;)

 

저장소 변경 : trac-admin /home/trac/opentb resync

 

1. 프로젝트 명을 지정하고,

2. 저장소를 선택하고,

3. repository 경로를 설정하면, 끝…^^

 

 

나머지 옵션들도 이런 식으로 사용하는 것 같습니다.

 

자세한 내용은 help…

 

trac-admin help

trac-admin help (옵션)

 

 

http://trac.edgewall.org/wiki/TracAdmin

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer2009/04/07 11:53

SQL 파일로 MySQL 데이터 Insert

 

$ mysql –h (호스트) –u (아이디) –p (패스워드) (데이터베이스) < (파일명)

Enter Password :

 

(우편번호 49988건을 일일이 손으로 할뻔했다…… ㅡㅡ;)

 

Shell 과 DB Table의 캐릭터형식이 다를 경우,

SET NAMES 를 이용해 쿼리 문자열을 설정해줍니다.

 

UTF-8 로 Shell에 접속한 후, sql 파일 상단에

 

SET NAMES euckr;

 

만 적어주면, EUC-KR로 Dump 됩니다.

 

 

참고로,

Table 복사는 복사할 테이블을 만들어주고, 기존 테이블에서 데이터를 복사합니다.

 

mysql> CREATE TABLE (사본테이블명) ………;

mysql> INSERT INTO (사본테이블명) SELECT * FROM (원본테이블명);

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
TAG dump, MySQL
Developer/SVN/Git2009/03/26 11:22
Subversion repository에 저장된 UTF-8 문자열을 받을때 현재 locale의 인코딩이 UTF-8이 적용되어 있어야 합니다.
예를들어, locale이 en_US로 설정되어 있으면 한국어로 커밋된 파일을 받을 수 없습니다. 
 
현재 locale 확인
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C/C/C/C/C/C"
 
사용중인 계정의 locale을 UTF-8로 변경 후 업데이트(또는 체크아웃)를 실행합니다.
 

참고

http://www.juretta.com/log/2007/05/09/svn_can_t_convert_string_from_utf-8_to_native_encoding_/

http://svnbook.red-bean.com/en/1.2/svn.advanced.l10n.html

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer2009/03/26 11:20
$ export LC_CTYPE=ko_KR.UTF-8
$ locale
LANG=
LC_COLLATE="C"
LC_CTYPE="ko_KR.UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C/ko_KR.UTF-8/C/C/C/C"
 
export 를 이용하면 로그인 된 상태에서만 적용됩니다.
 
현재 계정에 로그인할 때마다 적용하려면
쉘 설정파일(.cshrc, .bash_profile)에 기록합니다.
 
csh

setenv  LANG ko_KR.UTF-8
setenv  LC_ALL ko_KR.UTF-8

 

bash

export LANG=ko_KR.UTF-8
export LC_ALL=ko_KR.UTF-8

 

 

 

참조

locale 을 UTF-8 로 변경하려면 : http://www.igotit.co.kr/zbxe/BRD_LINUX/205

리눅스 한글설정관련_locale : http://www.opensourcekorea.org/?doc=bbs/gnuboard.php&bo_table=Tips&wr_id=170

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
TAG locale, UTF-8
Developer2009/03/11 15:46

며칠 전 코딩을 하다가 shell_exec()에서 문제가 발생했었습니다.

$result = shell_exec(‘ls –al’);

echo $result;

라고 하면 파일 목록이 화면에 출력되는데..

 

$command = '…… command blah blah …‘;

$result = shell_exec(‘$command’);

echo $result;

라고 하면 아무것도 출력되는 것이 없었습니다.

원인은 바로 따옴표..

 

vim 설정이 되어 있지 않아서 color 구분이 안되어 지나친 것입니다.

작은 따옴표( ‘ )는 안에 들어있는 내용은 모두 string으로 인식하고,

큰 따옴표( “ )는 안에서 변수를 찾아 냅니다.

 

$result = shell_exec(“$command”); 또는 $result = shell_exec($command);

으로 작성해야 shell_exec()함수가 $command 명령을 수행하게 됩니다.

 

이런 특성 때문에 PHP 성능에도 영향을 미친다고 합니다.

문자열에 변수가 삽입될 경우 큰 따옴표를 사용할 수 있지만,

삽입된 변수가 없을 경우 작은 따옴표를 사용하는 것이 좋다고 합니다…^^

 

사용 예)

$value = ‘문자열’ . $var . ‘문자열’;

$value = “문자열 {$var} 문자열”;

 

 

참조 :

php 최적화 팁 : http://blog.ohmynews.com/hjlee222/

유용한 PHP성능 개선을 위한 팁 : http://www.xpressengine.com/study_php/1504400/page/4

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer/Video Encoding2009/03/11 15:10

Mencoder 설치 후 H.264 인코딩을 위해 구글에 공개된 podencoder 스크립트를 사용했습니다.

이 스크립트를 이용하기 위해 몇 가지 라이브러리를 추가로 설치해야 했습니다.

 

파일다운로드

wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz

wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20090310-2245.tar.bz2

wget http://downloads.sourceforge.net/gpac/gpac-0.4.5.tar.gz

 

다운로드 된 파일의 압축을 풀어줍니다.

 

faac 설치

http://sourceforge.net/projects/faac/

./configure && make && make install

 

x264 설치

http://www.videolan.org/developers/x264.html

git 을 이용해 다운로드 할 수 있고 매일 업데이트되는 Tarball을 받을 수 있습니다.

 

다운로드 된 디렉토리에서 컴파일 후 설치합니다.

./configure && make && make install

 

MP4Box 설치

http://gpac.sf.net/

configure 에 실행권한을 적용하고 설치합니다.

chmod 755 configure

./configure && make && make install

 

Mencoder 설치

설치된 faac와 x264 라이브러리를 추가한 후 설치합니다.

./configure –-enable-jpeg –-enable-faad –-enable-faac-lavc –-enable-x264-lavc

make && make install

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337
Developer/Video Encoding2009/03/10 13:55

This howto is written for Ubuntu 8.10 and is verified to work on 8.2.2009.

 

I found numerous tutorials on this subject out there but they all failed me, but combination of them all was successful. So fallowing is made from 10 different tutorials.

And for all those who will ask why not just apt-get php5-ffmpeg, answer is so we can configure ffmpeg with libs and options we need.

 

 

준비

apt-get update
apt-get upgrade
apt-get install libjpeg-progs libjpeg62 libjpeg62-dev libsdl1.2-dev php5-dev php5-cli php5-gd build-essential unzip

 

파일 다운로드

cd /usr/local/src

wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2  

wget http://rubyforge.org/frs/download.php/17497/flvtool2-1.0.6.tgz  

wget http://easynews.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz  

wget http://superb-west.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.6.0.tbz2  

wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz  

wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz  

wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2  

wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2  

wget http://downloads.xiph.org/releases/theora/libtheora-1.0beta3.tar.gz

 

압축해제

tar zxvf lame-3.97.tar.gz  

tar zxvf libogg-1.1.3.tar.gz  

tar zxvf libvorbis-1.2.0.tar.gz  

tar zxvf flvtool2-1.0.6.tgz  

tar jxvf essential-20071007.tar.bz2  

tar jxvf ffmpeg-php-0.6.0.tbz2  

bzip2 -cd amrnb-7.0.0.2.tar.bz2 | tar xvf -  

bzip2 -cd amrwb-7.0.0.3.tar.bz2 | tar xvf -  

tar zxvf libtheora-1.0beta3.tar.gz 

 

Ruby on Rails, Subversion & ncurses 설치

apt-get install subversion ruby libcurses-ruby

 

Mplayer, FFmpeg 다운로드

저장소에서 체크아웃 받은 후 최신버전으로 업데이트합니다.

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg  

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer  

cd /usr/local/src/mplayer  

svn update

 

코덱 복사

mkdir /usr/local/lib/codecs  

mv /usr/local/src/essential-20071007/* /usr/local/lib/codecs/  

chmod -R 755 /usr/local/lib/codecs/ 

 

임시 디렉토리(TMP) 생성

mkdir /usr/local/src/tmp  

chmod 777 /usr/local/src/tmp  

export TMPDIR=/usr/local/src/tmp

 

라이브러리 설치

각 디렉토리에서 컴파일 후 설치합니다.

./configure && make && make install

  1. lamemp3 설치
  2. libogg 설치
  3. libvorbis 설치
  4. AMR 설치
  5. libtheora 설치

 

flvtool2 설치

cd /usr/local/src/flvtool2-1.0.6/  

ruby setup.rb config  

ruby setup.rb setup  

ruby setup.rb install 

 

Mplayer & Mencoder 설치

{주의} H.264 인코딩 시 x264 라이브러리를 설치한 후 추가해야 합니다. : Mencoder Shell Script와 라이브러리 추가

cd /usr/local/src/mplayer

./configure --enable-jpeg

make && make install

 

FFmpeg 설치

cd /usr/local/src/ffmpeg/  

./configure --enable-libmp3lame --enable-libvorbis --disable-mmx --enable-shared --enable-libamr-nb --enable-libamr-wb --enable-nonfree --enable-libtheora  

make  

make install

 

{주의} 설치도중 라이브러리를 찾을 수 없는 에러가 발생할 수 있습니다. 이 경우 심볼릭 링크를 통해 라이브러리 경로를 지정해 줍니다.

ln -s /usr/local/lib/[YOUR LIB NAME] /usr/lib/[YOUR LIB NAME]

 

FFmpeg-php 설치

cd /usr/local/src/ffmpeg-php-0.6.0/  

phpize  

./configure --with-ffmpeg=/usr/local/ffmpeg  

make  

make install 

 

php.ini 에 모듈을 추가한 후 웹 서버를 다시 시작합니다.

echo 'extension=ffmpeg.so' >> /etc/php5/apache2/php.ini  

/etc/init.d/apache2 restart

 

 

 

 

원문 : http://www.hazaah.com/ubuntu/how-to-ffmpeg-ffmpeg-php-lame-libogg-libvorbis-flvtool2-mplayer-mencoder-amr/

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 슈팅스타337