'학습정리 > by Min' 카테고리의 다른 글

안드로이드 nfc 사이트  (0) 2013.07.18
AOP(Aspect-oriented programming)  (0) 2013.07.12
nodejs  (0) 2013.07.11
css & selector & 상속  (0) 2013.06.26
박스 모델  (0) 2013.06.25
by 알 수 없는 사용자 2013. 7. 24. 14:31

안드로이드 인트로 화면


http://hoyanet.pe.kr/740


http://androphil.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%8F%B0-%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%EC%99%80-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-model-1-jsp

'학습정리 > by aking' 카테고리의 다른 글

안드로이드 NFC  (0) 2013.07.19
Java Script  (0) 2013.07.09
HTML & CSS  (0) 2013.06.25
(수정중) GIT Server 구축 및 Log4J 설정  (0) 2013.06.24
by aking 2013. 7. 21. 17:51


onResume()

- 홈버튼을 이용해 나가던지 Back버튼으로 나가던지 onDestory()함수를 사용하지 않는다면,

다시 앱을 실행되면onCreate()함수가 실행이 되지 않고 onResume()가 실행된다.


onPause()

- 인텐트 전달을 중지시킨다.



NDEF

- NDEF (NFC Data Exchange Format)는 NFC에서 데이터를 교환하기 위한 포맷.

- NFC 디바이스가 NFC 태그로부터 데이터를 가져올 때, 그리고 NFC 디바이스 사이에 P2P로 데이터를 전송할 때 이 포맷을 사용


NDEF 메시지

- 기본적인 메시지 단위 하나를 'NDEF 메시지 (NDEF Message)'라고 부른다.

- 하나의 NDEF 메시지는 여러 개의 'NDEF 레코드 (NDEF Record)'로 구성되어 있다.


NDEF 레코드

- 하나의 NDEF 레코드는 하나의 데이터를 담는데, 이 데이터를 '페이로드 (payload)' 라고 한다.


- 결국 이 페이로드를 전달하기 위해서는 NDEF 레코드가 필요하다.


- 페이로드 데이터는 그냥 byte 덩어리이기 때문에 이것만 보고는 이 데이터가 그냥 텍스트인지, URL인지,

이미지인지, 동영상인지 알 수가 없다. 그래서 '페이로드 타입'이 필요하다.


- 인터넷을 예로 들면, 인터넷에 있는 수많은 콘텐츠들은 모두 MIME타입이라고 하는 타입을 가지고 있다.


- PNG 이미지라면 'image/png', mpeg 동영상이라면 'video/mpeg', 그냥 텍스트라면 'text/plain' ... 이와 마찬가지로 페이로드도 타입을 갖는다.


- 하나의 메시지에 여러 개의 레코드가 존재하므로, 어떤 레코드가 다른 레코드를 참조하는 경우가 생기는데


- 이 경우 레코드에 대한 식별자가 필요하다. 이것을 페이로드 'ID'라고 한다. 대부분의 경우 이 ID가 필요없는데

 그래서 ID는 생략될 수 있다.


- 이렇게 '페이로드', '타입', 'ID' 세 가지가 NDEF 레코드의 주요 구성 요소가 된다. 실제로는 각 구성요소의 길이와 '레코드 헤더'가 추가되기 때문이다.



TNF 와 Type


- MIME 타입 이외의 다른 타입들도 포함하고자 해서, 'Type' 외에 이 Type이 MIME Type 형식으로 정의된 Type인지, 아니면 다른 형식의 Type인지를 구분할 필요가 있을 것인데, 이것이 TNF (Type Name Format)이다.

     즉, 'Type이 어떤 형식으로 되어 있는가'를 나타낸다.















'학습정리 > by aking' 카테고리의 다른 글

사이트정리  (0) 2013.07.21
Java Script  (0) 2013.07.09
HTML & CSS  (0) 2013.06.25
(수정중) GIT Server 구축 및 Log4J 설정  (0) 2013.06.24
by aking 2013. 7. 19. 23:19

http://w3c.github.io/nfc/proposals/intel/nfc.html    


https://wiki.mozilla.org/WebAPI/WebNFC


http://dev.webinos.org/specifications/draft/nfc.html


http://mobile.tutsplus.com/tutorials/android/reading-nfc-tags-with-android/


http://developer.android.com/guide/topics/connectivity/nfc/nfc.html


http://www.cyworld.com/kjky0/3982081

