April Breeze is blowing...

1 2 
알바-_-로 크롤링 작업을 하고 있는데 이상하게 몇몇 페이지만 내용을 긁어오지 못하길래 확인을 해보니
내용이 많이 긴 페이지에서만 그런 현상이 있었다.

그래서 찾아보니,
pcre.backtrack_limit 라는 설정이 있고, 이 값을 늘려야 길이가 긴 문자열도 처리가 가능해지게 돼있었다.

다행히 ini_set 에서 변경가능해서 웹호스팅 계정에서도 적용가능하고,
작업할 페이지에만 일시적으로 적용도 가능하다.

Default value는 100000(100KB) 이고, 0 하나만 더 붙여도 왠만한 페이지 작업하는데 무리는 없을듯.

아래 링크는 구글링해서 찾은 페이지.
http://www.kavoir.com/2009/12/php-regular-expression-matching-input-subject-string-length-limit.html





...그런데, 알바 하던건 strpos, substr 등으로 처리해서 해결해버렸음-_-...




2010/03/27 11:32 2010/03/27 11:32
2010/03/27 11:32
Category dev.

ajaxian.com - WTFJS, firejune.com - WTFJS(젠장할 자바스크립트), ajaxian.kr - WTFJS: “string” instanceof String 에 언급된
WTFJS(왓 더 삐-_- JS)의 아래 예문을 보고 이것저것 테스트를 해보니 또 재미있는게 있어서 대충 정리를 해봤습니다.

"string" instanceof String; // false.

이걸 좀 바꿔보면 아래처럼도 쓸 수 있습니다.

String('string') instanceof String // false
typeof String('string') // string
-> new를 안붙였기 때문에 역시나 false가 나옴. 일반적인 함수 실행하고 string을 리턴받는 형식으로 보임.

그런데,
Object('string') instanceof String // true
이렇게 new를 안붙이고 Object()를 쓸때는 또 true 가 나옵니다-_- new를 붙여도 마찬가지로 true.

new String('string') instanceof String // true
typeof new String('string') // object
-> 요게 당연히? 맞는 케이스이고, String은 Object에서 파생된 클래스라서 typeof에 object가 나오는 것까지는 좋은데,

var a = new Object('blah')
a instanceof String // true
-> 이렇게 거꾸로 됐음에도 true가 나옵니다. 클래스 상속 개념과는 전혀 안맞음-_-

String뿐만 아니라 Number, Boolean, Array, Function, RegExp 등의 'Global Objects'의 'Basic Data Type' 에도 동일하게 적용이 돼서
인자의 타입과 맞는 object가 생성이 돼버립니다. (단, Date는 제외)

참고 : Javascript Instanceof, Standard global objects (By type)




하여간, 자바스크립트라는 놈은 뭔가 독특해서 더 재미있는듯...ㅋ...

2010/02/16 05:15 2010/02/16 05:15
2010/02/16 05:15
Category dev.
Tag
Javascript 에서는
var a = { x: 1, y: 2 } 라고 정의하면
a.x 또는 a['x'] 둘 다 사용가능하지만, PHP 에서는 당연히 안된다.

PHP 에서 배열로 정의하고 객체처럼 쓰고 싶을때는
Standard PHP Library (SPL)ArrayObject 를 사용하면 가능하다.
(PHP 5 이상에서 지원함)

$arr = array('a' => 1, 'b' => 2);
$arrObj = new ArrayObject($arr);
$arrObj->setFlags(ArrayObject::ARRAY_AS_PROPS);
echo $arrObj->a; // 1
위에서 세번째줄이 배열의 key를 객체의 property로 사용가능하게 해주는 역할을 한다.

...제목에는 '객체처럼 쓰기'라고 했지만, '객체로 변환해서 쓰기'가 맞긴하다.


2010/02/12 03:52 2010/02/12 03:52
2010/02/12 03:52
Category dev.
CSS3의 border-radius 속성은 코너를 둥글게 해주는 아주 유용한 속성이지만
아직 정식(?)으로 지원하는 브라우저는 없는 것 같고, (있나...-_-)
FF는 -moz-border-radius
Chrome과 Safari는 -webkit-border-radius 라는 속성으로 지원을 하고 있습니다.
역시나... IE는 지원을 안하구요-_-

그런데,
IE에서 이것을 가능하게 해주는 스크립트가 있어서 테스트를 해봤는데 IE6,7,8에서 비교적 잘 작동하네요.
(아래 테스트 페이지의 Quarter Circle은 제대로 안되는것 같음..)

DD_roundies 라는 라이브러리이고,
IE의 VML을 이용해 border-radius 를 구현하게 돼있습니다.
(제작자는 DD_belatedPNG 를 만든 사람이기도 하구요.)



** 테스트 페이지는 아래 링크를 참고했음


ps.
테스트 페이지 제일 아래 Tooltip 에 백그라운드 컬러를 줬더니 IE8 에서는 여백이 생겨버리네요.
DD_roundies 홈페이지에는 IE8은 무지하게 느리다고도 나와있고...


2010/02/09 12:09 2010/02/09 12:09
2010/02/09 12:09
Category dev.

PHP Framework인 CodeIgniterProfiler는 디버깅에 유용한 아래의 정보를 제공해줍니다

  • URI STRING
  • CLASS/METHOD
  • MEMORY USAGE
  • BENCHMARKS
  • GET DATA
  • POST DATA
  • DATABASE QUERY
단, HTML 페이지의 하단에 표시되는 방식이라서 페이지가 깨질 수 있고,
AJAX 요청인 경우 응답 처리를 정상적으로 하지 못할 수가 있습니다.

그래서 디버깅용으로 많이 사용하는 FirePHP에 출력하도록 Profiler를 수정해봤습니다.


[ 첨부 파일 ]

다운로드

FirePHP.php
http://www.firephp.org/DownloadRelease/FirePHPLibrary-FirePHPCore-0.3.1에서 받을 수 있는
FirePHP.class.php와 동일하며 파일명만 바꿨습니다.

Profiler_for_FirePHP.php
CI의 기본 라이브러리인 Profiler를 FirePHP에 맞게 수정한 파일입니다.


[ 설치 방법 ]

(FirePHP 설치방법은 많이 알려져있는 내용이므로 생략합니다.)

1. 첨부한 두개의 파일을 /application/libraries에 복사합니다.
2. CI 기본 라이브러리인 Output.php_display() 메소드 일부분을 아래와 같이 수정합니다.
  • 256~269번째 줄 주석처리 : if ($this->enable_profiler == TRUE) 블럭 내부
  • 주석처리한 곳에 아래 코드 추가

$CI->load->library('Profiler_for_FirePHP', '', 'profiler');
$CI->profiler->run();

※ CI 기본 라이브러리를 수정하지 않을려면 Hook을 이용해서 _display()를 override하는 방법도 있습니다.
아래 링크의 display_override 를 참고하시기 바랍니다.
http://codeigniter.com/user_guide/general/hooks.html


[ Screenshot ]

각 항목마다 테이블로 구성했으며, 항목명을 클릭하면 내용이 나옵니다.






※ PHP4 에서는 Profiler_for_FirePHP.php 의 14번째줄을 아래와 같이 수정해야합니다.

function Profiler_for_FirePHP()

2010/01/13 19:21 2010/01/13 19:21
2010/01/13 19:21
Category dev.
1 2 
전체 (108)
calm (48)
passion (3)
Bicycle (30)
music (7)
dev. (12)
misc. (8)
Today 45 / Yesterday 71
Total 40227