분류 전체보기 193

📑 연애대작전_SemiProject_기능정리_즐겨찾기

오늘은 필자가 구현해보고자 했던 기능 중에서 가장 장시간에 걸쳐 완성한 기능이다. 단순하게 생각해낸 알고리즘으로 접근을 했는데 생각보다 많은 난관에 봉착했었다. 구글링을 통해 검색을 해보아도 필자의 검색 능력이 부족한 탓인지,, 관련된 내용을 찾지 못했다. 기능을 구현하기에만 앞서서 효율성은 하나도 고려하지 않았다는 단점이 있다. 일단 스스로 구현한 기능을 정리하고 차후에 더 나은 방법을 발견하게 되면 추가로 수정해서 정리하도록 하겠다. 혹시라도 이글을 읽고 피드백을 주신다면 감사히 받겠다. 프로젝트의 모든 내용을 설명할 수는 없기 때문에 기본적인 내용만 설명해주고 추가한 기능에 대해서 정리하고자 한다. [ 기본 상황 설명] 메인 페이지에서 코스 추천을 누르면 타인이 등록한 데이트 코스들이 조회수 순서대..

📑 PhotoGallery_국비실습_기능정리_세션만료

오늘은 로그인한 사용자에게 부여한 세션값을 사용해서 모든 페이지에서 해당 사용자의 정보를 이용할 수 있도록 세션 트래킹 기법을 활용하는데, 이 세션에는 유효시간이라는 것이 존재한다. 이 세션이 만료된 경우 어떻게 처리해야 하는지에 대해 정리해보고자 한다. 세션의 기본적인 유효시간은 30분이라고 하는데, 이 30분이 접속시간이 아니라 브라우저에 접속시 아무런 행동도 하지 않고 30분 동안 있을경우 세션의 유효시간이 끝난다고 한다. 처음 접했을 때는 시간이 꽤나 여유로운데? 굳이 세션 만료까지 처리해야 하나?라는 의문은 있었지만, 이 의문은 얼마가지 않아 해결되었다. 필자가 따로 진행하던 연애 대작전 프로젝트에서 기능을 추가하던 중 중간에 막혀서 구글링과 다른 공부를 하다가 다시 실행해보았는데, 예상치 못한..

📑 연애대작전_SemiProject_기능정리_로그인엔터처리

서블릿과 웹 어플리케이션 서버에 대해서 처음 공부를 시작함과 동시에 국비지원 학원 사람들과 프로젝트 스터디를 2주동안 진행하였다. 이전에는 콘솔을 사용하여 자바와 DB만을 이용한 JDBC를 실습했었는데, 이후에는 조금 더 확장하여 웹 페이지에서 동적인 컨텐츠를 줄 수 있는 웹 애플리케이션 서버를 만들어보는 프로젝트를 진행했다. 이번 프로젝트의 제목은 연애대작전으로 로그인 회원가입이 주요 기능이며, 시간이 남아서 추가적으로 데이트 코스를 만들거나 조회할 수 있는 기능을 구현했다. 이번에 필자는 로그인 기능을 구현했는데, 세션 트래킹을 최대한 구현해보고자 노력했다. 로그인 기능을 구현하는 과정에서 생각해보니 로그인 버튼을 눌러야만 폼 데이터가 서버로 전송이 되었다. 일반적으로 기본적인 사이트는 버튼이 있기는..

📑 최종프로젝트_DAY1

이제 어느덧 수료를 2달 앞두고 있는 상황이다. 아직 배워야 할 부분이 너무나도 많지만, 수료하고 어떻게 취업할지 막막하긴 하지만,,, 우리는 공부를 멈추지 않는 개발자이니까 지금할 수 있는 일에 대해 최선을 다하고자 한다. 다가오는 수료를 맞이하면서 이력서에 첨부할 포트폴리오를 만들기 위해 최종적인 프로젝트를 시작했다. 팀원은 필자를 포함한 3명으로, 개발에 사용할 언어는 java, oracle, javascript, spring이다. 만들고자 하는 프로젝트의 주제를 선정하고, 오늘 처음으로 만나서 개략적으로 구현하고자 하는 기능들을 생각해보고 DB를 모델링하는 시간을 갖게 되었다. 이번 프로젝트에서 만드는 프로젝트는 웹에서 플래시카드를 구현하려고 한다. 카드의 내용은 기술면접 단어 암기장으로, 프로젝..

