목록분류 전체보기 (34)
지석이의 일기

처음부터 이클립스를 쓰면 된다는 말에 이때까지 이클립스 무료툴을 써왔다. 이번에 일이 있어서 1년치를 받았다. 이제부터 이클립스 대신에 인텔리를 써보자. 각 툴의 장단점은 아래와 같다. Eclipse 장점 오픈 소스: 무료임. 플러그인 시스템: 다양한 플러그인을 설치 및 기능을 확장가능. 넓은 언어 지원: Java 외에도 C, C++, Python 등 여러 언어 지원. 산업 표준: 장기간 업계를 독주한 탓에 대부분의 기업이 그냥 이클립스 씀. 단점 UI/UX: 인터페이스가 낡았다는 평가를 받기도 하며, 때때로 비직관적일 수 있음. 성능 문제: 큰 프로젝트에서는 성능 저하가 발생할수있음. IntelliJ IDEA 장점 직관적인 인터페이스: 깔끔하고 직관적인 UI/UX를 제공. 스마트 코드 완성 및 리팩토링..
요즘 mybatis외에 다른 tool을 사용해서 DB작업을 한다고하여 JPA를 사용해보기로 하자. 결론적으로 말하자면, CRUD 쿼리 없이 메소드명으로 쿼리를 예상(?)하여 api통신을 한다고 보면 된다. mybatis에 특화 되어있고, 쿼리작성에 능숙하면 솔직히 mybatis가 더 편하기도 하다... 또한 복잡한 통계나 계산 쿼리에는 오히려 성능이 떨어질수도 있다. 1. JPA(Java Persistence API)란 반복적으로 수행되는 CRUD 기능 처리에 특화되어있다. 자바 개발자들이 데이터베이스를 더 쉽게 다룰 수 있도록 도와주는 자바 기반의 ORM(Object-Relational Mapping) 기술 ORM은 개체(객체)와 관계형 데이터베이스 간의 매핑을 처리하는 기술로, 개발자가 SQL 쿼리를..

이전 시간에 nginx과 tomcat 을 연계하는 기능을 배웠다. nginx가 WEB서버 역활을 하고, tomcat 이 WAS 역활을 한다. 그런데 http가 아닌 https를 이용한다면 WEB서버에 추가 작업을 해줘야한다. 1. https 란 쉽게 말해서 SSL/TLS 통신 (Secure Socket Layer/Transport Layer Security) 라고 한다. SSL은 인터넷 기반 암호화 프로토콜이라고 하는데, 말은 거창하지만 쉽게 말해서 클라이언트 => 서버 간의 요청 통신 중 암호화해서 서버로 데이터를 넘기는 방식이다. 당연히 서버에서는 해당 통신을 복호화해서 데이터를 수령받아 요청을 처리한다. 이러는 이유는 클라이언트 => 서버 간의 통신중 중간에 통신을 하이젝킹? 가로채는 해킹이 있다고..

로컬에서는 정상적으로 구동되다가, 서버에 올려서 톰캣 구동시 이렇게 어플리케이션 구동 실패에러 와 및에 내려보면 어디서 뜬 에러인지 보인다. 맨 아래 보면 Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/json/JSONException 에러가 존재하는데, NoClassDefFoundError 에러의 경우, 종종 몇몇 라이브러리가 개발=>운영으로 서버 올리는 과정에서 인식이 되지 않는다고 한다. 그중에 하나가 JSON 라이브러리인데 maven의 정상적인 org.json 을 설치하고 해당 컨트롤러의 import를 바꿔주면된다. pom.xml에 org.json json 20230227 을 넣고 ..

nginx 첫 생성후 다음과 같은 에러가 발생했다. Request Entity Too Large 라고 하는데, 한번의 요청에 길이 제한이 있는데 기본은 1MB이다. 요청을 길게 만들어보자. nginx.conf 로 가서 http 혹은 server location 객체 안에 설정을하자. 필자의 nginx 는 /var/etc/ 폴더에 있다... vi /etc/nginx/nginx.conf http 안에 client_max_body_size 0; 을 입력하면 객체 길이에 상관없이 요청을 받는다. nginx.conf 파일을 수정해주고 재시작 하면 된다. nginx -s reload

