본문 바로가기
728x90

Programming50

[JavaScript] 변수 선언 var 대신 let, const를 사용해보자 [JavaScript] 변수 선언 var 대신 let, const를 사용해보자 ES5까지 변수를 선언할 수 있는 방법은 var 키워드를 사용하는 것이었다. 이는 다른 언어와는 다른 특징으로 주의를 기울이지 않으면 심각한 문제를 일으킨다. ES6부터는 let과 const 변수 키워드를 도입하였으며 var 키워드를 대체하여 사용할 수 있다. 각 변수 키워드별 사용방법 및 특징을 알아보고 앞으로는 let과 const를 어떤 상황에서 사용할지 알아보자. var 키워드 var 키워드를 선언하면 재선언과 재할당이 가능하다. 재할당은 문제가 되지 않지만 재선언 시 오류가 발생하지 않는다면 해당 변수명을 중복으로 선언하여 의도하지 않은 실수를 초래할 수 있다. 아래와 같이 var 키워드를 생략하여 사용할 수 있다. 이.. 2022. 10. 31.
[JavaScript] 일반 함수(Normal Function) VS 화살표 함수(Arrow Function) [JavaScript] 일반 함수(Normal Function) VS 화살표 함수(Arrow Function) EC6 문법부터 추가된 화살표 함수(Arrow Function)를 이용하여 일반 함수(Normal function)를 대체하여 사용해보고 그 차이는 무엇인지 어느 상황에 맞춰 무엇을 선택하여 사용할지에 대해 알아보자. 일반 함수(Normal Function) 사용방법 JavaScript에서는 아래와 같이 함수를 사용할 수 있다. 함수를 선언하기도 하고 변수에다가 함수를 등호기호(=)로 넣어서 함수를 만들 수 있다. Hello JAVASCRIPT 화살표 함수 (Arrow Function) function 키워드 대신에 => 를 이용하여 아래와 같이 함수를 표현할 수 있다. var ccc = () .. 2022. 10. 25.
[JavaScript] Array의 sort(), filter(), map() 사용하기 [JavaScript] Array의 sort(), filter(), map() 사용하기 문자 배열 오름차순 정렬 sort() 함수는 기본적으로 오름차순을 지원한다. var array = ['a', 'c', 'b']; array.sort(); console.log(array); 문자 배열 내림차순 정렬 sort 함수는 오름차순을 기본적으로 사용하기 때문에 내림차순을 하려면 콜백함수를 이용하여 아래와 같이 코드를 변경해야 한다. 이 콜백함수는 배열의 첫번째 값과 두번째.. 세번째 차례로 모든 값과 비교하여 위치를 조정하게 된다. 콜백함수를 사용하기 싫다면 sort() 함수 사용 후 reverse() 함수를 사용하여도 된다. var array = ['a', 'c', 'b']; array.sort(functio.. 2022. 9. 26.
[JavaScript] Array와 Object 사용법과 차이 [JavaScript] Array와 Object 사용법과 차이 변수에는 임의의 값을 넣을 수 있는데 만약 변수에 여러개의 값을 넣고 싶다면 Array나 Object를 사용하면 된다. Array나 Object는 변수 하나에 여러가지 자료형 저장 가능하다. Array와 Object의 사용방법에 따라 조금의 차이가 있는데 개발방식에 따라 편한것을 선택하여 사용하면 된다. Array 변수 선언 Array는 대괄호[] 안에 값을 수정하며 각각의 변수의 위치는 인덱스를 이용하여 0번째 부터 N번째까지 값을 가져올 수 있다. Hello JAVASCRIPT Array 변수 값 수정 user1의 Array 첫번째 값을 수정한다. user1[1] = 30; console.log(""); console.log('user1 .. 2022. 9. 21.
[Windows] Vue.js 설치 및 Vue 프로젝트 생성 [Windows] Vue.js 설치 및 Vue 프로젝트 생성 Vue.js는 웹 개발을 위해 개발된 대중적인 자바스크립트 프론트엔드 프레임워크로 페이지 새로고침 없이 UI변경이 가능하다. 초보자가 사용하기 편리하며, React.js나 Angular.js에 비해 배우기 쉽다. Angular는 Typescript를 강제로 써야하며, React는 javascript 문법을 많이 사용한다(Javascript에 취약하다면 힘들 수 있다.). Vue는 새로운 문법을 사용해야 하지만 간단하고 빠르게 배울수 있다. 렌더링 속도 또한 다른 프레임워크과 비교하여 뒤지지 않으며 라이브러리 지원 업데이트도 지속적으로 하는 안정적인 프레임워크다. Vue.js는 NPM(Node Package Manager)을 통해서 다운로드 가능.. 2022. 9. 19.
[Windows] Node.js 및 NPM 설치 [Windows] Node JS 및 NPM 설치 Node.js Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 논블로킹(Non-blocking)[3] I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다. NPM (Node Package Manager) npm (노드 패키지 매니저/Node Package Man.. 2022. 8. 30.
[Spring Boot] Spring Security (5) - 역할(hasRole)과 권한(hasAuthority)의 차이는 무엇일까? [Spring Boot] Spring Security (5) - 역할(Role)과 권한(Authority)의 차이는 무엇일까? 흔히 Spring Security에서 제공하는 역할(Role)과 권한(Authority)을 혼동하는 사용하는 경우가 많은데 비슷하면서도 다르다. 예를 들어 A계정과 B계정은 둘다 시스템관리자로서 SYSTEM 역할을 가지고 있지만 원칙상 A 계정은 게시판의 글을 등록할 수만 있으며, B 계정은 등록된 글을 삭제만 할 수 있다고 했을 때 역할은 같지만 권한은 다르게 설정해야 할 것이다. 소규모 프로젝트에서는 둘 중 한가지로 사용해서도 충분히 접근제어를 할 수 있지만 역할과 권한을 분리하여 명시함으로써 유지보수성도 높아질 것이다. 자유롭게 혼용하여 사용하는 것이 Spirng Secur.. 2022. 8. 22.
[Spring Boot] Spring Security (4) - 역할 별 페이지 접근제어 [Spring Boot] Spring Security (4) - 역할 별 페이지 접근제어 개발환경 Eclipse IDE 2022-06 Spring Boot 2.7.2 Gradle 7.0 Lombok PostgreSQL 지난 시간에 이어서 이번에는 사용자가 가지고 있는 역할을 확인하여 페이지 별 접근제어를 해보자. sysetm 계정은 SYSTEM 역할을 가지고 있어 모든 페이지에 접근이 가능하고 user 계정은 USER 역할과 BOARD 권한을 가지고 있어 SYSTEM 역할을 가져야만 접근할 수 있는 페이지에는 접근이 불가하다. 이때 오류페이지로 사용자에게 안내해줄 수 있도록 해보자. SecurityConfiguration.java package com.example.security; import org... 2022. 8. 19.
[Spring Boot] Spring Security (3) - 로그인 시 사용자 역할 조회 및 부여 [Spring Boot] Spring Security (3) - 로그인 시 사용자 역할 조회 및 부여 개발환경 Eclipse IDE 2022-06 Spring Boot 2.7.2 Gradle 7.0 Lombok PostgreSQL 지난 시간에 이어서 이번에는 로그인 시 사용자가 가지고 있는 역할을 데이터베이스에서 조회하여 부여하고 이를 확인하는 페이지를 만들어보려고 한다. 추가/수정된 파일의 소스코드만 업로드 하니 지난 시간에 쓴 글을 참조하여 따라하길 바란다. 우선 테이블과 기초데이터를 등록하자. -- TB_USER CREATE TABLE public.tb_user ( id varchar(255) NOT NULL, name varchar(255) NULL, "password" varchar(255) N.. 2022. 8. 17.
[Spring Boot] Spring Security (2) - 회원가입 및 로그인을 위한 데이터베이스 연동 Spring Security (2) - 회원가입 및 로그인을 위한 데이터베이스 연동 개발환경 Eclipse IDE 2022-06 Spring Boot 2.7.2 Gradle 7.0 Lombok PostgreSQL 지난 시간에 이어서 이번에는 사용자 정보를 메모리에서 가져오는 것 대신에 데이터베이스에서 가져와 로그인을 해보자. 데이터베이스에서 로그인을 하려면 DB구축, JPA 설정 등 이 선행되어야 한다. 구축되어 있는 데이터베이스가 없다거나 JPA 설정에 대하여 궁금하다면 필자가 이전에 쓴 글을 참고하면 좋을 것 같다. Windows에 PostgreSQL14 설치하기 Windows에 PostgreSQL14 설치하기 개발환경을 구축하기 위해 Windows에 PostgreSQL을 설치하려고 한다. 공식 사이.. 2022. 8. 16.
[Servlet] FIlter에서 SendRedirect 시 Cannot create a session after the response has been committed ERROR [Servlet] FIlter에서 SendRedirect 시 Cannot create a session after the response has been committed ERROR 필터에서는 클라이언트로부터 오는 요청(request)과 최종 자원(서블릿/JSP/기타 문서) 사이에 위치하여 요청 정보를 변경하거나 클라이언트로 가는 응답(response) 사이에 위치하여 클라이언트에게 제공하는 결과를 변경할 수 있다. 필자는 클라이언트로부터 오는 요청 중 비정상적인 세션정보를 가지고 있는 경우 세션을 invalidate 시키고 사용자로 하게끔 재 로그인을 하도록 페이지 Redirect 기능을 만들던 중 아래와 같은 오류를 확인하였다. 예시 오류코드 public void doFilter(ServletRequ.. 2022. 8. 12.
[Spring Boot] PostgreSQL 연결을 위한 JPA 설정 [Spring Boot] PostgreSQL 연결을 위한 JPA 설정 개발환경 Eclipse IDE 2022-06 Spring Boot 2.7.2 Gradle 7.0 Lombok PostgreSQL 기본 Spring Boot 프로젝트를 생성 시 JPA를 추가하였거나 build.gradle 파일에 JPA 추가로 지정한 경우 그에 따른 데이터베이스 설정이 없으면 프로젝트 구동 시 아래와 같은 오류가 발생한다. Spring Boot에서 JPA를 설정하여 PostgeSQL에 연결하는 방법을 알아보자. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' *************************** APPLICATION FAILED T.. 2022. 7. 28.
Spring Boot 기본 설정 Port, ContextPath, Session Timeout Spring Boot 기본 설정 Port, ContextPath, Session Timeout Spring Boot의 내장톰캣을 사용하는 경우 application.properties의 해당 값을 수정하여 Port, Context Path, Session Timeout 값을 수정할 수 있다. 필자의 경우 SpringBoot 2.7.x 버전을 사용하고 있으며 SpringBoot1 버전의 경우에는 속성값이 다를 수 있다. ※ 별도의 외부 WAS를 사용하면 위 설정으로 동작되지 않으므로 유의해야 한다. 외장 톰캣을 사용하는 경우 server.xml에서 port와 context path를 수정할 수 있으며 web.xml에서 session timeout값을 수정할 수 있다. Port 기본적으로 8080포트를 사용.. 2022. 7. 22.
[Spring Boot] Spring Security (1) - 기본 프로젝트 생성 [Spring Boot] Spring Security (1) - 기본 프로젝트 생성 개발환경 Eclipse IDE 2022-06 Spring Boot 2.7.2 Gradle 7.0 Lombok PostgreSQL Spring Security는 Spring Boot의 하위 프레임 워크이며 Java 어플리케이션에 인증과 권한 부여를 제공하는데 중점을 둔 프레임워크이다. Spring에서는 사실상 Spring Security를 표준으로 하여 보안기능을 제공하며 필터기반으로 처리한다. 사용자의 ID와 PASSWORD를 입력받아 인증을 하고 역할 및 권한을 부여할 수 있으며 CSRF(Cross Stie Script Forgery) 같은 취약점에도 대응이 가능하다. 우선 샘플 프로젝트를 생성하여 얕은 지식과 기능을 .. 2022. 7. 21.
[Java] 배열에 특정 값이 존재하는지 체크 / How to check whether an array contains a prticular value in java 배열에 특정 값이 존재하는지 체크 package test; import java.util.Arrays; import java.util.stream.IntStream; public class Test { public static void main(String[] args) { // 문자열 final String[] UPLOADABLE_FILE_EXTENSION = { "png", "jpg", "pdf", "xlsx", "xls", "hwp" }; String extension1 = ""; String extension2 = ""; boolean java7 = false; boolean java8 = true; extension1 = "pdf"; java7 = Arrays.asList(UPLOADABLE_F.. 2022. 7. 13.
728x90