본문 바로가기

강의

소설 읽어주는 사이트 (200818~201004)

읽어주는 웹 소설.pptx
0.08MB
Readit.hwp
3.47MB
Readit_기획서.pptx
3.65MB
채영지 포트폴리오(서비스).hwp
7.42MB
Readit_포트폴리오.pdf
5.74MB

포폴 수정? - 서비스 소개 필요?

회원탈퇴시 게시글 삭제? 혹은 잔류?

admin 계정 권한 부여.

 

- 블로그 기획서

- 블로그 기술 설명서

- 서비스 기획서 <- 기획서 잘 쓰기. 기대효과.. 시장분석... 성공할 확신...

- 서비스 기술 설명서

 

 

to2.kr/byW

NCS

tts ( 참고 )

프로젝트 기술 설명서 ( 참고 )

 

0923

더보기

월요일까지 준비해야 하는 것

- 프로젝트 개요 PPT

- 프로젝트 기술 설명서

 

수요일까지준비해야 하는 것

- 프로젝트 개요 PPT

- 프로젝트 기술 설명서

 

10월 4일까지는 서비스의 핵심 필수 요소들이 모두 구현되어야 함.

 

 

 

더보기

- 현재 진행상황 공유

* 목요일 발표 내용

- 프로젝트 개요 (PPT)

   - 기술적인 설계가 아니라, 비전문가에게, 내가 진행하는 프로젝트가 어떤 내용인지 알리는 목적

     ( 기술적인 부분 > 프로젝트 종료 후에 만들 예정 )

- 현재 상황

   - 이미 구현한 기능 목록

   - 앞으로 구현할 기능 목록

   - 예상되는 어려움

* 프로젝트 종료

- 날짜 : 2020.09.23

- 종료일 이후부터는, 포트폴리오 문서 작업을 해야 합니다. ( 참고 : 포폴 예시 )


 

대략 계획

아무리 길게 끌어도 19일(토)까지는 기능 구현을 완성해야 함. > 20, 21, 22 디자인 최소 3일.

 

더보기

현재의 방식으로 BOARD를 사용하는 메리트가 있는가???

그냥 MEMBER로도 되는데???????

더 헷갈릴 뿐 아닌가??????????????????????////

MEMBER에 사이트 이름을 추가하는 편이 낫지 않을까?????????????????????????????????????//

 어떤 사이트든 자유게시판, 공지사항은 필요. 이를 위해 board는 살려야 함.

 

미세팁

더보기

- select가 많을 경우 검색을 하고 싶다면 select2 사용. > select2 라이브러리를 불러와야 함.

 

- a 태그를 버튼처럼 쓰고 싶다면 a 태그 안에 button 태그 넣기 (참고 )

 

- 반응형 줄바꿈

   - 기본 : word-break: break-all;

   - 안 깨지게 하는 법 : word-break: keep-all;

 

- extra

   - extra를 불러오지 못할 때 > dao.xml에서 resultType을 resultMap으로 변경!

   - 이 때, resultMap 내용물은 소문자로 적기.

 


 

!! 추가 DB 필요 !!

series / chapter 추가 필요.

 

toastEditor는 모바일에서 이상함 > 변경적용 참고. 테이블도 반응형으로 적용

 

READIT

- 한 개의 ID당 한 개의 개인 블로그 소유 가능

- 장르 선택

- 카테고리 선택 ( 시리즈 / 단편 )

- 댓글 ( 로그인 후 이용 가능. 비밀 댓글 checkbox )

- 디자인은 추후에.

 

현재 문제점

- 인증 코드 메일 발송(attr)

- write의 형식을 toast editor로 변경 > 최우선!

더보기

- 가입시 몇 번째 가입회원인지 띄우려 했으나 '1번째 회원'으로 계속 뜸. > Util 사용으로 해결

- 정보 수정 / 로그아웃시 기존의 doModify, doLogout이 url에 그대로 남아있음. > 해결 (alert)

- 게시글 작성과 리스트의 url이 원하던 형태가 아닌 단순히 write/list로만 되어있음. 수정 필요.

 

방향 잡는 중

더보기

- 공지사항과 자유게시판은 필요가 없음.

- 보드가 필요 없고, 대신 카테고리가 필요함.

- 한 사람의 게시물들을 보는 형식 > 사람 개개인을 보드로 설정하는 것은?? (board에 memberId 추가)

