▶이동
  • 상구너 닷컴 블로그를 방문하신 여러분을 환영합니다 :)
  • 스팸 정책에 의해 일부 덧글·방명록차단될 수 있습니다.

클로저 특성으로, 내부함수에서 외부함수의 지역변수에 접근 할 수 있는데, 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. -> 함수 안의 내부함수나 그 로컬 변수들은 그 외부함수의 밖에서 접근을 못한다. 


잘못 작성된 코드

결과

그러면 왜 5만 5번이 출력이 되었을까?


=>

클로저의 특성인 내부함수에서 외부함수의 지역변수에 접근을 하는것인데 arr[i] 로 정의된 함수에서 사용하는 i는 외부함수의 지역변수가 아니다.

arr[i] 는 i를 리턴하는 함수로만 사용이 되는데, 이 i 가 외부함수의 지역변수가 아니기 때문에 for문을 이미 종료된 상태인 i = 5 인 상황이 되어버리기 때문이다.

고쳐진 코드

결과


=>

for문을 돌때 미리 i를 이용한 외부변수를 실행하여(실행후 소멸됨) 각각 arr[i]는 실행된 외부함수로부터 반환된 내부함수가 되기 때문에 다른방식의 결과가 나오기 때문이다.


참고 https://opentutorials.org/course/743/6544

저작자 표시 비영리 변경 금지
신고

'Study > JScript/JQuery' 카테고리의 다른 글