'학습정리 > by Min' 카테고리의 다른 글

프로그래밍 구조  (0) 2013.07.24
AOP(Aspect-oriented programming)  (0) 2013.07.12
nodejs  (0) 2013.07.11
css & selector & 상속  (0) 2013.06.26
박스 모델  (0) 2013.06.25
by 알 수 없는 사용자 2013. 7. 18. 20:19

Transaction 사용하기

Transaction 를 사용하기 위해서는 그룹 설정을 해줘야 한다.


service.xml 설정

xmlns:tx="http://www.springframework.org/schema/tx"


http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx.xsd


<context:component-scan base-package="bit.java39.dao, bit.java39.service">


<tx:annotation-driven transaction-manager="transactionManager"/>



serviceImpl.java 설정

@Transactional(rollbackFor=Exception.class)



Aspect-oriented programming








service.xml 


xmlns:aop="http://www.springframework.org/schema/aop"


http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd



LoggingAspect.java 

@Aspect

@Component

public class LoggingAspect {

// fully-qualified name(QName) = 패키지명 + 클래스명

// AspectJ poingcut expression

// execution(메소드 범위 리턴타입 QName.메소드명(파라미터들)

// 예) execution(public int net.bitacademy.**.add(*))

   // @Before("execution(* bit.java39.dao.*.*(..))")//("표현식")

       // @Before("execution(* *.*(..))")//("표현식")

@Before("execution(* *..dao.*.*(..))")//("표현식")

public void logBefore(JoinPoint joinPoint){

System.out.println(joinPoint.getSignature().getDeclaringTypeName());

System.out.println(joinPoint.getSignature().getName());

System.out.println(Arrays.toString(joinPoint.getArgs()));

System.out.println("============================> 이전...");

}

@After("execution(* *..dao.*.*(..))")//("표현식")

public void logAfter(){

System.out.println("==============================> 이후....");

}

}




