Skip to content

12.03 데일리 스크럼

Forest Lee edited this page Dec 3, 2024 · 1 revision

컨디션

S017: 추워요

S008: 커피….

S062: 어제 너무 안좋아서 일찍 자버렸슴다. 그래서 오늘 좋아요

S042: 피곤하네유

한 일

S008: viewmodel 연결 중인데 석영님 코드 없어서 테스트가 안되니 좀 쉽지 않

⇒ 빨리 드릴께요..

S062: 어제 리팩토링 완료 + Socket 구현 1차 진행

S017: 동시 업로드 진입

S042: PR 작성 리뷰 반영

할 일

S008: ㅋㅋㅋㅋㅋ 그거 받고 완성하기

S062: 소켓 완료는 못하더라도 건우님께 빨리 넘겨드리기

S042: 화면 넘어가게 연결하기

남은거

  • 편집한거 다운로드
  • Browsing + Advertising꺼야 하는데, 끄는 곳이 없음. ㅋㅋㅋㅋ
  • 나가기 버튼
  • 내 영상 리스트 반영, 영상 업로드 중인 표시?
  • 다운로드 후 화면 전환을 어떻게 할 건지?
  • 영상 리스트에 author가 반영되지 않는 문제

싱크로나이즈에서는 비디오 파일 data만 비교하고있는데 네

애초에 비디오에서 owner? 개념은 사용하지 않으려고해써요

비디오 보내는 사람이 결국 sender 인 걸로 ㅎ생각해썽요

해결 방안은 잇는ㄷ

  • 비디오 보내는 사람이 owner가자

  • ㄴㄴ 업로드 한사람이 owner로 가자

    ⇒ owner 리소스

→ owner

→ owner & editor & sender ⇒ 필요없다!

저는애초에 sender만 생각했어요

sender = owner

→ owner~!

→ 보낸사람이 sender = owner

→ 싱크 맞출때, 요청 랜덤

→ 비디오가 브로드 캐스트로 요청

→ 비디오를 보내주자나요? 근데 이때, owner가 보내느것이 가지고 있는 유저가!

⇒ sender ≠ owner

⇒ sender ≠ owner

  • Sender (다르게 간다면 sender도 필요함?)
  • Editor (이것도 필요함?)
  • Owner (비디오 컨테이너!)

근데 비디오 데이터를 받는데 누가 보내는지에 따라 데이터가 혹시 달라지나요??

CRDT할때 해싱을 하자나요!

  • 건우님 author 윤회
  • 저 author 지혜

제가 생각한 방향은 제가 비디오를 보냈으면 그 비디오가 sender를 들고있어서 계속 제이름으로 남아있는거였어요

→ sync맞추는 작업

그거를 데이터 받을 때 그냥 별도 타입으로 저장만 하면 되지 않나유??

S042:

S062: 지혜님 올린 영상을 가지고 있어요 (owner: 지혜)

S008: 영상(sendResource) → owner가 sender가 (owner: 석영)

네넵

그럼 혹시 동영상 메타데이터를 바꾸는 건 안대나요?

메타데이터 author를 바꾸면 안대려나요 좀 쉽게 가려구요]

재저장을 하고, 넘어가야 할것같아요 만약 한다면???

메타데이터요? 메타데이터 owner지정가능?

metaData

<이게 쉬워요요ㅇ>

var newURL = url.append(author: "seok") // 쿼리 추가 (보내는쪾)

print(newURL.author()) // 받는쪽

“author=displayName”

저는 상관없어여

  1. owner == sender
  2. owner ≠ sender
  • Sender = 보내는 이..?

  • Editor = 현재 편집하는 친구..? // 이건 ㄴㄴ?


    |_____|

그게 저가 되지 않을까요?? 왜냐면 지금 화면 정상적으ㅗㄹ 넘어가는 거 하고있어서

상관업서요

저도 괜찮을 듯 합니다

괜찮을까요?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????넵

궁금한거

S008: 편집한거 다운로드 화면 전환해서 하나요? → 버튼 만들어 놓나요?

⇒ 이거

⇒ 오늘안에 올리겠슴다 건우님 최대한 ……….

⇒ 아뇨???????? UseCase만욬ㅋㅋㅋㅋㅋㅋㅋㅋ

⇒ 다운로드 화면까지요..?????????? ㅋㅋㅋㅋ

그게 처음 설계? 때 있긴 했 그래서 다운로드 화면에서라도 가능하게…라고 생각하긴 했어요 만약 싱크 맞추는 조건이 없다 하면

mode에 따른 constraints 변경

S062: 비디오에서 소유자를 알수 없는 문제 발생.

건우 ⇒ 근데 화면 전환을 안하면 발생가능한 문제들이 생길 수 있지 않나요? 예를 들어 내가 슬라이더 변경 화면을 보이는 중에 저장하기 버튼을 누른다거나 하는 그런. 근데 같은 화면 내에 저장하기 버튼 누르면 같은 화면에서 재생을 보여준다는거 아닌가요? 그럼 슬라이더 Mode일 때 등 저장하기 버튼에 대한 처리를 고려해야하지 않나요? 제 생각도 그냥 화면 전환으로 가는게 처리가 쉽지 않나 생각되는데 뉍 그럼 ViewModel연결할 때 하단에 저장하기 버튼 만들어 넵

<저장하기>

<미리보기> → 다음화면 → <저장하기>

좋습니다

아뉴

<아오늘 회의시간 리드미 ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ ㅋㅋ >

7시? 아님 10시?

10시가 낭르거같아요

10시 갈까요?

둘 다 상관 없슴다

10시로 가죠!

지금 어차피 말해도 작업

버그 리포트 어디다 페이지만 만들고 쌓아놓는

제가 넵

