Script Editor .scpt 파일이 일반 텍스트 파일로 저장되지 않는 이유는 무엇입니까?


16

스크립트 편집기 (이전의 AppleScript Editor-Yosemite 10.10)는 .scpt파일을 일반 텍스트 파일이 아닌 이진 파일로 저장 합니다.

소스 코드 제어 시스템에서 작업하기가 다소 번거 롭습니다.

왜 이것이 사실인지 아는 사람이 있습니까? 이 파일 형식이 일반 텍스트 파일 이외의 다른 형식이어야했던 오랜 역사가 있습니까?


나는 그 이유를 모르지만 여기 에 주석을 달아 핫키 / 스크립트 매크로를 작성하여 대신 텍스트로 저장할 수 있습니다. 고통이지만 할 수있는 ...
Vic

2
저장 패널에서 일반 텍스트를 포함하여 여러 가지 형식으로 스크립트를 저장할 수 있습니다.
Chris Page

"scpt 파일에서 텍스트로 스크립트를 가져 오시겠습니까?": lists.apple.com/archives/applescript-users/2007/Mar/…
pkamb

답변:


20

William R. Cook의 논문은 1989 년 AppleScript와 관련된 사람들 의 훌륭한 역사와 통찰력담고 있습니다 .

다음은 재미 있고 투기적인 것입니다.

공간 보존 및 처리

AppleScript는 모든 바이트와 비트가 가치있는 시간에 작성되었습니다. 속성 목록 형식으로 OS X의 게으른 인코딩은 초기 개발자의 눈에 낭비입니다.

이진 형식은 디스크에서로드 할 때마다 복잡하고 오류가 발생하기 쉽고 시간이 많이 걸리는 구문 분석 프로세스가 중복되지 않도록 미리 구문 분석 된 형식을 제공했습니다. 메모리에 직접로드하여 실행하는 것이 좋습니다.

적응

바이너리 형식으로 저장하면 AppleScript를 긴 형식 용어 사전이 아닌 기본 AppleEvent 코드에 연결할 수 있습니다.

이는 한 버전의 응용 프로그램에 대해 작성 및 저장된 AppleScript가 대상 응용 프로그램의 버전 간 용어 변경으로 자동 업데이트되도록합니다.

스크립트에서 정수 개체를 '정수'라고 할 수 있지만 int 이진 표현 에서는 4 개의 문자 코드 ' ' 로 저장됩니다 . 운영 체제에서 제공하는 AppleScript 사전에서 나오는 4 자 코드입니다.

미래의 AppleScript 용어가 정수에 대한 사용자 대면 단어를 변경하기로 결정한 경우 이진 표현은 새로운 이름으로 매핑 될 수 있습니다.

이것에 대한 반전은 오늘날 볼 수 있습니다. 응용 프로그램 사전에 대해 AppleScript를 작성하십시오. 그런 다음 Mac에서 응용 프로그램을 완전히 제거하십시오. 스크립트를 열면 스크립트 편집기에 무엇이 표시됩니까?

적어도 최신 버전에서 AppleScript Editor는 4 문자 코드를 둘러싼 갈매기 표시를 보여주었습니다 . 코드가 기억되고 강조되었습니다. 사용자가 용어에 직면하지 않습니다.

이것은 아마도 주요 이점이 아니라 가능한 이점입니다.

현대 바이어스

텍스트 문서에 대한 현대의 편견을 인정할 가치가 있습니다. 경험에 따르면 많은 사람들에게 귀중한 콘텐츠를 이진 형식으로 저장하면 위험이 따릅니다. 바이너리 형식은 종종되어 가난 최종 사용자에게 불투명하고, 문서화 열 어려운 소유 소프트웨어가 유지되지 않을 때.

AppleScript와 이진 형식이 생성 될 때이 편견은 아직 형성되지 않았습니다. 저장 및 계산 한계는 매우 실제적이며 모든 킬로바이트 또는 수천 사이클이 절약되었습니다.

역사와 기원

AppleScript의 기원에 대한 이야기는 훌륭하지만 요즘에는 추적하기가 어렵습니다. AppleScript는 언어와 같은 친숙한 영어가 되려고 노력했으며 비전에 숨을 쉬었습니다. 실제 구현은 더 어려워졌습니다!


16

즉, .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.hOS 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하고 올바르게 실행할 수 있습니다 .


`errOSASourceNotAvailable (-1756)가 있습니다 .` 무슨 의미입니까?
TCB13

1
디 컴파일 링크의 경우 +1 @ TCB13은 .scpt 파일이 바이너리가 아니고 편집기가 문제를 일으켜 문제를 해결 해야하는 경우 발생하는 창을 닫아 복사를 요청하는 창입니다. 그런 다음 사본에는 정보가 컴파일 된 형식으로 저장됩니다. 그러나이 모든 것은 디 컴파일 명령을 포함하는이 먼 답변에서 배운 답변에서 해결 될 것입니다.
마이클 Dimmitt

이것에 추가하기 위해 asprint< hasseg.org/asprint > 에서도 .scpt 파일을 'pretty print'할 수 있습니다. 유일한 단점은 JavaScript .scpt 파일에서는 작동하지 않으며 AppleScript 파일에서만 작동한다는 것입니다.
TJ 루마

1

Fartheraway가 공유하는 디 컴파일 명령을 본 후 솔루션을 발견했습니다. applescript (.scpt) 파일이 이진이 아닌 경우

@fartheraway는 그의 답변 맨 아래에도 언급합니다.

.applescript 확장자로 모든 개발을 수행하십시오.

스크립트 편집기는 코드를 실행할 수 있으며 컴파일 된 형식으로 저장하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.