먼저 구현하려는 로직은 아래와 같다.


ArrayList의 특정부분 부터 ArrayList의 마지막 부분까지 제거하려는 로직이였다.


for ( int i = k ; i < arrayList.size() ; i ++){

arrayList.remove(i);

}


이렇게 작성하였고, 에러는 발생하지 않는다.


문제는, 이와 같이 실행할 경우, ArrayList의 마지막 부분이 삭제되지 않게 된다.


이와 같은 문제점이 발생하게되는 원인은 


1. remove함수에 대한 이해 부족

2. for문의 동작 방식에 대한 이해 부족


2가지가 원인이 되겠다.


먼저, remove()는 해당 인덱스의 엘리먼트를 지워주는 함수로만 생각하였는데, 그 이후에 동작이 하나 더 있었다.


remove()이후에, 해당 인덱스 이후에 엘리먼트가 존재할 경우 인덱스값을 재계산한다는 것이다.


그리고, for문 동작 방식에 대한 이해는 remove와 연관시켜 생각해야되는데,


remove이후에 인덱스값이 재계산된 상태에서 


for의 동작방식에 따라 제일 마지막에 호출하게되는 부분이 size()함수이다.


그러므로 remove로 엘리먼트를 제거하고, 재계산된 size가 호출이되어 마지막 부분이 삭제가 되지 않는다.


이에 대한 해결 방법으로는 간단하게


removeRange()를 사용하거나,


size()함수의 값을 변수에 저장하여 값이 동적으로 변하지 않게 하면된다.



int end = arrayList.size();


for( int i = k; i < end ; i++){

arrayList.remove(i);

}





Ajax로 한글 데이터를 전송하게 되는 경우, 인코딩 문제로 인하여 한글데이터가 깨져서 전송이 된다.


이에 대한 해결 방법으로는 


톰켓 서버의 server.xml의 해당 포트의 


Connector 태그에서


URIEncoding="UTF-8"  을 추가해 준다.



예 )

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>





Audio & Video



미디어 재생 API 정리


- 속성


src src 속성 값
currentSrc 실제로 읽어 들여 재생 중인 미디어 데이터의 URL
currentTime 현재 재생 위치(시간)
startTime 재생할 위치(시간)
duration 미디어 데이터의 길이(시간)
paused 일시 정시 상태 여부를 반환
defaultPlaybackRate 기본 재생 속도, 기본 값은 1.0
playbackRate 재생 속도, 기본 값은 1.0, -일 경우 역재생
ended 재생 종료 여부를 반환
muted 음소거 여부를 반환
volume 음량(0.0~1.0)


- 함수


load() 동영상을 다시 읽어 들임
play() 동영상을 재생
pause() 재생 중인 동영상을 일시 정지


























'프로그래밍 > HTML5' 카테고리의 다른 글

[HTML5] Form 다중 submit  (0) 2021.01.12
[HTML5] canvas  (0) 2012.08.27




Canvas 태그 사용


 - html body에서 id가 canvas인 canvas태그를 생성한다.

 - canvas태그내에 글씨를 삽입함으로써, canvas를 지원하지 않는 브라우저에 대해서 대응할수 있도록 한다.


예시 )

<canvas id="canvas" width="600" height="300">

Canvas를 지원하지 않는 브라우저입니다.

</canvas>




드로잉 컨텍스트 생성


 - script에서 getElementById를 사용하여 드로잉 컨텍스트를 생성한다.



예시 )

var canvas = document.getElementById("canvas");

var context = canvas.getContext("2d");




선 / 도형 그리기


 - 아래와 같은 순서로 진행하여 선/ 도형 그리기를 진행한다. 


1. 패스 그리기 시작

 - beginPath();


2. 서브 패스 그리기


2.1 직선을 그리는 메소드 (line)

- moveTo(x, y);

- lineTo(x, y);


2.2 사각형을 그리는 메소드 (rect)

      - rect(x, y, 사각형의 폭, 사각형의 높이 );


2.3 원 또는 원호를 그리는 메소드 (arc)

- arc( x, y, 반지름, 시작각도, 종료각도, 시계/반시계 );


3. 패스 그리기 닫기

 - closePath();


4. 그리기/채우기

 - stroke(); or fill();




사각형 그리기


 - 기본적으로 사각형을 그리기는 함수가 제공되어 있다.


strokeRect ( x, y, 사각형의 폭, 사각형의 높이 );

fillRect (x, y, 사각형의 폭, 사각형의 높이 );

clearRect ( x, y, 사각형의 폭, 사각형의 높이 );



스타일 지정


 - stroke()나 fill()을 호출하기 전에 context에 스타일을 지정한다.


예시 )

context.fillStyle = "red";

context.strokeStyle = "#114255";










'프로그래밍 > HTML5' 카테고리의 다른 글

[HTML5] Form 다중 submit  (0) 2021.01.12
[HTML5] Audio & Video  (2) 2012.08.28



Textarea 태그에는 장문의 글을 넣을 수 있지만, 장문에 따라 생기는 스크롤로 인하여


페이지가 표시될 때, Textarea의 최하단에 focus가 될 수 있도록 하는 기능이 필요함.


$('textarea').scrollTop($('textarea')[0].scrollHeight);



'프로그래밍 > jQuery' 카테고리의 다른 글

jQuery로 Value getter(),setter() 만들기  (0) 2019.03.16
반복적 비동기 호출  (0) 2019.02.27
[jQuery] each()  (0) 2012.05.10
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24