- home에서는 전체 게시물 중 인기 게시물들을 볼 수 있음. > article에 hit 추가 필요

   - home에서 노출시키고 싶은 것 : 인기 게시물 / 인기 시리즈 / 사이트 사용법 / 인기 작가 최신글

 

- http://localhost:8085/usr/article/detail?id=10

- http://localhost:8085/usr/article/{boardCode}-list?series=10574 (혹은food처럼 string?)

- http://localhost:8085/usr/article/{boardCode}-detail?series=10574&id=3

- http://localhost:8085/usr/article/{boardCode}-write (본인 보드에는 본인만 글 쓸 수 있음)

 

- 1 member당 1 board를 실현하려면 회원가입 할 때마다 board 생성을 해야 함.

   > 메일 인증을 한 후에 blog를 생성하는 건 어떨까?

   > blog 이름은 default로 loginId로 하고, member 테이블에  >> 폐기

 

해결해야 하는 것(new!)

더보기

chapter

- list

   - 페이징

   - 검색

- detail

   - 이전글/다음글

 

novel

- modify

 

해결해야 하는 것(old)

더보기

- MyList와 Write의 경우, boardCode를 이용하여 링크를 탄다.

Ex. loginId가 p인 계정으로 로그인 한 경우, MyList를 누르면 p-list, Write를 누르면 p-write이 url에 찍힘

이 때, board가 생성되지 않은 member로 로그인 한 경우, MyList/Write가 안 뜨도록 하던가, 접근 불가능하게 해야 하는데 그냥 -list로 이동됨. > list 기준이 멤버가 아닌 보드가 되어서 폐기

- head.jsp의 경우 추후 LIST 형식으로 변경. (보드/카테고리)

- series table

   - 존재 의의 : 동일 시리즈를 모아 보기 위해서

   - 들어갈 내용 : id / regDate / updateDate / memberId / name(series) / displayStatus / chaptersId(챕터 하나하나의 아이디까지 넣을 필요가 있는지?) / cateId(필요??)

   - 해당 테이블이 생길 경우 article table에 seriesId를 추가해야하는가?

- chapter table

   - 존재 의의 : 시리즈의 한 챕터(특정 화).

   - 들어갈 내용 : id / regDate / updateDate / memberId / seriesId(이렇게 된다면 series table과 서로 가리키는 것 아닐까.. 중복? 필요성에 대해 생각하기) / 

- 카테고리랑 board의 경우 delStatus랑 delDate보다는 displayStatus만 남겨두는 편이 낫지 않았을까? 하다못해 카테고리라도???

- 카테고리와 시리즈의 우선순위.. 카테고리는 필요 없는 것 아니었을까.................................................

- Write : 선택할 카테고리가 없는 경우 글 생성이 안되는데, 디폴트로 들어갈 카테고리를 설정해두는 게 낫지 않을까?

 

- LIST > 페이징


해야할 것

 

#DB

- chapter

   - 몇 화인지 column 추가. (chapter 작성 시 title을 작성하는 작가도 있고 아닌 작가도 있기 때문.)

     > title이 없어도 되도록 하기 위함. > 취소

   - 장편 시리즈 중간의 chapter를 삭제해도 해당 부분은 내용을 없앨 뿐, 뒤의 화수를 땡겨오는 행동은 X > 취소

   - 장편 시리즈의 글을 작성할 때 title의 defaultValue 설정. > 취소

     (Ex. 10화 연재. 11화 작성하려고 write를 할 경우, title에는 자동으로 '11'이 적혀 있도록?)

   - 글 작성시 [novel 선택] 란에는 seriesStatus가 장편인 novel들만 뜨도록? > 취소 (단, 단편들은 하단 배치)

      - 이렇게 만들고 싶은 이유: 단편 1개일 지라도 이를 위해 novel 1개를 생성해야 하는데,

        이 경우, novel이 너무 많아짐. 단편이 많아질 경우 선택할 카테고리가 많아지는 문제가 됨.

      - 고민할 부분 : 그렇다면 [단편] 분류인 novel에는 애초에 글 한개밖에 작성할 수 없도록 해야하는것인가?

      >>>>>>> ??? 이럼 novel 단편의 존재 의의가 없는 거 아닌지 ???

   - 조회수, 추천수 cloumn 추가

- TTS

   - '모두 읽기'를 할 경우, 다 읽으면 자동으로 다음 화로 넘겨서 읽도록 하기.

      - 다 읽으면 event로 onEnd가 뜨는 걸 이용???