클로저(Closure) 의 특성과 응용 그리고 실수  (0) 2017.01.05
Canvas Context 메소드 확장하기.  (0) 2016.05.10
_h5ai audio,video autoplay  (0) 2014.09.29
0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • display,visibility 속성 정리

    Study/Markup 상구너(smokingbird) 2017.01.05 13:54

    display 속성


    display: inline  기본값으로, 요소를 inline 요소처럼 표시합니다. => 앞뒤로 줄바꿈 되지 않습니다.

     

    display: block  요소를 block 요소처럼 표시합니다. => 따라서 요소 앞 뒤로 줄바꿈 됩니다

     

    display: none 박스가 생성되지 않습니다. => 따라서 공간을 차지하지도 않습니다.

     

    display: inline-block 요소는 inline인데 내부는 block 처럼 표시함.  => 즉, 박스 모양이 inline 처럼 옆으로 늘어섬.





    visibility 속성



    visibility: visible  기본값으로 요소가 그대로 보입니다.visibility: hidden  요소가 보이지 않지만, 여전히 그 공간을 차지하며 투명하게 남습니다.

    visibility: collapse <table> 태그에서만 사용할 수 있는 값으로, 선택 테이블의 행과 열을 숨깁니다.

     

    하지만 여전히 투명하게 공간을 차지 합니다. 

    <table> 이외에서 사용하면 hidden 상태처럼 만듭니다. 

    (collapse는 IE, Firefox에서만 작동)


    참고 : http://aboooks.tistory.com/85

    저작자 표시 비영리 변경 금지
    신고

    'Study > Markup' 카테고리의 다른 글

    display,visibility 속성 정리  (0) 2017.01.05
    display: inline-block 여백이 생기는 현상  (0) 2017.01.05
    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • display: inline-block 여백이 생기는 현상

    Study/Markup 상구너(smokingbird) 2017.01.05 13:51

    Version:1.0 StartHTML:0000000105 EndHTML:0000015589 StartFragment:0000001096 EndFragment:0000015557

    1. 문제 발생 (예제)

    1000px 로 설정한 div

    다시 150px, 700px, 150px 로 나누고

    안쪽의 div에는 display: inline-block 속성을 주었는데

    맨 오른쪽 div 영역이 아래쪽으로 밀려내려감

    *** divpaddingmargin, border는 모두 0px 이었음

     

    2. 원인

    <div> 태그 등으로 다른 태그들을 묶어주는 경우,

    div 태그 또한 inline-element로 인식을 하기 때문에

    div들끼리 마주하는 부분에서 여백이 생김

    div 뿐만아니라, span도 마찬가지

     

    3. 해결 방법

    .container { // 부모 랩퍼

    ...

    font-size: 0px;

    letter-spacing: 0px;

    word-spacing: 0px;

    }

     

    .container > div { // 간격이생기던 엘리먼트

    ...

    font-size: 15px;

    letter-spacing: 1em;

    word-spacing: 2em;

    }

     

    감싸고 있는 divfont-size, letter-spacing, word-spacing0px로 줄임 ->

    안쪽의 div에서 복구.

     

    4. 간단 해법

    .container > div { // 간격이생기던 엘리먼트

    ...

    float:left;

    }


    참고


    http://comajava.blogspot.kr/2013/12/display-inline-block-width-margin-css.html

    저작자 표시 비영리 변경 금지
    신고

    'Study > Markup' 카테고리의 다른 글

    display,visibility 속성 정리  (0) 2017.01.05
    display: inline-block 여백이 생기는 현상  (0) 2017.01.05
    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • Canvas Context 메소드 확장하기.

    Study/JScript/JQuery 상구너(smokingbird) 2016.05.10 16:02

    Html5의 Canvas 는 html5의 역사가 그리 길지 않은만큼 그 역사 또한 짧습니다.


    기능적인 측면에서 이건 왜이렇게 되느냐 부터 시작해서 아쉬운 부분이 많이 보일때가 많아요.


    이럴땐 거의 울며 겨자먹기로 기능을 메소드로 감싸서 보완하고 원래의 기능 '인것 처럼' 구현하곤 합니다.


    오늘 만난 문제가 그중 하나였는데요.


    첫번째로 canvas의 fillText는 기본적으로 멀티라인을 지원하지 않는 문제였습니다.


    이는 일일히 text를 잘라서 계산을 해주어야 하는 부분이었습니다. 


    구글가서 찾아보신분들은 아마 아실거에요, 이 문제에대한 원성이 얼마나 자자한지..


    그리고 대부분의 경우 메소드를 하나 생성해서 해결을 합니다만,


    이게 특정 라이브러리에 속해있는 등의 문제를 만나면 조금은 문제가 복잡해지죠.




    그래서 이를 해결했습니다.


    그랬더니 또 새로운 문제가 튀어나왔어요.



    텍스트의 너비(픽셀상 길이) 를 계산해주는 measureText 여러줄의 길이를 모두 합친 길이가 나왔어요.


    사용의 경우 canvas와 javascript 를 지원하는 모든 브라우저에서 사용이 가능하고,


    코드를 삽입하면 원래사용하던 이름 그대로 사용하도록 기능만 추가해보았습니다.


    아래코드를 확인해보세요





    위와같이 오버라이딩을 한번 해놓으면 'fillText' 는 \n 으로 줄바꿈이 가능하고, 'measureText' 는 가장 길이가 긴 줄로 길이를 리턴하게됩니다.



    canvas fillText override lineBreak newline

    저작자 표시 비영리 변경 금지
    신고

    'Study > JScript/JQuery' 카테고리의 다른 글

    클로저(Closure) 의 특성과 응용 그리고 실수  (0) 2017.01.05
    Canvas Context 메소드 확장하기.  (0) 2016.05.10
    _h5ai audio,video autoplay  (0) 2014.09.29
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • Redhat JBoss mysql Datasource 설정하기

    Study/WAS 상구너(smokingbird) 2015.04.14 13:52

    JBoss 서버에 데이터소스를 설정하는 내용을 담은 글들이 매우 많으나, 사실상 적용이 안되는 경우가 많았다.

    톰캣처럼 컨텍스트 추가하고 읽으면 바로 사용할 수 있는 방법은 없다.


    JBoss 에서 데이터소스를 사용하는 순서는 다음과 같다.


    1. 드라이버 모듈 추가

    2. 데이터소스 드라이버 등록

    3. 데이터소스 추가

    4. 데이터소스 매핑 jboss-web.xml



    1. 드라이버 모듈 추가

    드라이버 모듈은 modules 에 디렉토리를 생성하고 module.xml 을 생성하여 넣는 방법이 대부분 소개되어있다. 그러나 간혹 jboss 에서 인식이 되지 않는 경우가 발생한다. 모듈이 없거나 존재하지 않는다는 경고가 발생한다. 공백이나 양식, 문법등의 문제겠지만 정확히 어떤것이 문제인지는 확인할 수 없었다.


    여기서는 jboss-cli 를 이용한다. jbosscli 실행하여 해당 서버콘솔에 접속하고 다음과 같이 입력한다.


    module add --name=com.mysql --resources={mysql connector jar file 경로} --dependencies=javax.api,javax.transaction.api


    그러면 자동으로 modules 아래에 com 폴더 아래에 새로운 mysql 모듈이 등록이된다.


    2. 데이터소스 드라이버 등록


    /subsystem=datasources/jdbc-driver=mysql:add(driver-module-name=com.mysql,driver-name=mysql,driver-class-name=com.mysql.jdbc.Driver)


    위와같이 입력하면 데이터소스드라이버가 등록이 된다.


    3. 데이터소스 등록

    standalone/configuration/standalone.xml 을 편집하거나 management Web 을 이용한다. 

    필자의 경우 management Web 을 이용하였으나 standalone.xml 을 편집하여 등록하는 방법을 적어본다.


    
     
     
     jdbc:mysql://localhost:3306/DB명.....파라미터
     com.mysql.jdbc.Driver
     com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
     mysql
     
      2
      30
     
     
      아이디
      패스워드
     
     
      false
      false
     
     
      true
     
     
    

    위처럼 소스를 삽입한다.


    4. war 파일에 web.xml 과 함께 jboss-web.xml 을 추가한다.


    
    
      /{context path}
      
        jdbc/jndi별명
        javax.sql.DataSource
        java:/jdbc/jndi별명
        Container
      
    
    






    위와같이 설정후 context lookup 시 comp/env 를 통해 lookup 하는것은 제외하도록 한다.


    war 를 배포하고 배포경로를 통해 확인한다.





    저작자 표시 비영리 변경 금지
    신고

    'Study > WAS' 카테고리의 다른 글

    Redhat JBoss mysql Datasource 설정하기  (0) 2015.04.14
    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.