반응형

개발 창고/Web 57

[Spring] Movie Streaming 처리

최근에 카페24에 스프링 프레임워크를 설치하고 운영중에 버그가 한개 발생했었습니다. 그 버그는 동일 서버내에서 영상 재생을 다이렉트로 하면, Stack Overflow가 발생하면서 재생동안 에러로그가 쌓여 카페24에서 할당받은 용량을 catalina.out이 꽉 차면서 용량이 사용할 수 없는 문제였습니다. 확인해보니, 컨트롤러단에서 스트리밍 링크를 직접 연결해주면 해당 문제가 해결되는것을 확인했습니다. private final String FOLDER_MOVIE = "{폴더경로}"; /** * @reference : http://aodis.egloos.com/5962812 * @modified : whiteduck */ @RequestMapping(value="/stream/{video_name:.+}"..

개발 창고/Web 2020.08.10

[MyBATIS] Primary Key를 Insert하기 위한 SelectKey

RDB에서 TABLE에 INSERT를 할 때 기본키(PK, Primary Key)를 꼭 지켜줘야 하는 경우가 많습니다. MariaDB나 MySQL등에서는 Auto Increasement를 활용하는 경우가 많지만, Oracle에서는 이 Auto Increasement를 제공하지 않죠. 흔히 MyBATIS를 사용할때, INSERT 하는 방식에는 총 3가지 정도 아이디어를 낼 수 있습니다. 1. PK SQL과 INSERT SQL을 만들고 호출 하는 방법 2. INSERT를 SELECT로 만드는 방법 3. SelectKey 구문을 활용하는 방법 만약 아래와 같은 테이블이 있다고 가정한다면 CREATE TABLE TB_BOARD ( BBS_SEQ INT NOT NULL, BBS_TITLE VARCHAR(100) ..

개발 창고/Web 2020.08.05

[Spring] 프로그램의 로깅을 위한 기술 Log4j

이 버전에서는 TOC를 지원하지 않습니다. (ex. 모바일) 웹 개발뿐만 아니라 안드로이드 개발 등등에서 콘솔에 보일 로그는 때로 매우 중요하기도 합니다. 로깅은 여러 방법이 있는데 그중에서도 아파치재단에서 제공하는 Log4j는 최근까지도 많이 활용되는 기능입니다. (Spring에서 주로) Log4j란? log4j는 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티이다. 디버그용 도구로 주로 사용되고 있다. log4j의 최근 버전에 의하면 높은 등급에서 낮은 등급으로의 6개 로그 레벨을 가지고 있다. - 위키백과 Log4j - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 로깅의 등급으로 총 6가지가 있는데 다음과 같습니다. FATAL ERROR WARN I..

개발 창고/Web 2020.08.03

[Javascript] 숫자 한글로 표기하기

흔히 은행권에서 많이 볼 수 있는데요 금액을 숫자로 표기하다 보면 금액이 헷갈릴 수 있기 때문에 편의를 위해 제공되는 기능으로 금액을 한글로 표기해주는 경우가 많죠 /** * @param val 가격정보 (Type. Number) */ function _fmtNumberKor(val){ var numKor = new Array("", "일", "이", "삼", "사","오","육","칠","팔","구","십"); // 숫자 문자 var danKor = new Array("", "십", "백", "천", "", "십", "백", "천", "", "십", "백", "천", "", "십", "백", "천"); // 만위 문자열 var result = ""; if(val && !isNaN(val)){ // CA..

개발 창고/Web 2020.07.26

[jQuery] 날짜 선택을 좀 더 쉽게 Datepicker

웹 화면에서 날짜 선택을 위한 캘린더를 구현하는 것은 매우 번거로운 일입니다. 때문에 API를 쓰는 경우가 많은데요, jQuery UI에서는 보통 이런 기능을 기본으로 제공하기 때문에 script에 jquery를 import 했다면, 그냥 datepicker의 대상만 지정해주면 쉽게 사용할 수 있습니다. 기본 사용법 Date: 기본적으로 $("대상").datepicker();를 사용해주면, 대상 Element를 클릭 시에 바로 아래 날짜 선택이 가능한 Calendar가 호출됩니다. 이 캘린더를 커스터마이즈 하고 싶은 경우엔 옵션을 추가해줄 수 있는데, datepicker({옵션명1:옵션값1, 옵션명2:옵션값2})와 같은 형태로 추가 가능합니다. 해당 옵션은 아래의 사이트에서 세부적으로 확인 가능합니다. ..

개발 창고/Web 2020.07.26

[Spring] AOP란 무엇일까?

보통 스프링을 이용하다 보면 AOP라는 용어를 가끔 듣곤 할 겁니다. AOP?Aspect Oriented Programming?관점지향?? 하지만 개발자 관점에서는 이게 확 와 닿지 않는 경우가 많죠 딱 한 줄로 요약하자면, AOP는 어떤 이벤트에 대해 내 기능들이 사전 또는 사후에 자동으로 뭔가 해주기를 바라는 겁니다. 예를 들어 이메일을 예로 들어보면, 내가 글을 쓰는데 앞에는 항상 "OO님 안녕하세요" 끝부분에는 "감사합니다. OO드림" 같은 문장을 매일 쓴다는 건 개발자에게도 반복 업무이고 가끔 또 오타의 가능성을 배제할 수 없죠 이때, '회사 직원들에게 쓸 때는 이게 자동으로 들어갔으면 좋겠다.'를 생각하는 것처럼 (개발자들은 보통 게으릅니다. 때문에 본인의 일을 누군가 자동으로 해주길 바라곤 ..

개발 창고/Web 2020.07.23

[jQuery] Lazy Load 사용하기

보통 웹페이지를 한번 띄우면 페이지 내의 모든 콘텐츠를 가져오기 때문에 화면의 로드가 길어지는 경우가 많습니다. 때문에 실제로 사용자가 보고 싶은 화면이 아닌 경우에도 (단순히 해당 페이지에 보이는 메뉴를 클릭해서 다른 페이지를 가고 싶은 경우나 스크롤을 내리지 않고 현재 화면에서의 콘텐츠를 클릭하고 싶을 때) 페이지를 기다리게 되고, 또 서버 측면에서는 사용자가 보지 않는 콘텐츠까지 전송해야 하므로 트래픽적으로도 문제가 되는 경우가 많습니다. 특히나 웹보다 저용량으로 제공되어야 하는 모바일에서는 특히나 고려해야 할 대상입니다. 그중에서도 가장 많은 비중을 차지하는게 이미지인데, 이 이미지의 트래픽량을 줄여줄 방안 중 하나가 LazyLoad입니다. 이는 이미지가 현재 화면에 노출되어야 하는 경우에만 서버..

개발 창고/Web 2020.07.23
반응형