Language24 Java Poi 엑셀 이미지 삽입하기 XSSFWorkbook workbook = new XSSFWorkbook();XSSFSheet sheet = workbook.createSheet("Sheet 1");try { XSSFCellStyle headerStyle = workbook.createCellStyle(); //Font 설정 XSSFFont headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setColor(IndexedColors.WHITE.getIndex()); headerFont.setFontHeightInPoints((short) 20.. 2025. 2. 11. Java 디렉토리 전체 압축하기 (+ text 파일로 특정 파일/폴더 만 선택하여 압축하기 ) 요구사항 1. 아래와 같은 형태의 text 파일을 읽어 특정 폴더 아래의 원하는 항목들만 선택 압축한다. Folder /sampleFolder /testFile .pngFile .pdfFile .results.xlsxFile .results.unfiltered.tsv.gz 2. Folder 는 Nested 하게 중첩된 Folder 전체를 포함한다. ex) /sample/first/second/third/forth/fifth/testfile.txt 소스코드 1. 파일리딩 //압축 원하는 파일을 선택하기 위한 스크립트 텍스트 파일String filename = "C:/downlo.. 2025. 2. 11. ECMAScript 2016(ES7) ~ ECMAScript 2020(ES11) ECMAScript 2015, ES6는 이미 많은 곳에서 사용되고 있는 만큼, 그 이후 버전인 ES7부터 올해 발표될 버전인 ES11까지 어떤 기능이 추가되었고, 변화해 왔는지 살펴보도록 하겠습니다. tc39/proposals/finished-proposals에 따른 Proposals와 출시 연도를 살펴보면 아래와 같습니다. Proposals TC39 meeting notes Expected Publication Year Array.prototype.includes November 2015 2016 Exponentiation operator January 2016 2016 Object.values/Object.entries March 2016 2017 String padding May 2016 2017 .. 2020. 11. 15. ECMAScript 2020 aka ES11 2015년 6월 처음 ES6가 등장한 이후, 매년 6월 새로운 버전의 ECMAScript 명세가 발표되고 있습니다. 올해에는 ECMAScript 2020, ES11가 발표 예정입니다. TC39의 Stage 4(Finished Proposals)를 기반으로 어떤 기능들이 새롭게 추가되는지 알아보도록 하겠습니다. TC39? TC39는 Technical Committee 39의 약자로, ECMA-262(ECMAScript 표준 기술 규격) 명세를 관리하는 위원회입니다. Mozilla, Google, Apple, Microsoft 등의 메이저 브라우저 벤더사와 Facebook, Twitter 등 표준을 올바르게 구현해야 할 책임을 갖고 있으며, 언어 표준의 변화에 직접적으로 영향을 받는 단체들이 여기에 속해 있.. 2020. 11. 15. Prototype Chain 자바스크립트에는 객체를 상속하기 위해서 프로토타입 체인을 이용합니다. 프로토타입 체인이란 객체의 생성 과정에서 모태가 되는 프로토타입과의 연결고리가 이어져서, 상위 프로토타입으로 연속해서 이어지는 관계를 의미합니다. 그리고 이 연결고리 역할을 하는 것이 이전 글에서 설명했던 Prototype Link입니다. 모든 객체가 가지고 있는 속성인 _proto_가 상위 Prototype Object를 가리키고 있는 것입니다. 개념 자체는 어렵지 않습니다. var Foo = function() {}; Foo.prototype.hello = function() { console.log("hello") }; var foo1 = new Foo(); var foo2 = new Foo(); foo1.hello(); foo2.. 2020. 11. 15. Prototype ※이 글을 이해하기 위해 자바스크립트와 객체지향, 그리고 자바스크립트 객체 생성 방법에 대한 지식이 필요합니다. 자바스크립트는 프로토타입 기반 객체지향 언어입니다. 프로토타입 기반 프로그래밍은 객체지향 프로그래밍의 한 종류로, 클래스 기반 언어에서 상속을 사용하는 것과 달리 객체의 원형(프로토타입)을 복제(Cloning)하여 객체를 확장합니다. 클래스리스(Class-less), 프로토타입 지향 혹은 인스턴스 기반 프로그래밍이라고도 부릅니다. 자바스크립트 외에도 Perl이나 R 등이 프로토타입 기반 언어에 속합니다. 자바스크립트의 새로운 버전인 ECMA2015에서 드디어 class 키워드를 도입하였습니다. 하지만 내부적으로는 여전히 프로토타입 기반으로 동작합니다. 프로토타입 프로토타입(prototype)이.. 2020. 11. 15. String Constants Pool 프리미티브 타입의 값을 비교할 때에는 주소 값을 비교하기 위해 '==' 연산자를, 레퍼런스 타입의 값을 비교할 때에는 실제 참조하는 값을 비교하기 위해 'equals' 메서드를 이용합니다. 그리고 String의 경우에는 비교할 때에는 'equals'를 이용하기를 권장하는데, '==' 연산자로 비교하면 어떻게 될까요? String str1 = "FLYING"; String str2 = "FLYING"; System.out.println(str1 == str2); //true System.out.println(str1.equals(str2)); //true (literal 방식으로 String을 생성한다면) '==' 연산자를 이용해도 결과가 일치합니다. '==' 연산자를 이용했을 때 true가 나온다는 것은.. 2020. 11. 15. 클린 코드 작성 : 더 나은 개발자가 되기 위한 단계 ※ 이 글은 Sushil Ale가 쓴 Writing Clean Code: A Step Towards Being a Better Developer의 번역본입니다. 개발자들은 빠르게 변화하는 기술 시장에서 살아남기 위해 기술 스택을 알고, 숙련도를 높이는 등 개인의 스킬을 향상하기 위해 노력합니다. 보유기술을 늘리기 위해 새로돈 도구, 언어, 기술들을 배우려 합니다. 하지만 이렇듯 새로운 역량을 키우는 것 외에도 중요한 것은 어떻게 코드를 작성하는가에 대한 고찰입니다. 코드는 지속적으로 추가되거나 수정되고, 디버그 할 필요가 있기 때문에 깨끗하고 이해하기 쉬운 코드가 되어야 합니다. 쉽게 읽을 수 있고, 이해할 수 있고, 유지 보수할 수 있는 프로그램을 작성하기 위해 클린 코드의 지침을 따르는 것을 권고합니.. 2020. 11. 15. Java(JVM) Memory Model(Runtime Data Areas) JVM은 컴파일된 자바 바이트코드를 실행하는 역할을 합니다. 이때, JVM이 메모리 관리를 어떻게 하는지, 그 구조에 대해 살펴보겠습니다. JDK 버전이 업그레이드 될 때마다 Java Memory Model도 지속적으로 업그레이드되어 왔습니다. 하지만 전체적인 구조는 유사합니다. 이 글은 JDK8을 기준으로 작성되었습니다. Java(JVM) 메모리 구조를 살펴보기 앞서 한가지 알아두어야 할 것이 있습니다. JVM 그 자체는 구현체가 아닌 스펙일 뿐이라는 것입니다. JVM Vendor들은 이 스펙을 기반으로 JVM을 구현했고, 구현체의 대표적인 예로 Oracle사의 Hotspot JVM, IBM사의 IBM JVM이 있습니다. Hotspot JVM의 사용률이 압도적으로 높고, 대부분 Hotspot JVM을 .. 2020. 10. 21. [Javascript] Debounce & Throttle 자바스크립트 개발에 있어서 이벤트는 빠질 수 없는 요소입니다. 과장을 보태 자바스크립트 개발을 해 본 개발자 중에 이벤트 처리를 해 보지 않은 개발자는 없다고 말해도 과언이 아닐 것입니다. 디바운스(Debounce)와 스로틀(Throttle)은 이러한 이벤트를 제어하는 방법으로, 과도한 이벤트의 발생이 성능 저하를 초래하지 않도록 하기 위해 사용합니다. 대표적으로 디바운스와 스로틀을 이용하여 이벤트 발생을 제어하는 기능은 아래와 같습니다. 스크롤 휠을 이용한 지도 확대/축소 검색어 입력시 자동완성 혹은 연관검색어 노출 피드 방식의 데이터 노출 (스크롤링을 통한 데이터 노출) 이벤트 오버클럭(Overclock - 과도한 이벤트 발생)은 리소스 사용량을 과도하게 증가시키기 때문에 성능 문제를 야기하고 사용자.. 2020. 10. 21. 이전 1 2 3 다음