MPoD 용 이미지파일 추출 스크립트

Note 의견이 없습니다 »

임시로 대충 짜집기하여 만든것.

<?php
require_once('getID3/getid3/getid3.php');
 
$folderName = "/var/www/Music/".urldecode(dirname($_SERVER['QUERY_STRING']));
 
$d = dir($folderName);
while(false !== ($entry = $d->read())) {
	if( $entry == '.' || $entry == '..' ) continue;
	if( isMusicFile($entry) ) {
		getImage($folderName.'/'.$entry);
		$d->close();
		exit;
	}
}
$d->close();
 
function getImage($filename) {
	$getID3 = new GetID3;
	$getID3->option_tag_id3v2 = true; # Don't know what this does yet 	
	$getID3->option_tags_images = true;
	$getID3->analyze($filename);
 
	$cover = null;
	$mimetype = null;
 
	if (isset($getID3->info['id3v2']['APIC'][0]['data'])) {
	    $cover = $getID3->info['id3v2']['APIC'][0]['data'];
	} elseif (isset($getID3->info['id3v2']['PIC'][0]['data'])) {
	    $cover = $getID3->info['id3v2']['PIC'][0]['data'];
	} elseif (isset($getID3->info['comments']['picture'][0]['data'])) { // for m4a 
		$cover = $getID3->info['comments']['picture'][0]['data'];
		$mimetype = $getID3->info['comments']['picture'][0]['image_mime'];
	}
 
	if( !$mimetype ) {
		if (isset($getID3->info['id3v2']['APIC'][0]['image_mime'])) {
		    $mimetype = $getID3->info['id3v2']['APIC'][0]['image_mime'];
		} else {
		    $mimetype = 'image/jpeg'; 
		}
	}
 
	if (!is_null($cover)) { 
		header("Content-Type: " . $mimetype); 
		if (isset($getID3->info['id3v2']['APIC'][0]['image_bytes'])) { 
			header("Content-Length: " . $getID3->info['id3v2']['APIC'][0]['image_bytes']); 
		} 
		echo($cover); 
	}
}
 
function isMusicFile($filename) {
	$tmp = pathinfo($filename);
	if( $tmp['extension'] == 'm4a' || $tmp['extension'] == 'mp3' ) return true;
	else return false;
}
?>

Singleton pattern in PHP

Development 의견이 없습니다 »

오늘 RSS를 훓어보다 자주가는 개발자 커뮤니티에 다음과 같은 질문이 올라온것을 보았다.

“PHP에서의 Singleton pattern”

마침 몇일전 새로온 개발자와 singleton pattern에 대해 이야기했기에 아래와 같이 답변을 달았다.

질문

알맞게 Singleton pattern을 쓰면 퍼포먼스가 향상되는걸로 알고있습니다.
그런데 PHP는 request마다 자동으로 thread를 할당시키므로 Memory Sharing이 안되는걸로 아는데요,
Singleton pattern이 의미가 있나요?

나머지 계속 읽기 »

Goodbye 2010

Note 의견이 없습니다 »

딱 1년전 “Goodbye 2009″ 를 포스팅했던 때가 기억난다.
바로 지금 이자리에서 키보드를 두드리던 기억이 이리도 생생한데 벌써 일년이 지났다니! 하긴 지난 365일을 돌아보면 짧지만은 않은 해 였던것 같기도 하다. 빠듯한 프로젝트들, 새로운 분야로의 사업확장, 무엇보다 재환이의 탄생. 어떻게 보면 정신은 없었지만 가장 안정스럽고 열심히 보낸 한해가 아닌가 싶기도 하고..

작년과 마찬가지로 나에게있어 2010년은 어떤해였는지 잠깐 생각해보는 시간을 갖어보자.
나머지 계속 읽기 »

IE 버전별 CSS 적용하기

Development 의견이 없습니다 »

웹이 널리 보급된 이유를 개발자 입장에서 찾으라면 html, css와 같은 비교적 간단한 문법과 jsp, php, asp 같은 server-side 언어의 발전을 들 수 있을것이다. 하지만 이 모든것의 배경에는 제작과 사용을 간단하게 만든 플랫폼이 있고, 이것이 바로 웹브라우저이다. 하지만 이런 개방성 만큼 여러 종류의 브라우저가 발전하면서 호환성문제가 대두되었고 이는 다시 개발자로 하여금 양날의 칼로 머리를 쥐어짜게 만들었다.
크게 보면 1. 서로 다른 종류의 브라우저와의 호환성 2. 같은 브라우저의 버전별 호환성 으로 나눌 수 있는데 이 두가지 모두에 있어 최고의 골치는 두말할것 없이 Internet Explorer, IE 다. 특히 10살이나 먹은 IE6은 웹개발자에게는 “악마” 같은 존재이다.

이런 IE에서 버전별로 다르게 보여지는 문제를 해결하기 위한 가장 효율적인 방법은 문제가 있는 부분만 브라우저에 맞게 수정하는 방법이다.
즉, 페이지를 표준에 맞게 작성한 후 브라우저별로 테스트 한 후 특정 브라우저에서 문제가 발생하면 그 브라우저에서만 별도로 제작해둔 css를 읽어 재정의되어 수정하도록 하는 방법이다. 아래는 IE 특정 버전별로 파일을 로딩하는 방법이다.
나머지 계속 읽기 »

재환아 100일 너무 축하해

My Life 의견이 없습니다 »

의학이 발달하지 않고 의료서비스를 제대로 받지 못했던 옛날에는 순산을 했더라도 아기 사망률이 높았다고 한다. 선천적인 이상이나 약한 면역력때문에 어느 기간동안 특별히 조심해야 했고, 그 기간이 지나면 어느정도 안심을 하며 살아있음을 축하했다는 그날. 이 날이 바로 우리가 당연히 여기는 100일이다. 요즘이야 워낙 의학이 발달해있고 부모들 역시 많은 교육을 받았기에 “생존” 을 축하하는것은 큰 의미는 없을터, “100″ 이라는 숫자 자체에 의미를 두고 하는것 같긴하다. 어찌되었든 우리 재환이도 이렇게 100일을 이 세상에 나와 어였한 유아가 되었다. 그것도 잔병치레없이 아주 건강하게!
나머지 계속 읽기 »

WP Theme & Icons by N.Design Studio
Entries RSS Log in