기본형 : 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 : 25
Nexacro 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); } };