AspectJ의 Pointcut 표현식


  □ POJO 클래스를 이용하여 AOP를 적용하는 두 가지 방법

    - XML 스키마를 이용하여 Aspect를 설정하는 방법.

    - @Aspect 어노테이션을 이용하여 Aspect를 설정하는 방법.

    ■ 두 방법의 공통점

      - AspectJ의 문법을 이용하여 Pointcut을 설정.

    ■ <aop:태그>를 이용하여 Aspect를 설정하는 경우

      - execution 명시자를 이용하여 Advice가 적용될 Pointcut을 설정.

 <aop:aspect id="cacheAspect" ref="cache">

    <aop:around method="read"

        pointcut="execution(public * kame.spring.chap03.core.*.readArticle(..))" />

 </aop:aspect>


  □ AspectJ의 Pointcut 표현식

    - AspectJ는 Pointcut을 명시할 수 있는 다양한 명시자를 제공.

    - 스프링은 메서드 호출과 관련된 명시자만을 지원.

    ■ execution 명시자

      - Advice를 적용할 메서드를 명시할 때 사용.

      ○ 기본 형식

 execution(수식어패턴? 리턴타입패턴 패키지패턴?이름패턴(파라미터패턴)

        ● 수식어 패턴

          - 생략가능한 부분.

          - public, protected 등이 옴.

        ● 리턴타입패턴

          - 리턴 타입을 명시

        ● 클래스이름 패턴, 이름패턴

          - 클래스 이름 및 메서드 이름을 패턴으로 명시.

        ● 파라미터패턴

          - 매칭될 파라미터에 대해서 명시.

      ○ 특징

        - 각 패턴은 '*'를 이용하여 모든 값을 표현.

        - '..'을 이용하여 0개 이상이라는 의미를 표현.

      ○ 설정 예

        ● execution(public void set*(..))

          - 리턴 타입이 void이고 메서드 이름이 set으로 시작하고, 파라미터가 0개 이상인 메서드 호출.

        ● execution(* kame.spring.chap03.core.*.*())

          - kame.spring.chap03.core 패키지의 파라미터가 없는 모든 메서드 호출.

        ● execution(*.kame.spring.chap03.core..*.*(..))

          - kame.spring.chap03.core 패키지 및 하위 패키지에 있는 파라미터가 0개 이상인 메서드 호출.

        ● execution(Integer kame.spring.chap03.core.WriteArticleService.write(..))

          - 리턴 타입이 Integer인 WriteArticleService 인터페이스의 write() 메서드 호출.

        ● execution(* get*(*))

          - 이름이 get으로 시작하고 1개의 파라미터를 갖는 메서드 호출.

        ● execution(* get*(*, *))

          - 이름이 get으로 시작하고 2개의 파라미터를 갖는 메서드 호출.

        ● execution(* read*(Integer, ..))

          - 메서드 이름이 read로 시작하고, 첫 번째 파라미터 타입이 Integer이며, 1개 이상의 파라미터를 갖는 메서드 호출.

    ■ within 명시자

      - 메서드가 아닌 특정 타입에 속하는 메서드를 Pointcut으로 설정할 때 사용.

      ○ 설정 예

        ● within(kame.spring.chap03.core.WriteArticleService)

          - WriteArticleService 인터페이스의 모든 메서드 호출.

        ● within(kame.spring.chap03.core.*)

          - kame.spring.chap03.core 패키지에 있는 모든 메서드 호출.

        ● within(kame.spring.chap03.core..*)

          - kame.spring.chap03.core 패키지 및 그 하위 패키지에 있는 모든 메서드 호출.

    ■ bean 명시자

      - 스프링 2.5 버전부터 스프링에서 추가적으로 제공하는 명시자.

      - 스프링 빈 이름을 이용하여 Pointcut을 정의.

      - 빈 이름의 패턴을 갖는다.

      ○ 설정 예

        ● bean(writeArticleService)

          - 이름이 writeArticleService인 빈의 메서드 호출.

        ● bean(*ArticleService)

          - 이름이 ArticleServie로 끝나는 빈의 메서드 호출.

    ■ 표현식 연결

      - 각각의 표현식은 '&&' 나 '||' 연산자를 이용하여 연결 가능.

      ○ @Aspect 어노테이션을 이용하는 경우

        - '&&' 연산자를 사용하여 두 표현식을 모두 만족하는 Joinpoint에만 Advice가 적용.

 @AfterThrowing(

    pointcut = "execution(public * get*()) && execution(public void set*(..))")

 public void throwingLogging() {

    ...

 }

      ○ XML 스키마를 이용하여 Aspect를 설정하는 경우

        - '&&'나 '||' 연산자를 사용.

 <aop:pointcut id="propertyMethod"

     expression="execution(public * get*()) &amp;&amp; execution(public void set*(..))" />

         - XML 문서이기 때문에 값에 들어가는 '&&' '||'를 '&amp;&amp;'로 표현.

         - 설정파일에서 '&&'나 '||' 대신 'and'와 'or'를 사용할 수 있도록 하고 있음.

 <aop:pointcut id="propertyMethod"

     expression="execution(public * get*()) and execution(public void set*(..))" />


  □ 프록시 구현 방식에 따른 execution 적용 차이

    - Pointcut은 실제로 프록시가 구현하고 있는 인터페이스를 기준으로 Pointcut을 적용.

    - 인터페이스를 구현하고 있는 대상 객체에 대해서 Pointcut을 정의하려면 인터페이스를 기준으로 Pointcut을 작성.

 <aop:aspect id="cacheAspect" ref="cache">

    <aop:around method="read"

        pointcut="execution(public * kame..core.ReadArticleServiceImpl.get*(..))" />

 </aop:aspect>


 <bean id="readArticleService" class="kame.spring.chap03.core.ReadArticleServiceImpl" />

         - ReadArticleServiceImpl 클래스가 ReadArticleService 인터페이스를 구현하고 있다면, 

           <aop:around>는 ReadArticleServiceImpl 클래스의 get으로 시작하는 메서드에 적용.

           (<aop:around> 태그에서 명시한 Pointcut은 readArticleService 빈에는 적용되지 않음.)

         - ReadArticleServiceImpl 클래스가 인터페이스를 구현하고 있지 않다면,

           생성된 프록시는 ReadArticleServiceImpl 클래스를 상속받아 생성됨. (Pointcut은 readArticleService 빈에만 적용.)



transaction =>> insert, update, delete


transaction

프로그래밍 (직접 코딩) coding

filter(by aop) coding (코딩) aop ==> 메소드 앞 뒤로 지정

annotation 서버에서 직접 작업(유지보수에 좋다)


ownership – 서비스는 여러개의 Dao를 사용 가능하다.


Signature() 메서드 선언규칙 ==> 리턴타입 메소드명(파라미터)

'학습정리 > by Min' 카테고리의 다른 글

프로그래밍 구조  (0) 2013.07.24
안드로이드 nfc 사이트  (0) 2013.07.18
nodejs  (0) 2013.07.11
css & selector & 상속  (0) 2013.06.26
박스 모델  (0) 2013.06.25
by 알 수 없는 사용자 2013. 7. 12. 13:09
Node.js

 

자바스크립트엔진(V8) 위에서 동작하는 이벤트처리 I/O프레임워크

대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, Node.js는 서버 측에서 실행

실직적으로 서버사이드 자바스크립트 실행환경라이브러리, 이렇게 두 가지로 이루어져 있음

확장이 용이한 네트워크 프로그램을 쉽게 만들 수 있도록 함

많은 클라이언트 연결을 동시적으로 다룰 수 있음

 

 

CORDOVA

 

JS를 이용하여 native device 에 접근할 수 있도록 하는 device API set. 이것으로 HTML, CSS, JavaScript를 이용해 앱을 만들 수 있다.

Java, Objective-C 등의 native code 없이 앱을 만들수 있다. 

JS 자체가 web 표준을 따르기 때문에, 대부분의 장비에서 별도 코드 수정 없이 사용가능한 앱을 만들 수 있다는 장점이 있다. Android, iOS, blackberry, Windows Phone, Palm WebOS, Bada, Symbian 모두 사용 가능하다.

 

 

PhoneGap

 

모바일 크로스 플랫폼을 지원하는 오픈소스 모바일 개발 플랫폼입니다.
PhoneGap은 Web 2.0 Expo에서 최우수 Ajax 기술 전문기업으로 이름을 날린, 떠오르는 기업 Nitobi에서 개발, 완전한 오픈소스 프로젝트로 진행.
기 본 HTML을 바탕으로 하며 강력한 자바스크립트 엔진을 이용, 기존의 스마트 폰인 아이폰, 안드로이드, 블랙베리, 윈모바일, 심비안 SDK의 주요 기능들을 지원. 기존 HTML + Javascript 기반의 Web App의 한계를 극복.

 

'학습정리 > by H2K' 카테고리의 다른 글

javaScript, jQuery 함수  (0) 2013.07.08
NegotiatingViewResolver  (0) 2013.07.07
6.25  (0) 2013.06.25
by 알 수 없는 사용자 2013. 7. 11. 20:34

node.js 설정


http://nodejs.org/ 에 접속해서.. 인스톨 파일을 다운받는다.





컴퓨터 속성에서 환경 변수를 변경해야한다.


시스템 변수 - Path

본인 컴퓨터에 맞는 설치 위치의 폴더명을 추가해서 넣으세요

C:\Users\Administrator\AppData\Local\Android\android-sdk\platform-tools;

C:\Users\Administrator\AppData\Local\Android\android-sdk\tools;




명령프롬프트  창을 실행

node 입력




npm install -g cordova






npm info cordova





프로젝트 만들기

cordova create HelloWorld net.bitacademy.java39.hello " Hello World"





cordova platform add android



폴더가 만들어진다.



cordova platforms ls




cordova build





이클립스에서 Hello_World 





안드로이드 어플리케이션을 실행















'학습정리 > by Min' 카테고리의 다른 글

안드로이드 nfc 사이트  (0) 2013.07.18
AOP(Aspect-oriented programming)  (0) 2013.07.12
css & selector & 상속  (0) 2013.06.26
박스 모델  (0) 2013.06.25
폰트와 색으로 장식하기  (0) 2013.06.25
by 알 수 없는 사용자 2013. 7. 11. 13:06




JAVA SCRIPT




  • <script type="text/javascript">

-> 자바 스크립트 타입으로 지정


  • "use strict";

- 브라우저에게 자바스크립트를 엄격하게 검사할 것을 요구.

- 최신의 브라우저에 추가된 명령어로, "" 넣은 이유는 이전 브라우저에서

오류가 발생할 수 있기 때문에 미연의 방지차 정의 된 것이다.



  • 배경지식

- 변수는 페이지 단위로 관리된다.

- 페이지와 페이지 사이에는 절대 공유할 수 없다.

- 글로벌 변수 => 그 페이지 내에서 어디서든 접근할 수 있는 변수






변수와 자료형




- 변수 선언: 데이터형을 선언하지 않는다.

var a;                        // 변수에는 어떤 값을 넣을 수 있는가? - 마음대로.

a = 10; // number 데이터형

a = "홍";         // string 데이터형

a = true;         // boolean 데이터형

a = new Object(); // Object 데이터형

a = function() {}; // function 데이터형

- 출력: 브라우저의 콘솔 창으로 출력할 수 있다.

console.log(10); // 개발하는 동안 확인용으로 사용한다.




  • 바인딩이란?

- 변수의 데이터형의 결정되는 것.

- 값을 할당한 후 결정 된다.


var b;    // 바인딩 안되어 있는 상태: undefined

// 해당 변수에 값이 할당되지 않은 상태. 즉, 데이터형이 결정되어 있지 않은 상태.


console.log(b);

- 변수의 데이터형 알아내기: 바인딩 된 후 변수의 데이터형 확인 typeof()


b = 10;

console.log(typeof(b));


b = 10.5;

console.log(typeof(b));

- 동적 바인딩(dynamic binding <> static binding)

-> 예시) Java, C, C++, C#

