분류 전체보기

    Vue.js computed 속성에 파라미터 전달하기

    Vue.js computed 속성에 파라미터 전달하기

    Vue.js에서 `computed`속성을 사용하여 동적으로 계산된 속성을 이용 가능합니다. 이렇게 단순하고 간편하게 이용할 수 있지만 computed 속성을 파라미터를 전달받지 못하기 때문에 몇 가지 꼼수를 사용해야 합니다. 설명하기에 앞서 computed 속성에 직접적으로 파라미터를 전달하는 것이 지원되지 않는 이유 부터 간단하게 설명하겠습니다. `computed` 속성을 의존하는 데이터를 추적하여 해당 데이터가 변경될 될때 자동으로 계산이 됩니다. 이를 위해 `computed` 속성은 데이터 의존성을 명확하게 파악하여야 합니다. 하지만 파라미터를 통해 `computed` 속성에 외부 값이 전달되면 의존성 추적이 어려워 지고 값에 대한 일관성과 예측 가능성을 해칠 수 있기 때문입니다. 때문에 Vue.j..

    Java Apache POI로 엑셀(Excel) 파일 조작하기

    Java Apache POI로 엑셀(Excel) 파일 조작하기

    Apache POI Apache POI는 Microsoft Office 파일들을 읽고 쓸 수 있게 하는 라이브러리입니다. MS Word, MS PowerPoint, MS Excel를 조작할 수 있는데 이번 포스팅에서는 엑셀 파일을 Apache POI를 활용하여 자바 코드로 손쉽게 다룰 수 있는 방법을 알아보겠습니다. Apache POI 라이브러리 추가 gradle dependencies { implementation 'org.apache.poi:poi:4.1.2' implementation 'org.apache.poi:poi-ooxml:4.1.2' } maven org.apache.poi poi 4.1.2 org.apache.poi poi-ooxml 4.1.2 엑셀 파일 생성하기 빈 엑셀 파일을 생성하는..

    Java 리플렉션(Reflection API): 동적 코드 조작과 메타프로그래밍을 위한 Refelction API

    Java 리플렉션(Reflection API): 동적 코드 조작과 메타프로그래밍을 위한 Refelction API

    리플렉션(Reflection)이란? 자바 리플렉션은 프로그램 실행 중(런타임)에 클래스의 정보를 분석하고, 클래스의 필드, 메소드, 생성자 등에 접근하여 조작할 수 있는 능력을 제공합니다. 이는 컴파일 때는 알 수 없는 클래스를 동적으로 조작하고 활용할 수 있는 기능을 제공하며, 메타프로그래밍을 위한 핵심 개념입니다. 리플렉션을 활용하여 클래스의 메타데이터를 분석하고, 필드와 메서드를 동적으로 조작하거나 호출할 수 있습니다. 리플렉션 API로 클래스의 인스턴스를 생성하고, 필드 값을 읽거나 수정하고, 메서드를 호출하는 등의 작업을 수행할 수 있습니다. 이를 통해 프레임워크, 플러그인 시스템, 유연한 코드 구현 등을 가능하게 합니다. 리플렉션 API java.lang.Class: `getName()`: 클..

    Java 어노테이션(@annotation)을 활용한 커스텀 메타데이터 만들기

    Java 어노테이션(@annotation)을 활용한 커스텀 메타데이터 만들기

    Java 어노테이션이란 (@annotation) `Java 어노테이션`은 컴파일러, 런타임, 또는 다른 도구들에게 추가적인 정보를 제공하는 `메타데이터`입니다. `어노테이션`은 @ 기호를 사용하여 표시하며, 클래스, 메소드, 필드 등 다양한 요소에 적용할 수 있습니다. 실제로 Java 어노테이션은 다양한 분야에서 활용될 수 있습니다. 예를 들어, 우리가 가장 많이 접하는 @Override 어노테이션은 상위 클래스의 메소드를 재정의하고 있음을 나타내는데 사용됩니다. Spring Framework에서는 @Controller, @Service, @Autowired 등의 어노테이션을 사용하여 의존성 주입과 컴포넌트 스캔을 처리합니다. 또한 JUnit은 @Test, @Before, @After 등의 어노테이션을 ..

    Nginx: 웹 서버와 리버스 프록시의 개념과 용도, 사용법 설명

    Nginx: 웹 서버와 리버스 프록시의 개념과 용도, 사용법 설명

    Nginx 란? Nginx는 고성능 `웹 서버` 및 `리버스 프록시`입니다. Nginux는 이벤트 기반 아키텍처와 비동기 처리 모델을 기반으로 설계되었습니다. 이는 대규모 웹 어플리케이션 및 서비스를 처리하는데 유용합니다. Nginx의 주요 용도 정적 파일 서비스: Nginx는 `웹 서버`로써 정적 파일 서버로 사용될 수 있습니다. HTML, CSS, JavaScript, 이미지 파일 등 정적 콘텐츠를 효율적으로 제공하여 웹 페이지의 로딩 속도를 개선합니다. 이를 통해 웹 애플리케이션의 성능을 향상시킬 수 있습니다. 리버스 프록시 서버: Nginx는 리버스 프록시 서버로 사용되어 클라이언트와 서버 간의 트래픽을 관리하고 부하를 분산시킵니다. 여러 개의 백엔드 서버에 대한 요청을 받아 해당 서버로 전달하여..

    Java 직렬화와 역직렬화: 객체 저장과 복원을 위한 기술

    직렬화란? Java 직렬화는 객체 또는 데이터를 바이트(byte), 이진 형태로 변환하고, 이를 파일 또는 네트워크를 통해 전송하거나 저장하는 기술입니다. 역직렬화는 바이트로 변환된 데이터를 다시 객체로 변환하는 기술입니다. 이를 통해 다음과 같이 다양한 용도로 사용될수 있습니다. 객체, 데이터의 저장 및 전송: 객체를 파일 시스템에 저장하거나, 네트워크에 전송하기 위해 직렬화를 통해 객체를 바이트 스트림으로 변환하여 저장하거나 전송할 수 있습니다. 이를 통해 객체 및 데이터를 `영속화`할 수 있습니다. 캐시: 객체를 직렬화하여 메모리에 `캐싱`하고 필요할때 역직렬화하여 사용할 수 있습니다. 클러스터링 및 분산시스템: 다른 노드 간에 데이터를 공유하기 위해 직렬화를 사용할 수 있습니다. 직렬화를 통해 데..

    확장성을 위한 Tomcat 클러스터링 구성과 설정 방법

    확장성을 위한 Tomcat 클러스터링 구성과 설정 방법

    Tomcat Clustering (톰캣 클러스터링) Tomcat 클러스터링은 여러 대의 Tomcat 서버를 함께 동작시켜 고가용성과 확장성을 제공하는 기술입니다. 클러스터링을 구성하면 트래픽 분산과 장애 대응을 위해 여러 서버가 협력하여 웹 애플리케이션을 처리할 수 있습니다. `server.xml`에서 기본적인 클러스터 설정: 로드 밸런서 구성: 클러스터링을 위해 로드 밸런서를 설정합니다. 로드 밸런서는 들어오는 요청을 여러 대의 Tomcat 서버로 분산하는 역할을 수행합니다. 일반적으로 Apache HTTP Server나 Nginx와 같은 웹 서버를 로드 밸런서로 사용합니다. 세션 복제 설정과 캐시 설정은 클러스터 내의 Tomcat 서버에서도 동일하게 구성해주어야 합니다. 이 부분은 아래 세션복제 설정..

    Tomcat 성능 향상: 스레드 풀과 커넥터 설정 사용하기

    Tomcat 성능 향상: 스레드 풀과 커넥터 설정 사용하기

    Tomcat 성능 향상 방법들 Tomcat의 성능을 향상 시키기 위한 방법은 여러가지가 있습니다. 스레드 풀 구성: Tomcat은 기본적으로 스레드 풀을 사용하여 클라이언트 요청을 처리합니다. 적절한 스레드 풀 구성은 동시 요청을 처리하고 대기 시간을 최소화하여 성능을 향상시킬 수 있습니다. 커넥터 설정: Tomcat의 커넥터는 클라이언트와의 연결을 관리합니다. 커넥터의 설정을 조정하여 최적의 성능을 얻을 수 있습니다. 예를 들어, 커넥터의 최대 연결 수, 최대 스레드 수 등을 조정할 수 있습니다. 정적 리소스 처리: 정적인 컨텐츠(이미지, CSS, 자바스크립트 파일 등)는 Tomcat보다 웹 서버(apache, nginx 등)에서 처리하는 것이 효율적일 수 있습니다. 웹 서버와 Tomcat을 연동하여 ..