Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Seminar1] 선택 과제 구현 #4

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open

[Seminar1] 선택 과제 구현 #4

wants to merge 6 commits into from

Conversation

yeeun0702
Copy link
Collaborator

@yeeun0702 yeeun0702 commented Oct 11, 2024

TODO

  • 일기 복구
  • 일기 수정 횟수 하루 2회로 제한 (고민중)
  • application 이 종료되어도 일기가 계속해서 저장 (고민중)
  • 글자수 제한 유지하면서, 이모지 넣기 (고민중)

삭제된 일기 복구 기능 추가 ⭐️⭐️

    private final Map<Long, String> storage = new ConcurrentHashMap<>();
    private final Map<Long, String> deletedDiaries = new ConcurrentHashMap<>(); // 삭제된 일기를 저장할 리스트

삭제된 일기를 복구하기 위해 삭제되는 일기를 보관하기 위한 deletedDiaries 를 만들었고 <Long, String> 을 키와 값으로 사용했습니다.

위 사항을 Diary 객체로 받을가에 대한 고민도 했으나, Diary 객체로 변경할 경우, 해당 객체를 사용하는 모든 코드에서 수정이 필요하다고 생각해서 삭제한 일기를 복구하는 과정에 있어서는 Diary 객체를 받지 않았습니다. 또한, 삭제 과정에서 불필요한 Diary 생성을 줄이고 삭제된 일기의 ID와 내용을 deletedDiaries에 저장하여 관리하는 방식을 선택했습니다.

 void restore(final Long longId) {
        String body = deletedDiaries.remove(longId); // 삭제된 일기 복원
        if (body != null) {
            storage.put(longId, body); // 원래의 스토리지에 복원
        } else {
            throw new IllegalArgumentException();
        }

따라서 일기를 삭제하고, 복구할 때 복구하고 싶은 id를 입력하면, 원래 일기의 저장소로 일기가 복구됩니다.

일기 수정 일일 2회 제한 기능 추가 ⭐️⭐️

일기 수정을 한 사람이 하루에 2번 할 수 있는가 ? vs 각각의 일기 당 2번씩 수정 가능한가

를 두고 고민이 있었는데 후자에 대해 진행한 구현입니다.

 private int editCount;
 private LocalDateTime lastEditTime;

각 일기가 수정시간과 수정횟수를 필드로 가지고, 유저가 일기를 수정할 경우 이를 증가시키는 방식입니다.

Application 종료 시에도 일기 저장 목록 유지되는 기능 추가 ⭐️⭐️⭐️

파일 시스템을 이용하는 방식으로 구현.

  1. 읽기 목록을 파일에 저장하여 Application이 종료 시 일기 목록을 텍스트 파일로 저장합니다.
 private final String filePath = "diary.txt";
  1. Application이 시작 시 파일에서 데이터를 읽어서 일기 목록에 추가할 수 있도록 합니다.

이모지 등을 1글자로 계산하는 기능 추가 ⭐️⭐️⭐️⭐️⭐️

이모지 등을 1글자로 계산하는 기능을 추가하기 위해서는 Grapheme Cluster 인식을 하기 위해 정규 표현식을 사용하는 방식을 선택했습니다. grapheme cluster를 세는 메서드와 grapheme cluster에서 이모지를 세는 메서드 두개를 구현하고 합하는 방식으로 구현할 예정입니다.

Grapheme Cluster 처리란 ?

유니코드에서 문자 하나로 인식되는 단위로, 사용자에게 하나의 문자처럼 보이는 모든 조합을 의미합니다.

Copy link

@daehwan2da daehwan2da left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

군더더기 없이 깔끔하게 잘 구현된것같아요.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants