전체 글

이것 저것 공부해보기 좋아하는 초보 개발자로, 제가 공부하는 내용들을 제가 이해하기 쉽게 작성합니다. 질문이나 지적은 언제나 환영합니다.
1. Word 파일(.docx) 1) 바이너리 파일 작성 완료 후 바이트 배열로 만들기 InputFileStream is = new InputFileStream("/filePath"); XWPFDocument doc = new XWPFDocument(is); ... ByteArrayOutputStream os = new ByteArrayOutputStream(); doc.write(os); os.close(); doc.close(); byte[] xwpfBytes = os.toByteArray(); // xwpfBytes를 DB에 넣는 작업 수행 2) DB에서 바이트 배열 가져와서 파일로 다운로드 String fileName = "document.docx"; byte[] fileBytes = mapper..
1. 워드 파일 생성 File templateFile = new File(path, templateFileName); XWPFDocument doc = new XWPFDocument(new FileInputStream(templateFile)); 2. 테이블 생성(기존 템플릿 테이블 사용 시 POIWordUtil.copyTable() 사용 가능) XWPFTable tbl = doc.createTable(); POIWordUtil.copyTable(templateTable, tbl); XWPFTable tbl = doc.createTable(); XWPFTableRow row = tbl.createRow(); // 이미 존재하는 XWPFTableRow 삽입 시 addRow() 사용 가능 XWPFTableC..
· Backend/Java
회사의 SPA 어플리케이션 개선 작업을 하면서 스크립트로 서버와 통신하는 일이 잦다. 이전에 혼자 프로젝트를 진행하면서 크게 의식하지 않고 사용했던 부분을 회사 업무를 수행하면서 헷갈렸던 부분들에 대해 제대로 정리하게 됐다. ajax 를 사용해 서버로 데이터를 보낼 시 1. Object 형태로 전달 시에는 해당 변수명과 일치한다는 전제 하에 @RequestBody 사용 가능 1) JavaScript let obj = { name: '이름', company: '회사', department: '부서' } $.ajax({ url: "/example", type: "GET"/"POST", data: { dataName: obj }, success: function(result) { ... }, error: fu..
아래 예제에서는 obj2가 빈 객체와 obj를 합친 것으로, 실상은 obj 객체를 복사한 것으로 볼 수 있다. let obj = { name: "이름", age: 22, company: "회사명" } let obj2 = $.extend({}, obj);
· Backend/Java
배열을 리스트로 변환해 병합하려는 리스트들을 새로 생성한 리스트에 추가한다.(addAll) List list = new ArrayList(); List list2 = mapper.getList1(obj); List list3 = mapper.getList2(obj); list.addAll(list2); list.addAll(list3);
1. 테이블 생성 생성한 파워포인트 파일에 슬라이드 추가 후 슬라이드에 테이블을 생성하고 그 크기를 정할 수 있다. 테이블의 내부 셀 크기에 따라 크기가 달라지므로 이전의 이미지 삽입과 달리 시작 지점의 x좌표, y좌표만을 정해줬다. 만약 테이블 생성 시(createTable) 인자로 로우 수와 컬럼 수를 지정해준다면, 로우 추가 시에 셀을 추가하지 않아도 해당 컬럼 수 만큼 셀이 생성된다. 때문에 그럴 경우에는 row.getCells().get(컬럼 인덱스)의 방식으로 해당 셀에 접근해야 한다. (Paragraph까지는 자동으로 생성해주나. 따라서 접근한 Cell에 getParagraphs().get(idx);를 통해 Paragraph에 접근한 뒤 TextRun 역시 같은 방법으로 접근하려 하면 nul..
이전에는 POI와 Jxls를 이용한 템플릿 기반 엑셀 파일을 생성 및 다운로드 하는 게시글을 작성했다. 이번에는 특정 데이터를 템플릿을 기반으로 보여주되 엑셀이 아닌 파워포인트에 내용을 작성하는 작업을 맡게 되었다. 0. 의존성 1) Maven 이용 시 org.apache.poi poi 4.1.2 2) Gradle 이용 시 implementation 'org.apache.poi:poi:4.1.2' 1. 템플릿 파일 가져오기 File originalFile = new File(servletContext.getRealPath("/WEB-INF/template"), "템플릿 파일명"); 2. 가져온 템플릿 파일을 기반으로 새로운 파워포인트 파일 생성 FileInputStream is = new FileInpu..
State 이전 글에서 소개한 리액트의 props는 props를 사용하는 컴포넌트를 호출하는 부모 컴포넌트에서 그 값을 전달해주고, 해당 컴포넌트는 그 값을 변경할 수 없다. 반면에 state는 컴포넌트 내부에서 변경될 수 있는 값을 의미한다. 2021.11.11 - [React] - React) props란? React) props란? props란 properties의 약어로 컴포넌트 속성을 설정할 때 사용하는 요소이다. props 값은 해당 컴포넌트를 불러와 사용하는 부모 컴포넌트에서 설정할 수 있고, 해당 컴포넌트 자신은 이를 변경할 수 u-u002.tistory.com 리액트에서는 컴포넌트를 생성하는 방식이 두 가지 존재한다. 컴포넌트 종류에 따라 클래스형 컴포넌트에서는 state 그대로, 함수형..
props란 properties의 약어로 컴포넌트 속성을 설정할 때 사용하는 요소이다. props 값은 해당 컴포넌트를 불러와 사용하는 부모 컴포넌트에서 설정할 수 있고, 해당 컴포넌트 자신은 이를 변경할 수 없다. props는 컴포넌트의 JSX를 리턴하는 부분에서 클래스형 컴포넌트의 경우에는 'this.props.props명', 함수형 컴포넌트의 경우에는 'props.props명'의 형태로 사용할 수 있다. 1) defaultProps props 값을 따로 설정하지 않았을 때 보여줄 기본값을 설정하는 것으로, defaultProps는 해당 컴포넌트 자신의 파일에서 설정할 수 있다. 2) children props의 종류 중에 부모 컴포넌트에서 해당 컴포넌트 태그 사이에 전달하는 내용을 값으로 삼는 것을..
화살표 함수는 ES6의 문법에서 함수를 표현하는 새로운 방식이다. 하지만 화살표 함수는 완전히 기존의 function을 대체하는 것은 아니니 유의하자. 사용 용도가 다른데, 일반적으로 화살표 함수는 파라미터로 함수를 전달할 때 유용하게 사용된다. 형태적으로는 일반 함수는 'function 함수명( ) { ... }'의 형태를 지니지만 화살표 함수는 'const 함수명( ) { ... }'의 형태를 가진다. 일반 함수는 자기 자신이 종속된 객체를 this로 가리키며, 화살표 함수는 자신이 종속된 인스턴스를 가리킨다고 한다. Javascript에서의 객체가 Java에서의 인스턴스, Javascript에서의 인스턴스가 Java에서의 클래스의 느낌으로 다가오는데 이 부분에 대해서는 다시 확인해봐야 겠다.
devYH
모르는 것이 많습니다