{"action":"created","issue":{"url":"https://api.github.com/repos/kimhye1/works_movie/issues/94","repository_url":"https://api.github.com/repos/kimhye1/works_movie","labels_url":"https://api.github.com/repos/kimhye1/works_movie/issues/94/labels{/name}","comments_url":"https://api.github.com/repos/kimhye1/works_movie/issues/94/comments","events_url":"https://api.github.com/repos/kimhye1/works_movie/issues/94/events","html_url":"https://github.com/kimhye1/works_movie/pull/94","id":172493957,"number":94,"title":"필터 구현","user":{"login":"kimhye1","id":20161304,"avatar_url":"https://avatars.githubusercontent.com/u/20161304?v=3","gravatar_id":"","url":"https://api.github.com/users/kimhye1","html_url":"https://github.com/kimhye1","followers_url":"https://api.github.com/users/kimhye1/followers","following_url":"https://api.github.com/users/kimhye1/following{/other_user}","gists_url":"https://api.github.com/users/kimhye1/gists{/gist_id}","starred_url":"https://api.github.com/users/kimhye1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kimhye1/subscriptions","organizations_url":"https://api.github.com/users/kimhye1/orgs","repos_url":"https://api.github.com/users/kimhye1/repos","events_url":"https://api.github.com/users/kimhye1/events{/privacy}","received_events_url":"https://api.github.com/users/kimhye1/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kimhye1/works_movie/labels/%EB%8F%99%EC%98%81%EC%83%81%20%ED%95%84%ED%84%B0","name":"동영상 필터","color":"5319e7"}],"state":"open","locked":false,"assignee":{"login":"taehoon-jung","id":11883253,"avatar_url":"https://avatars.githubusercontent.com/u/11883253?v=3","gravatar_id":"","url":"https://api.github.com/users/taehoon-jung","html_url":"https://github.com/taehoon-jung","followers_url":"https://api.github.com/users/taehoon-jung/followers","following_url":"https://api.github.com/users/taehoon-jung/following{/other_user}","gists_url":"https://api.github.com/users/taehoon-jung/gists{/gist_id}","starred_url":"https://api.github.com/users/taehoon-jung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/taehoon-jung/subscriptions","organizations_url":"https://api.github.com/users/taehoon-jung/orgs","repos_url":"https://api.github.com/users/taehoon-jung/repos","events_url":"https://api.github.com/users/taehoon-jung/events{/privacy}","received_events_url":"https://api.github.com/users/taehoon-jung/received_events","type":"User","site_admin":false},"assignees":[{"login":"taehoon-jung","id":11883253,"avatar_url":"https://avatars.githubusercontent.com/u/11883253?v=3","gravatar_id":"","url":"https://api.github.com/users/taehoon-jung","html_url":"https://github.com/taehoon-jung","followers_url":"https://api.github.com/users/taehoon-jung/followers","following_url":"https://api.github.com/users/taehoon-jung/following{/other_user}","gists_url":"https://api.github.com/users/taehoon-jung/gists{/gist_id}","starred_url":"https://api.github.com/users/taehoon-jung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/taehoon-jung/subscriptions","organizations_url":"https://api.github.com/users/taehoon-jung/orgs","repos_url":"https://api.github.com/users/taehoon-jung/repos","events_url":"https://api.github.com/users/taehoon-jung/events{/privacy}","received_events_url":"https://api.github.com/users/taehoon-jung/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/kimhye1/works_movie/milestones/42","html_url":"https://github.com/kimhye1/works_movie/milestones/Iteration%20%232","labels_url":"https://api.github.com/repos/kimhye1/works_movie/milestones/42/labels","id":1935994,"number":42,"title":"Iteration #2","description":"DueDate: 2016.8.19","creator":{"login":"kimhye1","id":20161304,"avatar_url":"https://avatars.githubusercontent.com/u/20161304?v=3","gravatar_id":"","url":"https://api.github.com/users/kimhye1","html_url":"https://github.com/kimhye1","followers_url":"https://api.github.com/users/kimhye1/followers","following_url":"https://api.github.com/users/kimhye1/following{/other_user}","gists_url":"https://api.github.com/users/kimhye1/gists{/gist_id}","starred_url":"https://api.github.com/users/kimhye1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kimhye1/subscriptions","organizations_url":"https://api.github.com/users/kimhye1/orgs","repos_url":"https://api.github.com/users/kimhye1/repos","events_url":"https://api.github.com/users/kimhye1/events{/privacy}","received_events_url":"https://api.github.com/users/kimhye1/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":9,"state":"open","created_at":"2016-08-11T02:37:33Z","updated_at":"2016-08-22T16:16:50Z","due_on":"2016-08-19T00:00:00Z","closed_at":null},"comments":3,"created_at":"2016-08-22T16:16:49Z","updated_at":"2016-08-24T20:34:47Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/kimhye1/works_movie/pulls/94","html_url":"https://github.com/kimhye1/works_movie/pull/94","diff_url":"https://github.com/kimhye1/works_movie/pull/94.diff","patch_url":"https://github.com/kimhye1/works_movie/pull/94.patch"},"body":"- 해당 커밋된 내용과 관련된 대략적인 관계도를 그려보았습니다. \r\n![이미지](http://i.imgur.com/wGqIyBm.png)\r\n\r\n- 필터 적용 \r\n필터를 영상에 적용하기 위해서는 영상의 각 프레임 사이사이에 필터를 넣는 작업이 필요하고 \r\n이를 위해서 ios에서 제공하는 videoCompositionWithAsset:applyingCIFiltersWithHandler: 를 사용해서 필터를 적용하는 작업을 했습니다.\r\n필터를 적용하기 전에 동영상을 먼저 하나로 합쳐주고 그 영상에 필터를 적용하는 방식으로 구현하였습니다. \r\n\r\n- 썸네일 이미지에 선택된 필터 이미지 적용 \r\n필터 적용 후 영상의 썸네일을 보여줄 때 필터가 적용된 썸네일을 보여주기위해\r\n썸네일의 이미지를 CIImage로 변경시키고 CIFilter를 적용시킨 후 다시 UIImage로 바꿔서 화면에 보여지도록 했습니다. \r\n \r\n- 필터 적용 뷰 구현 \r\n컬렉션 뷰를 이용해서 필터 선택 메뉴 UI를 구현하였습니다.\r\n어떤 필터가 선택된 것인지 사용자가 쉽게 알 수 있도록 셀이 선택되었을 때 버튼에 border 처리를 해주었습니다. \r\n그 외에 피드백 주신 것을 반영하여 필터 영역을 줄이고 영상이 플레이되는 영역을 늘리고, 체크 버튼 크기를 줄여주었습니다. \r\n\r\n- 저장 후 메인화면 띄워주기 \r\n기존에는 동영상을 저장 한 후 메인으로 돌아가기 버튼을 누르면 메인 화면에 해당하는 뷰컨트롤러를 present해주는 방식으로 구현을 했어서 뷰컨트롤러가 계속 쌓이게 되었었는데, 이를 수정하여 쌓여있는 모든 뷰컨트롤러를 dismiss해주어 처음의 메인 화면으로 돌아가도록 해주었습니다. \r\n\r\n- 앱이 죽는 문제 해결하기 \r\n필터를 적용한 후 부터 영상을 재생하거나 저장을 할 때 자꾸 앱이 죽는 문제가 발생했습니다.  instrument 툴을 사용해서 메모리 leak 부분들을 고쳐주었는데도 문제가 발생해서 한참을 헤매다가 제가 동영상을 플레이 시켜놓고 다른 뷰로 넘어갈때 플레이어를 멈춰주지 않거나 촬영을 하고 세션을 닫아주지 않거나 하는 실수를 하고 있어서 그 부분을 고쳐주었습니다. 또한 동영상을 찍을 때 마다 템프 디렉토리에 url을 저장해주고 있었는데, 파일을 합쳐주고 난 후 더 이상 사용되지 않는 임시 파일들을 NSFileManager를 이용해 삭제해주는 작업을 하였습니다. \r\n\r\n- 필터 구현을 하면서 문제가 발생된 부분들이 많아서 고치면서 하다보니 다른 부분도 연결되는 부분들은 고치게되고 내용도 자꾸 많아져서\r\n이미 너무 많은 부분들 건드려져서 그대로 풀리퀘스트를 올립니다. \r\n최대한 기능별로 브랜치 잘 나눠서 구현해보도록 하겠습니다!\r\n\r\n- 연관 이슈 : #56 #57 #58 #78 #79 #80 #81"},"comment":{"url":"https://api.github.com/repos/kimhye1/works_movie/issues/comments/242199312","html_url":"https://github.com/kimhye1/works_movie/pull/94#issuecomment-242199312","issue_url":"https://api.github.com/repos/kimhye1/works_movie/issues/94","id":242199312,"user":{"login":"taehoon-jung","id":11883253,"avatar_url":"https://avatars.githubusercontent.com/u/11883253?v=3","gravatar_id":"","url":"https://api.github.com/users/taehoon-jung","html_url":"https://github.com/taehoon-jung","followers_url":"https://api.github.com/users/taehoon-jung/followers","following_url":"https://api.github.com/users/taehoon-jung/following{/other_user}","gists_url":"https://api.github.com/users/taehoon-jung/gists{/gist_id}","starred_url":"https://api.github.com/users/taehoon-jung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/taehoon-jung/subscriptions","organizations_url":"https://api.github.com/users/taehoon-jung/orgs","repos_url":"https://api.github.com/users/taehoon-jung/repos","events_url":"https://api.github.com/users/taehoon-jung/events{/privacy}","received_events_url":"https://api.github.com/users/taehoon-jung/received_events","type":"User","site_admin":false},"created_at":"2016-08-24T20:34:47Z","updated_at":"2016-08-24T20:34:47Z","body":"@kimhye1 수고하셨어요~~ :)\r\n라이센스 문제는 문의 메일을 보낼까 했는데, 구매된 라이센스 정책을 확인해봐야할것 같아서, 잠시 미뤄뒀어요.\r\n"}}
{"actor":{"display_login":"taehoon-jung"}}