2007년 7월 11일 수요일

fileSize

IE에만 해당하는 얘기지만 파일을 업로드하기 전에 document나 image의 파일 사이즈를 알려주는 속성이 있습니다. fileSize가 그 속성인데요.
document.fileSize   // 해당하는 html 페이지의 size를 리턴합니다.
document.images[i].fileSize   // document.images를 통해서 접근하는 image의 fileSize를 알 수 있습니다.
quirksmode에서는 document.fileSize + document.images[0..length].fileSize를 합한 값을 페이지의 총 크기로 계산하더군요. (혹시나 싶어서 덧붙이지만, images[0..length].fileSize가 값을 가지고 오는 것은 아니구요. -쉬운 표기를 위해서- images의 루프를 돌면서 각 image의 fileSize를 가지고 와야합니다.)

출처: quirksmode의 File size

National Genographic의 결과..

족보가 정확하다는 것을 새삼 깨닫게 되었다.. -_-;;;

사용자 삽입 이미지

클릭하시면 크게 볼 수 있습니다.


아프리카에서 서남아시아, 중동을 거쳐 동북아시아 중국으로 들어오게 됩니다. (같은 계통으로 미얀마, 중국, 타이완 사람들이 같은 계통이더군요.)

제가 성이 의령 옥씨인데 시조는 당나라에서 건너온 옥진서님 이십니다. (from 네이버 백과사전)
시조는 당()나라 사람 옥진서()인데 당나라에서 재사() 여덟 사람을 고구려에 파견할 때 그 중 한 사람으로 나와서 뒤에 신라에서 의춘군()에 봉해졌다고 한다...
족보가 맞군요 ^^b
오랜 시간과 비싼 비용이 들었지만 즐거웠던 탐험이었던 것 같습니다.

출처:
네이버 백과사전 옥(玉)

[메모] 루비로 특정사이트를 스크랩하기에 대한 생각?

친구인 H군(사이트 운영자입니다.)이 '스팸 때문에 골치아퍼~'라고 투덜투덜 되길래 루비로 스크래퍼(?)를 만들면 어떨까 하고 고민을 하다가 조사를 좀 해봤습니다. 

기본적인 아이디어는 다음과 같습니다.
  1. 사이트의 주소를 인자로 받습니다.
  2. 사이트의 html을 읽어옵니다.
  3. html에서 http://로 시작되는 주소를 추출합니다.
  4. 해당 주소가 스팸주소인지를 비교합니다.
    1. 스팸주소인 경우 해당주소를 삭제 대상으로 기억해 놓습니다.
    2. 해당 주소가 운영 사이트의 하위 사이트면 해당 주소로 이동 후 3,4의 과정을 반복합니다.
아주~ 단순한 프로그램이라서 금방되겠지 생각을 했답니다만.. 쉽지가 않더군요. (세상일이 만만하겠습니까?)

1생략하고 2의 부분은 Net::HTTP.start(url) {|http| response=http.get('index.html')} 을 사용하여 페이지를 요청한 다음의 response를 얻어냅니다. 그리고, response.body를 통해서 페이지의 각 라인을 얻어옵니다.

여기에서 정규표현식을 써서 http://로 된 주소를 얻어옵니다. 이 주소를 이용해서 다시 탐색에 들어가거나 스팸여부를 비교하기 위한 수단으로 사용합니다.

주소를 얻는 부분은 쉽긴한데 html을 파싱해서 어떤 데이타를 얻어야할지 필요한데이타를 어떻게 가져와야할 지가 애매하더군요. 공식적인 html 파서는 없는 듯 했습니다. (검색 결과 몇개 나오는 것은 있더군요. RAA-html-parser2, JavaScript파서도 있더군요.)

결론은... 여기까지.. 역시 같이 뭔가를 같이할 사람이 필요한 시점인 것 같군요 ^^

관련자료

2007년 7월 10일 화요일

[메모]루비로 프로그램 짜면서 실수했던 것들

TinyMCE의 jstrim으로 js파일들을 통합하려고하니 다음의 문제가 있었습니다.
  • 합쳐야할 js파일들의 목록을 xml파일로 따로 관리해야한다.
  • 에러나는 경우 어디에서 에러가 발생하는 지 알수가 없다.
  • (그리고 개인적인 사정) C#을 봐야 소스를 볼 수 있다. (-_- 귀차니즘~)
