본문 바로가기

연구소👨‍💻27

[GIT] 깃 특정파일을 지워야할때 필요한 작업들 깃은 굉장히 쓰기 쉬운 형상관리 툴이다. 내 파일 전체의 상태를 매번 기억해 놓는 것이 아니라 커밋별로 변경내역을 저장해 놓기 때문에 가볍고 편하다.근데 이런 특성 때문에 올라가면 안되는 파일이 이미 커밋됐고 그걸 모른채로 개발을 하게되면 나중에 여러 문제가 생긴다.크게 두가지로 나눌 수 있다필요없는 파일이 올라간 경우올라가면 안되는 파일이 올라간 경우필요없는 파일이 올라가는 경우필요 없는 파일이 올라가는 경우는 비교적 대처하기 쉽다.  누가 파일을 지운 커밋을 올린뒤 머지 하기만 하면 된다. 예를 들어 이런 상황이있다.쓸데없는 파일 a가 시작지점에 모든 원격저장소 사용자들한테 뿌려졌어 내가 그걸 눈치채고 내 컴퓨터에서 내 브랜치에서 파일을 지우고 올려. 그런데 다른사람들은 그걸 눈치 못채서 다른 브랜치.. 2024. 5. 26.
[미디어 서버] ffmpeg 미디어 서버 프로젝트 4월부터 현재까지 RTMP 프로토콜과 DIY 미디어 서버를 활용한 스트리밍 사이트 프로젝트를 만들고 있는데 워낙 배우는 것들이 많아서 정리를 해야할 것 같았다.왜 미디어 서버였나일단 내가 다른 프로젝트에서 WebRTC 기술인 OpenVidu를 사용해 본 적이 있어 관련된 공부를 해놨고 스트리밍도 비슷한점이 있을 것이라 판단해 어려우면서도 많이 배울 수 있는 프로젝트겠다! 라는 결론이 들어 제작을 시작했다처음 계획1. kurento를 이용한 제작일단 스트리밍 서비스 만들려고 인터넷에 구조나 실현방법을 검색해보면 미디어 서버가 많이 나온다. 스트리밍을 위해선 스트리머가 보내는 데이터를 인코딩등의 처리를 하는과정이 필요하고 이때문에 미디어 서버가 필요하기 때문이다. 그래서 이전에 kurento를 래핑한 Op.. 2024. 5. 15.
[C++] 포인터와 스마트 포인터 지난번 참조와 포인터에서 이어진다. 최근 백준 문제를 풀면서 메모리 문제가 있었다. 한 객체를 두 개의 포인터로 지정해놓았는데. 다른 한 포인터로 delete를 해버리니 다른 포인터에 접근을 하는 것 자체만으로도 에러가 발생했다. 나중에 알고보니 이게 C++에서 흔히 일어나는 댕글링 포인터 문제라는걸 알았다.  Dangling pointer는 메모리가 해제된 뒤에 그 메모리를 가리키는 포인터를 의미한다고한다. 지난번에 말한 것 처럼 C++은 다른 언어들에 비해 메모리를 수동으로 등록하고 해제하는게 가능한데 그러다보니 해제된 메모리에 접근하는 일들이 생기고 그것때문에 접근 위반 오류(segmentation fault)가 나는 것이다.수동 메모리 관리는 빠르지만 이런 문제들이 많다 이외에도 메모리 누수같은 .. 2024. 5. 11.
[백준 27652번 문제] AB 문제설명집합 두개가 있고 3가지 커맨드가 있음add,delete,find,add, delete는 더하고 지우기 가 끝find는 문자열을 둘로 나눠서 앞의 부분은 A 뒷부분은 B에서 찾을 수 있는 경우의 수의 총합을 찾아서 출력하는 함수다.입력첫째 줄에 쿼리의 개수 Qn줄동안add A aba delete A a find abab출력find 구문마다 나올 수 있는 경우의 수의 총합을 출력과정처음에는 이렇게 생각했다 일단 find쿼리에서 일어나는 일은 O(문자열길이) 안에 끝내야한다고 생각한다. 애초에 집합으로 저장해야한다고 하기도 했고 해시가 바로떠오른다. 저장되는 쿼리 양도 해봤자 1000이다.유일하게 걱정되는건 subStr이 O(글자수)라고 알고있는데 1000 글자라면어찌됐던 1000 * 1000 번 연.. 2024. 5. 9.