이때까지 서버에 단 하나의 톰캣만 설치하고 iptables -t net -A PREROUTING -p tcp --dprot 80 -j REDIRECT --to-port 8080위의 명령어 "80 PORT로 들어오는 요청을 8080으로 전환" 을 사용해 왔다. IPTABLES 의 REDIRECT 를 사용해놨으면 다음과 같은 흐름이다. (AS-IS)이렇게 하면 하나의 톰캣으로 도메인에 8080포트를 사용하지 않고 평상 도메인을 사용한 것처럼 보이긴 한다.필자는 WEB서버를 붙혀 HTTPS를 사용해야할 일이 생겨 IPTABLES를 뜯어내고, 저기 위치에 NGINX를 붙히도록 하겠다. 아래과 같은 형식으로 수정하면 된다. (TO-BE)기본 도메인 포트(80)으로 들어왔을 경우, 서버내의 PORT 8080 톰캣으..

로그백은 왜 하는걸까? 로깅을 통해 개발자는 개발 과정 혹은 개발 후에 발생할 수 있는 예상치 못한 애플리케이션의 문제를 진단할 수 있고, 다양한 정보를 수집할 수 있다. 사용자들의 이동 분석도 할 수있다. 또한 각 단계별로 위험도 등급을 나누어 파일로 적재할수도있다. 하지만 무분별하게 로깅을 난발하면 과유불급이다. 일단 로깅을 설치하고 어디 어디에 로깅 파일을 넣어야하는지 확인해보자. 이번 시간에는 SLF4J 의 구현체 Logback 을 사용해서 로깅을 구현해보겠다. 로그백 초간단 사용 스프링부트에서는 기본적으로 내장이 되어있고, 구현체이다 보니 그냥 별도의 초기화 없이 바로 사용이 가능하다. 이런식으로 클래스 전역 변수로 전언하고, @Controller public class HomeControlle..

지난 시간에 DB 연결을 공부해봤다. 이번에는 DB를 연동뒤, DB에서 데이터를 조회하여, 화면에 뿌리는 과정까지 공부해보자. 1. Back단 생성 기본적으로 트랜잭션을 만들 컨트롤러를 생성하자. 컨트롤러단 @autowired 로 서비스와 연결하자. 매개변수에 Model클래스를 넣어주자. 기본적으로 해당 메소드에 저걸 넣지 않는다고 해도 해당 클래스로 뷰로 데이터를 끌고 간다. Model 클래스에 addAttribute 메소드로, ("변수명",데이터) 로 화면단에 데이터를 보낼수있다. 서비스단 @autowired로 맵퍼를 설정하자. 서비스 클래스는 단순히 중간 연결책이지만, 서비스 클래스에서 데이터를 정재한다. 맵퍼단 interface 맵퍼 생성한다. 인터페이스인 만큼 아무것도없다. mybatis밑에 맵..

저번에 만든 SpringBoot 프로젝트와 MysqlDB를 서로 연결해보자. 1. 의존성 주입 의존성 주입을 위해 pom.xml을 수정해준다. mysql 외에 mybatis를 사용하기위에 2개를 넣어준다. https://mvnrepository.com/ 에서 검색하여, 제일 사용량이 많은걸로 해준다. org.mybatis.spring.boot mybatis-spring-boot-starter 2.3.0 com.mysql mysql-connector-j runtime 위 두개 의 dependency를 pom.xml에 넣어준다. mysql-connector-java = JAVA 가 MySQL과 통신할 수 있게하는 드라이버 mybatis-spring-boot-starter = Spring Boot 용 Myba..

1. 파일 다운 및 설치 서버에 먼저 mysql을 설치한다. mysql 홈페이지에서 rpm파일을 서버에 직접 다운 받자 url : https://dev.mysql.com/downloads/repo/yum/ 필자는 리눅스버전 6으로 진행했다. 리눅스 버전에 맞게 선택한뒤 하단의 다운로드 버튼의 url을 기억하자. wget 명령어로 해당 다운로드 버튼 url 을 입력해준다. $ wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm 해당 파일이 현재의 커서위로 다운로드 되는데, 다운 받은 rpm파일을 yum localinstall "패키지"를 통해 설치한다. $ sudo yum localinstall mysql80-community..