yjhyjh5369의 등록된 링크

키자드에 등록된 총 966개의 포스트를 확인하실 수 있습니다.

Naver Blog

모바일 웹 개발 방법

1.viewport를 이용한 모바일 해상도 조절 -viewport 구조를 잘 알아두면 상황에 맞게 잘 활용할 수 있습니다. -요즘은 안드로이드, iOS 모두 viewport를 지원하지만 렌더링 클라이언트 중에는 지원하지 않는 경우가 있을 수 있는데 이 경우 별도의 메타 태그를 통해 보완해 주면 됩니다. <meta name=”HandheldFriendly” content=”true”> <meta name=”MobileOptimized” content=”720”> 1.1.viewport 태그의 기본 구조 <meta name=”viewport” content=”user-scalable=no, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0”/> 위의 태그는 확대/축소를 하지 못하도록 만들어 놓은 태그로 모바일 페이지에 적용 된 예시 입니다. 1.1.1.width=device-width -컨텐츠를 디바이

Naver Blog

WINDOWS RUN AS ADMINISTRATOR로 실행한 프로그램에서 네트워크 드라이브 사용할 수 었을 때

http://technet.microsoft.com/en-us/library/ee844140(v=ws.10).aspx * 증상: 윈도즈에서 권한상승(UAC)를 사용해 관리자 권한으로 실행한 컴퓨터에서 네트워크 드라이브를 사용하지 못하는 경우가 있다. * 이유: 네트워크 드라이브의 억세스 권한을 획득할 때 사용한 사용자 세션 정보는 UAC로 관리자 권한을 획득해 실행되는 프로세스의 사용자 정보와 같지 않기 때문에, 네트워크 드라이브를 사용할 수 없다. * 해결방법: 1. regedit을 실행 2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 를 찾음 3. DWORD키를 만들되 다음과 같이 함. * 이름 = EnableLinkedConnections * 값 = 1 4. 리부팅

Naver Blog

logback 설정

<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%logger{0}-%M] - %msg%n</Pattern> </encoder> </appender> <!-- <appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_DIR}/SafeGuardDoclog.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_DIR}/SafeGuardDoclog_%d{yyyy-MM

Naver Blog

windows tomcat에서 tomcat 메모리 확보 방법

1. UI 버전의 경우 Java 탭의 Java Options에 아래와 같이 추가 -Xms40m -Xmx512m -XX:MaxPermSize=256M -XX:MaxPermSize=256m 2. UI 버전이 아닐 경우 set CATALINA_OPTS=-server -Xms256m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

Naver Blog

XP용 IE 8 다운로드 주소

http://download.microsoft.com/download/B/B/0/BB0A25CB-C624-4DC7-8451-20C04D87D6A0/IE8-WindowsXP-x86-KOR.exe <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

명령어로 tomcat의 memory pool 변경

tomcat7 //US//tomcat7 --JvmMs 512 --JvmMx 2048 JvmMs : 초기 메모리 ( Initial memory pool ) JvmMx : 최대 메모리 ( Maximum memory pool ) 단위 : MB <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

무료 아웃룩 프로그램 ( ms outlook 대체 )

모질라에서 무료 아웃룩을 제공한다. 1. URL https://www.mozilla.org/ko/thunderbird/ Thunderbird — 메일을 더 쉽게 사용하세요 Thunderbird는 메일을 더 쉽게 사용할 수 있는 무료 프로그램입니다. 더 많은 기능을 만나보세요! www.mozilla.org

Naver Blog

sitemesh3

sitemesh를 써보려고 했는데 계속 없는 URL이라고 에러가 나서 검색해 보니 sitemesh3이 나온것을 발견 http://wiki.sitemesh.org/wiki/display/sitemesh3/Getting+Started+with+SiteMesh+3 Getting Started with SiteMesh 3 - SiteMesh 3 - Confluence Introduction This tutorial is a quick introduction to using SiteMesh3 in a web-application. It covers: A high level overview of how SiteMesh3 works Installation and configuration Building and applying a simple decorator It is recommend you read the high level SiteMesh 3 Overview before this tutor

Naver Blog

jqGrid에서 Cannot read property 'safari' of undefined 에러 발생 시

jqGrid의 하위 버전을 쓸 경우 jqGrid에서 $.browser를 사용하는데, $.browser는 jQuery 1.9에서 삭제됨. 따라서 jquery-migrate를 추가함 아래는 jquery 1.x를 사용할 경우이고 jquery 2.x나 jquery 3.x를 사용할 경우 높은 버전의 migrate를 받아야 함. https://github.com/jquery/jquery-migrate/tree/1.x-stable#readme jquery/jquery-migrate jquery-migrate - APIs and features removed from jQuery core github.com

Naver Blog

[Eclipse] 유용한 이클립스 단축키

1. Ctrl + Shift + L : 이클립스 전체 단축키를 볼 수 있다. 2. Ctrl + F11 : 최근 실행한 Run 실행 3. Ctrl + D : 줄 삭제 4. Alt + ↑ , Alt + ↓ : 줄 위치 바꿈 5. Ctrl + Shift + O : 사용하지 않는 import 삭제, 필요한 import 추가 6. Ctrl + H : 검색 창을 open 7. Ctrl + F : 찾기/바꾸기 창을 open 8. Ctrl + L : 입력한 라인의 줄로 이동 9. Ctrl + Page Up , Ctrl + Page Down : 코드 편집 창에 여러 개의 창이 띄워져 있을 경우 좌/우 창 이동 10. Ctrl + F6 : 현재 띄워져 있는 파일간 이동 11. Ctrl + F7 : 뷰간 이동 ( 네비게이션 ) 12. Ctrl + W : 에디터 창 닫기 13. Ctrl + Shift + W : 열려있는 모든 에디터 창 닫기 14. Alt + Shift + A : 에디터모드, 다량의 데이

Naver Blog

byte로 데이터를 주고 받는 방법 ( java read byte ) - 작성중

1. byte 파일 읽기 FileInputStream in = null; BufferedInputStream bis = null; try { in = new FileInputStream(new File("C:\\SeqID")); bis = new BufferedInputStream(in); int len = 0; while ((len = bis.read(buffer)) >= 0) { ByteBuffer bb = ByteBuffer.wrap(buffer); bb.order(ByteOrder.LITTLE_ENDIAN); String orgFilePath = ByteUtil.getString(bb, (orgFilePathSize * 2)); int eventType = ByteUtil.getInt(bb); } catch (Exception e) { e.printStackTrace(); } finally { try { bis.close(); in.close(); } catch (IOExce

Naver Blog

[chartjs] height 변경

1. 옵션에 maintainAspectRatio: false를 설정 options: { maintainAspectRatio: false } 2. 높이 변경 var ctx = document.getElementById(chartId).getContext("2d"); ctx.height = 150; 또는 <div id="chartContainer" style="width: 730px; height: 150px; display: inline-block;"> <canvas id="chart-area" ></canvas> </div> <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

[chartjs] Axes의 step ( 증가값 ) 변경

xAxes: [{ display: true, ticks: { suggestedMin: 0, // minimum will be 0, unless there is a lower value. // OR // stepSize:1, // 1씩 증가 //min:0, max:100, beginAtZero: true // minimum value will be 0. } }]

Naver Blog

[chartjs] line chart의 선을 직선으로 변경

data: { datasets: [{ label: 'aaaa', data: data, backgroundColor: window.chartColors.red, borderColor: window.chartColors.red, fill: false, lineTension: 0 }], labels: labels, }, * lineTension의 값을 0으로 설정

Naver Blog

[chartjs] chartjs 사용하기

1. chartjs란? 1.1 License : MIT license. 1.2 공식 홈페이지 : http://www.chartjs.org/ Chart.js | Open source HTML5 Charts for your website Open source Chart.js is a community maintained project, contributions welcome! 8 Chart types Visualize your data in 8 different ways; each of them animated and customisable. HTML5 Canvas Great rendering performance across all modern browsers (IE9+). Responsive Redraws charts on window resize for per... www.chartjs.org 1.3 Github 주소 : https://github.com/chartjs/Chart.

Naver Blog

[JAVA] 시간 표시 할 때 오전/오후 표시하기

String format = "yyyy-MM-dd aa hh:mm:ss"; Calendar today = Calendar.getInstance(); SimpleDateFormat type = new SimpleDateFormat(format); return type.format(today.getTime()); * aa가 오전/오후를 나타냄

Naver Blog

[mariaDB, MySQL] DB 연결 속도저하 해결 방법

localhost 로 접속하는 경우는 문제가 없지만 IP 로 접속하는 경우에는 DNS 서버의 성능이 떨어지거나 장애가 있는 경우에 DB 연결 시 속도저하가 발생할 수 있습니다. 이 경우 skip-name-resolve를 설정함으로써 DB 접속시에 문제점을 해결할 수 있습니다. 이 옵션은 client 에서 server로 접속시에 DNS Lookup 과정을 생략해 줍니다. 1. my.cnf ( 또는 my.ini ) 에 설정 [mysqld] skip-name-resolve 2. 또는 hosts 파일에 접속 IP와 호스트명을 넣어줍니다. mysql에서 접속시 ip에 대한 resolving(역질의)를 합니다. 하지만, 대부분의 IP는 등록되어 있지 않으며, DNS가 느리다면 이 부분은 더욱 심각한 속도 문제가 발생합니다. 1번은 역질의를 하지 않게 하는 방법이고 2번은 hosts파일에서 질의 하게 하는 방법입니다. 출처 : http://blog.naver.com/leolo/7002168744

Naver Blog

google map api 연동

1. API KEY 발급 1.1 https://developers.google.com/maps/ 주소로 이동 1.2 "시작하기" 버튼 클릭 1.3 본인이 사용할 API 찾기 ( javascript의 경우 - Google Maps JavaScript API ) 1.4 "키 가져오기" 클릭 - 만약 미리 생성해 놓은 키가 없다면 키를 생성해야 한다. - https://console.developers.google.com/apis 주소로 이동 - 사용자 인증 정보 메뉴로 이동 - 사용자 인증정보 만들기 -> API 키 2. google map 구현 <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=구글 API 키"></script> function initialize(x, y) { var myLatlng = new google.maps.LatLng(x, y); // 위도, 경도 var myOptio

Naver Blog

IE 익스플로러 파일 다운로드 한글 깨짐

private String getDisposition(String filename, String browser) throws Exception { String dispositionPrefix = "attachment;filename="; String encodedFilename = null; if (browser.equals("MSIE") || browser.equals("Trident")) { /* IE11부터 식별문자가 MSIE에서 Trident로 변경됨. */ encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20") + ";"; } else if (browser.equals("Firefox")) { encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\""; } else if (browser.equals("O

Naver Blog

server.xml의 connector 설정

속성 설명 port 포트번호 protocol 프로토콜명(HTTP/1.1, AJP/1.3 ...) acceptCount Request 큐의 길이를 설정한다. HTTP 요청시 IDLE 스레드가 없을 경우 해당 값만큼 요청을 대기한다. 대기 큐에 들어간다는 것은 처리 가능한 스레드가 없다는 의미이며, 기능장애 가능성이 높다. 따라서 대기 큐에 쌓이도록 하는 것보다 0~10 내외로 값을 낮게 주어 처리하도록 한다. rediretPort SSL 요청이 들어올 경우 redirect될 포트 번호 URIEncoding GET 요청을 처리 할 때 사용할 인코딩 방식을 설정한다. 톰캣의 default값은 ISO-8859-1인데, 한글 사용을 하려면 UTF-8로 변경해야 한다. useBodyEncodingForURI true/false 이 값은 request.setCharacterEncoding()으로 설정한 값으로 인코딩을 처리한다. 스프링 프레임워크를 사용할 경우 web.xml에서 Character

Naver Blog

[tomcat] 톰캣 재시작 시 Caused by: java.lang.NoClassDefFoundError: Lorg/apache/ibatis/session/SqlSessionFactory; 오류 발생

org.apache.catalina.core.ContainerBase startInternal 심각: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:188) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) at org.apache.catalina.co

Naver Blog

[jquery] resize 끝날 때 한번만 이벤트 실행

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 // 우선 resize 에 resizeEnd 를 trigger 등록 $(window).resize(function() { if(this.resizeTO) { clearTimeout(this.resizeTO); } this.resizeTO = setTimeout(function() { $(this).trigger('resizeEnd'); }, 500); }); // 그런 후 아래처럼 event 에 bind 시켜서 사용 $(window).on('resizeEnd', function() { // 실행 코드 들어가는 곳 }); Colored by Color Scripter cs

Naver Blog

SXSSFWorkbook out of memory

SXSSFWorkbook 를 사용하여 엑셀을 만드는 도중 메모리 초과 현상 발생. 메모리가 2.1G까지 올라가는 현상이 발생하여 해결방법을 찾아보았다. [해결방법] 1. 생성 할 때 row를 입력 Workbook wb = new SXSSFWorkbook(100); // 100개의 행만 메모리에 유지하고 초과되는 행은 파일에 기록 * dispose 함수는 임시 파일을 삭제하는 함수.

Naver Blog

[JSP] 대용량 파일 다운로드

request.setCharacterEncoding("UTF-8"); // 서버에 실제 저장된 파일명 String exportFolderPath = request.getParameter("exportFolderPath"); String filename = request.getParameter("exportFileName"); // 실제 내보낼 파일명 String orgfilename = request.getParameter("orgFileName"); InputStream in = null; OutputStream os = null; File file = null; boolean skip = false; String client = ""; try { // 파일을 읽어 스트림에 담기 try { file = new File(exportFolderPath + "/" + filename); in = new FileInputStream(file); } catch (FileNotFoundExc

Naver Blog

[windows nginx + tomcat] remote_addr (client IP)를 얻는 방법

[출처] https://www.lesstif.com/pages/viewpage.action?pageId=20775886 http://rocksea.tistory.com/68 [ nginx + tomcat ] reverse proxy 연동하기 ( windows ver. ) 회사에 로컬 개발환경 셋팅을 위한 자료 배포 차원으로 windows 에서의 ngix + tomcat 환경 구성 하기 포스팅을 써보려 합니다. 개발환경 OS : Windows7 nginx : 1.2.2 tomcat : 7 step 1. nginx download nginx의 설치는 다운로드 후 압축만 풀면 끝이기 때문에 따로 설치는 없습니다. Download URL : http://www.nginx.org/en/download.html [ 그림 1 ] nginx download step 2. 압축해제 다운받은 nginx-1.2.2.... rocksea.tistory.com XFF는 HTTP Header 중 하나로 HT

Naver Blog

java object to map

import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; public static Map<String, Object> introspect(Object obj) throws Exception { Map<String, Object> result = new HashMap<String, Object>(); BeanInfo info = Introspector.getBeanInfo(obj.getClass()); for (PropertyDescriptor pd : info.getPropertyDescriptors()) { Method reader = pd.getReadMethod(); if (reader != null) { result.

Naver Blog

IE8 호환성보기

출처 : http://webdir.tistory.com/38 X-UA-Compatible, IE=edge, 호환성 보기 Internet Explorer 8 버전이 등장하면서 새로운 기능 한 가지를 추가했습니다. 바로 호환성 보기 버튼인데, 이미 주소 표시줄 옆에 있는 종이 모양의 아이콘을 눌러 보신 분도 계실꺼라 생각합니다. 호환성 보기의 이해 호환성 보기 버튼은 IE8이 웹페이지에 접근했을때, 어떤 렌더링 엔진을 사용할 것인지를 선택하게 하는 용도의 버튼입니다. 웹 개발자 및 디자이너 분들은 구형 IE 브라우저에서 표준에 맞지 않는 수많은 오.. webdir.tistory.com 1. 호환성보기 호환성보기 버튼은 IE8로 웹 페이지를 볼 때, 어떤 렌더링 엔진을 사용할 것인지를 선택하게 하는 용도의 버튼입니다. 여기서 문제는, 호환성보기는 IE6이나 IE7을 기준으로 제작된 웹 페이지를 볼 수 있게 해주는 역할을 하기 때문에 IE8 이상에서 제작된 웹 페이지의 경우 반대로 화면이

Naver Blog

[jQuery] 회전한 객체 0, 0 위치 맞춤

이미지를 회전하면 위치가 이상하게 변하는데 이 경우 이미지의 position이 이상해 진다. 이때 jQuery를 사용해서 위치를 깔끔하게 정리 할 수 있다. 1. HTML <div id="imageMain"> <img src="image/aaa.png" name="img_viewImage"/> </div> 2. javascript $("img[name=img_viewImage]").position({ my:'left top', at:'left top', of:'#imageMain' }); * 회전 plugin http://jqueryrotate.com/

Naver Blog

[javascript] JSON.stringify가 IE8에서 동작하지 않을 경우 해결방법

JSON.stringify를 IE8에서 사용하려고 한다면 "호환성 모드"에서 동작하지 않아야 한다. 따라서 아래의 메타태크를 추가 <meta http-equiv="X-UA-Compatible" content="IE=8" /> * 호환성보기를 안쓰는 것이 중요하기 때문에 content의 값은 IE=10이 되어도 된다.

Naver Blog

IE8에서 사용 가능한 chart

1. jqPlot 2. flot chart [참고사항] 1. chartjs는 1.x 버전까지만 IE8을 지원 - 애니메이션 효과를 사용하지 않아야 함. - tooltip 처리가 될때 깜빡임현상 발생

Naver Blog

[스크랩] n년블로그 - 구글 크롬 버전업후 화면커짐 해상도 문제해결

[출처] https://m.blog.naver.com/PostView.nhn?blogId=ahnsj1&logNo=220859735496&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F [스크랩] n년블로그 - 구글 크롬 버전업후 화면커짐 해상도 문제해결 고마우신 엔백님^^의 블로그에서 해결책을 찾아 공유합니다.구글 크롬 바로가기의 속성창에서 대상경로의 ... m.blog.naver.com 구글 크롬 바로가기의 속성창에서 대상경로의 뒷부분에 띄어쓰기 한번하고 명령줄 /high-dpi-support=1 /force-device-scale-factor=1 추가하는 방법입니다. 적용후 시스템 다시시작해야 반영됩니다. OS는 win7입니다.

Naver Blog

[windows] redmine svn 연동

1.redmine 설정 1) 레드마인 웹 페이지 접속 2) 관리자 계정으로 로그인 3) [관리 - 설정 - 저장소] 메뉴로 이동하여 설정 4) [프로젝트 - <프로젝트명> - 설정 - 저장소] 메뉴로 이동하여 "저장소 추가" 클릭하고 내용 입력 주 저장소 : 체크 식별자 : 한번 입력되면 수정 불가. 대문자 입력할 수 없음 URL : svn 주소 입력 로그인 : svn 계정 비밀번호 : svn 계정의 비밀번호 5) 등록된 저장소 확인 6) 식별자를 클릭하면 아래와 같이 화면이 바뀌어야 함. 아래 화면이 뜨면 연동 완료 ## 예외상황!!!! 404 항목이나 리비전이 저장소에 존재하지 않습니다 위와 같은 상황 발생시 해결방법 * 주의사항: 반드시 svn서버가 아닌 redmine 서버에서 해야 함 1. svn에서 인증서 가져오기 설정 1) pstools 다운로드 https://technet.microsoft.com/en-us/sysinternals/pstools.aspx 2) 다운로드가

Naver Blog

Internet Explorer 11 ( IE11 ) 개발자도구 에러 - Exception in window.onload: Error: An error has occurredJSPlugin.3005

보안업데이트를 하면 해결됨 http://www.microsoft.com/en-us/download/details.aspx?id=45154 Cumulative Security Update for Internet Explorer 11 for Windows 7 for x64-based Systems (KB3008923) A security issue has been identified in a Microsoft software product that could affect your system. www.microsoft.com

Naver Blog

IE ( 인터넷 익스플로러 )에서 홈페이지가 먹통일때

1. 인터넷 옵션에서 "보안"탭으로 이동 후 "신뢰할 수 있는 사이트"에 등록 2. 인터넷 옵션에서 "보안"탭으로 이동 후 "사용자 지정 수준" 버튼 클릭 후 "active 스크립팅 사용"으로 변경 <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

배치파일(bat 파일)을 서비스로 등록하는 방법

jar 파일을 서비스로 등록하는 방법을 찾던 중 아래와 같이 해서 성공했음 sc create 명령어로 서비스를 등록하면 "서비스를 시작하지 못했습니다: 서비스가 시작이나 제어 요청에 시기 적절하게 응답하지 않았습니다" 라는 오류 메시지가 뜸 [srvany.exe, instsrv.exe + 레지스트리 수정] 이라는 방법이 검색하면 나오는데 이 방법은 윈도우xp나 윈도우2003정도에서만 정상동작하는 것 같음 결국 nssm 사용 nssm 다운로드 : https://nssm.cc/download 1. bat 파일 작성 ( jar.bat ) @ECHO OFF CALL "C:\Program Files\Java\jdk1.7.0_45\bin\java.exe" -jar "jar 파일 경로" 2. nssm 압축 해제 후 cmd창에서 설치 경로로 가서 아래 명령어 실행 nssm install [서비스명] [bat파일 경로] ex) nssm jarService c:\jar\jar.bat

Naver Blog

[DHTMLX] getformdata 날짜 포멧

그냥 getformdata()를 쓰면 return되는 값이 Thu Nov 23 2017 13:47:00 GMT+0900 (대한민국 표준시) 이고 이것을 json으로 변환하면 2017-11-23T04:48:00.000Z 이렇게 되버려서 제대로 된 시간을 알 수 없다. 13:37:00 과 같이 보이는데로의 값을 얻기 위해서는 getformdata(true) 를 사용해야 한다.

Naver Blog

windows 정품인증 ( 윈도우 정품인증 )

윈도우 7 이상에서 사용 가능한 방법 1. 좌측 하단 "프로그램 및 파일검색" cmd을 입력 후 잠시 기다린다. 2. 검색된 프로그램에서 cmd에서 마우스 오른을 클릭 후 "관리자 권한을 실행" 클릭 3. 새로 뜬 창에서 slmgr -rearm 을 입력 후 엔터키를 누른다. 4. 이 때 다시 시작 하라는 팝업창이 나오는데 재부팅을 한다. 만약 "요청된 작업을 수행하려면 상승된 권한이 필요합니다." 라는 메시지가 나온다면 좌측 하단 "프로그램 및 파일 검색" 창에서 5. 단, 이렇게 인증을 받았더라도 Windows 업데이트 항목 중에 KB971033이 활성화 되면 다시 인증이 풀릴 수가 있기 때문에 Windows 업데이트 내역 확인 후 KB971033를 설치 삭제하고 비활성화를 하면 해결된다.

Naver Blog

[NSIS] 64bit에서 registry를 제대로 write, read, delete 하지 못할때

System::Call "kernel32::GetCurrentProcess() i .s" System::Call "kernel32::IsWow64Process(i s, *i .r0)" StrCmp $0 '0' Win32 Win64 Win32: Goto End Win64: SetRegView 64 End: 위 코드와 같이 SetRegView 64 를 해줘야 한다.

Naver Blog

javaSoft\Prefs 경로

HKLM "Software\JavaSoft\Prefs" ( 32bit ) HKLM "Software\Wow6432Node\JavaSoft\Prefs" ( 64bit )

Naver Blog

시작프로그램 안뜨게 변경

1. 실행창에서 msconfig 입력 2. "시스템 구성" 팝업창이 열리는데 여기서 "시작프로그램" 탭으로 이동한다. 3. 사용하지 않을 프로그램을 체크해제 하고 "적용" 버튼 클릭

Naver Blog

Spring file download ( 스프링 파일 다운로드 )

1. context 설정 <bean id="downloadView" class="com.util.DownloadView"/> 2. JAVA view 생성 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder; import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.util.FileCopyUtils; import org.springframework.web.servlet.view.AbstractView; public class FileDownloadView extends AbstractView{ public

Naver Blog

jQuery Sortable - Select and Drag Multiple List Items

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>jQuery UI Sortable - Connect lists</title> <link rel="stylesheet" href="./jquery-ui-1.12.1.css"> <style> #sortable1, #sor

Naver Blog

CentOS sendmail

1. sendmail 명령어 1) sendmail queue 확인 # sendmail -bp 2) queue에 쌓인 메일 강제로 다시 보내기 #sendmail -q -v 3) 로그 확인 # tail -f /var/log/maillog 2. 메일 발송이 안되거나 느릴 경우 확인해야 할 사항 1) # vi /etc/hosts 명령어로 설정 변경 127.0.0.1 localhost.localdomain localhost yourhostname ex) 127.0.0.1 localhost localhost.localdomain localhost localhost.localdomain ::1 localhost localhost.localdomain localhost localhost.localdomain * hostname 확인방법 # hostname * hostname 변경 # hostnamectl set-hostname [변경할 호스트명] 2) # /etc/resolv.conf 를 수정 D

Naver Blog

[mysql/mariadb] DB 스케쥴러

1. 스케쥴 등록 SET GLOBAL event_scheduler = on; SET @@global.event_scheduler = on; SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; 또는 my.cnf or my.ini 에 옵션(event_scheduler=On)을 추가하고 mysql 을 시작한다. CREATE EVENT [이벤트명] ON SCHEDULE [스케쥴 시간] STARTS [시작시간] /* 선택 */ ENDS [종료시간] /* 선택*/ DO [수행할 쿼리] ex) SET GLOBAL event_scheduler = on; SET @@global.event_scheduler = on; SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; CREATE EVENT e_doc_stat ON SCHEDULE EVERY 1 day # STARTS

Naver Blog

MySQL 쿼리 실시간 모니터링

1. 로그를 남기도록 DB 설정을 한다. mysql> SET GLOBAL general_log='ON'; mysql> SET GLOBAL slow_query_log='ON'; mysql> SET GLOBAL log_output='TABLE'; 2. 로그를 확인한다. mysql> SELECT * FROM mysql.general_log; <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

[jstree] 함수 설명

1. 선택된 노드의 value를 가져옴 1 var id = $('#' + treeId).jstree('get_selected'); cs 2. 선택된 노드의 text를 가져옴 1 $('#' + treeId).jstree().get_selected(true)[0].text cs 3. 체크된 노드의 id 목록을 가져옴 1 $('#deptTree').jstree(true).get_selected() cs <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

[jqgrid] column show/hide

$('#dataGrid').showCol('이름'); $('#dataGrid').hideCol('이름');

Naver Blog

[jqgrid] 제목 클릭 시 정렬

1. column 속성에 sortable: true 추가 colModel:[ {name:'id',index:'id', width:55}, {name:'invdate',index:'invdate', width:90, sortable: true}] 2. java에서 request를 받음 String strPage = request.getParameter("page") == null ? "1" : request.getParameter("page"); // 현재 페이지 String strLimit = request.getParameter("rows") == null ? "10" : request.getParameter("rows"); // 한 페이지 row 수 String strSortColumn = request.getParameter("sidx") == null ? "" : request.getParameter("sidx"); // 정렬 할 컬럼 ID String strSortOrder

Naver Blog

JAVA image rotate ( 이미지 회전 )

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 private static void ro2(int rotate) throws Exception { // byte[] imgbuf2 = getDecript("원본 이미지 경로", ""); // ByteArrayInputStream bais2 = new ByteArrayInputStream(imgbuf2); // BufferedImage oldImage = ImageIO.read(bais2); File orgFile = new File("원본 이미지 경로"); BufferedImage oldImage = ImageIO.read(orgFile); BufferedImage newImage = null; if(180 == rotate) { newImage = new BufferedImage(oldImage.getWidth(),oldImage.getHeig

Naver Blog

[CentOS]에서 SSH 로그인이 느린 경우

CentOS 에서 SSH 로그인이 매우 느린 것은 보안 기능이 강화되었기 때문이다. SSH 서버는 모든 외부에서의 접속에 리버스 DNS(reverse DNS)을 시행하며, 이로 인해 약 13초 정도의 접속 지연이 발생된다. 이를 피하기 위해서는 다음과 같이 수정한다. 1. 설정 파일로 접근 # vi /etc/ssh/sshd_config 2. DNS 사용여부 변경 useDNS yes를 useDNS no로 변경 3. 저장 4. 서비스 재시작 1) centos 6 # service sshd restart 2) centos 7 # systemctl restart sshd.service <script src="chrome-extension://hhojmcideegachlhfgfdhailpfhgknjm/web_accessible_resources/index.js"></script>

Naver Blog

[jstree] max_depth

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $('#menuTree').jstree( { 'core' : { 'data' : [ {"parent":"#","id":"MENU_018","text":"MENU1"}, {"parent":"#","id":"MENU_009","text":"MENU2"}, {"parent":"MENU_009","id":"MENU_016","text":"MENU_2_1"}, {"parent":"MENU_009","id":"MENU_015","text":"MENU_2_2"} ] , 'check_callback': true} , 'types': { '#': {'max_depth': 2} }, 'plugins': ['dnd', 'types'] } ); Colored by Color Scripter cs

Naver Blog

[jstree] node의 ID로 node data 구하기 ( get node by ID in jstree )

Spring/JAVA/Web [jstree] node의 ID로 node data 구하기 ( get node by ID in jstree ) 노루궁뎅이 2018. 2. 1. 9:46 이웃추가 본문 기타 기능 var node = $('#treeID').jstree(true).get_node(nodeID);

Naver Blog

DB 데이터 존재여부

1. MySQL information_schema가 하나의 데이터베이스로 관리되고 테이블 정보를 담고 있는 "TABLES" 테이블도 실제적인 자세한 정보를 담고 있습니다. 따라서 아래와 같은 쿼리문으로 데이터 존재여부를 알 수 있습니다. SELECT table_rows FROM information_schema.tables WHERE TABLE_SCHEMA = 스키마명 and TABLE_NAME = 테이블명 2. ORACLE SELECT NUM_ROWS FROM ALL_TABLES WHERE TABLE_NAME = 테이블명;

Naver Blog

angular2 에서 tag에 클래스 주는 방법

<li class="{{val > 0 && val <= 20 ? 'used': '' }}">20</li>

Naver Blog

OWASP ZAP 사용방법

출처 : https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project 1. OWASP ZAP 설치 https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project 접속하여 "Download ZIP" 클릭하여 다운로드 후 설치 2. Firefox 설치 3. Firefox에서 proxy 설정 3.1 [설정] 메뉴 클릭 3.2 네트워크 프록시 설정 버튼 클릭 3.3 프록시 설정 - 수동 프록시 설정 - HTTP 프록시에 값 입력 - "모든 프로토콜에 위의 프록시 설정 사용 - "비밀번호가 저장되어 있으면 인증시 묻지 않기" 체크 4. OWASP ZAP 설정 4.1 [tool > option] 메뉴 클릭 4.2 Local Proxies로 이동하여 FireFox에 입력했던 값과 동일한 값 입력 5. Firefox로 모든 페이지에 접속하여 기능 동작 ( 반드시 Launch Browser 버튼으로

Naver Blog

[oracle] COUNT(*) 를 빠르게 하는 방법

개발을 하다 보면 페이징 처리를 위해 아래와 같이 COUNT(*)를 해야 할 때가 있다. SQL) SELECT COUNT(*) FROM [테이블명] WHERE [조건] 이 경우 전체 테이블을 FULL SCAN 할 수도 있고 INDEX SCAN을 할 수도 있다. 이 경우 데이터가 많을 경우 많은 시간이 걸릴 수 있다. 만약 인덱스를 SCAN하는데 하나의 블록이 아니라 MULTI BLOCK을 SCAN한다면 당연히 SINGLE BLOCK SCAN보다 빠를 것이다. 이 때 사용하는 것이 INDEX FAST SCAN이다. 사용 방법은 아래와 같다. SQL) SELECT /*+ INDEX([테이블명] [인덱스명]) */ COUNT(*) FROM [테이블명] WHERE [조건]; 사용 예 ) SELECT /*+ INDEX(EMP pk_emp */ COUNT(*) FROM EMP where empno > 0; [참고사항] 위 처럼 HINT를 사용해도 HINT를 무시하고 TABLE FULL SCAN

Naver Blog

[MySQL] COUNT의 잘못된 인식과 속도 차이

일반 SQL 질의의 SELECT 절에의 *는 모든 컬럼을 가지고 오기 때문에 필요한 컬럼만 가지고 오는 SELECT 절에 비해 속도가 느리고 불필요한 자원을 낭비한다는 사실은 모두가 알고 있을 것입니다. 그렇기 때문에 이러한 것을 똑같이 생각함으로 인해 집계함수의 COUNT에 대한 COUNT(*) 와 COUNT(컬럼)에 대한 잘못된 인식과 SQL 질의를 실행하여 DB의속도를 느리게 할 수 있는 원인이 될 수 있습니다. 일반 SQL질의와 다르게 COUNT 집계함수에서의 *의 역할은 다른 역할을 수행하고 있습니다. * MySQL COUNT 함수의 역할을 보면 COUNT(*) : 단순 행을 세는 역할을 합니다. (MySQL 내부적으로 데이터를 읽지않고 행의 갯수만 흝고 지나간다는 뜻을 말합니다.) COUNT(컬럼) : 행의 값을 세는 역할을 합니다.(데이터를 읽는다는 뜻이 되겠지요) 자 그럼, 컬럼이 VARCHAR(50) 형태의 데이터가 100만건이 있다는 가정하에 실행계획 및 질의를 실

Naver Blog

[Oracle] MView (Materialized Views)

[현상 확인] 1. tab_a와 tab_b 테이블로 view를 생성한다. 1 2 3 4 5 6 create view join_tabs as ( select col_x as col_z from tab_a union select col_y as col_z from tab_b ); Colored by Color Scripter cs 2. view를 select 하면 index를 타지 않고 full scan 한다. 1 select * from join_tabs where col_z = 'BLAH'; cs [해결 방법] --> Materialized Views를 사용한다. Materialized Views란? - 관계형 데이터 베이스에서 view를 가상의 테이블이라고 한다. 따라서 인덱스를 잡을 수 없다. - MVIEW라고 불리는 물리 뷰(구체화 뷰)의 용도는 그룹함수 min, max, sum, avg 등의 값을 미리 만들어 놓을 때 유용하며 user_segments에서 확인 가능하다. -

Naver Blog

[oracle] hint 사용법

힌트의 사용법 {SELECT | INSERT | UPDATE | DELETE} /*+ hint [text] [hint [text]] ... */ 혹은 {SELECT | INSERT | UPDATE | DELETE} --+ hint [text] [hint [text]] ... - 이러한 힌트의 사용은 SQL 전체가 아닌 쓰여진 SQL 블럭에만 적용됩니다. 힌트의 종류 별 분류 Optimization Goals and Approaches ALL_ROWS 혹은 FIRST_ROWS CHOOSE RULE Access Method Hints AND_EQUAL CLUSTER FULL HASH INDEX 혹은 NO_INDEX INDEX_ASC 혹은 INDEX_DESC INDEX_COMBINE INDEX_FFS ROWID Join Order Hints ORDERED STAR Join Operation Hints DRIVING_SITE HASH_SJ, MERGE_SJ 혹은 NL_SJ LEADING U

Naver Blog

DB Join의 방식 ( 물리적 Join )

Join의 종류와 방식 Join의 종류 ( 논리적 Join ) - INNER Join - OUTER Join - CROSS Join - FULL OUTER Join - SELF Join Join의 방식 ( 물리적 Join ) - Nested Loop Join - 중첩반복 - Merge Join - 정렬병합 - Hash Join - 해시매치 Join의 방식 1. 중첩반복(Nested Loops) 조인 바깥 테이블의 처리 범위를 하나씩 액세스하면서 그 추출된 값으로 안쪽 테이블을 조인하는 방식 - 순차적으로 처리된다. - 바깥 테이블과 일치하는 값을 안쪽 테이블에서 찾아야 하므로 안쪽 테이블의 해당 열에 인덱스가 필요하다. - 메모리 사용량은 가장 적다. - 바깥 테이블과 안쪽 테이블의 크기는 성능과 관련이 없다. 특징 순차적인 진행 첫 테이블 필터링 -> 두 테이블간의 연결 -> 최종 운반 단위 산출까지 반복적, 순차적으로 진행됩니다. 선행적 선행 테이블의 처리 범위가 전체 일의 양을

Naver Blog

Linux LVM 생성 ( 하드디스크 여러개를 하나로 합쳐 mount를 해야 할 경우 )

하드디스크를 LVM을 만들 수 있게 파티션 생성 1. fdisk -l 하여 LVM 설정할 하드디스크의 디바이스명을 확인 2. fdisk를 이용하여 LVM 타입으로 파티션을 생성한다. 아래 순서대로 진행한다. ( 연결할 하드디스크의 수만큼 1~10 번을 반복 ) 1) 명령창에 "fdisk /dev/sdf" 입력 2) n 엔터 ( 새 파티션 추가 ) 3) p 엔터 ( primary partition (1-4) ) ( 주 파티션이면 p, 확장 파티션이면 e ) 4) 1 엔터 ( 파티션 넘버 입력 ) 5) 엔터 ( First cylinder 1-1792, default 1: ) 6) 엔터 ( last cylinder ) 7) t 엔터 ( change a partition's system id ) 8) l 엔터 ( type L to list codes ) 9) 8e 엔터 ( linux LVM이 8e 이다 ) 10) w 엔터 ( write table to disk and exit ) 물리 볼륨

Naver Blog

svn dump가 안될 경우

# svnadmin dump [svn경로] > [덤프파일경로] --> svnadmin dump c:\repository\wow > c:\dump\wow.dmp 위 명령어로 dump 할 경우 아래와 같은 메시지가 뜨면서 dump가 안되는 경우가 있다. svnadmin : 예상되는 파일 시스템 포맷 '1'에서 '4'까지의 수입니다. 발견된 포맷 '6' 이 경우 svn --version 명령어를 통해서 svn의 버전을 확인 한 후 db/format을 변경하면 된다. 아래는 format 파일의 설명이다. [번역 - 구글 번역기] format파일에는 Subversion 저장소 형식에 대한 정보가 들어 있으며 db/formatSubversion 저장소 파일 시스템 (FS) 형식에 대한 정보가 들어 있습니다 . 저장소 형식 번호 : ( format ) 형식 0, 1 및 2는 1.0 이전 버전입니다. 형식 3은 1.0에서 1.3까지 현재 버전입니다. 형식 4는 리드에서 1.2까지 잠금 기능을 개발

Naver Blog

[oracle] 성능 향상을 위해 로그 기록하지 않기

1. 아카이브 모드인지 확인 SQL > archive log list; --> database log mode ( 데이터베이스 로그 모드 ) 가 No Archive Mode(아카이브 모드 없음) 인지 확인 2. "Archive Mode" 일 경우 변경방법 2-1. 특정 테이블을 로그를 기록하지 않도록 변경 SQL > ALTER TABLE [테이블명] NOLOGGING; 2-2. No Archive Mode로 변경 2-2-1. INIT.ORA 파일의 parameter 수정 ( 아래 3줄을 주석처리 한다. ) #LOG_ARCHIVE_START = TRUE #LOG_ARCHIVE_DEST = "C:\oracle\ora92\database\archive" #LOG_ARCHIVE_FORMAT = %S.ARC 2-2-2. 아래 단계 수행 -- 데이터베이스 종료 SQL> SHUTDOWN IMMEDIATE -- 데이터베이스 인스턴스를 mount SQL> STARTUP MOUNT pfile=C:\o

Naver Blog

파티션테이블 제약사항

1. 오라클 - EE 이상 버전에서 사용가능 - https://docs.oracle.com/cd/E11882_01/license.112/e47877/editions.htm#DBLIC109 2. MariaDB - pk만 파티션으로 분리 가능 ( 날짜단위로 파티션 테이블을 만들려면 pk에 날짜가 포함되어야 함 ) - 모든 파티션은 동일한 스토리지 엔진 사용 - 테이블과 인덱스를 별도로 파티션 불가(테이블과 인덱스 같이 해야함) - 파티션 된 테이블은 foregin key를 지원불가 - 파티션 된 테이블은 FullText Index를 지원 불가 - 파티션 된 테이블은 Geometry 칼럼 타입 지원 불가 - 한 테이블당 파티션의 개수는 최대 1024개 - Temp Table 은 파티션 사용 불가 - Partition 값은 반드시 정수형 타입 3. MySql - 모든 파티션은 동일한 스토리지 엔진 사용 - 파티션별 다른 엔진을 지정하여도 에러가 발생하지는 않지만 적용되는것은 아니다. - 테

Naver Blog

linux 사용자 계정에 root 권한 주는 방법

1. 사용자 추가 # adduser [계정] ex) # adduser hong 2. password 설정 # passwd [계정] -> 비밀번호 입력 ex) # passwd hong 3. root 권한 주는 방법 usermod -u 0 -o [계정이름] ex) # usermod -u 0 -o dev 4. 이 명령어를 썼을 때 발생하는 현상 # chown dev:dev [폴더명] 명령어를 사용하여 권한을 주면 dev:dev로 변경되는게 아니라 root:dev로 변경됨

Naver Blog

RHEL/CentOS 7 에서 방화벽(firewalld) 설정하기

개요 - RHEL 7 부터는 방화벽을 관리하는 데몬이 firewalld 로 변경되었고 방화벽 설정은 복잡한 iptables 명령어대신 firewall-cmd (콘솔), firewall-config(X-Windows) 명령어를 사용하는 것을 권장합니다. - firewall-cmd 는 iptables 를 쓰기 쉽게 하는 wrapper 이고 복잡한 규칙을 사용할 경우 --direct 옵션으로 iptables 내부에 접근해야 합니다. 설치 # yum install firewalld # systemctl start firewalld # systemctl enable firewalld 설정 기본 설정은 /usr/lib/firewalld/ 에 위치하고 있으며 미리 설정된 zone과 zone 별 허용하는 서비스등은 이 폴더를 보면 확인할 수 있습니다. 시스템 개별 설정은 /etc/firewalld/ 에 위치하며 default zone 등 firewall 의 동작은 /etc/firewalld/fir

Naver Blog

[centos 7] vsftpd 설치

1. 설치 확인 # rpm -qa | grep vsftpd 2. 설치 # yum install -y vsftpd 3. 설정 변경 # vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO chroot_local_user=YES chroot_list_enable=YES pasv_enable=YES pasv_min_port=10000 pasv_max_port=10200 allow_writeable_chroot=YES # vi /etc/vsftpd/chroot_list root 4. ftp가 home 디렉토리를 찾을 수 있도록 변경 # setsebool ftp_home_dir on 혹은 # setsebool tftp_home_dir on 5. vsftpd 시작 # service vsftpd start 6. vsftpd 자동 시작 등록 # chkconfig vsftpd on * 참고 - anonymous_enable=NO -> 익명 유저 로그인을 차단 - chr

Naver Blog

[centos 7] mariadb 설치

1. repo 설정 # vi /etc/yum.repos.d/MariaDB.repo [mariadb] name=MariaDB baseurl=http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 2. 설치 # yum install -y MariaDB-server 3. DB 시작 # systemctl start mariadb 4. UTF8로 설정 변경 # vi /etc/my.cnf.d/clients.cnf [client] default-character-set=utf8 # vi /etc/my.cnf.d/server.cnf [mysqld] collation-server = utf8_general_ci init-connect='SET NAMES utf8' character-set-server = utf8 # vi /etc/my.cnf.d/mysql-clients

Naver Blog

[centos 7] tomcat 서비스 등록 및 시작프로그램 등록

1. /etc/init.d/tomcat 파일 생성 # /etc/init.d/tomcat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/bin/bash # chkconfig: 345 50 50 export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64 export PATH=$PATH:$JAVA_HOME/bin export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin case "$1" in start) sh $CATALINA_HOME/bin/startup.sh ;; stop) sh $CATALINA_HOME/bin/shutdown.sh ;; restart) sh $CATALINA_HOME/bin/shutdown.sh; su - tomcat -c $CATALINA_HOME/bin/startup.sh ;; *) e

Naver Blog

[linux] multi ip ( IP가 여러개 설정되어있는 경우 )

리눅스 서버에 설정된 IP가 192.168.0.78 인데 특정 상황에서 192.168.0.234 로 패킷이 들어오는 것을 확인. 서버에서 ifconfig를 사용하여 IP를 확인했으나 192.168.0.78만 있는 상황 # ip address 명령어를 이용해서 봤더니 secondary 로 192.168.0.234가 있는 것을 확인

Naver Blog

이클립스(eclipse)에 메이븐(maven) 적용

1. 이클립스 다운로드 ( 여기서는 oxygen ) 1.1) 홈페이지 접속하여 오른쪽 상단의 "다운로드" 버튼 클릭 1.2) 왼쪽 하단에서 "Download Packages" 클릭 1.3) Eclipse IDE for Java EE Developers에서 64bit 클릭 1.4) Select Another Mirror 클릭 1.5) Korea, Republic Of - xxx 클릭 ( 한국이어야 다운로드가 빠름 ) 2. Maven 다운로드 2.1) 메이븐 홈페이지 접속 후 "Download" 링크 클릭 2.2) Binary zip archive에 있는 apache-maven-x.x.x-bin.zip 클릭 3. 정해진 경로에 압축 풀기 4. Maven Repository 변경 기본 Maven Repository는 ${user.home}/.m2/repository 라는 폴더에서 관리한다. 이를 다른 폴더에서 관리하도록 저장소를 로컬로 변경한다. 1) D:\tools\apache-mave

