반응형

전체 글 428

Java AES-256 양방향 암호화 제대로 알고 사용하기

'Java 양방향 암호화 AES-256 제대로 알고 사용하기' /* 프로젝트에서 양방향 암호화를 하기 위해서 AES-256 코드를 구글링 하여 사용하였는데, 나중에 알고 보니 사용하던 것이 AES-256이 아닌 AES-128인 경우가 있었습니다. 코드를 가져와서 사용하더라도 기본적인 원리는 알고 사용해야겠다는 생각에 AES-256 암호화를 정리하게 되었습니다. */ 본격적인 시작에 앞서 단방향 암호화 알고리즘과 양방향 암호화 알고리즘의 차이점에 대해서 간단하게 알아보겠습니다. 먼저 단방향 암호화는 평문을 암호화 했을 때 다시 평문으로 되돌리는 것(복호화)을 할 수 없는 암호화 방식으로 패스워드 암호화에 사용되며 대표적으로 'SHA-256'이 있습니다. 양방향 암호화는 평문에서 암호문으로, 암호문에서 평문..

Programming/Java 2021.12.15

Java 직렬화, 역직렬화 방법 Serializable interface

'자바 직렬화(Serialization)와 역직렬화(Deserialization)' 자바 시스템 내부에서 사용되는 객체(Object) 또는 데이터(Data)를 외부 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터를 변환하는 기술을 '직렬화(Serialization)'라고 합니다. 반대로 바이트로 변환된 데이터를 원래대로 객체(Object)나 데이터(Data)로 변환하는 기술을 '역직렬화(Deserialization)'라고 합니다. 시스템적으로 본다면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술이 '직렬화'이며, 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM에 상주시키는 것을 '역..

Programming/Java 2021.12.13

Apache Log4j2 치명적 취약점, 해결방안은? CVE-2021-44228

Log4j2 치명적 취약점 'CVE-2021-44228' Log4j2는 아파치 소프트웨어 재단에서 자바(Java) 언어로 제작된 로깅 라이브러리로, 서버와 프로그램의 유지 관리를 목적으로 동작 상태를 기록으로 남기기 위해서 사용되는 기능입니다. 이번에 발견된 'CVE-2021-44228', Log4Shell 혹은 LogJam으로 명명된 취약점은 '마인크래프트'에서 처음 확인되었고, 자바(Java) 언어로 개발된 마인크래프트 버전에서 프로그래밍 코드로 이루어진 특정 채팅 메시지를 입력하면 대상 컴퓨터에서 원격으로 프로그램을 실행시킬 수 있는 것으로 나타났습니다. 이는 Log4j2 중에 존재하는 'JNDI(Java Naming and Directory Interface)' 인젝션 취약점을 악용한 것으로, 이..

Programming/Web 2021.12.12

자바 Java 상속, 부모 클래스와 자식 클래스(extends, super)

'Java 상속 (Inheritance)' Inheritance is the process by which a new class is created from another class. [자식 클래스] extends [부모 클래스] [하위 클래스] extends [상위 클래스] [파생된 클래스] extends [기반 클래스] [새로 작성하고자 하는 클래스] extends [상속 받고자하는 클래스] 자바에서 상속(Inheritance)이라는 개념은 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)의 관계에서 발생하며, '자식 클래스가 부모 클래스를 상속받는다.'라고 표현합니다. 상속을 받은 자식 클래스는 부모 클래스에 선언되어 있는 private 접근 제한을 갖는 필드와 메소드를메서드를 제외한 publ..

Programming/Java 2021.12.11

Querydsl DTO 조회하는 방법(Projection, @QueryProjection)

