Programming 112

스트림 (Stream)

스트림이란 ? https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html ​ Stream이 추가 되기 전인 Java 7 버전 까지에서는 많은 수의 데이터들을 다룰 때에 컬렉션이나 배열에 데이터를 담아 둔 후, 원하는 결과를 얻기 위해서 반복문 혹은 Iterator를 이용하는 방법 만으로 코드를 작성 해 왔습니다. package com.tistory.shanepark.stream; public class Stream01 { public static void main(String[] args) { int[] numbers = {1,2,3,4,5,6,7,8,9,10}; for(int n : numbers){ System.out.println(..

Programming/Java 2021.09.05 (1)

제발 한국인이라면 자바스크립트 Object를 Map 처럼 사용하지 맙시다.

Photo by Steve Johnson on Unsplash Introduction 오늘 코딩하던 중에 Javascript 에서 만든 Map을 Controller 쪽으로 어떻게 넘길지에 대해 고민 하는 일이 있었습니다. JavaScript 에서는 Object 를 사용하면 왠만하면 다른 언어에서의 Map 과 유사하게 사용 할 수 있기 때문에 딱히 Map을 사용 해 본 적이 없었는데요. 특히 나중에 자바에서 스프링 부트에서 제공하는 JsonParser 를 이용하면 JSON 데이터를 List 아니면 Map 으로 Parsing을 하더라고요. Object 형태로 보내지 않고 Map을 Marshalling 해서 보낸다면 다시 언마샬링 할 때도 좀 더 쉽게 하지 않을까 생각 했습니다. https://betterpr..

Programming/Javascr¡pt 2021.09.02 (3)

람다식 (Lambda Expression)

람다식 (Lambda Expression) ​ Lambda는 2014년 3월 18일에 발표한 java 8에서 추가된 대표적인 기능입니다. 자바에 대한 함수형 언어의 기능 요구가 끊임없이 있어 왔고, 객체지향언어인 자바가 함수형 언어의 기능까지 갖추게 하는 일은 쉽지 않았을 테지만 그 어려운 일을 똑똑한 개발자들이 해준 덕분에 우리는 이 좋은 기능을 사용 할 수 있게 되었습니다. ​ 람다식이란? 람다는 간단하게 말해서 메서드를 하나의 식으로 표현 한 것입니다. 람다식은 함수를 간략하면서도 명확한 식으로 포현할 수 있게 해줍니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없기 때문에 람다식을 "익명함수" 라고 부릅니다. 객체지향 언어인 자바에서는 method라는 용어를 사용하는데요, 특정 클래스..

Programming/Java 2021.08.29 (1)

Vue.js 사용 하기 4 ) PostgreSQL로 간단 게시판 작성 해보기 - 조회 및 수정 기능 추가

Vue.js 사용 하기 4 ) PostgreSQL로 간단 게시판 작성 해보기 - 조회 및 수정 기능 추가 ​ Vue.js 사용 하기 3) postgreSQL 게시판에서 Modal 이용하기 에 이어지는 글 입니다. ​ 마지막으로 Vue를 활용해 게시판을 조금 더 "사용할 수 있음" 에 가깝게 수정 해 보았습니다. ​ 일단 개별 글의 "조회" 기능을 추가 하였습니다. 이에 따라 게시판 목록 에서는 삭제 버튼이 사라졌습니다. 각 글의 제목을 누르면 개별 글을 조회 할 수 있도록 하였습니다. ​ 수정 버튼을 누르면 게시글 수정이 가능합니다. 게시글 수정은 게시글 작성 모달을 그대로 재활용하며 상황에 따라 다르게 작동하도록 하여 코드의 양을 줄이고 변경에 용이하도록 하였습니다. ​ 게시글 작성을 보면 아시겠지만 ..

IntelliJ IDEA) Devtools 사용해 HTML, CSS 등 정적자원 서버 재시작 없이 새로고침

2022년 1월 1일 기준으로 새로 업데이트 합니다. 인텔리제이 버전이 2021.3으로 업데이트 되며 메뉴 구성이 약간씩 바뀌어서 거기에 맞춰 새로 변화 했습니다. 설정이 자주 변하다보니 인터넷에서 정보를 찾는 입장에서는 많이 불편 할 수 있지만 자세히 보면 결국 위치만 바뀐게 대부분이라서 최대한 변화에 맞춰 글을 업데이트 하는 방향으로 해보겠습니다. 혹시 버전이 바뀌어 메뉴가 또 일치하지 않는 경우가 있다면 댓글로 달아주시면 바로 반영 하도록 하겠습니다. 아래의 문서를 참고 했습니다. https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.devtools Intro 스프링 부트 뿐만 아니라 웹 프로젝트를 할 때에 단..