Naver Blog

[Spring 3.2.8 + maven + mybatis 3.2.2 + mybatis-spring 1.2.0]hikariCP 사용하기

hikaricp(히카리 커넥션풀)은 빠른 속도로 인해 점점 더 주목 받고 있는 커넥션 풀입니다. 공식 홈페이지 : https://github.com/brettwooldridge/HikariCP brettwooldridge/HikariCP 光 HikariCP・A solid, high-performance, JDBC connection pool at last. github.com 위 홈페이지 내용을 보면 "현존하는 가장 빠른 커넥션 풀" 이라고 소개하고 있습니다. 또한 안정성도 보장됩니다. boneCP의 경우 히카리로 인해 개발을 중단한다고 써져 있습니다. 설치 및 사용 방법은 아래와 같습니다. 1. pom.xml 설정 ( maven 설정 ) 1) HikariCP 추가 ( 여기서 버전은 JAVA 버전에 맞게 써줘야 합니다. ) 2) mybatis 추가 1 2 3 4 5 6 7 8 9 10 <dependency> <groupId>org.mybatis</groupId> <artifactId

Naver Blog

[Spring 3.2.8 + maven] logback 설정하기

1. logback을 사용해야 하는 이유 Automatic Reloading Configuration file 로깅 레벨 등 설정을 변경하게 되면 Application(WAS)를 다시 시작했어야 했지만 logback 에서는 그럴 필요가 없다. 설정 파일을 변경하면 지정된 시간이 지나게 되면 파일의 변경을 감지하고 다시 읽어 들인다. Graceful Recovery from I/O Failures 기존 log4j에서 FileAppender 를 사용하여 로그를 파일서버에 저장하는 경우, 파일 서버에 문제가 있어 I/O fail이 나면 Application(was)를 재시작 했어야 했지만 logback에서는 파일 서버가 정상으로 돌아오면 에러 상황에서 빠르게 자동으로 복구가 된다. Automatic Compress logback에서는 로그 파일의 자동 압축을 지원하고, 시간(파일의 갯수)이 지난 파일을 자동으로 삭제하는 기능도 제공을 한다. 로그 파일을 거대해서 압축하는데 시간이 오래 걸

