반응형

오늘은 심심해서 애들도 가르킬겸 용어정리에 대해서 고민하는 시간을 가졌다.

자바의 리팩토링(refactoring) 용어에 대해서 이해하고 샘플 코드를 통해 좀 더 자세히 알아 보도록 하자.


자바에서 리팩토링이란? (사전적 의미)

리팩토링은 SW의 구조 또는 로직을 변경하여 기존 코드 대비 더 이해하기 쉽고 유지보수하기 편리하게 만드는 행위를 말합니다.

즉, 새로 만드는 신규 코드에 대해서는 해당 용어가 적합하지 않고 유지보수 또는 고도화 프로젝트에서 기존에 짜여진 코드를 수정할 때 보다 더 깔끔하게 만드는 것을 리팩토링이라고 한다.

그럼 리팩토링을 왜 할까?
(개인적인 생각)

1) 코드가 매우 더티할 경우 : 가독성이 너무 낮아서 겨우 이해했어도 다음번호 또 봐도 이해 안갈때 깔끔하게 만든다.

2) 불필요하게 너무 길 경우 : 라인을 줄여서 가독성을 높이는게 좋은데 OOP 관점으로 짜지 않고 C처럼 짰을때 이다.

3) 좋은 메소드가 나왔을 경우 : JDK가 버전 업되면서 Deprecated 되거나 기존의 로직을 대체할 수 있는 메소드가 나온 경우

4) 업무 확장을 위해 재사용 할 경우 : 기존에 특정 프로세스에 국한되어 쓰던 로직이 재사용이 빈번하게 이루어 져야 하는 경우 분리작업을 할 수 있음.

자 그럼 예제를 한번 들어서 확인 해볼까?? 

public class Calculator {
    public int add(int num1, int num2) {
        return num1 + num2;
    }

    public int subtract(int num1, int num2) {
        return num1 - num2;
    }

    public int multiply(int num1, int num2) {
        return num1 * num2;
    }

    public int divide(int num1, int num2) {
        if (num2 != 0) {
            return num1 / num2;
        } else {
            System.out.println("Cannot divide by zero!");
            return 0;
        }
    }
}

위 코드를 보자.  divide 메소드에서 num2 변수가 0인지 아닌지 비교하는것은 로직으로는 크게 문제 없다. 근데 좀 더티할 뿐만 아니라 저렇게 비교하는 로직이 다른 기능에도 많다고 가정 한다면?? 

public class Calculator {
    public int add(int num1, int num2) {
        return num1 + num2;
    }

    public int subtract(int num1, int num2) {
        return num1 - num2;
    }

    public int multiply(int num1, int num2) {
        return num1 * num2;
    }

    public int divide(int num1, int num2) {
        if (isNotZero(num2)) {
            return num1 / num2;
        } else {
            handleDivideByZero();
            return 0;
        }
    }

    private boolean isNotZero(int num) {
        return num != 0;
    }

    private void handleDivideByZero() {
        System.out.println("Cannot divide by zero!");
    }
}

위 처럼 isNotZero와 hadleDivideByZero 메소드를 구현해서 재사용 가능하게끔 하는 것이다.

대략 이해 가셨나용?

리팩토링은 정답이 없습니다. 단지... 리팩토링을 하는 대상의 실력이 정답입니다.

 

끝~

반응형
반응형

오라클 Java가 유료가 되었다는 말은 상당히 오래전 부터 거론되었던 말입니다.

요즘에는 OPENJDK 를 많이 사용하고 있으며 , 레거시 시스템은 JDK1.8이하로 타 사이트에서 많이 사용하고 있기 때문에 라이센스 규정에 대해서 명확히 알아볼 필요가 있습니다.

오라클은 두 가지 버전의 Java(Oracle JDKOracle OpenJDK)를 제공합니다. Oracle JDK(Java Development Kit)는 상용 제품이며 사업용으로 제품에 탑재하여 사용하려면 라이센스가 필요합니다. 반면에 Oracle 오픈JDK는 자바 SE 플랫폼의 무료 오픈 소스 입니다.

제품으로써 Oracle JDK를 사용하는 경우 Oracle에서 라이센스를 구입해야 합니다. 그러나 개발 및 테스트 목적으로 오라클 JDK를 무료로 사용할 수 있습니다. Oracle은 Oracle JDK를 개발 및 테스트에서 무료로 사용할 수 있는 Oracle Java SE용 Oracle Technology Network License Agreement라는 별도의 라이센스를 제공합니다.

오라클 OpenJDK를 사용하는 경우 자유-오픈 소스 라이선스인 GNU GPL(General Public License)로 출시되므로 어떤 목적으로든 라이선스를 구입할 필요가 없습니다.

OpenJDK, Adapt OpenJDK과 같은 자바 SE 플랫폼의 다양한 무료 오픈소스 상품있다는 것도 알아두기 바란다.



공식 OpenJDK : OpenJDK 프로젝트에서 제공하는 OpenJDK의 공식 빌드입니다. 이들은 오라클에 의해 출시되며 자바 SE 플랫폼의 참조 구현이다.

타사 OpenJDK : 타사 공급업체, 조직 또는 개인이 만들고 유지 관리하는 OpenJDK 입니다. 타사 OpenJDK 의 몇 가지 예로는 AdoptOpenJDK, Amazon Corretto, and Red Hat OpenJDK 가 있습니다.

Customized OpenJDK : 조직 또는 개인이 특정 요구 사항을 충족하도록 사용자 정의하거나 수정한 OpenJDK 입니다. Customized OpenJDK에는 추가 기능, 최적화 또는 버그 수정이 포함될 수 있습니다. 크게 안정적인 제품은 아닙니다.

