목록분류 전체보기 (113)
고코딩
보안 관련 공부를 하던중 HttpSecurity와 WebSecurity의 차이점을 찾다가 좋은 글을 발견하였다. 링크를 남기면서 한번씩 읽어보길 바란다. https://okky.kr/article/382738
SpringBoot로 간단한 정보를 보내야하는데 json 타입으로 보내야 할 일이 있었다. 처음에는 @GetMapping() public String getBirthYmd() throws Exception { ...생략... return "문자열"; } 위 처럼 보내면 json 방식으로 Response Body에 담겨서 날아가는 줄 알았는데 그냥 문자열만 날아갔다. 이렇게 날리면 받는 쪽에서는 원하는 정보를 빼내기 힘들다. 물론 new ResponseEntity(T,HttpStatus); 로 보내면 T타입 객체가 자동으로 json으로 파싱되지만 json 방식을 커스텀 하고 싶을때는 여간 귀찮은게 아니다. 다행히 좋은 라이브러리가 있다. SpringBoot 4.0.0 java 8 build 도구 : Mav..
eclipse로 SpringBoot 공부를 하던중 application.properties를 작성해줘야할 일이 생겼다. 문제는 원래 Ctrl+Space를 누르면 프로퍼티 목록을 볼수 있어햐 하는데 단축키 기능이 작동하지 않았다. 이 경우 에디터를 설정해줘야한다. application.prorpeties 파일을 선택하고 우클릭에서 Open With -> Spring Properties editor를 선택해줘야하는데 아래 처럼 해당 목록이 없는 경우가 있었다. 해결법은 Spring IDE - Spring IDE Boot Support 확장자를 설치해줘야 한다. Help -> InstallNew Software를 클릭 Work with에서 https://download.springsource.com/relea..
JVM Java Virtual Machine의 약어 자바 프로그램을 컴파일 해서 나온 결과인 바이트코드를 실행시켜주는 가상 머신이다. 어플리케이션을 실행시켜주는 가상머신을 사용함으로써, 윈도우와 리눅스/맥 등 다양한 환경에서 언제나 동일하게 실행되도록 할 수 있다는 장점을 가지고 있다. 각 운영체제별 JVM은 자바측에서 개발하여 배포하므로, 프로그래머는 운영체제에 관계없이 프로그램을 개발할 수 있어, 한번 컴파일 됐으면 운영체제에 따라 다시 컴파일할 필요가 없는 WORA(Write Once Run Anywhere)을 만족한다. JRE 자바 실행환경을 의미한다. JVM을 동작하는데 필요한 각종 자바 라이브러리를 담고 있다. JDK Java Development Kit의 약자로, 자바 개발 키트를 의미한다...
비동기 전송을 위해서 Ajax를 사용하던중 클라이언트에서 배열을 담아서 보낼일이 생겼다. 이 전까지는 단순히 값만 json 형식으로 보냈었다. 그럼 배열은 어떤 형식으로 보내고 어떤 방식으로 받아야 하는 것일까? 먼저 checkBox를 이용해서 체크된 값들을 new Array()에 담는다. 그리고 자바스크립트 객체 형식으로 data에 담아서 보낸다. 이 때 반드시 post 형식으로 보내야 한다. var checkArr = new Array(); ... $.ajax({ url : "/shop/deleteCart", type : "post", data : { chbox : checkArr }, success : function(result){ if(result == 1) { location.href = "/..
Spring을 공부하던 중 파일 업로드를 하는 코드를 작성하던 중 UUID를 사용하는 코드를 보게 되었다. 근데 UUID가 무엇일까? UUID 범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화하였다. 라고 위키피디아 에서 정의하고 있다. 간단하게 정의하자면 각 개체를 고유하게 식별 가능한 값을 말한다. 어느 시스템에서 각 유저마다 ID를 위한 고유 식별자(Key)를 만드는데 처음에야 다르겠지만, 시스템이 커지고 사용자가 많아짐에 따라서 중복이 일어날 수 있게 된다. UUID를 사용하게 되면 위의 이미지 규칙에 따라서 식별자를 만들..
Spring 공부를 하다가 Project를 Clean할 이유가 생겨서 Clean을 하였다. 하지만 늘 그렇듯이 Clean 만으로는 해결되지 않는 오류였다. 이것저것 시도해보다가 Tomcat서버까지 지웠다가 다시 설치하는 둥 여러가지 시도를 하다가 오류를 고쳤지만 root path가 망가지는 현상이 생겼다. 정리해보자면 Tomcat Server를 다시 설정하면서 Web module의 path 설정이 초기화 되었기 때문이다. 이 글은 Tomcat Server를 지웠다가 다시 깔았을때 참고하려고 써 놓은 글이다. 처음 Spring에서 Tomcat을 연결하면 이런식으로 화면이 나올텐데 Tomcat v8.5 Server at localhost를 더블클릭하면 위의 탭이 나오게 된다. 여기서 localhost에 대한..
문제 욱제는 학교 숙제로 크기가 8×8인 체스판에서 탈출하는 게임을 만들었다. 체스판의 모든 칸은 빈 칸 또는 벽 중 하나이다. 욱제의 캐릭터는 가장 왼쪽 아랫 칸에 있고, 이 캐릭터는 가장 오른쪽 윗 칸으로 이동해야 한다. 이 게임의 특징은 벽이 움직인다는 점이다. 1초마다 모든 벽이 아래에 있는 행으로 한 칸씩 내려가고, 가장 아래에 있어서 아래에 행이 없다면 벽이 사라지게 된다. 욱제의 캐릭터는 1초에 인접한 한 칸 또는 대각선 방향으로 인접한 한 칸으로 이동하거나, 현재 위치에 서 있을 수 있다. 이동할 때는 빈 칸으로만 이동할 수 있다. 1초 동안 욱제의 캐릭터가 먼저 이동하고, 그 다음 벽이 이동한다. 벽이 캐릭터가 있는 칸으로 이동하면 더 이상 캐릭터는 이동할 수 없다. 욱제의 캐릭터가 가장..
문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 이동하지 않고 같은 칸에 머물러있는 경우도 가능하다. 이 경우도 방문한 칸의 개수가 하나 늘어나는 것으로 생각해야 한다. 이번 문제에서는 낮과 밤이 번갈아가면서 등장한다. 가장 처음에 이동할 때는 낮이고, 한 번 이동할 때마다 낮과 밤이 바뀌게 된다. 이동하지 않고 같은 칸에 머무르는 경우에도 낮과 밤이 바뀌게 된다. 만약에 이동하는 도중에 벽을 부수고 이동하는..
##문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 만약에 이동하는 도중에 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 K개 까지 부수고 이동하여도 된다. 한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다. 맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다...
문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 한 칸에서 다른 칸으로 이동하려면, 두 칸이 인접해야 한다. 두 칸이 변을 공유할 때, 인접하다고 한다. 각각의 벽에 대해서 다음을 구해보려고 한다. 벽을 부수고 이동할 수 있는 곳으로 변경한다. 그 위치에서 이동할 수 있는 칸의 개수를 세어본다. 한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.입력 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다.출력 맵의 형태로 정답을 출력한다. 원래 빈 칸인 곳은 0을 출력하고, 벽인 곳은 이동할 수 있는 칸의 개수를 10으로 나눈 나머지를..