function check(){
var n = navigator,
mobilePhones = new Array('iphone','ipod','android','blackberry','windows ce', 'nokia','webos','opera mini','sonyericsson','opera mobi','iemobile','safri'),
uAgent = n.userAgent.toLowerCase(),
type = n.appName,
lang = (type=="Netscape") ? navigator.language : lang = navigator.userLanguage,
href = "";
lang = lang.substr(0,2); // 국가코드에서 앞 2글자만 자름
function nation(lang){
return {
"ko" : "korean.html",
"cn" : "china.html",
"else" : "else.html"
}[lang];
}
href = nation(lang) || nation("else");
for(var i=0;i<mobilePhones.length;i++){
if(uAgent.indexOf(mobilePhones[i]) != -1) {
href = "m."+href;
}
}
return document.location = href;
}
2012년 6월 11일 월요일
2012년 6월 7일 목요일
타 도메인 데이터 불러오기
일반적으로 jsonp을 많이 쓴다
뭐
이 방법외에도 몇가지 있는데
내가 본건
.js 파일은 타 도메인에서 불러오는것도 유연하게 대처 할 수 있다
<script src="example.com/data.jsp"></script>
이런식으로 불러오고
그 파일 안은
window.jsoncallback = {
"aaa":"bbb"
};
이런식으로 전역변수에 담아서 주며 이 데이터를
전역변수에서 받아오는 방법이 있다
jquery를 이용한다면
$.getScript("http://www.example.com/data.jsp",function(){
alert(window.jsoncallback.aaa);
});
이런식으로 불러온 후 사용하면된다
뭐
이 방법외에도 몇가지 있는데
내가 본건
.js 파일은 타 도메인에서 불러오는것도 유연하게 대처 할 수 있다
<script src="example.com/data.jsp"></script>
이런식으로 불러오고
그 파일 안은
window.jsoncallback = {
"aaa":"bbb"
};
이런식으로 전역변수에 담아서 주며 이 데이터를
전역변수에서 받아오는 방법이 있다
jquery를 이용한다면
$.getScript("http://www.example.com/data.jsp",function(){
alert(window.jsoncallback.aaa);
});
이런식으로 불러온 후 사용하면된다
2012년 5월 30일 수요일
ie에서 file path를 fakepath로 못받아올때
스마트 에디터를 적용시키는데
input=file 의 path를 못받아올때가 잇더라
onchange="this.select(); func('','')"
일단 select를 시켜주고
document.selection.createRange().text.toString()
이렇게 하면 경로를 가져온다
input=file 의 path를 못받아올때가 잇더라
onchange="this.select(); func('','')"
일단 select를 시켜주고
document.selection.createRange().text.toString()
이렇게 하면 경로를 가져온다
2012년 5월 24일 목요일
익스플로러 10부터 flash를 따로 설치할 필요가 없다
인터넷 익스플로러10 부터는 flash를 따로 설치할 필요가 없습니다
내장되어있으며 이 라이센스를 microsoft에서 샀다고 하네요
오오미~
내용 참고 : http://www.withinwindows.com/2012/05/23/windows-8-secrets-internet-explorer-10-will-ship-with-adobe-flash/
내장되어있으며 이 라이센스를 microsoft에서 샀다고 하네요
오오미~
내용 참고 : http://www.withinwindows.com/2012/05/23/windows-8-secrets-internet-explorer-10-will-ship-with-adobe-flash/
mssql 이전글 다음글 쿼리
'이전글
Sql1 = "select top 1 brd_seq, title,reg_dt from tbl_board where brd_seq = (select max(brd_seq) from tbl_board where brd_seq < "&seq&")"
'다음글
Sql2 = "select top 1 brd_seq, title,reg_dt from tbl_board where brd_seq = (select min(brd_seq) from tbl_board where brd_seq > "&seq&")"
Sql1 = "select top 1 brd_seq, title,reg_dt from tbl_board where brd_seq = (select max(brd_seq) from tbl_board where brd_seq < "&seq&")"
'다음글
Sql2 = "select top 1 brd_seq, title,reg_dt from tbl_board where brd_seq = (select min(brd_seq) from tbl_board where brd_seq > "&seq&")"
2012년 5월 23일 수요일
[classic asp] 배열 사이즈 지정
배열은 명시적선언과 묵시, 한시적 선언(같은말로 생각하면 됨) 으로 나뉜다
dim aa(5) 이렇게 선언하는건 명시적 선언
redim aa(5) 이렇게 선언하는건 묵시적 선언이다
묵시적 선언이란 사이즈를 지정하지 않고 배열의 이름만 네이밍 하고 실제 사용시 다시
배열의 갯수를 정해주는것을 말한다
만약 배열의크기를 임의의 변수로 지정해주고싶은경우
dim aaa(arrlength) 이런식으로 정해주면
"배열은 정수나상수를 필요로 한다"
는 오류가 발생하게 됩니다
이럴땐 redim aaa(arrlength)를 선언해주면 해결된다
dim aa(5) 이렇게 선언하는건 명시적 선언
redim aa(5) 이렇게 선언하는건 묵시적 선언이다
묵시적 선언이란 사이즈를 지정하지 않고 배열의 이름만 네이밍 하고 실제 사용시 다시
배열의 갯수를 정해주는것을 말한다
만약 배열의크기를 임의의 변수로 지정해주고싶은경우
dim aaa(arrlength) 이런식으로 정해주면
"배열은 정수나상수를 필요로 한다"
는 오류가 발생하게 됩니다
이럴땐 redim aaa(arrlength)를 선언해주면 해결된다
2012년 5월 22일 화요일
2012년 5월 17일 목요일
자바스크립트는 도대체 어디에 넣어야될까요?
일단 넣는 방식은
1.head 사이에
2.body안에
이 두가지로 압축 되어집니다
많이들 head안에 넣어야 된다 생각하고 있는데
제가 여러가지 찾아본 결과 body태그가 끝나는곳 (</body> ) 위에 올려놓길 권장하고 있습니다
대체 왜 여기에 놓길 권장할까요?
이건 http://naradesign.net/wp/2008/05/23/142/
에 있는 설명을 인용하도록 하겠습니다
웹 브라우저는 컴파일형식(한번에 싹~ 해석하고 보여주는 형식)으로 하지 않고,
인터프리터 형식(한줄한줄 읽는 형식)을 사용하고 있습니다.
이 순서대로 하면 <html>태그를 읽고 <head> 태그 밑에 있는 태그들을 읽게되는데 이때 자바스크립트 코드를 만나게 되면
자바스크립트가 전부 읽히기 전까지 아래 있는 모든 태그, 기타 다른 것들이(flash, css, html tag)등이 로드를 멈추게 됩니다.
특히 비동기통신 (ajax)와 같은 것들을 사용하게 되면 더 큰문제가 되겠지요.
이를 해결 하기 위해선
1.
<script type="text/javascript" defer="defer"> 이러한 형식으로 defer태그를 써서 나중에 실행되게 하는 방법이 있습니다
하지만 이건 모든 브라우저에선 지원 되지 않는거같습니다(파이어폭스도 지원하지만 버전 타는것으로 확인됩니다)
2. body 태그 끝나는 위치 위에 적는 방법이 있습니다
근래들어 많이 사용되고 있는 방식이며 이렇게 맨 밑으로 보내줘야 dom element들과 기타 다른 flash 등등 이것저것 자원들을 다운로드 하며 스크립트도 받는 "병렬"적 다운로드가 가능해지기 때문에 실행시간과 렌더링 속도가 월등히 빨라지는것을 느끼실수 있습니다
* defer 속성 : 브라우저에 해당 스크립트는 문서컨텐츠를 생성하지 않는것을 명시함
- 이에따라 문서의 나머지 부분을 먼저 출력하고 스크립트를 처리함
보충 설명!!
위에서 document.ready에 대한 것은 언급하지 않았습니다.
document.ready or head.js(스크립트 병렬적재 플러그인) 을 사용할지라도
html출력이 끝난시점으로 옮겨두는것이 훨씬 빠른것은
http://kwon37xi.egloos.com/4688068 이 링크에서 읽어보시면 아실겁니다
얼추 5~10배정도 빠른거 같습니다
참고사이트 :
1. http://mytory.co.kr/archives/1225 (구글 페이지 스피드의 Defer Loading of JavaScript 항목을 번역한 내용)
2. http://naradesign.net/wp/2008/05/23/142/ (웹 페이지 성능향상을 위한 Javascript 코드의 지연 )
참고보충 사이트 :
1.http://benant.wordpress.com/2009/04/01/documentready%EC%9D%98-%EB%AC%B8%EC%A0%9C%EC%A0%90/ (document.ready사용시의 문제점)
2012년 5월 15일 화요일
javascript ++[[]][+[]]+[+[]] === "10"??
alert(++[[]][+[]]+[+[]] );
result=> "10";
테스트 : http://jsfiddle.net/pakss3/CJ959/
이걸 자바스크립트로 찍으면 왜 "10"이 나올까요?
완전 언어 가지고 장난 친거 같은데 재밌긴 하군요
보니까 stackoverflow에서는 유명한 글인거 같더군요
이걸 다 번역해서 올리긴 좀 그렇고..
젤 상단 답변 소스만 봐도 충분히 이해 되실거라 생각합니다 ~~
result=> "10";
테스트 : http://jsfiddle.net/pakss3/CJ959/
이걸 자바스크립트로 찍으면 왜 "10"이 나올까요?
완전 언어 가지고 장난 친거 같은데 재밌긴 하군요
보니까 stackoverflow에서는 유명한 글인거 같더군요
이걸 다 번역해서 올리긴 좀 그렇고..
젤 상단 답변 소스만 봐도 충분히 이해 되실거라 생각합니다 ~~
2012년 5월 7일 월요일
2012년 4월 15일 일요일
Javascript Chaining Pattern
Javascript Chaining Pattern
<script type="text/javascript">
/*
Title: Chaining Pattern
made by 스티브Park ㅋㅋㅋㅋㅋ
*/
var test = {
val1 : 2
, val2 : 3
, total : 0
, plus : function(){ // 2+3 을 계산하여 total값을 새로 설정
this.total = this.val1 + this.val2
return this;
}
, minus1 : function(){ // total값에 - 2를 뺀 값을 total에 다시 설정
this.total = this.total - this.val1
return this;
}
,alert : function(){ //메시지 출력
alert(this.total);
}
};
test.plus().minus1().alert(); //plus에서 2+3을 더하고 이값을 minus1을 실행함으로써 -2한다 그리고 출력
//좀더 응용한 plus 계산기
var cal = { //계산기
sum : 0 //합을 저장한다
,add : function(){ //인자값을 받아 합친다
var arg = arguments
, argLength = arguments.length
, i = 0;
for (; i < argLength; i+=1){ //받은 인자값을 저장
this.sum += arg[i].parseNum(); // parseNum() : 문자열일 경우 숫자로 변경해 합침
}
return this; //합친 값을 넘김
}
,alert : function(){ //메시지 출력
alert(this.sum);
}
};
Object.prototype.parseNum = function(){ // parseNum() : 문자열일 경우 숫자로 변경해 합침
var num = parseFloat(this);
if( isNaN(num) ) return "0";
return num;
}
cal.add(1,2).add(4).alert(); //1+2 +4 출력 , result = 7
cal.sum = 5; //sum을 5로 다시 셋팅
alert(cal.sum); //sum에 5가 저장된게 보여짐 5출력
cal.add(3,4).add(5).alert(); //sum에 저장된 5 + 3+4 + 5 가 계산됨 17출력
</script>
응용해서 작업 하면 좋을거같다
2012년 4월 12일 목요일
자바스크립트의 호이스팅이란?
자바스크립트의 호이스팅이란?
------------------------------------------------------------
유효영역(scope) 란?
자바스크립트에서 지역변수의 유효영역(scope)는 함수의 블록({}) 레벨에만 국한됩니다.
var x = 1;
console.log(x); 1
if (true) {
var x = 2;
console.log(x); //2
}
console.log(x); //2
이러한 이유로 자바스크립트의 유효영역은 함수 레벨 유효 영역(function-level scope)라고 합니다. 하지만 C언어의 경우 유효영역이 함수에만 국한되지 않습니다.
#include <stdio.h>
int main() {
int x = 1;
printf("%d", x); //1
if (1) {
int x = 2;
printf("%d", x); //2
}
printf("%d", x); //1
}
C언어는 자바스크립트와 다르게 if의 블록도 하나의 유효 영역이 됩니다. 이러한 이유로 C에서의 유효영역은 블록 레벨 유효 영역(block-level scope)라고 합니다.
------------------------------------------------------------
함수 선언문(function declaration)과 함수 표현식(function expression)
자바스크립트에서 함수 선언문과 함수 표현식은 다르다. 다음 코드는 함수 선언문입니다.
function foo() {}
하지만 이것 외에 모든 것은 함수 표현식입니다.
//익명 함수 표현식
var a = function () {
return 3;
};
//익명 즉시 실행 함수 표현식
(function() {})();
//기명 함수 표현식. 이것은 또한 클로저
var a = function bar() {
return 3;
}
//기명 즉시 실행 함수 표현식. 이것은 또한 클로저
(function bar() {
alert('hello!');
})();
이것의 차이는 분명한데 자바스크립트 인터프리터가 함수 선언문을 만나면 부모 함수 vo라는 key-value 공간(Scope공간)에 이 함수 객체를 참조하고 다음과 같은 일을 합니다.
function test( a, b ) {
var c, d;
c = 10;
foo();
//함수 선언문
function foo() {
}
//함수 표현식
d = function bar() {
};
d();
}
인터프리터가 함수의 정의를 해석하는 경우에는 다음과 같이 처리합니다. (완벽하지 않지만 흐름을 이해해주면 좋을 것 같습니다.)
//함수 해석시
test = new; //해쉬맵 생성
test.prototype = new Object();
test.vo = new VO();
test.vo.__parent__ = [부모 함수의 vo 참조. 여기선 window함수의 vo];
test.vo.c = undefined;
test.vo.d = undefined;
test.vo.a = 0;
test.vo.b = 1;
test.vo.foo = <foo>function;
test.arguments = null;
test.this = undefined;
test.vo.__parent__.test = test;
위 과정이 완벽하지 않지만 핵심은 test라는 해쉬맵 인스턴스를 생성하고 프로토타입과 vo 공간등을 만들고 마지막에 부모 함수의 vo에 test라는 키로 생성된 해쉬맵을 값으로 추가하도록 합니다. vo에는 var로 선언된 변수와 인자(arguments) 그리고 내부에 선언된 함수 선언문의 참조가 key-value로 잡히는 것도 확인하세요. 참고로 대신 부모함수인 window의 vo.__parent__는 null입니다. 그래서 이 사실이 프로토체인처럼 스코프 체인의 끝을 의미합니다.
또한 중요한 것은 test 함수 내부에 선언된 함수 선언문과 함수 표현식이 어떻게 해석되는지 눈여겨 봐주세요. 함수 선언문의 경우에는 해석시 바로 vo에 참조되지만 함수 표현식은 그렇지 않습니다. 즉 함수 표현식은 실행 때 해석하고 동작시킨다는 의미입니ㅏ.
실제로 test(3, 4)로 실행하게 되면 test.apply( null, [3, 4] ) 처럼 실행되고 실행 컨텍스트가 window가 되기 때문에 다음과 같은 과정을 거치게 됩니다.
//함수 실행시
EC = window.EC; //실행 컨텍스트(EC)
ECStack.push(EC);
EC = test.vo.clone(); //vo가 복사된다. 그래서 vo가 복잡하면 함수 실행할 때마다 성능에 영향을 줄 수 있다.
EC.arguments = {'0': 3, '1': 4, length:2};
EC.a = EC.arguments[0];
EC.b = EC.arguments[1];
EC.this = window;
(함수실행)
c = 10; //실행시에 vo에 있는 c를 찾아 10을 할당합니다. 만약 vo에 c가 없었다면 vo.__parent__, 즉 window 함수의 vo를 탐색할 것입니다. 이것이 바로 vo로 만들어지는 스코프 체인입니다. 스코프 체인을 통해 발견되지 않으면 객체 프로토타입 탐색이 이뤄집니다.
foo(); //함수 선언문이 실행됨. test함수의 vo객체에 key-value로 참조된 foo함수가 실행되는 것이다.
d = <bar>function;
d(); //함수 표현식이 실행됨. bar함수는 test함수가 실행될 때 해석되고 구동된다.
(함수실행끝)
ECStack.pop();
이렇듯 함수 선언문과 함수 표현식은 인터프리터에 의해 다른 시점에 해석되고 구동됩니다.
------------------------------------------------------------
var 선언
앞서 설명한 대로 함수가 인터프리터에 의해 해석되는 순간 하나의 해쉬맵 인스턴스가 만들어지고 VO 공간이 형성됩니다. 이 때 VO 공간에는 앞서 말했듯이 함수 선언문이 해석되어 참조됩니다. 그리고 또 한가지 참조되는 것은 바로 함수내에 var로 선언된 변수입니다. 함수 블록 레벨에 있는 var a, b; 로 쓰면 이 a, b는 VO 공간에 편입됩니다. 함수 내에서는 a와 b에 값을 할당하고 있지만 이 들 값들은 함수를 해석할 때가 아닌 실행할 때 할당됩니다.
------------------------------------------------------------
호이스팅이란?
함수의 호이스팅은 끌어올리기라고 많이 표현합니다. 즉 함수 내에 정의된 지역변수의 경우 함수 레벨 유효 영역의 어디에 위치하던지 항상 참조할 수 있는 변수가 됩니다. 즉 다음과 같은게 가능합니다.
a = 4;
function foo() {
a = 3;
console.log(a); //3
var a;
}
foo();
var a;가 함수 내에 어디에 위치하던지 함수가 선언이 되면 함수의 유효영역이 블록({}) 내부가 됩니다. 이 a는 위치에 상관없이 지역변수로써 쓸 수 있게되어 호이스팅이라는 말을 씁니다. 정말 지역변수를 끌어올리는 듯하죠.
자바스크립트의 호이스팅 대상은 2가지가 있습니다.
* 함수 선언문(function declaration)
* var 선언문
이것은 반드시 호이스팅 됩니다. 이들은 함수 블록의 중간에 정의 되더라고 항상 함수 머리에 정의된 것처럼 함수가 실행 됩니다. 호이스팅을 언급하기 전에 앞에서 함수 선언문과 var 선언된 변수는 모두 함수의 vo 공간에 함수가 해석될 시에 편입된다고 했습니다. 이제야 호이스팅의 진실을 알게 되었습니다. 결국 호이스팅이란 자바스크립트 인터프리터가 해석할 때 함수의 스코프 영역(vo)에 var로 선언한 변수와 함수 선언문의 참조를 key-value로 잡아주는 것 이상도 이하도 아닙니다. 호이스팅은 단지 끌어올린다는 개념은 너무 추상적인 것이고 불편한 진실인 셈이죠.
좀 더 살펴보지요.
function foo() {
bar();
var x = 1;
}
위 코드는 사실 아래처럼 해석됩니다.
function foo() {
var x;
bar();
x = 1;
}
다음 코드도 볼까요?
function foo() {
if( false ) {
var x = 1;
}
return;
var y = 1;
}
이것도 아래 처럼 해석됩니다.
function foo() {
var x, y;
if( false ) {
x = 1;
}
return;
y = 1;
}
함수의 경우는 어떨까요? 함수 선언문과 함수 표현식을 봅시다.
function test() {
foo(); //TypeError "foo 함수는 없다"
bar(); //"서!"
//함수 표현식
var foo = function() {
alert("달려!");
}
//함수 선언문
function bar() {
alert("서!");
}
}
test();
결국 함수 표현식은 var foo부분만 호이스팅 될 뿐이지 그 정의 자체는 함수 실행 타임에 해석됨을 의미한다.
------------------------------------------------------------
결론
내용이 좀 복잡했을지 모르겠습니다. 호이스팅을 설명하기 위해 언급한 내용들은 호이스팅을 구체적으로 이해시키는 것에 국한되지 않습니다. 그 외에 이론적 지식을 확장하는데 도움이 됩니다.
가령, 함수가 해석될 때 그 함수 내부에 구현되어 있는 함수 선언문이 많아지면 많아질수록 해석하는데 시간이 걸릴 것입니다. 그러므로 함수 선언문이 많으면 실행 초기에 성능 저하를 일으킬 수 있습니다. 그러므로 함수 선언문과 함수 표현식을 적절하게 섞어 잘 쓰셔야 하고요.
또 많은 책들이 [[Scope]] 체인 설명을 많이 하는데… 이것 또한 vo.__parent__ 라는 형태를 통해 체인을 형성한다는 구체적인 설명도 가능합니다.
간단하게 언급되었지만 함수 실행시 실행 컨텍스트(EC)가 운영되는 모습도 일종의 ECStack이라는 스텍 자료 구조에서 관리가 되는 것도 설명이 가능해집니다.
vo에 var 선언 및 인자(arguments)가 많아지만 성능에 저하를 일으킬 수 있다는 것도 알 수 있는데, 이는 함수 실행 때 마다 함수 해석때 만들어진 vo를 vo.clone()을 통해 매번 복사하기 때문입니다. 그래서 var선언 및 인자도 수를 제한시키는게 성능상 이득이 생깁니다.
사실상 자바스크립트에서의 유효 영역 레벨이 함수에 국한 되어 있다는 것도 함수를 해석할 때 var이 모두 vo에 잡힌다는 사실로 설명이 가능해집니다.
클로저가 생성된다는 말도 결국 부모-자식 함수에서 자식이 부모의 var로 선언된 것을 참조할 수 있는 영역이 발생한다는 말인데, 결국 vo의 연쇄가 바로 클로저인 겁니다. ^^
------------------------------------------------------------
참고
[jquery] 배열로 갖고 온 값을 join() 을 적용하고싶을때
[jquery] 배열로 갖고 온 값을 join() 을 적용하고싶을때
처리할때 db에 where in 처리 할때 join으로 합치고 싶을때가 있다
$('input[name='delchk']:checked') 이런식으로 가져오게되면 배열형태로 넘어온다 하지만 오브젝트 join을 쓰려면 오브젝트형으로 바꿔야되기때문에
map 메소드를 써서 바꾸고 사용해야된다
$("input[name='delchk']:checked").map(function(){return this.value}).get().join(",")
2012년 4월 10일 화요일
asp 쌍따옴표 처리
asp 쌍따옴표 처리
json으로 받는데 쌍따옴표 때문에 안받아지면 다음과 같이 처리 하면 된다a_title = rs("a_title")
a_title = Replace(a_title,"""",""")
data uris (데이타 uri스킴)
data uris
데이타 uri스킴이라 읽는거 같습니다.
이것은 이미지같은 외부 데이터를 uri로 표현 하는 방식입니다보통 <img src='/project/wow.jpg' alt='' /> 와 같이 이미지를 불러들입니다
이 이미지를 불러오는 방식에 대해 의문을 갖고 보신적이 있으신가요?
이렇게 데이터를 저장하고 불러오는 방식뿐이 없을까..
다른 방법이 있습니다
그게 데이타스킴 방식입니다
base64 로 인코딩한 data를 src에 직접 넣는 방식입니다
보통은 절대 또는 상대 경로로 불러옵니다.data file이 있는 경로로 지정하여 불러옵니다
하지만 base64로 인코딩 하여
<img width="111" height="79" title="" alt="" src="data:image/gif;base64,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" />
이런식으로 넣어도 나옵니다
http://pakss3.realmind.net/datauris.html (여기서 확인 해 보실수 있습니다)
아래 사이트에서 인코딩하여 넣으면 다른 이미지들도 바로 사용 하실 수 있습니다. http://www.websemantics.co.uk/online_tools/image_to_data_uri_convertor/result/
기본적인 포맷:
data:[<mime type>][;charset=<charset>][;base64],<encoded data>
왜 이걸 사용할까?
가장 큰 이유는 HTTP 요청할 이미지 데이터를 저장함으로써 기본적인 document 크기가 다른 요소(이미지 데이터등 )을 불러올때보다 훨씬 빠르게 요소를 가져올 수 있습니다브라우저 호환성
데이터 URI의는 IE 5-7에서 작동하지 않지만, IE 8에서 지원됩니다.- 이미지를 넣기 위해서는 IE 전용 스타일시트(IE-only stylesheet)를 사용하거나,
- noImage처리 후 좀 더 나은 브라우저를 이용하라 한다
- 아니면 대체방법(링크)을 읽어보고 처리하십시요
중요 사항
- 임베디드 코드의 크기 자체에 의한 자원의 크기보다 약간 큽니다. GZip압축이 도움 됩니다.
- Internet Explorer 8은 32,768 바이트의 가장 낮은 최대 데이터 URI 크기를 가지고 있습니다
- 사이트 모든 데이터를 임베디드 data URIs로 유지하긴 힘들다. 단지 이미지 업데이트하는것은 간편해졌다
- PHP(or PHP as CSS), 를 사용한다면 data URIs를 만들기 쉽다 <?php echo base64_encode(file_get_contents("../images/folder16.gif")) ?>
- 용량이 좀 되는 css파일을 캐시하여 사용하면 도움이 된다. css파일이 50kb로 6개가 있다면 300kb의 한번의 문서를 불러들이면 6번의 request를 절약할 수 있다. 그러나 그게 이미지 파일을 캐시 할지 모르겟지만 css파일 만료일 설정을 해주면 도움이 될 것이다.
- Data URIs는 이미지에 국한되지 않습니다.
참고문서 http://jonraasch.com/blog/css-data-uris-in-all-browsers
writer : 오홍홍 // http://pakss3.blogspot.com/
2012년 4월 9일 월요일
자바스크립트 추상 팩토리 패턴 Dependency injection(의존성 주입) part2
자바스크립트 추상팩토리 패턴
Abstract Factory Dependency injection(추상팩토리 패턴 의존성 주입) part2~
부족한 감이 더 공부해보고 자바스크립트 추상 팩토리 패턴 의존성주입을 다른 방식으로 짜봣습니다.
추상 팩토리 패턴 정의 : 추상적인 인터페이스를 이용하여, 여러가지(다형) 변화 돼는 것들을 세분하 한다.
의존성 주입 : 객체들이 같이 동작할 객체들의 의존성을 생성자 아규먼트와 팩토리 메서드의 아규먼트와 생성되거나 팩토리 메서드에서 리턴된 객체 인스턴스에 설정된 프로퍼티만으로 정의하는 과정이다.
function Wallet(myalert) {
return {
coin : function(coin) {
return function(state) {
alert(coin + state + "없어");
};
},
bill : function(state) {
return alert(myalert + state + " 없어");
}
};
}
var open = Wallet("지갑을 열었지만 \n");
open.bill("지폐가");
var wow = open.coin("동전칸을 뒤져 \n");
wow("호주머니를 뒤져\n");
result1>> "지갑을 열었지만 지폐가 없어"
result2>> "동전칸을 뒤져 호주머니를 뒤져 없어"
Wallet이라는 팩토리 메서드에 필요한 인스턴스("지갑을 열었지만", "지폐가" 등등) 을 주입하는 형식으로 구현하였습니다
실행되는 단계의 소스를 따라가면서 보시면서 조금 이해가 되실거라 생각됩니다 ㅠ
참고 : 개념 (http://yaku.tistory.com/entry/%EC%B6%94%EC%83%81-%ED%8C%A9%ED%86%A0%EB%A6%AC-%ED%8C%A8%ED%84%B4-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A3%BC%EC%9E%85%EC%97%90-%EB%8C%80%ED%95%9C-%EB%82%98%EC%9D%98-%EC%83%9D%EA%B0%81)
자바스크립트 의존성 주입(Dependency-Injection)
자바스크립트 의존성 주입(javascript Dependency-Injection )
var gobchang = { eat : function(soju, mekju){switch (soju + mekju){
case 1 :
alert("아직 괜찮아");
break;
case 2 :
alert("알딸딸해");
break;
case 3 :
alert("기억안나");
break;
default :
alert("지갑잃어버렸어");
}
}
};
function hungry(soju, mekju){
return this.eat(soju, mekju);
}
hungry.call(gobchang, 1, 4);
result>> "지갑잃어버렸어"
자바에 있는 의존성 주입(Dependency-Injection)을 자바스크립트에서도 사용 할 수 있습니다.
위 소스를 보시면 hungry가 eat객체를 내부에서 갖고 있어 gobchang의 eat객체를 대신 할 수 있습니다
editor : 오홍홍 // http://pakss3.blogspot.com/
참 고 : http://creatorw.tistory.com/entry/Javascript-%EA%B0%9D%EC%B2%B4-Dependency-injection%EC%9D%B8%EC%A0%9D%EC%85%98-%ED%95%98%EA%B8%B0
참고사이트에서 보고 비스므리하게 연습해서 해봤습니다 ^^;;
2012년 4월 8일 일요일
2012년 4월 6일 금요일
javascript error 처리 function
자바스크립트 에러시 에러처리 펑션
javascript error function
function OhError(e){var err = "";
for (var i in e) {
err += (i + ' = ' + e[i] + "\n");
}
alert(err);
}
일단 간단하게 ~
사용방법
try{
}catch(e){
OhError(e);
}
이렇게 쓰면 된다!
이렇게 하면 에러를 전부 긁어서 보여준다
==========================================
이건 팁인데 에러를 그냥 넘겨 보내는 방법이다
window.onerror =funciton(){
return true;
}
이러면 에러가 발생되도 그냥 다음으로 넘어간다.
google Project Glass 공개
google Project Glass 공개!!
이게 진짜 가능하긴 한거야??!!
관련 기사들!!
http://www.etnews.com/news/international/2577210_1496.html
관련 동영상
setTimeout? setInterval? Avoid bubbling?
setTimeout, setInterval 버블링 방지(Avoid bubbling)
일반적으로 setInterval은 지정한 시간을 무한 루프 돌리게 된다
잘못쓰게 되면 무한 루프들이 중복되어 사이트가 느려지는 병목현상이 발생될 수 있다
이런걸 방지 하기 위해서는 정확하게 한 변수에 setInterval을 정의 하고 이 변수를 clearInterval
해줘야된다
전역변수 사용의 최소가 성능에 큰 도움을 주는건 알고 있지만 필요할때는 사용해야된다는게
내 지론이다.그래서 전역변수에 담고 이것을 해제 시키면 해결된다.
var loopVal; //전역 루프 변수
function work(){
var i = 0;
if(window[loopVal] == null){
alert("전역변수에 아무것도 없습니다");
}else{ //함수가 실행됐을때만 clear함
alert("전역변수에 setTimeout 이 담겨있습니다");
clearTimeout(window[loopVal]);
}
return function(){
window[loopVal] =
setTimeout(function(){
alert(i);
i += 1;
typeof working === "function" && working();
},3000);
}
};
var working = work();
working();
2012년 4월 5일 목요일
XML attribute builtin entity
xml attribute builtin entity
엔티티는 XML문서를 구성하는 물리적인 저장 단위(storage unit)이다.-XML문서 : 도큐먼트 엔티티(XML 문서의 물리적 자장단위)
-외부 DTD 서브셋 문서 : 외부 DTD 서브셋 엔티티
< | < | less-than |
> | > | greater-than |
& | & | ampersand |
" | " | double-quote |
' | ' | single-quote |
< | < | less-than |
> | > | greater-than |
& | & | ampersand |
" | " | double-quote |
' | ' | single-quote |
빌트인 엔티티
미리 정의 되어 있어, 별도의 엔티티 선언 없이 XML 문서에서 사용 가능한 엔티티를 말한다.
사용불가능 문자 : 대체문자
< : <
> : >
< | < | less-than |
> | > | greater-than |
& | & | ampersand |
" | " | double-quote |
' | ' | & : & single-quote |
& : &
" : "
' : '
[MSSQLl] order by에서 case when then 구문 쓰기
[mssql] order by에서 case when then 구문 쓰기
order by에서도 case 구문은 되지만 desc 정렬 구문까진 안에서 같이 쓸수 없다order by (case when @ord ='aaa' then fieldname desc
when @ord='bbb' then fieldname1 asc
end )
이런식으로 하면 desc 어쩌구 저쩌구 하면서 오류가 생길것이다
구글링해서 찾아보니
Order By case when @ord = 'ccc' then fieldname end ASC,
case when @ord ='aaa' then fieldname1 end DESC,
case when @ord ='bbb' then fieldname2 end ASC,
case when @ord = '' then fieldname3 end ASC
이런식으로 찾아보니 잘 된다 ㅋㅋ
classic ASP 2demension array sort
classic asp 2demension array sortasp 2차원 배열정렬 |
'==============================================
function arraySort( arToSort, sortBy, compareType, direction )
'==============================================
Dim c, d, e, smallestValue, smallestIndex, tempValue
For c = 0 To uBound( arToSort, 2 ) - 1
smallestValue = arToSort( sortBy, c )
smallestIndex = c
For d = c + 1 To uBound( arToSort, 2 )
if compareType = "Text" Then
If direction = "desc" Then
if strComp( CStr(arToSort( sortBy, d )), CStr(smallestValue) ) = -1 Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
Else
if strComp( CStr(arToSort( sortBy, d )), CStr(smallestValue) ) = 1 Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
End If
elseif compareType = "Date" then
if not isDate( smallestValue ) then
arraySort = arraySort( arToSort, sortBy, false)
exit function
else
if dateDiff( "d", arToSort( sortBy, d ), smallestValue ) > 0 Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
end if
elseif compareType = "Number" Then
if clng( arToSort( sortBy, d ) ) < clng(smallestValue) Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
end if
Next
if smallestIndex <> c Then 'swap
For e = 0 To uBound( arToSort, 1 )
tempValue = arToSort( e, smallestIndex )
arToSort( e, smallestIndex ) = arToSort( e, c )
arToSort( e, c ) = tempValue
Next
End if
Next
arraySort = arToSort
end function
productEvList = arraySort (productEvList, orderbyNum, "Text", "desc" )
function arraySort( arToSort, sortBy, compareType, direction )
'==============================================
Dim c, d, e, smallestValue, smallestIndex, tempValue
For c = 0 To uBound( arToSort, 2 ) - 1
smallestValue = arToSort( sortBy, c )
smallestIndex = c
For d = c + 1 To uBound( arToSort, 2 )
if compareType = "Text" Then
If direction = "desc" Then
if strComp( CStr(arToSort( sortBy, d )), CStr(smallestValue) ) = -1 Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
Else
if strComp( CStr(arToSort( sortBy, d )), CStr(smallestValue) ) = 1 Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
End If
elseif compareType = "Date" then
if not isDate( smallestValue ) then
arraySort = arraySort( arToSort, sortBy, false)
exit function
else
if dateDiff( "d", arToSort( sortBy, d ), smallestValue ) > 0 Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
end if
elseif compareType = "Number" Then
if clng( arToSort( sortBy, d ) ) < clng(smallestValue) Then
smallestValue = arToSort( sortBy, d )
smallestIndex = d
End if
end if
Next
if smallestIndex <> c Then 'swap
For e = 0 To uBound( arToSort, 1 )
tempValue = arToSort( e, smallestIndex )
arToSort( e, smallestIndex ) = arToSort( e, c )
arToSort( e, c ) = tempValue
Next
End if
Next
arraySort = arToSort
end function
productEvList = arraySort (productEvList, orderbyNum, "Text", "desc" )
2012년 4월 4일 수요일
javascript dateformat 변경
javascript dateformat 변경
2012/04/12 -> 04/12이런식으로 변경한다
그냥 전역에 prototype으로 붙였다.. 귀찮아서..
String.prototype.dateformat = function(){
var dateData = this
, dateArr = dateData.split(",")
, i = 0, result = [];
if( dateArr[0] == "" ) {
return "01/01";
}else{
for (i in dateArr){
result.push(dateArr[i].slice(5));
}
}
return result.join(",");
};
"2012/12/12".dateforma() 이런식으로 사용하면된다
2012년 4월 2일 월요일
확장자 체크 스크립트 (Extension check javascript)
확장자 체크 스크립트 (Extension check javascript)
function checkExt(filechange)
{
var IMG_FORMAT = "\.(bmp|gif|jpg|jpeg|png)$";
if(!(new RegExp(IMG_FORMAT, "i")).test(filechange.val()) ){
alert("이미지 파일(bmp|gif|jpg|jpeg|png)만 첨부하실 수 있습니다. ");
filechange.replaceWith(filechange.clone(true));
}
}
ex> <input type='text' onchange='checkExt($(this))' />
[javascript] setTimeout, setInterval antipatterns
[javascript] setTimeout, setInterval antipatterns
var obj = function(){console.log('1min');
};
setTimeout(obj,300);
이건 안티패턴이다
obj는 무기명 함수 표현식이다.
반환되는건
console.log('1min');
가 반환되는것이 아닌
function(){
console.log('1min');
};
이것이 반환된다
그러므로 이 함수가 바로 실행되지 않고 포인터만 전달하고 나중에 실행될수도 잇다
In the old broswer HTML5 Element (elements)
In the old broswer HTML5 Element (elements) javascript
익스 9 이전 브라우저 체크
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
first, a newbie makes css
성능이 괜찮다
2012년 3월 30일 금요일
JAVASCRIPT Amount of paste comma, 천단위 콤마붙이기
금액에 천단위 콤마붙이기(javascript)
Amount of paste comma(javascript)
숫자형(Number)
Number.prototype.format = function(){if(this==0) return 0;
var reg = /(^[+-]?\d+)(\d{3})/; var n = (this + '');
while (reg.test(n)) n = n.replace(reg, '$1' + ',' + '$2');
return n;
}; // 문자열 타입에서 쓸 수 있도록 format() 함수 추가
문자형(String)
String.prototype.format = function(){var num = parseFloat(this);
if( isNaN(num) ) return "0";
return num.format();
};
exec)
var aa = 987654321
,aa = aa.format();
console.log(aa);
result)
==> 987,654,321
2012년 3월 29일 목요일
자바스크립트 배열 판별법
자바스크립트 배열 판별법 (javascript adjudge Array)
javascript adjudge Array
배열은 typeof 연산자를 사용하면 "object"가 반환됩니다alert(typeof [10, 13]); //"object"
배열도 객체이니 이것은 틀린말이 아니지만 그리도움이 되지 않습니다.
length를 이용하거나 slice()를 사용 하여 판별 할 수 있지만 배열과 객체가 똑같으면
어떤식으로 구분할 방법이 없습니다.
instanceof Array를 사용할수 있지만 IE에서 안먹히는 버전도 있어 제약이 생깁니다.
ECMAScript 5에서는 Array.isArray()라는 새로운 메서드가 정의되었다. 이 메서드는 인자가 배열이면 true를 반환합니다.
alert(_array.isArray([1,2])); //true;
Array.isArray({name:"park","time":10}); //false반환
이런 방법도 있습니다
object.prototype.toString()을 사용하면 배열일경우 [object Array]가 반환이 됩니다
객체면 [object, object]가 반환이 됩니다
2012년 3월 27일 화요일
javascript get random number
I want to have a random number five
랜덤 숫자 5개를 찾는 소스
javascript Source implementation
var ranNum = 0
, ranVar = {}
, randomi = 0
do{
var ranNum1 = Math.floor(Math.random() * 8) + 1;
for (var k = 0; k < ranNum+1; k++)if (ranVar[k] == ranNum1 ){
ranNum = false;
}
if(ranNum != false || ranNum != "undefined"){
ranVar[ranNum] = ranNum1;
ranNum = ranNum + 1;
}
}
while (parseInt(ranNum,10) < 5); //랜덤숫자 5개만 배열로 가져옴
alert(ranVar[4]);
made by park
2012년 3월 26일 월요일
javascript 에서 사용권한이 없습니다 오류
javascript 에서 사용권한이 없습니다 오류
eee.com 에 서브 도메인을 받아 쓰는 ccc.eee.com 사이트에서 작업을 할때
javascript 에서 사용권한이 없습니다 오류가 발생할 수 잇다
이럴때
document.domain = "eee.com";
넣어주면 된다
2012년 3월 24일 토요일
datepicker 기본 셋팅, 달력 아이콘 위치, 달력위치
datepicker 기본셋팅,
달력 아이콘 위치, 달력 위치 조정
$.datepicker.regional['ko'] = {
closeText : '닫기',
prevText : '이전달',
nextText : '다음달',
currentText : '오늘',
monthNames : ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort : ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
dayNames : ['일', '월', '화', '수', '목', '금', '토'],
dayNamesShort : ['일', '월', '화', '수', '목', '금', '토'],
dayNamesMin : ['일', '월', '화', '수', '목', '금', '토'],
weekHeader : 'Wk',
dateFormat : 'yymmdd',
firstDay : 0,
isRTL : false,
showMonthAfterYear : false,
yearSuffix : '년',
showOn: 'both',
buttonImage: '/images/main/search/btn_cale.gif',
buttonImageOnly: true
};
$.datepicker.setDefaults($.datepicker.regional['ko']); //default셋팅
$("#txt_prodStart" ).datepicker();
$('img.ui-datepicker-trigger').css({'cursor':'pointer', 'margin-left':'5px'}); //아이콘(icon) 위치
$('.ui-datepicker ').css({ "margin-left" : "141px", "margin-top": "-223px"}); //달력(calendar) 위치
$('img.ui-datepicker-trigger').attr('align', 'absmiddle');
jquery layout accordion !
jquery layout accordion
jquery의 레이아웃 아코디언 플러그인이다
http://layout.jquery-dev.net/downloads.cfm
다운은 위에서 받을수 잇고 아래는 데모 페이지이다
http://layout.jquery-dev.net/demos/accordion.html
이런식으로 나오며 저 중간중간 마다 틈으로 위로 땡겻다 내렷다 할 수 잇다
이거만 잇으면 더 없이 퍼블리싱 고민하지 않고 작업 할수 있을거 같은 .. 생각이 든다 ~~
jquery ui 에서 테마를 불러와 적용도 할 수 있고 그리 무겁지 않아보여 앞으로 프로젝트 할때 한번은 써먹을 수 있을까 생각이다,.
피드 구독하기:
글 (Atom)
블로그 보관함
-
▼
2012
(39)
-
►
4월
(18)
- Javascript Chaining Pattern
- 자바스크립트의 호이스팅이란?
- [jquery] 배열로 갖고 온 값을 join() 을 적용하고싶을때
- asp 쌍따옴표 처리
- data uris (데이타 uri스킴)
- 자바스크립트 추상 팩토리 패턴 Dependency injection(의존성 주입) part2
- 자바스크립트 의존성 주입(Dependency-Injection)
- 구글 애드센스 수익금 지급받기 동영상
- javascript error 처리 function
- google Project Glass 공개
- setTimeout? setInterval? Avoid bubbling?
- XML attribute builtin entity
- [MSSQLl] order by에서 case when then 구문 쓰기
- classic ASP 2demension array sort
- javascript dateformat 변경
- 확장자 체크 스크립트 (Extension check javascript)
- [javascript] setTimeout, setInterval antipatterns
- In the old broswer HTML5 Element (elements)
-
►
4월
(18)