- novel

   - novel은 메일 인증을 완료한 사람만 접근 가능해야 함. - TBD

      - 접근할 때 만약 로그인한 계정의 authStatus가 0이라면 홈으로 돌아가게 해야함.

 

#Spring

- list

   - chapter을 보기 위해서는 반드시 novel을 거쳐야 하는 지금의 구조. > 수정 필요

     > 어떻게? list 들어가면 게시물 novel별로 보기, chapter별로 보기 버튼을 따로 만들어야 하나?

 

#디자인

더보기

top-bar

- Home

- Novel (메일 인증?)

   - 노벨별 전체보기 (total-list)

   - 챕터별 전체보기 (추가 필요)

- MyNovel (메일 인증 필수)

   - 나의 노벨 (a-list)

   - 나의 챕터 (추가 필요)

   - 나의 챕터 작성 (a-write)

   - 나의 노벨 setUp (a-setUp)

- Free

- Notice


1004

종료.


1002

한 것

- admin 계정에 권한 부여

   - 챕터 삭제

   - 댓글 삭제 >> replyService 수정함. detail.jsp 수정해야 함.

   - 게시글 삭제

- 회원 탈퇴시 해당 계정이 작성한 글들 어떻게 할 지. > 잔류

- 포폴에서 39p의 챕터 삭제 내용이 비어있음.


0929

추가로 작업한다면...

- 로딩바

 

더보기

- 강사 상담

   - 추석 연휴 계획

      - 0930 : 학원에서, 블로그 CSS 수정

      - 1003 : 휴식

      - 1004 : 카페에서, 블로그 기획서 보완

      - 1005 : 학원에서, 서비스 오류 수정

      - 1006 : 학원에서, 서비스 오류 수정

      - 1007 : 카페에서, 이력서 작성

      - 1008 : ...

      - 1012 : 면접 시작

 

* 준비해야 하는 것들

- 블로그 완성

- 블로그 기획서, 기술 설명서

- 서비스 단계적 완성(모든 기능이 완벽하진 않지만 작동은 하는 상태)

- 서비스 기획서, 기술 설명서

- 이력서

- 자소서

 

* 추천

- 모든 준비가, 1006에 끝나는 것

- 최대 1010 전까지는 무조건 끝나야 함.

 

추가 구현?

더보기

연속 재생 기능.

autoplay용 버튼을 만들고, 이걸 누르면 다 읽은 후, 자동으로 다음 화로 넘어가면서 (이 때 parameter에 autoplay=1 추가되어 있음.) 재생 여부 컨펌 창 띄움.

> 예 누를 시, autoplay=1인 상태로 계속 읽고 다음화로 가는 걸 반복.

> 마지막 화에서는 다음 화로 가는 url 대신 마지막화임을 알리는 팝업 창 띄움.

할...할수잇도록...파이팅...

 


0928

한 것

- 회원 정보 변경 > 해결 : member-modify에서 nickname js 위치를 옮겼음.

   - ajax로 닉네임 변경 가능 여부 체크할 수 있는 코드 추가했더니 닉네임을 건들지 않고는 수정이 진행되지 않음

     > ajax로 안된다면 controller에서 해결하는 방법으로라도 하기.


0927

한 것

   - 수정시 자물쇠가 그대로 수정 가능 영역에 들어옴. (지워도 새로고침하면 사라지긴 하지만.)

      > 해결 : before 이용

      > 이로 인한 문제 : 수정완료를 누른 후 새로고침을 하면 자물쇠가 하나 더 늘어있음;

         > 해당 문제는 해결 : replyController에서 subString 이용 > 그러나 근본적인 해결은 아니다...

 

문제점

- 비밀 댓글 ( 참고 )

   - 처음 쓸 때만 가능. 수정시 비밀 댓글의 노출 여부를 수정할 수 없음.


0925

한 것

- 모바일 화면

   - findId

   - findPw

- 시리즈 이전글/다음글 css

- 이전글/다음글

   - 시리즈용 이전글/다음글만 가능한 지금의 상황... 이전에 됐는데 어째서??? > 해결 : novelId 관련 코드 삭제


0924

한 것

- 모바일 화면을 위한 css

   - detail

   - main

   - write

   - genNovel

   - login

   - join

   - checkPw

   - myPage                    >> myPage와 modify는 고치지 않아도 괜찮음.

   - modify (member)

   - member modify에서 닉네임을 기존에 있던 것으로 바꿀 경우 error 발생. > 해결


