분류 전체보기 77

윈도우10 배경화면 이어지게 설정

듀얼모니터나 더블모니터, 트리플, 쿼드모니터에서 윈도우10에서는 배경화면을 그냥 설정하면 양쪽에 나뉘어서 적용되죠 이어지게 설정하는 방법을 공유하겠습니다. 1. 작업표시줄 좌측 하단의 [시작버튼(윈도우로고)]를 누릅니다. 2. 배경 이미지 설정을 입력하여 검색한 후 클릭합니다. 3. 설정 화면에서 원하는 이미지에 마우스 우클릭 합니다. 4. [모든 모니터에 대해 설정]을 누르면 모든 모니터에 동일한 배경화면이 설정됩니다.

IT Tip 2021.02.03

박싱 타입보다 기본 타입을 사용하라

박싱된 기본 타입보다는 기본 타입을 사용하라 자바의 데이터 타입 기본타입 - int, double, boolean ... 참조타입 - String, List ... 박싱된 기본 타입 - Integer, Double, Boolean ... 오토박싱과 오토언박싱 덕분에 두 타입을 크게 구분하지 않고 사용할 수는 있지만 차이는 있다. 어떤 타입을 사용하는지는 상당히 중요하다. 기본타입과 박싱된 기본 타입과의 차이 기본 타입은 값만 가지고 있으나, 박싱된 기본 타입은 값에 더해 식별성이란 속성을 갖는다. 즉 두 인스턴스의 값이 같아도 다르다고 식별 될 수 있다. 기본 타입의 값은 언제나 유효하나, 박싱된 기본 타입의 값은 null(유효하지 않은 값)을 가질 수 있다. 기본 타입이 시간과 메모리 사용면에서 유리하..

Java 2021.02.01

Thymeleaf - 표준 표현식

${...} : Variable expressions - OGNL 표현식, 스프링환경에서는 Spring EL ${shop.product.name} *{...} : Selection expressions - 변수 표현식과 동일하지만, 전체 컨텍스트 맵이 아닌 이전에 선택한 객체가 기준이됨 *{product.name} ... ... ... #{...} : Message (i18n) expressions - .properties 같은 파일에서 값을 읽어 표현 할 수 있다. Spring 환경에서는 MessageSource과 통합됨 (docs.spring.io/spring-framework/docs/4.3.30.RELEASE/spring-framework-reference/htmlsingle/#context-fu..

Spring 2021.01.27

Node.js - File system

파일목록 읽기 ( fs.readdir ) const fs = require('fs') fs.readdir('/file', (err, data) => { if (err) { console.error(err) } else { console.log(data) } }) const fs = require('fs') - fs 모듈 사용 readdir(path[, options], callback) - 비동기로 디렉토리안의 파일들 이름을 읽음 path | | - 파일 경로 options | - 옵션 encoding Default: 'utf8' - 문자열 인코딩 방식 withFileTypes Default: false - true일 경우 파일들이 fs.dirent 객체로 반환됨(참고) callback - 콜백 err ..

Node.js 2021.01.21

정확한 계산이 필요할 땐 float와 double은 피하자

정확한 계산이 필요할 땐 float와 double은 피하자 float와 double 타입은 과학과 공학 계산용으로 설계되었다. 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 빠르게 정밀한 '근사치'로 계산하도록 세심하게 설계되었다. 따라서 정확한 결과가 필요할 때는 사용하면 안되며, 특히 금융 관련 계산과는 맞지 않는다. 0.1 혹은 10의 음의 거듭 제곱수를 표현할 수 없기 때문이다. 예를 들어 주머니에 1.03 달러가 있는데 그중 42센트를 썼다고 해보자, 남은 돈을 얼마인가? 다음은 어설프게 작성한 코드다 System.out.println(1.03 - 0.42); 안타깝게도 이 코드는 0.6100000000000001을 출력한다. 이는 특수한 사례도 아니다. 이번에는 1달러가 있는데, 10센트짜..

Java 2021.01.18

지역변수의 범위는 최소화하자

지역변수의 범위를 최소화하라 제목의 내용은 '클래스와 멤버의 접근 권한을 최소화하라'와 비슷하다. 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. C와 같이 역사가 깊은 프로그래밍 언어 중에는 지역변수를 코드 블록의 첫머리에 선언하는 경우가 많고, 이 방식을 습관처럼 따르는 프로그래머도 있다. 하지만 자바에서는 문장을 선언할 수 있는 곳이면 어디서든지 선언할 수 있다.(C도 C99 표준부터는 변경되었다.) 지역변수의 범위를 줄이는 가장 강력한 기법은 가장 처음 쓰일 때 선언하기다. 미리 선언부터 해두면 변수를 실제로 사용하는 시점엔 타입과 초기값이 기억나지 않을 수도 있다. 그리고 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. 초기화에 필요한 정보..

Java 2021.01.05

Optional 반환은 신중히하자

옵셔널 반환은 신중히 하라 자바 8 전에는 메서드가 특정 조건에서 값을 반환할 수 없을 때의 선택지가 두 가지 있었다. 예외 - 스택 추적 전체를 캡처하므로 비용이 만만치 않다, 진짜 예외적인 상황에서만 사용해야 한다. null을 반환하면 별도의 null처리 코드를 추가해야 한다. 자바 8로 올라가면서 선택지가 생겼다. Optional이다. null이 아닌 T타입 참조를 하나 담거나, 혹은 아무것도 담지 않을 수 있다. 아무것도 담지 않은 옵셔널은 '비었다'라고 한다. 반대로 어떤 값을 담은 옵셔널은 '비지 않았다'고 한다. 옵셔널은 원소를 최대 1개 가질 수 있는 '불변' 컬렉션이다. Optional가 Collection를 구현하지는 않았지만, 원칙적으로는 그렇다. 보통은 T를 반환해야 하지만 특정 조..

Java 2020.12.31

Mysql Server Timezone 설정방법

Mysql Server Timezone 설정 방법 필자는 Mysql 5.7로 진행하였다.(5.7 이하의 버전이나 이후의 버전도 레퍼런스 확인 결과 비슷함) 아래의 명령어로 현재 타임존 확인가능 SELECT @@GLOBAL.time_zone, @@SESSION.time_zone; 위와 같이 출력되면 기본 세팅인 것(As the value 'SYSTEM', indicating that the server time zone is the same as the system time zone. - 시스템 시간대를 따라간다고 한다.) If set to SYSTEM, every MySQL function call that requires a time zone calculation makes a system librar..

프로그래밍 2020.11.16

SpringBoot Mysql Datasource 세팅

SpringBoot에서 Mysql Datasource 세팅하기. 필자는 JPA, Gradle로 진행했다.(Mybatis같은 환경도 아래 세팅으로 사용가능 할 듯) Gradle.build dependencies { ... implementation ("mysql:mysql-connector-java") implementation "org.springframework.boot:spring-boot-starter-data-jpa" ... } JPA 사용시에만 JPA 의존을 추가하자 DatabaseConfig.java @Slf4j @EnableJpaAuditing @Configuration public class DatabaseConfig { @Bean public PasswordEncoder passwordE..

Spring 2020.11.16