본문 바로가기

분류 전체보기487

CSS - display 와 visibility 프로퍼티 사용하기 화면에서 HTML 요소를 숨기거나, 다시 보여주기 위해서 display 또는 visibility 프로퍼티를 사용합니다. 이러한 작업을 하기 위해서 display 프로퍼티는 none과 block 또는 inline 값을 사용하고, visibility 프로퍼티에서는 hidden과 visible 값을 사용합니다. 화면에서 HTML 요소를 숨기는 작업을 함에 있어 이 두 가지 프로퍼티에는 큰 차이가 존재합니다. visibility:hidden 을 사용하면 그 요소가 차지하던 공간은 그대로 유지되고, 화면에 보이지만 않게 됩니다. display:none 을 사용하면 그 요소가 아예 없었던것 처럼 처리됩니다. 레이아웃에 변화가 오게 되는 것입니다. 두 가지의 프로퍼티의 특성을 잘 고려해서 사용해야 하겠습니다. dis.. 2018. 4. 20.
CKEditor 한글 파일명 이미지 업로드 에러(Spring Framework) 스프링 프레임웍에서 CKEditor에 한글 파일명의 이미지를 업로드 할때 다음과 같은 오류가 발생하는 경우 입니다. 업로드할 수 없는 확장자의 이미지를 업로드하였다는 메세지인데 실제 업로드한 이미지는 업로드 가능한 확장자를 가진 이미지일 경우 입니다. 로그를 확인해보니 한글 파일명이 깨져서 확장자를 판단하지 못해서 발생하는 에러입니다. 서블릿에서 POST 방식으로 보내진 데이터의 엔코딩을 지정하기 위해서는 request.setCharacterEncoding("utf-8"); 처럼 지정할 수 있습니다. 모든 서블릿에 매번 지정하게되면 중복된 코드를 계속 적어야 하므로 스프링 프레익웍에서는 엔코딩 필터를 제공합니다. 이 엔코딩 필터는 모든 다른 필터보다 먼저 나와야 전체에 적용이 됩니다. CKEditor 이.. 2018. 4. 20.
Srping Security 권한 직접 체크하기(시큐리티 태그와 인증 클래스) 스프링 시큐리티는 롤에 따른 URL에 대한 접근제어를 기본으로 하고, 이에 관한 설정을 xml 설정 파일에 기술합니다. 전자정부표준프레임워크에서는 접근을 제어할 URL 및 ROLE 정보를 데이터베이스에서 관리할 수 있도록 커스터마이징 되어 있습니다. 메인화면 등에 로그인 여부에 따라 다른 정보를 보여 준다던가, 같은 프로그램이지만 사용자의 롤에 따라 다른 처리가 필요한 경우 직접 프로그램으로 권한을 확인해서 처리를 해야 하는 경우가 있습니다. 프로그램으로 권한 체크를 하기 위해 HttpServletRequest 객체를 사용해서 권한 정보를 얻는 것이 가능합니다. 스프링 시큐리티를 체크하는 필터가 원본 HttpServletRequest 객체를 래핑해서 기능을 추가해서 제공하기 때문입니다. 다른 방법으로는 .. 2018. 4. 20.
CKEditor 이미지 업로드에 Spring Security CSRF 토큰 적용하기 Spring Security의 CSRF 방어 기능을 사용하게 되면 CKEditor의 이미지 업로드에도 CSRF 토큰을 보내줘야 됩니다. 이때 전자정부표준프레임웍 템플릿에서 처럼 이미지 업로드를 필터를 통해서 처리하고 있다면 필터의 순서가 중요해집니다. CKEditor 이미지 업로드를 처리하는 필터가 스프링 시큐리티를 처리하는 필터보다 앞에 나오게 되면 스프링 시큐리티 자체가 적용되지 않습니다. 필터의 순서는 web.xml 파일에 이 나오는 순서대로 적용이 됩니다. 1. 필터 순서는 스프링 시큐리티가 앞에 나오게 적습니다. springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChai.. 2018. 4. 20.
스프링프레임웍의 시동 스프링프레임웍이 제 기능을 수행하기 위해서는 필요한 설정, 빈들이 WAS 가 시작될 때 모두 생성되고, 준비가 되어야 합니다. 이렇게 준비하는 과정을 스프링프레임웍의 시동이라고 할 수 있겠습니다. WAS 가 시작될 때 필요한 설정들이 시작되는 곳이 배포 설명자(Deploy Descriptor)인 web.xml 파일입니다. 그러므로 스프링 프레임웍의 실행도 여기에서 시작합니다. 스프링프레임웍의 설정은 xml 파일로 작성되었었습니다. 지금은 순수한 자바 클래스에 아노테이션을 사용해서 설정을 할 수 있습니다. 그리고 그 두 가지를 섞어서 사용하는 것도 가능합니다. 이것들을 조합해서 사용할 수 있는 네 가지의 정도의 시동 방법을 알아보겠습니다. 전자정부표준프레임웍 템플릿의 설정으로 예를 들어 보겠습니다. 1. .. 2018. 4. 19.
타이틀 바가 화면밖으로 나가서 이동이 안되는 창 가져오기 Windows 10 에서 프로그램을 실행했는데 실행된 창의 타이틀 바가 화면 밖으로 나가서 창을 이동할 수 없는 당황스러운 사태가 발생했습니다. 원인은 듀얼 모니터를 사용하고 있는데 모니터 사이즈가 달라서 이것 때문이 아닐까 추측해봅니다. 예전에는 작업표시줄의 아이콘에 마우스 오른쪽키를 누르면 "이동" 이라는 메뉴가 있어서 이것을 실행한 후 마우스 왼쪽 키를누르고 이동하면 창이 이동했었습니다. 마우스 커서의 모양이 십자 모양이 되고 타이틀바로 이동하는 기능이었었는데, Windows 10에는 그 기능이 없네요. 처음엔 좀 당황을 했습니다. 프로그램을 종료하고 다시 시작해도 화면 밖으로 나가기만 하니 답답하기만 했는데, 창을 정렬하는 방법이 있다는 것이 기억이 났습니다. 작업표시줄에 마우스 오른쪽 키를 누르.. 2018. 4. 19.
Windows 10 듀얼 모니터 사용시 작업표시줄 지정하기 듀얼 모니터 사용시 작업표시줄이 양쪽 모니터에 모두 나올 경우 한쪽만 나오도록 설정할 수 있습니다. 모니터가 양쪽 모두 크다면 작업표시줄이 양쪽에 모두 나오는 것이 편리할 수도 있겠지만, 한쪽이 작은 경우 큰쪽에만 작업표시줄이 나오도록 하는것이 모니터를 더 넓게 쓰는 방법이 되겠습니다. 숨은 1cm라고나 할까요? 모니터에 작업표시줄을 표시하는 방식을 변경하기 위해서는 "설정 -> 개인설정 -> 작업표시줄" 로 들어가던가 작업표시줄에 마우스 오른쪽키를 눌러 팝업 메뉴에서 "작업 표시줄설정" 으로 바로 들어 갑니다. "화면의 모든 디스틀레이에 작업 표시줄 표시"를 켜면 연결된 모든 모니터에 작업 표시줄이 표시되고, 끄면 "주 모니터"로 설정된 모니터에만 작업 표시줄이 표시됩니다. "주 모니터"를 변경하기 위.. 2018. 4. 19.
와이파이(WiFi) 거리 연장하기(ipTime Extender-N3) 안방에서 와이파이(WiFi) 신호가 너무 약해서 신호 강도를 높일 방법을 찾아보다가 간편하게 와이파이 신호가 도달하는 거리를 연장해주는 장치가 있다는 것을 알게 되었습니다. 사용하고 있는 무선공유기가 ipTime 제품이라 ipTime Extender-N3를 구매하게 되었습니다. N3와 A3 두 가지 제품을 두고 고민을 했었습니다. A3는 5GHz, 2.4GHz 를 모두 지원하고 가격이 좀 비쌉니다. N3는 2.4GHz 만 지원하고 그 때문인지 좀 싸더군요. 집에서 사용하고 있는 공유기가 5GHz, 2.4GHz를 모두 지원하는 기기라 고민이 되었는데, 막상 인터넷 속도가 100MB인지라 싼 N3 를 구매했습니다. 크기가 작은것도 원하는 바였습니다. 설명서에는 다양한 설치방법이 나와 있지만 첫 번째 나오는 .. 2018. 4. 19.
전자정부표준프레임워크 3.6 Spring Security 설정 간소화에서 CSRF 설정하기 전자정부표준프레임워크 3.6 에서는 Spring Security가 권한 정보를 데이터베이스에서 가져오도록 커스터마이징 되어 있는데, 이로 인해 설정이 상당히 복잡해 집니다. 그래서 자체적인 설정을 만들어서 간소화 하고 있습니다. 여기에 CSRF(Cross-Site Request Forgery) 방어를 위해서 설정을 하려고 합니다. 그런데 간소화 설정에는 CSRF 관련 설정이 없는것 같습니다. 다음 예는 전자정부표준프레임워크 3.6.0 버전의 Enterprise Business 템플릿으로 테스트 하였습니다. 여기에는 Spring Security 3.2.4 버전이 사용되고 있습니다. 스프링 시큐리티를 xml 설정파일을 사용해서 설정할때는 CSRF가 기본적으로 비활성화 되어 있습니다. 보통 다음과 같이 활성화.. 2018. 4. 19.
이클립스 workspace 저장위치 확인 및 바꾸기 이클립스 프로젝트 파일이 저장되는 위치가 workspace 입니다. 설치시에 이 폴더를 지정합니다. 이클립스를 여러개 설치해서 사용하다보면 workspace의 실제 디스크상의 위치가 잘 기억나지 않기도 합니다. workspace 위치의 확인 및 변경하는 방법을 알아봅니다. 이클립스를 실행한 후 메뉴에서 "File -> Switch Workspace -> Other..." 를 선택합니다. 현재 지정된 workspace의 위치를 확인할 수 있고, 새 위치로 변경할 수도 있습니다. 이클립스를 처음 설치하면, 시작할때마다 workspace를 선택하도록 물어보는 창이 뜹니다. 그 창에서 "Use this as the default and do not as again" 을 체크하면 다음부터는 물어보지 않습니다. 시.. 2018. 4. 19.
iOS 11.0.3 업데이트 11.0.2업데이트 후 2주가 안되어 11.0.3버전이 업데이트 되었습니다. iPhone 5s 에서 업데이트 용량은 약 275.5MB이며, 업데이트 시간은 다운로드에 22분, 설치에 12분 해서 전체 약 34분 정도 걸렸습니다. 이번 업데이트에는 다음과 같은 버그가 수정되었습니다. - 일부 iPhone 7 및 iPhone 7 Plus 기기에서 오디오 및 햅틱 피드백이 작동하지 않는 문제를 수정함- Apple 정품이 아닌 부품으로 서비스를 받은 경우 일부 iPhone 6s 디스플레이에서 터치 입력이 반응하지 않는 문제를 해결함 보안 페이지에는 보안에 관한 업데이트 사항은 나와 있지 않았습니다. 설치후 아직까지 실행에 문제를 일으키는 프로그램은 없는것 같습니다. 2018. 4. 19.
log4jdbc-remix의 Custom SQL Formatter 만들기(SQL log 줄 바꿈) SQL Query 로그의 줄을 바꿔서 어느정도 예쁘게 출력하는 방법을 알아보겠습니다. log4jdbc-remix 를 사용해서 쿼리 로그를 만들게 됩니다. 테스트는 전자정부표준프레임워크 비즈니스 템플릿을 MySQL(실제는 MariaDB)와 연동한 소스에서 하였습니다. 전자정부표준프레임워크는 SQL 쿼리를 로그로 출력하기 위해서 log4jdbc를 사용하고 있습니다. log4jdbc-remix는 log4jdbc의 또다른 실험적인 분기로써 SQL 포맷뿐만 아니라 DB로부터 가져오는 값들을 추적할 수 있는 다양한 기능을 제공합니다. 실제 적용해본 결과로는 두가지 문제점이 있었습니다. 첫 번째는 쿼리 왼쪽에 여백을 주는 margin 프로퍼티를 사용하면 오류가 발생합니다. java.util.FormatFlagsCon.. 2018. 4. 19.
CKEditor 4 설치와 PHP 연동 하기 웹에서 사용하는 HTML에디터로써 많이 사용되고 있는 CKEditor를 설치하고 PHP로 사용하는 방법을 알아봅니다. 오랜만에 CKEditor 웹사이트에 들어가보니 CKEditor 5가 나오고 단순 웹에디터가 아니라 전문 텍스트 편집을 위한 프레임웍으로 사업 영역을 넓혀가고 있는 모습이었습니다. 하지만 거기까지는 필요 없으므로 이글에서는 CKEditor 4를 설치해 봅니다. CKEditor는 GPL, LGPL, MPL 의 세 가지 오픈소스 라이센스 중 선택해서 사용할 수 있고, 커머셜 버전도 있습니다. 전체 예제 소스는 글 아래 첨부 되어 있습니다. 1. 다음 URL에서 CKEditor 4 풀 버전을 다운로드 받습니다. 자신이 기능을 선택해서 다운받는 옵션도 있지만, 일단 풀 버전을 다운로드 받은 다음에.. 2018. 4. 19.
jQuery 무한 스크롤(Infinite scroll) 플러그인 jScroll 사용법 무한 스크롤은 페이지의 내용을 아래로 스크롤하면 새로운 내용이 덧붙여져서 많은 양의 컨텐츠를 동일한 페이지에 계속해서 보여주는 방법입니다. 이러한 기능을 구현해주는 jScroll은 jQuery 플러그인으로 만들어져 있으며, MIT와 GPL v2 의 듀얼 라이선스로 제공되어 집니다. 글 마지막에 예제 전체 소스를 첨부 했습니다. 1. 다음 사이트에서 프로그램을 다운 받습니다.(http://jscroll.com/) - 다운로드 링크는 Github로 연면됩니다. 필요한 파일은 jquery.jscroll.js 만 있으면 됩니다. 2. 필요한 파일을 포함합니다. - jQuery 플러그인이므로 jQuery가 먼저 필요합니다.- 다음받은 jquery.jscroll.js 파일을 포함하니다.- 무한 스크롤을 수행할 코드.. 2018. 4. 19.
Windows 10 화면 잠그기와 화면 보호기 단축키 컴퓨터를 사용하다가 자리를 비울때 그냥 자리를 비워도 지정된 시간이 지나면 화면 보호기가 동작을 하도록 설정을하는 편입니다. 화면보호기에서 다시 작업 화면으로 돌아올때 비밀번호를 입력하도록 설정을 할수도 있고, 비밀번호 없이 바로 돌아 오도록 설정을 할수도 있습니다. 화면 보호기 설정에서 "다시 시작할 때 로그온 화면 표시" 를 체크해두면 로그인 하게 됩니다. 자리를 비울때 바로 화면을 잠그고 싶을 때는 "윈도우 키 + L" 를 누르면 화면이 바로 잠기게 됩니다. 잠시 자리를 비울때 화면을 잠그고 싶으면 바로 잠글 수 있는 단축키가 되겠습니다. 자리를 비울때 화면을 잠그지는 않고, 화면 보호기만 동작하도록 하는 단축키가 있는지 찾아 봤지만 찾지를 못했습니다. 대신 화면 보호기의 바로 가기를 바탕화면에 만.. 2018. 4. 19.