0923

한 것

- 메인 페이지 > 조회수 관련 수정

- 소설 작성 페이지

- 소설 수정 페이지

- 비밀번호 체크 페이지

- 회원 정보 페이지

- 리스트 페이지

- setUp 페이지

 

문제 발생

- novel 조회수의 업데이트가 novel-list에서 이루어져서 main에선 이전 조회수 정보로 운영됨. > 해결 


0922

한 것

- 메인 화면

- novel-detail


0921

한 것

- head 관련 css


0920

한 것

- 페이징 (작가별)

- 소설 볼 때 검색창 삭제

- 페이징 (setUp)

- 페이징 (article)

- 검색 (article)

- 이전글/다음글 (article)


0918

한 것

- 비밀 댓글

- 페이징 (전체일 때)

 

고민중

- 단편 기능을 아예 없앨까?


0917

해야 하는 것

- 페이징

- 검색 (article)

- 비밀 댓글?

- 카테고리별 보기.......... 가능할까? 한다면 novel에만...chapter말고....

 

한 것

- 검색 (novel 완료)

- novel-list에서 소설당 챕터 수 추가 (db 추가 완료)

- 공지사항은 관리자 회원만 가능하도록(memberId=1)

- detail - 장편 챕터의 소설 관련 수정

- list(전체/작가별)일 때, 이전글/다음글

 

문제 발생

- 이전글/다음글의 적용은 현재 a-list만 가능(total 미적용)

  > 그런데 서치 결과물의 경우, 이전글/다음글은 total-list처럼 닉네임 구분 없이 움직임.

     (서치하지 않았을 경우엔 해당 문제는 발생하지 않음)

  > 문제발생 위치 : chapterDao.xml - getChaptersBySearchKeywordAndSearchKeywordType

  > 해당 부분에 memberId를 넣으면 당장 이 문제는 해결되나, 전체 chapter 보기에서 들어왔을 경우와, 작가별 chapter 보기의 구분이 가능하지 않아서, 이렇게 해결할 지 전체 보기에서 서치했을 경우 문제 발생.

  > 임시 해결 : location을 넣고, 전체 리스트일 경우엔 null, 작가별 리스트일 경우엔 해당 작가의 닉네임을 넣었음.

     > 문제가 생기지 않을 지 실험 많이 하기.

- detail

   - 장편 시리즈의 경우, 한 편만 존재한다면 위의 시리즈명 바로 오른쪽의 [/]와 하단의 시리즈 관련 이전글/다음글에서 문제 발생

 


0916

한 것

- 조회수 추가 (novel, chapter, article)


0915

한 것

- 노벨리스트 페이지에서 글작성 버튼 띄우기.


0914

한 것

- chapter - 장편 novel일 경우 동일 novel의 이전글/다음글 가능.

- novel - modify 구현


0913

한 것

- chapter - doDelete 구현

- chapter - modify 구현

- chapter - detail에 tts 적용


0912

한 것

- 메일 인증시 자동으로 novel 생성하던 거 삭제하기.

- 본래 메일에서 인증하기 누르면 곧바로 readit으로 갔는데 테스트를 위해 local로 가는 것도 만들었음.

   => 플젝 완성하면 수정하기!!

- 현재 novel은 닉네임으로 관리하는 데, 닉네임 수정시, novel-list도 수정하도록 해야 하는.

- 새로운 novel 추가할 때, seriesStatus 관련 쿼리문을 작성하지 않았기에 장편인 novel이 없었음.

- DB에서 reply 테이블에 relType, relId가 아닌 articleId가 존재하여 해당 부분 수정 & replyDao.xml에서 매핑 수정.

- novel - doDelete 구현


0911

한 것

- before에 haveNovel (로그인 한 계정이 novel을 갖고있는지 유무 판단) 을 추가하여, novel의 list와 write의 노출 유무를 결정.

- novel 생성하기 기능 구현

- DB ~ chapter에서 cateId를 삭제.

   (이유: 챕터는 반드시 노벨에 속해야 하고, 노벨의 카테고리에 따라 챕터의 카테고리가 결정되기에,

           기존에 novel과 chapter 둘 다에 cateId를 넣었으나, 이젠 novel에만 넣도록 수정함.)

 

novel-write.jsp

