목록Stack (27)
크롬, 익스, 파이어폭스, 삼성브라우저, IOS 10 이상의 사파리에서 동작하는 클립보드 복사 스크립트입니다. 스크립트로 클립보드 복사하기 위하여 1. 임시 textarea 생성 후 복사할 텍스트 삽입2. 복사할 텍스트 영역을 선택하여 execCommand("copy")로 복사 실행3. 임시 textarea 삭제 의 순서로 진행하면 됩니다. 중요한것은 2번인데, IOS 10 이상의 사파리에서 execCommand("copy")를 실행하기 위해서는 복사할 텍스트의 영역을 잡아 줘야만 실행이 됩니다. 스크립트 코드는 다음과 같습니다. 1234567891011121314function jsCopyLink(copyText) { var tmpTextarea = document.createElement('texta..
엘라스틱 서치에서 더 나은 한글 검색을 위해 형태소 분석기를 사용합니다. 한글 형태소 분석기 중 mecab-ko-dic에 커스텀 단어를 추가하고, 해당 단어의 우선순위를 높이는 방법을 포스팅하겠습니다. 운영체제는 Centos 7 입니다. 내려받은 mecab-ko-dic/userdic 디렉토리 안에 csv 확장자로 사전 파일을 추가합니다. (일반 고유명사는 nnp.csv, 인명은 person.csv, 지명은 place.csv 에 추가) 커스텀 단어를 추가할 때에 규칙이 있습니다. 해당하는 규칙은 https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=1718487366 를 참조하면 됩니다. 커스텀..
엑셀 파일로 정리된 응모 내역을 가지고 랜덤으로 당첨자를 뽑을 수 있는 간단한 프로그램입니다. 응모내역 엑셀 파일을 업로드 하고, 상품 등록 후 추첨을 누르면 바로 당첨자가 추첨됩니다. 또한 당첨 결과를 엑셀로 출력할 수 있어 편리합니다. (Sheet.js를 활용해 클라이언트단에서 엑셀 처리가 가능하게 하였습니다.) (업로드한 엑셀 데이터는 다른 특정 서버로 전송되는 것이 아니라 클라이언트단에서만 처리됩니다.) 사용 매뉴얼은 다음과 같습니다. (같이 동봉된 testData.xls 파일을 가지고 테스트 후 실제 작업하시길 권장합니다.) 0. 개요- setWinner.html을 실행(꼭 Google Chrome 브라우저로 사용하세요. 이외의 브라우저에서는 정상 동작 하지 않을 수 있습니다.)- 중복 당첨 없..
서버에서 JSP에 파일을 전송할 때 한글로 파일명을 보내면 깨지는 경우가 다반사입니다. 따라서 아래 로직과 같이 User-Agent header 값을 가져와서 브라우저 별로 인코딩을 해 줘야 한글이 깨지지 않고 정상 출력이 됩니다. 1234567891011121314151617181920String name = "파일이름"; // 브라우저 별 한글 인코딩String header = request.getHeader("User-Agent");if (header.contains("Edge")){ name = URLEncoder.encode(title, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;..
제가 주로 사용하는 MS-SQL에서는 Date를 "2019-04-18 13:35:40.324" 형식으로 저장합니다. 이 값을 그대로 뷰페이지에 넘겨 처리하다보면 익스플로러나 사파리에서는 정상적으로 인식하지 못하는 경우가 종종 있습니다. 익스나 사파리같은 경우에는 시간을 "2019-04-18T13:35:40.324" 형식으로만 인식하기 때문입니다. 따라서 아래와 같이 파싱해줘야 익스플로러와 사파리에서도 정상적으로 시간 처리를 할 수 있습니다. 간단하게 replace로 대체해도 되고, toISOString()이라는 메소드를 사용하여 파싱해도 됩니다. 12345678910111213 var inDate = "2019-04-15 14:00:00.000"; var afterDate1 = inDate.replace..
input text를 사용하다보면 숫자만 입력 받는다거나, 특수문자는 입력하지 못하게 하는 등의 입력 제한이 필요한 때가 많이 있습니다. Javascript의 match와 정규식을 활용하면 간단하게 입력 제한을 걸어줄 수 있습니다. case 1. 특수문자 입력을 제한 다음과 같이 특수문자 ( ) 의 입력을 제한해야 하는 input이 있습니다. 1cs Javascript로 입력 제한할 특수문자의 정규식과 match, keyup, focusout 메소드를 사용하여 간단하게 해결할 수 있습니다. 123456789101112131415161718192021 // 입력을 제한 할 특수문자의 정규식 var replaceId = /[()]/gi; $(document).ready(function(){ $("#i..
이 포스트를 보시기 전에 OAuth 2.0에 대한 기본적인 이해 및 Google Client 설정이 필요합니다. 다음의 포스트를 참고하세요 OAuth 2.0 정리 OAuth 2.0으로 Google의 Email 주소 받아오기(1) 드디어 Spring으로 만들어진 Web에서 OAuth 2.0을 통해 사용자의 Google Email을 받아오는 테스트 코드를 작성하겠습니다. (이 테스트는 특정 Oauth 라이브러리를 사용하지 않고 HTTP 프로토콜만 사용하여 진행하였으며, Google 공식 문서를 참고하여 작성하였습니다.) OAuth 2.0은 기본적으로 HTTPS를 사용하기 때문에, 로컬 테스트에서도 HTTPS 설정이 되어있어야 합니다. 제가 참고한 HTTPS 테스트 환경 설정 포스트를 공유하니, 필요하신 분들..
이 포스트를 보시기 전에 OAuth 2.0에 대한 기본적인 이해가 필요합니다. 다음의 포스트를 참고하세요 OAuth 2.0 정리 Spring으로 만들어진 Web에서 OAuth 2.0을 통해 사용자의 Google Email을 받아오는 테스트 코드를 작성하기에 앞서 Google Cloud Console에 프로젝트 등록 및 OAuth Client 신청을 해야 합니다. 이번 포스트에서는 Google 기준으로 OAuth Client 신청 방법에 대해 알아보겠습니다. 2019년 2월 12일 기준이므로 이후 신청 방법이 바뀔수도 있습니다만, 이 신청에서 중요한 포인트는 Client ID, Client Secret, Client의 홈 URI, Client의 리디렉션 URI 입니다. 1. https://console.c..