순서를 UI에 적용하는건 지혜닌ㅁ인데

아니요 순서 한번에 제가 다하나유??? 다는 못하지 않을까요

석영 ← 슬라이더 socket to usecase

건우 ← 슬라이더 UI 적용 <<<<<< 슬라이더 수정에 대한 viewmodel-usecase 연결

윤회 ← 순서 변경 socket to usecase (순서 변경의 비즈니스 로직)

지혜 ← 순서 변경 UI 적용

석영님 작업이지 않을까 싶긴 한데 일단 ㄱ….

석영 작업 → 윤회

      → 건우

건우, 윤회 작업 → 지혜

⇒ CRDT 연결 → 길이편집

⇒ UseCasee ⇒ 건우님

좋습니다

확정은 아닌거로 아는데

윤회님 작업은 그럼 어디까지 오는건가요?? 결과물

제가 어디서부터 연결을 해야하는건지 이 결과물이 오면 뷰에 무조건 반영하나요??

그러니깐 결과는 무조건적으로 UI에 반영되는거죠?? 네 그럼 그렇게 해볼게유

지혜님이 UseCase를 ViewModel

윤회님이 UseCase를 작업 (비즈니스 로직)

마자요

선택한 아이템, 이동할 인덱스 위치는 드롭 과정에서 알수있고

결국 아이템 전체 결과 배열, (선택아이템, 목표 인덱스 위치) 는 뷰모델로 전달할 수는 있긴해요 근데 애니메이션이 viewcontroller에서 전부 반영되고 있는 것 뿐일거에요ㅛ]


전달 가능 해요

drop에서 전달 할 수 있어요 애니메이션만 viewmodel과 별개로 흘러가요

왜냐면 viewmodel에서 변경된 사항을 애니메이션으로 반영하려니 애니메이션이 이상하게 적용되어서요

collectionView 탭했을 때 상단 재생화면에 보여주는거랑 그그그그그그 초기 영상 리스트 받아오는건 제가 하나요??

넵 맨 아래 노티스 화깅ㄴ해주세요

네네넹

public func collectionView(
        _ collectionView: UICollectionView,
        performDropWith coordinator: any UICollectionViewDropCoordinator
    ) {
        guard let destinationIndexPath = coordinator.destinationIndexPath else { return }
        var snapshot = videoTimelineDataSource.snapshot()
        
        let draggedItems: [VideoTimelineItem] = coordinator.items.compactMap { item in
            if let sourceIndexPath = item.sourceIndexPath {
                return snapshot.itemIdentifiers[sourceIndexPath.item]
            }
            return nil
        }
        // 여기서 destionationPath, sourceIndexPath 전달하면돼요
        
        snapshot.deleteItems(draggedItems)
        let targetIndex = destinationIndexPath.item
        let currentItems = snapshot.itemIdentifiers
        var updatedItems = currentItems
        updatedItems.insert(contentsOf: draggedItems, at: targetIndex)
        
        applySnapShot(with: updatedItems)
        
        coordinator.items.forEach { item in
            coordinator.drop(item.dragItem, toItemAt: destinationIndexPath)
        }
    }
var updatedTimeVideo: CurrentValueSubject { get } 
var updatedIndexVideo: CurrentValueSubject { get } 

func updateVideoTime(_ video: Video, startTime: Double, endTime: Double) 
func updateVideoIndex(_ video: Video, to index: Int)
오늘 저녁 10{
	:1: 최종 발표 타임테이블에 팀별 정보를 작성해 주세요. ~12/4() 10:00 필수
	최종 발표에 참여하는 현업 개발자들이여러분을 미리 파악할 수 있도록 타임테이블을 채워주세요.
	아래 노션의 각 팀 페이지 속성에 서비스 한 줄 소개, 발표 키워드 및 주제, 배포 URL을 추가합니다.
	본인 팀의 블럭만 편집합니다. 여유가 된다면 팀 페이지를 자유롭게 꾸며도 괜찮습니다.
	
	:2: 타임테이블에 연결될 GitHub 저장소를 잘 채워 두는 것이 가장 중요합니다. ~12/4() 10:00 필수
	저장소 업데이트는 지속적으로 강조해오고 있습니다.
	전달 방식은 다르겠지만, 외부에 6주간의 과정과 주요 기술적 문제 해결 경험을 요약하여 보여 준다는 점에서 GitHub 저장소와 
	최종발표의 맥락이 크게 다르지 않다는 점을 눈치챘는지 궁금하네요.
}

목요일? {
	:3: 최종 발표 자료 ppt 템플릿이 업로드되었습니다.
	발표 자료를 꾸미는 데 너무 많은 시간을 쓰기보다는,
	내용을 보기 좋게 효과적으로 전달하는 방법에 대해 더 고민해 보라는 취지에서 템플릿을 제공합니다.
	노션 > 슬기로운 부캠생활에 ppt 템플릿이 업데이트되었으니 필요한 팀들은 활용해 보세요.
	제공되는 템플릿을 사용하지 않아도 무방합니다.
	다만 각 슬라이드에 부스트캠프 웹・모바일 BI 가이드(바로가기)의 서브 로고를 삽입하길 권장합니다.
}

네네넹

수고하셧습니다

차은우원빈현빈장원영의

개발 스토리

✏️ 기획


✔️ 규칙


📌 1주차 회의록

데일리 스크럼

회의록

회고

📌 2주차 회의록

데일리 스크럼

회의록

회고

📌 3주차 회의록

데일리 스크럼

회의록

회고

📌 4주차 회의록

데일리 스크럼

회의록

회고

📌 5주차 회의록

데일리 스크럼

회의록

회고

📌 6주차 회의록

데일리 스크럼

회의록

회고


🔥 트러블슈팅

Clone this wiki locally