function NovelWriteForm__getAutoNovelTitle(input){
		var form = input.form;

		$.get(
			'getAutoNovelTitle',
			{
				novelId: form.novelId.value
			},
			function(data){
				var $title = form.title;

				if(data.resultCode.substr(0, 2) == 'S-'){
					$title.empty().append('<div style="color: red;">' + data.msg + '</div>');
				}
				else {
					$title('value="' + data.msg + '"');
					// 다른 장편 novel 눌러서 title이 작성될 경우에는 비워야할텐데,
					// 제목을 먼저 쓰고 novel을 선택할 경우엔 어떻게...? 
					// 해당 ajax 부분 실행을 title이 비어있을 경우로 한정?
					// 그런데 이렇게 할 경우엔 해당 title의 value값이 auto로 생긴 것인지 아니면 직접 작성한 것인지 판단이 불가.  
				}
			}, 
			'json'
		);
	}
	NovelWriteForm__getAutoNovelTitle = _.debounce(NovelWriteForm__getAutoNovelTitle, 100);

 

에러 발생

Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer;

- 발생 이유 : session을 이용하여 member 정보까지 저장해서. (memberId, member 2개를 저장했음)

                 기존엔 문제가 되지 않았으나 redis를 사용하면서 문제가 됨.

- 해결 : member를 session으로 저장하던 것을 삭제 (이로 인해 session으로 저장하는 것은 memberId 뿐).

          그리고 또 이와 같은 상황을 방지하기 위해 기존 코드에서 꼭 session을 쓸 필요가 없는 것은 req로 대체함.


0910

- SQLyog 호스트에 연결 설정 ( 참고 )


0909

- 내일까지 사이트 2개 올리기

   - 블로그 도메인

   - 서비스 도메인

 

- 문제 발생

   - redis > 해결 : Redis-x64-xxx.msi 설치 

   - 메일 인증 : local로 들어가게 됨.


0908

* chapter를 쓸 때 novel을 선택한다는 것이 기준인데 이 경우, 카테고리 선택은 필요가 없음.

> 어떻게 해결하지??

> 1. 특정 novel에서 chapter쓰기를 하는 경우와 그냥 chapter쓰기 하는 경우로 나누거나,

   2. 기존 방식대로 가되, 선택한 novel의 카테고리와 다를 경우 경고창???

> 2의 경우 결국 강제로 바꿔야 하는 거니까 의미 없지 않나?

> 1로 가되, 새로 추가된 장편 novel의 경우에만 한정시키고, 단편물의 경우, 초기 생성된 novel에서 작성 가능 및 이 경우 카테고리는 자유롭게 할 수 있는 것으로...?

> 그렇다면 submit할 때,

   1. 작성한 글의 novel명 확인

   2. novel명이 초기 novel이 아닌 경우, 카테고리 설정 무시...?... ...........

> 이것도 이상함....

> 첫번째 셀렉트 박스 값에 따라 뒤의 셀렉트 박스 값을 다르게 하기

더보기

.jsp

<div>
  <div class="row">
    <div class="col-3">
      <select name="06Lv1" id="06Lv1" onchange="setSelectBox(this)">
        <option value="">전체</option>
        <c:forEach items="${1depthList}" var="resultV0" varStatus="status">
          <option value="${resultV0.mcbscode}">
            ${resultV0.mchgname}
          </option>
        </c:forEach>
      </select>
    </div>
    <div class="col-3">
      <select name="06Lv2" id="06Lv2" onchange="setSelectBox(this)" disabled>
        <option value="">전체</option>
      </select>
    </div>
  </div>
</div>

> 잘 안된당... ajax 동적 셀렉트 박스 < 이 키워드로 검색 함 해보기.

>> 원하는 형태의 구현

     1. novel 선택 값에 따라

     2. category 선택이 가능하거나(단편들) 혹은 불가능하거나(category 설정이 되어있는 novel)

 

* 해야 하는 것

- novel 생성 / 수정 / 삭제

   - novel의 카테고리를 수정할 경우 소속된 chapter들의 category도 일괄 수정

   - novel을 삭제할 경우 내용물은 1. 삭제 2. novel에 소속되지 않는 일반 chapter로 변경

- http://localhost:8085/usr/novel/aaa-list?novelId=3

   - aaa라는 닉네임을 가진 경우 위처럼 novelId로 어떤 노벨을 볼 지 정해지는 데

- chapter 수정 / 삭제

 

* 이것저것 생각중

- novel에 소개말 적는 것 / secretStatus(나만보기) 을 추가할까?

