-
Notifications
You must be signed in to change notification settings - Fork 2
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
[Feature] 사진 오브젝트 설계, 유즈케이스 구현 #89
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 딩동의 의견에 동의합니다 !!
PhotoObject
가 UIImage를 갖고 있는 것보단 url로 갖고 있는 것에 동의 ......
그른데 파일입출력이 고민이라면 .. 이미지 캐싱 ? ㅎㅎ 고려하는 것도 도움이 될까요 ??
일단 어푸루부 !!! 완고 (완전고생했단 뜻) 띵똥 ~~
/// - Parameters: | ||
/// - imageData: 추가할 사진의 데이터 | ||
/// - position: 사진을 추가할 위치 (origin) | ||
/// - size: 사진 객체 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요기 size
파라미터는 어디서 나온건가요 ??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
눈썰미 무엇.. AirplainImageData라는 타입은 버리고 주석과 같이 수정하겠습니다.
private let fileManager: FileManager | ||
private let photoDirectory: URL | ||
|
||
public init(fileManager: FileManager) throws { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요기서 fileManager를 주입 받는 이유가 궁금합니다.
FileManager.default로 FileManager의 싱글톤을 사용하는 것 외에 생각하고 있는 방식이 있나요 ??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
앗.. FileManager의 default를 그냥 사용하도록 하겠습니다!!
너무 멀리 멀리 보려하니 문제 정의를 잘못한것 같습니다..!..!
위에서 AirplainImageData 타입을 따로 정의한 부분과 같은 문제네요ㅜㅜ 생각 정리를 깔꼼하게 끝내고 설계를 했어야 했는데 마음이 너무 급했나 봅니다..
public enum DomainError { | ||
case cannotWriteFile | ||
case cannotCreateDirectory | ||
case cannotFindDirectory | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DomainError도 좋치만 !
뭔가 파일 쓰기 찾기 관련 에러 같아서 다른 Error 타입 이름으로 해도 좋을 것 같다는 개인적인 의견입니다 ~~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
동의합니다!! 내일 데일리 스크럼 이후에 에러와 Logger 관련해서 이야기 나눠보면 좋을 것 같습니다!
이미지 캐싱도 고려중입니다! 다만, 일단 화이트 보드 안에 있다면 해당 이미지를 재사용하여 새로운 이미지 오브젝트를 화면에 표시할 일은 없을 것 같습니다! 이미지의 크기 변화나 위치 변화는 사진이 표시되는 ObjectView의 frame을 바꾸거나, transformation을 이용해 처리할 수 있기 때문입니다! 제가 생각하기에 이미지를 재사용할 수 있는 경우는 아래 한가지만 생각나는데요!! (다른 경우가 있다면 말씀해주시면 감사하겠습니다!)
아마 이렇게 되면, 이미지를 구분하기 위한 수단이 추가적으로 필요할 것 같습니다!! 다만, 이 경우 UUID를 통해 이미지를 구분하지는 못할 것 같습니다. 정말 정말 정말 낮은 확률로, 어디선가 UUID를 사용해야 할 때 사용자의 기기에서 수신한 이미지와 같은 UUID를 생성할 수 있기 때문입니다!! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생 많으셨습니다!!
사진을 PhotoDirectory에 저장하고 url(path)를 통해 가져오는 것으로 이해 했습니다.
해당 사진을 가져오는 방법에 대한 좋은 아이디어를 갖고있지는 않은데요, 다만 현재 방법이라면 사진을 계속해서 기기에 저장하게 될 것으로 이해해서 그럴경우 photoDirectory를 관리하는 방법을 고려해봐야하지 않을까라는 생각을 하게 되었습니다!
제가 잘못 이해한 부분이 있다면 코멘트 남겨주시면 감사하겠습니다!!
@@ -6,7 +6,7 @@ | |||
// | |||
import Foundation | |||
|
|||
public class DrawingObject: WhiteboardObject { | |||
public final class DrawingObject: WhiteboardObject { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ㅋㅋㅋㅋ은근슬쩍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이런 실수를! 이런 실수를! 이런 실수를!
바로 붙이겠습니다~!~!
확실히 필요하다고 생각합니다!! 요것도 정책적인 부분일 것 같아서 회의 때 간단하게 이야기 나눠보면 좋을 것 같습니다!! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다~~
뭔가 갑자기 생각난건데, 이미지를 다운스케일링 하는 기능이 나중에 추가될 수도 있다는 생각이 드네용
맞습니다,, 아직 multipeer로 인터넷 연결 없어 어디까지 보낼 수 있는지 미지수라,, 추후 jpg 이미지를 가지고 올 때 compressionQuality를 설정해 가져오면 될 것 같습니다!! |
🌁 Background
👩💻 Contents
📝 Review Note
사진 오브젝트 추가는 간단하게 끝낼 수 있을 줄 알았는데 생각보다 고려해야할 것이 많았습니다. 현재 두가지 방법을 고려중입니다.
PhotoObject
엔티티가 이미지 데이터를 가지고 있는 경우Domain
의 entity에서Data
형식으로 한 번Presentation
의UIImageView
에서UIImage
의 형태로 한 번PhotoObject
엔티티가 이미지 데이터의URL
을 가지고 있는 경우 (현재 이 방법을 임시 채택)Data
형식으로 이미지를 받으면, 이를Domain
에게 넘겨줍니다.FileManager
를 통해Domain
은 ImageData를 파일 시스템에 저장합니다. (쓰기 작업 한 번)PhotoEntity
를 생성합니다.Presentation
에서 이미지를 표시할 때,FileManager
를 통해 이미지 data를 가져와 ?UIImage
를 생성합니다. (읽기 작업 한 번)addPhotoObject
함수가error
를throw
할 수 있습니다.📣 Related Issue