함수로 구현하여 활용.



//콤마 추가

public String 함수명(String data){

int result= Integer.parseInt(data);

return new java.text.DecimalFormat("#,###").format( result );

}


//콤마 제거

public String 함수명(String data){

return data.replaceAll("\\,","");

}

'프로그래밍 > Java' 카테고리의 다른 글

[Java] 가변인자 ( Varargs )  (0) 2013.03.13
[Java] Sub Class의 필요성  (0) 2012.10.03
[Java] 초기화 블럭 ( initialization block )  (0) 2012.03.02
[Eclipse] 이클립스 플러그인 제거  (0) 2011.09.22
URI vs URL  (0) 2011.09.05



TABLE에 간략하게 데이터를 삽입하게 될 경우 INSERT를 통해서 직접적으로 입력하여 진행하게 되도 큰 무리가 없다.


하지만 다른 테이블에서 추출된 데이터를 삽입하게 될 경우에, 데이터 입력이 어려울 뿐만 아니라, 


정확한 데이터 입력을 보장 할 수 없을 수도 있다.


그래서 보다 쉬운 방법으로 INSERT문을 진행해보려 한다.


일반적인 INSERT에서 SELECT(추출된 값) 구문을 추가하여 추출된 값이 바로 INSERT되도록 할 것이다.


INSERT INTO TABLE_NAME(COL1, COL2, COL3)

SELECT COL1, COL2, 'Y' FROM OTHER_TABLE_NAME;


위 같이 진행하게 되면 테이블에서 추출된 값을 바로 INSERT할  수 있게 된다.


이중에서도 눈여겨 볼 점은 'Y'로 INSERT할때에, 무조건적으로 'Y'로 삽입될 수 있도록 하게 한다.

'데이터베이스' 카테고리의 다른 글

[SQL Template] paging, grid template  (0) 2020.02.04
[SQL] INSERT VALUES((SELECT))  (0) 2016.06.03
MariaDB Connector  (0) 2014.11.17
[Oracle] CLOB SELECT하기 (Orange 사용) - pgadmin3 추가  (0) 2013.09.12
[iBatis] 부등호 처리  (0) 2012.11.09


간만에 Tomcat을 기동하려니 아래와 같은 에러가 발생하였다.


에러 내용

Could not load the Tomcat server configuration at ~ at localhost-config. 

The configuration may be corrupt or incomplete.

Resource is out of sync with the file system: '~ at localhost-config/server.xml'.



해결 방법

 별도의 수정이 필요없이 Project Explorer에 있는 Servers 프로젝트를 Refresh(F5) 해주면 해결된다.



'프로그래밍 > 에러보고서' 카테고리의 다른 글

[Java] ArrayList Remove  (0) 2012.09.17
Ajax 한글 파라미터 깨짐  (0) 2012.08.30



여러 엘리먼트에 어떠한 작업 ( ex: css 변경 ) or 이벤트( ex: click )를 적용하려면, 


여러 엘리먼트에서 각각 엘리먼트에 대해 적용하여야 하나, jQuery에서는 .each()를 제공하고 있다.


먼저, 기본 문법은 아래와 같다.


.each( function(index, Element) )


function의 매개변수로 index와 Element가 있지만 하나만 생략해도 되고, 둘다 생략 가능하다.


.each( function(){} ) <- 이와 같은 일반적인 .each()의 형태가 되겠으나,


각각 엘리먼트를 제어하기 위해서는 function() 내부에서 $('this') 를 사용하면, 


현재 일치되는 엘리먼트에 대해서 제어할수 있게 된다.


$('p').each( function(){

     $('this').css('color','red')

});


위의 내용은 모든 p태그의 색상을 빨강으로 변경하게 된다.


$('this')를 활용하여 각각의 엘리먼트 중에서도 특정한 엘리먼트에 대해서도 제어를 진행할 수 있으므로,


다양하게 활용될 수 있다.


'프로그래밍 > jQuery' 카테고리의 다른 글

반복적 비동기 호출  (0) 2019.02.27
[jQuery] scrollTop 을 이용한 textarea focus  (0) 2012.08.22
[jQuery] attr()  (0) 2012.04.25
[jQuery] jQuery.each() vs .each()  (1) 2012.04.24
[jQuery] One()  (0) 2012.03.30




IE ( chrome 포함 ) 에서는 event.KeyCode를 사용하여 사용자 입력을 자바스크립트로 제어할 수 있다.


하지만 FireFox( 이하 FF )에서는 event.KeyCode가 적용되지 않기 때문에 사용자 입력을 제어할 수 없게 된다.


이러한 상황이 발생하는 이유는 브라우저에 따라 이벤트가 다르게 인식된다.


IE는 window.event 객체가 인식하고, FF는 event 객체가 인식한다.


이러한 이유로, IE와 FF 모두 동작하는 자바스크립트를 작성하려면 이와 같은 경우도 고려를 해야될 것이다.


기본적인 사용법은 아래와 같이 사용 하면 될 것이다.


<script language="javascript" type="text/javascript">

function numCheck(e) {

var eventCode =(window.netscape)? e.which : e.keyCode;

if(( eventCode > 31) && ( eventCode < 45) || ( eventCode > 57)) {

if ( window.netscape ){

e.preventDefault();

}else{

e.returnValue = false;

}

}

}

</script>


        <input type="text" onKeyPress='numCheck(event)'>