Cheers Hena ;) 259

[Javascript] var / let / const 차이점 ?

자바스크립트에서 변수를 선언할때 var, let, const 를 사용한다. 어떤 차이점이 있을까? 1. 변수선언 방식 var, let, const 는 javascript의 변수선언 방식이다. 같은 기능을 하는것 같지만 조금씩 다른 기능을 하고 있다. var 중복 선언 가능. 재할당 가능. var title = 'book'; console.log(title); // book var title = 'movie'; console.log(title); //movie title = 'music'; console.log(title);//music var 는 원조 변수선언방식으로, 위 코드와 같이 선언한 변수가 동일한 이름으로 중복 선언이 가능하다. 즉, 마지막에 할당된 값이 최종 변수에 저장된다. 변수를 유연하게 ..

Back-end/JavaScript 2022.09.07

크롬 개발자모드로 브라우저에서 HTTP POST방식 호출하기 (feat.XMLHttpRequest 객체란?)

프론트에서 백엔드로 비동기식 호출을 하는 경우, 클라이언트단에서 특정 기능의 url를 호출하면 백엔드에서 실행된다. 만약, 프론트엔드 범위까지 개발 담당이 아닌경우 테스트를 위해서 임의로 테스트 페이지를 만들곤 하는데 굳이 화면개발 없이 크롬 개발자모드의 콘솔에서 간단히 호출 및 테스트 할 수 있는 방법이 있어 공유한다. 웹에서 크롬 개발자 모드 (단축키 F12)의 console 에서 비동기 통신 객체인 XMLHttpRequest 객체를 생성하여 서버로 요청을 보내는 방법이다. 먼저 XMLHttpRequest 객체에 대해서 간단히 알아보자. XMLHttpRequest(XHR)객체란? ajax 요청을 생성하는 javaScript API로 브라우저와 서버간의 네트워크 요청을 전송한다. 서버와 상호작용하여 ..

Back-end/DEV notes 2022.08.24

CORS란? No 'Access-Control-Allow-Origin' header is present in the requested resource. 에러해결

웹 개발시 클라이언트단의 브라우저에서 외부 서버로 ajax 요청 시 자주 발생하는 실패 메세지. Fail to load '호출URI': No 'Access-Control-Allow-Origin' header is present in the requested resource. Origin '요청URI' is therefore not allowed access. 원인은 자바스크립트 엔진 표준스펙에 동일출처 정책(SOP:same-origin-policy) 보안 규칙 때문이다. SOP(Same-origin Policy) 자바스크립트에서 XMLHttpRequest로 외부서버 접근시에는 같은 출처(Same Origin)의 페이지로만 접근이 가능도록 하여 동일한 출처(프로토콜, 호스트명, 포트) 가 모두 일치해야 데..

Back-end/DEV notes 2022.08.19

스프링에서 자주 사용하는 기본 @어노테이션 정리

@ 어노테이션이란? 어노테이션의 사전적 의미는 주석이지만 Java에서는 그 이상의 메타 데이터 역할을 한다. 어노테이션을 선언하여 특수한 기능을 사용할 수 있다. @Component 스프링에서 관리하는 객체임을 표기하는 가장 기본적인 범용 스테레오타입 어노테이션. 스프링 빈으로 등록시키는 역할을 수행. Application Context에서 스프링 빈을 등록할 때, 빈으로 등록할 후보 클래스들을 탐지하여 등록한다. 에서는 @Component만 스캔하도록 되어있다. 당연하게 쓰던 어노테이션을 따라가서 소스를 살펴보자.... ex) @Controller @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Component public @inte..

Spring DI 스프링 의존성 주입 3가지 방법

Spring DI 스프링에서 의존성 주입(DI)이란, 객체간 의존성을 개발자가 객체 내부에서 직접 호출(new연산자)하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 외부에서 두 객체 간의 관계설정을 해주는 디자인 패턴으로, 인터페이스를 사이에 두어 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, 런타임 시 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 한다. public class Controller{ private Service service; service.test(); } } 다음과 같이 Controller객체가 Service객체를 사용하고 있는 경우, Controller는 Service에 의존성이 있다고 할 수 있다. 의존한다는 것은 의존대상, 여..

스프링 Service에서 ServiceImpl를 사용하는 이유 ?