java ) Fail-Safe Iterator vs Fail-Fast Iterator

1 소개 이번 글에서는 Fail-fast와 Fail-Safe Iterator의 개념에 대해 알아보겠습니다. 영어로 된 문서를 읽으며 공부하다보니 의미에 맞게 번역하는 과정에서 제가 전문 번역가가 아니라 다소 표현이 딱딱한 느낌이 날 수도 있습니다. 간단한 차이를 말씀드리고 시작하자면, Fail-Fast 시스템에서는 오류가 발생하는 즉시 작업을 중단하고 오류를 알립니다. 또한 진행중이던 전체 작업을 모두 중단시킵니다. 반면에 Fail-Safe 시스템에서는 문제가 생겨도 작업을 중단 하지 않습니다. 해당 시스템에서는 오류 발생을 가능한 피하려고 합니다. ​ ​ 2 Fail-Fast Iterators java의 컬렉션은 modCount 라는 내부의 counter를 운용합니다. Collection에 item이 ..

Programming/Java 2021.08.23 (6)

Javascript로 페이지 리다이렉트 하는 방법. location.href vs location.replace

Intro javascript를 사용하며 다른 페이지로 이동 하는 방법은 몇 가지가 있습니다. jQuery $(location).attr('href', 'https://shanepark.tistory.com'); Javascript window.location.href = 'https://shanepark.tistory.com'; 보통 아마 위의 두가지를 많이 사용하셨을 겁니다. 대다수의 상황에서 window.location.href 는 별 문제 없이 작동하지만, 해당 리다이렉트 방법을 사용하면 안되는 경우도 있을 수 있습니다. 아마 이 포스팅을 읽고 있는 분들도 많이들 겪어 보셨을 거라고 생각합니다. 그 상황을 한번 임의로 만들어 보겠습니다. window.lo..

SpringBoot ) Application.properties 혹은 .yml 프로필 별로 따로 사용하기 (Eclipse, IntelliJ IDEA)

SpringBoot ) Application.properties 혹은 .yml 프로필 별로 따로 사용하기 (Eclipse, IntelliJ IDEA) application.properties 가 상황에 따라 개발환경/ 배포환경 등으로 나눠서 설정이 필요한 경우가 있습니다. 필요 할 떄마다 파일을 수정해가며 하면 번거롭기 때문에 보통 여러개의 프로필을 만들어 두고 필요에 따라 사용하는게 편리합니다. application.yml (혹은 application.properties) 파일은 기본 설정 파일입니다. 후에 application-dev.yml 혹은 application-dep.yml 파일을 생성한다면 dev 혹은 dep가 profile이 됩니다. 그리고 또한 프로필에 들어간 설정들은 기존의 설정을 ov..

Vue.js 사용 하기 3) postgreSQL 게시판에서 Modal 이용하기

Vue.js 사용 하기 3) postgreSQL 게시판에서 Modal 이용하기 Vue.js 사용 하기 2 ) PostgreSQL로 간단 게시판 작성 해보기에 이어지는 글입니다. ​ 이번글에서는 Vue.js 의 기본 Component 중 하나인 Modal 기능을 이용 해 보겠습니다. ​ 전 글에서 만든 게시판 입니다. 아무리 대충 만들었다고 하지만 글 작성이 같은 페이지에 있으니 보기가 참 불편합니다. 글 작성하는 부분을 Modal로 빼 보도록 하겠습니다. ​ Vue.js 공식 홈페이지의 Modal 관련한 부분은 https://vuejs.org/v2/examples/modal.html 에 있습니다. 해당 코드를 그대로 사용 해 보도록 하겠습니다. ​ style.css .modal-mask { positio..

Vue.js 사용 하기 2 ) PostgreSQL로 간단 게시판 작성 해보기