- reply에는 secretStatus 추가 필요할 듯. (비밀댓글!)

 

* 내일 예정 (참고)

- www.ncloud.com (가입 완료. 카드 등록)

- 닷네임, 카페24, 가비아 or https://iwandmyname.com/ (도메인 1개 구매)

 

- dnszi.com 가입 (완료)

- 달에 2~3만원씩 나가는데 한 번 세팅해놓고 정지해놓으면 됨....?

 

######

도메인 구매해야 함.

범용성 있는 도메인을 사는 게 좋겠죵.

 

**** 파일 질라 문제 발생 ****

오류: 디렉터리 목록을 조회하는 데 실패함

=> 해결!

=> 문제 원인 : 방화벽

=> 해결 방법 : 시작 > 제어판 > 윈도우 방화벽 > 고급 설정 > 인바운드 규칙 > ftp client 프로그램 아래 캡쳐와 같이

( 참고 )


0907

- 발표

읽어주는 웹 소설.pptx
0.08MB

- 메일 인증을 할 경우 해당 계정의 novel을 생성

- novel 내의 글이 없는 경우 해당 novel은 TotalList에선 보이지 않도록.

- to2.kr/bgH

 

현재 문제

   - 메일 인증 시 메일을 변경하면 인증이 취소되나, 인증에 성공했던 메일을 다시 열면 현재 설정 메일과 다르더라도 메일 인증에 성공하는 문제가 발생. > 인증코드 remove로 해결

- 메일 인증 후 사이트 돌아가는 게 잘 안 됨. > novel 함수 문제?

- 팔로우? 구독

ㅅㅅㅁ

 

DB

- novel : name / id unique 걸기

- 게시글 조회수 추가

 

계획

더보기

!!블로그

 

!!서비스

- 구글 애널리틱스(접속통계)

- 구글 애드센스

 

!!리눅스 - 매달 2만원 정도. 수업 중간마다 할 예정. 이 외의 시간에는 프로젝트 진행.

- 따라하기

- 도메인, SSL, 배포, 백업, 보안

 

!!오라클 (3일)

- 동영상

!!안드로이드 (5일)

- to2.kr/bu6

!!스프링(약점)

- 동영상

 

16일 이수자 테스트??? ㅇ0ㅇ

 

아래 두 개 사이트 가입하기.

https://www.ncloud.com/ 

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

https://dnszi.com 

 

DNSZi - 무료 네임서버(dns) 관리 서비스! 무료파킹서비스! 무료포워딩서비스!

도메인 DNS관리를 웹에서 쉽게 하세요! - DNS를 관리하는데 시간과 비용이 드시나요?- 번거롭게 도메인 등록업체에 매번 DNS정보 수정을 요청하시나요?- DNS관리자에게 DNS정보 수정을 요청하�

dnszi.com

 


0903

- DB 추가 (series)

- 구조 개선 필요 (고민중)

   - 공지 게시판 글 작성은 admin 계정만 가능하도록

   - series의 소속

      - member : board가 문제. 불러오는 것이 어렵고 (불가능?) 이후에 board 정보가 없어서 힘듦.

      - article : free, notice 구분 없이 작동됨. 이 경우 강제로 free에 고정할 텐데 이렇게 수동으로 적용시켜도 되는가?

   - 작성자의 닉네임을 클릭하면 주소창은 free-list/series?memberId=2 이런 식으로?

      이대로면 이 때 free는 board에서 갖고오는 것이 아닌 수동으로 작성해도 괜찮은가?

   - 현재 보드리스트 2개 존재. free / notice. 그리고 위처럼 할 경우 모든 글이 free로 몰림.

   - DB category 모든 회원 일괄 적용. 종류 미리 정해놓기. 1개 이상 필수로 존재해야 함.

   - DB series 개인별 적용. 타인이 볼 수 있고/없고 구분. 없어도 됨.

- 작성자 닉네임을 누르면 해당 작성자의 게시글들 리스트 / 시리즈 둘 다 뜨도록? 선택해서 뜨도록??

- detail - 카테고리 이름, 시리즈(에 포함된 게시글인 경우)의 이름을 뜨도록 하고 싶은데 이 경우 join이..................

    >> series의 경우 articleService가 아닌 seriesService를 통해 얻어서 따로 model로 값 넣어줌.


0902

* 내일 발표

- 프로젝트 개요서

- 현재 상황

 

하고 싶은 거

- 댓글

- 리스트 페이징