Projection 연산이란, - 한 Relation의 Attribute들의 부분 집합을 구성하는 연산자입니다. - 결과로 생성되는 Relation은 스키마에 명시된 Attribute들만 가집니다. - 결과 Relation은 기본 키가 아닌 Attribute에 대해서만 중복된 tuple들이 존재할 수 있습니다. => 쉽게 Projection이란, '테이블에서 원하는 컬럼만 뽑아서 조회하는 것'이라고 할 수 있습니다. * Relation 데이터를 원자 값으로 갖는 이차원 테이블 * Column = Attribute (프로젝션 대상이 하나일 때는 그 대상의 타입으로 반환되지만, 프로젝션 대상이 둘 이상일 때는 Tuple 또는 DTO로 변환할 수 있습니다.) Querydsl DTO로 조회하는 방법(Projec..

Linux 리눅스 파일 권한에 대한 이해와 권한 변경(chmod)

'다중 사용자 운영체제에서 권한이 필요한 이유' 주로 개인이 일반적으로 사용하는 '단일 사용자 운영체제'(Single-User Operation System, 대표적으로 Windows)와는 다르게 여러 사용자들에게 서비스를 제공해주는 서버에는 '다중 사용자 운영체제'(Multi-User Operation System)가 사용됩니다. 다중 사용자 운영체제의 대표적인 것이 유닉스(Unix) 운영체제와 유닉스에서 파생된 리눅스(Linux) 운영체제이며, 다중 사용자 운영제체는 여러 클라이언트 컴퓨터에서 하나의 서버 컴퓨터에 접속을 하는데 사용되기 때문에 파일 및 디렉터리의 접근 권한을 클라이언트 계정별로 엄격하게 관리되어야 한다는 특징이 있습니다. * 리눅스에서 디렉토리는 그 디렉터리가 포함하는 파일과 하위 ..

Programming/Linux 2021.12.09

Querydsl 개념 및 Gradle 환경설정 (gradle-7.x.x)

- Querydsl 개념 및 Gradle 환경설정 QUser user = QUser.user; List result = queryFactory .select(user) .from(user) .where(user.name.eq("Jan")) .fetch(); // SELECT * FROM user WHERE user.name = 'Jan' 'Querydsl 이란?' Querydsl은 HQL(Hibernate Query Language) 쿼리를 타입에 맞게 안전하게 생성 및 관리할 수 있게 해주는 프레임워크입니다. 쉽게 자바 코드를 기반으로 SQL 쿼리를 작성해준다고도 이야기할 수 있습니다. Querydsl을 사용하는 이유는 무엇일까요? SQL은 문자이기 때문에 type-check가 불가능하고, 실행해보기 ..

Java Optional Class 기본적인 이해

java.util.Optional (Java8부터 도입) Optional is primarily intended for use as a method return type where there is a clear need to represent "no result" and where using null is likely to cause errors. A variable whose type is Optional should never itself be null. it should always point to an Optional instance. (Java SE 9 & JDK 9 / Optional API Note 참조) 옵셔널은 주로 "결과 없음"을 나타낼 필요가 분명하고 null을 사용하면 오류가 발생할..

Programming/Java 2021.12.06

Java 조건문 - if문과 switch문의 핵심

'if문과 switch문의 핵심' if문 조건식과 문장을 포함하는 블럭'{ }'으로 구성되어 있습니다. 조건식의 연산 결과에 따라서 실행할 문장이 달라지기 때문에 프로그램의 실행 흐름을 변경할 수 있습니다. -1 블럭 내의 문장이 하나뿐일 경우 괄호 '{ }'를 생략할 수 있지만 생략하지 않고 쓰는 것이 좋습니다. 이유는 나중에 새로운 문장들이 추가되면 다시 '{ }' 괄호로 문장들을 감싸줘야 하는데, 이때 괄호를 추가하는 것을 잊어버리기 쉽기 때문입니다. -2 위 이미지의 왼쪽의 코드와 같이 상반된 관계에 있는 조건식을 'if - else' 문으로 바꿨을 때의 장점은 '하나의 조건식만 계산하면 된다'는 것입니다. -3 'if - else if - else' 문에서 마지막 'else' 블럭은 생략할 수 ..

Programming/Java 2021.12.06

mac 로블록스(Roblox) 설치 방법 및 실행

'로블록스 ROBLOX' '로블록스'는 게임계의 유튜브라고 불릴 만큼 세계적으로 크게 유행하고 있는 게임 플랫폼입니다. 'ROBLOX'는 사용자가 자체 게임 엔진인 '로블록스 스튜디오(Roblox Studio)'를 사용하여 자신만의 게임을 프로그래밍하고, 다른 사용자가 만든 게임을 즐길 수 있는 온라인 게임 플랫폼 및 게임 제작 시스템입니다. 2021년 5월 기준 570만 명의 최대 동시 접속자를 달성하였고, 월 1억 6400만 명 이상의 활성 사용자를 보유 중인 플랫폼입니다. ('Lua'라는 프로그래밍 언어로 코딩) 'mac에서 5분 만에 로블록스 설치 후 실행 방법' https://www.roblox.com/download (다운로드 링크) 로블록스 사이트에서 다운로드를 먼저 진행합니다. 다운로드가 ..

IT Info 2021.12.05

SunBio 선바이오 - mRNA 백신 원료 제조와 인공 혈액

'선바이오(SunBio), mRNA 백신 원료 제조와 인공 혈액' 선바이오는 1997년 설립되어 2016년 코넥스 시장에 상장된 중소기업으로 업종은 의약품 제조업입니다. 주요 제품 및 사업으로는 생체고분자 유도체, 패혈증 치료제, 항암 활성제, 인공혈액, 신약 제조/연구개발이 있습니다. 선바이오(067370)는 2021.12.03 장마감 기준 종가 21,100원으로 시가총액 2465억, 코넥스 시장에서는 시가총액 3위의 기업입니다. 가장 최근 이슈로는 10월 27일 코스닥 이전 상장을 위한 상장 예비심사 청구서를 한국 거래소에 제출하였습니다. 이전 상장 신청이 통과된다면 예정되는 상장 시기는 2022년 상반기로 예정되고 있습니다. 선바이오는 지난 2019년에도 코스닥 이전 상장을 위해 기술특례상장을 위한..

Finance 2021.12.04

Java 삼항식, 삼항연산자(Conditional Operator) 사용하는 방법

삼항연산자는 전체 프로그래밍에서 언어를 불문하고 많이 사용되는 코드입니다. 프로그래밍을 하다 보면 if else 분기문을 사용하게 되는 경우가 많은데, 이때 단순한 if 문을 사용할 경우 if else 문을 대신하여 심플한 분기문을 만드는데 특화된 방식입니다. // if else 문 int bigger; if (num1 > num2) { bigger = num1; } else { bigger = num2; } // 삼항연산자 int bigger = (num1 > num2) ? num1 : num2; 예를 들어 다음과 같이 두 수를 비교하는 간단한 if 문의 경우에 삼항연산자를 사용하게 되면 코드의 라인 수가 눈에 띄게 줄어들게 됩니다. 삼항연산자는 '(조건문) ? 참 : 거짓' 형식의 문법을 가지게 되는..

Programming/Java 2021.12.02

이수화학, 전고체 배터리 관련주 (핵심 원료 황화리튬 생산)

전고체 배터리 관련주 '이수화학' 전고체 배터리 관련주로 주목받고 있는 관심종목 '이수화학'입니다. 2021.12.01 기준 종가 16,700원으로 시가총액 4669억입니다. 총 주식 수 약 2800만 주로, 주주 지분 약 30%를 제외한 70%가 유통되고 있습니다. 이수화학은 전체 사업의 약 77%를 차지하고 있는 석유화학 사업의 이수화학과 약 21%를 차지하고 있는 건설 사업 부문의 이수건설, 그리고 1.2%를 차지하고 있는 의약 산업 부분의 이수앱지스로 나누어집니다. '이수화학, 전고체 배터리 핵심원료 생산 설비 구축 ... 210억 투자' 이수화학은 전고체 배터리 전해질의 핵심 원료인 황화 리튬(Li2S) 생산 설비 구축에 들어갑니다. 공장은 2022년 9월에 완공될 예정이며 2022년 4분기부터..

Finance 2021.12.02

관심종목 SK아이이테크놀로지, 전기차 핵심 소재 분리막

* SKIET-LiBS(Lithium-ion Battery Separator) SK아이테크놀로지는 최첨단 나노 테크놀로지 기술을 적용하여 국내 최초이자 세계에서 세 번째로 리튬이온 전지의 핵심 부품인 '분리막'을 개발하여 생산 중인 기업입니다. 현재 국내 12개 Line을 비롯해 중국, 폴란드 생산거점에서 스마트폰, 노트북 및 태블릿PC용 분리막과 전기차 배터리용 내열 분리막을 생산 중이며, 생산 비중은 EV(전기차용 분리막)이 더 높습니다. * 현행 전기차에서 가장 많이 탑재되는 배터리가 리튬이온 전지입니다. 양극재, 음극재, 분리막, 전해질 4가지가 배터리의 핵심 소재로 이 중에서 분리막의 수익성이 가장 높습니다. * 분리막이란? (+ 건식 분리막과 습식 분리막) 분리막의 주요 기능은 배터리 단락 방..

Finance 2021.11.30

JPA와 Spring Data JPA 구분하기

해당 포스팅은 JPA에 대해 세부적으로 다루기보다는 전체적인 개념과 함께 JPA와 Spring Data JPA를 구분하는데 초점을 두었습니다. 참고 부탁드리겠습니다. - ORM(Object Relational Mapping) JPA에 대해 알아보기 전 더 큰 개념인 ORM 부터 간단하게 살펴보겠습니다. 객체 관계 매핑(Object Relational Mapping)이란? 객체와 관계형 데이터베이스의 데이터를 ORM 프레임워크가 중간에서 자동으로 매핑해주는 것을 말합니다. (대부분의 대중적인 언어에는 ORM 기술이 존재) 객체를 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계했을 때 객체 모델과 관계형 모델 간의 불일치가 존재하는데, 이때 ORM을 통해 객체 간의 관계를 바탕으로 SQ..

반응형