Vue.js 사용 하기 2 ) PostgreSQL로 간단 게시판 작성 해보기 ​ Vue.js, SpringBoot, PostgreSQL, Hibernate 중 익숙하지 않은 기술이 있는 분은 아래의 두 포스팅을 먼저 참고하시면 코드를 좀 더 쉽게 읽으실 수 있습니다. Vue.js 사용 하기 1 ) 기본 문법 윗 글에 이어지는 글입니다. SpringBoot + PostgreSQL + Hibernate ) 간단한 게시판 만들기 해당 글에서 SpringBoot + PostgreSQL + Hibernate 로 만들어둔 간단 게시판 api를 활용해서 Vue.js 로 화면을 만들어 보겠습니다. ​ 이번에는 Vue.js 를 이용해 아주 간단한 게시판 페이지를 렌더링 해 보도록 하겠습니다. ​ 전체적인 패키지 구조는 ..

Vue.js 사용 하기 1 ) 기본 문법

Vue.js 사용 하기 1 ) 기본 문법 ​ ​ Vue.js란? 공식 홈페이지에서 Vue.js는 유저인터페이스를 만들기 위한 진보된 프레임워크라고 소개하고 있습니다. 핵심 라이브러리는 오직 view layer 에 포커스가 맞춰져 있습니다. 사용하기 쉽고 다른 라이브러리들이나 이미 생성된 프로젝트들과도 쉽게 통합 할 수 있습니다. 또한 최신 기술들과 지원하는 라이브러리들과 함께 사용한다면 정교한 단일 페이지 어플리케이션을 만들 수도 있다고 합니다. 개발자들에게 익숙한 프로그래머스 또한 Vue.js로 개발되었습니다. 스프링 부트 프로젝트를 하나 생성해보도록 하겠습니다. 사실 Vue.js는 자바스크립트 프레임워크기 때문에 Node.js 를 쓰건 SpringBoot를 사용하건, 아니면 아에 그냥 .html 파일..

Spring 에서 페블 템플릿 Pebble template 사용하기 2 ) Spring boot 프로젝트에서 사용하기

https://shanepark.tistory.com/197 글에 이어지는 내용입니다. 본 포스팅은 https://pebbletemplates.io/wiki/guide/spring-boot-integration/ 를 토대로 작성되었습니다. 프로젝트 생성 일단 스프링 부트 프로젝트를 생성 합니다. Spring Starter를 이용하면 쉽게 생성 할 수 있습니다 Maven 프로젝트로 생성 했지만 Gradle로 해도 무관합니다. 적당한 Location에 적당한 이름으로 프로젝트를 생성합니다. ​ 간단하게 Sprinig Web만 추가해서 생성하겠습니다. Finish 를 눌러 프로젝트를 생성 합니다. Dependency 추가 Maven io.pebbletemplates pebble-spring-boot-start..

Spring 에서 페블 템플릿 Pebble template 사용하기 1 ) 기본 사용

Pebble Template이란 ? Pebble은 PHP의 유명 템플릿 엔진인 Twig 에서 영감을 받았으며 Python Jinja의 Template Engine 문법과 유사한 Java 템플릿 엔진 입니다. template을 상속 하는 기능과 읽기 쉬운 문법이 특징인 서버사이드 템플릿 엔진 입니다. 기본 사용 첫 글에서는 간단하게 https://pebbletemplates.io 의 Basic Usage를 하나씩 따라해보겠습니다. 1. dependency 추가 Spring Boot 에서는 pebble-spring-boot-starter 를 추가해서 사용하지만, 일단 Basic Usage에 쓰인 대로 따라가보겠습니다. Maven io.pebbletemplates pebble 3.1.5 Gradle compi..

SpringBoot + PostgreSQL + Hibernate ) 간단한 게시판 만들기

SpringBoot + PostgreSQL + Hibernate ) 간단한 게시판 만들기 앞으로 맡을 프로젝트에서 SpringBoot 와 PostgreSQL 그리고 Hibernate를 기술스택으로 사용하게 될 것 같습니다. 여태 배웠던 Spring Legacy Project + Oracle Database + Mybatis 환경에서 조금씩은 달라 지겠지만, 크게 다를 것은 없기 때문에 금방 적응 할 수 있을 것이라고 믿습니다. 그래도 조금이라도 빨리 해당 기술들에 대한 막연함을 해소하고, 업무에 대한 준비를 갖추고 싶어 틈틈이 시간나는 대로 가장 기본적인 게시판을 만들어 보았습니다. 데이터 검증 과정이 없고 화면 구성이 투박하지만, 그 만큼 쉬운 코드로 간단하게 작성 해 보았습니다. 제일 먼저 할일은 데..