- 검색


0901

하고 싶은 거

- 회원정보 수정 시, PW 페이지 거치도록 ( 참고 - java-blog : GIT / 동영상 | at : GIT )

- 댓글

- 0829에 했던 것 변경하기 ( 2020-07-30 참고 )


0831

오늘 해야 하는 거

- 본인 서비스 구현

- 프로젝트 진행상황 발표

 

하고 싶은 거

- 메일 인증 > 해결

- 탈퇴시 '로그아웃 상태' 혹은 '해당 아이디로 로그인 상태'가 아니어도 가능한지 확인 > 막자... > 해결


0829

오늘 한 거

- 패스워드 바꾼지 3개월이 지났다면, 비밀번호 변경 권유 (서치 키워드 : java 날짜 차이 계산, java 현재 날짜)

- 현재, 임시 패스워드를 사용중이면 로그인 시 한 번 경고창 띄우기 > member TABLE 수정 (db.sql 참고)


0828

오늘 해야 하는 거

- 현재, 임시 패스워드를 사용중이면 로그인 시 한 번 경고창 띄우기 > 해결(0829)

- 패스워드 바꾼지 3개월이 지났다면, 비밀번호 변경 권유 > 해결(0829)

- 소스코드, db.sql 압축

 

오늘 한 거

- 회원가입 시 아이디 중복 검사를 ajax로 처리 (lodash debounce 적용) - 참고

- list / detail - 작성자 닉네임 노출

- memberDao.xml에서 getMemberByLoginId에 AND delStatus=0 추가. > 해결

  -> 이게 없어서 삭제한 아이디로 로그인이 되는 사태가 발생

  -> 삭제된 아이디라 정보를 받아오질 못하니 head에선 로그아웃 상태인데,

      사실 내용물이 텅 빈 로그인 상태이니 '회원가입', '로그인' 페이지에 접근이 불가능.


0827

오늘 해야 하는 거

- 소스코드 리팩토링

   - 중복된 로직 제거

   - 지저분한 소스코드 정리

   - 변수명, 함수명을 좀 더 일관성있고 직관적으로 변경

   - 테스트

   - DB 인덱스 전략 재확인

 

- 회원정보 수정 시, PW 페이지 거치도록

 

오늘 한 거

- 수정 (첨부파일X)

- common.js 추가 <- 이게 없어서 renderYoutube가 안되었던것.

- common.css 추가 <- 이게 없을 경우, 유튜브 화면 비율 이상함.

- 로그인/로그아웃 가드에 findLoginId, findLoginPw 추가

- write에서 file 내용 삭제 (혹시 모르니 주석...)

   - 본문에 동영상, 이미지 저장이 가능한데 첨부파일까지 하면 너무 지저분함.

- 회원가입 시 아이디 중복 검사를 ajax로 처리 ( 참고 : GIT / 동영상 )

   - lodash의 debounce 적용하여 최적화(ajax 통신횟수를 극도로 줄이기) > 해결(0828) : 한줄만 추가하면 되었던 것을...

   - 아이디 입력란이 비어있다면 메세지도 없어야 함.


0826

- 회원 탈퇴

   - delStatus를 1로

   - 해당 아이디로 다른 사람이 새로 가입할 수 X


0825

- 글 삭제

- 게시글에 첨부 파일(img, video) 및 해당 첨부 파일 detail에서 노출시키기


0824

완료

- 비번찾기(이메일로 임시 비번 발송)

   - 1. 로그인 아이디 / 이름 / 메일 주소 작성
   - 2. 작성 정보와 (로그인 아이디 기준) 계정이 일치할 경우 작성 이메일로 임시 암호 발송
   - 후에 Member에 임시번호 status 같은 걸 추가하여, 비번 변경 요청을 alert 하는 것도 구현해보기.

- board 삭제 > member로 대체 가능. > 삭제 안 함. (삭제했던 코드는 branch에)


0821

- 주말까지 목표

   - 로그인 / 로그아웃

   - 회원가입

   - 회원정보 수정

   - 아이디 찾기

   - 가입시 감사 메일 발송

   - 자유 공지사항 게시물 작성

   - 자유 공지사항 게시물 리스트


0820

- 완료해야 하는 기능

   - 로그인, 회원가입, 회원정보수정, 가입감사메일, 아이디찾기

