2017년 구글 블로그 개설하고 애드센스 신청해놓고 까먹고 있었다. 

메일로 컨텐츠 부족으로 승인이 나지 않았다는것은 알고 있었고  그냥 관리를 안했다. 

 

다시 관리를 하여  애드센스를 달아볼려고 한다. 

 

패시브 인컴 = 일하지 않고도 수익을 낸다는 뜻인데   요즘  관심사다. 

 

mport java.util.Calendar;

import java.text.SimpleDateFormat;


public class testToday{

    public static void main(String args[]){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

        Calendar c1 = Calendar.getInstance();

 String strToday = sdf.format(c1.getTime());


        System.out.println("Today=" + strToday);

    }

}



출처: http://hspmuse.tistory.com/entry/java-오늘일자-string-format-YYYYMMDD [개발자인생]

'java' 카테고리의 다른 글

매개변수 가변인자  (0) 2017.08.31
m2soft RD  (0) 2016.10.04
멀티 선택 가능한 콤보박스 구현  (0) 2016.03.10
log4sql 적용  (0) 2016.02.03
json taglib 사용하기  (0) 2016.01.07

체크된 행의 금액 합계 

var $obj = $("input[name='b_checkbox']");

var checkCount = $obj.size();

 

for (var j=0; j<checkCount; j++){

 if($obj.eq(j).is(":checked")){

amtSum_b =  parseFloat(amtSum_b) + parseFloat(arrObj("b_recpAmt",j).value);

}



//배열일때 와 배열이 아닐때

function arrObj(name , i){

var objID   = document.frm1.elements[name];

return (objID.length > 0 ? objID[i] : objID);

}

jquery로 파일다운로드 요청하기 . framework 사용시 요청url을 변경하면 된다. 



$.fileDownload("/common/fileDownload.jsp", {

 httpMethod: 'POST',

 dataType:"json", // data type of response

      contentType:"application/json",

 data: {"fileNm":fileNm},

 successCallback: function(url) {  

 }

})



fileDownload.jsp 



<%@ page contentType="text/xml; charset=utf-8" language="java" errorPage="" %>


<%@page import="java.util.*"%>

<%@page import="java.io.OutputStream" %>

<%@page import="java.io.File" %>

<%@page import="java.io.FileInputStream" %>

<%@page import="java.io.IOException" %>

<%@page import="java.io.PrintWriter" %>

<%@page import="java.net.URLEncoder" %>

<%@page import="net.sf.json.JSONObject"%>

<%@page import="com.comUtil.Constants"%>

<%@page import="org.apache.commons.lang.StringUtils" %>

<%

String pathname = Constants.FILE_UPLOAD_PATH;

String filename[] = request.getParameterValues("fileNm");


if(filename.length == 1){


File uFile = new File(pathname,filename[0]);

int fSize = (int)uFile.length();


if (fSize > 0) {

String mimetype = "application/x-msdownload";



response.setContentType(mimetype);

String header = request.getHeader("User-Agent");

String browser ="";

if (header.indexOf("MSIE") > -1 || header.indexOf("Trident") > -1) {

browser= "MSIE";

     } else if (header.indexOf("Chrome") > -1) {

    browser= "Chrome";

     }

String dispositionPrefix = "attachment; filename=";

String encodedFilename = null;

 

if (browser.equals("MSIE")) {

   encodedFilename = URLEncoder.encode(filename[0], "UTF-8").replaceAll("\\+", "%20");

}else if (browser.equals("Chrome")) {

   StringBuffer sb = new StringBuffer();

   for (int i = 0; i < filename[0].length(); i++) {

char c = filename[0].charAt(i);

if (c > '~') {

   sb.append(URLEncoder.encode("" + c, "UTF-8"));

} else {

   sb.append(c);

}

   }

   encodedFilename = sb.toString();

}  

 

response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename);

response.setContentLength(fSize);

OutputStream outputstream = null;

    FileInputStream inputstream = null;




try {

out.clear();

pageContext.pushBody();

outputstream = response.getOutputStream();

         inputstream = new FileInputStream(uFile);


         byte[] buffer = new byte[1024]; 

         int length = 0; 

         while((length = inputstream.read(buffer)) > 0) {

             outputstream.write(buffer,0,length); 

         }



} catch (Exception e) {

         e.printStackTrace();

     } finally {

         try {

             if (inputstream != null){

                 inputstream.close();

             }

             outputstream.flush();

             outputstream.close();  

         } catch (Exception e2) {}

     }


}

}




%>

현재 자바스크립트에서 가장 유용하게 사용되고 있는 moment의 사용방법과 응용하는 방법을 소개한다.

 

■ 인스톨
http://momentjs.com/에서 다운로드 하여 사용할 페이지에 로드시켜 준다.

 

■ 준비

// moment를 초기화 한다
var m = moment();
 
