파일 형식은 어떻게 식별될까? UTI의 원리와 중요성
ex) iPAD로 셀카를 찍고 그사진을 맥북으로 전송하면 파일이 전달된다. 그리고 해당 파일을 클릭해서 열면 프리뷰에서 사진이 열린다. 어떻게 내 맥은 이미지임을 알고 처리했을까?
먼저, 컴퓨터에서 파일이란 바이트의 연속적인 시퀀스이다. 뭐 파일의 유형을 다 읽어서 할수 있지만 너무 비효율적이다. 그래서 더 효율적인 방법을 사용한다.
컴퓨터 운영체제는 파일의 유형을 알아내기 위해 주로 파일 경로의 확장자를 사용한다.
맥에서는 안보이지만 .jpeg가 숨어있는 것.
웹 환경에서는 파일 경로 확장자만으로 파일을 식별하지 않고 MIME(Multipurpose internet Mail Extension)로 표준화된 방식을 사용한다.이미지: image/jpeg, image/png 텍스트: text/plain, text/html 비디오: video/mp4, video/webm
이렇게 MIME유형을 통해 .txt이름인 이미지 데이터가 있어도 정확한 유형을 확인할 수 있다.
결국 이 모든게 jpeg이미지를 가리키는 것이다. 하지만 애플에선!!! UTI를 이용해 파일 형식을 식별한다.
UTI는 웹의 MIME 유형이나 단순 파일확장자와 달리 계층 구조를 통해 파일 유형을 더욱 명확하게 정의한다.
예를들어, public.jpeg는 JPEG 이미지를 나타내며, 이는 public.image 유형을 준수한다. public.image는 모든 이미지 파일 형식을 설명하는 추상적인 유형이고, 그 상위에는 Public.data가 있다. 결국 모든 파일은 바이트 시퀀스로 표현되기에 최상위에는 public.item이 위치한다.
위에서 설명한 대로 계층을 타고타고 올라갈수 있는 것처럼 반대로 내려갈수도 있다.
public.png, tiff즉 jpeg말고도 다른 타입들은 모두 public.image를 준수하고 있다.물론 jpeg와는 형제구조라고 생각하면 될듯?
이번엔 한단계 더 올라가보자.
컴퓨터는 바이트의 연속(비트로 연산하니까)으로 모든 것이 표현 가능하다.그래서 data아래에 image뿐만 아니라 audio, text등 다양하게 하위 유형이 있는것을 알수 있다.
계층 구조의 장점: 형식 간 상속관계 명확해진다. 확장성.
Apple은 이와같이 파일형식을 식별하기 위해 UTI를 사용한다. 만약 앱에서 새로운 파일 유형을 만들고 싶을땐 UTI를 따로 만들어야 한다. ==> 즉 다른 방식들보다 확장성이 높고 서로 다른 플랫폼에서도 호환성을 유지할 수 있다.
'면접준비' 카테고리의 다른 글
test Code (with TCA) (0) | 2024.11.04 |
---|---|
Swift Performance-wwdc24 (1) | 2024.06.17 |
매크로(Macros) (3) | 2024.03.07 |
초기화(initialization.. 편의? 지정?) (0) | 2024.03.05 |
Function(1급시민 , inout & 클로저✨) (2) | 2024.03.04 |