- 변수의 데이터 형은 고정되어 있지 않다. 값을 할당하는 순간 결정되기 때문이다.

- 값을 할당할 때 데이터형이 결정되는 것.

- 가능한 변수의 용도를 결정했으면 그대로 사용.






자료형 검사: typeof()

자료형: null, undefined




b = "홍길동";

console.log(typeof(b));



b = true;

console.log(typeof(b));


b = null;

console.log(typeof(b));



b = new Object();

console.log(typeof(b));



b = function() {};

console.log(typeof(b));

- 이전 자바스크립트 명세에서는 var을 선언하지 않고 만든 변수는 글로벌 변수로 설정.

- 현재는 반드시 var을 붙여야 한다.

- 브라우저에게 자바스크립트 문법을 엄격하게 검사할 것을 요구. 'use strict";




  • 중복 선언?

- 오류가 아니다. 기존 변수 덮어쓴다.

var c = 10;

console.log(typeof(c));


var c = "홍길동";

console.log(c);



window 객체: 브라우저에 미리 정의된 객체

-> 브라우저의 정보를 다루는 객체

  • 글로벌 변수나 함수를 포함하고 있다.
  • 글로벌 변수는 모두 window 객체의 프로퍼티로 포함된다.
  • 글로벌 함수도 또한 모두 window 객체에 포함된다.