// format으로 출력한다
var output = m.format("YYYY년MM월DD일 HH:mm:ss dddd");
console.log(output);  // => 2016071212:34:56 Wednesday

 

■ 사용 방법

moment 개체에는 많은 초기화 방법이 준비되어 있다. 특히 두 번째 인수로 입력 값의 포맷을 지정하는 기능 덕분에 어떠한 날짜 형식에서도 유연하게 객체를 생성 할 수 있도록 되어있다.

// 현재시각
moment();
 
// 밀리 초로 지정
moment(1368543600000);
 
// 타임스탬프(초)로 지정
moment.unix(1368543600);
 
// Date.parse에서 해석 가능한 문자열로 지정
moment("June 12, 2016");
 
// Date오브젝트로부터 초기화
moment(new Date(2016, 7, 12));
 
// 배열로부터 초기화
moment([2016, 7, 12]); // ※month는 -1한 값을 지정
 
// 다른 moment오브젝트로부터 초기화
moment(moment([2016, 7, 12]));
  
//2 인수로 입력값 포맷을 지정하여 초기화
moment("12-07-2016", "DD-MM-YYYY");
moment("20160712", "YYYYMMDD");
moment("2016년07월12일", "YYYY년MM월DD일"); // 실제로는"YYYYMMDD"만으로 지정해도 된다.
moment(1368543600 + "", "X");

※더 자세한 포맷 지정 방법에 대해서는 이곳을 참조.

 

■ 출력 방법

var m = moment();
 
// format을 지정하여 출력
m.format("YYYY년MM월DD일 ddd");
 
// 각 단위 메소드
m.year();    //
m.month();   // 월 ※ 011의 값
m.date();   //
m.day();    // 요일
m.hours();    //
m.minutes();  //
m.seconds();  //
m.milliseconds();  // 밀리 초

 

각 단위 당 메서드는 값을 취득하거나 설정하여 사용된다. 인수를 넘겨주면 setter, 인수가 없으면 getter로 취급한다. 또한 예에 따라 month은 0~11의 값을 취급한다.

m.month (4)을 set하면 5월의 moment 객체가지만,그 m.month ()를 get 을 취하면 현재 달의 수치가 반환된다.

 

var m = moment("2016-07-12", "YYYYMMDD");
m.month(); // => 0
m.month(10).format("YYYY-MM-DD"); // => 2016-07-12

 

■ 사용 방법 (응용편)▷ 요일을 한글로 출력하고 싶을 경우

