반응형

전체 글 96

[코드로 배우는 스프링 웹 프로젝트] 26강. 게시물의 조회와 첨부파일

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 게시물의 조회에서는 첨부파일을 다운로드하거나 원본 이미지의 파일을 볼 수 있는 기능을 구현할 것이다. 게시물을 조회하는 방법에서는 아래 두 가지 방법 중 결정이 필요하다. 게시물의 정보는 tbl_board, 첨부파일의 정보는 tbl_attach 에 기록되어있다. BoardVO 객체를 가져올 때 join을 처리해서 한꺼번에 게시물과 첨부파일의 정보를 같이 처리하는 방식 (데이터베이스를 한 번만 호출하게 되므로 효율적이지만, MyBatis 쪽에서 처리해야하는 일이 많아짐) JSP에서 첨부파일 정보를 Ajax를 이용해서 처리하는 방식 (다시 쿼리해야하는 불편함이 있지만, 난이도가 낮고 화면에서 처리는 JavaScript 처리가 ..

[코드로 배우는 스프링 웹 프로젝트] 25강. 프로젝트의 첨부파일 - 등록

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 25.1 첨부파일 정보를 위한 준비 첨부파일 등록을 위해서는 가장 먼저 게시물과 첨부파일의 관계를 저장하는 테이블 설계가 필요하다. 게시물의 첨부파일은 각자 고유한 UUID를 갖기에 별도의 PK는 필요 없지만, 게시물을 등록할 때 첨부파일 테이블 역시 같이 insert 작업이 되어야하므로 트랜잭션 처리가 필요하다. 첨부파일 테이블 명 : tbl_attach create table tbl_attach ( uuid varchar2(100) not null, uploadPath varchar2(200) not null, fileName varchar2(100) not null, filetype char(1) default 'I'..

[코드로 배우는 스프링 웹 프로젝트] 24강. 첨부파일의 다운로드 혹은 원본 보여주기

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 한동안 회사 프로젝트로 바빠 블로그 작성에 신경을 못썼다.. 마지막 글이 3달 전이라니.. 이제 다시 개인 공부도 열심히 해야지....! 첨부파일은 크게 2가지로 분류된다. 1) 이미지 종류 (이 경우는 섬네일 이미지를 클릭하면 원본 파일을 보여주는 형태로 처리) 2) 일반 파일 (이 경우는 해당 파일의 이름으로 다운로드) 위 두가지의 다운로드를 구현해본다. 24.1 첨부파일의 다운로드 먼저, 첨부파일의 다운로드부터 구현해볼 것이다. 첨부파일의 다운로드는 서버에서 MIME 타입을 다운로드 타입으로 지정하고, 적절한 헤더 메시지를 통해서 다운로드 이름을 지정하게 처리할 것이다. UploadController.java 일부 @..

[갈산동 맛집] 곱사임당 1본점 솔직 후기 JMT. (짚불막창/숙성고기/가성비 맛집/막창맛집/곱창맛집/부평구청 근처 맛집)

예전부터 동네맛집하면 곱사임당이 뜨길래 한 번 가야지가야지 했다가 드디어 갔습니다! (결론부터 말하자면, 존맛. 먹고 맛있어서 다음 날도 배달시켜먹었다^^;;;) 가게위치 인천 부평구 굴포로 40-7 101호 (갈산동 364-3) 부평구청역 3번출구에서 걸어서 10분, 굴포천역 6번출구에서 걸어서 15분 / 자세한 위치는 갈산2동 행정복지센터 뒷쪽 골목에 위치해 있다. ​영업시간 월~목 16:00 ~ 23:30 (22:30 라스트오더) 금 15:30 ~ 24:00 (23:00 라스트오더) 주말 15:00 ~ 00:30 (23:30 라스트 오더) 매월 1번째 월요일 휴무 토요일 5시쯤 갔을 때 내부입니다! 2테이블 정도 있었고, 대부분 배달을 많이 시켜먹는 것 같았어요. 메뉴는 위와 같이 다양하고, 저는 ..

일상/[맛집] 2022.08.07

[Network] IP 클래스(A,B,C class)란?

기본적으로 IP는 IPv4 형태이며, IPv4는 3자리 숫자, 4마디로 표기한다. (ex. 111.222.333.444 -> 각 마디의 숫자는 255를 넘을 수 없다. 0~255, 2의 8승) 즉, IPv4는 0.0.0.0 ~255.255.255.255까지 2^32개의 주소를 사용 가능하다. 이러한 IP주소는 클래스로 구분할 수 있다. 이 클래스는 하나의 IP 주소에서 네트워크 영역과 호스트 영역을 나누는 방법이다. IPv4의 클래스에는 A,B,C,D,E까지의 클래스가 존재하고, 각각의 사용 용도가 다르다. (보통 A,B,B 3개 정도만 알고 있으면 된다!) A 클래스, B클래스, C클래스란 무엇일까? 클래스 별로 첫 번째 옥텟의 범위가 지정되어 있다. * 옥텟이란? IP를 표현하는 방식은 옥텟이라는 단..

