2017년 구글 블로그 개설하고 애드센스 신청해놓고 까먹고 있었다.
메일로 컨텐츠 부족으로 승인이 나지 않았다는것은 알고 있었고 그냥 관리를 안했다.
다시 관리를 하여 애드센스를 달아볼려고 한다.
패시브 인컴 = 일하지 않고도 수익을 낸다는 뜻인데 요즘 관심사다.
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 [개발자인생]
| 매개변수 가변인자 (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);
}
| 파일 다운로드 하기 (0) | 2017.09.06 |
|---|---|
| [# jQuery #] id, name, class로 접근방법 (0) | 2017.08.31 |
| 테이블에 특정 로우 클릭시 배경색 변경하기 (0) | 2017.08.30 |
| input mask 사용하기 (0) | 2017.08.30 |
| 체크박스 제어-전체선택 , 전체 해제 (0) | 2017.08.28 |
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) {}
}
}
}
%>
| 리스트성 목록 제어하기 (0) | 2017.09.08 |
|---|---|
| [# jQuery #] id, name, class로 접근방법 (0) | 2017.08.31 |
| 테이블에 특정 로우 클릭시 배경색 변경하기 (0) | 2017.08.30 |
| input mask 사용하기 (0) | 2017.08.30 |
| 체크박스 제어-전체선택 , 전체 해제 (0) | 2017.08.28 |
현재 자바스크립트에서 가장 유용하게 사용되고 있는 moment의 사용방법과 응용하는 방법을 소개한다.
■ 인스톨
http://momentjs.com/에서 다운로드 하여 사용할 페이지에 로드시켜 준다.
■ 준비
// moment를 초기화 한다
var m = moment();
// format으로 출력한다
var output = m.format("YYYY년MM월DD일 HH:mm:ss dddd");
console.log(output); // => 2016년07월12일 12: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(); // 월 ※ 0〜11의 값
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"); |
가변인수를 테스트하는 전체 예는 다음과 같다.
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 로 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 |