전체 글 10

[Java - Basic] 인터페이스, default, 다형성

1. Java InterfaceJava에서 인터페이스는 다중 상속을 지원하고 코드의 유연성과 확장성을 제공한다.인터페이스를 구현하는 클래스들은 인터페이스가 정의한 메서드를 모두 구현해야 한다. 이를 통해 코드의 일관성을 유지하고, 서로 다른 클래스 간 호환성을 보장할 수 있다. 개발자들은 개발을 하기 전 서로 업무를 구분한다.업무가 연계되는 부분이 생기면서 만들어지지 않은 부분은 서로 참조하기 위한 것인데, 나중에 호출하면 알아서 쓸 수 있게 하도록 미리 정의하는것이다. 인터페이스에서 정의하는 method는 추상클래스처럼 구현체는 없다.그냥 method와 parameter 정도만 정의한다. public class InterTest01 { public static void main(String[] a..

덕개 2024.04.27

[JDK 파헤치기 - JVM] 1. 클래스로더(Class Loader)

클래스로더 JVM은 자바 바이트 코드 파일(.class)을 읽어서 실행하는데, 이 class 파일을 동적으로 런타임 데이터 영역에 로딩해주는 것이 클래스로더이다. HelloWorld.java 파일에 HelloWorld 출력소스가 있다고 가정해보자. 이 자바소스를 실행하면 OS는 가상 머신 프로세스(자바 바이너리)를 구동한다. 자바 가상 환경이 구성되고 스택 머신이 초기화된 다음 HelloWorld 클래스 파일이 실행된다. 알다시피 애플리케이션의 진입점은 HelloWorld.class에 있는 main() 메서드이다. 제어권을 이 클래스로 넘기려면 이 클래스를 로드해야 한다. 자바 프로세스가 새로 초기화되면 사슬처럼 줄지어 연결된 클래스로더가 차례차례 작동한다. 클래스로더는 3가지 단계로 작동하는데 로딩(L..

덕개 2024.04.02

[Vue.js] Vuex를 대체할 Pinia에 대해 알아보자.

1. Pinia란 무엇인가요? Pinia는 Vue.js 애플리케이션에서 상태 관리를 위한 상태 관리 라이브러리입니다. Vuex와 같은 다른 Vue.js 상태 관리 도구와 달리 Pinia는 TypeScript에서 제공하는 제네릭을 사용하며, Vuex보다 더 가볍고 직관적인 API를 제공합니다. 2. Pinia를 사용하는 이유는 무엇인가요? Vuex와 같은 다른 상태 관리 도구보다 더 가볍고 직관적인 API를 제공합니다. Vuex와 같은 다른 상태 관리 도구와 달리 TypeScript에서 제공하는 제네릭을 사용하여 안정성과 유지 보수성을 높입니다. Vuex보다 더 작은 번들 크기를 가지므로 애플리케이션 성능을 향상시킵니다. 핫 모듈 리로딩(HMR)을 지원합니다. 더보기 핫 모듈 리로딩(HMR)이란? 핫 모듈..

덕개 2023.04.14

[Javascript] TypeScript 1 - 타입스크립트란? (자바스크립트를 타입스크립트처럼 써보자)

1. 타입스크립트란? 타입스크립트란 이름 그대로 자바스크립트에 타입을 부여한 언어이다. 공식문서의 설명을 그대로 빌리자면, 타입스크립트는 브라우저에서 실행하기 위해 파일을 한번 변환해주어야 한다. 이 변한 과정을 우리는 컴파일(compile)이라고 부른다(수많은 공식문서들 중에 가장 친절한 설명인 것 같다). 자바스크립트의 특정 값을 한눈에 확인할 수 있는 확장된 언어라고 볼 수 있다. 2. 왜 타입스크립트를 써야할까? 에러 방지 에러방지는 타입스크립트의 궁극적인 목적이라 할 수 있다. 아래의 코드를 보자. //sample.js function sum(a, b){ return a + b; } //sample.ts function sum(a: number:, b: number) { return a + b;..

덕개 2023.02.12

[Vue.js] 엑셀(Excel) 다운로드 기능 구현하기 ExcelJS, file-saver

1. 플러그인 - ExcelJS : 소스만봐도 어떤 기능인지 금방 파악할 수 있을 정도로 사용하기 간편하게 구성되어 있고, 공식문서 또한 잘 정리되 있어 참고하며 혼자 개발하기에도 좋다. ExcelJS 공식문서 : https://github.com/exceljs/exceljs GitHub - exceljs/exceljs: Excel Workbook Manager Excel Workbook Manager. Contribute to exceljs/exceljs development by creating an account on GitHub. github.com - file-saver : ExcelJS에는 엑셀파일을 생성 후 파일로 추출하는 기능이 없기때문에 파일을 추출할 수 있는 라이브러리를 추가해주어야 한..

덕개 2023.02.10

[Javascript] var , let , const 차이 (ES5, ES6)

var, let, const 는 변수선언 방식 중 하나이고, 각 기능이 살짝 다르기도 하고, 성능도 달라서 한 때 뜨거운 감자였던 적도 있다. 1. var 자바스크립트의 원조 변수선언 방식이다. 이렇게 기존의 name 이라는 변수를 선언해도, 재정의가 가능하다. 하지만 이는 치명적인 단점이 존재하는데 소스가 많아질수록 기존 변수의 존재를 잊어버리고 재정의를 해버리는 경우이다. 이 경우, 문제가 발생하면 찾기도 힘들고 예상치 못한 결함이 될 수 있다. 이러한 기존 자바스크립트의 여러 단점을 보완하기 위해 ES6가 등장했다. ES6 란? ECMAScript2015와 동일한 용어이다. 2015년은 ES5(2009년)이래로 진행한 첫 메이저 업데이트가 승인된 해이다. (ES5 이후 버전이라고 해서 사람들은 ES..

덕개 2023.01.19

[음악 장르] 01. 컨트리 뮤직(Country Music) - 카우보이 캡, 블루진 그리고 가죽부츠

우리가 생각하는 미국의 슈퍼스타와 음악 하면 대부분 락앤롤(Rock and Roll), 힙합(Hip hap) 이 대부분 미국을 대표한다 생각하는데 CBS에서 가장 좋아하는 음악 장르가 뭐냐 설문조사를 해봤더니 21%가 Country를 선호한다고 하였고, 그 다음이 18%가 Rock을 선호한다고 하였다. 미국 내수시장에선 Country가 거의 지배적인 위치를 갖고 있다. 한국의 가수에 대해 외국인들에게 물어본다면 BTS, 싸이일 것이다. 하지만 한국문화에 깊이 관심이 있지 않으면 나훈아나 남진같은 트로트 스타들에 대해 들어봤을 가능성이 낮은것과 비슷하다. 컨트리 음악은 미국의 대도시가 아닌 카우보이같은 내륙의 드넓은 대지를 대표하는 곡이다. 대부분 미국 대도시의 문화가 중심이 되는 할리우드 영화에서 우리가..

덕개 2022.10.29

[Json/Java Serializer] 이슈해결 - No serializer found for class...

1. 어떤 에러인가. Spring Boot 를 처음부터 다시 설정하는데 DB에서 select 하는 도중 해당 이슈가 터졌다. 에러 로그를 보면 수상해 보이는것이 하나 있다. "Serializer". VO , DTO 객체가 Serializer를 상속받고 있을때가 있는데, 데이터를 json형태로 변환하기 위해 직렬화하는것이다. 해당 이슈는 직렬화 하는 과정에서 접근 제한자가 public 이거나 getter/setter를 이용하기 때문에 인스턴스 필드를 private으로 선언하면 json으로 변환하는 과정에서 에러가 발생한다고 한다. 2. 이슈해결 롬복을 사용하는 경우 @Getter가 있지 않아서 JSON으로 파싱이 불가해서 안된다는 글도 있었는데, @Data 를 사용하고있었기 때문에 이건 아니라고 생각되어 ..

덕개 2022.07.04

스프링부트(Spring Boot) 로 RESTful한 API를 만들어보자 (2) - 디비연결, 데이터가져오기

1. DB연결 자 이제 본격적으로 CRUD를 하기위해 디비연결을 하자. 사용할 DBMS는 MySQL 이지만 MariaDB, Oracle 뭐든 다 상관없다. 먼저, pom.xml에서 DB연결에 필요한 라이브러리를 설치한다. 더보기 org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.0 mysql mysql-connector-java runtime 1-1. 연결 확인 위처럼 연결은 했지만 중요한건 항상 테스트를 해보는거다. 스프링의 장점은 테스트환경이 잘 구성된다는 점이지 src/test/java 폴더로 가서 MySQLConnectionTest.java 를 만들어주자 application.properties 에서 디비환경을 설정했지만, 테스트파일에서 다시 해야..

덕개 2021.10.31

스프링부트(Spring Boot) 로 RESTful한 API를 만들어보자 (1) - 간단설명, 환경설정

학습레벨 : 빡대가리 레벨 뇌만 있으면 이해할 수 있도록 설명 1. REST API jonna 쉬운설명 - HTTP URI를 통해 GET, POST, PUT, DELETE 요청을 보내고 해당 자원에 대한 CRUD기능을 적용할 수 있다. - 설계가 jonna 쉽다. 왜냐하면 HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다. (이게 장점이자 단점이다... 왜냐하면 별다른 표준이 없다는 뜻이기도 하니까.) - Method 작성기준을 통일하면 URL만 봐도 딱 무슨 기능인지 누구나 파악할 수 있다.(추후 다시 언급) 설명을 아무리 길게쓰고 잘 써봤자 나같은 빡대가리는 직접 구현해봐야 아~ 조금 이해를 하기때문에... 바로 코드로 이야기한다. 2. 환경설정 앞으로 프레임워크는 스프링부트로 하도록 ..

덕개 2021.10.18