스프링 Service에서 ServiceImpl를 사용하는 이유? 대부분의 스프링 프로젝트에서 서비스를 구현할때 Service.java를 인터페이스로 만들고, ServiceImpl 이라는 구현체 클래스를 생성하여 사용한다. 왜 인터페이스와 구현체를 따로 두어 사용할까? ex) MemberService / MemberServiceImpl 1. OOP의 다형성, 개방-폐쇄 원칙 이론상으로는 인터페이스-구현체 패턴으로 설계하는 이유는 인터페이스와 구현체를 분리함으로써 구현체를 독립적으로 두고, 구현체 클래스를 변경하거나 확장해도 이를 사용하는 클라이언트의 코드에 영향을 주지 않도록 하기 위함. 이와 같은 추상화를 통한 구현방식은 객체지향의 특징인 다형성과, 개방-폐쇠원칙(OCP)을 지향하는 설계방식이다. 2.A..

객체지향 프로그래밍 OOP

객체지향 프로그래밍 OOP Object Oriented Programming 객체들의 집합으로 프로그래밍의 상호작용을 표현 데이터를 하나의 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식 설계에 많은 시간이 소요되며 처리 속도가 상대적으로 느리다. 특징 추상화 Abstraction 복잡한 시스템으로부터 핵심개념 또는 기능을 간추려내는것. 캡슐화 Encapculation 객체와 속성과 메서드를 하나로 묶고 일부를 외부에 감추어 은닉하는 것. 상속성 Inheritance 상위 클래스의 특성을 하위 클래스가 이어받아 재사용하거나 추가/확장하는 것. 코드의 재사용, 계층 관계 생성, 유지보수 측면에서 중요 다형성 Polomorphism 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것. 대표적으로..

[java script] map() / filter() 함수란? 배열 가공하기.

1. map() 배열의 요소를 순회하려면 for문과 같은 반복문이 필요한데, map() 함수를 쓰면 for문을 쓰지 않고도 배열 전체를 순회하면서 각 요소에 대해 함수를 호출한다. 각 요소는 순서대로 함수를 타고, 함수에 정의된 새로운 형태의 배열로 반환되는 것이다. js에 약한데 실무에서 굉장히 유용하게 쓰게 되어 기록으로 남긴다. map()함수 기본 문법 array.map(callBackFunction(currValue, index, array), newValue); currValue: 원본 배열의 데이터 index : 현재처리중인 인덱스 array : 기존 배열 newValue: callBackFunction에서 사용될 값 ex1) let array = ["월", "화", "수"]; let map ..

Back-end/JavaScript 2022.07.28

싱글톤 패턴이란? singleton pattern

싱글톤 패턴이란? singleton pattern 여러 디자인 패턴 종류 중 하나로, 하나의 클래스에 오직 하나의 객체 인스턴스만 가지는 패턴이다. * 디자인 패턴: 프로그램을 설계할때 발생했던 문제점들을 객체 간 상호관계 등을 통해 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 어디에서든 공유하며 접근, 사용할수 있다. 싱글톤 패턴으로 만들어진 클래스는 생성자가 여러번 호출 되더라도, 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 보낸다. 주로 공통된 객체를 여러 개 생성해서 사용하는 DBCP (Database Connection Pool)와 같은 데이터베이스 연결 모듈에 많이 사용..

자바가상머신 JVM 이란?

JVM Java Virtual Machine 자바가상머신은 자바 바이트코드인 .class 파일을 OS에 특화된 코드로 변환하여 실행한다. 바이트코드파일은 운영체제에서 바로 실행할 수 없고, 자바가상머신이라는 번역기가 필요하다. 자바가 JVM을 사용하는 이유는 바이트 코드 파일을 다양한 운영체제에서 수정없이 사용하기 위함이다. 이 특징이 자바를 플랫폼에 종속되지 않고 독립적으로 작동하게 하는 것이다. 단, JVM 자체가 플랫폼에 독립적이지는 않다. 때문에 JVM은 윈도우용, 리눅스용 등 각 운영체제용 JVM이 존재하고 각 운영체제의 JVM이 바이트코드파일은 해당 운영체제에서 실행가능한 기계어로 번역하여 프로그램을 실행하는 것이다. 프로그램이 시작되면 JVM은 OS로부터 프로그램을 수행하는데 필요한 메모리를..