[IT]/Network 2022.07.01

Grafana vs Power BI 정의 및 특징 비교하기 (모니터링/시각화 도구 비교하기)

그라파나와 Power BI의 정의와 차이가 궁금하여 찾아보고, 정리한 글입니다. 둘 다 시각화 도구이지만 어떠한 차이가 있고 선택할 때 고려할 점은 무엇인지 등 많은 자료가 나오지 않아 불분명한 내용이 포함되어있을 수 있으며 틀린 부분이 있다면 언제든 댓글로 말씀해주세요. 앞으로 공부해나가면서 수정될 부분은 계속 수정해나갈 예정입니다. Grafana란? Grafana는 Grafana Labs에서 개발하고, 지원하는 오픈 소스 분석/모니터링 솔루션이다. 데이터가 저장된 위치에 관계없기 시계열 Metric을 쿼리, 그래프화 및 알림을 줄 수 있다. 많은 회사에서 모니터링하는데 사용되고 있다. 단, 무료인 오픈 소스이기에 SW를 유지보수하는 것은 어렵고 시간이 많이 들기도 한다. Grafana의 특징 Graf..

[IT]/Grafana 2022.06.14

[코드로 배우는 스프링 웹 프로젝트] 23강. 브라우저에서 섬네일 처리

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 브라우저에서 첨부파일의 업로드 결과가 JSON 객체로 반환되었다면, 아래와 같은 작업이 필요하다. 업로드 후에 업로드 부분을 초기화 시키는 작업 결과 데이터를 이용해서 화면에 섬네일이나 파일 이미지를 보여주는 작업 23.1 의 초기화 은 다른 DOM 요소들과 다르게 readonly라 안쪽의 내용 수정이 불가하다. 따라서, 다른 방법으로 초기화 시켜서 다른 첨부파일을 추가할 수 있도록 만들어야 한다. 객체가 포함된 를 복사(clone)하고, 첨부파일을 업로드한 뒤에는 복사된 객체를 내에 다시 추가해서 첨부파일 부분을 초기화 해준다. uploadAjax.jsp 일부 /* 은 다른 DOM 요소들과 다르게 readonly라 안쪽의..

[Docker][Volume] 도커 데이터 저장 / Volume Mount vs Bind Mount 비교하기

Docker의 Storage 부분을 공부하다가 Volume과 Bind Mount가 헷갈려 정리하기 위해 적는 글 입니다. 혹시 틀린 부분이 있다면 지적해주시면 감사하겠습니다 : ) Docker 컨테이너에 쓰여지는 데이터는 기본적으로 컨테이너가 삭제될 때 같이 삭제된다. Docker 컨테이너 특성상 삭제하고 생성하는 일이 잦기 때문에 많은 어플리케이션은 컨테이너 주기와 상관없이 데이터를 영속적으로 저장할 필요가 있다. 혹은, 여러 개의 Docker 컨테이너가 하나의 저장 공간을 공유해서 데이터를 읽거나 쓸 수 도 있다. 따라서, Docker의 컨테이너 생명 주기와 관계없이 데이터를 영속적으로 저장할 수 있도록 Docker는 아래 2가지 옵션을 제공한다. Volume (볼륨) Bind Mount (바인드 마..

[IT]/Docker 2022.06.09

[코드로 배우는 스프링 웹 프로젝트] 22강. 파일 업로드 상세 처리하기 (Ajax, Thumbnailator, 섬네일 생성하기)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 22.1 파일의 확장자나 크기의 사전 처리 첨부파일을 이용하는 웹 공격을 막기 위해 특정 확장자의 파일 업로드를 제한할 필요가 있다. 예제는 첨부파일의 확장자가 'wxw, sh, zip'등의 경우레는 업로드를 제한하고, 특정 크기 이상의 파일은 업로드할 수 없도록 제한하는 처리를 JavaScript로 처리한다. uploadAjax.jsp의 일부 $(document).ready(function(){ var regex = new RegExp("(.*?)\.(exe|sh|zip|alz)$"); var maxSize = 5242880; //5MB function checkExtension(fileName, fileSize) { i..

[코드로 배우는 스프링 웹 프로젝트] 21강. 파일 업로드 방식 (form태그, Ajax방식, MultipartFile)

해당 프로젝트는 코드로 배우는 스프링 웹 프로젝트(개정판)을 기반으로 진행됩니다. 첨부파일을 서버에 전송하는 방식은 크게 태그를 이용해서 업로드하는 방식과 Ajax를 이용하는 방식으로 나눌 수 있다. 태그를 이용하는 방식 : 브라우저 제한이 없어야 하는 경우에 사용 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 을 이용해서 화면의 이동없이 첨부파일을 처리하는 방식 Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식 을 이용하고 Ajax로 처리하는 방식 HTML5의 Drag And Drop 기능이나 JQuery 라이브러리를 이용해서 처리하는 방식 서버 쪽에서의 처리는 대부분 비슷하다. 응답을 HTML 코드로 하는지, JSON 등으로 처리하는지 정도만 구분하면 된다. 시작에 앞서, 첨부..