Naver Blog

[mysql] utf-8 procedure나 function에서 한글 깨짐 문제

db의 characterSet을 utf-8로 이미 맞춘 상태라면 procedure나 function의 변수에 character set utf8 을 써준다. ex) CREATE FUNCTION foo ( param1 VARCHAR(30) CHARACTER SET utf8 ) RETURNS VARCHAR(30) CHARSET utf8 DETERMISTIC BEGIN DECLARE v_RETURN_VALUE VARCHAR(30) CHARACTER SET utf8 /* some codes here */ RETURN v_RETURN_VALUE; END $$ 출처 : http://dkjoyer.blog.me/220985977188 MYSQL utf8 procedure나 function에서 한글 깨짐문제 MYSQL이나 MARIA DB를 쓰다보니 한글이 까지는 경우가 발생합니다.가장먼저 해야할 일은 mysql... dkjoyer.blog.me

Naver Blog

[javascript] 비밀번호 유효성 검사

비밀번호 규칙 : 8자 이상이어야 하고, 숫자/소문자/대문자/특수문자를 모두 포함해야 한다. 1. 정규식 ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$ 이 정규식은 다음의 규칙을 적용한다. - 하나 이상의 영문 대문자 (?=.*?[AZ]) - 하나 이상의 영문 소문자 (?=.*?[az]) - 하나 이상의 숫자 (?=.*?[0-9]) - 하나 이상의 특수 문자 (?=.*?[#?!@$%^&*-]) - 최소 길이 8자 .{8,} (앵커 포함) 비밀번호 규칙 : 8자 이상이어야 하고, 숫자/소문자/대문자/특수문자를 모두 포함해야 한다. 2. javascript code 1 2 3 4 5 6 var reg = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/; var password = '123456'; if(false === reg.test(password))

Naver Blog

[mssql] sysservers에서 'xxxxx' 서버를 찾을 수 없습니다. sp_addlinkedserver를 실행하여 sysservers에 서버를 추가하십시오. 오류 해결방법

DB에 youn과 sin 두개의 스키마가 있다. 이 때 youn 스키마의 dept 테이블을 select하기 위해 아래와 같이 쿼리를 했는데 오류가 발생한다. SELECT * FROM youn.dbo.dept; [오류 메시지] sysservers에서 'youn' 서버를 찾을 수 없습니다. sp_addlinkedserver를 실행하여 sysservers에 서버를 추가하십시오. 위 메시지를 볼 때, 스키마도 서버로 인식하는 것 같다. 위 오류를 해결하기 위해서는 Microsoft SQL Server Management Studio에서 아래와 같이 작업을 진행한다. 1) DB 연결 2) 데이터베이스 > 서버개체 > 연결된서버에 접속하려는 스키마명이 있는지 확인 3) 오른쪽 클릭 > 새 연결된 서버 클릭 4) 일반 탭의 연결된 서버에 DB 스키마명 입력 5) 보안 탭에서 로그인의 현재 보안 컨텍스트를 사용하여 연결 선택 후 확인 버튼 클릭 * 참고. 서버IP.dbo.테이블명 과 같이 쿼리 할