console.log(window.c);


var d = 20;

window.e = 30;


console.log(e);                                // e앞에 window 객체 레퍼런스가 생략된 것.

console.log(window.e);





기본 라이브러리

prompt(), confirm(), alert()



prompt()

prompt 리턴값은 string이다.


var r = prompt("당신의 나이는?");

console.log(r);



var r2 = confirm("당신은 비트 수강생입니까?", "제목입니까?");

console.log(r);



alert("오호라... 단순 메시지 출력할 때 사용");






배열: [ , , , ]


var names = ["홍길동", "임꺽정", "유관순", 20, function(){}, true];

for(var i = 0; i < names.lenght; i++){

console.log(names[0]);

}





    ==와 ===의 차이


var x1 = 20;

var x2 = "20";

if(x1 == x2){                                // 암시적 형변환이 발생함.

console.log("x1 == x2");

}


암시적 형변환 없이 정확하게 데이터형과 값이 일칳나는지 확인하고 싶다면?

if(x1 === x2){

console.log("x1 === x2");

} else {

console.log("x1! ==  x2");

}





console.log('52 + 273');            // 1번


console.log(52 + 273);              // 2번


console.log(parseInt('52') + 273);            // 3번: parseInt로 썼을 경우 데이터형으로 변환한다.

        

console.log(52 + '273');            // 4번


console.log('52' + '273');            // 5번





조건 연산자


var a = (20 > 30) ? "와우 정말?! ㅎㅎ" : "어후,,,";

console.log(a);




||와 &&의 다른 활용

var x = 20;


var b = true || (x = 30);

console.log(x, b);


var b = false || (x = 30);

console.log(x, b);


var age = prompt("니 나이 몇이냐?", "18");

// (age > 18) || console.log("미성년자입니다.");

(age < 19) && console.log("미성년자입니다.");





'학습정리 > by aking' 카테고리의 다른 글

사이트정리  (0) 2013.07.21
안드로이드 NFC  (0) 2013.07.19
HTML & CSS  (0) 2013.06.25
(수정중) GIT Server 구축 및 Log4J 설정  (0) 2013.06.24
by aking 2013. 7. 9. 18:34

**자바스크립트의 배경지식


1. 변수는 페이지 단위로 관리된다.

