https://start.spring.io/ 우선 위 사이트에 접속해서 스프링 초기 환경설정을 해준 뒤 GENERATE 버튼을 눌러서 다운받아준다. (설정은 위 화면과 동일하게 하였는데, 추후에 버전이 바뀌게 되어 현재와 버전이 다를수도 있다. 그럴땐 그 상황에서의 가장 안정적인 버전으로 하면 되는데, 그 기준은 (SNAPSHOT) 이 붙이 않은 것이 기준이며, 3.xx 는 자바 17을 써야하기때문에 나는 11이 이미 깔려있어서 그냥 2.7 버전으로 했다.) 그리고 의존은 일부러 쌩으로 해보기 위해 하나도 안넣었다. 그러면 진짜 찐 기본 라이브러리만 받아진다. 압축된 파일을 풀어주고 파일 안으로 들어가보면 build.gradle이 있다. 그것을 인텔리제이 혹은 이클립스에서 열어주고 빌드 및 라이브러리 다..
📌 스프링 이야기에 왜 객체지향 이야기가 나오는가 ? - 스프링은 다음 기술로 다형성 + OCP,DIP를 가능하게 지원 ✔️ DI(Dependency Injection) : 의존관계, 의존성주입 ✔️ DI 컨테이너 제공 > 자바 객체들을 컨테이너 안에 넣어놓고 의존관계를 주입하고 제어해줌 - 클라이언트 코드의 변경없이 기능 확장 - 쉽게 부품을 교체하듯이 개발할 수 있음 📌 스프링이 없던 시절 - 옛날 어떤 개발자가 좋은 객체지향개발을 하려고 OCP,DIP 원칙을 지키면서 개발을 해보니, 배보다 배꼽이 크다. 그래서 프레임 워크로 만들어버림 - 순수하게 자바로 OCP,DIP 원칙들을 지키면서 개발을 해보면, 결국 스프링프레임워크를 만들게 된다 (정확히는 DI컨테이너) - DI개념은 말로 설명해도 이해가 ..
SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 - SRP (Single responsibility principle): 단일 책임 원칙 - OCP(Open/closed principle) : 개방-폐쇄 원칙 - LSP(Liskov substitution principle) : 리스코프 치환 원칙 - ISP(Interface segregation principle) : 인터페이스 분리 원칙 - DIP(Dependency inversion principle) : 의존관계 역전 원칙 SRP (Single responsibility principle) 단일 책임 원칙 - 하나의 클래스는 하나의 책임만 가져야 한다. - 하나의 책임이라는 것은 모호하다. > 클 수 있고, 작..
객체지향의 특징 - 캡슐화 - 상속 - 추상화 - 다형성 객체지향 프로그래밍이란? 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메세지를 주고받고 , 데이터를 처리할 수 있다. (협력) 객체지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기때문에 대규모 스프트웨어 개발에 많이 사용된다. 유연하고 변경이 용이 컴포넌트를 쉽고 유연하게 변경하면서 개발 할 수 있는 방법 궁극의 유연함, 궁극의 변경 용이 >> 다형성 (Polimorphism) 다형성 역할과 구현으로 구분 실생활에서 비유 ) 운전자는 소나타를 타다가 테슬라 3로 바꾼다 > 그래도 운전 할 수 있음. 자동차라는 역할에 ..
Spring 이란? Java 의 웹 프레임워크로 Java 언어를 기반으로 사용한다. Java를 이용한 기술은 JSP,MyBatis,JPA 등 여러가지가 있는데 Spring은 이 기술들을 더 편하게 사용하기 위해 만들어졌다. Spring의 장점 1. 중복코드의 사용률 감소 2. 비즈니스 로직을 더 간단하게 해준다. 3.오픈소스를 보다 효율적으로 사용이 가능 => Java 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크 Spring 생태계 Spring은 어떤 특정한 하나가 아니라, 여러가지 기술들의 모음이다. - 스프링프레임워크 : 스프링의 핵심이 되는 기술 - 스프링부트 : 여러 스프링 기술들을 편리하게 사용하도록 도와줌 - 스트링 데이터 : DB 기술을 간단하게 도와주는 기술. 가장 많이 ..
SpreadJS 쓸 일이 생겨서 쓰는 김에 정리해본다. 공식 사이트를 보고 참고했으니 다들 참고하셔서 보시면 좋을 것 같다. Demos | SpreadJS JavaScript Demos Learn how you can easily add advanced spreadsheet capabilities to your JavaScript applications today to create financial, analysis, budgeting, forecasting, data collection, scientific and many other similar applications. Begin by selecting a featured demo www.grapecity.com 우선 프론트 연결까지만 만들어 볼 것..
Annotation이란? = 메타 데이터 (meta Data) : 애플리케이션이 처리해야할 데이터가 아니라, 컴파일 과정과 실행과정에서 코드를 어떻게 컴파일하고 처리할 것인지 알려주는 정보 아래와 같은 형태로 작성된다. @Annotation Annotation 용도 컴파일러에게 코드 문법에러를 체크하도록 정보를 제공 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 실행 시 (런타임 시) 특정 기능을 실행하도록 정보를 제공 컴파일러에게 코드문법 에러를 체크하도록 정보를 제공하는 대표적인 예는 @Overrride 어노테이션이다. @Override는 메서드 선언 시 사용하는데, 메소드가 오버라이드(재정의) 된 것임을 컴파일러에게 알려줘 컴파일러가 오버라이드 검사를 하도록 해..
WITH절 이란? WITH절은 이름이 부여된 서브쿼리 이며, CTE(Common Table Expression)를 표현하기 위한 구문이다. 임시테이블을 만든다는 관점에서본다면 VIEW와 쓰임새가 비슷한데 차이점이 있다면 VIEW는 한번 만들어놓으면 DROP할때까지 없어지지 않지만 WITH절의 같은경우 한번 실행할 쿼리문내에 정의되어 있을경우, 그 쿼리문안에서만 실행된다는 차이점이 있다. CTE(Common Table Expression) 란? 1. 기존의 View,파생 Table, 임시Table 등으로 사용되던 것을 대신할 수 있다. 2. 더 간결한 식으로 보여지는 장점이 있다. 3. CTE는 크게 비재귀적CTE, 재귀적CTE 두가지가 있다. 비재귀적 CTE : 재귀적이지 않은 CTE, 단순한 형태이며 ..
bindEvent : JavaScript에서 DOM 요소에 이벤트를 바인딩(연결)하는 함수 이 함수는 주로 이벤트 리스너를 등록하는 데 사용되며, 특정 이벤트가 발생했을 때 실행할 함수를 지정할 수 있도록 도와준다. 예시코드를 살펴보자 ! const button = document.getElementById('myButton'); function handleClick() { console.log('Button clicked!'); } button.addEventListener('click', handleClick); 위 코드에서 addEventListner를 사용하여 버튼 요소에 click이벤드를 감지하고, 이벤트 발생 시 handleClick 함수를 실행하도록 코드를 작성했다. 그런데 때로는 이벤트 리..
spread.suspendPaint();는 JavaScript에서 사용되는 코드 조각으로, 일반적으로 스프레드시트나 테이블과 같은 데이터 표시 구성 요소에서 발생하는 화면 갱신을 일시적으로 중지시키는 역할을 한다. 일반적으로 웹 어플리케이션에서는 데이터 변경이나 사용자 상호작용에 따라 화면이 업데이트 되는데, 이때 많은 양의 데이터가 포함된 구성요소의 경우, 데이터가 변경될 때마다 화면을 업데이트 하는 것은 성능적으로 비효율적일 수 있기때문에 화면갱신을 일시적으로 중단하는 메서드를 사용하여 각각의 작업마다 화면이 업데이트되는 것을 방지할 수 있다는 이점이 있다. 데이터 변경 작업이나 연산을 마친 후 spread.resumePaint();를 호출하면 화면 갱신을 다시 활성화시킬 수 있다. 요약 ) 대용량데..