LTS OpenJDK : 이러한 빌드는 오랜 기간동안 유지보수가 지원되는 OpenJDK 빌드입니다. LTS 빌드는 안정적이고 안정적인 릴리스가 필요한 엔터프라이즈 및 프로덕션 사용 사례에 적합합니다.

이러한 유형의 OpenJDK마다 릴리스 일정, 지원 정책 및 라이센스 조건이 다를 수 있습니다. 각 빌드의 특성을 이해하고 요구 사항에 가장 적합한 것을 선택하는 것이 중요합니다.

반응형
반응형

웹 취약점 점검을 위해서 OWASP ZAP 프로그램을 설치하려고 하면 아래와 같은 에러가 뜹니다.

위와 같은 에러의 해결법을 찾아보도록 하겠습니다.

"The install4j wizard could not find a Java (TM) Runtime Environment" 오류 메시지는 실행하려는 설치 프로그램이 시스템에 JRE(Java Runtime Environment)를 설치해야 하지만 찾을 수 없음을 의미합니다.

이 문제를 해결하려면 시스템에 JRE를 설치해야 합니다. 다음을 수행할 수 있습니다:

JRE가 이미 설치되어 있는지 확인합니다:
Windows의 경우 "제어판"으로 이동하여 설치된 프로그램 목록에서 "Java"를 찾습니다. Mac에서 "시스템 기본 설정"으로 이동한 다음 "Java" 아이콘을 클릭합니다. JRE가 이미 설치되어 있으면 최신 버전인지 확인하고 설치 프로그램을 다시 실행해 보십시오.

JRE 설치:
Oracle 웹 사이트에서 JRE의 최신 버전을 다운로드할 수 있습니다. 운영 체제(Windows 또는 Mac) 및 아키텍처(32비트 또는 64비트)에 맞는 올바른 버전을 다운로드해야 합니다. JRE를 다운로드했으면 설치 관리자를 실행하고 지침에 따라 설치합니다.

JAVA_를 설정합니다HOME 환경 변수:
JRE를 설치한 후 JAVA_를 설정해야 할 수도 있습니다JRE의 위치를 가리키는 HOME 환경 변수. 이렇게 하려면 다음 단계를 수행하십시오:

Windows의 경우: 제어판으로 이동한 다음 "시스템 및 보안"을 클릭하고 "시스템"을 클릭합니다. 왼쪽의 "고급 시스템 설정"을 클릭한 다음 "환경 변수" 버튼을 클릭합니다. 시스템 변수에서 "새로 만들기"를 클릭하고 변수 이름으로 "JAVA_HOME"을 입력하고 변수 값으로 JRE 설치 경로를 입력합니다.



 

 

반응형
반응형

오늘은 Ubuntu 18.04 기준에서 http2.0 을 적용하는 방법에 대해서 알아보자.

http2 가 http 보다 좋은건 딱히 설명할 여지가 없다. 

속도가 우선 어마어마하게 개선되었음. 하지만 한국에서는 인터넷 속도가 빨라서 그런지 http2 가 좋은 이유를 모르는 것 같다.

우리가 서버셋팅을 할때 간단하게 몇줄만 넣어주면 되니 아래를 잘 따라하도록 하자.

(1) Apache Version 확인하기

- 공식문서에 보면 Apache Version 2.4.24 이상에서만 http2.0 을 지원한다.
- 그렇다면 자신의 서버에 설치된 Apache의 버젼이 몇인지 확인해보자.

# /etc/apache2# apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2022-06-23T12:51:37

또는

#:/etc/apache2# dpkg -l | grep apache2
ii  apache2                                2.4.29-1ubuntu4.25                              amd64        Apache HTTP Server
ii  apache2-bin                            2.4.29-1ubuntu4.25                              amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                           2.4.29-1ubuntu4.25                              all          Apache HTTP Server (common files)
ii  apache2-utils                          2.4.29-1ubuntu4.25                              amd64        Apache HTTP Server (utility programs for web servers)
ii  libapache2-mod-jk                      1:1.2.43-1                                      amd64        Apache 2 connector for the Tomcat Java servlet engine

이렇게 확인할 수 있다. 대충 봐도 2.4.29 이니 크게 상관없을듯 하다. 만약 2.4.25 미만인 경우에는 upgrade ppa 추가해서 하면 된다.

(2) http2 모드 활성화 초간단 설정 

- 딱 2개만 넣으면 된다.
- 일단 http2 mod 활성화

# sudo a2enmod http2
Module http2 already enabled

난 이미 모드를 활성화 해놔서 저렇게 뜸.. 모드 활성화 명령어를 입력해주세요.

(3) 특정 프로젝트 설정파일에 집어넣기!

# sudo vim /etc/apache2/sites-available/000-default.conf
~~~~~ (내용)


<VirtualHost *:443>

        ServerName 사이트도메인

        SSLEngine on
        SSLCertificateKeyFile /~~~/.key.pem
        SSLCertificateFile /~~~/.pem
        SSLCACertificateFile /~~~/.pem

        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # HTTP2 Protocol
        Protocols h2 http/1.1
</VirtualHost>

여기서 Protocols h2 http/1.1 만 보면된다.

개쉬움 자 그럼 사이트 들어가서 f12 눌러서 프로토콜을 보자.

(4) http2.0 적용 확인방법

위 그림 처럼 protocol에 h2 라고 나오면 끝!!!

 

개쉬움 어서어서 적용하시오.!!!!1

반응형

+ Recent posts