출처: http://chrisalbon.com/python/pandas_join_merge_dataframe.html
Pandas에서 두 Dataframe을 합치기 위해서는
pd.merge(df1, df2, on="user_name", how="inner") |
사용해보니 SQL에 inner join과 같아서 좋음
출처: http://chrisalbon.com/python/pandas_join_merge_dataframe.html
Pandas에서 두 Dataframe을 합치기 위해서는
pd.merge(df1, df2, on="user_name", how="inner") |
사용해보니 SQL에 inner join과 같아서 좋음
http://stackoverflow.com/questions/11440128/jquery-check-if-checkbox-is-not-checked
//전체선택
function fn_checkAll() {
if($("#psninfAgrYn").val() == "Y") {
$("input[name=psninfAgrYnSub]:checkbox").each(function(){
$(this).attr("checked", false);
});
$("#psninfAgrYn").val("");
$("#psninfAgrYn").attr("checked", false);
} else {
$("input[name=psninfAgrYnSub]:checkbox").each(function(){
$(this).attr("checked", true);
});
$("#psninfAgrYn").val("Y");
$("#psninfAgrYn").attr("checked", true);
}
}
//선택확인
function fn_checkCnt() {
var chkSubCnt = $("input[name=psninfAgrYnSub]").length;
var chkSubCntChecked = $("input[name=psninfAgrYnSub]:checked").length;
if(chkSubCnt == chkSubCntChecked) {
$("#psninfAgrYn").val("Y");
$("#psninfAgrYn").attr("checked", true);
} else {
$("#psninfAgrYn").val("");
$("#psninfAgrYn").attr("checked", false);
}
}
//화면구성
<form:checkbox path="psninfAgrYn" id="psninfAgrYn" value="" onclick="fn_checkAll();/>전체선택
<input type="checkbox" name="psninfAgrYnSub" onclick="fn_checkCnt(); />개인정보 항목에 동의
<input type="checkbox" name="psninfAgrYnSub" onclick="fn_checkCnt(); />이용목적 항목에 동의
<input type="checkbox" name="psninfAgrYnSub" onclick="fn_checkCnt(); />이용기간 항목에 동의
validation 규칙을 동적으로 부여하고 싶을 때 사용
구현하고자 하는 것은 데이터베이스에 저장된 비밀번호와 같은 값이면 validation규칙을 적용하지 않고,
저장된 비밀번호와 다른 값이면 validation 규칙을 적용하는 것이다.
$("userPw").bind("change", function(){ //비밀번호 변경되지 않음 if($("#userPw").val() == $("#userDbPw").val()) { $("#userPw").rules('remove', { ragelength:[9, 20] ,checkUserPwNum:true }); } else { //변경된 경우 $("#userPw").rules('add', { ragelength:[9, 20] ,checkUserPwNum:true }); } });
DBMS별 날짜 포멧
Oracle - MS SQL - DB2 UDB 의 서로 다른 날짜 형식을 맞추기위한 SQL문
--------------------------------------------------------------------------------
DBMS 별 시간, 날짜 조회 쿼리
--------------------------------------------------------------------------------
1. Oracle
- 날짜+시분초 까지 조회가능
select sysdate from dual;
- 날짜+밀리초+시간존 까지 조회
select current_timestamp from dual;
2. MS SQL
- 날짜 + 밀리초 단위까지 조회가능
select getdate();
3. DB2 UDB
- 날짜+밀리초까지 조회 가능
select current timestamp from sysibm.sysdummy1;
- 날짜만 조회
select current date from sysibm.sysdummy1;
- 밀리초 단위의 시간만 조회
select current time from sysibm.sysdummy1;
--------------------------------------------------------------------------------
DBMS 별 default date format
--------------------------------------------------------------------------------
1. Oracle
한글 : YYYY/MM/DD 영어 : DD-MON-YYYY
2. MS SQL
한글 : YYYY/MM/DD HH:MI:SS 영어 : MM-DD-YYYY HH:MI:SS
3. DB2 UDB
TIMESTAMP 타입 : YYYY-MM-DD-HH:MI:SS.MMMMMM
DATE 타입 : YYYY-MM-DD
TIME 타입 : HH:MI:SS.MMMMMM
--------------------------------------------------------------------------------
날짜 포맷 변환
--------------------------------------------------------------------------------
[ 형식 : 'YYYY.MM.DD' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY.MM.DD')
2. MSSQL : CONVERT(VARCHAR, date_exp, 102)
3. DB2 : REPLACE(CHAR(DATE(date_exp),ISO), '-', '.')
[ 형식 : 'HH:MI:SS' ]
1. Oracle : TO_CHAR(date_exp, 'HH:MI:SS')
2. MSSQL : CONVERT(VARCHAR, date_exp, 108)
3. DB2 : CHAR(TIME(date_exp) , JIS )
[ 형식 : 'YYYY/MM/DD' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY/MM/DD')
2. MSSQL : CONVERT(VARCHAR, date_exp, 111)
3. DB2 : REPLACE(CHAR(DATE(date_exp), ISO), '-', '/')
[ 형식 : 'YYYYMMDD' ]
1. Oracle : TO_CHAR(date_exp, 'YYYYMMDD')
2. MSSQL : CONVERT(VARCHAR, date_exp, 112)
3. DB2 : CHAR(DATE(date_exp))
[ 형식 : 'HH24:MI:SS' ]
1. Oracle : TO_CHAR(date_exp, 'HH24:MI:SS')
2. MSSQL : CONVERT(VARCHAR(8), date_exp, 114)
3. DB2 : CHAR(TIME(date_exp))
[ 형식 : 'YYYY.MM.DD HH24:MI' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY.MM.DD HH24:MI')
2. MSSQL : CONVERT(VARCHAR, date_exp, 102) + ' ' + CONVERT(VARCHAR(5), date_exp, 114)
3. DB2 : REPLACE(CHAR(DATE(date_exp), ISO), '-', '.') || CAST( TIME(date_exp) AS CHAR(5))
[ 형식 : 'YYYY/MM/DD HH24:MI:SS' ]
1. Oracle : TO_CHAR(date_exp, 'YYYY/MM/DD HH24:MI:SS')
2. MSSQL : CONVERT(VARCHAR, date_exp, 111) + ' ' + CONVERT(VARCHAR(8), date_exp, 114)
3. DB2 : REPLACE(CHAR(DATE(date_exp), ISO), '-', '/') || CAST( TIME(date_exp))
- http://www.dbguide.net/ 발취
참고 및 출처: http://static.springsource.org/spring/previews/validation.html
http://beyondj2ee.tumblr.com/post/14509015383/spring-3-0-validation-part1
http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:ptl:validation
http://www.roseindia.net/tutorial/spring/spring3/web/spring-3-mvc-validation-example.html
http://gyumee.egloos.com/3056225
스프링에서 validation사용하기
스프링에서 validation을 사용하는 경우는 값을 저장하는 경우 그값의 필수체크, 길이체크, 패턴체크를 하기위해서 사용하는 것 같다. 물론 이같은 경우는 내가 사용하기 위해서 한 것이다.
1.
maven을 사용한다면 maven의 pom.xml을 이용하여 validation관련 jar파일을 dependency에 추가해준다.
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
2.
그리고WebContent/WEB-INF에 위치한 dispatcher-servlet.xml파일을 열어서
<!-- Invokes Spring MVC @Controller methods -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<!-- Configures Spring MVC DataBinder instances -->
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="validator" />
</bean>
</property>
</bean>
<!-- Creates the JSR-303 Validator -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
를 추가해준다.
사실 다른 곳에서는 <mvc:annotation-driven /> 한줄을 추가해 주면 된다고 하지만 그럴경우
안되는 항목들이 있어 위와같이 하였다.
3. Controller단에서는
public String saveUserInfo(@Valid @ModelAttribute("personVo") PersonVO personVO
,BindingResult bindingResult, Model model
,SessionStatus status) {
~~~~~~~~~~~
}
@Valid를 써줘서 saveUserInfo 함수의 파라미터 personVO의 validation을 체크하겠다는 것을 기술한다.
4.
그다음 기존 아래와 같은 vo에서
public class PersonVO {
private String asgmtNm;
private int age;
}
validation체크할 것에 대한 정보를 입력한다.
public class PersonVO {
@NotNull
@Max(64)
private String asgmtNm;
@Min(0)
private int age;
}
여기서 asgmtNm은 널값이면 안되고, 최대 64바이트/ age인 경우 0보다 무조건 커야된다는 조건을 입력하였다.
사실 @NotNull(message="")를 사용하여 notnull인 경우 출력될 메시지를 직접 입력해줘도 되고,
WebContent/WEB-INF에 messages.properties파일을 만들어서 사용해도 된다.
messgaes.properties파일에서 메시지를 기술하는 방법은 아래와 같다.
NotEmpty.person.asgmtNm=
asgmtNm must not be blank.
(validation규칙.폼이름.폼에서항목 = 메시지)
5. 화면단에서는
<form:form commandName="personVO" name="person" id="person" method="post">
<form:input id="asgmtNm" path="asgmtNm" /><form:errors path="asgmtNm"/>
</form:form>
form:form을 사용해서 vo와 input항목을 매핑해 주도록 한다.
결과) 그렇게 해주고 나면 나중에 @NotNull, @Max(64)에 해당하는 항목이 나오면
form:errors에 그에해당하는 메시지가 출력된다.
출처: http://www.mungchung.com/xe/index.php?mid=protip&category=4482&document_srl=5306
이클립스에서 실행중에 Java compiler level does not match the version of the installed Java project facet 와 같은 메시지를 만났다면
해당 프로젝트를 선택하고 마우스 오른쪽을 누른다음에
project facets를 선택하여
거기에 있는 java 버전을 변경하여 준다.
var dsName = ds_NewUserAccount.ID+"_Temp";
Create("Dataset", dsName);
var dsObj = object(dsName);
for (var iCol = 0; iCol < ds_NewUserAccount.colcount; iCol++) {
dsObj.AddColumn(ds_NewUserAccount.GetColID(ds_NewUserAccount.GetColIDXbyorder(iCol)),
ds_NewUserAccount.GetColType(ds_NewUserAccount.GetColID(ds_NewUserAccount.GetColIDXbyorder(iCol))));
}
var idx = dsObj.AddRow();
dsObj.CopyRow(idx, ds_NewUserAccount, iCurrow);
1. 동적쿼리는 /rp인 경우에 가능하다. (/rv인 경우에 사용하는 방법은 안될 것 같다.. 정확치는 않음)
화면에서 보낼 파라미터를 아래와 같이 한다.
/rp [10][] /rv 사원명[박명수] 사원주소[경기도]
그럼 쿼리에서 사용할때는
WHERE 1=1
#10# AND 사원명 = ':(사원명)'
#01# AND 사원주소 = ':(사원주소)'
여기서 ##이 동적쿼리를 의미하는 것인데,
1은 파라미터 값이 있는경우
0은 파라미터 값이 NULL(없는)경우
X는 파라미터 값에 상관없는 경우
로 ##안에 순차적으로 들어오는 /rp에 맞춰서 값이 있는경우는 1, 값이 없는 경우는 0으로
파라미터 갯수만큼 ##안에 채우면 동적 쿼리가 완성된다.
그러므로 #10#은 첫번째 파라미터값이 있고, 두번째 파라미터 값이 없는 경우를(첫번째 파라미터가 널인지만 체크)
#01#은 첫번째 파라미터 값은 없고, 두번째 파라미터 값이 있는경우(두번째 파라미터 값이 널인지만 체크)를 의미하는 것이다.