📑 XML_국비_DAY70

XML(eXtensible Markup Language) 확장된 마크업 언어 사용자가 필요에 의해서 태그(Element)를 생성할 수 있다. 태그는 계층구조로 형성된다. DTD만 맞추어 두면, HTML과는 달리 사용자가 태그를 직접 만들어서 사용할 수 있다. DTD없이 XML을 정의해도 되지만, 데이터의 신뢰성이 떨어진다. 참고하는 형식 기준(DTD)없이 사용자가 임의로 태그를 추가해서 사용할 수 있기 때문이다. 반드시 DTD에서 정의한 형식으로 XML을 작성해야 한다. 하나의 xml문서 전체에서 root element는 반드시 1개만 존재해야 한다. 두 개 이상이 존재하면 오류난다. xml을 파싱하는 parser가 xml 전체 문서를 document라고 부른다. 파싱하는 순서는 반드시 정의된 순서대로 ..

📑 백준[자바]_1325_효율적인해킹_그래프순회_BFS

오늘은 알고리즘 스터디원들과 문제풀이를 하는 도중 다들 이 문제를 어려워 하길래 정리할 겸 풀어보았다. 필자는 별 다른 문제를 못느끼고 문제를 풀었는데, 아무리 해도 안된다는 스터디원들의 말을 듣고, 다른 풀이를 인터넷에 검색해보았다. 한 가지 다른 점이 있다면 인터넷과 팀원들의 풀이는 입력값에 반대 방향으로 그래프를 그렸고, 필자는 입력값 방향 그대로 그래프를 구성했다. 문제를 보면 그래프가 방향성이 없는 무방향 그래프가 아니라 방향성이 있는 단방향 그래프라는 것은 눈치챘을 것이다. 사실 필자도 구글링을 해보면서 찾아보았지만 시간 초과가 나는 정확한 이유를 모르겠다... 예상가는 바라고 한다면, 1만개의 정점이 10만개의 간선으로 모두 연결이 되어 있는 상태라면, 모든 노드를 탐색해야 하는 이번 문제에..

📑 PhotoGallery[완결]_국비_DAY69

전체 소스코드 보기 지난 시간에 이어서 오늘은 파일 업로드&다운로드 실습에 기능을 추가하고자 한다. 오늘은 이미지를 누르면 업로드 되어 있는 사진을 팝업 형태로 상세보기 할 수 있는 기능을 추가할 것이다. photo_list.jsp파일에서 태그에 onclick속성을 추가하고 photo_view()함수를 추가한다. 기본적으로 모든 이미지들은 JSTL의 forEach문을 사용해서 출력했다. 상세보기를 하기 위해선 내가 클릭한 이미지가 어떤 이미지인지 알아야 해당 이미지를 데이터베이스에서 가져올 수 있다. 하지만 forEach문의 반복첨자로 사용하던 vo는 "Java"언어이기 때문에 이 문법을 그대로 함수의 인자로 전송하면 이 함수를 실질적으로 처리하는 언어는 JavaScript이기 때문에 인식이 안될수가있다..

📑 백준[자바]_1388_바닥장식_깊이우선탐색

오늘은 평소에 약했던 부분인 DFS탐색문제를 풀어보았다. 이번에는 단계별로 문제풀기에 분류되어 있지 않지만 학원사람들과 알고리즘 스터디를 하기 위해서 찾은 비교적 쉬운 DFS탐색 문제이다. [ 접근 ] '-' 이 같은 행에 연결되어 있거나 '|'이 같은 열에 연결되어 있는 경우 하나의 나무 판자로 카운트 한다. 맵을 탐색하다가 해당 위치에 있는 나무판자의 모양이 '-'라면 좌우만 탐색, '|'라면 상하만 탐색한다. 모든 위치에서 DFS탐색을 하되 재귀가 끝나는 위치에서 count해준다. 경우의 수가 두 가지 뿐이므로 조건의 편의성을 위해서 -와 |를 true, false로 변환해서 map에 저장했다. 비교적 쉬운 문제이기 때문에 나머지는 소스코드를 보면 쉽게 이해할 수 있을 것이다. [ 소스코드 ] 1 ..

