2013-06-28 5 views
0

내 응용 프로그램 (버전 1.0)에 거대한 텍스트 파일이 있습니다.iOS에서 파일을 점진적으로 업데이트하려면 어떻게해야합니까? (파일 패치)

이 파일의 새 버전 (2.0)이 방금 릴리스 된 것으로 가정합니다. 파일의 대부분은 동일하게 유지되었지만 새로운 (2.0) 버전에는 몇 가지 수정 사항이 있습니다 (일부 줄은 제거되고 나머지는 추가됨).

이제 (1.0)을 새 버전 (2.0)으로 업데이트하려고하지만 전체 파일을 다시 다운로드하지 않으려합니다. 새 파일의 변경 사항으로 파일을 패치하는 것이 좋을 것입니다. 따라서 대역폭이 저의 서버에서 전체 파일을 다운로드하는 것을 절약 할 수 있습니다. (git 또는 svn act와 같은 버전 시스템과 유사)

프로그래밍 방식으로 어떻게 할 수 있습니까? 사용할 수있는 iOS 라이브러리가 있습니까?

감사합니다

답변

0

당신의 API를 사용하면, 당신은 단지 데이터를 바꿀 필요가 범위를 요청 추구 할 수있는 특정 범위의 파일의 데이터를 물어 보자 경우가 ... 실제로 큰 문제입니다 범위에서 파일을 덮어 쓰고 특정 데이터를 덮어 씁니다 ... 이것은 파일을 업데이트 할 때마다 변경 사항에 대한 추적을해야한다는 것을 의미하며 앱 업데이트는 요청할 범위를 알아야합니다 ... 이것은 아닙니다 해결 방법 ... 자신의 솔루션을 구현하는 출발점이 되길 바랍니다.

요청 헤더에 다음과 같이 추가해야하는 범위에서 부분 일치를 얻으려고 시도하십시오.

Range: bytes=0-999 
+0

그것은 단지 데이터 일뿐입니다.하지만 제 경우에는 다운로드 할 맵 파일입니다. 그래서 제 경우에는 효과가 없을 것 같습니다. – SudoPlz

+0

어떤 형식입니까? 그것은 개인적인 것 또는 등고선을 정의하는 XML과 같은 것입니까? 나는 iOS에서지도로 3 년을 일했습니다 ... 어쩌면 제가 도울 수 있습니다 – Manu

+0

그것의 바이너리 파일. 나는 형식이 사적이라고 생각하지만, 원한다면 그것을 볼 수 있습니다. -> [ctm1 형식] (http://www.cartotype.com/cartotypes-native-map-data-format-ctm1.html). – SudoPlz

1

당신은 rsync의 하나로서 zdelta, 또는 Remote Differential CompressionBinary delta compression의 일종을 구현해야합니다.

개인적으로 iOS 용으로 특별히 구현 된 알고리즘을 잘 모르겠지만 iOS 환경에서 원활하게 사용할 수있는 C/C++로 구현 된 알고리즘을 찾을 수 있다고 확신합니다.

편집 : this을 읽는 것이 좋습니다.

+0

당신의 연결은 좋은 읽기이었다. 문제는 휴대 전화가 데스크톱만큼 빠르기 때문에 iOS에서도 잘 작동하는 무언가를 원합니다. 내가 알지 못했던 모바일 장치 "diff/patching"을위한 훌륭한 라이브러리가 있었으면 좋겠다. – SudoPlz

+0

저는 그러한 라이브러리에 대해 몰라요.하지만 ARM 프로세서 (특히 NEON을 사용하여 최적화 된 라이브러리)에 맞게 특별히 고안된 라이브러리를 찾고 있다면, 저는 당신이 하나를 발견 할 것이라는 것에 상당히 회의적입니다.또한 조기 최적화를 피하는 것이 좋습니다. 라이브러리 중 하나를 컴파일하고 지원하려는 로우 엔드 장치에서 실행 한 다음 요구 사항이나 최적화가 필요한지 확인한 다음 (그리고 나서 주요 라이브러리 만 프로파일 링하고 최적화하십시오) 핫스팟). – StatusReport

0

제 생각에는 타사 라이브러리가 없어도 혼자서이 작업을 수행 할 수 있습니다. 이를 위해 필요한 것은 1) 파일 버전에 합류하기위한 메타 데이터 (오프사이드, 길이 및 이전 버전에서 변경 될 데이터에 대한 포인터)를 생성하는 코드 조각 1)입니다. 2) 어려운 작업을 수행 할 코드 조각 : 메타를 읽고 올바른 위치에 부품을 넣으십시오. 상실로 고생하는 며칠 동안, 당신은 끝났습니다;) 행운을 빌어 요!

+0

필자는 그러한 라이브러리를 만드는 것에 자신감을 가지지 않고 모바일 장치에서 작업하기에 충분히 빠릅니다. :) 제안서를 보내 주셔서 감사합니다. – SudoPlz

관련 문제