전체 글

java

[Java] POI 오류, "허용되는 글꼴 수가 초과되어 이 파일에 글꼴 서식이 제대로 적용되지 않을 수 있습니다."

POI로 엑셀을 만들어 다운로드하여 열어봤더니 "허용되는 글꼴 수가 초과되어 이 파일에 글꼴 서식이 제대로 적용되지 않을 수 있습니다." 라는 오류가 떴다. 엑셀에서는 적용되는 글꼴의 개수를 최대 512개로 제한하고 있다. https://answers.microsoft.com/ko-kr/msoffice/forum/all/%EC%97%91%EC%85%80-%ED%8C%8C%EC%9D%BC%EC%9D%B4/c9349b2f-1599-4ac3-a455-66e796546035 리디렉션 중 login.microsoftonline.com 글꼴을 512개 이상 사용했다면 이 오류가 날 수 있다. Excel 2007이상에서는 경고창을 닫고 작업을 계속 할 수 있지만, Excel 2003과 Excel 2002에서는 수정 ..

java

[java] Lambda 람다란?

람다함수 람다함수는 메소드를 하나의 식(Expression)으로 표현하는 것으로 익명함수(Anonymous function)를 생성 한다. 함수형 프로그래밍을 하고자 하며 나왔다고 한다. 자바에서는 메소드 혼자 선언해서 쓸 수 없다. 무조건 class의 구성멤버로 선언되어야 한다. 람다식으로 생성되는 것은 메소드 자체가 아니라 실행문(메소드)를 가진 객체이다. 이 객체는 일반적인 객체가 아닌 함수형 인터페이스를 구현한 익명 구현 객체이다. 람다의 특징 1. 익명함수 함수 이름이 없다. 익명함수는 일급객체(first class citizen)이다. 2. 커링 두개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다로 단순화 할 수 있다. 람다의 표현식 1. 화살표로 표시한다. 2. 몸체가 한줄이..

javascript

[javascript] nested object deep copy, 중첩 Object 깊은 복사

nestd object 란? 아래처럼 중첩된 object를 말한다. // nested Object const a = { b : 100, c : { d : 1, e ; 2 } } //nested Array const b = [{a:1, b:2}, {c:3}] const c = [[a,b],[c,d]] shallow copy & deep copy object(array)를 copy할 때는 shallow copy와 deep copy가 있다. shallow copy 방법을 사용하면 해당 object의 property 자체를 복사하는게 아니라, reference를 복사하게된다. 따라서 새로 copy한 object에서 무언가 바꾸면 원래 object에서도 바뀐다. 이렇게 하지 않고 실제로 복사한 것을 deep co..

Spring

Eclipse로 war 파일 만들기

File > Export > Web > WAR file Web project : Export할 프로젝트 선택 Destination : war파일이 위치할 path optimize for .. 체크 : 알맞은 톰캣 버전 선택 Finish

VScode

[VScode] 키보드 단축키 만들기

1. explorer창으로 focus이동 2. create new file 3. create new folder 이렇게 새가지 키보드 단축키를 만들어 볼 것이다. 1. explorer창으로 focus이동 ctrl + shift + p 를 이용하면 작업할 내용을 검색해서 실행할 수 있다. ctrl + shift + p 를 누르고 explorer를 검색한다. 아래에 File : Focus on Files Explorer의 톱니바퀴를 클릭한다. 이런 창이 나오는데, keybinding 부분을 더블클릭하면 어떤 키를 사용해서 단축키를 만들거냐고 물어본다. 원하는 키를 입력해준다. 나는 ctrl+f8을 눌렀다. 키를 누르고 Enter를 누르면 완료! 2.3.create new file & create new fo..

javascript

[javascript] super의 역할

super의 역할 1 : 상위 객체의 프로토타입을 참조 class B{ sayB(){ console.log("b"); } } class A extends B{ sayA(){ super.sayB(); } } const a = new A(); a.sayA(); //"b" super는 자신을 참조한 메소드(sayHello)가 바인딩하는 객체(A.prototype)의 프로토타입(B.prototype)을 가리킨다. (A.prototype의 프로토타입객체는 B.prototype이다.) 위의 문장이 이해가 안가면 아래를 보고 오자 2022.04.06 - [javascript] - [javascript] 상속, class, extends키워드 [javascript] 상속, class, extends키워드 javascr..

javascript

[javascript] 프로토타입 섀도잉, 오버리이딩

javascript에서 오버라이딩을 구현하는 방법을 알아보겠다. function A(){} A.prototype.sayHello = function() { console.log("prototype hello"); } // 프로토타입 섀도잉 const a = new A() a.sayHello(); // prototype hello class A가 있을때, prototype에 sayHello가 있다고 하자. new를 이용해 인스턴스 a를 생성하면 a.sayHello에 접근할 수 있을 것이다. 이때 a에 똑같은 sayHello라는 프로퍼티를 추가하여 오버라이딩 할 수 있다. a.sayHello = function() { console.log("my hello"); } //프로토타입 오버라이딩 console.l..

javascript

[javascript] 상속, class, extends키워드

javascript에서는 calss와 extends를 이용하여 상속을 구현할 수 있다. class B{ } class A extends B{ } 이때 extends뒤에 오는 것은 [[construct]] 내부 슬롯이 있는 constructor만 가능하다. 따라서 아래와 같은 코드도 가능하다. function B(){ } class A extends B(){ } 내부슬롯 [[construct]]에 대한 설명은 아래를 참고 2022.04.05 - [javascript] - [javascript] 생성자 함수, 내부 슬롯 [[Construct]] [javascript] 생성자 함수, 내부 슬롯 [[Construct]] 자바스크립트에서는 함수를 new로 생성하여 객체를 생성할 수 있다. function A(){..