// lang:ko를 등록한다. 한번 지정하면 자동적으로 사용된다.
moment.lang('ko', {
    weekdays: ["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],
    weekdaysShort: ["일","월","화","수","목","금","토"],
});
 
// moment를 생성
var m = moment("May 15, 2013");
 
// 한국어로 출력
m.format("MM/DD (ddd) dddd"); // => 07/12 (수) 수요일
 
// 다시 영어로 출력하고 싶을 때
m.lang("en").format("MM/DD (ddd) dddd"); // => 07/12 (Wed) Wednesday

 

▷ 이번달 1일의 요일을 수값으로 얻기

// day메소드가「요일」(0〜6) 으로 반환되며 date 메소드에서는 「일」 (1〜31)로 반환된다. 
moment().date(1).day(); // => 3  (수요일)

 

▷ 이번주 월요일의 정확한 타임스탬프 취득

moment()
  .day(1)     // day로 요일 지정. 0:일요일 〜 6:토요일
  .hours(12)  // 12시를 지정
  .minutes(0).seconds(0).milliseconds(0) // 이걸 지정하지 않으면 현재 시각의 분,초가 지정된다.
  .format("X"); // => 1368414000

 

▷ 지정한 날이 존재하는지 확인

moment("2016-02-30", "YYYY-MM-DD").isValid(); // => false

 

▷ 오늘부터 30일 후의 날짜 취득

moment().add("days", 30).format("YYYY년MM월DD일"); // => 2016년08월11일

 

▷ 이번 달은 며칠까지 있는지 확인

moment().daysInMonth() // => 31

 

▷ 특정일로부터 며칠 지났는지 확인

moment().diff(moment([2016, 3, 1]), "days");

 

▷ 날짜A가 날짜B보다 미래인지 체크

var momentA = moment([2016, 3, 1]);
var momentB = moment([2016, 5, 1]);
momentA.isAfter(momentB); // => false

 

▷ moment 오브젝트의 클론 생성

var baseMoment = moment();
var cloneMoment = baseMoment.clone();

 

이상 개발에 특히 도움이 될만한 것들을 모아보았다. 이외에도 많은 기능이 moment.js에 구현되어 있으므로 다음의 문서를 참고하면 된다. http://momentjs.com/docs/


 var date = new Date();

 var formattedDate = moment(date).format('YYYY/MM');

 

 현재월01일 

fromattedDate+"/01"; 

출처: http://pikabu.tistory.com/50 [피카부]

자 바 5.0에서 소개되는 기법 중에서 가변인수(Varargs)라는 것이 있다. 가변인수라는 것은 필요에 따라 매개변수(인수)를 가변적으로 조정할 수 있는 기술이다. 가변인수가 없던 시절에는 가변인수 대신 컬렉션이나 배열을 이용해서 가변인수를 대체하고 있었다.


□ 가변인수가 없던 시절
◇ 컬렉션이나 배열을 이용해서 가변인수를 대체하고 있었다.

우선 컬렉션을 이용해서 가변인수를 사용하던 기법부터 보도록 하자. 다음은 인수를 Vector에 넣어서 메서드로 전달하는 예이다.

▒ 컬렉션을 이용한 가변인수(메서드)

1
2
3
4
5
6
7
public class VarArgsMain {
   public static void display(Vector v) {
      for (Object s : v) {
         System.out.println("컬렉션형태:" + s);
      }
   }
}


▒ 컬렉션을 이용한 가변인수(호출)

1
2
3
4
5
Vector vec = new Vector ();
vec.add("Hello");
vec.add("World");
vec.add("Korea");
VarArgsMain.display(vec);


위의 예에서 Vector에 데이터를 원하는 만큼 넣어서 메서드 내부로 전달할 수 있다. 하지만 자바 5.0에서는 가변인수 기법 자체를 이용하면 보다 쉽게 가변인수를 적용할 수 있다. 다음은 가변인수를 적용하는 예이다.

▒ 가변인수를 이용한 메서드

1
2
3
4
5
6
7
public class VarArgsMain {
   public static void display(String... strs) {
      for (String s : strs) {
         System.out.println("가변인수형태:" + s);
      }
   }
}


▒ 가변인수를 이용한 메서드의 호출

1
VarArgsMain.display("Hello" "World""Korea");


가변인수를 테스트하는 전체 예는 다음과 같다.

§ chap07\VarArgsMain.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
컬렉션과 가변배열의 차이
**/
import java.util.*;
public class VarArgsMain {
    public static void display(Vector v) {
        for (Object s : v) {
            System.out.println("컬렉션형태:" + s);
        }
    }
 
    public static void display(String... strs) {
        for (String s : strs) {
            System.out.println("가변배열형태:" + s);
        }
    }
 
    public static void main(String[] args) {
        //1. 컬렉션을 이용한 매개변수
        Vector vec = new Vector ();
        vec.add("Hello");
        vec.add("World");
        vec.add("Korea");
        VarArgsMain.display(vec);
         
        //2. 가변배열을 이용한 매개변수
        VarArgsMain.display("Hello" "World""Korea");
    }
}
/***
컬렉션형태:Hello
컬렉션형태:World
컬렉션형태:Korea
가변배열형태:Hello
가변배열형태:World
가변배열형태:Korea
***/


가변인수는 특별할 것이 없다. 단지 가변인수를 선언할 때 ...을 붙여주기만 하면 된다. 그 다음은 컴파일러가 알아서 해준다.

사 실 가변인수도 컴파일러의 눈속임에 가깝다. ...이라는 표시를 해두면 컴파일러는 이것을 배열형식으로 바꾸어버린다. 그리고 매개변수로 주어지는 가변인수들을 모아서 배열 객체로 만들어 버린다. 결국 컴파일러가 해주는 일은 다음과 같이 정리할 수 있다.

□ 가변인수에서 컴파일러가 해주는 일
◇ 매개변수를 배열로 변환해준다.
― 원본 : public static void display(String... strs)
― 컴파일러 변환 후 : public static void display(String as[])
◇ 메서드 호출 시 인자들을 이용해서 배열로 만들어 준다.
―  원본 : VarArgsMain.display("Hello", "World", "Korea");
―  컴파일러 변환 후 : VarArgsMain.display(new String[] {"Hello", "World", "Korea" });

이 것을 확인하기 위해서 jad 역컴파일러를 이용해서 역컴파일을 해보면 쉽게 알 수 있다. 앞에서 우리는 가변인수를 사용한 적이 있다. String.format()을 학습할 때 가변인수에 대한 설명 없이 포멧 지정자를 여러 개 사용하였다. format()의 매개변수로 사용자가 원하는 만큼의 포멧 지정자를 사용할 수 있는 것은 가변인수를 지원하기 때문이다. 다시 한번 확인해보기 바란다.

'java' 카테고리의 다른 글

java 로 YYYYMMDD 현재날자 출력하기  (0) 2017.09.29
m2soft RD  (0) 2016.10.04
멀티 선택 가능한 콤보박스 구현  (0) 2016.03.10
log4sql 적용  (0) 2016.02.03
json taglib 사용하기  (0) 2016.01.07

+ Recent posts