Naver Blog

[mybatis] Oracle LONG, CLOB Select 시 에러날때 : getCLOB not implemented for class oracle.jdbc.driver.XXX

오라클에서는 Long Type이나 CLOB Type 컬럼을 select 할때 getCLOB() 가 구현되지 않았다면서 에러가 난다. 1. jdbc-context.xml ( spring 설정 파일 ) 에 mybatis-config.xml 추가 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource" p:typeAliasesPackage="com.company.name" p:configLocation="/WEB-INF/spring/mybatis-config.xml" p:mapperLocations="classpath*:com/company/name/oracle/*.xml" /> 2. /WEB-INF/spring/mybatis-config.xml 파일 작성 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE config

Naver Blog

[oracle] 사용자가 생성한 모든 table, view 삭제

SELECT 'DROP TABLE ' || object_name || ' CASCADE CONSTRAINTS;' FROM user_objects WHERE object_type = 'TABLE'; 위 쿼리를 해서 나오는 결과를 복사해서 실행

Naver Blog

[apache] redirect ( 아파치 리다이렉트 )

1. conf/httpd.conf에서 아래 주석 해제 Include conf/extra/httpd-vhosts.conf 2. conf/extra/httpd-vhosts.conf 에서 아래와 같이 입력 <VirtualHost *:80> ServerName younjh.com DocumentRoot "[root 경로]" # DocumentRoot "C:/Apache24/htdocs" Redirect / [redirect 시킬 URL] # Redirect / http://192.168.0.212:8081 </VirtualHost>

Naver Blog

No grammar constraints (DTD or XML Schema) referenced in the document.

XML에서 No grammar constraints (DTD or XML Schema) referenced in the document. 라는 경고가 발생한다면 DOCTYPE을 추가하면 된다. ex) <!DOCTYPE xml> <!DOCTYPE configuration> 또는 이클립스에서 Window > Preferences > XML > XML Files > Validation > Validating > No Grammer specified에서 옵션을 Ignore로 변경한다.

Naver Blog

xml에서 한글 읽기 ( utf-8 )

1) 에러발생하는 방법 baseFileReader = new FileReader(strBaseXmlPath); InputSource inputSourceSource = new InputSource(baseFileReader); 2) 정상적인 방법 InputSource inputSourceSource = new InputSource(new InputStreamReader(new FileInputStream(strBaseXmlPath), "UTF-8")); 2번과 같이 하지 않으면 Element를 통해 읽어 들일때 end tag를 인식하지 못해 에러난다.

Naver Blog

[eclipse] Could not find the main class. Program will exit

1. ANT 홈의 수정 현재 작업중인 이클립스는 예전에 쓰던 PC의 이클립스 환경을 그대로 복사해서 사용하고 있으며, 이런 저런 플러그인이 많이 추가되어 있다. 여러 버전의 jdk, jre 등등 ㅜㅜ 우선은 ANT_HOME을 재설정한다. Window -> Preference -> Ant -> Runtime 으로 찾아 들어가면 Ant home... 이라는 버튼이 오른쪽에 있는데 그것을 누르고 현재 PC에 설치되어 있는 실제 ANT 플러그인 폴더를 선택하여 적용하면 된다. 이렇게해서 해결되었다는 사람들도 많았는데, 나의 경우는 여전히 같은 에러가 발생했다. 그래서 좀 더 찾아보니... ㅜㅜ 2. JAVA compiler 버전의 확인 작업 중인 이클립스 환경에는 고객 요구사항에 적합한 JDK 버전이 다양해서 여러 버전이 설치되어 있다. 현재 사용 중인 JDK 버전을 이클립스의 자바 컴파일러에게 알려줘야 한다... Window -> Preference -> Java -> Compiler 창

Naver Blog

이클립스에서 SVN Connector 설치 오류 해결하기 How to install 'SVN Connector' in Eclipse Oxygen 출처: http://4urdev.tistory.com/27 [Simplify] 출처: http://4urdev.tistory.com/27 [Simplify]

최근 Eclipse Oxygen 에서 SVN Connector가 정상적으로 설치되지 않는 현상이 있어, 이에 대한 해결 방법을 공유합니다. 현재 기준 최신 버전에서 발생하는 문제이지만, 향후에도 적용 가능한 해결 방법이고, 그냥 이렇게 설치하는 것도 일종의 방법이므로, 게시합니다. Eclipse에서 일반적으로 SVN Connector 를 설치하는 방법은, 다음과 같습니다. 이클립스를 실행하고 설정(Preference)로 진입합니다. 좌측의 Tree에서 Team > SVN 으로 진입합니다. 우측 영역에서 SVN Connector 탭을 선택하여 SVN Connector를 확인합니다. (이 스크린샷에서 필자의 Eclipse 에는 이미 SVN Connector 가 설치되어 있어서 버튼이 보이지 않습니다) Install SVN Connector 버튼을 이용해서 설치 Dialog에 진입합니다. 위 과정에서 이상하게도, 설치 dialog가 그냥 닫혀버리는 현상이 발생합니다. 아마도 설치 Dial

Naver Blog

[Spring] session정보에 사용자가 선택한 언어를 setting

session.setAttribute("org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE", Locale.KOREAN);

Naver Blog

[java] properties 설정 파일 사용하기

1. import import java.io.Reader; import java.util.Properties; import org.apache.ibatis.io.Resources; 2. 실제 코드 // 여기서 실제 경로는 /config/properties/jdbc.properties 인데, config가 build path에 등록되어 있으므로 config를 생략한다. Reader reader = Resources.getResourceAsReader("properties/jdbc.properties"); Properties properties = new Properties(); properties.load(reader); // 화면에 전체 properties를 출력 properties.list(System.out); // 특정 property를 가져온다. properties.getProperty(키값);

Naver Blog

[java] 특정값이 배열에 존재하는지 확인하는 방법

String[] arr = new String[] {"AB","BC","CD","AE"}; String v = "BC"; Arrays.asList(arr).contains(v); # 위 방법은 primitive 타입을 저장하는 배열에서는 사용할 수 없습니다. # 아래와 같이 사용하면 double, long, int 등의 값을 가지는 배열에서 특정 값을 찾을 수 있습니다. int arr = {1,2,3,4}; boolean contains = IntStream.of(arr).anyMatch(x -> x == 4);

Naver Blog

[mybatis] JAVA로 config 설정

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 public static SqlSession getSqlSession(String prefix) throws Exception { SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(createSqlMap(prefix)); SqlSession sqlSession = factory.openSession(false); return sqlSession; } private static InputStream createSqlMap(String prefix) throws Exception { Reader reader = Resources.getResourceAsReader("p

Naver Blog

[mybatis] 프로젝트 외부 경로 사용 ( mapper )

일반적으로 mybatis에서 xml을 mapper하기 위해 아래와 같이 사용한다. <mapper resource="경로"/> 이 경우는 프로젝트 내의 class path를 기본으로 하는 경로이기 때문에 프로젝트 외부를 참조할 수 없다. 프로젝트 외부를 사용하고 싶을 경우 아래와 같이 사용한다. <mapper url="file://경로"/> ex) <mapper url="file:///usr/local/project/mybatis/common.xml"/>

Naver Blog

[java] 포트 방화벽 및 리스닝 여부 확인 - port check

1 2 3 4 5 6 7 8 9 10 11 12 13 14 String errorMsg = "정상입니다."; try { SocketAddress endpoint = new InetSocketAddress("127.0.0.1", 8080) new Socket().connect(endpoint, 3000); } catch(Exception e) { if(e.getMessage().indexOf("connect timed out") > -1) { errorMsg = "connect timed out - 방화벽이 막혀 있습니다."; } else if(e.getMessage().indexOf("Connection refused") > -1) { errorMsg = "Connection refused - port가 리스닝하고 있지 않습니다."; } } Colored by Color Scripter cs

Naver Blog

[logback] 외부파일을 이용하여 설정하기

jar를 export 해서 프로그램을 실행해야 할 때 loback의 설정을 jar 밖으로 분리할 필요가 있다. logback.xml 의 경로를 바꿀 수는 없는 것 같고... 별도의 properties 파일을 만들어서 관리할 수 있다. 1. logback.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 <?xml version="1.0" encoding="UTF-8"?> <!-- 30초마다 설정 파일의 변경을 확인한다. 파일이 변경되면 다시 로딩한다 --> <configuration scan="true" scanPeriod="30 seconds"> <!-- 외부 설정파일을 사용할 수 있다. --> <property file="/u

Naver Blog

[spring] <spring:message> 를 tag의 attribute에 사용하는 방법

<spring:message code="tooltip.text" var="variable1"/> <input type="text" id="email" name="email" value="${variable1}" />

Naver Blog

[javascript] html element의 실제 width

HTML 객체 ( ex. img ) 를 회전(rotate) 했을 때 이미지가 차지하는 영역 ( width, height ) 가 달라지게 된다. 아래와 같이 가로 100, 세로 50의 객체 ( <img src="이미지경로" id="imgTest" width="100" height="50" /> ) 가 있을 때, 회전을 하게 되면 실제 객체의 영역이 변경되게 된다. ( 붉은색 테두리 ) 이 경우 width를 구하기 위해 - document.getElementById("imgTest").width - $("#imgTest").width() - $("#imgTest").outerWidth() 등을 사용하면 원래 객체의 넓이인 100 이 return 된다. var img = document.getElementById('imgTest'); //or however you get a handle to the IMG var width = img.clientWidth; var height = img.

Naver Blog

jqgrid getRowData

var rowid = $("#jGrid").jqGrid("getGridParam", "selrow" ); // 선택한 열의 아이디값 var userId = $("#jGrid").jqGrid("getRowData", rowid).userId; // 선택한 열중에서 사업자번호정보를 가져온다.

Naver Blog

select에서 ajax 기능을 사용할 경우, 조회된 결과를 마우스로 클릭 했을 때 DB로 한번 더 가는 문제

1. select2.js에서 아래의 코드를 찾는다. this.$selection.on( 'keyup.search input.search', '.select2-search--inline', function (evt) { * 4.0.3 버전 기준으로 1974 line에 있음. 2. 이 부분에서 self.handleSearch(evt); 를 아래와 같이 변경한다. if(true === evt.originalEvent.isComposing) self.handleSearch(evt);

Naver Blog

oracle jdk -> open jdk 로 변경 시 java.lang.ClassNotFoundException: net.sf.json.JSONObject 에러

<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib-ext-spring</artifactId> <version>1.0.2</version> </dependency> 위 코드를 아래 코드로 변경 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>

Naver Blog

[AnyEdit] 이클립스 플러그인 - 카멜케이스, 대문자, 소문자 변경

1. AnyEdit 단축키 (1) To Lower Case : Ctrl + Alt + L ex) USER_ID --> user_id (2) To Upper Case : Ctrl + Alt + U ex) user_id --> USER_ID (3) Camel ↔ Underscores : Ctrl + Alt + K ex1) USER_ID --> userId ex2) userId --> user_id 2. AnyEdit 플러그인 설치 방법 (1) 이클립스에서 [Help > Eclipse MarketPlace] 선택 (2) anyedit 입력해서 검색 후 Install 버튼 눌러서 설치 (3) 팝업창에서 'Yes' 버튼을 눌러서 이클립스 재시작 3. AnyEdit 플러그인 수동 설치 방법 (1) 이클립스에서 설치가 되지 않는 경우 아래 URL로 접속하여 이클립스 버전에 맞춰서 다운로드 http://andrei.gmxhome.de/anyedit/links.html (2) 이클립스 설치 폴더 아

Naver Blog

[java] VO to map - VO를 map으로 변경하는 방법

Apache Commons BeanUtils 의 describe() 메소드를 사용한다. ex) 1 2 3 UserVO vo = dao.selectInfo(paramMap); Map<String, String> map = BeanUtils.describe(vo); System.out.println(map.get("userId")); cs

Naver Blog

[select2] remote옵션 사용 시 tooltip 넣는 방법

query에 title을 넣는다. ex) select user_id as id, user_name as text, user_dept as title from tb_user

Naver Blog

[HP 노트북][윈도우 서버] 무선랜(와이파이)가 되지 않을 경우 확인방법

노트북에서 와이파이 아이콘을 아무리 눌러도 흰색으로 활성화 되지 않을 경우 1. 시작 > 서버관리자에서 역할 및 기능 추가 클릭 2. 왼쪽에서 기능 클릭 ( 기능 메뉴가 활성화 되지 않은 경우는 다른 메뉴를 클릭하면 기능 메뉴가 활성화 된다. ) 3. 무선 LAN 서비스 체크박스를 체크한다. 4. 프로그램이 설치되면서 재부팅을 하라고 하는데, 재부팅 한다. 5. 그래도 인터넷이 안되면 서비스로 들어가서 WLAN AutoConfig 가 중지되어있는지 확인하고 중지되어있다면 실행시킨다. [참고. 서버관리자] 윈도우 서버에서 서비스를 설치하고 실행하도록 제어하는 관제탑같은 역할을 하는 것이 서버 관리자 입니다. 이 서버 관리자를 통해 윈도우의 모든 설정을 제어할 수 있습니다. 서버 관리자 기능은 서버 뿐 아니라 윈도우 클라이언트 버전에서도 사용 가능합니다. - 윈도우 7/8/8.1에서 서버 관리자 사용하기 https://studyforus.tistory.com/173

Naver Blog

[jstree] 체크된 노드를 구할 때 부분체크 된 노드의 id도 같이 구하는 방법

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 function getParam() { var arr = $('#deptTree').jstree(true).get_selected(); // get_json() 함수를 호출하면 tree의 모든 node를 계층구조의 json 데이터로 return한다. // getAllSelected는 재귀함수이다. getAllSelected($('#deptTree').jstree(true).get_json(), arr); console.log(arr); } function getAllSelected(treeNode, arr) { $.each(treeNode, function() { var node = this; var $nodeA = $("#" + node.id + "_anchor"); if(undefin

1 2 3 4 5 6 7 8 9 10