리눅스 환경에서 Node.js 와 NPM 설치하는 방법에 대해 알아보겠습니다. 운영환경CentOS 7.6 저장소 추가설치하려는 Node.js 버전을 확인하여 NodeSource yum 저장소를 추가합니다.NodeSource Node.js Binary Distributions 사이트에 아래와 같은 내용이 정리되어 있습니다.Node.js v19.x# As root$ curl -fsSL https://rpm.nodesource.com/setup_19.x | bash -# No root privileges$ curl -fsSL https://rpm.nodesource.com/setup_19.x | sudo bash -Node.js v18.x# As root$ curl -fsSL https://rpm.nodeso..
OpenLayers 사용하여 OSM(OpenStreetMap)으로 지도를 가시화하는 것이 아닌 Static Image를 Layer Source로 사용하여 이미지를 가시화하는 예제입니다. OpenLayers 3 버전을 사용하였습니다. HTML Script // main.js // 지도 정보 const mapInfo = { map: null, extent: null, projection: null, setProjection: function (w, h) { this.extent = [0, 0, w, h]; this.projection = new ol.proj.Projection({ code: 'pixel', units: 'pixels', extent: this.extent, }); }, init: funct..
ganache-cli 를 설치하고 실행하는 방법에 대해 알아보겠습니다. Ganache "가나슈"라고 읽으면 되고, 가상의 이더리움 네트워크를 생성해서 Smart Contract를 실행할 수 있도록 해주는 프로그램입니다. 이런 가상 환경을 TestRPC라고 합니다. Ganache CLI Ganache CLI는 빠르고 사용자 정의 가능한 블록체인 에뮬레이터인 TestRPC의 최신 버전입니다. 실제 이더리움 노드를 실행하는 오버헤드 없이 블록체인을 호출할 수 있습니다. Transactions are “mined” instantly. No transaction cost. Accounts can be re-cycled, reset and instantiated with a fixed amount of Ether ..
리눅스 환경에서 사용자 계정 조회, 추가, 수정, 삭제하는 방법에 대해 알아보겠습니다. 사용자 조회 모든 사용자를 출력합니다. $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ... 사용자 계정 확인 root와 useradd 또는 adduser 명령어를 통해 생성한 사용자 계정을 출력합니다. $ grep /bin/bash /etc/passwd root:x:0:0:root:/root:/bin/bash hgko:x:1000:1000:hgko:/home/hgko:/bin/ba..
자주 사용하는 리눅스 명령어에 대해 알아보겠습니다. 명령어 설명 cdcd ..cd -cd ~cd /cd [path] 디렉토리 이동 cp [path] [target] -R 파일 복사 tar cvfz backup.tar.gz [target] tar 로 압축 tar cvfz backup.tar.gz /test --exclude "/test/backup" 특정 디렉토리 제외하고 tar 로 압축 tar xvfz backup.tar.gz 압축 풀기 which [command]예) which find 특정 명령어의 위치 source /etc/profile 환경 설정 적용 find / -name [파일명]예) find / -name 'test' 파일 찾기 ls -al 디렉토리 조회 du -skh 디렉토리 용량 확인 d..
동일 트랜잭션 내부 연관 엔티티가 수정되었을 경우 CascadeType과 상관없이 자동으로 수정됩니다. 같은 트랜젝션이라 하더라도 해당 엔티티가 CasecadeType.PERSIST 로 설정 되어 있지 않으면 연관 엔티티를 추가하더라도 반영되지 않습니다. (CascadeType.MERGE 로 설정 되어도 추가는 되지 않음) CascadeType 별 동작 CascadeType.ALL 상위 엔티티에서 하위 엔티티로 모든 작업을 전파합니다. 모든 Cascade 설정을 적용합니다. CascadeType.PERSIST 상위 엔티티를 생성하고, 하위 엔티티를 추가하였을 때 persist()를 수행하면 하위 엔티티도 같이 persist()가 수행됩니다. 만약, 하위 엔티티가 DB에 등록된 키값을 가졌다면 detach..
QueryDslPredicateExecutor를 이용하는 findAll, findOne 등은 where, Sort, Limit 등의 조건만 넣을 수 있습니다. 하지만 Join이나 Group by 등의 기능을 사용하려면 인터페이스 선언만으로는 기능을 구현하기 힘듭니다. 이를 해결하기 위해서 Spring Data JPA에서 제공하는 QuerydslRepositorySupport 추상 클래스가 있습니다. QuerydslRepositorySupport는 개발자에게 querydsl 객체를 직접 제공합니다. 예를 들어 권한별 사용자 수에 대한 데이터가 필요하다면, 다음과 같이 할 수 있습니다. 사용자 클래스와 DTO 클래스를 생성합니다. @Data @Entity @Table public class User { @I..
Query DSL JPA, JDO, SQL 같은 백엔드를 위해 type-safe SQL을 만드는 프레임워크 Domain Specific Language 특정한 도메인에 초점을 맞춘 제한적인 표현력을 가진 컴퓨터 프로그래밍 언어 특징 type-safe 조회에 특화된 프로그래밍 언어 단순, 간결 다양한 저장소 조회 기능 통합 (데이터 조회 기능 추상화) 동작 방식 Member java or Member table의 메타 데이터를 참조하여 코드 생성기를 통해 QMember.java를 생성합니다. APT: Annotation Processing Tool Table Meta: Querydsl-maven-plugin 기능 Query: from, where, join Path: QMember, Qmember.name..
Named Query 란 Entity에 @NamedQuery 어노테이션을 통해 쿼리를 지정해 줍니다. 쉽게 말하면 미리 이름을 부여해서 재활용할 수 있는 JPQL입니다. 사용 방법 도메인 클래스에 @NamedQuery 또는 @NamedNativeQuery를 정의합니다. 2개 이상의 Query를 정의하려면 @NamedQueries 또는 @NamedNativeQueries를 사용하면 됩니다. Primary Key 가 되는 칼럼은 @Id를 사용하여 지정합니다. 테이블의 칼럼명과 도메인 클래스의 필드명이 다를 경우 @Column을 이용하여 지정할 수 있습니다. 클래스 생성 위의 설명의 어노테이션을 사용하여 도메인 클래스를 생성합니다. @Entity @NamedQueries({ @NamedQuery(name = ..
Spring Data JPA 쿼리 메서드는 가장 강력한 메서드이며, SQL 쿼리를 작성하지 않고도 데이터베이스에서 레코드를 선택하는 쿼리 메서드를 만들 수 있습니다. 백그라운드에서 Spring Data JPA는 쿼리 메서드를 기반으로 SQL 쿼리를 생성하고 쿼리를 실행합니다. Entity 필드를 사용하여 Repository에 대한 쿼리 메서드를 생성할 수 있으며 쿼리 메서드 생성을 finder methods(findBy, findAll …)라고도 합니다. 예 findByEmailAddressAndName() 이 쿼리 메서드인 UserRepository 가 있다고 가정합니다. public interface UserRepository extends Repository { List findByEmailAddr..