자바: 직렬화 (Serialization) + 예제 – 게시판 비슷한 것

직렬화란 자바의 객체를 네트워크 상에서 주고받게 하기 위하여 메모리에 저장된 객체를 바이너리 형식으로 변환하는 것을 뜻합니다. 역직렬화는 당연히 반대의 과정입니다. 이렇게 변환된 직렬화된 객체는 하드디스크에 저장하거나 네트워크 상으로 전송하여 다른 컴퓨터에서 사용하도록 할 수 있습니다. 직렬화를 하려면 대상 클래스가 Serializable 인터페이스를 구현해야 합니다. 참고로 ArrayList를 비롯한 몇몇 자바 클래스에서는 이미 더보기…

Java, Spring: 예제 – JspMvcHelper (Reflection을 사용해 ModelAndView 내의 객체들의 정보를 표시해 주는 프로그램)

이 프로그램은 자바의 Reflection 개념들을 연습하기 위해 만든 예제로 리플렉션을 이용하여 Spring 프로젝트에서 MVC 패턴을 사용할 때 컨트롤러 등에 있는 ModelAndView (+ Model) 객체의 정보를 프론트엔드 측에서 볼 수 있도록 가공해서 보여주는 프로그램입니다. 자바스크립트의 console.log() 등을 사용해 내용을 볼 수 있습니다. 사용 제약 MVC 패턴을 사용하는 스프링 프로젝트가 필요합니다. 모델 객체가 더보기…

JSP, Spring: EL(Expression Language), JSTL(Java Standard Tag Library) 기초 사용법

EL(Expression Language)과 JSTL(Java Standard Tag Library)은 자바 서블릿 또는 스프링을 이용한 MVC 패턴에서 컨트롤러가 뷰(View) 페이지로 전송한 정보를 표시하는 방법입니다.   1. EL 별도의 임포트 과정이 필요없고, JSP에서 바로 사용 가능합니다. 기본 사용 방법은 ${ 표현식 } 의 꼴로 사용하며, 표현식 내부의 계산 결과를 HTML에서 사용하는 텍스트 형식으로 반환합니다. 즉, 더보기…

Spring Boot: 프로젝트를 jar 파일로 배포하기

이 글은 윈도우 기준으로 작성되었지만 다른 OS 에서도 적용할 수 있습니다. Spring Boot 프로젝트를 생성시 처음에 설정하는 배포 옵션을 jar 파일로 배포로 설정했다고 가정합니다. 처음에 war로 설정했을시에는 추가 설정이 필요한 관계로 나중에 따로 포스팅하겠습니다. 그 전에 이클립스에서 설정되어 있는 JRE를 JDK로 바꿔야 합니다. 바꾸지 않으면 추후 에러의 원인이 되므로 미리 더보기…

Spring Boot: 설치 및 기본 설정 (macOS 및 Eclipse 기준)

1. 이클립스(STS) 준비 이클립스에서 Help > Marketplace… 를 선택한 다음 STS 을 검색해서 설치합니다. 설치 시 이름에 boot 가 들어가는 요소는 반드시 체크하고, Perspective를 Spring으로 변경합니다. 또는 처음부터 STS(STS가 설치된 이클립스)로 사용합니다: https://spring.io/tools   2. Spring Starter Project 생성 이클립스에서 File > New… > Spring Starter Project 를 선택합니다. Group, Artifact, Package 등은 더보기…

자바(Java)에 프로세싱(Processing) 라이브러리 Minim을 설치하는 방법 + 예제: 주파수 그래프가 있는 오디오 플레이어

노래 파일을 불러와 500 구간으로 쪼갠 뒤 각각 구간의 평균 주파수를 리스트에 삽입해 사운드클라우드의 플레이어 비슷한 효과를 내는 예제입니다. 이 기능을 사용하려면 Minim이라는 Processing기반의 라이브러리가 필요합니다. (참고: Processing: 미디어아트 프로그래밍 언어 기초)   Minim을 사용해 음악 파일의 주파수를 분석  주파수 분석은 고속 푸리에 변환(FFT) 방식.  Minim은 음악 재생, 분석과 관련하여 다양한 기능을 더보기…

Java, Spring Boot 예제: 이미지를 클라이언트로부터 받아 파워포인트로 만들기

작업순서는 다음과 같습니다. 사용자(클라이언트, 크롬 등 웹브라우저 이용하는 사람)는 이미지파일을 브라우저에서 업로드한다. 서버에서 그 이미지를 받아서 파워포인트 파일에 삽입한다. 만들어진 파워포인트 파일을 다시 사용자한테 반환한다. 사용자는 다운로드 받을 수 있다.   파워포인트는 org.apache.poi 라는 라이브러리를 사용해 만들 수 있으며 depency는 다음과 같습니다. <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> 더보기…

Spring Boot: 국제화(Internationalization)

여기서 국제화는 홈페이지의 내용을 다국어로 지원하는 것을 뜻합니다. 예를 들어, https://www.navercorp.com/ 사이트를 보면 동일한 레이아웃과 동일한 내용을 한국어 또는 영어로 지원합니다. 이 곳 뿐만 아니라 많은 사이트에서 이런식의 다국어를 지원합니다. 만약 이것을 똑같은 HTML을 복사해서 내용만 바꾸겠다는 식으로 접근하면 홈페이지 제작이 굉장히 힘들겠죠? 처음부터 국제화를 의도하고 제작하는 것이 좋겠습니다. 0. src/main/resources 더보기…

Java: 2차원 배열

2차원 배열 2차원 배열은 일반적으로 알고있는 배열을 여러 개 덧붙인 형태라고 보면 될 것 같네요. 2차원 배열에서는 length 를 어떻게 써야할 지 헷갈릴 수 있는데 2차원 배열의 행과 열 크기가 똑같을 경우 array.length를 사용해도 상관없습니다. 다만 각 행마다 열의 크기가 제각각 다를때가 문제인데 행과 열의 크기가 다른 경우 array.length는 행의 개수를 반환하며 array[row].length는 특정 행의 더보기…

Java 예제: 한글 초성 중성 종성 분리 (자모분리)

  유니코드의 특성을 이용해 자모분리합니다. 예를 들면 ‘간’이라는 글자를 ㄱ, ㅏ, ㄴ 으로 분리하는 예제입니다. 유니코드 한글은 0xAC00 으로부터 초성 19개, 중상21개, 종성28개로 이루어지고 이들을 조합한 11,172개의 문자를 갖는다. 한글코드의 값 = ((초성 * 21) + 중성) * 28 + 종성 + 0xAC00 (0xAC00은 ‘ㄱ'의 코드값) 따라서 다음과 같은 계산 더보기…