이러한 이유로 루비로 뚝딱뚝딱 프로그램을 만들어 보았습니다. 프로그램의 동작은 단순합니다.
  1. php파일을 읽어들입니다.
  2. <? if($isDebug) { ?> 에서부터 <?} else {?>까지의 script태그를 가진 라인들에서 src의 주소를읽어 들입니다.
  3. <?} else {?> 에서부터 <?} ?>까지의 script태그를 읽어들입니다.
  4. 2의 파일목록들을 3의 파일에 합쳐서 배포합니다.
아주 단순한 프로그램입니다만 짜는 과정에서 다음과 같은 에러로 고생을 했습니다.
  • String 변수와 String 변수를 +연산자로 합치는 경우 (변수가 nil 이 될 때 에러가 나더군요.)
  • Ruby 프로그램은 Block없이 프로그램을 짤 수 없다.
  • File.open()으로 파일을 여는 경우 인자로 받는 경로가 절대 경로가 아니면 에러가 발생한다.(File.expand_path()로 절대 경로를 알 수 있다.
이런 노력(?)끝에 허접 프로그램이 나왔습니다. 돌기는 잘 도는 군요 - .-)//

허접이지만.. 오랜만에 포스팅을 위해서 올려봅니다.

more..

2007년 7월 4일 수요일

YAHOO의 Module Pattern

큰 골격은 다음과 같습니다.모듈인 myModule을 통해서만 (public속성에) 접근이 가능합니다.

YAHOO.myProject.myModule = function(){}();

이 function() 안에 return을 추가한다.

YAHOO.myProject.myModule = function(){

return {

myPublicProperty: ""   // public property가 된다.

myPublicMethod: function() {}   // public method가 된다.

}

}();

public property/method들은 return된 hash를 통해서 접근이 가능한 public 속성이 됩니다.

※ 마지막에 ()를 사용하여 anonymous를 실행시키고, 이를 myModule을 통해서 접근하게 합니다. 

 여기에 function()안에 property와 method를 정의한다.

YAHOO.myProject.myModule = function(){

  var privateProperty;   // private property가 된다.

  var privateMethod = function() {}   // private method가 된다.

return {

myPublicProperty: ""  // public property가 된다.

myPublicMethod: function() {} // public method가 된다.

}

}();

밖에서 봤을 때 private property/method는 접근할 수 없지만 public속성 (return되는 hash)에서는 closure를 통해서 접근이 가능하게 됩니다. private속성을 감추고 public 속성만을 접근하게 함으로서 Global variables are evil원칙을 훌륭하게 지키게 해줍니다.

Module Pattern은 privatge속성과 public 속성을 나누는것이 목적입니다.

출처 : Yahoo! User Interface Blogl의 Module Pattern

[css] overflow-x, -y

overflow:scroll을 사용하면 수직,수평방향으로 스크롤바가 모두 생기기 때문에 보기가 안좋은 경우가 있습니다. 이런 경우에는 overflow-x, overflow-y를 사용하세요. 수직 또는 수평 한쪽 방향만 스크롤 출력이 가능합니다.

w3 문서를 보니
'Overflow' is a shorthand for 'overflow-x' and 'overflow-y'. It sets both to the same value.
라고 되어 있네요 =. =;;

출처 : CSS3 module in w3.org


P.S. Safari에서는 overflow-x, overflow-y가 설정이 되지 않더군요. overflow:auto로 설정하는 경우 x 또는 y축 방향으로 자동적으로 설정됩니다. {overflow:auto; overflow-x:hidden; overflow-y:auto;}로 설정하면 Safari나 다른 브라우져에서도 y축방향으로만 설정되게 됩니다.

2007년 7월 1일 일요일

오픈마루 1st DevDay 참석 후기

사용자 삽입 이미지
오픈마루 1st DevDay에 참석하고 돌아왔습니다. 재미있었습니다. ^^b ;;;
이창신님Lightweight MVC Platform에 새 인증 방식Google Gears로 날개를 달자라는 세션을 들었는데요.

준비를 해야하는 부분이 있는걸 몰라서 따라가는데 힘들었습니다만.. 재미있더군요 ^^
(조만간 정리를 해서 올리겠습니다.)

세미나를 들으면서 부러운 것도 많더군요. 애플리케이션에 대한 고민이라던거 Mashup에 대한 고려 등등..
저는 언제쯤이면 저정도 될 수 있을까.. 갈길이 참 먼것 같습니다. -_-;;

(조만간.. 제대로 정리해서 올릴께요 (__))