'프로그래밍'에 해당되는 글 10건

  1. 2020.12.14 alert()와 console.log() 활용 4
  2. 2020.11.02 quartz 사용시 스케쥴 cron 형식 2
  3. 2020.10.28 부모창(opener)으로 submit 할때
  4. 2020.10.23 request 객체 활용
  5. 2020.10.22 자바자료형
728x90

javascript 로 무언가 개발을 하다보면 특정내용을 찍어보기 위해 alert() 함수를 많이 사용하게 됩니다.

 

일반적으로 alert(""); 형태 또는 alert(abcd); 형태로 사용하게 되는데 

이 경우에 alert 창을 지우는 행위를 까먹고 안하면 나중에 어디에서 사용했는지 찾는데 오랜 시간이 걸리는 경우가 많습니다.

특히 include 나 iframe 등을 사용한 경우 url을 따라가도 어디에서 발생하는 얼럿인지 도저희 찾기 힘든경우가 많습니다.

 

alert(abcd); 의 경우 향후에 ctrl+f 또는 ctrl+h(이클립스)등으로 검색해야 할 경우

실제 화면에서는 abcd에 담긴 값이 alert으로 나타나기 때문에 

abcd의 해당 내용으로는 alert 위치를 검색하기 힘들게 됩니다.

 

저의 경우에는 테스트시

alert("login page param1 ==="+abcd); 형태로 alert을 사용하는 경우가 많습니다.

이렇게 작업할 경우 실수로 삭제하지 않더라도 