- 페이지 내에 있는 변수는 다른 페이지에서 접근할 수 없다.

- 페이지와 페이지 사이에는 절대로 변수를 공유할 수 없다.

탭과 탭은 별도의 윈도우라는 것을 알아야 한다.

2.  글로벌 변수는 그 페이지 내에서 어디서든 접근할 수 있는 변수.

-예전에는 오프너라 해서 다른 창에 있는 변수 접근이 가능했으나

현재는 자바스크립트 보안 관계로 다른 창의 변수를 가져올 수 없도록 하였다


0. 변수와 자료형

- 변수 선언 : 자바스크립트는 데이터형을 선언하지 않는다.


var a; => 이 변수에는 어떠한 값을 넣어도 가능하다.

a=10;         (number 데이터형)

a=홍길동;   (String 데이터형)

a= true;       (boolean 데이터형)

a= new Object();     (Object 데이터형)

a=function() {};     ( function 데이터형)


- 출력 : 브라우저의 콘솔 창으로 출력할 수 있다.

ex> console.log(10);


- 바인딩 : 변수의 데이터형이 결정되는 것

언제 결정이 되는 것인가? => 값을 할당한 후 결정된다.

ex>var b; => 바인딩이 안되어 있는 상태

console.log(b);


1. 자료형 검사 : typeof()

자료형 : null, undefined


- 변수의 데이터형 알아내기 : 바인딩 된 후 변수의 데이터 형 확인 typeof()

ex>b=10;

console.log(typeof(b));


b=10.5;

console.log(typeof(b));