- 오늘 필수로 구현해야하는 기능 : 게시물 리스트 / 작성 (어떤 서비스건 자유게시판, 공지사항은 있어야 함.)

   - board 테이블, article 테이블 생성

      - /usr/article/free-write : 자유 게시물 작성

      - /usr/article/notice-write : 공지사항 게시물 작성

         - 힌트 (참고 : 48. 다중 게시판)

            - @RequestMapping("/usr/article/{boardCode}-write")

            - public String showWrite(Model model, @PathVariable("boardCode") String boardCode) {

      - /usr/article/free-list : 자유 게시물 리스트

      - /usr/article/notice-list : 공지사항 게시물 리스트

         - @RequestMapping("/usr/article/{boardCode}-list")

         - public String showList(Model model, @PathVariable("boardCode") String boardCode) {

- 작업 11, 매 요청마다 필요한 정보를 미리 세팅해 두려고 인터셉터 도입

   - GIT

   - 동영상


0819

- 회원가입

- 로그인

- 회원 정보 수정 > 보완 필요

   - 회원 정보 수정 창으로 들어가기 전, PW 체크 필요. (URL 입력을 통한 skip이 없도록)

- 아이디 찾기 (이름, 이메일 입력)

   - 현재 alert로 보여줌. mail로 수정하는 것이 나을까? (비번 찾기는 mail 확정)

- 가입 시 감사 메일 발송 > mail 관련 이해력 부족


DB

article

- 그림 첨부 가능.

- 유튜브 영상 첨부 가능 - toast editor?

- 추천

- 북마크

- 추가 필요

   - 추천

   - 카테고리 ID

CREATE TABLE `article` (
  `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  regDate DATETIME NOT NULL,
  updateDate DATETIME NOT NULL,
  delDate DATETIME DEFAULT NULL,
  delStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
  displayStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 1,
  title CHAR(200) NOT NULL,
  `body` LONGTEXT NOT NULL,
  memberId INT(10) UNSIGNED NOT NULL,
  boardId INT(10) UNSIGNED NOT NULL,
  `cateId` INT(10) NOT NULL
);

 

member

- 이메일 인증

- 추가 필요

   - bookmarks : '북마크'한 article의 id

   - subscribe : '구독'중인 member의 id > 최신글 띄울 수 있도록. > 우선순위 낮음.

CREATE TABLE `member` (
    id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    regDate DATETIME,
    updateDate DATETIME,
    delDate DATETIME,
    delStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
    authStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
    loginId CHAR(20) NOT NULL UNIQUE,
    loginPw CHAR(100) NOT NULL,
    `name` CHAR(20) NOT NULL,
    `nickname` CHAR(20) NOT NULL,
    `email` CHAR(100) NOT NULL
);

 

reply

  - 비밀 댓글 (checkbox)

  - `body`의 경우 LONGTEXT보다는 TEXT가 낫지 않을까? 댓글에서 저렇게 많이 쓸 필요가 있는 것인가 생각하기.

CREATE TABLE reply (
    id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    regDate DATETIME,
    updateDate DATETIME,
    memberId INT(10) UNSIGNED NOT NULL,
    articleId INT(10) UNSIGNED NOT NULL,
    displayStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
    `body` LONGTEXT NOT NULL,
    `private` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
);

 

category

- 창작

   - 단편

   - 연재

   - 완결

CREATE TABLE category (
  `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` CHAR(100) NOT NULL,
  regDate DATETIME NOT NULL,
  updateDate DATETIME NOT NULL,
  delDate DATETIME DEFAULT NULL,
  delStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
  boardId INT(10) UNSIGNED NOT NULL
);

board

CREATE TABLE board (
  `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `name` CHAR(100) NOT NULL,
  regDate DATETIME NOT NULL,
  updateDate DATETIME NOT NULL,
  delDate DATETIME DEFAULT NULL,
  delStatus TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
  memberId INT(10) UNSIGNED NOT NULL UNIQUE
);

컨셉 : 소설 읽어주는 사이트

사용자들이 글을 읽는 것이 아닌 틀어놓을 수 있게.

시리즈 기능 구현하기.(이전글/다음글)

 

http://mdn.github.io/web-speech-api/speak-easy-synthesis/

'강의' 카테고리의 다른 글

redis  (0) 2020.08.25
파일럿 프로젝트 주제 정하기  (0) 2020.08.18
오디션 프로그램 만들기 (0807)  (0) 2020.08.07
자바블로그(스프링부트) - 200803~  (0) 2020.08.03
이후  (0) 2020.07.15