alert("login page param1 === 부분이나 login page param1 === 부분을 검색해보면 쉽게 값을 찾을 수 있습니다.

 

그리고 이보다 더 좋은 사용예는 console.log 일듯 합니다.

주로 크롬에서 많이 개발하지만 IE 에서도 개발자도구를 보면 console 창에 잘 표시가 되고

alert 보다 많은 정보를 담고 있어 사용하기 매우 유용합니다.

 

console.log("console 로그 테스트 입니다."); 형태로 사용한 예 입니다.

 

console.log("window.screen=====",window.screen);

형태로 사용하면 다음과 같은 구조가 나타납니다.

 

브라우저가 가지고 있는 객체에 대한 정보나 현재 화면에서 변수/상수 또는 객체에 담긴 내용들을 확인하거나 제어 할때 매우 유용합니다.

728x90

'프로그래밍 > Jquery, javascript' 카테고리의 다른 글

부모창(opener)으로 submit 할때  (0) 2020.10.28
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 11. 2. 18:53
728x90

quartz 를 사용하여 스케쥴 설정시 croncronExpression 설정이 헷갈릴때가 많다.

 

가장 보편적으로 사용하는 형태가 다음과 같은 형태일 것이다.

 

00 30 01 * * ?

 

간단하게 정리하면 매일 01시 30분에 실행하는 스케쥴이라는 의미이다.

 

각 자리수의 의미는

 *     *     *     *    *      *       *

초    분   시   일   월   요일   년도(생략가능)

 

  1. 초(Seconds)
  2. 분(Minutes)
  3. 시(Hours)
  4. 일(Day-of-Month)
  5. 월(Months)
  6. 요일(Days-of-Week)
  7. 연도(Year) - 생략가능

“?”문자는 일(day-of-month)와 요일(day-of-week) 필드에서만 허용되며 값에 상관하지 않는다는 의미. 

"*" 문자는 매 단위(시간/분/초 ...)마다 실행한다는 의미.

요일은 일요일부터 1로 표기 (1-일, 2-월, 3-화, 4-수, 5-목, 6-금, 7-토)

 

몇가지 유용한 예...

 

1. 매일 매시 10분에 실행

     00 10 * * * ?

2. 매주 수요일 13시 10분에 실행

     00 10 13 ? * 4

3. 매월 첫번째 토요일 13시 10분에 실행

     00 10 13 ? * 7#1

4. 하루 4번 6시간마다 실행 ( 0시, 6시, 12시, 18시 4회실행)

     00 00 0/6 * * ?

5. 하루 4번 6시간마다 실행 ( 0시15분20초, 6시15분20초, 12시15분20초, 18시15분20초 4회실행)

     20 15 0/6 * * ?

6. 매10분마다 실행

     00 0/10 * * * ?

7. 매일 19시~20시 사이 30분 간격으로 19시 09분부터 실행 (19시09분, 19시39분, 20시09분, 20시39분)

     00 09/30 19-20 * * ?

     이 경우 정확히는 19~20시 사이라기 보다는 시간구간이 19시와 20시 일때이므로 실질적으로는 19시에서 21시다.

728x90

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

아파치 톰캣 버전별 jdk 버전  (3) 2022.06.07
open jdk 관련  (0) 2022.06.07
java 쓰레드풀(Thread pool) 을 활용한 멀티쓰레드 처리  (0) 2020.12.21
request 객체 활용  (0) 2020.10.23
자바자료형  (0) 2020.10.22
Posted by 내맘대로내뜻대로
728x90

window.open 으로 열린 popup창에서 부모창으로 정보를 갱신할때 부모창을 타겟으로잡아 submit 해준다.

 

[팝업 오픈시]

function winOpen() {

   document.domain = "myDomain.com"; // 도메인을 일치하지 않을 경우 제어가 안되는 경우가 있다.

   window.open("popup.htm", "myPopup", "width=800, height=600, resizable=no, scrollbars=no") ;

}

 

 

[부모창 제어시]

function openSubmit() {

    document.domain = "myDomain.com";  // 도메인을 일치하지 않을 경우 제어가 안되는 경우가 있다.

    opener.name = "myOpner";

    document.myForm.target = opener.name;

    document.myForm.action = "/what/goWhat.do";

    document.myForm.submit();

    self.close();   //window.close(); 를 사용해도 된다.

}

 

 

 

 

 

 

도메인을 일치시켜야 하는 이유는 크로스 도메인 오류가 발생하는 경우가 있어서인데 다른 도메인의 창을 제어하려할 경우 에러가 발생함을 막기 위하여 브라우저에서 차단하는 경우때문이다.

 

브라우저에서 크로스도메인을 허용하지 않는 이유는 소유하지 않은 페이지에 대한 권한을 주지 않기 위해서이다.

예를 들어 팝업으로 구글이나 네이버창을 열고 오프너가 팝업창에 권한을 행사하여 변경처리 하거나 반대로 팝업에서 오프너에 대한 권한을 행사할수 있게 될 경우 보안문제가 발생한다.

게시판등에 팝업이 뜨도록 작성하고(요즘은 허용되지 않는 경우가 대부분) 그 팝업창에서 오프너를 제어할 수 있는 경우가 예전에 있었고 이에 대한 패치로 크로스 도메인에 대한 패치가 브라우저에 적용되어 있다.

(같은 도메인에서 팝업하고 처리 하는 경우 도메인지정은 생략해도 에러가 안나는 경우가 대부분이다.)

 

간혹 self.close() 또는 window.close() 처리시 submit 처리가 완료되지 않은 상황에서 close()처리가 발생되어 오프너가 정상적으로 동작하지 않는 경우도 있다.

이 경우 close 동작전 timeout 을 0.5초 정도 지정해주거 콜백 처리를 하는 경우가 있다.

 

 

728x90

'프로그래밍 > Jquery, javascript' 카테고리의 다른 글

alert()와 console.log() 활용  (4) 2020.12.14
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 10. 23. 17:45
728x90

request 객체에는 사용자 정보가 기본적으로 많이 담겨 있다.

request 객체에서 해당 정보를 사용하여 개발되는 사이트의 로그나 사용자 반응을 확인하는 용도로 많이 사용한다.

또한 여러종류(개발,테스트,스테이징,운영,DR..)의 서버가 동작중일 경우 같은 코드로 서버별 다른 동작을 할때도 유용하다.

 

 

<%

// request.getHeader("referer"); // 접속 경로

// request.getHeader("user-agent"); // 유저의 시스템 정보
// request.getHeader("host"); // 접속 ip

// request.getHeader("User-Agent"); // 브라우져 정보 가져오기
// request.getHeader("WL-Proxy-Client-IP")
// request.getHeader("Proxy-Client-IP")
// request.getHeader("X-Forwarded-For") // 클라이언트 ip 주소 가져오기

// request.getRequestURI();   //프로젝트경로부터 파일까지의 경로값을 얻어옴

// request.getContextPath();  //프로젝트의 경로값만 가져옴

// request.getRequestURL();   //전체 경로를 가져옴

// request.getServletPath();   //파일명

 

// String request.getParameter(name)  //페이지에 전달된 파라미터를 name 기준으로 가져옴
// String[] request.getParameterValues(name)  // 페이지에 전달된 파라미터들을 모두 가져와 배열형태로 반환함

// String request.getProtocol() 웹 서버로 요청 시, 사용 중인 프로토콜을 리턴한다.
// String request.getServerName() 웹 서버로 요청 시, 서버의 도메인 이름을 리턴한다. 
// String request.getMethod() 웹 서버로 요청 시, 요청에 사용된 요청 방식(GET, POST, PUT 등)을 리턴한다. 
// String request.getQueryString() 웹 서버로 요청 시, 요청에 사용된 QueryString을 리턴한다. 
// String request.getRequestURI()  웹 서버로 요청 시, 요청에 사용된 URL 로부터 URI 값을 리턴한다. 
// String request.getRemoteAddr()  웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴한다. 
// int request.getServerPort() 웹 서버로 요청 시, 서버의 Port번호를 리턴한다. 
// String request.getContextPath() 해당 JSP 페이지가 속한 웹 어플리케이션의 콘텍스트 경로를 리턴한다. 
// String request.getHeader(name) 웹 서버로 요청 시, HTTP 요청 헤더(header)의 헤더 이름인 name에 해당하는 속성값을 리턴한다. 

 

다양한 request 객체 내 정보를 시스템로그에 찍어보면 활용도를 찾을수 있다.

 

System.out.println("referer:"+request.getHeader("referer"));

System.out.println("user-agent:"+request.getHeader("user-agent"));

System.out.println("host:"+request.getHeader("host"));

System.out.println("WL-Proxy-Client-IP:"+request.getHeader("WL-Proxy-Client-IP"));

System.out.println("Proxy-Client-IP:"+request.getHeader("Proxy-Client-IP"));

System.out.println("X-Forwarded-For:"+request.getHeader("X-Forwarded-For"));

System.out.println("HTTP_CLIENT_IP:"+request.getHeader("HTTP_CLIENT_IP"));

System.out.println("HTTP_X_FORWARDED_FOR:"+request.getHeader("HTTP_X_FORWARDED_FOR"));

System.out.println("getContextPath:"+request.getContextPath());

System.out.println("getProtocol:"+request.getProtocol());

System.out.println("getQueryString:"+request.getQueryString());

System.out.println("getRemoteAddr:"+request.getRemoteAddr());

System.out.println("getRequestURI:"+request.getRequestURI());

System.out.println("getServerName:"+request.getServerName());

System.out.println("getServletPath:"+request.getServletPath());

System.out.println("getSession:"+request.getSession().getId());

 

 

 

// Enumeration request.getHeaderNames() 웹 서버로 요청 시, HTTP 요청 헤더(header)에 있는 모든 헤더 이름을 리턴한다. 

// 파라미터의 헤더에 담긴 모든 정보를 조회하려고 할때 while문을 활용하여 전체를 찍어볼 수 있다.

Enumeration headers = request.getHeaderNames();

 

while(headers.hasMoreElements()) {

    String headerName = (String)headers.nextElement();

    String value = request.getHeader(headerName);

    System.out.println("headerName:"+headerName+","+value);

}

 

%>

 

728x90

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

아파치 톰캣 버전별 jdk 버전  (3) 2022.06.07
open jdk 관련  (0) 2022.06.07
java 쓰레드풀(Thread pool) 을 활용한 멀티쓰레드 처리  (0) 2020.12.21
quartz 사용시 스케쥴 cron 형식  (2) 2020.11.02
자바자료형  (0) 2020.10.22
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 10. 22. 16:32
728x90

자바의 자료형은 크게 기본형(primitive type)과 참조형(referene type)으로 나뉜다. 그리고 기본형은 다시 정수형, 실수형, 문자형, 논리형 네 가지로 분류할 수 있다. 이것들을 다음 표에 정리하였다.

[표 1] 자바의 기본 자료형(primitive type)의 종류

분류

이름

바이트 수

비고

정수형

byte

1

-127 ~ +128

short

2

-32,768 ~ + 32,767

int

4

-2,147,483,648 ~ +2,147,483,647

long

8

-9,223,372,036,854,775,808~

+9,223,372,036,854,775,807

실수형

float

4

단정도 실수형 (유효 자리는 7 정도임)

double

8

배정도 실수형 (유효 자리는 15정도)

문자형

char

2

유니코드 문자열

논리형

boolean

1

true, false

 

 정수형은 정수를 저장하는 자료형으로서 byte, short, int, long 네 가지가 있으며 각각에 저장할 수 있는 정수의 범위가 다르다 ([표 1] 참조) 한 가지 알아둘 것은 C/C++ 과 다르게 자바의 정수형에는 unsigned 형이 없고 부호 있는 정수형만 있다는 것이다. (자료 구조의 단순함을 유지하기 위해서 이렇게 설계했다고 한다.) 그리고 C/C++의 long long int 가 자바의 long형에 해당된다. 숫자 상수끝에 L/l 접미어가 붙으면 long형으로 저장된다.

 

 실수형은 실수(소숫점이나 e/E를 포함하는 수)를 저장하는 자료형으로서 float와 double 형이 있다. (이것은 C/C++과 동일하다.) 숫자 상수 끝에 f/F 접미어가 붙으면 float형으로 저장된다.

 

 컴퓨터에서는 모든 문자에 번호를 할당하고 문자를 정수로 바꿔서 저장한다. 어떤 문자에 어떤 번호를 할당하는 가는 여러 방법이 있으며 자바는 유니코드(unicode)라는 세계 표준 규격을 따른다. 유니코드는 국제적으로 사용되는 모든 문자를 0~65,535 범위(2 바이트)의 정수에 할당한 것이라고 이해하면 된다. 자바의 char형은 유니코드 한 문자를 표현할 수 있는 자료형으로서 2 byte 크기이다. 문자상수는 작은 따옴표를 사용하여 표시한다. 예를 들면 ‘a’, ‘가’, ‘3’ 등이다. (C/C++에서는 char형이 1byte이다. 혼동하면 안된다.)

 

 논리형은 true(참)과 false(거짓) 단 두 개의 값만을 가지는 자료형이다. 조건 검사에서 사용되는 논리식의 결과값을 저장하는 용도로 사용된다.

 

 

자료출처 : studymake.blogspot.com/2015/07/java-primitive-types.html

728x90
Posted by 내맘대로내뜻대로