모든 자바스크립트는 실행환경에서 전역 객체(global object)가 존재한다.

변수에 값을 assign 할 경우 var 선언을 하지 않으면 전역 변수로 생성된다.


myglobal = "hello";    // 안티패턴 myglobal : 암묵적 전역 변수
console.log(myglobal);           // "hello"
console.log(window.myglobal);    // "hello"
console.log(window["myglobal"];  // "hello"
console.log(this.myglobal);      // "hello"


실수하기 쉬운 전역변수 선언

function sum(x, y) {
	// 안티 패턴 result : 암묵적 전역
	result = x + y;
	return result;
}

//안티패턴 b : 암묵적 전역 변수
function foo() {
	var a = b = 0;
}


전역변수의 문제점



  • 광고같은 서드파티 스크립트들로인해 중요한 변수가 덮어쓰여지거나 삭제 될 수 있다.


 위의 코드는 엄밀히 말하면 전역 객체에 변수가 아닌 프로퍼티가 result가 추가되는 것이다. (var 선언이 없기 때문)

프로퍼티는 delete 연산자로 삭제 가능하지만 변수는 불가능 하므로 주의해야 한다.


예를들어, 함수내에서 살아있어야 하는 변수를 전역 프로퍼티로 잘못 생성하면 서드파티 코드에서 우연히 삭제할 가능성이 있기 때문이다.







'WEB > javascript' 카테고리의 다른 글

자바스크립트 리터럴 표기법  (0) 2012.07.22
eval() 안전하게 사용하는 방법  (0) 2012.07.22
호이스팅(hoisting): 분산된 var 선언의 문제점  (0) 2012.07.12
strict mode  (0) 2012.07.10
객체지향 언어  (0) 2012.07.09


eclipse 에서 스택 사이즈도 조정할 수 있다.


VM argument로 

-Xss100m 옵션을 주면 스택을 늘릴 수 있다.

기본 사이즈는 512k 이다.

'NATIVE > eclipse' 카테고리의 다른 글

자바 프로그램 힙 메모리 사용 측정  (0) 2012.07.11
External Tools로 빌드  (0) 2012.07.11
java.lang.OutOfMemoryError  (0) 2012.07.10



이클립스상에서 Run을 하다보면

java.lang.OutOfMemoryError: Java heap space 예외가 발생하는 경우가 있다.

런타임시 힙 메모리가 부족한 경우이다.


방법은 두가지 이다.





eclipse.ini 파일 맨 밑 라인에

-vmars

-Dosgi.requiredJavaVersion=1.5

-Xms1024m

-Xmx1024m

을 추가한다.


Xms는 메모리의 시작크기를 나타내고

Xmx는 메모리의 최대크기를 나타낸다.

따라서 당연히 Xms <= Xmx 여야 하겠다.


XP에서 JVM 자체 최대 메모리 크기는 1g 정도 이다. (http://stackoverflow.com/questions/171205/java-maximum-memory-on-windows-xp)



Run Configurations의 Arguments 탭 내의 

VM arguments 박스에

-XX:MaxPermSize=128m -Xms1024m -Xmx1024m 

를 추가해 준다.


JVM에서는 메모리를 두가지 종류로 나눠서 관리하는데

  • Heap : 일반적인 실행 영역
  • PermGen : 클래스 메타 데이터 영역

으로 정의된다.






그리고 Windows -> Preferences -> General 에서 Show heap status를 체크해 주면 이클립스 하단에서 메모리 상태를 확인 할 수 있다. 잘 확인하고 적당한 사이즈로 늘려주자.-_-!!




'NATIVE > eclipse' 카테고리의 다른 글

자바 프로그램 힙 메모리 사용 측정  (0) 2012.07.11
External Tools로 빌드  (0) 2012.07.11
java.lang.StackOverflowError  (0) 2012.07.10


ECMAScript 5에 추가된 기능.


실제로 기능을 추가한 것이 아니라 제거함으로써 프로그램을 더 간단하게 만들고 오류 발생 가능성을 낮춘것.

예를들어 with를 스트릭트 모드에서 쓰면 에러가 발생한다.

function my() {
	'use strict'
	with(o) {    // error
	}
}


'use strict'  유효범위는 함수, 전역, 또는 eval()로 전달된 문자열.


ES는 추후에 스트릭트 모드만 지원하려고 계획중이다.

따라서 ES5는 개발자에게 strict mode에서 동작하는 코드를 작성하도록 권장하는 과도적인 버전.



네이티브 객체 : ECMAScript 표준에 정의된 객체

네이티브 객체는 내장객체(예를들면, Array나 Date) 또는 사용자 정의 객체(var o={};)로 분류된다.



호스트 객체 : 호스트환경(예를 들면, 브라우저 환경)에서 정의된 객체

호스트 객체의 예로는 window 객체나 모든 DOM 객체를 들 수 있다.





어떤 객체가 호스트 객체인지 궁금하다면?

코드를 브라우저가 아닌 다른 환경에서 실행시켜 보면 된다. 

만약 잘 동작한다면 네이티브 객체만을 사용하고 있는 것이다.



'WEB > javascript' 카테고리의 다른 글

자바스크립트 리터럴 표기법  (0) 2012.07.22
eval() 안전하게 사용하는 방법  (0) 2012.07.22
호이스팅(hoisting): 분산된 var 선언의 문제점  (0) 2012.07.12
자바스크립트 전역변수  (0) 2012.07.10
strict mode  (0) 2012.07.10


정규표현식에 익숙하지 않아서 한참 애를 먹었다.

"use strict"

'use strict'

이거 매치하는데 이리 오래걸릴줄이야-_- 분발하자.



스트릭트 모드 검사하는 모듈 구현 시 StringLiteral(str)로 파싱되는 str을 검사한다.

val pattern = "^\\s*use strict\\s*$"
val str = "use strict"
(pattern findFirstIn str) match {
	case Some(res) => System.out.println(res)
	case None => ;
}


^ : 시작 문자를 지정한다. 여기서는 \s(공백)으로 지정하였다.

\s : 공백 문자를 나타낸다.

$ : 종료 문자를 지정한다. 여기서는 마찬가지고 \s(공백)으로 지정하였다.


입력값이 "use strict", " use strict", " use strict ", 'use strict ' 등.. 앞뒤 공백이 있는 use strict 문자열이라면 결과가 None 이 아닌 Some(res)이 리턴된다.

res에는 매칭된 문자열이 들어있겠지?




집에가서 조금 더 공부해야겠다.

'NATIVE > scala' 카테고리의 다른 글

스칼라 lift-json 사용  (0) 2012.10.04
스칼라 JSON 라이브러리  (0) 2012.08.14
  • 감각동사 + 형용사
    • look, sound, taste, smell, feel

  • 상태변화동사 + 형용사(or 비교급)
    • become, get, grow, turn, go

  • 타동사 + 목적어(전치사 쓰지 않는다)
    • 타동사 : 목적어가 필요한 동사.
    • discuss, resemble, reach, enter, approach, greet, mention, date, marry, attend
    • He married with her.(x)
      He married her.(o)

  • 수여동사 + 간목 + 직목
  • 수여동사 + 직목 + 전치사 + 간목
    • 전치사 to : give, show, teach, send, tell, lend
    • 전치사 for : buy, make, find
    • 전치사 of : ask, inquire

  • 타동사 + 목적어 + 목적보어
    • 목적보어가 명사 : call, make, choose
    • 목적보어가 형용사 : make, believe, find, think
    • 목적보어가 to부정사 : believe, want, ask, encourage, advise, allow, expect, warn

  • 지각동사 + 목적어 + 동사원형/ -ing / 과거분사
                                 ├─ 능동-┘          |          |
                                 ├──  능동진행 ┘         |
                                 └─────── 수동 ──┘
    • see, look at, watch, hear, listen to, feel, smell


 회사 리눅스 pc가 보안으로 네트웍이 막혀있어 proxy 서버를 사용하여 네트웍을 연결하였다.
git을 사용하기 위해서는 corkscrew를 설치하여야 한다.

  1. corkscrew 를 설치
    • ~$ sudo apt-get install corkscrew

  2. config 파일 설정
    • ~$ vi ~/.ssh/config
    • ProxyCommand /usr/bin/corkscrew [proxy 서버 주소] [proxy 서버 포트] %h %p



+ Recent posts