스크립트 편집기 (이전의 AppleScript Editor-Yosemite 10.10)는 .scpt
파일을 일반 텍스트 파일이 아닌 이진 파일로 저장 합니다.
소스 코드 제어 시스템에서 작업하기가 다소 번거 롭습니다.
왜 이것이 사실인지 아는 사람이 있습니까? 이 파일 형식이 일반 텍스트 파일 이외의 다른 형식이어야했던 오랜 역사가 있습니까?
스크립트 편집기 (이전의 AppleScript Editor-Yosemite 10.10)는 .scpt
파일을 일반 텍스트 파일이 아닌 이진 파일로 저장 합니다.
소스 코드 제어 시스템에서 작업하기가 다소 번거 롭습니다.
왜 이것이 사실인지 아는 사람이 있습니까? 이 파일 형식이 일반 텍스트 파일 이외의 다른 형식이어야했던 오랜 역사가 있습니까?
답변:
William R. Cook의 논문은 1989 년 AppleScript와 관련된 사람들 의 훌륭한 역사와 통찰력 을 담고 있습니다 .
다음은 재미 있고 투기적인 것입니다.
AppleScript는 모든 바이트와 비트가 가치있는 시간에 작성되었습니다. 속성 목록 형식으로 OS X의 게으른 인코딩은 초기 개발자의 눈에 낭비입니다.
이진 형식은 디스크에서로드 할 때마다 복잡하고 오류가 발생하기 쉽고 시간이 많이 걸리는 구문 분석 프로세스가 중복되지 않도록 미리 구문 분석 된 형식을 제공했습니다. 메모리에 직접로드하여 실행하는 것이 좋습니다.
바이너리 형식으로 저장하면 AppleScript를 긴 형식 용어 사전이 아닌 기본 AppleEvent 코드에 연결할 수 있습니다.
이는 한 버전의 응용 프로그램에 대해 작성 및 저장된 AppleScript가 대상 응용 프로그램의 버전 간 용어 변경으로 자동 업데이트되도록합니다.
스크립트에서 정수 개체를 '정수'라고 할 수 있지만 int
이진 표현 에서는 4 개의 문자 코드 ' ' 로 저장됩니다 . 운영 체제에서 제공하는 AppleScript 사전에서 나오는 4 자 코드입니다.
미래의 AppleScript 용어가 정수에 대한 사용자 대면 단어를 변경하기로 결정한 경우 이진 표현은 새로운 이름으로 매핑 될 수 있습니다.
이것에 대한 반전은 오늘날 볼 수 있습니다. 응용 프로그램 사전에 대해 AppleScript를 작성하십시오. 그런 다음 Mac에서 응용 프로그램을 완전히 제거하십시오. 스크립트를 열면 스크립트 편집기에 무엇이 표시됩니까?
적어도 최신 버전에서 AppleScript Editor는 4 문자 코드를 둘러싼 갈매기 표시를 보여주었습니다 . 코드가 기억되고 강조되었습니다. 사용자가 용어에 직면하지 않습니다.
이것은 아마도 주요 이점이 아니라 가능한 이점입니다.
텍스트 문서에 대한 현대의 편견을 인정할 가치가 있습니다. 경험에 따르면 많은 사람들에게 귀중한 콘텐츠를 이진 형식으로 저장하면 위험이 따릅니다. 바이너리 형식은 종종되어 가난 최종 사용자에게 불투명하고, 문서화 열 어려운 소유 소프트웨어가 유지되지 않을 때.
AppleScript와 이진 형식이 생성 될 때이 편견은 아직 형성되지 않았습니다. 저장 및 계산 한계는 매우 실제적이며 모든 킬로바이트 또는 수천 사이클이 절약되었습니다.
AppleScript의 기원에 대한 이야기는 훌륭하지만 요즘에는 추적하기가 어렵습니다. AppleScript는 언어와 같은 친숙한 영어가 되려고 노력했으며 비전에 숨을 쉬었습니다. 실제 구현은 더 어려워졌습니다!
즉, .scpt
이전 버전과의 호환성을 허용합니다. 또한 Script Editor
현재 자바 스크립트를 지원 하는 경우 applescript / javascript (등)를 동일한 확장자로 저장할 수 있습니다 .
.scpt
쉘에서 디 컴파일하려면 :
https://github.com/rupa/applescript/blob/master/decompile.sh
가장 관련성이 높은 부분 :
osadecompile
Textmate는 다음을 읽을 수있는 타사 편집기입니다 .scpt
.
https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
가장 관련성이 높은 부분 :
[[OSAScript alloc] initWithCompiledData:];
이 기능은 OSAScript.h
OS X SDK와는 별개로 제공됩니다 . 에 다음 OSAScript.h
과 같은 긴 주석이 있습니다.
컴파일 된 스크립트, 스크립트 응용 프로그램 또는 스크립트 소스를 찾는 URL이 있으면 자동 릴리스 된 스크립트 데이터 디스크립터를 해당 컨텐츠와 함께 작성하여 리턴하십시오. 디스크립터를 사용하여-[OSAScript initWithScriptDataDescriptor : ...]로 스크립트를 작성할 수 있습니다. 이를 통해 특정 OSALanguageInstance를 사용하여 스크립트를 만들 수 있습니다. + [OSALanguage languageForScriptDataDescriptor :]를 사용하여 스크립트 데이터의 언어를 가져 오면 OSAScript에 적합한 언어 인스턴스를 작성하거나 선택하는 데 사용될 수 있습니다. 스크립트 소스 데이터는-[OSAScript initWithScriptDataDescriptor : ...]에 의해 컴파일되거나, NSAppleEventDescriptor 메소드를 사용하여 디스크립터를 문자열로 강제 변환하고 소스를 사용하여 OSAScript를 명시 적으로 작성할 수 있습니다. + (NSAppleEventDescriptor *) scriptDataDescriptorWithContentsOfURL :
기본적으로 저장 .scpt
하면 OSALanguageInstance
디스크립터도 파일에 저장됩니다.
파일이 .applescript
/ text 로 저장 되면 시스템은 최신 버전의 애플 스크립트 언어로 파일을 컴파일합니다. 예를 들어, 이전 버전의 OS X 용으로 작성된 스크립트는 일부 기능이 더 이상 사용되지 않기 때문에 새 버전에서 작동하지 않을 수 있습니다. 을 사용 .scpt
하면 시스템 / 앱에서 해당 버전의 Applescipt를 선택했습니다.
10.10부터 자바 스크립트를 저장 .scpt
하고 올바르게 실행할 수 있습니다 .
asprint
< hasseg.org/asprint > 에서도 .scpt 파일을 'pretty print'할 수 있습니다. 유일한 단점은 JavaScript .scpt 파일에서는 작동하지 않으며 AppleScript 파일에서만 작동한다는 것입니다.