📑 세션 트래킹_국비_Day68

전체 소스코드 보기 어제에 이어서 세션 트래킹을 활용한 로그인 처리를 이어서 정리하겠다. 65~66일차에 실습한 Member(회원관리)와 67일차에 실습한 Photo(파일업로드) 내용을 병합하여 실습을 진행하고자 하니 부족한 내용은 이전의 블로그를 참고해주길 바란다. 실습이 끝나고 전체적인 파일은 필자의 깃허브 주소에 업로드하겠다. 세션트레킹은 현재 페이지의 정보를 다른 페이지에서도 유지한 상태로 사용하는 기술이라고 했다. 로그인을 진행하기 전에 아이디가 맞는지, 비밀번호가 맞는지 한 번의 검증과정을 거치는데, 이번에는 로그인 폼에서 비동기로 확인하는 것이 아니라, 로그인 서블릿으로 넘어간 후에 redirect하는데, 이때 쿼리에 오류정보를 담아서 전송해주어야 한다. 리다이렉트를 할시에 사용자는 url변..

📑 동적계획법_2156_포도주시식

오늘은 백준 단계별로 문제풀기 동적계획법1에 분류되어 있는 다이나믹 프로그래밍 문제를 풀이해보겠다. 같은 카테고리에 존재하는 계단오르기 문제와 아주 비슷한 문제이다. 그 문제를 풀때는 점화식을 어떻게 구해야 할지 몰라서 다른 사이트를 참고했는데 참고한 사이트 주소는 아래의 링크를 걸어두겠다. https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 연속해서 세개의 와인을 먹으면 안되기 때문에 연속해서 선택하는 수가 2를 초과하면 안된다. 시작하기에 앞서 ..

📑 파일업로드_국비_DAY67

[자바에서 파일 업로드하는 방법] 파일은 request객체로 수신이 안되기 때문에 파일을 업로드하는 경우에는 이를 처리해줄 객체를 사용해야 하는데 이 객체를 사용하기 위한 라이브러리를 추가해야 한다. 절차를 아래와 같다. 다음의 사이트로 접속한다. 왼쪽 메뉴에서 COS File Upload Library를 선택한다. 밑으로 내려서 cos-22.05.zip파일을 다운로드한다. 압축을 해제하고 lib폴더 내에 있는 cos.jar파일을 프로젝트의 WEB-INF하위의 lib폴더로 복사한다. [File Upload용 Form을 작성 시 반드시 준수해야 할 사항] method="POST" enctype="multipart/form-data" [input_file.jsp] 1 2 3 4 5 6 7 8 9 10 11 ..

📑 백준[자바]_2206_벽부수고이동하기_BFS_너비우선탐색

오늘은 백준 단계별로 문제풀기 카테고리 중에서 그래프 순회로 분류되어 있는 문제를 풀어보았다. 최근에 그래프 탐색문제로 너비우선탐색 문제를 많이 풀이해왔는데, 이번 문제는 생각보다 까다로웠다. [ 문제 분석 ] 시작점과 도착점은 벽이 없음이 보장된다. 시작점과 도착점을 포함해서 이동 거리의 최소값(최단거리)를 도출한다. 이때 단 한 번의 벽은 부술 수 있다. 도착점에 도달할 수 있는 경우는 최단거리를, 도달할 수 없으면 -1을 출력한다. [ 오답노트 ] 처음에는 그렇게나 골치를 썩이던 벽을 뚫을 수 있다는 말에 반가웠지만 막상 구현에 앞서보니 어떤 벽을 뚫어야 최단거리가 가능할까? 라는 생각을 하다가, 이렇게 생각하기엔 경우의 수가 너무 많아서 도달달 수 있는지 없는지를 판단하기로 했다. 위를 구현하기 ..