기본형 : grep [OPTION] [PATTERN] [FILE] - 파일에서 특정 문자열을 포함한 줄의 내용 표시. grep "2021-06-29 14:15:27.407" /log/resin/erp/online/app.log - 파일에서 특정 문자열을 포함한 줄을 기준으로 위로 10줄, 아래로 20줄의 내용 표시. grep "2021-06-29 14:15:27.407" /log/resin/erp/online/app.log -B10 -A20
서로 다른 유형의 List 복사
/**
* @description
* <pre>
* source list 중 target list와 항목명이 같은 데이터를 복사
* </pre>
* @param srcList : source list
* @param trgtList : target list
* @param pTargetType : target type
*/
public static <E, T> void copyData(List<E> srcList, List<T> trgtList, Class<T> pTargetType) {
try {
for( E src : srcList) {
T trgt = (T) pTargetType.newInstance();
BeanUtils.copyProperties(src, trgt);
trgtList.add(trgt);
}
} catch (BeansException be) {
logger.debug(be.getMessage(), be);
} catch (Exception e) {
logger.debug(e.getMessage(), e);
}
}
사용예)
List<TrgtVo> trgtList = new ArrayList<TrgtVo>();
List<SrcVo> srcList = svc.getList(paramVo);
ErpUtils.copyData(srcList, trgtList, TrgtVo.class);관련글 : 서로 다른 유형의 object 복사
nexacro copy dataset
/*----------------------------------------------------------------------------------------------
* 설명 : dataset 복사. column명이 같은것만 복사.
* 파라미터 : pSrc : (필수) source dataset
pTrgt : (필수) target dataset
* 리턴값 : true : 복사 성공, false : 복사 실패.
-----------------------------------------------------------------------------------------------*/
this.gf_ErpCopyData = function(pSrc:nexacro.NormalDataset, pTrgt:nexacro.NormalDataset) {
try {
pTrgt.clearData();
var nToRow = 0;
pTrgt.set_updatecontrol(false);
for( var nRow = 0; nRow < pSrc.rowcount; nRow++ ) {
nToRow = pTrgt.addRow();
pTrgt.copyRow(nToRow, pSrc, nRow);
pTrgt.setRowType(nRow, pSrc.getRowType(nRow));
};
pTrgt.set_updatecontrol(true);
return pTrgt.rowcount == pSrc.rowcount;
} catch(e) {
return false;
};
};
사용예)
this.gf_ErpCopyData(this.ds_src, this.trgt);javascript string format 구현
String.prototype.format = function() {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
사용예)
var sTemp = " num1 : {0}, num2 : {1}";
console.log(sTemp.format("12","25"));
결과)
num1 : 12, num2 : 25Nexacro callback 정의 및 호출
//callback function
this.fn_callbackTest = function(param1, param2) {
console.log(param1);
console.log(param2);
};
//init object
this.fv_objConfig;
this.fn_initObject = function(){
this.fv_objConfig = {
objForm : this,
id : "service01",
callbackFunc : this.fn_callbackTest,
param1 : "p1",
param2 : "p2"
};
};
//call callback
this.fn_testFunc = function() {
var param1 = this.fv_objConfig.param1;
var param2 = this.fv_objConfig.param2;
var callbackFunc = this.fv_objConfig.callbackFunc;
var pThis = this.fv_objConfig.objForm;
if(callbackFunc){
callbackFunc.call(pThis, param1, param2);
}
};