-동적 바인딩(dynamic binding <> static binding ex: Java, C, C++, C#)

-변수의 데이터 형은 고정되어 있지 않다. 값을 할당하는 순간 결정되기 때문이다.

자바스크립트는 값을 할당할 때 데이터 형이 결정되는 것이 특징이다.

가능한 변수의 용도를 결정했으면 그대로 사용하여야 한다.


ex> b=”홍길동”;

console.log(typeof(b));


b= true;

console.log(typeof(b));


b=null;

console.log(typeof(b));


b= new Object();

console.log(typeof(b));


b = function(){};

console.log(typeof(b));


- 이전 자바스크립트 명세에서는 var를 선언하지 않고 만든 변수는 글로벌 변수로 설정

현재는 반드시 var를 붙여야 한다.


* “use strict”;

=> 브라우저에게 자바스크립트 문법을 엄격하게 검사할 것을 요구.

스크립트를 진행하기 전에“use strict”;를 선언함으로 해서 브라우저에게 자바스크립트를 엄격하게 검사할 것을 요구한다.

이 문법은 최근 문법이다.


예전 브라우저는 일반 문자열로만 바라보지만

최근 브라우저는 문자열로 선언하더라도 일반 문자열로 보지 않고  엄격한 검사를 요구한다는 것을 인지한다.


c=20;

console.log(typeof(c));

=> 최근 브라우저는 인지를 한다. 유지보수가 어려운 상황이 발생할 수 있으므로

미연에 방지하기 위해서 “use strict” 문법을 먼저 선언해주는 것이다.

선언해주는 동시에 위에 예시는 검사해서 에러를 발생시킨다.

그러므로 이 문법을 사용할 경우에는  반드시 ‘var’ 를 통한 변수선언을 해 주어야 한다.


- 중복 선언은 오류가 아니다. 단, 기존 변수를 덮어쓴다.

var c =”홍길동”;

console.log(c);


- window 객체 : 브라우저에 미리 정의된 객체. 브라우저의 정보를 다루는 객체.

. 글로벌 변수나 함수를 포함하고 있다.

. 글로벌 변수는 모두 window 객체의 프로퍼티로 포함된다.

. 글로벌 함수도 또한 모두 window 객체에 포함된다.

ex> console.log(window.c);


ex> var d = 20;

window.e=30;


console.log(e); => e 앞에는 window 객체 레퍼런스가 생략된 것.

console.log(window.d);


2. prompt(), confirm()

ex >

var r = prompt(“당신의 나이는?”);

console.log(r);


var r2= confirm(“당신은 비트 수강생입니까?”);

console.log(r2);


alert(“오호라.... 단순 메시지 출력!”);


3. 배열 [ , , , ] ;

배열은  [ ] 내부에 데이터 형을 따지지 않으므로 어떤 형이든 입력이 가능하다.

ex>

var names = [“홍길동”, “임꺽정”, “유관순”];

for(var i = 0; i < names.length; i++){

console.log(names.[i]);

}


4. == 와 ===의 차이

var x1 = 20;

var x2 = “20”;

if(x1 == x2){

console.log(“x1 == x2”);

}

=> 앞의 값과 데이터 형을 맞추기 위해서 암시적 형변환이 발생한다.


- 암시적 형변환 없이 정확하게 데이터형과 값이 일치하는지 확인하고 싶다면?

“ === ” 활용

ex>

if(x1 === x2){

console.log(“x1 === x2”);

}else{

console.log(“x1 !== x2”);

}


* alert 창 사용

ex>

<script>

alert(‘This\’ is “String”);

alert(“This\” is ‘String’);

</script>


=> alert 창 내부에 “ ” , ‘ ’ 둘 다 사용이 가능하다. 단, 창 내부에 두가지를 혼용할 수는 없다.

혼용하기 위해서는 ‘ \ '을 위에 예시 처럼 사용하면 된다.



* 숫자와 문자열을 덧셈할 경우의 예시

<script>

       // 1번

       console.log('52 + 273');

       // 2번

       console.log(52 + 273);

       // 3번

       console.log('52' + 273);

       // 4번

       console.log(52 + '273');

       // 5번

       console.log('52' + '273');

   </script>


=>  결과

52 + 273

325

52273

52273

52273

=> 문자열은 문자열 그대로 출력/ 숫자는 그대로 더한 결과값 출력

문자 + 숫자일 경우 문자 + 문자일 경우에는 합계가 아닌 이어 붙인 결과가 출력된다.


문자와 숫자를 더해서 합한 결과를 얻고자 할 경우에는 타입 캐스팅 하는 방법을 사용해야 한다.

ex> console.log((number)‘52’ + 273);



 <script>

       alert(Boolean(0));

       alert(Boolean(NaN));

       alert(Boolean(''));

       alert(Boolean(null));

       alert(Boolean(undefined));

   </script>


=> alert 창으로  모두 false 가 출력됨



* 조건연산자

var a = (20 > 30) ? "와~ 정말?" : "그러면 그렇지...";

console.log(a);


조건 연산자를 사용할 경우 출력은 true, false로 판단해서 결과 출력.

-> 예시문 출력결과 : "그러면 그렇지..."


*  ||와 &&의 다른 활용

ex> var x = 20;

var b = true || (x=30);


‘ || ’ 를 사용할 경우 앞에 값이 true 인 경우에는 뒤에 값은 검사하지 않고 앞의 값으로 출력


ex> var age = Number(prompt("너 나이 몇이야?", "18"));

(age > 18) || console.log("미성년입니다.");





' || ' 를 사용할 경우에는

둘 중 하나라도 true이면 true

둘 다 false일 경우는 false

둘 다 true인 경우는 true


'&& '를 사용할 경우에는

둘 중 하나라도 false이면 false

둘 다 true여야만 true이다.

둘 다 false일 경우는 당연히 false이다.



** 조건문

ex>

* if ~ else

 <script>

       // 변수를 선언합니다.

       var date = new Date( );

       var hour = date.getHours( );

       // 조건문

       if (hour < 11) {

           // "hour < 11"가 참일 때 실행합니다.

           alert('아침 먹을 시간입니다.');

       } else if (hour < 15) {

           // "hour < 11"이 거짓이고 "hour < 15"가 참일 때 실행합니다.

           alert('점심 먹을 시간입니다.');

       } else {

           // "hour < 15"가 거짓일 때 실행합니다.

           alert('저녁 먹을 시간입니다.');

       }

   </script>


원래는 else if가 자바에서는 아래와 같이 활용되어야 하는 것이 정확하다.

if (hour < 11) {

           // "hour < 11"가 참일 때 실행합니다.

           alert('아침 먹을 시간입니다.');

       } else {

      if (hour < 15) {

          // "hour < 11"이 거짓이고 "hour < 15"가 참일 때 실행합니다.

           alert('점심 먹을 시간입니다.');

       } else {

           // "hour < 15"가 거짓일 때 실행합니다.

           alert('저녁 먹을 시간입니다.');

       }

}



** 함수(function)


1. 함수 선언

- 리턴 타입이 없다. => 데이터형이 없기 때문에

- 함수 선언시 주의사항 : 파라미터 변수는 var를 붙이지 않는다.

엄격하게 검사하기 위해서 함수 선언 전에  “use strict”  를 붙인다.

- 모든 근로벌 변수, 함수는 window 객체에 포함된다.

ex>

<script>

console.log(plus(10, 11));

=> plus 함수는 다음 script 엘리먼트에서 만들기 때문에 여기서는 호출할 수 없다.

    스크립트는 순서대로 실행이되므로 함수 이전에 console.log를 찍게 되면 찾을 수 없으므로 결과를 출력할 수 없다.

</script>

<script>

“use strict”;

function plus(a, b){

return a+b;

}


console.log(plus(10, 20));

console.log(window.plus(10, 20));

</script>


2. 자바스크립트 실행 순서

- 자바스크립트는 <script></script> 엘리먼트 단위 순서대로 실행된다.


 script element 안에서는 함수 선언을 먼저 실행하고 => 함수 밖의 문장을 순서대로 실행한다.

- 다음 스크립트 엘리먼트에서는 이전 스크립트 엘리먼트에서 만든 변수나 함수는 글로벌 변수, 함수이므로  접근할 수 있다.

ex>

<script>

console.log(plus(20, 30));

</script>

=> 스크립트 엘리먼트가 나뉘더라도 위에 함수가 먼저 선언되었으므로

정상적으로 실행될 수 있다.


3. 함수 선언2

-  함수 객체를 생성하는 방법

(함수 선언이 아니라 함수를 선언하는 방법으로 객체를 생성한 것이다.)

ex> "use strict";

var plus = function(a, b){

return a+ b;

};


console.log(plus(50, 50));


'학습정리 > by ㅎㅈㅇ' 카테고리의 다른 글

실무 web 프로그래밍의 구성  (0) 2013.06.27
by 알 수 없는 사용자 2013. 7. 9. 17:39

자바스크립트는 기본적으로 function()이면 getter, function(파라미터)는 setter로 쓴다....

 

 

javaScript

 

 

Event.preventDefault()

 

- 이벤트의 기본 동작을 취소한다.

- 개요
void preventDefault();

- 설명
이 메서드는 웹 브라우저로 하여금 이벤트와 연결되어 있는 기본 동작(존재하는 경우)을 수행하지 않게 만든다. 예를 들어, type 프로퍼티의 값이 'submit'이면 이벤트 전차 단계 중 어느 곳에서라도 이벤트 처리기에서 이 메서드를 호출함으로써 폼이 제출되는 것을 막을 수 있다. Event객체의 cancelable 프로퍼티가 false이면 기본 동작이 아예 존재하지 않거나 기본 동작이 수행되는 것을 막을 수 없다. 어떤 경우라도 이 메서드를 호출하는것은 아무런 영향을 주지 못한다.

 

 

Event.stopPropagation()

 

- 이벤트를 더 멀리 전달하지 않는다.

- 개요
void stopPropagation();

- 설명
이 메서드는 이벤트 전차를 중지시켜 이벤트가 다른 Document 노드로 전달되는 것을 막는다. 이벤트 전파 과정 중 언제라도 호출될 수 있다. 이 메서드는 동일한 Document 노드에 대해 다른 이벤트 처리기가 호출되는 것을 막지는 않지만, 이벤트가 다른 노드로 전달되는 것은 막는다.

 

 

자료출처: http://designonex.com/bbs/board.php?bo_table=G05_2&wr_id=341

자료출처: http://designonex.com/bbs/board.php?bo_table=G05_2&wr_id=340

 

 

 

jQuery

 

 

load()

 

- 전체 웹페이지를 새로고침하지 않고 웹페이지의 일부분만을 업데이트할 수 있다

 

on()

 

- $('body').on('click', '.detailLink', function(event){ } );

 

- body엘리먼트의 detailLink라는 클래스를 click하면 function(event){ } 를 실행하라

 

- jQuery 1.7버전 이상에서 사용 가능(이하버전은 live(), bind() ... 를 사용)

 

 

val()

 

- 선택한 엘리먼트의 값을 가져오는 함수

 

 

trigger()

 

- 클릭이벤트 강제로 발생시키기

 

-$(셀렉터).trigger(이벤트명)

 

'학습정리 > by H2K' 카테고리의 다른 글

node.js, CORDOVA, PhoneGap  (0) 2013.07.11
NegotiatingViewResolver  (0) 2013.07.07
6.25  (0) 2013.06.25
by 알 수 없는 사용자 2013. 7. 8. 17:44
| 1 2 3 |